Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package perl-Text-CSV_XS for openSUSE:Factory checked in at 2023-12-02 17:12:47 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/perl-Text-CSV_XS (Old) and /work/SRC/openSUSE:Factory/.perl-Text-CSV_XS.new.25432 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "perl-Text-CSV_XS" Sat Dec 2 17:12:47 2023 rev:52 rq:1130244 version:1.530.0 Changes: -------- --- /work/SRC/openSUSE:Factory/perl-Text-CSV_XS/perl-Text-CSV_XS.changes 2023-09-29 21:13:59.694660154 +0200 +++ /work/SRC/openSUSE:Factory/.perl-Text-CSV_XS.new.25432/perl-Text-CSV_XS.changes 2023-12-02 17:12:58.880926539 +0100 @@ -1,0 +2,13 @@ +Fri Nov 24 03:08:00 UTC 2023 - Tina Müller <timueller+p...@suse.de> + +- updated to 1.53 + see /usr/share/doc/packages/perl-Text-CSV_XS/ChangeLog + + 1.53 - 2023-11-22, H.Merijn Brand + * Two casts for -Wformat (issue 50) + * Add --skip-empty to csv2xlsx + * Add --font and --font-size to csv2xlsx + * Fix skip_empty_rows ("skip") and trailing newlines (Corey Hickey, PR#52) + * Fix comment in last line (RT#150501) + +------------------------------------------------------------------- Old: ---- Text-CSV_XS-1.52.tgz New: ---- Text-CSV_XS-1.53.tgz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ perl-Text-CSV_XS.spec ++++++ --- /var/tmp/diff_new_pack.uqnkej/_old 2023-12-02 17:12:59.540950726 +0100 +++ /var/tmp/diff_new_pack.uqnkej/_new 2023-12-02 17:12:59.540950726 +0100 @@ -18,9 +18,9 @@ %define cpan_name Text-CSV_XS Name: perl-Text-CSV_XS -Version: 1.520.0 +Version: 1.530.0 Release: 0 -%define cpan_version 1.52 +%define cpan_version 1.53 License: Artistic-1.0 OR GPL-1.0-or-later Summary: Comma-Separated Values manipulation routines URL: https://metacpan.org/release/%{cpan_name} @@ -28,9 +28,9 @@ Source1: cpanspec.yml BuildRequires: perl BuildRequires: perl-macros -Provides: perl(Text::CSV_XS) = 1.520.0 +Provides: perl(Text::CSV_XS) = %{version} %define __perllib_provides /bin/true -Recommends: perl(Encode) >= 3.19 +Recommends: perl(Encode) >= 3.200.0 %{perl_requires} %description ++++++ Text-CSV_XS-1.52.tgz -> Text-CSV_XS-1.53.tgz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Text-CSV_XS-1.52/CSV_XS.pm new/Text-CSV_XS-1.53/CSV_XS.pm --- old/Text-CSV_XS-1.52/CSV_XS.pm 2023-09-20 18:28:07.000000000 +0200 +++ new/Text-CSV_XS-1.53/CSV_XS.pm 2023-09-22 10:29:41.000000000 +0200 @@ -23,7 +23,7 @@ use Carp; use vars qw( $VERSION @ISA @EXPORT_OK %EXPORT_TAGS ); -$VERSION = "1.52"; +$VERSION = "1.53"; @ISA = qw( Exporter ); XSLoader::load ("Text::CSV_XS", $VERSION); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Text-CSV_XS-1.52/CSV_XS.xs new/Text-CSV_XS-1.53/CSV_XS.xs --- old/Text-CSV_XS-1.52/CSV_XS.xs 2023-09-21 09:08:32.000000000 +0200 +++ new/Text-CSV_XS-1.53/CSV_XS.xs 2023-11-20 18:35:19.000000000 +0100 @@ -614,7 +614,7 @@ _cache_show_str ("tmp", (int)strlen (s), (byte *)s); } if (csv->cache) - warn (" %-20s %4d:0x%08x\n", "cache", sizeof (csv_t), csv->cache); + warn (" %-20s %4d:0x%08lx\n", "cache", (int)sizeof (csv_t), (unsigned long)csv->cache); else warn (" %-22s --:no cache yet\n", "cache"); } /* _csv_diag */ @@ -974,7 +974,7 @@ if (c == EOF || ser == 2) { \ sv_free (sv); \ sv = NULL; \ - waitingForField = 0; \ + seenSomething = FALSE; \ if (ser == 2) return FALSE; \ break; \ } \ @@ -1423,16 +1423,16 @@ #endif #if MAINT_DEBUG > 1 +static char _sep[64]; static char *_sep_string (csv_t *csv) { - char sep[64]; if (csv->sep_len) { int x; for (x = 0; x < csv->sep_len; x++) - (void)sprintf (sep + x * x, "%02x ", csv->sep[x]); + (void)sprintf (_sep + x * x, "%02x ", csv->sep[x]); } else - (void)sprintf (sep, "'%c' (0x%02x)", CH_SEP, CH_SEP); - return sep; + (void)sprintf (_sep, "'%c' (0x%02x)", CH_SEP, CH_SEP); + return _sep; } /* _sep_string */ #endif @@ -1998,9 +1998,12 @@ csv->used = csv->size; csv->fld_idx = 0; c = CSV_GET; + seenSomething = FALSE; #if MAINT_DEBUG > 5 (void)fprintf (stderr, "# COMMENT, SKIPPED\n"); #endif + if (c == EOF) + break; goto restart; } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Text-CSV_XS-1.52/ChangeLog new/Text-CSV_XS-1.53/ChangeLog --- old/Text-CSV_XS-1.52/ChangeLog 2023-09-21 09:59:52.000000000 +0200 +++ new/Text-CSV_XS-1.53/ChangeLog 2023-11-22 20:30:12.000000000 +0100 @@ -1,3 +1,10 @@ +1.53 - 2023-11-22, H.Merijn Brand + * Two casts for -Wformat (issue 50) + * Add --skip-empty to csv2xlsx + * Add --font and --font-size to csv2xlsx + * Fix skip_empty_rows ("skip") and trailing newlines (Corey Hickey, PR#52) + * Fix comment in last line (RT#150501) + 1.52 - 2023-09-21, H.Merijn Brand * Fix possible coredump in cache on non-IO parse (issue 49) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Text-CSV_XS-1.52/META.json new/Text-CSV_XS-1.53/META.json --- old/Text-CSV_XS-1.52/META.json 2023-09-21 13:20:30.000000000 +0200 +++ new/Text-CSV_XS-1.53/META.json 2023-11-23 10:19:13.000000000 +0100 @@ -1,70 +1,70 @@ { - "resources" : { - "license" : [ - "http://dev.perl.org/licenses/" - ], - "bugtracker" : { - "web" : "http://rt.cpan.org/NoAuth/Bugs.html?Dist=Text-CSV_XS" - }, - "homepage" : "https://metacpan.org/pod/Text::CSV_XS", - "x_IRC" : "irc://irc.perl.org/#csv", - "repository" : { - "web" : "https://github.com/Tux/Text-CSV_XS", - "url" : "https://github.com/Tux/Text-CSV_XS", - "type" : "git" - } - }, - "author" : [ - "H.Merijn Brand <hmbrand.org>" - ], - "license" : [ - "perl_5" - ], - "name" : "Text-CSV_XS", - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : 2 - }, "release_status" : "stable", "prereqs" : { - "runtime" : { + "configure" : { + "requires" : { + "ExtUtils::MakeMaker" : "0" + }, "recommends" : { - "Encode" : "3.19" + "ExtUtils::MakeMaker" : "7.70" + } }, + "runtime" : { + "recommends" : { + "Encode" : "3.20" + }, "requires" : { "IO::Handle" : "0", "perl" : "5.006001", "XSLoader" : "0" - } - }, + } + }, "test" : { "requires" : { "Tie::Scalar" : "0", "Test::More" : "0" - } - }, + } + }, "build" : { "requires" : { "Config" : "0" + } } }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "0" + "resources" : { + "homepage" : "https://metacpan.org/pod/Text::CSV_XS", + "bugtracker" : { + "web" : "http://rt.cpan.org/NoAuth/Bugs.html?Dist=Text-CSV_XS" }, - "recommends" : { - "ExtUtils::MakeMaker" : "7.70" - } - } - }, - "generated_by" : "Author", - "abstract" : "Comma-Separated Values manipulation routines", + "license" : [ + "http://dev.perl.org/licenses/" + ], + "repository" : { + "url" : "https://github.com/Tux/Text-CSV_XS", + "type" : "git", + "web" : "https://github.com/Tux/Text-CSV_XS" + }, + "x_IRC" : "irc://irc.perl.org/#csv" + }, + "name" : "Text-CSV_XS", "provides" : { "Text::CSV_XS" : { - "file" : "CSV_XS.pm", - "version" : "1.52" - } - }, + "version" : "1.53", + "file" : "CSV_XS.pm" + } + }, + "abstract" : "Comma-Separated Values manipulation routines", + "license" : [ + "perl_5" + ], + "author" : [ + "H.Merijn Brand <hmbr...@cpan.org>" + ], + "version" : "1.53", + "generated_by" : "Author", "dynamic_config" : 1, - "version" : "1.52" -} + "meta-spec" : { + "version" : 2, + "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec" + } + } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Text-CSV_XS-1.52/META.yml new/Text-CSV_XS-1.53/META.yml --- old/Text-CSV_XS-1.52/META.yml 2023-09-21 13:20:30.000000000 +0200 +++ new/Text-CSV_XS-1.53/META.yml 2023-11-23 10:19:13.000000000 +0100 @@ -1,7 +1,7 @@ --- abstract: Comma-Separated Values manipulation routines author: - - H.Merijn Brand <hmbrand.org> + - H.Merijn Brand <hmbr...@cpan.org> build_requires: Config: 0 configure_requires: @@ -16,9 +16,9 @@ provides: Text::CSV_XS: file: CSV_XS.pm - version: '1.52' + version: '1.53' recommends: - Encode: '3.19' + Encode: '3.20' requires: IO::Handle: 0 Test::More: 0 @@ -31,4 +31,4 @@ homepage: https://metacpan.org/pod/Text::CSV_XS license: http://dev.perl.org/licenses/ repository: https://github.com/Tux/Text-CSV_XS -version: '1.52' +version: '1.53' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Text-CSV_XS-1.52/Makefile.PL new/Text-CSV_XS-1.53/Makefile.PL --- old/Text-CSV_XS-1.52/Makefile.PL 2023-01-03 13:18:53.000000000 +0100 +++ new/Text-CSV_XS-1.53/Makefile.PL 2023-10-12 15:50:23.000000000 +0200 @@ -169,7 +169,7 @@ 'doc/CSV_XS.3: CSV_XS.pm', ' pod2man < $? > $@', 'doc/CSV_XS.man: doc/CSV_XS.3', - ' nroff -mandoc < $? > $@', + ' nroff2man < $? > $@', 'doc/csv2xlsx.md: examples/csv2xlsx', ' pod2markdown < $? > $@', 'doc/csv2xlsx.html: examples/csv2xlsx', @@ -177,7 +177,7 @@ 'doc/csv2xlsx.3: examples/csv2xlsx', ' pod2man < $? > $@', 'doc/csv2xlsx.man: doc/csv2xlsx.3', - ' nroff -mandoc < $? > $@', + ' nroff2man < $? > $@', '', $min_vsn; } # postamble diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Text-CSV_XS-1.52/cpanfile new/Text-CSV_XS-1.53/cpanfile --- old/Text-CSV_XS-1.52/cpanfile 2023-09-21 13:20:30.000000000 +0200 +++ new/Text-CSV_XS-1.53/cpanfile 2023-11-23 10:19:13.000000000 +0100 @@ -1,7 +1,7 @@ requires "IO::Handle"; requires "XSLoader"; -recommends "Encode" => "3.19"; +recommends "Encode" => "3.20"; on "configure" => sub { requires "ExtUtils::MakeMaker"; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Text-CSV_XS-1.52/examples/csv2xls new/Text-CSV_XS-1.53/examples/csv2xls --- old/Text-CSV_XS-1.52/examples/csv2xls 2023-01-03 13:37:08.000000000 +0100 +++ new/Text-CSV_XS-1.53/examples/csv2xls 2023-11-14 13:48:22.000000000 +0100 @@ -1,12 +1,12 @@ #!/pro/bin/perl # csv2xls: Convert csv to xls -# (m)'20 [25 Mar 2020] Copyright H.M.Brand 2007-2023 +# (m)'23 [14 Nov 2023] Copyright H.M.Brand 2007-2023 use 5.012000; use warnings; -our $VERSION = "1.80"; +our $VERSION = "1.81"; sub usage { my $err = shift and select STDERR; @@ -41,7 +41,7 @@ exit $err; } # usage -use Getopt::Long qw(:config bundling nopermute passthrough); +use Getopt::Long qw(:config bundling nopermute noignorecase passthrough); my $sep; # Set after reading first line in a flurry attempt to auto-detect my $quo = '"'; my $esc = '"'; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Text-CSV_XS-1.52/examples/csv2xlsx new/Text-CSV_XS-1.53/examples/csv2xlsx --- old/Text-CSV_XS-1.52/examples/csv2xlsx 2023-01-03 13:17:37.000000000 +0100 +++ new/Text-CSV_XS-1.53/examples/csv2xlsx 2023-11-14 13:48:55.000000000 +0100 @@ -1,12 +1,12 @@ #!/pro/bin/perl # csv2xlsx: Convert csv to xlsx -# (m)'22 Copyright H.M.Brand 2007-2023 +# (m)'23 Copyright H.M.Brand 2007-2023 use 5.014000; use warnings; -our $VERSION = "1.20 - 2022-06-21"; +our $VERSION = "1.23 - 2023-11-14"; sub usage { my $err = shift and select STDERR; @@ -35,6 +35,9 @@ -f force usage of <xlsx> if already exists (unlink before use) -d <dtfmt> use <dtfmt> as date formats. Default = 'dd-mm-yyyy' -C <C:fmt> use <fmt> as currency formats for currency <C>, no default + --font=F set default font (default Calibri) + --fs=N set font size (default 10) + 'M' = 'mono', 'D' = 'DejaVu Sans', 'DM' = 'DejaVu Sans Mono' -D cols only convert dates in columns <cols>. Default is everywhere. -D0 is disable -L N limit export to N rows @@ -42,6 +45,7 @@ --de Some CSV fields might be double-encoded. Try to fix that. -m merge multiple CSV's into a single xlsx (separate sheets) -o is required, all arguments should be existing files + --skip-empty Skip empty files on merge -S <cp> Split CSV on COLUMNxPAT into separate sheets. See --man or --info for options/features and examples. May repeat. --sl=C Use column C as sheet label when splitting with -S @@ -52,10 +56,10 @@ use Text::CSV_XS; use Excel::Writer::XLSX; -use List::Util qw( first ); -use Date::Calc qw( Delta_Days Days_in_Month ); -use Encode qw( from_to ); -use Getopt::Long qw(:config bundling passthrough ); +use List::Util qw( first ); +use Date::Calc qw( Delta_Days Days_in_Month ); +use Encode qw( from_to ); +use Getopt::Long qw(:config bundling passthrough noignorecase ); my $quo = '"'; my $esc = '"'; my $wdt = 4; # Default minimal column width @@ -79,6 +83,8 @@ "d|date-fmt=s" => \$dtf, "D|date-col=s" => \$dtc, "C|curr-fmt=s" => \$crf, + "font=s" => \my $font, + "fs|font-size=i" => \my $font_size, "f|force!" => \my $frc, "F|formulas!" => \my $frm, "Fa=s" => \$fac, @@ -91,6 +97,7 @@ "u|utf-8|utf8!" => \my $utf, "de|fix-utf8!" => \my $dutf, # double encoded? \x{c3}\x{ab} => \x{100} "m|merge!" => \my $mrg, + "skip-empty!" => \my $skip_empty, "S|split=s" => \my @split, "sl|split-label=s"=> \my $split_sl, "L|row-limit=i" => \my $row_limit, @@ -131,8 +138,10 @@ push @csv => $_; next; } - warn "Argument $_ is not an existing (CSV) file\n"; - usage (1); + unless ($skip_empty) { + warn "Argument $_ is not an existing (CSV) file\n"; + usage (1); + } } $xls && @csv or usage (1); @ARGV = @csv; @@ -195,6 +204,7 @@ my $wbk = Excel::Writer::XLSX->new ($xls); $dtf =~ s/j/y/g; my %fmt = ( + dflt => $wbk->add_format (), date => $wbk->add_format (align => "center", num_format => $dtf), rest => $wbk->add_format (align => "left"), wrap => $wbk->add_format (text_wrap => 1), @@ -203,6 +213,15 @@ num_format => "$1 $2", align => "right", ); +if ($font) { + $font eq "M" and $font = "mono"; + $font eq "D" and $font = "DejaVu Sans"; + $font eq "DM" and $font = "DejaVu Sans Mono"; + $_->set_font ($font) for values %fmt; + } +if ($font_size) { + $_->set_size ($font_size) for values %fmt; + } my @args = @ARGV ? @ARGV : (""); foreach my $csvf (@args) { @@ -363,12 +382,12 @@ from_to ($val, "utf-8", "ucs2"); $val =~ m/\n/ ? $wks->write_unicode ($h, $c, $val, $fmt{wrap}) - : $wks->write_unicode ($h, $c, $val); + : $wks->write_unicode ($h, $c, $val, $fmt{dflt}); } else { $val =~ m/\n/ ? $wks->write_string ($h, $c, $val, $fmt{wrap}) - : $wks->write_string ($h, $c, $val); + : $wks->write_string ($h, $c, $val, $fmt{dflt}); } next; } @@ -397,7 +416,7 @@ $wks->write_string ($h, $c, $val); } else { - $wks->write ($h, $c, $val); + $wks->write ($h, $c, $val, $fmt{dflt}); } } ++$h % 100 or $opt_v && printf STDERR "%6d x %6d\r", $w, $h; @@ -510,6 +529,28 @@ -C '$:### ### ##0.00' +=item --font=Calibri + +You can set the default font. The XLSX writer used sets the default font +face to C<Calibri>. + + --font=Arial + +There are 3 default shortcuts + + --font=M + --font=D + --font=DM + +Setting the font to C<mono>, C<DejaVu Sans>, or C<DejaVu Sans Mono>. + +=item --fs=10 + +=item --font-size=10 + +Optional set the default font-size to anything other than the default 10. +Must be a positive integer. No checks. + =item -f =item --force @@ -581,6 +622,11 @@ With this option, the option C<-o> is required. All arguments should be existing files. Piping is not supported. +=item --skip-empty + +When merging CSV files with C<-m>, skip empty files. The default is to exit +with an error message. + =item -L N =item --row-limit=N diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Text-CSV_XS-1.52/t/47_comment.t new/Text-CSV_XS-1.53/t/47_comment.t --- old/Text-CSV_XS-1.52/t/47_comment.t 2021-03-20 18:04:28.000000000 +0100 +++ new/Text-CSV_XS-1.53/t/47_comment.t 2023-11-20 18:39:05.000000000 +0100 @@ -4,7 +4,7 @@ use warnings; use Test::More; -use Text::CSV_XS; +use Text::CSV_XS qw(csv); BEGIN { if ($] < 5.008002) { @@ -12,7 +12,7 @@ } else { require Encode; - plan tests => 60; + plan tests => 61; } require "./t/util.pl"; } @@ -56,4 +56,17 @@ } } +is_deeply (csv ( + in => *DATA, + sep_char => "|", + headers => "auto", + allow_whitespace => 1, + comment_str => "#" + ), [{ id => 42, name => "foo" }], "Last record is comment"); + 1; +__END__ +id | name +# +42 | foo +# diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Text-CSV_XS-1.52/t/67_emptrow.t new/Text-CSV_XS-1.53/t/67_emptrow.t --- old/Text-CSV_XS-1.52/t/67_emptrow.t 2023-08-07 15:01:22.000000000 +0200 +++ new/Text-CSV_XS-1.53/t/67_emptrow.t 2023-11-20 08:44:25.000000000 +0100 @@ -10,7 +10,7 @@ plan skip_all => "This test unit requires perl-5.8.1 or higher"; } else { - plan tests => 47; + plan tests => 56; } use_ok "Text::CSV_XS", ("csv"); @@ -47,7 +47,7 @@ is ($csv->skip_empty_rows (0), 0, "+0"); is ($csv->skip_empty_rows (undef), 0, "undef"); -open my $fh, ">", $tfn; +open my $fh, ">", $tfn or BAIL_OUT "$tfn: $!\n"; print $fh "a,b,c,d\n"; print $fh "1,2,0,4\n"; print $fh "4,0,9,1\n"; @@ -89,6 +89,14 @@ $ea,[8,2,7,1],$ea,$ea,[5,7,9,3],$ea], "A Callback"); is_deeply (csv (@parg, skip_empty_rows => sub {0}), \@head, "A Callback 0"); +# Array behavior (line by line) +open $fh, "<", $tfn; +$csv = Text::CSV_XS->new ({ skip_empty_rows => 1 }); +while (my $row = $csv->getline ($fh)) { + ok (@$row, "Row has columns"); + } +close $fh; + # Hash behavior push @parg => bom => 1; my $eh = { a => "", b => undef, c => undef, d => undef }, @@ -122,3 +130,13 @@ { a => 5, b => 7, c => 9, d => 3 },$eh], "H Callback"); is_deeply (csv (@parg, skip_empty_rows => sub {0}), \@head, "H Callback 0"); + +# Hash behavior (line by line) +open $fh, "<", $tfn; +$csv = Text::CSV_XS->new ({ skip_empty_rows => 1 }); +my $cols = $csv->getline ($fh); +$csv->column_names (@$cols); +while (my $row = $csv->getline_hr ($fh)) { + isnt ($row->{a}, undef, "Column 'a' is defined"); + } +close $fh;