From 13fe6dd08d56c596f1dfd34462a2e379987c047d Mon Sep 17 00:00:00 2001 From: Andreea Pirvulescu Date: Wed, 25 Feb 2015 01:24:44 +0200 Subject: [PATCH 001/329] print elasticsearch instance --- .travis.yml | 5 +---- t/fakecpan.t | 3 +++ 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index cc8546cd8..35717f38c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -28,11 +28,8 @@ env: before_install: - # We need to run a pre-1.0 instance of ES until we update everything. - - wget https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-0.90.13.deb - - sudo dpkg -i --force-confdef elasticsearch-0.90.13.deb - sudo service elasticsearch restart - + - cpanm -n Devel::Cover::Report::Coveralls - cpanm -n Carton - sudo apt-get install libgmp-dev diff --git a/t/fakecpan.t b/t/fakecpan.t index c217b8941..aa4d19619 100644 --- a/t/fakecpan.t +++ b/t/fakecpan.t @@ -13,6 +13,7 @@ use Test::Aggregate::Nested 0.371 (); use CPAN::Faker 0.010; use Config::General; +use DDP; use ElasticSearch::TestServer; use File::Copy; use MetaCPAN::Script::Author; @@ -40,6 +41,8 @@ ok( 'got ElasticSearch object' ); +p $es; + eval { $es->transport->refresh_servers; }; ok( !$@, "Connected to the ElasticSearch test instance on $ES_HOST_PORT" ) From c4bef6f9934422769078d5f22fd82232445bc15e Mon Sep 17 00:00:00 2001 From: Andreea Pirvulescu Date: Wed, 4 Mar 2015 04:58:42 +0200 Subject: [PATCH 002/329] add changes from mo/es1.0.0 --- cpanfile | 2 +- cpanfile.snapshot | 110 ++++++++++++++++-- .../Plugin/Session/Store/ElasticSearch.pm | 2 +- lib/MetaCPAN/Document/File.pm | 19 ++- lib/MetaCPAN/Document/Release.pm | 8 +- lib/MetaCPAN/Role/Script.pm | 4 +- lib/MetaCPAN/Script/Latest.pm | 51 +++----- lib/MetaCPAN/Server/Controller.pm | 15 ++- lib/MetaCPAN/Server/Controller/Scroll.pm | 12 +- lib/Plack/Session/Store/ElasticSearch.pm | 58 --------- t/fakecpan.t | 15 ++- t/release/documentation-not-readme.t | 2 +- t/release/meta-provides.t | 4 +- t/release/pod-examples.t | 2 +- t/server/controller/author.t | 2 +- t/server/controller/module.t | 10 +- t/server/controller/search/autocomplete.t | 2 +- .../controller/search/reverse_dependencies.t | 2 +- t/server/sanitize_query.t | 8 +- 19 files changed, 174 insertions(+), 154 deletions(-) delete mode 100644 lib/Plack/Session/Store/ElasticSearch.pm diff --git a/cpanfile b/cpanfile index 9306ad64b..117023c21 100644 --- a/cpanfile +++ b/cpanfile @@ -42,7 +42,7 @@ requires 'Devel::ArgNames'; requires 'Digest::MD5'; requires 'Digest::SHA1'; requires 'EV'; -requires 'ElasticSearchX::Model', '0.1.5'; +requires 'ElasticSearchX::Model', '0.1.7'; requires 'Email::Address'; requires 'Email::Sender::Simple'; requires 'Email::Simple'; diff --git a/cpanfile.snapshot b/cpanfile.snapshot index d2dc4e4a9..0ea02746e 100644 --- a/cpanfile.snapshot +++ b/cpanfile.snapshot @@ -183,6 +183,17 @@ DISTRIBUTIONS Params::Check 0.07 Test::More 0 if 0 + Archive-Tar-Wrapper-0.21 + pathname: M/MS/MSCHILLI/Archive-Tar-Wrapper-0.21.tar.gz + provides: + Archive::Tar::Wrapper 0.21 + requirements: + Cwd 0 + ExtUtils::MakeMaker 0 + File::Temp 0 + File::Which 0 + IPC::Run 0 + Log::Log4perl 0 Archive-Zip-1.37 pathname: P/PH/PHRED/Archive-Zip-1.37.tar.gz provides: @@ -2680,6 +2691,30 @@ DISTRIBUTIONS ExtUtils::MakeMaker 0 Sub::Exporter::Progressive 0.001011 perl 5.006 + Devel-NYTProf-5.06 + pathname: T/TI/TIMB/Devel-NYTProf-5.06.tar.gz + provides: + Devel::NYTProf 5.06 + Devel::NYTProf::Apache 4.00 + Devel::NYTProf::Constants undef + Devel::NYTProf::Core 5.06 + Devel::NYTProf::Data 4.02 + Devel::NYTProf::FileHandle undef + Devel::NYTProf::FileInfo undef + Devel::NYTProf::ReadStream 4.00 + Devel::NYTProf::Reader 4.06 + Devel::NYTProf::Run undef + Devel::NYTProf::SubCallInfo undef + Devel::NYTProf::SubInfo undef + Devel::NYTProf::Util 4.00 + requirements: + ExtUtils::MakeMaker 0 + Getopt::Long 0 + JSON::Any 0 + List::Util 0 + Test::Differences 0.60 + Test::More 0.84 + XSLoader 0 Devel-PartialDump-0.17 pathname: E/ET/ETHER/Devel-PartialDump-0.17.tar.gz provides: @@ -3854,6 +3889,19 @@ DISTRIBUTIONS IO::WrapTie::Slave 2.110 requirements: ExtUtils::MakeMaker 0 + IPC-Run-0.94 + pathname: T/TO/TODDR/IPC-Run-0.94.tar.gz + provides: + IPC::Run 0.94 + IPC::Run::Debug 0.90 + IPC::Run::IO 0.90 + IPC::Run::Timer 0.90 + IPC::Run::Win32Helper 0.90 + IPC::Run::Win32IO 0.90 + IPC::Run::Win32Pump 0.90 + requirements: + ExtUtils::MakeMaker 0 + Test::More 0.47 IPC-Run3-0.048 pathname: R/RJ/RJBS/IPC-Run3-0.048.tar.gz provides: @@ -4020,6 +4068,18 @@ DISTRIBUTIONS requirements: Test::More 0 version 0 + List-AllUtils-0.09 + pathname: D/DR/DROLSKY/List-AllUtils-0.09.tar.gz + provides: + List::AllUtils 0.09 + requirements: + Exporter 0 + ExtUtils::MakeMaker 0 + List::MoreUtils 0.28 + List::Util 1.31 + base 0 + strict 0 + warnings 0 List-MoreUtils-0.33 pathname: A/AD/ADAMK/List-MoreUtils-0.33.tar.gz provides: @@ -5069,6 +5129,31 @@ DISTRIBUTIONS perl 5.006 strict 0 warnings 0 + MooseX-UndefTolerant-0.19 + pathname: E/ET/ETHER/MooseX-UndefTolerant-0.19.tar.gz + provides: + MooseX::UndefTolerant 0.19 + MooseX::UndefTolerant::ApplicationToClass 0.19 + MooseX::UndefTolerant::ApplicationToRole 0.19 + MooseX::UndefTolerant::Attribute 0.19 + MooseX::UndefTolerant::Class 0.19 + MooseX::UndefTolerant::Composite 0.19 + MooseX::UndefTolerant::Constructor 0.19 + MooseX::UndefTolerant::Role 0.19 + requirements: + ExtUtils::MakeMaker 6.30 + File::Find 0 + File::Temp 0 + Moose 0.89 + Moose::Exporter 0 + Moose::Role 0 + Test::CheckDeps 0.002 + Test::Fatal 0 + Test::Moose 0 + Test::More 0.88 + Test::NoWarnings 1.04 + strict 0 + warnings 0 Mouse-2.3.0 pathname: G/GF/GFUJI/Mouse-2.3.0.tar.gz provides: @@ -5459,14 +5544,14 @@ DISTRIBUTIONS Test::Trap 0 overload 0 parent 0 - PAUSE-Permissions-0.11 - pathname: N/NE/NEILB/PAUSE-Permissions-0.11.tar.gz + PAUSE-Permissions-0.10 + pathname: N/NE/NEILB/PAUSE-Permissions-0.10.tar.gz provides: - PAUSE::Permissions 0.11 - PAUSE::Permissions::Entry 0.11 - PAUSE::Permissions::EntryIterator 0.11 - PAUSE::Permissions::Module 0.11 - PAUSE::Permissions::ModuleIterator 0.11 + PAUSE::Permissions 0.10 + PAUSE::Permissions::Entry 0.10 + PAUSE::Permissions::EntryIterator 0.10 + PAUSE::Permissions::Module 0.10 + PAUSE::Permissions::ModuleIterator 0.10 requirements: Carp 0 ExtUtils::MakeMaker 0 @@ -5477,7 +5562,6 @@ DISTRIBUTIONS Moo 0 autodie 0 feature 0 - perl 5.010000 strict 0 warnings 0 POSIX-strftime-Compiler-0.31 @@ -6802,6 +6886,16 @@ DISTRIBUTIONS Exporter 5.57 ExtUtils::MakeMaker 0 Scalar::Util 0 + Scalar-List-Utils-1.41 + pathname: P/PE/PEVANS/Scalar-List-Utils-1.41.tar.gz + provides: + List::Util 1.41 + List::Util::XS 1.41 + Scalar::Util 1.41 + Sub::Util 1.41 + requirements: + ExtUtils::MakeMaker 0 + Test::More 0 Scope-Guard-0.20 pathname: C/CH/CHOCOLATE/Scope-Guard-0.20.tar.gz provides: diff --git a/lib/Catalyst/Plugin/Session/Store/ElasticSearch.pm b/lib/Catalyst/Plugin/Session/Store/ElasticSearch.pm index b2469fdd5..184b48ec0 100644 --- a/lib/Catalyst/Plugin/Session/Store/ElasticSearch.pm +++ b/lib/Catalyst/Plugin/Session/Store/ElasticSearch.pm @@ -52,7 +52,7 @@ sub store_session_data { index => $self->_session_es_index, type => $self->_session_es_type, id => $sid, - data => $session, + body => $session, refresh => 1, ); } diff --git a/lib/MetaCPAN/Document/File.pm b/lib/MetaCPAN/Document/File.pm index 3b31cd198..785194761 100644 --- a/lib/MetaCPAN/Document/File.pm +++ b/lib/MetaCPAN/Document/File.pm @@ -888,20 +888,27 @@ sub prefix { my @query = split( /\s+/, $prefix ); my $should = [ map { - { field => { 'documentation.analyzed' => "$_*" } }, - { field => { 'documentation.camelcase' => "$_*" } } + { + simple_query_string => { + fields => [ + 'documentation.analyzed', 'documentation.camelcase' + ], + query => "$_*" + } + } } grep {$_} @query ]; return $self->query( { filtered => { query => { - custom_score => { + function_score => { query => { bool => { should => $should } }, - #metacpan_script => 'prefer_shorter_module_names_100', - script => - "_score - doc['documentation'].value.length()/100" + script_score => { + script => + "_score - doc['documentation'].value.length()/100", + } }, }, filter => { diff --git a/lib/MetaCPAN/Document/Release.pm b/lib/MetaCPAN/Document/Release.pm index 70bc01ce6..f1eeada32 100644 --- a/lib/MetaCPAN/Document/Release.pm +++ b/lib/MetaCPAN/Document/Release.pm @@ -113,11 +113,17 @@ has id => ( id => [qw(author name)], ); -has [qw(license version author archive)] => ( +has [qw(version author archive)] => ( is => 'ro', required => 1, ); +has license => ( + is => 'ro', + isa => 'ArrayRef', + required => 1, +); + has date => ( is => 'ro', required => 1, diff --git a/lib/MetaCPAN/Role/Script.pm b/lib/MetaCPAN/Role/Script.pm index 6689edc54..852f43f92 100644 --- a/lib/MetaCPAN/Role/Script.pm +++ b/lib/MetaCPAN/Role/Script.pm @@ -105,7 +105,7 @@ sub _build_cpan { } sub remote { - shift->es->transport->default_servers->[0]; + shift->es->nodes->info->[0]; } sub run { } @@ -114,7 +114,7 @@ before run => sub { $self->set_logger_once; - Dlog_debug {"Connected to $_"} $self->remote; + #Dlog_debug {"Connected to $_"} $self->remote; }; 1; diff --git a/lib/MetaCPAN/Script/Latest.pm b/lib/MetaCPAN/Script/Latest.pm index b1edb2a54..2dcc18120 100644 --- a/lib/MetaCPAN/Script/Latest.pm +++ b/lib/MetaCPAN/Script/Latest.pm @@ -89,7 +89,7 @@ sub run { 'file.release', 'file.distribution', 'file.date', 'file.status', ] - )->size(10000)->raw->scroll('1h'); + )->size(10000)->raw->scroll; my ( %downgrade, %upgrade ); log_debug { 'Found ' . $scroll->total . ' modules' }; @@ -100,11 +100,10 @@ sub run { while ( my $file = $scroll->next ) { $i++; log_debug { "$i of " . $scroll->total } unless ( $i % 1000 ); - my $data = $file->{fields}; - my @modules - = ref $data->{'module.name'} - ? @{ $data->{'module.name'} } - : $data->{'module.name'}; + my $data = $file->{fields}; + my @modules = @{ $data->{'module.name'} }; + ( $data->{$_} ) = @{ $data->{$_} } + for qw(author release distribution date status); # Convert module name into Parse::CPAN::Packages::Fast::Package object. @modules = grep {defined} map { @@ -188,33 +187,20 @@ sub reindex { $release->put unless ( $self->dry_run ); # Get all the files for the release. - my $scroll = $es->scrolled_search( + my $scroll = $self->index->type("file")->size(1000)->filter( { - index => $self->index->name, - type => 'file', - scroll => '5m', - size => 1000, - search_type => 'scan', - query => { + query => { filtered => { - query => { match_all => {} }, - filter => { - and => [ - { - term => - { 'file.release' => $source->{release} } - }, - { - term => { 'file.author' => $source->{author} } - } - ] - } + and => [ + { term => { 'file.release' => $source->{release} } }, + { term => { 'file.author' => $source->{author} } } + ] } } } - ); + )->raw->scroll; - my @bulk; + my $bulk = $self->model->bulk; while ( my $row = $scroll->next ) { my $source = $row->{_source}; log_trace { @@ -223,21 +209,16 @@ sub reindex { }; # Use bulk update to overwrite the status for X files at a time. - push( - @bulk, + $bulk->add( { index => { index => $self->index->name, type => 'file', id => $row->{_id}, - data => { %$source, status => $status } + body => { %$source, status => $status } } } - ) unless ( $self->dry_run ); - if ( @bulk > 100 ) { - $self->es->bulk( \@bulk ); - @bulk = (); - } + ) unless $self->dry_run; } $self->es->bulk( \@bulk ) if (@bulk); } diff --git a/lib/MetaCPAN/Server/Controller.pm b/lib/MetaCPAN/Server/Controller.pm index 1f340f92d..03f241cb1 100644 --- a/lib/MetaCPAN/Server/Controller.pm +++ b/lib/MetaCPAN/Server/Controller.pm @@ -67,7 +67,7 @@ sub model { sub mapping : Path('_mapping') { my ( $self, $c ) = @_; $c->stash( - $c->model('CPAN')->es->mapping( + $c->model('CPAN')->es->indices->get_mapping( index => $c->model('CPAN')->index, type => $self->type ) @@ -97,6 +97,7 @@ sub search : Path('_search') : ActionClass('Deserialize') { # shallow copy my $params = { %{ $req->params } }; + delete $params->{$_} for qw(type index body join); { my $size = $params->{size} || ( $req->data || {} )->{size}; $c->detach( '/bad_request', @@ -106,14 +107,12 @@ sub search : Path('_search') : ActionClass('Deserialize') { delete $params->{callback}; eval { $c->stash( - $c->model('CPAN')->es->request( + $self->model($c)->es->search( { - method => $req->method, - qs => $params, - cmd => join( '/', - '', $c->model('CPAN')->index, - $self->type, '_search' ), - data => $req->data + index => $c->model("CPAN")->index, + type => $self->type, + body => $c->req->data, + %$params, } ) ); diff --git a/lib/MetaCPAN/Server/Controller/Scroll.pm b/lib/MetaCPAN/Server/Controller/Scroll.pm index cc974f7db..e3eb5271e 100644 --- a/lib/MetaCPAN/Server/Controller/Scroll.pm +++ b/lib/MetaCPAN/Server/Controller/Scroll.pm @@ -35,16 +35,10 @@ sub index : Path('/_search/scroll') : Args { } my $res = eval { - $c->model('CPAN')->es->transport->request( + $c->model('CPAN')->es->scroll( { - method => $req->method, - qs => $req->parameters, - - # We could alternatively append "/$scroll_id" to the cmd. - cmd => '/_search/scroll', - - # Pass reference to scalar as a non-ref will throw an error. - data => \$scroll_id, + scroll_id => $scroll_id, + scroll => $c->req->params->{scroll}, } ); } or do { $self->internal_error( $c, $@ ); }; diff --git a/lib/Plack/Session/Store/ElasticSearch.pm b/lib/Plack/Session/Store/ElasticSearch.pm deleted file mode 100644 index b02cf3005..000000000 --- a/lib/Plack/Session/Store/ElasticSearch.pm +++ /dev/null @@ -1,58 +0,0 @@ -package Plack::Session::Store::ElasticSearch; - -use strict; -use warnings; - -use base 'Plack::Session::Store'; - -use List::MoreUtils qw(); -use Plack::Util::Accessor qw(es index type property); - -sub new { - my ( $class, %params ) = @_; - bless { - index => 'user', - type => 'session', - property => 'id', - %params - } => $class; -} - -sub fetch { - my ( $self, $session_id ) = @_; - return undef unless ($session_id); - my $data = eval { - $self->es->get( - index => $self->index, - type => $self->type, - id => $session_id, - fields => [ '_parent', '_source' ] - ); - } || return undef; - $data->{_parent} = delete $data->{fields}->{_parent}; - return $data; -} - -sub store { - my ( $self, $session_id, $session ) = @_; - $self->es->index( - index => $self->index, - type => $self->type, - id => $session_id || undef, - parent => $session->{_parent} || "", - data => keys %$session ? $session->{_source} : { $self->type => {} }, - refresh => 1, - ); -} - -sub remove { - my ( $self, $session_id ) = @_; - $self->es->delete( - index => $self->index, - type => $self->type, - id => $session_id, - refresh => 1, - ); -} - -1; diff --git a/t/fakecpan.t b/t/fakecpan.t index aa4d19619..fb59021b7 100644 --- a/t/fakecpan.t +++ b/t/fakecpan.t @@ -14,7 +14,7 @@ use Test::Aggregate::Nested 0.371 (); use CPAN::Faker 0.010; use Config::General; use DDP; -use ElasticSearch::TestServer; +use Search::Elasticsearch; use File::Copy; use MetaCPAN::Script::Author; use MetaCPAN::Script::Latest; @@ -32,9 +32,8 @@ BEGIN { $ENV{EMAIL_SENDER_TRANSPORT} = 'Test' } my $ES_HOST_PORT = '127.0.0.1:' . ( $ENV{METACPAN_ES_TEST_PORT} ||= 9900 ); ok( - my $es = ElasticSearch->new( - transport => 'httplite', - servers => $ES_HOST_PORT, + my $es = Search::Elasticsearch->new( + nodes => $ES_HOST_PORT, # trace_calls => 1, ), @@ -43,7 +42,7 @@ ok( p $es; -eval { $es->transport->refresh_servers; }; +#eval { $es->transport->refresh_servers; }; ok( !$@, "Connected to the ElasticSearch test instance on $ES_HOST_PORT" ) or do { @@ -57,7 +56,7 @@ EOF }; Test::More::note( - Test::More::explain( { 'ElasticSearch info' => $es->request } ) ); + Test::More::explain( { 'ElasticSearch info' => $es->info } ) ); my $config = MetaCPAN::Script::Runner->build_config; $config->{es} = $es; @@ -141,11 +140,11 @@ wait_for_es(); sub wait_for_es { sleep $_[0] if $_[0]; - $es->cluster_health( + $es->cluster->health( wait_for_status => 'yellow', timeout => '30s' ); - $es->refresh_index(); + $es->indices->refresh; } subtest 'Nested tests' => sub { diff --git a/t/release/documentation-not-readme.t b/t/release/documentation-not-readme.t index 2e4878269..994711f86 100644 --- a/t/release/documentation-not-readme.t +++ b/t/release/documentation-not-readme.t @@ -9,7 +9,7 @@ use MetaCPAN::TestHelpers; test_release( 'RWSTAUNER/Documentation-Not-Readme-0.01', { - first => \1, + first => 1, extra_tests => \&test_modules, } ); diff --git a/t/release/meta-provides.t b/t/release/meta-provides.t index a69fa75fc..cb63040cb 100644 --- a/t/release/meta-provides.t +++ b/t/release/meta-provides.t @@ -12,8 +12,8 @@ test_release( name => 'Meta-Provides-1.01', author => 'RWSTAUNER', abstract => 'has provides key in meta', - authorized => \1, - first => \1, + authorized => 1, + first => 1, provides => [ 'Meta::Provides', ], status => 'latest', extra_tests => sub { diff --git a/t/release/pod-examples.t b/t/release/pod-examples.t index ff0bdf48a..d836a9da8 100644 --- a/t/release/pod-examples.t +++ b/t/release/pod-examples.t @@ -9,7 +9,7 @@ use MetaCPAN::TestHelpers; test_release( 'RWSTAUNER/Pod-Examples-99', { - first => \1, + first => 1, extra_tests => \&test_pod_examples, } ); diff --git a/t/server/controller/author.t b/t/server/controller/author.t index 8fcf063f6..f99d5f0c0 100644 --- a/t/server/controller/author.t +++ b/t/server/controller/author.t @@ -26,7 +26,7 @@ test_psgi app, sub { my $json = decode_json_ok($res); ok( $json->{pauseid} eq 'MO', 'pauseid is MO' ) if ( $k eq '/author/MO' ); - ok( ref $json->{author} eq 'HASH', '_mapping' ) + ok( ref $json->{cpan_v1}{mappings}{author} eq 'HASH', '_mapping' ) if ( $k eq '/author/_mapping' ); } diff --git a/t/server/controller/module.t b/t/server/controller/module.t index 03a4b6060..d6053fffc 100644 --- a/t/server/controller/module.t +++ b/t/server/controller/module.t @@ -29,16 +29,16 @@ test_psgi app, sub { if ( $k eq '/module' ) { ok( $json->{hits}->{total}, 'got total count' ); } - elsif ( $v eq 200 ) { - ok( $json->{name} eq 'Moose.pm', 'Moose.pm' ); - } - if ( $v =~ /fields/ ) { + elsif ( $k =~ /fields/ ) { is_deeply( $json, - { documentation => 'Moose', name => 'Moose.pm' }, + { documentation => ['Moose'], name => ['Moose.pm'] }, 'controller proxies field query parameter to ES' ); } + elsif ( $v eq 200 ) { + ok( $json->{name} eq 'Moose.pm', 'Moose.pm' ); + } } }; diff --git a/t/server/controller/search/autocomplete.t b/t/server/controller/search/autocomplete.t index 208353a4d..cceedded4 100644 --- a/t/server/controller/search/autocomplete.t +++ b/t/server/controller/search/autocomplete.t @@ -15,7 +15,7 @@ test_psgi app, sub { 'GET' ); my $json = decode_json_ok($res); - my $got = [ map { $_->{fields}{documentation} } + my $got = [ map { @{ $_->{fields}{documentation} } } @{ $json->{hits}{hits} } ]; is_deeply $got, [ diff --git a/t/server/controller/search/reverse_dependencies.t b/t/server/controller/search/reverse_dependencies.t index 5fee46f2f..243af0627 100644 --- a/t/server/controller/search/reverse_dependencies.t +++ b/t/server/controller/search/reverse_dependencies.t @@ -125,7 +125,7 @@ test_psgi app, sub { ); my $json = decode_json_ok($res); is( $json->{hits}->{total}, 1, 'total is 1' ); - is( $json->{hits}->{hits}->[0]->{fields}->{distribution}, + is( $json->{hits}->{hits}->[0]->{fields}->{distribution}->[0], 'Multiple-Modules-RDeps-A', 'filter worked' ); } }; diff --git a/t/server/sanitize_query.t b/t/server/sanitize_query.t index 3ee0130fb..4159df491 100644 --- a/t/server/sanitize_query.t +++ b/t/server/sanitize_query.t @@ -70,7 +70,7 @@ test_psgi app, sub { my $json = decode_json_ok($res); is_deeply $json->{hits}{hits}->[0]->{fields}, - { pauselen2 => 18 }, 'script_fields via metacpan_script' + { pauselen2 => [18] }, 'script_fields via metacpan_script' or diag explain $json; }, ); @@ -149,8 +149,7 @@ while ( my ( $mscript, $re ) = each %replacements ) { $cleaned = MetaCPAN::Server::QuerySanitizer->new( query => $query )->query; - like_if_defined - delete $cleaned->{foo}{bar}->[0]->{script}, + like_if_defined delete $cleaned->{foo}{bar}->[0]->{script}, $re, "$mscript script replaced"; is_deeply $cleaned, { foo => { bar => [ { other => 'val' } ] } }, 'any hash structure accepts metacpan_script'; @@ -169,8 +168,7 @@ hash_key_rejected( { my $hash = filtered_custom_score_hash( hi => 'there' ); - is_deeply - delete $hash->{query}{filtered}{query}, + is_deeply delete $hash->{query}{filtered}{query}, { custom_score => { query => { foo => 'bar' }, hi => 'there' } }, 'remove custom_score hash'; From 8f4ef76080b6b2c5882149e8ba891c6e20f84f44 Mon Sep 17 00:00:00 2001 From: Andreea Pirvulescu Date: Wed, 4 Mar 2015 05:17:24 +0200 Subject: [PATCH 003/329] add Search::Elasticsearch --- cpanfile | 1 + cpanfile.snapshot | 132 ++++++++++++++++++++++++++++++++++++++++++---- 2 files changed, 124 insertions(+), 9 deletions(-) diff --git a/cpanfile b/cpanfile index 117023c21..9061daca8 100644 --- a/cpanfile +++ b/cpanfile @@ -134,6 +134,7 @@ requires 'Pod::Text'; requires 'Regexp::Common'; requires 'Regexp::Common::time'; requires 'Safe', '2.35'; # bug fixes (used by Parse::PMFile) +requires 'Search::Elasticsearch'; requires 'Starman'; requires 'Time::Local'; requires 'Throwable::Error'; diff --git a/cpanfile.snapshot b/cpanfile.snapshot index 0ea02746e..1e5950610 100644 --- a/cpanfile.snapshot +++ b/cpanfile.snapshot @@ -3785,6 +3785,13 @@ DISTRIBUTIONS Hash::MultiValue 0.15 requirements: ExtUtils::MakeMaker 6.30 + Hijk-0.19 + pathname: A/AV/AVAR/Hijk-0.19.tar.gz + provides: + Hijk 0.19 + requirements: + CPAN::Meta 0 + ExtUtils::MakeMaker 6.36 Hook-LexWrap-0.24 pathname: C/CH/CHORNY/Hook-LexWrap-0.24.tar.gz provides: @@ -4089,16 +4096,36 @@ DISTRIBUTIONS ExtUtils::MakeMaker 6.52 Test::More 0.82 perl 5.00503 - Log-Any-0.15 - pathname: J/JS/JSWARTZ/Log-Any-0.15.tar.gz - provides: - Log::Any 0.15 - Log::Any::Adapter::Null 0.15 - Log::Any::Adapter::Test 0.15 - Log::Any::Test 0.15 + Log-Any-1.03 + pathname: D/DA/DAGOLDEN/Log-Any-1.03.tar.gz + provides: + Log::Any 1.03 + Log::Any::Adapter 1.03 + Log::Any::Adapter::Base 1.03 + Log::Any::Adapter::File 1.03 + Log::Any::Adapter::Null 1.03 + Log::Any::Adapter::Stderr 1.03 + Log::Any::Adapter::Stdout 1.03 + Log::Any::Adapter::Test 1.03 + Log::Any::Adapter::Util 1.03 + Log::Any::Manager 1.03 + Log::Any::Proxy 1.03 + Log::Any::Proxy::Test 1.03 + Log::Any::Test 1.03 requirements: - ExtUtils::MakeMaker 6.30 - Test::More 0 + B 0 + Carp 0 + Data::Dumper 0 + Exporter 0 + ExtUtils::MakeMaker 6.17 + Fcntl 0 + IO::File 0 + Test::Builder 0 + base 0 + constant 0 + perl 5.008001 + strict 0 + warnings 0 Log-Contextual-0.006003 pathname: F/FR/FREW/Log-Contextual-0.006003.tar.gz provides: @@ -6904,6 +6931,93 @@ DISTRIBUTIONS ExtUtils::MakeMaker 0 Test::More 0 perl 5.006001 + Search-Elasticsearch-1.19 + pathname: D/DR/DRTECH/Search-Elasticsearch-1.19.tar.gz + provides: + MockCxn undef + Search::Elasticsearch 1.19 + Search::Elasticsearch::Bulk 1.19 + Search::Elasticsearch::Client::0_90::Direct 1.19 + Search::Elasticsearch::Client::0_90::Direct::Cluster 1.19 + Search::Elasticsearch::Client::0_90::Direct::Indices 1.19 + Search::Elasticsearch::Client::Direct 1.19 + Search::Elasticsearch::Client::Direct::Cat 1.19 + Search::Elasticsearch::Client::Direct::Cluster 1.19 + Search::Elasticsearch::Client::Direct::Indices 1.19 + Search::Elasticsearch::Client::Direct::Nodes 1.19 + Search::Elasticsearch::Client::Direct::Snapshot 1.19 + Search::Elasticsearch::Cxn::Factory 1.19 + Search::Elasticsearch::Cxn::HTTPTiny 1.19 + Search::Elasticsearch::Cxn::Hijk 1.19 + Search::Elasticsearch::Cxn::LWP 1.19 + Search::Elasticsearch::CxnPool::Sniff 1.19 + Search::Elasticsearch::CxnPool::Static 1.19 + Search::Elasticsearch::CxnPool::Static::NoPing 1.19 + Search::Elasticsearch::Error 1.19 + Search::Elasticsearch::Logger::LogAny 1.19 + Search::Elasticsearch::Role::API 1.19 + Search::Elasticsearch::Role::API::0_90 1.19 + Search::Elasticsearch::Role::Bulk 1.19 + Search::Elasticsearch::Role::Client 1.19 + Search::Elasticsearch::Role::Client::Direct 1.19 + Search::Elasticsearch::Role::Cxn 1.19 + Search::Elasticsearch::Role::Cxn::HTTP 1.19 + Search::Elasticsearch::Role::CxnPool 1.19 + Search::Elasticsearch::Role::CxnPool::Sniff 1.19 + Search::Elasticsearch::Role::CxnPool::Static 1.19 + Search::Elasticsearch::Role::CxnPool::Static::NoPing 1.19 + Search::Elasticsearch::Role::Is_Sync 1.19 + Search::Elasticsearch::Role::Logger 1.19 + Search::Elasticsearch::Role::Scroll 1.19 + Search::Elasticsearch::Role::Serializer 1.19 + Search::Elasticsearch::Role::Serializer::JSON 1.19 + Search::Elasticsearch::Role::Transport 1.19 + Search::Elasticsearch::Scroll 1.19 + Search::Elasticsearch::Serializer::JSON 1.19 + Search::Elasticsearch::Serializer::JSON::Cpanel 1.19 + Search::Elasticsearch::Serializer::JSON::PP 1.19 + Search::Elasticsearch::Serializer::JSON::XS 1.19 + Search::Elasticsearch::TestServer 1.19 + Search::Elasticsearch::Transport 1.19 + Search::Elasticsearch::Util 1.19 + Search::Elasticsearch::Util::API::Path 1.19 + Search::Elasticsearch::Util::API::QS 1.19 + requirements: + Any::URI::Escape 0 + Data::Dumper 0 + Encode 0 + ExtUtils::MakeMaker 0 + File::Temp 0 + HTTP::Headers 0 + HTTP::Request 0 + HTTP::Tiny 0.043 + Hijk 0.12 + IO::Select 0 + IO::Socket 0 + IO::Uncompress::Inflate 0 + JSON::MaybeXS 1.002002 + JSON::PP 0 + LWP::UserAgent 0 + List::Util 0 + Log::Any 1.02 + Log::Any::Adapter 0 + MIME::Base64 0 + Module::Runtime 0 + Moo 1.003 + Moo::Role 0 + POSIX 0 + Package::Stash 0.34 + Pod::Simple 3.28 + Scalar::Util 0 + Sub::Exporter 0 + Test::More 0.98 + Time::HiRes 0 + Try::Tiny 0 + URI 0 + namespace::clean 0 + overload 0 + strict 0 + warnings 0 Sort-Naturally-1.03 pathname: B/BI/BINGOS/Sort-Naturally-1.03.tar.gz provides: From f79dac31709f94cc08ea1c35411accbf3a70f0f2 Mon Sep 17 00:00:00 2001 From: Andreea Pirvulescu Date: Wed, 4 Mar 2015 05:33:13 +0200 Subject: [PATCH 004/329] remove @bulk in usage --- lib/MetaCPAN/Script/Latest.pm | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/MetaCPAN/Script/Latest.pm b/lib/MetaCPAN/Script/Latest.pm index 2dcc18120..a0ed5a7b9 100644 --- a/lib/MetaCPAN/Script/Latest.pm +++ b/lib/MetaCPAN/Script/Latest.pm @@ -220,7 +220,6 @@ sub reindex { } ) unless $self->dry_run; } - $self->es->bulk( \@bulk ) if (@bulk); } sub compare_dates { From 7985fc1dd295811286df43d8112f7d87ecdc8159 Mon Sep 17 00:00:00 2001 From: Andreea Pirvulescu Date: Thu, 5 Mar 2015 17:02:18 +0200 Subject: [PATCH 005/329] get cluster info --- t/fakecpan.t | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/t/fakecpan.t b/t/fakecpan.t index fb59021b7..857367ff9 100644 --- a/t/fakecpan.t +++ b/t/fakecpan.t @@ -40,7 +40,9 @@ ok( 'got ElasticSearch object' ); -p $es; +p $es->cluster->info; +p $es->->cluster->health; +p $es->cluster->node_stats; #eval { $es->transport->refresh_servers; }; From eeff92e4f70a6bc88e30666f14e4133e4ef33a06 Mon Sep 17 00:00:00 2001 From: Andreea Pirvulescu Date: Thu, 5 Mar 2015 17:37:46 +0200 Subject: [PATCH 006/329] tidy get cluster info --- t/fakecpan.t | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/t/fakecpan.t b/t/fakecpan.t index 857367ff9..2d5eb5358 100644 --- a/t/fakecpan.t +++ b/t/fakecpan.t @@ -41,7 +41,7 @@ ok( ); p $es->cluster->info; -p $es->->cluster->health; +p $es->cluster->health; p $es->cluster->node_stats; #eval { $es->transport->refresh_servers; }; From 48bb009ac0e13fb7b8941a2d0bf0eb11d2be903c Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Thu, 12 Mar 2015 22:13:01 -0400 Subject: [PATCH 007/329] Remove some Es use statements. --- lib/MetaCPAN/Role/Script.pm | 3 +-- lib/MetaCPAN/Script/Check.pm | 1 - lib/MetaCPAN/Types/Internal.pm | 1 - 3 files changed, 1 insertion(+), 4 deletions(-) diff --git a/lib/MetaCPAN/Role/Script.pm b/lib/MetaCPAN/Role/Script.pm index 852f43f92..0f4af0fbf 100644 --- a/lib/MetaCPAN/Role/Script.pm +++ b/lib/MetaCPAN/Role/Script.pm @@ -3,7 +3,6 @@ package MetaCPAN::Role::Script; use strict; use warnings; -use ElasticSearch; use ElasticSearchX::Model::Document::Types qw(:all); use FindBin; use Log::Contextual qw( :dlog ); @@ -27,7 +26,7 @@ has es => ( is => 'ro', required => 1, coerce => 1, - documentation => 'ElasticSearch http connection string', + documentation => 'Elasticsearch http connection string', ); has model => ( lazy_build => 1, is => 'ro', traits => ['NoGetopt'] ); diff --git a/lib/MetaCPAN/Script/Check.pm b/lib/MetaCPAN/Script/Check.pm index 548502002..fea6c9ba1 100644 --- a/lib/MetaCPAN/Script/Check.pm +++ b/lib/MetaCPAN/Script/Check.pm @@ -3,7 +3,6 @@ package MetaCPAN::Script::Check; use strict; use warnings; -use ElasticSearch; use File::Spec::Functions qw(catfile); use Log::Contextual qw( :log ); use Moose; diff --git a/lib/MetaCPAN/Types/Internal.pm b/lib/MetaCPAN/Types/Internal.pm index 9b62965c8..91281b035 100644 --- a/lib/MetaCPAN/Types/Internal.pm +++ b/lib/MetaCPAN/Types/Internal.pm @@ -4,7 +4,6 @@ use strict; use warnings; use CPAN::Meta; -use ElasticSearch; use ElasticSearchX::Model::Document::Types qw(:all); use JSON; use MooseX::Getopt::OptionTypeMap; From 315d26bb01d752e84c2a2d957a21a0a85be8779e Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Thu, 12 Mar 2015 22:20:49 -0400 Subject: [PATCH 008/329] Don't call Es method which no longer exists. --- t/fakecpan.t | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/t/fakecpan.t b/t/fakecpan.t index 2d5eb5358..9243725ad 100644 --- a/t/fakecpan.t +++ b/t/fakecpan.t @@ -40,11 +40,8 @@ ok( 'got ElasticSearch object' ); -p $es->cluster->info; -p $es->cluster->health; -p $es->cluster->node_stats; - -#eval { $es->transport->refresh_servers; }; +diag p $es->cluster->health; +diag p $es->nodes->stats; ok( !$@, "Connected to the ElasticSearch test instance on $ES_HOST_PORT" ) or do { From 6fad1764b9cbfda3c9a7b3e403b3bb7b57a58f6d Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Thu, 12 Mar 2015 22:25:44 -0400 Subject: [PATCH 009/329] Upgrade MooseX::Types::ElasticSearch from 0.0.2 to 0.0.4 --- cpanfile | 2 +- cpanfile.snapshot | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/cpanfile b/cpanfile index 9061daca8..d89296ceb 100644 --- a/cpanfile +++ b/cpanfile @@ -98,7 +98,7 @@ requires 'MooseX::Getopt::OptionTypeMap'; requires 'MooseX::StrictConstructor'; requires 'MooseX::Types'; requires 'MooseX::Types::Common::String'; -requires 'MooseX::Types::ElasticSearch', ' == 0.0.2'; # Newer versions use the other ES module which we can't upgrade to yet b/c of ESX-Model. +requires 'MooseX::Types::ElasticSearch', ' == 0.0.4'; requires 'MooseX::Types::Moose'; requires 'MooseX::Types::Path::Class::MoreCoercions'; requires 'MooseX::Types::Structured'; diff --git a/cpanfile.snapshot b/cpanfile.snapshot index 1e5950610..d35807c75 100644 --- a/cpanfile.snapshot +++ b/cpanfile.snapshot @@ -5066,16 +5066,16 @@ DISTRIBUTIONS perl 5.008 strict 0 warnings 0 - MooseX-Types-ElasticSearch-0.0.2 - pathname: P/PE/PERLER/MooseX-Types-ElasticSearch-0.0.2.tar.gz + MooseX-Types-ElasticSearch-0.0.4 + pathname: P/PE/PERLER/MooseX-Types-ElasticSearch-0.0.4.tar.gz provides: - MooseX::Types::ElasticSearch 0.000002 + MooseX::Types::ElasticSearch 0.000004 requirements: DateTime::Format::Epoch::Unix 0 DateTime::Format::ISO8601 0 - ElasticSearch 0 Module::Build 0.3601 MooseX::Types 0 + Search::Elasticsearch 0 MooseX-Types-Path-Class-0.06 pathname: T/TH/THEPLER/MooseX-Types-Path-Class-0.06.tar.gz provides: From 98e79f39cde4fb861ee9998ea2d9812cc6beda85 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Thu, 12 Mar 2015 22:35:48 -0400 Subject: [PATCH 010/329] Have Travis use checkout for p5-elasticsearch-model. --- .travis.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 35717f38c..e068f747c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -29,7 +29,9 @@ env: before_install: - sudo service elasticsearch restart - + - git clone https://github.com/CPAN-API/p5-elasticsearch-model.git + - pwd + - cpanm -n Devel::Cover::Report::Coveralls - cpanm -n Carton - sudo apt-get install libgmp-dev @@ -50,7 +52,7 @@ script: # Devel::Cover isn't in the cpanfile # but if it's installed into the global dirs this should work. # NOTE: No '-r' for prove; 't/fakecpan.t' does the recursion for us. - - HARNESS_PERL_SWITCHES=-MDevel::Cover=+ignore,local carton exec prove -lv t + - HARNESS_PERL_SWITCHES=-MDevel::Cover=+ignore,local carton exec prove -lv -I p5-elasticsearch-model/lib t after_success: - cover -report coveralls From e9e6541dd6ff55291f10badbd8f4255fb25f6af4 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Fri, 13 Mar 2015 00:17:44 -0400 Subject: [PATCH 011/329] Upgrade Moose from to 2.0802 to 2.1403 --- cpanfile | 2 +- cpanfile.snapshot | 762 +++++++++++++++++++++++++++------------------- 2 files changed, 442 insertions(+), 322 deletions(-) diff --git a/cpanfile b/cpanfile index d89296ceb..2ac34c46f 100644 --- a/cpanfile +++ b/cpanfile @@ -85,7 +85,7 @@ requires 'Log::Log4perl::Appender::ScreenColoredLevels'; requires 'Module::Metadata', '1.000022'; requires 'Module::Pluggable'; requires 'Module::Runtime'; -requires 'Moose', ' == 2.0802'; # Pin to older version to avoid deprecation warning on enum that we can't escape b/c we're pinned to an old version of MX-Types-ES. +requires 'Moose', ' >= 2.1403'; requires 'Moose::Role'; requires 'Moose::Util'; requires 'MooseX::Aliases'; diff --git a/cpanfile.snapshot b/cpanfile.snapshot index d35807c75..4b7a6da60 100644 --- a/cpanfile.snapshot +++ b/cpanfile.snapshot @@ -183,17 +183,6 @@ DISTRIBUTIONS Params::Check 0.07 Test::More 0 if 0 - Archive-Tar-Wrapper-0.21 - pathname: M/MS/MSCHILLI/Archive-Tar-Wrapper-0.21.tar.gz - provides: - Archive::Tar::Wrapper 0.21 - requirements: - Cwd 0 - ExtUtils::MakeMaker 0 - File::Temp 0 - File::Which 0 - IPC::Run 0 - Log::Log4perl 0 Archive-Zip-1.37 pathname: P/PH/PHRED/Archive-Zip-1.37.tar.gz provides: @@ -2691,30 +2680,20 @@ DISTRIBUTIONS ExtUtils::MakeMaker 0 Sub::Exporter::Progressive 0.001011 perl 5.006 - Devel-NYTProf-5.06 - pathname: T/TI/TIMB/Devel-NYTProf-5.06.tar.gz - provides: - Devel::NYTProf 5.06 - Devel::NYTProf::Apache 4.00 - Devel::NYTProf::Constants undef - Devel::NYTProf::Core 5.06 - Devel::NYTProf::Data 4.02 - Devel::NYTProf::FileHandle undef - Devel::NYTProf::FileInfo undef - Devel::NYTProf::ReadStream 4.00 - Devel::NYTProf::Reader 4.06 - Devel::NYTProf::Run undef - Devel::NYTProf::SubCallInfo undef - Devel::NYTProf::SubInfo undef - Devel::NYTProf::Util 4.00 + Devel-OverloadInfo-0.002 + pathname: I/IL/ILMARI/Devel-OverloadInfo-0.002.tar.gz + provides: + Devel::OverloadInfo 0.002 requirements: - ExtUtils::MakeMaker 0 - Getopt::Long 0 - JSON::Any 0 - List::Util 0 - Test::Differences 0.60 - Test::More 0.84 - XSLoader 0 + Exporter 5.57 + ExtUtils::MakeMaker 6.30 + MRO::Compat 0 + Package::Stash 0.14 + Scalar::Util 0 + Sub::Identify 0 + overload 0 + strict 0 + warnings 0 Devel-PartialDump-0.17 pathname: E/ET/ETHER/Devel-PartialDump-0.17.tar.gz provides: @@ -2731,16 +2710,17 @@ DISTRIBUTIONS perl 5.006001 strict 0 warnings 0 - Devel-StackTrace-1.32 - pathname: D/DR/DROLSKY/Devel-StackTrace-1.32.tar.gz + Devel-StackTrace-2.00 + pathname: D/DR/DROLSKY/Devel-StackTrace-2.00.tar.gz provides: - Devel::StackTrace 1.32 - Devel::StackTrace::Frame 1.32 + Devel::StackTrace 2.00 + Devel::StackTrace::Frame 2.00 requirements: - ExtUtils::MakeMaker 6.30 + ExtUtils::MakeMaker 0 File::Spec 0 Scalar::Util 0 overload 0 + perl 5.006 strict 0 warnings 0 Devel-StackTrace-AsHTML-0.14 @@ -3896,19 +3876,6 @@ DISTRIBUTIONS IO::WrapTie::Slave 2.110 requirements: ExtUtils::MakeMaker 0 - IPC-Run-0.94 - pathname: T/TO/TODDR/IPC-Run-0.94.tar.gz - provides: - IPC::Run 0.94 - IPC::Run::Debug 0.90 - IPC::Run::IO 0.90 - IPC::Run::Timer 0.90 - IPC::Run::Win32Helper 0.90 - IPC::Run::Win32IO 0.90 - IPC::Run::Win32Pump 0.90 - requirements: - ExtUtils::MakeMaker 0 - Test::More 0.47 IPC-Run3-0.048 pathname: R/RJ/RJBS/IPC-Run3-0.048.tar.gz provides: @@ -4075,18 +4042,6 @@ DISTRIBUTIONS requirements: Test::More 0 version 0 - List-AllUtils-0.09 - pathname: D/DR/DROLSKY/List-AllUtils-0.09.tar.gz - provides: - List::AllUtils 0.09 - requirements: - Exporter 0 - ExtUtils::MakeMaker 0 - List::MoreUtils 0.28 - List::Util 1.31 - base 0 - strict 0 - warnings 0 List-MoreUtils-0.33 pathname: A/AD/ADAMK/List-MoreUtils-0.33.tar.gz provides: @@ -4348,10 +4303,10 @@ DISTRIBUTIONS Text::ParseWords 0 perl 5.006001 version 0.87 - Module-Build-Tiny-0.036 - pathname: L/LE/LEONT/Module-Build-Tiny-0.036.tar.gz + Module-Build-Tiny-0.039 + pathname: L/LE/LEONT/Module-Build-Tiny-0.039.tar.gz provides: - Module::Build::Tiny 0.036 + Module::Build::Tiny 0.039 requirements: CPAN::Meta 0 DynaLoader 0 @@ -4492,6 +4447,18 @@ DISTRIBUTIONS perl 5.006 strict 0 warnings 0 + Module-Runtime-Conflicts-0.001 + pathname: E/ET/ETHER/Module-Runtime-Conflicts-0.001.tar.gz + provides: + Module::Runtime::Conflicts 0.001 + requirements: + Dist::CheckConflicts 0 + ExtUtils::MakeMaker 0 + Module::Build::Tiny 0.038 + Module::Runtime 0 + perl 5.006 + strict 0 + warnings 0 Moo-1.004006 pathname: H/HA/HAARG/Moo-1.004006.tar.gz provides: @@ -4542,221 +4509,412 @@ DISTRIBUTIONS MooX::Types::MooseLike 0.23 Test::Fatal 0.003 Test::More 0.96 - Moose-2.0802 - pathname: E/ET/ETHER/Moose-2.0802.tar.gz - provides: - Bar undef - Bar7::Meta::Trait undef - Bar7::Meta::Trait2 undef - BinaryTree 0.02 - Class::MOP 2.0802 - Class::MOP::Attribute 2.0802 - Class::MOP::Class 2.0802 - Class::MOP::Class::Immutable::Trait 2.0802 - Class::MOP::Deprecated 2.0802 - Class::MOP::Instance 2.0802 - Class::MOP::Method 2.0802 - Class::MOP::Method::Accessor 2.0802 - Class::MOP::Method::Constructor 2.0802 - Class::MOP::Method::Generated 2.0802 - Class::MOP::Method::Inlined 2.0802 - Class::MOP::Method::Meta 2.0802 - Class::MOP::Method::Overload 2.0802 - Class::MOP::Method::Wrapped 2.0802 - Class::MOP::MiniTrait 2.0802 - Class::MOP::Mixin 2.0802 - Class::MOP::Mixin::AttributeCore 2.0802 - Class::MOP::Mixin::HasAttributes 2.0802 - Class::MOP::Mixin::HasMethods 2.0802 - Class::MOP::Module 2.0802 - Class::MOP::Object 2.0802 - Class::MOP::Package 2.0802 - Foo undef - MMHelper undef - MY undef - Moose 2.0802 - Moose::Cookbook::Legacy::Debugging_BaseClassReplacement 2.0802 - Moose::Cookbook::Meta::Labeled_AttributeMetaclass 2.0802 - Moose::Deprecated 2.0802 - Moose::Error::Confess 2.0802 - Moose::Error::Croak 2.0802 - Moose::Error::Default 2.0802 - Moose::Exporter 2.0802 - Moose::Meta::Attribute 2.0802 - Moose::Meta::Attribute::Custom::Bar undef - Moose::Meta::Attribute::Custom::Foo undef - Moose::Meta::Attribute::Custom::Moose 2.0802 - Moose::Meta::Attribute::Custom::Trait::Bar undef - Moose::Meta::Attribute::Custom::Trait::Foo undef - Moose::Meta::Attribute::Native 2.0802 - Moose::Meta::Attribute::Native::Trait 2.0802 - Moose::Meta::Attribute::Native::Trait::Array 2.0802 - Moose::Meta::Attribute::Native::Trait::Bool 2.0802 - Moose::Meta::Attribute::Native::Trait::Code 2.0802 - Moose::Meta::Attribute::Native::Trait::Counter 2.0802 - Moose::Meta::Attribute::Native::Trait::Hash 2.0802 - Moose::Meta::Attribute::Native::Trait::Number 2.0802 - Moose::Meta::Attribute::Native::Trait::String 2.0802 - Moose::Meta::Class 2.0802 - Moose::Meta::Class::Immutable::Trait 2.0802 - Moose::Meta::Instance 2.0802 - Moose::Meta::Method 2.0802 - Moose::Meta::Method::Accessor 2.0802 - Moose::Meta::Method::Accessor::Native 2.0802 - Moose::Meta::Method::Accessor::Native::Array 2.0802 - Moose::Meta::Method::Accessor::Native::Array::Writer 2.0802 - Moose::Meta::Method::Accessor::Native::Array::accessor 2.0802 - Moose::Meta::Method::Accessor::Native::Array::clear 2.0802 - Moose::Meta::Method::Accessor::Native::Array::count 2.0802 - Moose::Meta::Method::Accessor::Native::Array::delete 2.0802 - Moose::Meta::Method::Accessor::Native::Array::elements 2.0802 - Moose::Meta::Method::Accessor::Native::Array::first 2.0802 - Moose::Meta::Method::Accessor::Native::Array::first_index 2.0802 - Moose::Meta::Method::Accessor::Native::Array::get 2.0802 - Moose::Meta::Method::Accessor::Native::Array::grep 2.0802 - Moose::Meta::Method::Accessor::Native::Array::insert 2.0802 - Moose::Meta::Method::Accessor::Native::Array::is_empty 2.0802 - Moose::Meta::Method::Accessor::Native::Array::join 2.0802 - Moose::Meta::Method::Accessor::Native::Array::map 2.0802 - Moose::Meta::Method::Accessor::Native::Array::natatime 2.0802 - Moose::Meta::Method::Accessor::Native::Array::pop 2.0802 - Moose::Meta::Method::Accessor::Native::Array::push 2.0802 - Moose::Meta::Method::Accessor::Native::Array::reduce 2.0802 - Moose::Meta::Method::Accessor::Native::Array::set 2.0802 - Moose::Meta::Method::Accessor::Native::Array::shallow_clone 2.0802 - Moose::Meta::Method::Accessor::Native::Array::shift 2.0802 - Moose::Meta::Method::Accessor::Native::Array::shuffle 2.0802 - Moose::Meta::Method::Accessor::Native::Array::sort 2.0802 - Moose::Meta::Method::Accessor::Native::Array::sort_in_place 2.0802 - Moose::Meta::Method::Accessor::Native::Array::splice 2.0802 - Moose::Meta::Method::Accessor::Native::Array::uniq 2.0802 - Moose::Meta::Method::Accessor::Native::Array::unshift 2.0802 - Moose::Meta::Method::Accessor::Native::Bool::not 2.0802 - Moose::Meta::Method::Accessor::Native::Bool::set 2.0802 - Moose::Meta::Method::Accessor::Native::Bool::toggle 2.0802 - Moose::Meta::Method::Accessor::Native::Bool::unset 2.0802 - Moose::Meta::Method::Accessor::Native::Code::execute 2.0802 - Moose::Meta::Method::Accessor::Native::Code::execute_method 2.0802 - Moose::Meta::Method::Accessor::Native::Collection 2.0802 - Moose::Meta::Method::Accessor::Native::Counter::Writer 2.0802 - Moose::Meta::Method::Accessor::Native::Counter::dec 2.0802 - Moose::Meta::Method::Accessor::Native::Counter::inc 2.0802 - Moose::Meta::Method::Accessor::Native::Counter::reset 2.0802 - Moose::Meta::Method::Accessor::Native::Counter::set 2.0802 - Moose::Meta::Method::Accessor::Native::Hash 2.0802 - Moose::Meta::Method::Accessor::Native::Hash::Writer 2.0802 - Moose::Meta::Method::Accessor::Native::Hash::accessor 2.0802 - Moose::Meta::Method::Accessor::Native::Hash::clear 2.0802 - Moose::Meta::Method::Accessor::Native::Hash::count 2.0802 - Moose::Meta::Method::Accessor::Native::Hash::defined 2.0802 - Moose::Meta::Method::Accessor::Native::Hash::delete 2.0802 - Moose::Meta::Method::Accessor::Native::Hash::elements 2.0802 - Moose::Meta::Method::Accessor::Native::Hash::exists 2.0802 - Moose::Meta::Method::Accessor::Native::Hash::get 2.0802 - Moose::Meta::Method::Accessor::Native::Hash::is_empty 2.0802 - Moose::Meta::Method::Accessor::Native::Hash::keys 2.0802 - Moose::Meta::Method::Accessor::Native::Hash::kv 2.0802 - Moose::Meta::Method::Accessor::Native::Hash::set 2.0802 - Moose::Meta::Method::Accessor::Native::Hash::shallow_clone 2.0802 - Moose::Meta::Method::Accessor::Native::Hash::values 2.0802 - Moose::Meta::Method::Accessor::Native::Number::abs 2.0802 - Moose::Meta::Method::Accessor::Native::Number::add 2.0802 - Moose::Meta::Method::Accessor::Native::Number::div 2.0802 - Moose::Meta::Method::Accessor::Native::Number::mod 2.0802 - Moose::Meta::Method::Accessor::Native::Number::mul 2.0802 - Moose::Meta::Method::Accessor::Native::Number::set 2.0802 - Moose::Meta::Method::Accessor::Native::Number::sub 2.0802 - Moose::Meta::Method::Accessor::Native::Reader 2.0802 - Moose::Meta::Method::Accessor::Native::String::append 2.0802 - Moose::Meta::Method::Accessor::Native::String::chomp 2.0802 - Moose::Meta::Method::Accessor::Native::String::chop 2.0802 - Moose::Meta::Method::Accessor::Native::String::clear 2.0802 - Moose::Meta::Method::Accessor::Native::String::inc 2.0802 - Moose::Meta::Method::Accessor::Native::String::length 2.0802 - Moose::Meta::Method::Accessor::Native::String::match 2.0802 - Moose::Meta::Method::Accessor::Native::String::prepend 2.0802 - Moose::Meta::Method::Accessor::Native::String::replace 2.0802 - Moose::Meta::Method::Accessor::Native::String::substr 2.0802 - Moose::Meta::Method::Accessor::Native::Writer 2.0802 - Moose::Meta::Method::Augmented 2.0802 - Moose::Meta::Method::Constructor 2.0802 - Moose::Meta::Method::Delegation 2.0802 - Moose::Meta::Method::Destructor 2.0802 - Moose::Meta::Method::Meta 2.0802 - Moose::Meta::Method::Overridden 2.0802 - Moose::Meta::Mixin::AttributeCore 2.0802 - Moose::Meta::Object::Trait 2.0802 - Moose::Meta::Role 2.0802 - Moose::Meta::Role::Application 2.0802 - Moose::Meta::Role::Application::RoleSummation 2.0802 - Moose::Meta::Role::Application::ToClass 2.0802 - Moose::Meta::Role::Application::ToInstance 2.0802 - Moose::Meta::Role::Application::ToRole 2.0802 - Moose::Meta::Role::Attribute 2.0802 - Moose::Meta::Role::Composite 2.0802 - Moose::Meta::Role::Method 2.0802 - Moose::Meta::Role::Method::Conflicting 2.0802 - Moose::Meta::Role::Method::Required 2.0802 - Moose::Meta::TypeCoercion 2.0802 - Moose::Meta::TypeCoercion::Union 2.0802 - Moose::Meta::TypeConstraint 2.0802 - Moose::Meta::TypeConstraint::Class 2.0802 - Moose::Meta::TypeConstraint::DuckType 2.0802 - Moose::Meta::TypeConstraint::Enum 2.0802 - Moose::Meta::TypeConstraint::Parameterizable 2.0802 - Moose::Meta::TypeConstraint::Parameterized 2.0802 - Moose::Meta::TypeConstraint::Registry 2.0802 - Moose::Meta::TypeConstraint::Role 2.0802 - Moose::Meta::TypeConstraint::Union 2.0802 - Moose::Object 2.0802 - Moose::Role 2.0802 - Moose::Util 2.0802 - Moose::Util::MetaRole 2.0802 - Moose::Util::TypeConstraints 2.0802 - Moose::Util::TypeConstraints::Builtins 2.0802 - My::Bar undef - My::Content undef - My::Extract undef - My::Output undef - My::Trait::Bar undef - MyExporter undef - MyInline undef - MyMetaClass undef - MyMetaClass::Attribute undef - MyMetaClass::Instance undef - MyMetaClass::Method undef - MyMetaClass::Random undef - MyMetaclassRole undef - MyMooseA undef - MyMooseB undef - MyMooseObject undef - NoInlineAccessor undef - NoInlineAttribute undef - Role::Child undef - Role::Interface undef - Role::Parent undef - SyntaxError undef - Test::Moose 2.0802 - inc::CheckDelta undef - inc::Clean undef - inc::ExtractInlineTests undef - inc::GitUpToDate undef - inc::MakeMaker undef - inc::RequireAuthorDeps undef - inc::TestRelease undef - metaclass 2.0802 - oose 2.0802 + Moose-2.1403 + pathname: E/ET/ETHER/Moose-2.1403.tar.gz + provides: + Class::MOP 2.1403 + Class::MOP::Attribute 2.1403 + Class::MOP::Class 2.1403 + Class::MOP::Class::Immutable::Trait undef + Class::MOP::Deprecated undef + Class::MOP::Instance 2.1403 + Class::MOP::Method 2.1403 + Class::MOP::Method::Accessor 2.1403 + Class::MOP::Method::Constructor 2.1403 + Class::MOP::Method::Generated 2.1403 + Class::MOP::Method::Inlined 2.1403 + Class::MOP::Method::Meta 2.1403 + Class::MOP::Method::Wrapped 2.1403 + Class::MOP::MiniTrait undef + Class::MOP::Mixin undef + Class::MOP::Mixin::AttributeCore undef + Class::MOP::Mixin::HasAttributes undef + Class::MOP::Mixin::HasMethods undef + Class::MOP::Mixin::HasOverloads undef + Class::MOP::Module 2.1403 + Class::MOP::Object 2.1403 + Class::MOP::Overload 2.1403 + Class::MOP::Package 2.1403 + Moose 2.1403 + Moose::Deprecated undef + Moose::Exception 2.1403 + Moose::Exception::AccessorMustReadWrite 2.1403 + Moose::Exception::AddParameterizableTypeTakesParameterizableType 2.1403 + Moose::Exception::AddRoleTakesAMooseMetaRoleInstance 2.1403 + Moose::Exception::AddRoleToARoleTakesAMooseMetaRole 2.1403 + Moose::Exception::ApplyTakesABlessedInstance 2.1403 + Moose::Exception::AttachToClassNeedsAClassMOPClassInstanceOrASubclass 2.1403 + Moose::Exception::AttributeConflictInRoles 2.1403 + Moose::Exception::AttributeConflictInSummation 2.1403 + Moose::Exception::AttributeExtensionIsNotSupportedInRoles 2.1403 + Moose::Exception::AttributeIsRequired 2.1403 + Moose::Exception::AttributeMustBeAnClassMOPMixinAttributeCoreOrSubclass 2.1403 + Moose::Exception::AttributeNamesDoNotMatch 2.1403 + Moose::Exception::AttributeValueIsNotAnObject 2.1403 + Moose::Exception::AttributeValueIsNotDefined 2.1403 + Moose::Exception::AutoDeRefNeedsArrayRefOrHashRef 2.1403 + Moose::Exception::BadOptionFormat 2.1403 + Moose::Exception::BothBuilderAndDefaultAreNotAllowed 2.1403 + Moose::Exception::BuilderDoesNotExist 2.1403 + Moose::Exception::BuilderMethodNotSupportedForAttribute 2.1403 + Moose::Exception::BuilderMethodNotSupportedForInlineAttribute 2.1403 + Moose::Exception::BuilderMustBeAMethodName 2.1403 + Moose::Exception::CallingMethodOnAnImmutableInstance 2.1403 + Moose::Exception::CallingReadOnlyMethodOnAnImmutableInstance 2.1403 + Moose::Exception::CanExtendOnlyClasses 2.1403 + Moose::Exception::CanOnlyConsumeRole 2.1403 + Moose::Exception::CanOnlyWrapBlessedCode 2.1403 + Moose::Exception::CanReblessOnlyIntoASubclass 2.1403 + Moose::Exception::CanReblessOnlyIntoASuperclass 2.1403 + Moose::Exception::CannotAddAdditionalTypeCoercionsToUnion 2.1403 + Moose::Exception::CannotAddAsAnAttributeToARole 2.1403 + Moose::Exception::CannotApplyBaseClassRolesToRole 2.1403 + Moose::Exception::CannotAssignValueToReadOnlyAccessor 2.1403 + Moose::Exception::CannotAugmentIfLocalMethodPresent 2.1403 + Moose::Exception::CannotAugmentNoSuperMethod 2.1403 + Moose::Exception::CannotAutoDerefWithoutIsa 2.1403 + Moose::Exception::CannotAutoDereferenceTypeConstraint 2.1403 + Moose::Exception::CannotCalculateNativeType 2.1403 + Moose::Exception::CannotCallAnAbstractBaseMethod 2.1403 + Moose::Exception::CannotCallAnAbstractMethod 2.1403 + Moose::Exception::CannotCoerceAWeakRef 2.1403 + Moose::Exception::CannotCoerceAttributeWhichHasNoCoercion 2.1403 + Moose::Exception::CannotCreateHigherOrderTypeWithoutATypeParameter 2.1403 + Moose::Exception::CannotCreateMethodAliasLocalMethodIsPresent 2.1403 + Moose::Exception::CannotCreateMethodAliasLocalMethodIsPresentInClass 2.1403 + Moose::Exception::CannotDelegateLocalMethodIsPresent 2.1403 + Moose::Exception::CannotDelegateWithoutIsa 2.1403 + Moose::Exception::CannotFindDelegateMetaclass 2.1403 + Moose::Exception::CannotFindType 2.1403 + Moose::Exception::CannotFindTypeGivenToMatchOnType 2.1403 + Moose::Exception::CannotFixMetaclassCompatibility 2.1403 + Moose::Exception::CannotGenerateInlineConstraint 2.1403 + Moose::Exception::CannotInitializeMooseMetaRoleComposite 2.1403 + Moose::Exception::CannotInlineTypeConstraintCheck 2.1403 + Moose::Exception::CannotLocatePackageInINC 2.1403 + Moose::Exception::CannotMakeMetaclassCompatible 2.1403 + Moose::Exception::CannotOverrideALocalMethod 2.1403 + Moose::Exception::CannotOverrideBodyOfMetaMethods 2.1403 + Moose::Exception::CannotOverrideLocalMethodIsPresent 2.1403 + Moose::Exception::CannotOverrideNoSuperMethod 2.1403 + Moose::Exception::CannotRegisterUnnamedTypeConstraint 2.1403 + Moose::Exception::CannotUseLazyBuildAndDefaultSimultaneously 2.1403 + Moose::Exception::CircularReferenceInAlso 2.1403 + Moose::Exception::ClassDoesNotHaveInitMeta 2.1403 + Moose::Exception::ClassDoesTheExcludedRole 2.1403 + Moose::Exception::ClassNamesDoNotMatch 2.1403 + Moose::Exception::CloneObjectExpectsAnInstanceOfMetaclass 2.1403 + Moose::Exception::CodeBlockMustBeACodeRef 2.1403 + Moose::Exception::CoercingWithoutCoercions 2.1403 + Moose::Exception::CoercionAlreadyExists 2.1403 + Moose::Exception::CoercionNeedsTypeConstraint 2.1403 + Moose::Exception::ConflictDetectedInCheckRoleExclusions 2.1403 + Moose::Exception::ConflictDetectedInCheckRoleExclusionsInToClass 2.1403 + Moose::Exception::ConstructClassInstanceTakesPackageName 2.1403 + Moose::Exception::CouldNotCreateMethod 2.1403 + Moose::Exception::CouldNotCreateWriter 2.1403 + Moose::Exception::CouldNotEvalConstructor 2.1403 + Moose::Exception::CouldNotEvalDestructor 2.1403 + Moose::Exception::CouldNotFindTypeConstraintToCoerceFrom 2.1403 + Moose::Exception::CouldNotGenerateInlineAttributeMethod 2.1403 + Moose::Exception::CouldNotLocateTypeConstraintForUnion 2.1403 + Moose::Exception::CouldNotParseType 2.1403 + Moose::Exception::CreateMOPClassTakesArrayRefOfAttributes 2.1403 + Moose::Exception::CreateMOPClassTakesArrayRefOfSuperclasses 2.1403 + Moose::Exception::CreateMOPClassTakesHashRefOfMethods 2.1403 + Moose::Exception::CreateTakesArrayRefOfRoles 2.1403 + Moose::Exception::CreateTakesHashRefOfAttributes 2.1403 + Moose::Exception::CreateTakesHashRefOfMethods 2.1403 + Moose::Exception::DefaultToMatchOnTypeMustBeCodeRef 2.1403 + Moose::Exception::DelegationToAClassWhichIsNotLoaded 2.1403 + Moose::Exception::DelegationToARoleWhichIsNotLoaded 2.1403 + Moose::Exception::DelegationToATypeWhichIsNotAClass 2.1403 + Moose::Exception::DoesRequiresRoleName 2.1403 + Moose::Exception::EnumCalledWithAnArrayRefAndAdditionalArgs 2.1403 + Moose::Exception::EnumValuesMustBeString 2.1403 + Moose::Exception::ExtendsMissingArgs 2.1403 + Moose::Exception::HandlesMustBeAHashRef 2.1403 + Moose::Exception::IllegalInheritedOptions 2.1403 + Moose::Exception::IllegalMethodTypeToAddMethodModifier 2.1403 + Moose::Exception::IncompatibleMetaclassOfSuperclass 2.1403 + Moose::Exception::InitMetaRequiresClass 2.1403 + Moose::Exception::InitializeTakesUnBlessedPackageName 2.1403 + Moose::Exception::InstanceBlessedIntoWrongClass 2.1403 + Moose::Exception::InstanceMustBeABlessedReference 2.1403 + Moose::Exception::InvalidArgPassedToMooseUtilMetaRole 2.1403 + Moose::Exception::InvalidArgumentToMethod 2.1403 + Moose::Exception::InvalidArgumentsToTraitAliases 2.1403 + Moose::Exception::InvalidBaseTypeGivenToCreateParameterizedTypeConstraint 2.1403 + Moose::Exception::InvalidHandleValue 2.1403 + Moose::Exception::InvalidHasProvidedInARole 2.1403 + Moose::Exception::InvalidNameForType 2.1403 + Moose::Exception::InvalidOverloadOperator 2.1403 + Moose::Exception::InvalidRoleApplication 2.1403 + Moose::Exception::InvalidTypeConstraint 2.1403 + Moose::Exception::InvalidTypeGivenToCreateParameterizedTypeConstraint 2.1403 + Moose::Exception::InvalidValueForIs 2.1403 + Moose::Exception::IsaDoesNotDoTheRole 2.1403 + Moose::Exception::IsaLacksDoesMethod 2.1403 + Moose::Exception::LazyAttributeNeedsADefault 2.1403 + Moose::Exception::Legacy 2.1403 + Moose::Exception::MOPAttributeNewNeedsAttributeName 2.1403 + Moose::Exception::MatchActionMustBeACodeRef 2.1403 + Moose::Exception::MessageParameterMustBeCodeRef 2.1403 + Moose::Exception::MetaclassIsAClassNotASubclassOfGivenMetaclass 2.1403 + Moose::Exception::MetaclassIsARoleNotASubclassOfGivenMetaclass 2.1403 + Moose::Exception::MetaclassIsNotASubclassOfGivenMetaclass 2.1403 + Moose::Exception::MetaclassMustBeASubclassOfMooseMetaClass 2.1403 + Moose::Exception::MetaclassMustBeASubclassOfMooseMetaRole 2.1403 + Moose::Exception::MetaclassMustBeDerivedFromClassMOPClass 2.1403 + Moose::Exception::MetaclassNotLoaded 2.1403 + Moose::Exception::MetaclassTypeIncompatible 2.1403 + Moose::Exception::MethodExpectedAMetaclassObject 2.1403 + Moose::Exception::MethodExpectsFewerArgs 2.1403 + Moose::Exception::MethodExpectsMoreArgs 2.1403 + Moose::Exception::MethodModifierNeedsMethodName 2.1403 + Moose::Exception::MethodNameConflictInRoles 2.1403 + Moose::Exception::MethodNameNotFoundInInheritanceHierarchy 2.1403 + Moose::Exception::MethodNameNotGiven 2.1403 + Moose::Exception::MustDefineAMethodName 2.1403 + Moose::Exception::MustDefineAnAttributeName 2.1403 + Moose::Exception::MustDefineAnOverloadOperator 2.1403 + Moose::Exception::MustHaveAtLeastOneValueToEnumerate 2.1403 + Moose::Exception::MustPassAHashOfOptions 2.1403 + Moose::Exception::MustPassAMooseMetaRoleInstanceOrSubclass 2.1403 + Moose::Exception::MustPassAPackageNameOrAnExistingClassMOPPackageInstance 2.1403 + Moose::Exception::MustPassEvenNumberOfArguments 2.1403 + Moose::Exception::MustPassEvenNumberOfAttributeOptions 2.1403 + Moose::Exception::MustProvideANameForTheAttribute 2.1403 + Moose::Exception::MustSpecifyAtleastOneMethod 2.1403 + Moose::Exception::MustSpecifyAtleastOneRole 2.1403 + Moose::Exception::MustSpecifyAtleastOneRoleToApplicant 2.1403 + Moose::Exception::MustSupplyAClassMOPAttributeInstance 2.1403 + Moose::Exception::MustSupplyADelegateToMethod 2.1403 + Moose::Exception::MustSupplyAMetaclass 2.1403 + Moose::Exception::MustSupplyAMooseMetaAttributeInstance 2.1403 + Moose::Exception::MustSupplyAnAccessorTypeToConstructWith 2.1403 + Moose::Exception::MustSupplyAnAttributeToConstructWith 2.1403 + Moose::Exception::MustSupplyArrayRefAsCurriedArguments 2.1403 + Moose::Exception::MustSupplyPackageNameAndName 2.1403 + Moose::Exception::NeedsTypeConstraintUnionForTypeCoercionUnion 2.1403 + Moose::Exception::NeitherAttributeNorAttributeNameIsGiven 2.1403 + Moose::Exception::NeitherClassNorClassNameIsGiven 2.1403 + Moose::Exception::NeitherRoleNorRoleNameIsGiven 2.1403 + Moose::Exception::NeitherTypeNorTypeNameIsGiven 2.1403 + Moose::Exception::NoAttributeFoundInSuperClass 2.1403 + Moose::Exception::NoBodyToInitializeInAnAbstractBaseClass 2.1403 + Moose::Exception::NoCasesMatched 2.1403 + Moose::Exception::NoConstraintCheckForTypeConstraint 2.1403 + Moose::Exception::NoDestructorClassSpecified 2.1403 + Moose::Exception::NoImmutableTraitSpecifiedForClass 2.1403 + Moose::Exception::NoParentGivenToSubtype 2.1403 + Moose::Exception::OnlyInstancesCanBeCloned 2.1403 + Moose::Exception::OperatorIsRequired 2.1403 + Moose::Exception::OverloadConflictInSummation 2.1403 + Moose::Exception::OverloadRequiresAMetaClass 2.1403 + Moose::Exception::OverloadRequiresAMetaMethod 2.1403 + Moose::Exception::OverloadRequiresAMetaOverload 2.1403 + Moose::Exception::OverloadRequiresAMethodNameOrCoderef 2.1403 + Moose::Exception::OverloadRequiresAnOperator 2.1403 + Moose::Exception::OverloadRequiresNamesForCoderef 2.1403 + Moose::Exception::OverrideConflictInComposition 2.1403 + Moose::Exception::OverrideConflictInSummation 2.1403 + Moose::Exception::PackageDoesNotUseMooseExporter 2.1403 + Moose::Exception::PackageNameAndNameParamsNotGivenToWrap 2.1403 + Moose::Exception::PackagesAndModulesAreNotCachable 2.1403 + Moose::Exception::ParameterIsNotSubtypeOfParent 2.1403 + Moose::Exception::ReferencesAreNotAllowedAsDefault 2.1403 + Moose::Exception::RequiredAttributeLacksInitialization 2.1403 + Moose::Exception::RequiredAttributeNeedsADefault 2.1403 + Moose::Exception::RequiredMethodsImportedByClass 2.1403 + Moose::Exception::RequiredMethodsNotImplementedByClass 2.1403 + Moose::Exception::Role::Attribute 2.1403 + Moose::Exception::Role::AttributeName 2.1403 + Moose::Exception::Role::Class 2.1403 + Moose::Exception::Role::EitherAttributeOrAttributeName 2.1403 + Moose::Exception::Role::Instance 2.1403 + Moose::Exception::Role::InstanceClass 2.1403 + Moose::Exception::Role::InvalidAttributeOptions 2.1403 + Moose::Exception::Role::Method 2.1403 + Moose::Exception::Role::ParamsHash 2.1403 + Moose::Exception::Role::Role 2.1403 + Moose::Exception::Role::RoleForCreate 2.1403 + Moose::Exception::Role::RoleForCreateMOPClass 2.1403 + Moose::Exception::Role::TypeConstraint 2.1403 + Moose::Exception::RoleDoesTheExcludedRole 2.1403 + Moose::Exception::RoleExclusionConflict 2.1403 + Moose::Exception::RoleNameRequired 2.1403 + Moose::Exception::RoleNameRequiredForMooseMetaRole 2.1403 + Moose::Exception::RolesDoNotSupportAugment 2.1403 + Moose::Exception::RolesDoNotSupportExtends 2.1403 + Moose::Exception::RolesDoNotSupportInner 2.1403 + Moose::Exception::RolesDoNotSupportRegexReferencesForMethodModifiers 2.1403 + Moose::Exception::RolesInCreateTakesAnArrayRef 2.1403 + Moose::Exception::RolesListMustBeInstancesOfMooseMetaRole 2.1403 + Moose::Exception::SingleParamsToNewMustBeHashRef 2.1403 + Moose::Exception::TriggerMustBeACodeRef 2.1403 + Moose::Exception::TypeConstraintCannotBeUsedForAParameterizableType 2.1403 + Moose::Exception::TypeConstraintIsAlreadyCreated 2.1403 + Moose::Exception::TypeParameterMustBeMooseMetaType 2.1403 + Moose::Exception::UnableToCanonicalizeHandles 2.1403 + Moose::Exception::UnableToCanonicalizeNonRolePackage 2.1403 + Moose::Exception::UnableToRecognizeDelegateMetaclass 2.1403 + Moose::Exception::UndefinedHashKeysPassedToMethod 2.1403 + Moose::Exception::UnionCalledWithAnArrayRefAndAdditionalArgs 2.1403 + Moose::Exception::UnionTakesAtleastTwoTypeNames 2.1403 + Moose::Exception::ValidationFailedForInlineTypeConstraint 2.1403 + Moose::Exception::ValidationFailedForTypeConstraint 2.1403 + Moose::Exception::WrapTakesACodeRefToBless 2.1403 + Moose::Exception::WrongTypeConstraintGiven 2.1403 + Moose::Exporter 2.1403 + Moose::Meta::Attribute 2.1403 + Moose::Meta::Attribute::Native 2.1403 + Moose::Meta::Attribute::Native::Trait undef + Moose::Meta::Attribute::Native::Trait::Array 2.1403 + Moose::Meta::Attribute::Native::Trait::Bool 2.1403 + Moose::Meta::Attribute::Native::Trait::Code 2.1403 + Moose::Meta::Attribute::Native::Trait::Counter 2.1403 + Moose::Meta::Attribute::Native::Trait::Hash 2.1403 + Moose::Meta::Attribute::Native::Trait::Number 2.1403 + Moose::Meta::Attribute::Native::Trait::String 2.1403 + Moose::Meta::Class 2.1403 + Moose::Meta::Class::Immutable::Trait undef + Moose::Meta::Instance 2.1403 + Moose::Meta::Method 2.1403 + Moose::Meta::Method::Accessor 2.1403 + Moose::Meta::Method::Accessor::Native undef + Moose::Meta::Method::Accessor::Native::Array undef + Moose::Meta::Method::Accessor::Native::Array::Writer undef + Moose::Meta::Method::Accessor::Native::Array::accessor undef + Moose::Meta::Method::Accessor::Native::Array::clear undef + Moose::Meta::Method::Accessor::Native::Array::count undef + Moose::Meta::Method::Accessor::Native::Array::delete undef + Moose::Meta::Method::Accessor::Native::Array::elements undef + Moose::Meta::Method::Accessor::Native::Array::first undef + Moose::Meta::Method::Accessor::Native::Array::first_index undef + Moose::Meta::Method::Accessor::Native::Array::get undef + Moose::Meta::Method::Accessor::Native::Array::grep undef + Moose::Meta::Method::Accessor::Native::Array::insert undef + Moose::Meta::Method::Accessor::Native::Array::is_empty undef + Moose::Meta::Method::Accessor::Native::Array::join undef + Moose::Meta::Method::Accessor::Native::Array::map undef + Moose::Meta::Method::Accessor::Native::Array::natatime undef + Moose::Meta::Method::Accessor::Native::Array::pop undef + Moose::Meta::Method::Accessor::Native::Array::push undef + Moose::Meta::Method::Accessor::Native::Array::reduce undef + Moose::Meta::Method::Accessor::Native::Array::set undef + Moose::Meta::Method::Accessor::Native::Array::shallow_clone undef + Moose::Meta::Method::Accessor::Native::Array::shift undef + Moose::Meta::Method::Accessor::Native::Array::shuffle undef + Moose::Meta::Method::Accessor::Native::Array::sort undef + Moose::Meta::Method::Accessor::Native::Array::sort_in_place undef + Moose::Meta::Method::Accessor::Native::Array::splice undef + Moose::Meta::Method::Accessor::Native::Array::uniq undef + Moose::Meta::Method::Accessor::Native::Array::unshift undef + Moose::Meta::Method::Accessor::Native::Bool::not undef + Moose::Meta::Method::Accessor::Native::Bool::set undef + Moose::Meta::Method::Accessor::Native::Bool::toggle undef + Moose::Meta::Method::Accessor::Native::Bool::unset undef + Moose::Meta::Method::Accessor::Native::Code::execute undef + Moose::Meta::Method::Accessor::Native::Code::execute_method undef + Moose::Meta::Method::Accessor::Native::Collection undef + Moose::Meta::Method::Accessor::Native::Counter::Writer undef + Moose::Meta::Method::Accessor::Native::Counter::dec undef + Moose::Meta::Method::Accessor::Native::Counter::inc undef + Moose::Meta::Method::Accessor::Native::Counter::reset undef + Moose::Meta::Method::Accessor::Native::Counter::set undef + Moose::Meta::Method::Accessor::Native::Hash undef + Moose::Meta::Method::Accessor::Native::Hash::Writer undef + Moose::Meta::Method::Accessor::Native::Hash::accessor undef + Moose::Meta::Method::Accessor::Native::Hash::clear undef + Moose::Meta::Method::Accessor::Native::Hash::count undef + Moose::Meta::Method::Accessor::Native::Hash::defined undef + Moose::Meta::Method::Accessor::Native::Hash::delete undef + Moose::Meta::Method::Accessor::Native::Hash::elements undef + Moose::Meta::Method::Accessor::Native::Hash::exists undef + Moose::Meta::Method::Accessor::Native::Hash::get undef + Moose::Meta::Method::Accessor::Native::Hash::is_empty undef + Moose::Meta::Method::Accessor::Native::Hash::keys undef + Moose::Meta::Method::Accessor::Native::Hash::kv undef + Moose::Meta::Method::Accessor::Native::Hash::set undef + Moose::Meta::Method::Accessor::Native::Hash::shallow_clone undef + Moose::Meta::Method::Accessor::Native::Hash::values undef + Moose::Meta::Method::Accessor::Native::Number::abs undef + Moose::Meta::Method::Accessor::Native::Number::add undef + Moose::Meta::Method::Accessor::Native::Number::div undef + Moose::Meta::Method::Accessor::Native::Number::mod undef + Moose::Meta::Method::Accessor::Native::Number::mul undef + Moose::Meta::Method::Accessor::Native::Number::set undef + Moose::Meta::Method::Accessor::Native::Number::sub undef + Moose::Meta::Method::Accessor::Native::Reader undef + Moose::Meta::Method::Accessor::Native::String::append undef + Moose::Meta::Method::Accessor::Native::String::chomp undef + Moose::Meta::Method::Accessor::Native::String::chop undef + Moose::Meta::Method::Accessor::Native::String::clear undef + Moose::Meta::Method::Accessor::Native::String::inc undef + Moose::Meta::Method::Accessor::Native::String::length undef + Moose::Meta::Method::Accessor::Native::String::match undef + Moose::Meta::Method::Accessor::Native::String::prepend undef + Moose::Meta::Method::Accessor::Native::String::replace undef + Moose::Meta::Method::Accessor::Native::String::substr undef + Moose::Meta::Method::Accessor::Native::Writer undef + Moose::Meta::Method::Augmented 2.1403 + Moose::Meta::Method::Constructor 2.1403 + Moose::Meta::Method::Delegation 2.1403 + Moose::Meta::Method::Destructor 2.1403 + Moose::Meta::Method::Meta 2.1403 + Moose::Meta::Method::Overridden 2.1403 + Moose::Meta::Mixin::AttributeCore undef + Moose::Meta::Object::Trait undef + Moose::Meta::Role 2.1403 + Moose::Meta::Role::Application 2.1403 + Moose::Meta::Role::Application::RoleSummation 2.1403 + Moose::Meta::Role::Application::ToClass 2.1403 + Moose::Meta::Role::Application::ToInstance 2.1403 + Moose::Meta::Role::Application::ToRole 2.1403 + Moose::Meta::Role::Attribute 2.1403 + Moose::Meta::Role::Composite 2.1403 + Moose::Meta::Role::Method 2.1403 + Moose::Meta::Role::Method::Conflicting 2.1403 + Moose::Meta::Role::Method::Required 2.1403 + Moose::Meta::TypeCoercion 2.1403 + Moose::Meta::TypeCoercion::Union 2.1403 + Moose::Meta::TypeConstraint 2.1403 + Moose::Meta::TypeConstraint::Class 2.1403 + Moose::Meta::TypeConstraint::DuckType 2.1403 + Moose::Meta::TypeConstraint::Enum 2.1403 + Moose::Meta::TypeConstraint::Parameterizable 2.1403 + Moose::Meta::TypeConstraint::Parameterized 2.1403 + Moose::Meta::TypeConstraint::Registry 2.1403 + Moose::Meta::TypeConstraint::Role 2.1403 + Moose::Meta::TypeConstraint::Union 2.1403 + Moose::Object 2.1403 + Moose::Role 2.1403 + Moose::Util 2.1403 + Moose::Util::MetaRole 2.1403 + Moose::Util::TypeConstraints 2.1403 + Moose::Util::TypeConstraints::Builtins undef + Test::Moose 2.1403 + metaclass 2.1403 + oose 2.1403 requirements: Carp 1.22 Class::Load 0.09 Class::Load::XS 0.01 Data::OptList 0.107 Devel::GlobalDestruction 0 + Devel::OverloadInfo 0.002 + Devel::StackTrace 1.33 Dist::CheckConflicts 0.02 Eval::Closure 0.04 - ExtUtils::MakeMaker 6.30 + ExtUtils::CBuilder 0.27 + ExtUtils::MakeMaker 0 + File::Spec 0 List::MoreUtils 0.28 + List::Util 1.33 MRO::Compat 0.05 + Module::Runtime 0.014 + Module::Runtime::Conflicts 0 Package::DeprecationManager 0.11 Package::Stash 0.32 Package::Stash::XS 0.24 @@ -4765,10 +4923,10 @@ DISTRIBUTIONS Sub::Exporter 0.980 Sub::Name 0.05 Task::Weaken 0 - Test::Fatal 0.001 - Test::More 0.88 - Test::Requires 0.05 - Try::Tiny 0.02 + Try::Tiny 0.17 + parent 0.223 + strict 1.03 + warnings 1.03 MooseX-Aliases-0.11 pathname: D/DO/DOY/MooseX-Aliases-0.11.tar.gz provides: @@ -5156,31 +5314,6 @@ DISTRIBUTIONS perl 5.006 strict 0 warnings 0 - MooseX-UndefTolerant-0.19 - pathname: E/ET/ETHER/MooseX-UndefTolerant-0.19.tar.gz - provides: - MooseX::UndefTolerant 0.19 - MooseX::UndefTolerant::ApplicationToClass 0.19 - MooseX::UndefTolerant::ApplicationToRole 0.19 - MooseX::UndefTolerant::Attribute 0.19 - MooseX::UndefTolerant::Class 0.19 - MooseX::UndefTolerant::Composite 0.19 - MooseX::UndefTolerant::Constructor 0.19 - MooseX::UndefTolerant::Role 0.19 - requirements: - ExtUtils::MakeMaker 6.30 - File::Find 0 - File::Temp 0 - Moose 0.89 - Moose::Exporter 0 - Moose::Role 0 - Test::CheckDeps 0.002 - Test::Fatal 0 - Test::Moose 0 - Test::More 0.88 - Test::NoWarnings 1.04 - strict 0 - warnings 0 Mouse-2.3.0 pathname: G/GF/GFUJI/Mouse-2.3.0.tar.gz provides: @@ -5571,26 +5704,6 @@ DISTRIBUTIONS Test::Trap 0 overload 0 parent 0 - PAUSE-Permissions-0.10 - pathname: N/NE/NEILB/PAUSE-Permissions-0.10.tar.gz - provides: - PAUSE::Permissions 0.10 - PAUSE::Permissions::Entry 0.10 - PAUSE::Permissions::EntryIterator 0.10 - PAUSE::Permissions::Module 0.10 - PAUSE::Permissions::ModuleIterator 0.10 - requirements: - Carp 0 - ExtUtils::MakeMaker 0 - File::HomeDir 0 - File::Spec::Functions 0 - HTTP::Date 0 - HTTP::Tiny 0 - Moo 0 - autodie 0 - feature 0 - strict 0 - warnings 0 POSIX-strftime-Compiler-0.31 pathname: K/KA/KAZEBURO/POSIX-strftime-Compiler-0.31.tar.gz provides: @@ -7102,6 +7215,13 @@ DISTRIBUTIONS requirements: ExtUtils::MakeMaker 0 Test::More 0.88 + Sub-Identify-0.10 + pathname: R/RG/RGARCIA/Sub-Identify-0.10.tar.gz + provides: + Sub::Identify 0.10 + requirements: + ExtUtils::MakeMaker 0 + Test::More 0 Sub-Install-0.927 pathname: R/RJ/RJBS/Sub-Install-0.927.tar.gz provides: From 8f7afbc3c979ddf38ac9cc882f7b62a6c7e31919 Mon Sep 17 00:00:00 2001 From: Andreea Pirvulescu Date: Thu, 19 Mar 2015 12:46:29 +0200 Subject: [PATCH 012/329] change directory value format --- t/release/meta-provides.t | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/t/release/meta-provides.t b/t/release/meta-provides.t index cb63040cb..3bcd6ed62 100644 --- a/t/release/meta-provides.t +++ b/t/release/meta-provides.t @@ -26,7 +26,7 @@ test_release( and => [ { term => { 'author' => $release->author } }, { term => { 'release' => $release->name } }, - { term => { 'directory' => \0 } }, + { term => { 'directory' => 0 } }, { prefix => { 'path' => 'lib/' } }, ] } From 207e40b25625e7b0555dca8e555d8dd38f390e92 Mon Sep 17 00:00:00 2001 From: Andreea Pirvulescu Date: Thu, 19 Mar 2015 14:03:05 +0200 Subject: [PATCH 013/329] fix query for release files --- lib/MetaCPAN/Script/Latest.pm | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/lib/MetaCPAN/Script/Latest.pm b/lib/MetaCPAN/Script/Latest.pm index a0ed5a7b9..f448db5a8 100644 --- a/lib/MetaCPAN/Script/Latest.pm +++ b/lib/MetaCPAN/Script/Latest.pm @@ -189,14 +189,10 @@ sub reindex { # Get all the files for the release. my $scroll = $self->index->type("file")->size(1000)->filter( { - query => { - filtered => { - and => [ - { term => { 'file.release' => $source->{release} } }, - { term => { 'file.author' => $source->{author} } } - ] - } - } + and => [ + { term => { 'file.release' => $source->{release} } }, + { term => { 'file.author' => $source->{author} } } + ] } )->raw->scroll; From 15cd1d7775a70585dd2d6fa17265dbe592088fbf Mon Sep 17 00:00:00 2001 From: Andreea Pirvulescu Date: Thu, 19 Mar 2015 14:30:36 +0200 Subject: [PATCH 014/329] use \ for attributes values --- t/release/documentation-not-readme.t | 2 +- t/release/meta-provides.t | 4 ++-- t/release/pod-examples.t | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/t/release/documentation-not-readme.t b/t/release/documentation-not-readme.t index 994711f86..2e4878269 100644 --- a/t/release/documentation-not-readme.t +++ b/t/release/documentation-not-readme.t @@ -9,7 +9,7 @@ use MetaCPAN::TestHelpers; test_release( 'RWSTAUNER/Documentation-Not-Readme-0.01', { - first => 1, + first => \1, extra_tests => \&test_modules, } ); diff --git a/t/release/meta-provides.t b/t/release/meta-provides.t index 3bcd6ed62..1c49fac9b 100644 --- a/t/release/meta-provides.t +++ b/t/release/meta-provides.t @@ -12,8 +12,8 @@ test_release( name => 'Meta-Provides-1.01', author => 'RWSTAUNER', abstract => 'has provides key in meta', - authorized => 1, - first => 1, + authorized => \1, + first => \1, provides => [ 'Meta::Provides', ], status => 'latest', extra_tests => sub { diff --git a/t/release/pod-examples.t b/t/release/pod-examples.t index d836a9da8..ff0bdf48a 100644 --- a/t/release/pod-examples.t +++ b/t/release/pod-examples.t @@ -9,7 +9,7 @@ use MetaCPAN::TestHelpers; test_release( 'RWSTAUNER/Pod-Examples-99', { - first => 1, + first => \1, extra_tests => \&test_pod_examples, } ); From d178a7aebef0f331a218e09dda6f2a4888134ed4 Mon Sep 17 00:00:00 2001 From: Andreea Pirvulescu Date: Thu, 19 Mar 2015 15:31:19 +0200 Subject: [PATCH 015/329] use function_score in autocomplete --- lib/MetaCPAN/Document/File.pm | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/lib/MetaCPAN/Document/File.pm b/lib/MetaCPAN/Document/File.pm index 785194761..400729b13 100644 --- a/lib/MetaCPAN/Document/File.pm +++ b/lib/MetaCPAN/Document/File.pm @@ -1015,9 +1015,12 @@ sub autocomplete { # As of 2013-10-27 we are still using 0.20.2 in production. return $self->query( { - custom_score => { - query => { bool => { should => $should } }, - script => "_score - doc['documentation'].value.length()/100", + function_score => { + query => { bool => { should => $should } }, + script_score => { + script => + "_score - doc['documentation'].value.length()/100", + } } } )->filter( From a036200d241b59ec3a8d26df7ae47b24f2363850 Mon Sep 17 00:00:00 2001 From: Andreea Pirvulescu Date: Thu, 19 Mar 2015 15:37:15 +0200 Subject: [PATCH 016/329] use simple_query_string for query in autocomplete --- lib/MetaCPAN/Document/File.pm | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/lib/MetaCPAN/Document/File.pm b/lib/MetaCPAN/Document/File.pm index 400729b13..3e9c153bf 100644 --- a/lib/MetaCPAN/Document/File.pm +++ b/lib/MetaCPAN/Document/File.pm @@ -1006,8 +1006,14 @@ sub autocomplete { my @query = split( /\s+/, $query ); my $should = [ map { - { field => { 'documentation.analyzed' => "$_*" } }, - { field => { 'documentation.camelcase' => "$_*" } } + { + simple_query_string => { + fields => [ + 'documentation.analyzed', 'documentation.camelcase' + ], + query => "$_*" + } + } } grep {$_} @query ]; From 62046336b93c2a155ee52c3eeb16e41e6e5c9381 Mon Sep 17 00:00:00 2001 From: Andreea Pirvulescu Date: Fri, 20 Mar 2015 04:07:07 +0200 Subject: [PATCH 017/329] make arrayref to pod_lines --- t/release/badpod.t | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/t/release/badpod.t b/t/release/badpod.t index 2f35ced04..e0fd0280d 100644 --- a/t/release/badpod.t +++ b/t/release/badpod.t @@ -36,7 +36,7 @@ sub test_bad_pod { is $file->sloc, 3, 'sloc'; is $file->slop, 4, 'slop'; - is_deeply $file->pod_lines, [ [ 5, 7 ], ], 'no pod_lines'; + is_deeply @{ $file->pod_lines }, [ [ 5, 7 ], ], 'no pod_lines'; is ${ $file->pod }, From 9666d1c946efbab99cc54855010d4048d03a2075 Mon Sep 17 00:00:00 2001 From: Andreea Pirvulescu Date: Sun, 22 Mar 2015 19:16:32 +0200 Subject: [PATCH 018/329] chaotic behaviour when testing for pod_lines-debug in all releases --- t/release/badpod.t | 8 ++++++++ t/release/binary-data.t | 3 +++ t/release/local-lib.t | 2 ++ t/release/oops-locallib.t | 4 +++- t/release/pod-with-data-token.t | 2 ++ t/release/pod-with-generator.t | 2 ++ 6 files changed, 20 insertions(+), 1 deletion(-) diff --git a/t/release/badpod.t b/t/release/badpod.t index e0fd0280d..095b87e03 100644 --- a/t/release/badpod.t +++ b/t/release/badpod.t @@ -36,7 +36,15 @@ sub test_bad_pod { is $file->sloc, 3, 'sloc'; is $file->slop, 4, 'slop'; +<<<<<<< HEAD is_deeply @{ $file->pod_lines }, [ [ 5, 7 ], ], 'no pod_lines'; +||||||| parent of 55fb395... chaotic behaviour when testing for pod_lines-debug in all releases + p $file->pod_lines; + is_deeply $file->pod_lines, [ [ 5, 7 ], ], 'no pod_lines'; +======= + p $file->{pod_lines}; + is_deeply $file->{pod_lines}, [ [ 5, 7 ], ], 'no pod_lines'; +>>>>>>> 55fb395... chaotic behaviour when testing for pod_lines-debug in all releases is ${ $file->pod }, diff --git a/t/release/binary-data.t b/t/release/binary-data.t index e475f9bac..a03cf3dc5 100644 --- a/t/release/binary-data.t +++ b/t/release/binary-data.t @@ -2,6 +2,7 @@ use Test::More; use strict; use warnings; +use DDP; use lib 't/lib'; use MetaCPAN::TestHelpers; @@ -49,6 +50,7 @@ sub test_binary_data { is $file->sloc, 4, 'sloc'; is $file->slop, 0, 'slop'; + p $file->{pod_lines}; is_deeply $file->{pod_lines}, [], 'no pod_lines'; my $binary = $self->file_content($file); @@ -63,6 +65,7 @@ sub test_binary_data { is $file->sloc, 4, 'sloc'; is $file->slop, 7, 'slop'; + p $file->{pod_lines}; is_deeply $file->{pod_lines}, [ [ 5, 5 ], [ 22, 6 ], ], 'pod_lines'; my $binary = $self->file_content($file); diff --git a/t/release/local-lib.t b/t/release/local-lib.t index 2cab35cae..d2e646843 100644 --- a/t/release/local-lib.t +++ b/t/release/local-lib.t @@ -2,6 +2,7 @@ use Test::More; use strict; use warnings; +use DDP; use lib 't/lib'; use MetaCPAN::TestHelpers; @@ -37,6 +38,7 @@ test_release( is $file->sloc, 3, 'sloc'; is $file->slop, 2, 'slop'; + p $file->{pod_lines}; is_deeply $file->{pod_lines}, [ [ 4, 3 ] ], 'pod_lines'; is $file->abstract, q[Legitimate module], 'abstract'; diff --git a/t/release/oops-locallib.t b/t/release/oops-locallib.t index 4e4b76cac..b6f98d6e3 100644 --- a/t/release/oops-locallib.t +++ b/t/release/oops-locallib.t @@ -2,6 +2,7 @@ use Test::More; use strict; use warnings; +use DDP; use lib 't/lib'; use MetaCPAN::TestHelpers; @@ -47,7 +48,8 @@ test_release( is $file->sloc, 2, 'sloc'; is $file->slop, 2, 'slop'; - is_deeply $file->{pod_lines}, [ [ 4, 3 ] ], 'pod_lines'; + p $file->{pod_lines} is_deeply $file->{pod_lines}, + [ [ 4, 3 ] ], 'pod_lines'; is $file->abstract, q[should not have been included], 'abstract'; diff --git a/t/release/pod-with-data-token.t b/t/release/pod-with-data-token.t index 34adf15a7..90786c3fe 100644 --- a/t/release/pod-with-data-token.t +++ b/t/release/pod-with-data-token.t @@ -2,6 +2,7 @@ use Test::More; use strict; use warnings; +use DDP; use lib 't/lib'; use MetaCPAN::TestHelpers; @@ -37,6 +38,7 @@ sub test_content { is $mod->sloc, 5, 'sloc'; is $mod->slop, 17, 'slop'; + p $mod->{pod_lines}; is_deeply $mod->{pod_lines}, #<<< [ diff --git a/t/release/pod-with-generator.t b/t/release/pod-with-generator.t index fe0771780..3b8a64e47 100644 --- a/t/release/pod-with-generator.t +++ b/t/release/pod-with-generator.t @@ -2,6 +2,7 @@ use Test::More; use strict; use warnings; +use DDP; use lib 't/lib'; use MetaCPAN::TestHelpers; @@ -37,6 +38,7 @@ sub test_assoc_pod { is $mod->sloc, 3, 'sloc'; is $mod->slop, 5, 'slop'; + p $mod->{pod_lines}; is_deeply $mod->{pod_lines}, [ [ 5, 9 ], ], 'pod lines determined correctly'; From 0d8a5cad2441a706679e3c2bb6e8a0f3cbf4429e Mon Sep 17 00:00:00 2001 From: Andreea Pirvulescu Date: Mon, 23 Mar 2015 16:41:21 +0200 Subject: [PATCH 019/329] get info on test for modules in release files --- t/lib/MetaCPAN/Tests/Release.pm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/t/lib/MetaCPAN/Tests/Release.pm b/t/lib/MetaCPAN/Tests/Release.pm index 4dea00c0a..7e810863d 100644 --- a/t/lib/MetaCPAN/Tests/Release.pm +++ b/t/lib/MetaCPAN/Tests/Release.pm @@ -4,6 +4,7 @@ use Test::More; use HTTP::Request::Common; use List::Util (); use version; +use DPP; with qw( MetaCPAN::Tests::Model @@ -194,6 +195,7 @@ test 'modules in release files' => sub { else { ok( 0, $desc ); } + diag p $got; } is( scalar keys %module_files, 0, 'all module files tested' ) From 66f2caa170eccd93603e1213b3ed2a9051efb41b Mon Sep 17 00:00:00 2001 From: Andreea Pirvulescu Date: Mon, 23 Mar 2015 17:28:55 +0200 Subject: [PATCH 020/329] correct typo --- t/lib/MetaCPAN/Tests/Release.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/t/lib/MetaCPAN/Tests/Release.pm b/t/lib/MetaCPAN/Tests/Release.pm index 7e810863d..1b044e0a5 100644 --- a/t/lib/MetaCPAN/Tests/Release.pm +++ b/t/lib/MetaCPAN/Tests/Release.pm @@ -4,7 +4,7 @@ use Test::More; use HTTP::Request::Common; use List::Util (); use version; -use DPP; +use DDP; with qw( MetaCPAN::Tests::Model From a51df8eebb8c7a338a3b900d32be0301f2155dc0 Mon Sep 17 00:00:00 2001 From: Andreea Pirvulescu Date: Mon, 23 Mar 2015 18:06:10 +0200 Subject: [PATCH 021/329] print signature value --- t/lib/MetaCPAN/Tests/Release.pm | 2 -- t/release/moose.t | 2 ++ 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/t/lib/MetaCPAN/Tests/Release.pm b/t/lib/MetaCPAN/Tests/Release.pm index 1b044e0a5..4dea00c0a 100644 --- a/t/lib/MetaCPAN/Tests/Release.pm +++ b/t/lib/MetaCPAN/Tests/Release.pm @@ -4,7 +4,6 @@ use Test::More; use HTTP::Request::Common; use List::Util (); use version; -use DDP; with qw( MetaCPAN::Tests::Model @@ -195,7 +194,6 @@ test 'modules in release files' => sub { else { ok( 0, $desc ); } - diag p $got; } is( scalar keys %module_files, 0, 'all module files tested' ) diff --git a/t/release/moose.t b/t/release/moose.t index 4f8f19e63..ba1b5b777 100644 --- a/t/release/moose.t +++ b/t/release/moose.t @@ -1,6 +1,7 @@ use strict; use warnings; +use DDP; use MetaCPAN::Server::Test; use Test::More; @@ -86,6 +87,7 @@ $signature = $idx->type('file')->filter( } )->first; ok( !$signature, 'SIGNATURE is not pod' ); +diag p $signature; { my $files = $idx->type('file'); From 6e54e7db669ba2dfbf6d179dd6d6a10a1a486f09 Mon Sep 17 00:00:00 2001 From: Andreea Pirvulescu Date: Tue, 24 Mar 2015 11:52:34 +0200 Subject: [PATCH 022/329] restore value format of directory in meta-provides test --- t/release/meta-provides.t | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/t/release/meta-provides.t b/t/release/meta-provides.t index 1c49fac9b..a69fa75fc 100644 --- a/t/release/meta-provides.t +++ b/t/release/meta-provides.t @@ -26,7 +26,7 @@ test_release( and => [ { term => { 'author' => $release->author } }, { term => { 'release' => $release->name } }, - { term => { 'directory' => 0 } }, + { term => { 'directory' => \0 } }, { prefix => { 'path' => 'lib/' } }, ] } From 700067784d3159394db433f2a9bd6fd182f12d32 Mon Sep 17 00:00:00 2001 From: Andreea Pirvulescu Date: Tue, 14 Apr 2015 01:09:03 +0300 Subject: [PATCH 023/329] sorted results in autocomplete --- t/server/controller/search/autocomplete.t | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/t/server/controller/search/autocomplete.t b/t/server/controller/search/autocomplete.t index cceedded4..208353a4d 100644 --- a/t/server/controller/search/autocomplete.t +++ b/t/server/controller/search/autocomplete.t @@ -15,7 +15,7 @@ test_psgi app, sub { 'GET' ); my $json = decode_json_ok($res); - my $got = [ map { @{ $_->{fields}{documentation} } } + my $got = [ map { $_->{fields}{documentation} } @{ $json->{hits}{hits} } ]; is_deeply $got, [ From 8be30e50e248f0fa9a609da17b133632417d88ba Mon Sep 17 00:00:00 2001 From: Andreea Pirvulescu Date: Tue, 14 Apr 2015 02:40:11 +0300 Subject: [PATCH 024/329] fix CPANTesters error --- lib/MetaCPAN/Script/CPANTesters.pm | 21 ++++++--------------- 1 file changed, 6 insertions(+), 15 deletions(-) diff --git a/lib/MetaCPAN/Script/CPANTesters.pm b/lib/MetaCPAN/Script/CPANTesters.pm index 16a628b9d..ec3854f1d 100644 --- a/lib/MetaCPAN/Script/CPANTesters.pm +++ b/lib/MetaCPAN/Script/CPANTesters.pm @@ -40,14 +40,7 @@ sub index_reports { bunzip2 "$db.bz2" => "$db", AutoClose => 1; - my $scroll = $es->scrolled_search( - index => $index, - type => 'release', - query => { match_all => {} }, - size => 500, - search_type => 'scan', - scroll => '5m', - ); + my $scroll = $self->index->type('release')->size(500)->raw->scroll; my %releases; while ( my $release = $scroll->next ) { @@ -56,8 +49,7 @@ sub index_reports { join( '-', grep {defined} $data->{distribution}, $data->{version} ) - } - = $data; + } = $data; } log_info { 'Opening database file at ' . $db }; @@ -87,22 +79,21 @@ sub index_reports { sub bulk { my ( $self, $bulk ) = @_; - my @bulk; + my $bulk = $self->model->bulk; my $index = $self->index->name; while ( my $data = shift @$bulk ) { - push( - @bulk, + $bulk->add( { index => { index => $index, id => $data->{id}, type => 'release', - data => $data + body => $data } } ); } - $self->es->bulk( \@bulk ); + } __PACKAGE__->meta->make_immutable; From 7cccabc898c336556a87a5fa20a902cfec93683b Mon Sep 17 00:00:00 2001 From: Clinton Gormley Date: Thu, 16 Apr 2015 11:31:40 +0200 Subject: [PATCH 025/329] Replaced calls to scrolled_search() with scroll_helper(), as used in Search::Elasticsearch --- lib/MetaCPAN/Script/Backpan.pm | 2 +- lib/MetaCPAN/Script/Backup.pm | 2 +- lib/MetaCPAN/Script/Pagerank.pm | 4 ++-- lib/MetaCPAN/Script/Session.pm | 2 +- lib/MetaCPAN/Script/Watcher.pm | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/MetaCPAN/Script/Backpan.pm b/lib/MetaCPAN/Script/Backpan.pm index afdecac1a..606ef2335 100644 --- a/lib/MetaCPAN/Script/Backpan.pm +++ b/lib/MetaCPAN/Script/Backpan.pm @@ -39,7 +39,7 @@ sub update_status { my $es = $self->es; $es->trace_calls(1) if $ENV{DEBUG}; - my $scroll = $es->scrolled_search( + my $scroll = $es->scroll_helper( size => 500, scroll => '2m', index => 'cpan_v1', diff --git a/lib/MetaCPAN/Script/Backup.pm b/lib/MetaCPAN/Script/Backup.pm index 1f23ba614..4cc1b7556 100644 --- a/lib/MetaCPAN/Script/Backup.pm +++ b/lib/MetaCPAN/Script/Backup.pm @@ -73,7 +73,7 @@ sub run { $file->dir->mkpath unless ( -e $file->dir ); my $fh = IO::Zlib->new( "$file", 'wb4' ); - my $scroll = $es->scrolled_search( + my $scroll = $es->scroll_helper( index => $self->index->name, $self->type ? ( type => $self->type ) : (), size => $self->size, diff --git a/lib/MetaCPAN/Script/Pagerank.pm b/lib/MetaCPAN/Script/Pagerank.pm index 81d20f013..a7e838367 100644 --- a/lib/MetaCPAN/Script/Pagerank.pm +++ b/lib/MetaCPAN/Script/Pagerank.pm @@ -18,7 +18,7 @@ sub run { log_info {'Loading dependencies ...'}; - my $scroll = $es->scrolled_search( + my $scroll = $es->scroll_helper( index => $self->index->name, type => 'release', query => { @@ -65,7 +65,7 @@ sub run { sub get_recent_modules { my $self = shift; log_info {"Mapping modules to releases ..."}; - my $scroll = $self->es->scrolled_search( + my $scroll = $self->es->scroll_helper( index => $self->index->name, type => 'file', query => { diff --git a/lib/MetaCPAN/Script/Session.pm b/lib/MetaCPAN/Script/Session.pm index fc8baa5aa..434afffaa 100644 --- a/lib/MetaCPAN/Script/Session.pm +++ b/lib/MetaCPAN/Script/Session.pm @@ -11,7 +11,7 @@ with 'MetaCPAN::Role::Script', 'MooseX::Getopt'; sub run { my $self = shift; - my $scroll = $self->es()->scrolled_search( + my $scroll = $self->es()->scroll_helper( size => 10_000, scroll => '1m', index => 'user', diff --git a/lib/MetaCPAN/Script/Watcher.pm b/lib/MetaCPAN/Script/Watcher.pm index 057755297..b8a1a96bf 100644 --- a/lib/MetaCPAN/Script/Watcher.pm +++ b/lib/MetaCPAN/Script/Watcher.pm @@ -185,7 +185,7 @@ sub reindex_release { log_info {"Moving $release->{_source}->{name} to BackPAN"}; my $es = $self->es; - my $scroll = $es->scrolled_search( + my $scroll = $es->scroll_helper( { index => $self->index->name, type => 'file', From b0b841487dbabd6808921a6c7d00bcd9879b35db Mon Sep 17 00:00:00 2001 From: Clinton Gormley Date: Thu, 16 Apr 2015 12:14:19 +0200 Subject: [PATCH 026/329] Updated cpanfile to include PerlIO::gzip v0.19 --- cpanfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpanfile b/cpanfile index 2ac34c46f..63ae37273 100644 --- a/cpanfile +++ b/cpanfile @@ -112,7 +112,7 @@ requires 'Parse::CSV'; requires 'Parse::PMFile', '0.29'; requires 'Path::Class'; requires 'Path::Class::File'; -requires 'PerlIO::gzip'; +requires 'PerlIO::gzip', '0.19'; requires 'Pithub'; requires 'Plack::App::Directory'; requires 'Plack::Handler::Twiggy'; From 77d440433c0179323dd122e75d86a9b9033571b8 Mon Sep 17 00:00:00 2001 From: Clinton Gormley Date: Thu, 16 Apr 2015 13:04:10 +0200 Subject: [PATCH 027/329] Fixed bad conditional when running the release script with --children=0 --- lib/MetaCPAN/Script/Release.pm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/MetaCPAN/Script/Release.pm b/lib/MetaCPAN/Script/Release.pm index 1f6f1d1f2..50581c29f 100644 --- a/lib/MetaCPAN/Script/Release.pm +++ b/lib/MetaCPAN/Script/Release.pm @@ -123,6 +123,7 @@ sub run { log_error {"Dunno what $_ is"}; } } + log_info { scalar @files, " archives found" } if ( @files > 1 ); # build here before we fork @@ -152,7 +153,7 @@ sub run { } } - if ( @pid >= $self->children ) { + if ( @pid > $self->children ) { my $pid = waitpid( -1, 0 ); @pid = grep { $_ != $pid } @pid; } From e678762c58fd378a3d04e905796170878a131c93 Mon Sep 17 00:00:00 2001 From: Clinton Gormley Date: Thu, 16 Apr 2015 13:10:17 +0200 Subject: [PATCH 028/329] Changed t/fakecpan.t to use a running instance of ES, or start a test instance With: * ES=localhost:9200, it will talk to a running instance of ES at that host/port * ES_HOME=some/path, it will start a test instance of ES on port 9900 --- .travis.yml | 6 ++--- t/fakecpan.t | 66 +++++++++++++++++++++++++++++++--------------------- 2 files changed, 42 insertions(+), 30 deletions(-) diff --git a/.travis.yml b/.travis.yml index e068f747c..b9d6f62d4 100644 --- a/.travis.yml +++ b/.travis.yml @@ -21,7 +21,7 @@ env: global: # We use a non-standard port to avoid trashing production # but travis will have it running on the standard port. - - METACPAN_ES_TEST_PORT=9200 + - ES=localhost:9200 # Carton --deployment only works on the same version of perl # that the snapshot was built from. - DEPLOYMENT_PERL_VERSION=5.18 @@ -44,9 +44,7 @@ install: - 'carton install `test "${TRAVIS_PERL_VERSION}" = "${DEPLOYMENT_PERL_VERSION}" && echo " --deployment"`' before_script: - # Show status info for ES to verify that it's working, what version, etc. - - "curl http://localhost:${METACPAN_ES_TEST_PORT}/" - - "perl -i -pe 's/(servers :)9900/$1$ENV{METACPAN_ES_TEST_PORT}/' metacpan_server_testing.conf" + - "perl -i -pe 's/(servers :)9900/localhost:9200/' metacpan_server_testing.conf" script: # Devel::Cover isn't in the cpanfile diff --git a/t/fakecpan.t b/t/fakecpan.t index 9243725ad..5d0a0913d 100644 --- a/t/fakecpan.t +++ b/t/fakecpan.t @@ -1,4 +1,3 @@ - use strict; use warnings; @@ -7,6 +6,33 @@ use lib 't/lib'; # Require version for subtests but let Test::Most do the ->import() use Test::More 0.96 (); use Test::Most; +use Search::Elasticsearch; +use Search::Elasticsearch::TestServer; + +my $server; +my $ES_HOST = $ENV{ES}; + +if ( !$ES_HOST ) { + my $ES_HOME = $ENV{ES_HOME} or die <<"USAGE"; + + Please set \$ENV{ES} to a running instance of Elasticsearch, + eg 'localhost:9200' or set \$ENV{ES_HOME} to the + directory containing Elasticsearch + +USAGE + + $server = Search::Elasticsearch::TestServer->new( + es_home => $ES_HOME, + http_port => 9900, + es_port => 9700, + instances => 1, + "cluster.name" => 'metacpan-test', + ); + + $ES_HOST = $server->start->[0]; +} + +diag "Connecting to Elasticsearch on $ES_HOST"; # Don't warn about Parse::PMFile's exit() use Test::Aggregate::Nested 0.371 (); @@ -29,13 +55,9 @@ use Path::Class qw(dir file); BEGIN { $ENV{EMAIL_SENDER_TRANSPORT} = 'Test' } -my $ES_HOST_PORT = '127.0.0.1:' . ( $ENV{METACPAN_ES_TEST_PORT} ||= 9900 ); - -ok( - my $es = Search::Elasticsearch->new( - nodes => $ES_HOST_PORT, - - # trace_calls => 1, +ok( my $es = Search::Elasticsearch->new( + nodes => $ES_HOST, + ( $ENV{TEST_VERBOSE} ? ( trace_to => 'Stderr' ) : () ) ), 'got ElasticSearch object' ); @@ -43,10 +65,10 @@ ok( diag p $es->cluster->health; diag p $es->nodes->stats; -ok( !$@, "Connected to the ElasticSearch test instance on $ES_HOST_PORT" ) +ok( !$@, "Connected to the ElasticSearch test instance on $ES_HOST" ) or do { diag(<new( - { - source => 't/var/fakecpan/configs', + { source => 't/var/fakecpan/configs', dest => $config->{cpan}, dist_class => $mod_faker, } @@ -113,18 +134,13 @@ copy( file(qw(t var fakecpan 00whois.xml)), file( $config->{cpan}, qw(authors 00whois.xml) ) ); copy( file(qw(t var fakecpan author-1.0.json)), file( $config->{cpan}, qw(authors id M MO MO author-1.0.json) ) ); -copy( - file(qw(t var fakecpan bugs.tsv)), - file( $config->{cpan}, qw(bugs.tsv) ) -); +copy( file(qw(t var fakecpan bugs.tsv)), + file( $config->{cpan}, qw(bugs.tsv) ) ); local @ARGV = ('author'); -ok( MetaCPAN::Script::Author->new_with_options($config)->run, - 'index authors' ); +ok( MetaCPAN::Script::Author->new_with_options($config)->run, 'index authors' ); -ok( - MetaCPAN::Script::Tickets->new_with_options( - { - %$config, +ok( MetaCPAN::Script::Tickets->new_with_options( + { %$config, rt_summary_url => 'file://' . file( $config->{cpan}, 'bugs.tsv' )->absolute, github_issues => 'file://' @@ -147,11 +163,9 @@ sub wait_for_es { } subtest 'Nested tests' => sub { - my $tests = Test::Aggregate::Nested->new( - { + my $tests = Test::Aggregate::Nested->new( { # should we do a glob to get these (and strip out t/var)? - dirs => [ - qw( + dirs => [ qw( t/document t/release t/script From dffd58775b3e9fbe0528c25e7ea0798bb2e34bb8 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Thu, 16 Apr 2015 13:58:15 +0200 Subject: [PATCH 029/329] cat cpanm build_log after Travis failures. --- .travis.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.travis.yml b/.travis.yml index b9d6f62d4..a6e44c92e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -55,6 +55,8 @@ script: after_success: - cover -report coveralls +after_failure: + - cat ~/.cpanm/build.log services: - elasticsearch From 0626f167331179bcb446b2feac500220bb09322b Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Thu, 16 Apr 2015 14:31:54 +0200 Subject: [PATCH 030/329] s/after_failure/after_script/ --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index a6e44c92e..d00792e43 100644 --- a/.travis.yml +++ b/.travis.yml @@ -55,7 +55,7 @@ script: after_success: - cover -report coveralls -after_failure: +after_script: - cat ~/.cpanm/build.log services: From 990408bd2f5c7c566b0030c3af9a648998e03ddb Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Thu, 16 Apr 2015 14:33:23 +0200 Subject: [PATCH 031/329] Update PerlIO::gzip in cpanfile.snapshot. --- cpanfile.snapshot | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cpanfile.snapshot b/cpanfile.snapshot index 4b7a6da60..b8903722b 100644 --- a/cpanfile.snapshot +++ b/cpanfile.snapshot @@ -6478,10 +6478,10 @@ DISTRIBUTIONS Perl::Tidy::Logger 20140328 requirements: ExtUtils::MakeMaker 0 - PerlIO-gzip-0.18 - pathname: N/NW/NWCLARK/PerlIO-gzip-0.18.tar.gz + PerlIO-gzip-0.19 + pathname: N/NW/NWCLARK/PerlIO-gzip-0.19.tar.gz provides: - PerlIO::gzip 0.18 + PerlIO::gzip 0.19 requirements: ExtUtils::MakeMaker 0 PerlIO-utf8_strict-0.004 From b10bd6bedd90db3085d98dcbfcd656a0583a9edb Mon Sep 17 00:00:00 2001 From: Clinton Gormley Date: Thu, 16 Apr 2015 13:12:41 +0200 Subject: [PATCH 032/329] In t/fakecpan.t, use ES_TRACE=1 to turn on ES tracing Too verbose to use with the -v flag to prove --- t/fakecpan.t | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/t/fakecpan.t b/t/fakecpan.t index 5d0a0913d..7b3f2e958 100644 --- a/t/fakecpan.t +++ b/t/fakecpan.t @@ -57,7 +57,7 @@ BEGIN { $ENV{EMAIL_SENDER_TRANSPORT} = 'Test' } ok( my $es = Search::Elasticsearch->new( nodes => $ES_HOST, - ( $ENV{TEST_VERBOSE} ? ( trace_to => 'Stderr' ) : () ) + ( $ENV{ES_TRACE} ? ( trace_to => 'Stderr' ) : () ) ), 'got ElasticSearch object' ); From db97a06cfa692cdee058a79230be9a1cc5bb63b1 Mon Sep 17 00:00:00 2001 From: Clinton Gormley Date: Thu, 16 Apr 2015 13:15:01 +0200 Subject: [PATCH 033/329] Removed tests for t/script - directory no longer exists --- t/fakecpan.t | 1 - 1 file changed, 1 deletion(-) diff --git a/t/fakecpan.t b/t/fakecpan.t index 7b3f2e958..1f192f2bc 100644 --- a/t/fakecpan.t +++ b/t/fakecpan.t @@ -168,7 +168,6 @@ subtest 'Nested tests' => sub { dirs => [ qw( t/document t/release - t/script t/server ) ], From 30585e0eaac0855fb441308284103d68486e544b Mon Sep 17 00:00:00 2001 From: Clinton Gormley Date: Thu, 16 Apr 2015 15:28:12 +0200 Subject: [PATCH 034/329] Ensure that ENV{ES} is passed down through all tests called by fakecpan.t --- etc/metacpan_testing.pl | 2 +- lib/MetaCPAN/Server/Test.pm | 2 +- metacpan_server_testing.conf | 6 +++--- t/fakecpan.t | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/etc/metacpan_testing.pl b/etc/metacpan_testing.pl index 4cb3d3016..21d36f56a 100644 --- a/etc/metacpan_testing.pl +++ b/etc/metacpan_testing.pl @@ -1,5 +1,5 @@ { - es => ':' . ($ENV{METACPAN_ES_TEST_PORT} ||= 9900), + es => ($ENV{ES} || 'localhost:9900'), port => '5900', level => ($ENV{TEST_VERBOSE} ? 'info' : 'warn'), cpan => 't/var/tmp/fakecpan', diff --git a/lib/MetaCPAN/Server/Test.pm b/lib/MetaCPAN/Server/Test.pm index 8cd02ec3f..621284c7c 100644 --- a/lib/MetaCPAN/Server/Test.pm +++ b/lib/MetaCPAN/Server/Test.pm @@ -74,7 +74,7 @@ require MetaCPAN::Model; sub model { MetaCPAN::Model->new( - es => q[:] . ( $ENV{METACPAN_ES_TEST_PORT} ||= 9900 ) ); + es => ( $ENV{ES} ||= 'localhost:9900' ) ); } 1; diff --git a/metacpan_server_testing.conf b/metacpan_server_testing.conf index 716f145e1..d2f7a490b 100644 --- a/metacpan_server_testing.conf +++ b/metacpan_server_testing.conf @@ -2,15 +2,15 @@ cpan t/var/tmp/fakecpan source_base t/var/tmp/source - servers :9900 + servers __ENV(ES)__ - servers :9900 + servers __ENV(ES)__ - servers :9900 + servers __ENV(ES)__ diff --git a/t/fakecpan.t b/t/fakecpan.t index 1f192f2bc..8b7057daa 100644 --- a/t/fakecpan.t +++ b/t/fakecpan.t @@ -29,7 +29,7 @@ USAGE "cluster.name" => 'metacpan-test', ); - $ES_HOST = $server->start->[0]; + $ENV{ES} = $ES_HOST = $server->start->[0]; } diag "Connecting to Elasticsearch on $ES_HOST"; From c48c5895166b7424da112339b8476659e322a4b8 Mon Sep 17 00:00:00 2001 From: Clinton Gormley Date: Fri, 17 Apr 2015 09:44:41 +0200 Subject: [PATCH 035/329] Silenced some redefine warnings in tests --- t/document/file.t | 1 + t/server/controller/diff.t | 14 +++++++++----- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/t/document/file.t b/t/document/file.t index d8c64b662..f0eef7c97 100644 --- a/t/document/file.t +++ b/t/document/file.t @@ -514,6 +514,7 @@ use strict; Foo - mymodule1 abstract POD + no warnings 'redefine'; local *Pod::Text::parse_string_document = sub { die "# [fake pod error]\n"; }; diff --git a/t/server/controller/diff.t b/t/server/controller/diff.t index 674487a0a..62d5dd6d9 100644 --- a/t/server/controller/diff.t +++ b/t/server/controller/diff.t @@ -9,11 +9,15 @@ use lib 't/lib'; use MetaCPAN::TestHelpers; -sub get_ok { - my ( $cb, $url, $desc ) = @_; - ok( my $res = $cb->( GET $url ), $desc || "GET $url" ); - is( $res->code, 200, 'code 200' ); - return $res; +{ + no warnings 'redefine'; + + sub get_ok { + my ( $cb, $url, $desc ) = @_; + ok( my $res = $cb->( GET $url ), $desc || "GET $url" ); + is( $res->code, 200, 'code 200' ); + return $res; + } } sub get_json_ok { From 20e259842612289f4cf10217c00ec2c7510f9c2f Mon Sep 17 00:00:00 2001 From: Clinton Gormley Date: Fri, 17 Apr 2015 09:45:10 +0200 Subject: [PATCH 036/329] Scripting is disabled by default - skip related tests --- t/release/scripts.t | 2 +- t/server/sanitize_query.t | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/t/release/scripts.t b/t/release/scripts.t index ed121fccd..a12312812 100644 --- a/t/release/scripts.t +++ b/t/release/scripts.t @@ -2,7 +2,7 @@ use strict; use warnings; use MetaCPAN::Server::Test; -use Test::More; +use Test::More skip_all => 'Scripting is disabled'; my $model = model(); my $idx = $model->index('cpan'); diff --git a/t/server/sanitize_query.t b/t/server/sanitize_query.t index 4159df491..f30612e65 100644 --- a/t/server/sanitize_query.t +++ b/t/server/sanitize_query.t @@ -5,7 +5,7 @@ use lib 't/lib'; use MetaCPAN::Server::Test; use MetaCPAN::TestHelpers; -use Test::More; +use Test::More skip_all => 'Scripting is disabled'; use URI; sub uri { From 424a0517ec5b6fccbdae7f75306a35b538679a74 Mon Sep 17 00:00:00 2001 From: Clinton Gormley Date: Fri, 17 Apr 2015 09:45:41 +0200 Subject: [PATCH 037/329] The exists filter now works only for real null values and empty fields --- t/release/moose.t | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/t/release/moose.t b/t/release/moose.t index ba1b5b777..645c226e1 100644 --- a/t/release/moose.t +++ b/t/release/moose.t @@ -81,7 +81,7 @@ $signature = $idx->type('file')->filter( { term => { name => 'SIGNATURE' } }, # these came from metacpan-web/lib/MetaCPAN/Web/Model/API/Release.pm:sub modules - { exists => { field => 'file.pod.analyzed' } }, + { exists => { field => 'file.pod_lines' } }, { term => { 'file.indexed' => \1 } }, ] } From 0d7ffb0e3cb63c593179d8fc4d34f54349bef643 Mon Sep 17 00:00:00 2001 From: Clinton Gormley Date: Fri, 17 Apr 2015 09:50:28 +0200 Subject: [PATCH 038/329] Started moving Script::Latest to use better queries --- lib/MetaCPAN/Script/Latest.pm | 58 ++++++++++++++++------------------- 1 file changed, 26 insertions(+), 32 deletions(-) diff --git a/lib/MetaCPAN/Script/Latest.pm b/lib/MetaCPAN/Script/Latest.pm index f448db5a8..854612545 100644 --- a/lib/MetaCPAN/Script/Latest.pm +++ b/lib/MetaCPAN/Script/Latest.pm @@ -60,36 +60,32 @@ sub run { return if ( !@filter && $self->distribution ); + my @module_filters = { term => { 'module.indexed' => \1 } }; + push @module_filters, @filter + ? { terms => { "module.name" => \@filter } } + : { exists => { field => "module.name" } }; + my $scroll = $modules->filter( - { - and => [ - @filter - ? { - or => [ - map { { term => { 'file.module.name' => $_ } } } - @filter - ] - } - : (), - { exists => { field => 'file.module.name' } }, - { term => { 'file.module.indexed' => \1 } }, - { term => { 'file.maturity' => 'released' } }, - { not => { filter => { term => { status => 'backpan' } } } }, - { - not => { - filter => - { term => { 'file.distribution' => 'perl' } } - } - }, - ] + { bool => { + must => [ + { nested => { + path => 'module', + filter => { bool => { must => \@module_filters } } + } + }, + { term => { 'file.maturity' => 'released' } }, + ], + must_not => [ + { term => { status => 'backpan' } }, + { term => { distribution => 'perl' } } + ] + } } - )->fields( - [ - 'file.module.name', 'file.author', - 'file.release', 'file.distribution', - 'file.date', 'file.status', + )->source( + [ 'module.name', 'author', 'release', 'distribution', + 'date', 'status', ] - )->size(10000)->raw->scroll; + )->size(100)->raw->scroll; my ( %downgrade, %upgrade ); log_debug { 'Found ' . $scroll->total . ' modules' }; @@ -100,12 +96,10 @@ sub run { while ( my $file = $scroll->next ) { $i++; log_debug { "$i of " . $scroll->total } unless ( $i % 1000 ); - my $data = $file->{fields}; - my @modules = @{ $data->{'module.name'} }; - ( $data->{$_} ) = @{ $data->{$_} } - for qw(author release distribution date status); + my $data = $file->{_source}; + my @modules = map { $_->{name} } @{ $data->{module} }; - # Convert module name into Parse::CPAN::Packages::Fast::Package object. + # Convert module name into Parse::CPAN::Packages::Fast::Package object. @modules = grep {defined} map { eval { $p->package($_) } } @modules; From c91abdb458f6353369634e6e1da80ac90223cd5e Mon Sep 17 00:00:00 2001 From: Clinton Gormley Date: Fri, 17 Apr 2015 09:52:17 +0200 Subject: [PATCH 039/329] Try using edge-ngrams for autocomplete --- lib/MetaCPAN/Document/File.pm | 64 ++++++++++------------- lib/MetaCPAN/Model.pm | 15 +++++- t/server/controller/search/autocomplete.t | 7 ++- 3 files changed, 46 insertions(+), 40 deletions(-) diff --git a/lib/MetaCPAN/Document/File.pm b/lib/MetaCPAN/Document/File.pm index 3e9c153bf..91c2f5fe5 100644 --- a/lib/MetaCPAN/Document/File.pm +++ b/lib/MetaCPAN/Document/File.pm @@ -259,7 +259,7 @@ has documentation => ( lazy_build => 1, index => 'analyzed', predicate => 'has_documentation', - analyzer => [qw(standard camelcase lowercase)], + analyzer => [qw(standard camelcase edge_camelcase)], clearer => 'clear_documentation', ); @@ -1002,44 +1002,38 @@ sub autocomplete { my ( $self, @terms ) = @_; my $query = join( " ", @terms ); return $self unless $query; - $query =~ s/::/ /g; - my @query = split( /\s+/, $query ); - my $should = [ - map { - { - simple_query_string => { - fields => [ - 'documentation.analyzed', 'documentation.camelcase' - ], - query => "$_*" - } - } - } grep {$_} @query - ]; - # TODO: custom_score is deprecated in 0.90.4 in favor of function_score. - # As of 2013-10-27 we are still using 0.20.2 in production. - return $self->query( - { - function_score => { - query => { bool => { should => $should } }, - script_score => { - script => - "_score - doc['documentation'].value.length()/100", + return $self->search_type('dfs_query_then_fetch')->query( + { filtered => { + query => { + multi_match => { + query => $query, + type => 'most_fields', + fields => + [ 'documentation', 'documentation.edge_camelcase' ], + analyzer => 'camelcase', + minimum_should_match => "80%" + }, + }, + filter => { + bool => { + must => [ + { exists => { field => 'documentation' } }, + { term => { 'indexed' => \1 } }, + { term => { 'status' => 'latest' } }, + { term => { 'authorized' => \1 } } + ], + must_not => [ + { terms => + { 'distribution' => \@ROGUE_DISTRIBUTIONS } + }, + + ], + } } } } - )->filter( - { - and => [ - $self->_not_rogue, - { exists => { field => 'documentation' } }, - { term => { 'file.indexed' => \1 } }, - { term => { 'file.authorized' => \1 } }, - { term => { 'file.status' => 'latest' } }, - ] - } - )->sort( [ '_score', 'documentation' ] ); + )->sort( [ '_score', 'documentation' ] ); } __PACKAGE__->meta->make_immutable; diff --git a/lib/MetaCPAN/Model.pm b/lib/MetaCPAN/Model.pm index 067619072..6e9ca86a8 100644 --- a/lib/MetaCPAN/Model.pm +++ b/lib/MetaCPAN/Model.pm @@ -22,10 +22,23 @@ tokenizer camelcase => ( pattern => "([^\\p{L}\\d]+)|(?<=\\D)(?=\\d)|(?<=\\d)(?=\\D)|(?<=[\\p{L}&&[^\\p{Lu}]])(?=\\p{Lu})|(?<=\\p{Lu})(?=\\p{Lu}[\\p{L}&&[^\\p{Lu}]])" ); + +filter edge => ( + type => 'edge_ngram', + min_gram => 1, + max_gram => 20 +); + analyzer camelcase => ( type => 'custom', tokenizer => 'camelcase', - filter => [ 'lowercase', 'unique' ] + filter => [ 'lowercase' ] +); + +analyzer edge_camelcase => ( + type => 'custom', + tokenizer => 'camelcase', + filter => [ 'lowercase', 'edge' ] ); index cpan => ( diff --git a/t/server/controller/search/autocomplete.t b/t/server/controller/search/autocomplete.t index 208353a4d..f898f6094 100644 --- a/t/server/controller/search/autocomplete.t +++ b/t/server/controller/search/autocomplete.t @@ -15,11 +15,10 @@ test_psgi app, sub { 'GET' ); my $json = decode_json_ok($res); - my $got = [ map { $_->{fields}{documentation} } - @{ $json->{hits}{hits} } ]; + my $got + = [ map { $_->{_source}{documentation} } @{ $json->{hits}{hits} } ]; - is_deeply $got, [ - qw( + is_deeply $got, [ qw( Multiple::Modules Multiple::Modules::A Multiple::Modules::B From 7e7ac6f0fb3912d0832bfef3b8fd2a5d1ff869e5 Mon Sep 17 00:00:00 2001 From: Clinton Gormley Date: Fri, 17 Apr 2015 09:54:12 +0200 Subject: [PATCH 040/329] Started moving Document::File to using better queries and source filtering --- lib/MetaCPAN/Document/File.pm | 95 +++++++++++++++++------------------ 1 file changed, 46 insertions(+), 49 deletions(-) diff --git a/lib/MetaCPAN/Document/File.pm b/lib/MetaCPAN/Document/File.pm index 91c2f5fe5..634f26463 100644 --- a/lib/MetaCPAN/Document/File.pm +++ b/lib/MetaCPAN/Document/File.pm @@ -797,26 +797,25 @@ my @ROGUE_DISTRIBUTIONS sub find { my ( $self, $module ) = @_; my @candidates = $self->index->type("file")->filter( - { - and => [ - { - or => [ - { term => { 'file.module.name' => $module } }, - { term => { 'file.documentation' => $module } }, - ] - }, - { term => { 'file.indexed' => \1, } }, - { term => { status => 'latest', } }, - { - not => - { filter => { term => { 'file.authorized' => \0 } } } - }, - ] + { bool => { + must => [ + { term => { 'indexed' => \1, } }, + { term => { 'authorized' => \1 } }, + { term => { 'status' => 'latest', } }, + ], + should => [ + { term => { 'documentation' => $module } }, + { nested => { + path => 'module', + filter => { term => { 'module.name' => $module } }, + } + } + ] + } } )->sort( - [ - { 'date' => { order => "desc" } }, - 'mime', + [ { 'date' => { order => "desc" } }, + { 'mime' => { order => "asc" } }, { 'stat.mtime' => { order => 'desc' } } ] )->size(100)->all; @@ -859,13 +858,14 @@ sub find_pod { sub find_provided_by { my ( $self, $release ) = @_; return $self->filter( - { - and => [ - { term => { 'release' => $release->{name} } }, - { term => { 'author' => $release->{author} } }, - { term => { 'file.module.authorized' => 1 } }, - { term => { 'file.module.indexed' => 1 } }, - ] + { bool => { + must => [ + { term => { 'release' => $release->{name} } }, + { term => { 'author' => $release->{author} } }, + { term => { 'file.module.authorized' => 1 } }, + { term => { 'file.module.indexed' => 1 } }, + ] + } } )->size(999)->all; } @@ -955,17 +955,18 @@ sub history { my ( $self, $type, $module, @path ) = @_; my $search = $type eq "module" ? $self->filter( - { - nested => { + { nested => { path => "module", query => { constant_score => { filter => { - and => [ - { term => { "module.authorized" => \1 } }, - { term => { "module.indexed" => \1 } }, - { term => { "module.name" => $module } }, - ] + bool => { + must => [ + { term => { "module.authorized" => \1 } }, + { term => { "module.indexed" => \1 } }, + { term => { "module.name" => $module } }, + ] + } } } } @@ -973,31 +974,27 @@ sub history { } ) : $type eq "file" ? $self->filter( - { - and => [ - { term => { "file.path" => join( "/", @path ) } }, - { term => { "file.distribution" => $module } }, - ] + { bool => { + must => [ + { term => { "file.path" => join( "/", @path ) } }, + { term => { "file.distribution" => $module } }, + ] + } } ) : $self->filter( - { - and => [ - { term => { "file.documentation" => $module } }, - { term => { "file.indexed" => \1 } }, - { term => { "file.authorized" => \1 } }, - ] + { bool => { + must => [ + { term => { "file.documentation" => $module } }, + { term => { "file.indexed" => \1 } }, + { term => { "file.authorized" => \1 } }, + ] + } } ); return $search->sort( [ { "file.date" => "desc" } ] ); } -sub _not_rogue { - my @rogue_dists = map { { term => { 'file.distribution' => $_ } } } - @ROGUE_DISTRIBUTIONS; - return { not => { filter => { or => \@rogue_dists } } }; -} - sub autocomplete { my ( $self, @terms ) = @_; my $query = join( " ", @terms ); From 9daaac0d91489631902a96f11c2787d40ce49aa6 Mon Sep 17 00:00:00 2001 From: Clinton Gormley Date: Fri, 17 Apr 2015 09:54:32 +0200 Subject: [PATCH 041/329] Switch to 3 primary shards --- lib/MetaCPAN/Model.pm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/MetaCPAN/Model.pm b/lib/MetaCPAN/Model.pm index 6e9ca86a8..be95958b0 100644 --- a/lib/MetaCPAN/Model.pm +++ b/lib/MetaCPAN/Model.pm @@ -41,10 +41,11 @@ analyzer edge_camelcase => ( filter => [ 'lowercase', 'edge' ] ); + index cpan => ( namespace => 'MetaCPAN::Document', alias_for => 'cpan_v1', - shards => 5 + shards => 3 ); index user => ( namespace => 'MetaCPAN::Model::User' ); From e44a269bc7f4c26937b71d009121b9a0288c5f3e Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Fri, 17 Apr 2015 09:44:29 +0200 Subject: [PATCH 042/329] Tidy t/fakecpan.t --- t/fakecpan.t | 38 ++++++++++++++++++++++---------------- 1 file changed, 22 insertions(+), 16 deletions(-) diff --git a/t/fakecpan.t b/t/fakecpan.t index 8b7057daa..8cb97c388 100644 --- a/t/fakecpan.t +++ b/t/fakecpan.t @@ -26,7 +26,7 @@ USAGE http_port => 9900, es_port => 9700, instances => 1, - "cluster.name" => 'metacpan-test', + 'cluster.name' => 'metacpan-test', ); $ENV{ES} = $ES_HOST = $server->start->[0]; @@ -55,20 +55,18 @@ use Path::Class qw(dir file); BEGIN { $ENV{EMAIL_SENDER_TRANSPORT} = 'Test' } -ok( my $es = Search::Elasticsearch->new( +ok( + my $es = Search::Elasticsearch->new( nodes => $ES_HOST, ( $ENV{ES_TRACE} ? ( trace_to => 'Stderr' ) : () ) ), 'got ElasticSearch object' ); -diag p $es->cluster->health; -diag p $es->nodes->stats; - -ok( !$@, "Connected to the ElasticSearch test instance on $ES_HOST" ) +ok( !$@, "Connected to the Elasticsearch test instance on $ES_HOST" ) or do { diag(< $es->info } ) ); + Test::More::explain( { 'Elasticsearch info' => $es->info } ) ); my $config = MetaCPAN::Script::Runner->build_config; $config->{es} = $es; @@ -101,7 +99,8 @@ my $mod_faker = 'Module::Faker::Dist::WithPerl'; eval "require $mod_faker" or die $@; ## no critic (StringyEval) my $cpan = CPAN::Faker->new( - { source => 't/var/fakecpan/configs', + { + source => 't/var/fakecpan/configs', dest => $config->{cpan}, dist_class => $mod_faker, } @@ -134,13 +133,18 @@ copy( file(qw(t var fakecpan 00whois.xml)), file( $config->{cpan}, qw(authors 00whois.xml) ) ); copy( file(qw(t var fakecpan author-1.0.json)), file( $config->{cpan}, qw(authors id M MO MO author-1.0.json) ) ); -copy( file(qw(t var fakecpan bugs.tsv)), - file( $config->{cpan}, qw(bugs.tsv) ) ); +copy( + file(qw(t var fakecpan bugs.tsv)), + file( $config->{cpan}, qw(bugs.tsv) ) +); local @ARGV = ('author'); -ok( MetaCPAN::Script::Author->new_with_options($config)->run, 'index authors' ); +ok( MetaCPAN::Script::Author->new_with_options($config)->run, + 'index authors' ); -ok( MetaCPAN::Script::Tickets->new_with_options( - { %$config, +ok( + MetaCPAN::Script::Tickets->new_with_options( + { + %$config, rt_summary_url => 'file://' . file( $config->{cpan}, 'bugs.tsv' )->absolute, github_issues => 'file://' @@ -163,9 +167,11 @@ sub wait_for_es { } subtest 'Nested tests' => sub { - my $tests = Test::Aggregate::Nested->new( { + my $tests = Test::Aggregate::Nested->new( + { # should we do a glob to get these (and strip out t/var)? - dirs => [ qw( + dirs => [ + qw( t/document t/release t/server From 5bfc5602a5cdaeb02fe5b3036ca36d29cae96ba5 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Fri, 17 Apr 2015 11:08:22 +0200 Subject: [PATCH 043/329] Tidy --- lib/MetaCPAN/Document/File.pm | 46 ++++++++++++++--------- lib/MetaCPAN/Model.pm | 5 +-- lib/MetaCPAN/Script/Latest.pm | 11 ++++-- lib/MetaCPAN/Server/Test.pm | 3 +- t/server/controller/search/autocomplete.t | 6 ++- 5 files changed, 43 insertions(+), 28 deletions(-) diff --git a/lib/MetaCPAN/Document/File.pm b/lib/MetaCPAN/Document/File.pm index 634f26463..e412dcb73 100644 --- a/lib/MetaCPAN/Document/File.pm +++ b/lib/MetaCPAN/Document/File.pm @@ -797,7 +797,8 @@ my @ROGUE_DISTRIBUTIONS sub find { my ( $self, $module ) = @_; my @candidates = $self->index->type("file")->filter( - { bool => { + { + bool => { must => [ { term => { 'indexed' => \1, } }, { term => { 'authorized' => \1 } }, @@ -805,16 +806,19 @@ sub find { ], should => [ { term => { 'documentation' => $module } }, - { nested => { - path => 'module', - filter => { term => { 'module.name' => $module } }, + { + nested => { + path => 'module', + filter => + { term => { 'module.name' => $module } }, } } ] } } )->sort( - [ { 'date' => { order => "desc" } }, + [ + { 'date' => { order => "desc" } }, { 'mime' => { order => "asc" } }, { 'stat.mtime' => { order => 'desc' } } ] @@ -858,7 +862,8 @@ sub find_pod { sub find_provided_by { my ( $self, $release ) = @_; return $self->filter( - { bool => { + { + bool => { must => [ { term => { 'release' => $release->{name} } }, { term => { 'author' => $release->{author} } }, @@ -955,7 +960,8 @@ sub history { my ( $self, $type, $module, @path ) = @_; my $search = $type eq "module" ? $self->filter( - { nested => { + { + nested => { path => "module", query => { constant_score => { @@ -974,16 +980,18 @@ sub history { } ) : $type eq "file" ? $self->filter( - { bool => { + { + bool => { must => [ - { term => { "file.path" => join( "/", @path ) } }, + { term => { "file.path" => join( "/", @path ) } }, { term => { "file.distribution" => $module } }, ] } } ) : $self->filter( - { bool => { + { + bool => { must => [ { term => { "file.documentation" => $module } }, { term => { "file.indexed" => \1 } }, @@ -1001,13 +1009,15 @@ sub autocomplete { return $self unless $query; return $self->search_type('dfs_query_then_fetch')->query( - { filtered => { + { + filtered => { query => { multi_match => { - query => $query, - type => 'most_fields', - fields => - [ 'documentation', 'documentation.edge_camelcase' ], + query => $query, + type => 'most_fields', + fields => [ + 'documentation', 'documentation.edge_camelcase' + ], analyzer => 'camelcase', minimum_should_match => "80%" }, @@ -1021,8 +1031,10 @@ sub autocomplete { { term => { 'authorized' => \1 } } ], must_not => [ - { terms => - { 'distribution' => \@ROGUE_DISTRIBUTIONS } + { + terms => { + 'distribution' => \@ROGUE_DISTRIBUTIONS + } }, ], diff --git a/lib/MetaCPAN/Model.pm b/lib/MetaCPAN/Model.pm index be95958b0..d7f429ba7 100644 --- a/lib/MetaCPAN/Model.pm +++ b/lib/MetaCPAN/Model.pm @@ -24,7 +24,7 @@ tokenizer camelcase => ( ); filter edge => ( - type => 'edge_ngram', + type => 'edge_ngram', min_gram => 1, max_gram => 20 ); @@ -32,7 +32,7 @@ filter edge => ( analyzer camelcase => ( type => 'custom', tokenizer => 'camelcase', - filter => [ 'lowercase' ] + filter => ['lowercase'] ); analyzer edge_camelcase => ( @@ -41,7 +41,6 @@ analyzer edge_camelcase => ( filter => [ 'lowercase', 'edge' ] ); - index cpan => ( namespace => 'MetaCPAN::Document', alias_for => 'cpan_v1', diff --git a/lib/MetaCPAN/Script/Latest.pm b/lib/MetaCPAN/Script/Latest.pm index 854612545..35473d866 100644 --- a/lib/MetaCPAN/Script/Latest.pm +++ b/lib/MetaCPAN/Script/Latest.pm @@ -66,9 +66,11 @@ sub run { : { exists => { field => "module.name" } }; my $scroll = $modules->filter( - { bool => { + { + bool => { must => [ - { nested => { + { + nested => { path => 'module', filter => { bool => { must => \@module_filters } } } @@ -82,7 +84,8 @@ sub run { } } )->source( - [ 'module.name', 'author', 'release', 'distribution', + [ + 'module.name', 'author', 'release', 'distribution', 'date', 'status', ] )->size(100)->raw->scroll; @@ -99,7 +102,7 @@ sub run { my $data = $file->{_source}; my @modules = map { $_->{name} } @{ $data->{module} }; - # Convert module name into Parse::CPAN::Packages::Fast::Package object. + # Convert module name into Parse::CPAN::Packages::Fast::Package object. @modules = grep {defined} map { eval { $p->package($_) } } @modules; diff --git a/lib/MetaCPAN/Server/Test.pm b/lib/MetaCPAN/Server/Test.pm index 621284c7c..5d1908a16 100644 --- a/lib/MetaCPAN/Server/Test.pm +++ b/lib/MetaCPAN/Server/Test.pm @@ -73,8 +73,7 @@ sub app { require MetaCPAN::Model; sub model { - MetaCPAN::Model->new( - es => ( $ENV{ES} ||= 'localhost:9900' ) ); + MetaCPAN::Model->new( es => ( $ENV{ES} ||= 'localhost:9900' ) ); } 1; diff --git a/t/server/controller/search/autocomplete.t b/t/server/controller/search/autocomplete.t index f898f6094..2776bd988 100644 --- a/t/server/controller/search/autocomplete.t +++ b/t/server/controller/search/autocomplete.t @@ -16,9 +16,11 @@ test_psgi app, sub { my $json = decode_json_ok($res); my $got - = [ map { $_->{_source}{documentation} } @{ $json->{hits}{hits} } ]; + = [ map { $_->{_source}{documentation} } + @{ $json->{hits}{hits} } ]; - is_deeply $got, [ qw( + is_deeply $got, [ + qw( Multiple::Modules Multiple::Modules::A Multiple::Modules::B From 36cee50310ed25616f9750a27c0f9717279b931e Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Fri, 17 Apr 2015 11:08:32 +0200 Subject: [PATCH 044/329] Don't create scoreboard under test harness. This was annoying me in the test harness under Vagrant, so I'll disable it for now. --- lib/MetaCPAN/Server.pm | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/lib/MetaCPAN/Server.pm b/lib/MetaCPAN/Server.pm index e16d79220..165ad38e3 100755 --- a/lib/MetaCPAN/Server.pm +++ b/lib/MetaCPAN/Server.pm @@ -91,18 +91,19 @@ if ( $ENV{PLACK_ENV} && $ENV{PLACK_ENV} eq 'development' ) { rules => sub {s{^/?v\d+/}{}} ); } -# Should this be `unless ( $ENV{HARNESS_ACTIVE} ) {` ? { - my $scoreboard = __PACKAGE__->path_to(qw(var tmp scoreboard)); + unless ( $ENV{HARNESS_ACTIVE} ) { + my $scoreboard = __PACKAGE__->path_to(qw(var tmp scoreboard)); # This may be a File object if it doesn't exist so change it, then make it. - Path::Class::Dir->new( $scoreboard->stringify )->mkpath; + Path::Class::Dir->new( $scoreboard->stringify )->mkpath; - Plack::Middleware::ServerStatus::Lite->wrap( - $app, - path => '/server-status', - allow => ['127.0.0.1'], - scoreboard => $scoreboard, - ); + Plack::Middleware::ServerStatus::Lite->wrap( + $app, + path => '/server-status', + allow => ['127.0.0.1'], + scoreboard => $scoreboard, + ); + } } From 175cb37ba8d17bd5c5071f334ce5c492082fc86d Mon Sep 17 00:00:00 2001 From: Clinton Gormley Date: Fri, 17 Apr 2015 11:40:06 +0200 Subject: [PATCH 045/329] Mark document classes which should not create their own mappings --- lib/MetaCPAN/Document/Author/Profile.pm | 2 ++ lib/MetaCPAN/Document/Dependency.pm | 2 ++ lib/MetaCPAN/Document/Module.pm | 2 ++ 3 files changed, 6 insertions(+) diff --git a/lib/MetaCPAN/Document/Author/Profile.pm b/lib/MetaCPAN/Document/Author/Profile.pm index 3a12fff69..e85cd464d 100644 --- a/lib/MetaCPAN/Document/Author/Profile.pm +++ b/lib/MetaCPAN/Document/Author/Profile.pm @@ -6,6 +6,8 @@ use warnings; use Moose; use ElasticSearchX::Model::Document; +with 'ElasticSearchX::Model::Document::EmbeddedRole'; + use MetaCPAN::Util; has name => ( diff --git a/lib/MetaCPAN/Document/Dependency.pm b/lib/MetaCPAN/Document/Dependency.pm index 92ce26a3f..b3709a874 100644 --- a/lib/MetaCPAN/Document/Dependency.pm +++ b/lib/MetaCPAN/Document/Dependency.pm @@ -6,6 +6,8 @@ use warnings; use Moose; use ElasticSearchX::Model::Document; +with 'ElasticSearchX::Model::Document::EmbeddedRole'; + use MetaCPAN::Util; has [qw(phase relationship module version)] => ( is => 'ro', required => 1 ); diff --git a/lib/MetaCPAN/Document/Module.pm b/lib/MetaCPAN/Document/Module.pm index ef749252b..71899104d 100644 --- a/lib/MetaCPAN/Document/Module.pm +++ b/lib/MetaCPAN/Document/Module.pm @@ -6,6 +6,8 @@ use warnings; use Moose; use ElasticSearchX::Model::Document; +with 'ElasticSearchX::Model::Document::EmbeddedRole'; + use MetaCPAN::Types qw(AssociatedPod); use MetaCPAN::Util; From 48d5122531b7babce88c3b2e55ba0afa23442a52 Mon Sep 17 00:00:00 2001 From: Clinton Gormley Date: Fri, 17 Apr 2015 12:20:20 +0200 Subject: [PATCH 046/329] Revert "Don't create scoreboard under test harness." This reverts commit 6d009fc9acd63ec7354c6d26f596aa856dee931f. --- lib/MetaCPAN/Server.pm | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/lib/MetaCPAN/Server.pm b/lib/MetaCPAN/Server.pm index 165ad38e3..e16d79220 100755 --- a/lib/MetaCPAN/Server.pm +++ b/lib/MetaCPAN/Server.pm @@ -91,19 +91,18 @@ if ( $ENV{PLACK_ENV} && $ENV{PLACK_ENV} eq 'development' ) { rules => sub {s{^/?v\d+/}{}} ); } +# Should this be `unless ( $ENV{HARNESS_ACTIVE} ) {` ? { - unless ( $ENV{HARNESS_ACTIVE} ) { - my $scoreboard = __PACKAGE__->path_to(qw(var tmp scoreboard)); + my $scoreboard = __PACKAGE__->path_to(qw(var tmp scoreboard)); # This may be a File object if it doesn't exist so change it, then make it. - Path::Class::Dir->new( $scoreboard->stringify )->mkpath; + Path::Class::Dir->new( $scoreboard->stringify )->mkpath; - Plack::Middleware::ServerStatus::Lite->wrap( - $app, - path => '/server-status', - allow => ['127.0.0.1'], - scoreboard => $scoreboard, - ); - } + Plack::Middleware::ServerStatus::Lite->wrap( + $app, + path => '/server-status', + allow => ['127.0.0.1'], + scoreboard => $scoreboard, + ); } From fdc5552de4081fd289f063509995e5219bf87720 Mon Sep 17 00:00:00 2001 From: Clinton Gormley Date: Fri, 17 Apr 2015 12:39:35 +0200 Subject: [PATCH 047/329] Change version_numified from a float to a string, so that version numbers aren't subject to rounding. Closes https://github.com/CPAN-API/cpan-api/issues/284 --- lib/MetaCPAN/Document/Dependency.pm | 4 ++-- lib/MetaCPAN/Document/File.pm | 4 ++-- lib/MetaCPAN/Document/Module.pm | 4 ++-- lib/MetaCPAN/Document/Release.pm | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/lib/MetaCPAN/Document/Dependency.pm b/lib/MetaCPAN/Document/Dependency.pm index b3709a874..c820855ce 100644 --- a/lib/MetaCPAN/Document/Dependency.pm +++ b/lib/MetaCPAN/Document/Dependency.pm @@ -15,12 +15,12 @@ has [qw(phase relationship module version)] => ( is => 'ro', required => 1 ); has version_numified => ( is => 'ro', required => 1, - isa => 'Num', + isa => 'Str', lazy_build => 1, ); sub _build_version_numified { - return MetaCPAN::Util::numify_version( shift->version ); + return MetaCPAN::Util::numify_version( shift->version ).''; } __PACKAGE__->meta->make_immutable; diff --git a/lib/MetaCPAN/Document/File.pm b/lib/MetaCPAN/Document/File.pm index e412dcb73..6f13c534f 100644 --- a/lib/MetaCPAN/Document/File.pm +++ b/lib/MetaCPAN/Document/File.pm @@ -516,7 +516,7 @@ version could not be parsed. has version_numified => ( is => 'ro', - isa => 'Num', + isa => 'Str', lazy_build => 1, required => 1, ); @@ -524,7 +524,7 @@ has version_numified => ( sub _build_version_numified { my $self = shift; return 0 unless ( $self->version ); - return MetaCPAN::Util::numify_version( $self->version ); + return MetaCPAN::Util::numify_version( $self->version ).''; } =head2 mime diff --git a/lib/MetaCPAN/Document/Module.pm b/lib/MetaCPAN/Document/Module.pm index 71899104d..4a09d34fc 100644 --- a/lib/MetaCPAN/Document/Module.pm +++ b/lib/MetaCPAN/Document/Module.pm @@ -78,7 +78,7 @@ has version => ( is => 'ro' ); has version_numified => ( is => 'ro', - isa => 'Num', + isa => 'Str', lazy_build => 1, required => 1, ); @@ -107,7 +107,7 @@ has associated_pod => ( sub _build_version_numified { my $self = shift; return 0 unless ( $self->version ); - return MetaCPAN::Util::numify_version( $self->version ); + return MetaCPAN::Util::numify_version( $self->version ).''; } my $bom diff --git a/lib/MetaCPAN/Document/Release.pm b/lib/MetaCPAN/Document/Release.pm index f1eeada32..73cf1eae9 100644 --- a/lib/MetaCPAN/Document/Release.pm +++ b/lib/MetaCPAN/Document/Release.pm @@ -145,7 +145,7 @@ has [qw(distribution name)] => ( has version_numified => ( is => 'ro', required => 1, - isa => 'Num', + isa => 'Str', lazy_build => 1, ); @@ -224,7 +224,7 @@ has metadata => ( ); sub _build_version_numified { - return MetaCPAN::Util::numify_version( shift->version ); + return MetaCPAN::Util::numify_version( shift->version ) . ''; } sub _build_download_url { From 051b4ebb59570841c8bad846664985e6db773c30 Mon Sep 17 00:00:00 2001 From: Clinton Gormley Date: Fri, 17 Apr 2015 13:32:27 +0200 Subject: [PATCH 048/329] Add the Release download_url to Document::File --- lib/MetaCPAN/Document/File.pm | 13 +++++++++++++ lib/MetaCPAN/Model/Release.pm | 19 ++++++++++--------- 2 files changed, 23 insertions(+), 9 deletions(-) diff --git a/lib/MetaCPAN/Document/File.pm b/lib/MetaCPAN/Document/File.pm index 6f13c534f..fb20195eb 100644 --- a/lib/MetaCPAN/Document/File.pm +++ b/lib/MetaCPAN/Document/File.pm @@ -113,6 +113,19 @@ has module => ( default => sub { [] }, ); +=head2 download_url + +B + +Download URL of the release + +=cut + +has download_url => ( + is => 'ro', + required => 1 +); + =head2 date B diff --git a/lib/MetaCPAN/Model/Release.pm b/lib/MetaCPAN/Model/Release.pm index a15865568..11809cee3 100644 --- a/lib/MetaCPAN/Model/Release.pm +++ b/lib/MetaCPAN/Model/Release.pm @@ -248,15 +248,16 @@ sub _build_files { indexed => $self->metadata->should_index_file($fpath) ? 1 : 0, - local_path => $child, - maturity => $self->maturity, - metadata => $self->metadata, - name => $filename, - path => $fpath, - release => $self->name, - stat => $stat, - status => $self->status, - version => $self->version, + local_path => $child, + maturity => $self->maturity, + metadata => $self->metadata, + name => $filename, + path => $fpath, + release => $self->name, + download_url => $self->document->download_url, + stat => $stat, + status => $self->status, + version => $self->version, } ); From 79f321879f87e12f9f2f8feb099a87d3d028b8d9 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Fri, 17 Apr 2015 12:12:40 +0200 Subject: [PATCH 049/329] Adds Devel::Confess to cpanfile. --- cpanfile | 1 + cpanfile.snapshot | 12 ++++++++++++ 2 files changed, 13 insertions(+) diff --git a/cpanfile b/cpanfile index 63ae37273..08dd1a4ae 100644 --- a/cpanfile +++ b/cpanfile @@ -39,6 +39,7 @@ requires 'Data::Dumper'; requires 'DateTime'; requires 'DateTime::Format::ISO8601'; requires 'Devel::ArgNames'; +requires 'Devel::Confess'; requires 'Digest::MD5'; requires 'Digest::SHA1'; requires 'EV'; diff --git a/cpanfile.snapshot b/cpanfile.snapshot index b8903722b..cfd5c8c4b 100644 --- a/cpanfile.snapshot +++ b/cpanfile.snapshot @@ -2671,6 +2671,18 @@ DISTRIBUTIONS IO::CaptureOutput 1.0801 Test::More 0.62 perl 5.00405 + Devel-Confess-0.007012 + pathname: H/HA/HAARG/Devel-Confess-0.007012.tar.gz + provides: + Devel::Confess 0.007012 + Devel::Confess::Builtin 0.007012 + Devel::Confess::Source undef + Devel::Confess::_Util undef + requirements: + Carp 0 + ExtUtils::MakeMaker 0 + Scalar::Util 0 + perl 5.006000 Devel-GlobalDestruction-0.12 pathname: H/HA/HAARG/Devel-GlobalDestruction-0.12.tar.gz provides: From 62bd4027854de9eed8e6c14c29022d761227fb2c Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Fri, 17 Apr 2015 13:29:19 +0200 Subject: [PATCH 050/329] Adds Plack::Test::Agent to cpanfile. --- cpanfile | 1 + cpanfile.snapshot | 17 +++++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/cpanfile b/cpanfile index 08dd1a4ae..2e8942321 100644 --- a/cpanfile +++ b/cpanfile @@ -164,6 +164,7 @@ test_requires 'Config::General'; test_requires 'ElasticSearch::TestServer'; test_requires 'File::Copy'; test_requires 'HTTP::Cookies'; +test_requires 'Plack::Test::Agent'; test_requires 'Test::Aggregate::Nested', '0.371'; test_requires 'Test::Code::TidyAll'; test_requires 'Test::More', '0.99'; diff --git a/cpanfile.snapshot b/cpanfile.snapshot index cfd5c8c4b..b4e9b9b2c 100644 --- a/cpanfile.snapshot +++ b/cpanfile.snapshot @@ -6777,6 +6777,23 @@ DISTRIBUTIONS Digest::SHA1 0 Module::Build::Tiny 0.030 Plack 0.9910 + Plack-Test-Agent-1.4 + pathname: O/OA/OALDERS/Plack-Test-Agent-1.4.tar.gz + provides: + Plack::Test::Agent 1.4 + requirements: + ExtUtils::MakeMaker 0 + HTTP::Message::PSGI 0 + HTTP::Request::Common 0 + HTTP::Response 0 + Plack::Loader 0 + Plack::Util::Accessor 0 + Test::TCP 0 + Test::WWW::Mechanize 0 + parent 0 + perl 5.008 + strict 0 + warnings 0 Plack-Test-ExternalServer-0.01 pathname: F/FL/FLORA/Plack-Test-ExternalServer-0.01.tar.gz provides: From d97f27b35084a6f0c4db6300a509b9be8c3fb613 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Fri, 17 Apr 2015 13:38:17 +0200 Subject: [PATCH 051/329] Add HTTP::Server::Simple::PSGI to cpanfile. --- cpanfile | 5 +++-- cpanfile.snapshot | 10 ++++++++++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/cpanfile b/cpanfile index 2e8942321..99d883ae2 100644 --- a/cpanfile +++ b/cpanfile @@ -158,12 +158,13 @@ requires 'warnings'; test_requires 'App::Prove'; test_requires 'CPAN::Faker', '0.010'; -test_requires 'Module::Faker', '0.015'; -test_requires 'Module::Faker::Dist', '0.010'; test_requires 'Config::General'; test_requires 'ElasticSearch::TestServer'; test_requires 'File::Copy'; test_requires 'HTTP::Cookies'; +test_requires 'Module::Faker', '0.015'; +test_requires 'Module::Faker::Dist', '0.010'; +test_requires 'Plack::Handler::HTTP::Server::Simple'; test_requires 'Plack::Test::Agent'; test_requires 'Test::Aggregate::Nested', '0.371'; test_requires 'Test::Code::TidyAll'; diff --git a/cpanfile.snapshot b/cpanfile.snapshot index b4e9b9b2c..8719f5810 100644 --- a/cpanfile.snapshot +++ b/cpanfile.snapshot @@ -3734,6 +3734,16 @@ DISTRIBUTIONS ExtUtils::MakeMaker 6.42 Socket 0 Test::More 0 + HTTP-Server-Simple-PSGI-0.16 + pathname: M/MI/MIYAGAWA/HTTP-Server-Simple-PSGI-0.16.tar.gz + provides: + HTTP::Server::Simple::PSGI 0.16 + HTTP::Server::Simple::PSGI::Writer 0.16 + Plack::Handler::HTTP::Server::Simple 0.16 + Plack::Handler::HTTP::Server::Simple::PSGIServer 0.16 + requirements: + ExtUtils::MakeMaker 6.30 + HTTP::Server::Simple 0.42 HTTP-Tiny-0.043 pathname: D/DA/DAGOLDEN/HTTP-Tiny-0.043.tar.gz provides: From 52b3c7bf3a3c7a971a532dc01521f6f615174f85 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Fri, 17 Apr 2015 13:43:35 +0200 Subject: [PATCH 052/329] Add LWP::ConsoleLogger to cpanfile. --- cpanfile | 1 + cpanfile.snapshot | 222 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 223 insertions(+) diff --git a/cpanfile b/cpanfile index 99d883ae2..d35b09d77 100644 --- a/cpanfile +++ b/cpanfile @@ -162,6 +162,7 @@ test_requires 'Config::General'; test_requires 'ElasticSearch::TestServer'; test_requires 'File::Copy'; test_requires 'HTTP::Cookies'; +test_requires 'LWP::ConsoleLogger'; test_requires 'Module::Faker', '0.015'; test_requires 'Module::Faker::Dist', '0.010'; test_requires 'Plack::Handler::HTTP::Server::Simple'; diff --git a/cpanfile.snapshot b/cpanfile.snapshot index 8719f5810..64a31dcbe 100644 --- a/cpanfile.snapshot +++ b/cpanfile.snapshot @@ -2692,6 +2692,13 @@ DISTRIBUTIONS ExtUtils::MakeMaker 0 Sub::Exporter::Progressive 0.001011 perl 5.006 + Devel-Hide-0.0009 + pathname: F/FE/FERREIRA/Devel-Hide-0.0009.tar.gz + provides: + Devel::Hide 0.0009 + requirements: + ExtUtils::MakeMaker 0 + Test::More 0 Devel-OverloadInfo-0.002 pathname: I/IL/ILMARI/Devel-OverloadInfo-0.002.tar.gz provides: @@ -3109,6 +3116,14 @@ DISTRIBUTIONS perl 5.006 strict 0 warnings 0 + Exporter-Tiny-0.042 + pathname: T/TO/TOBYINK/Exporter-Tiny-0.042.tar.gz + provides: + Exporter::Shiny 0.042 + Exporter::Tiny 0.042 + requirements: + ExtUtils::MakeMaker 6.17 + perl 5.006001 ExtUtils-Config-0.007 pathname: L/LE/LEONT/ExtUtils-Config-0.007.tar.gz provides: @@ -3549,6 +3564,27 @@ DISTRIBUTIONS HTML::Tagset 3 XSLoader 0 perl 5.008 + HTML-Restrict-2.2.2 + pathname: O/OA/OALDERS/HTML-Restrict-2.2.2.tar.gz + provides: + HTML::Restrict 2.002002 + requirements: + Carp 0 + Data::Dump 0 + ExtUtils::MakeMaker 0 + HTML::Entities 0 + HTML::Parser 0 + List::MoreUtils 0 + Module::Build 0.28 + Moo 1.002000 + Scalar::Util 0 + Sub::Quote 0 + Type::Tiny 1.000001 + Types::Standard 0 + URI 0 + namespace::clean 0 + perl 5.006 + strict 0 HTML-Tagset-3.20 pathname: P/PE/PETDANCE/HTML-Tagset-3.20.tar.gz provides: @@ -3620,6 +3656,24 @@ DISTRIBUTIONS File::Temp 0.14 HTTP::Headers 0 IO::File 1.14 + HTTP-CookieMonster-0.09 + pathname: O/OA/OALDERS/HTTP-CookieMonster-0.09.tar.gz + provides: + HTTP::CookieMonster 0.09 + HTTP::CookieMonster::Cookie 0.09 + requirements: + Carp 0 + ExtUtils::MakeMaker 0 + HTTP::Cookies 0 + Module::Build 0.28 + Moo 1.000003 + Safe::Isa 0 + Scalar::Util 0 + Sub::Exporter 0 + URI::Escape 0 + perl 5.006 + strict 0 + warnings 0 HTTP-Cookies-6.01 pathname: G/GA/GAAS/HTTP-Cookies-6.01.tar.gz provides: @@ -3984,6 +4038,37 @@ DISTRIBUTIONS ExtUtils::MakeMaker 0 Types::Serialiser 0 common::sense 0 + LWP-ConsoleLogger-0.000015 + pathname: O/OA/OALDERS/LWP-ConsoleLogger-0.000015.tar.gz + provides: + LWP::ConsoleLogger 0.000015 + LWP::ConsoleLogger::Easy 0.000015 + requirements: + Data::Printer 0 + DateTime 0 + ExtUtils::MakeMaker 0 + HTML::Restrict 0 + HTTP::Body 0 + HTTP::CookieMonster 0 + JSON::MaybeXS 0 + Log::Dispatch 0 + Module::Build 0.28 + Moo 0 + MooX::StrictConstructor 0 + Parse::MIME 0 + Sub::Exporter 0 + Term::Size::Any 0 + Text::SimpleTable::AutoWidth 0.09 + Try::Tiny 0 + Type::Tiny 0 + Types::Common::Numeric 0 + Types::Standard 0 + URI::Query 0 + URI::QueryParam 0 + XML::Simple 0 + perl 5.006 + strict 0 + warnings 0 LWP-MediaTypes-6.02 pathname: G/GA/GAAS/LWP-MediaTypes-6.02.tar.gz provides: @@ -4130,6 +4215,40 @@ DISTRIBUTIONS ExtUtils::MakeMaker 6.30 Moo 1.003 Scalar::Util 0 + Log-Dispatch-2.44 + pathname: D/DR/DROLSKY/Log-Dispatch-2.44.tar.gz + provides: + Log::Dispatch 2.44 + Log::Dispatch::ApacheLog 2.44 + Log::Dispatch::Base 2.44 + Log::Dispatch::Code 2.44 + Log::Dispatch::Email 2.44 + Log::Dispatch::Email::MIMELite 2.44 + Log::Dispatch::Email::MailSend 2.44 + Log::Dispatch::Email::MailSender 2.44 + Log::Dispatch::Email::MailSendmail 2.44 + Log::Dispatch::File 2.44 + Log::Dispatch::File::Locked 2.44 + Log::Dispatch::Handle 2.44 + Log::Dispatch::Null 2.44 + Log::Dispatch::Output 2.44 + Log::Dispatch::Screen 2.44 + Log::Dispatch::Syslog 2.44 + requirements: + Carp 0 + Devel::GlobalDestruction 0 + Dist::CheckConflicts 0.02 + ExtUtils::MakeMaker 0 + Fcntl 0 + Module::Runtime 0 + Params::Validate 0.15 + Scalar::Util 0 + Sys::Syslog 0.28 + base 0 + strict 0 + threads 0 + threads::shared 0 + warnings 0 Log-Log4perl-1.44 pathname: M/MS/MSCHILLI/Log-Log4perl-1.44.tar.gz provides: @@ -4511,6 +4630,20 @@ DISTRIBUTIONS Role::Tiny 1.003003 Scalar::Util 0 strictures 1.004003 + MooX-StrictConstructor-0.006 + pathname: H/HA/HARTZELL/MooX-StrictConstructor-0.006.tar.gz + provides: + Method::Generate::Constructor::Role::StrictConstructor 0.006 + MooX::StrictConstructor 0.006 + requirements: + B 0 + Class::Method::Modifiers 0 + Module::Build 0.3601 + Moo 1.001000 + Moo::Role 0 + constant 0 + perl 5.006 + strictures 1 MooX-Types-MooseLike-0.25 pathname: M/MA/MATEU/MooX-Types-MooseLike-0.25.tar.gz provides: @@ -6118,6 +6251,16 @@ DISTRIBUTIONS Test::More 0.47 Text::CSV_XS 0.42 perl 5.005 + Parse-MIME-1.003 + pathname: A/AR/ARISTOTLE/Parse-MIME-1.003.tar.gz + provides: + Parse::MIME 1.003 + requirements: + Exporter 0 + ExtUtils::MakeMaker 0 + perl 5.006 + strict 0 + warnings 0 Parse-PMFile-0.29 pathname: I/IS/ISHIGAKI/Parse-PMFile-0.29.tar.gz provides: @@ -7310,6 +7453,25 @@ DISTRIBUTIONS Scalar::Util 1.14 Test::More 0.42 perl 5.005 + Term-Size-Any-0.002 + pathname: F/FE/FERREIRA/Term-Size-Any-0.002.tar.gz + provides: + Term::Size::Any 0.002 + requirements: + Devel::Hide 0 + ExtUtils::MakeMaker 0 + Module::Load::Conditional 0 + Term::Size::Perl 0 + Test::More 0 + Term-Size-Perl-0.029 + pathname: F/FE/FERREIRA/Term-Size-Perl-0.029.tar.gz + provides: + Term::Size::Perl 0.029 + requirements: + Exporter 0 + ExtUtils::CBuilder 0 + ExtUtils::MakeMaker 0 + Test::More 0 Test-Aggregate-0.371 pathname: R/RW/RWSTAUNER/Test-Aggregate-0.371.tar.gz provides: @@ -7868,6 +8030,17 @@ DISTRIBUTIONS requirements: ExtUtils::MakeMaker 0 Test::More 0 + Text-SimpleTable-AutoWidth-0.09 + pathname: C/CU/CUB/Text-SimpleTable-AutoWidth-0.09.tar.gz + provides: + Text::SimpleTable::AutoWidth 0.09 + requirements: + ExtUtils::MakeMaker 0 + List::Util 0 + Moo 0 + Text::SimpleTable 0 + strict 0 + warnings 0 Text-Template-1.46 pathname: M/MJ/MJD/Text-Template-1.46.tar.gz provides: @@ -8034,6 +8207,47 @@ DISTRIBUTIONS HTTP::Status 0 Plack 0.99 Try::Tiny 0 + Type-Tiny-1.000005 + pathname: T/TO/TOBYINK/Type-Tiny-1.000005.tar.gz + provides: + Devel::TypeTiny::Perl56Compat 1.000005 + Devel::TypeTiny::Perl58Compat 1.000005 + Error::TypeTiny 1.000005 + Error::TypeTiny::Assertion 1.000005 + Error::TypeTiny::Compilation 1.000005 + Error::TypeTiny::WrongNumberOfParameters 1.000005 + Eval::TypeTiny 1.000005 + Reply::Plugin::TypeTiny 1.000005 + Test::TypeTiny 1.000005 + Type::Coercion 1.000005 + Type::Coercion::FromMoose 1.000005 + Type::Coercion::Union 1.000005 + Type::Library 1.000005 + Type::Params 1.000005 + Type::Parser 1.000005 + Type::Registry 1.000005 + Type::Tiny 1.000005 + Type::Tiny::Class 1.000005 + Type::Tiny::Duck 1.000005 + Type::Tiny::Enum 1.000005 + Type::Tiny::Intersection 1.000005 + Type::Tiny::Role 1.000005 + Type::Tiny::Union 1.000005 + Type::Utils 1.000005 + Types::Common::Numeric 1.000005 + Types::Common::String 1.000005 + Types::Standard 1.000005 + Types::Standard::ArrayRef 1.000005 + Types::Standard::Dict 1.000005 + Types::Standard::HashRef 1.000005 + Types::Standard::Map 1.000005 + Types::Standard::ScalarRef 1.000005 + Types::Standard::Tuple 1.000005 + Types::TypeTiny 1.000005 + requirements: + Exporter::Tiny 0.026 + ExtUtils::MakeMaker 6.17 + perl 5.006001 Types-Serialiser-1.0 pathname: M/ML/MLEHMANN/Types-Serialiser-1.0.tar.gz provides: @@ -8139,6 +8353,14 @@ DISTRIBUTIONS URI::QueryParam 0 strict 0 warnings 0 + URI-Query-0.10 + pathname: G/GA/GAVINC/URI-Query-0.10.tar.gz + provides: + URI::Query 0.10 + requirements: + ExtUtils::MakeMaker 0 + Test::More 0.88 + URI 1.31 Variable-Magic-0.53 pathname: V/VP/VPIT/Variable-Magic-0.53.tar.gz provides: From 2c9b9b68db9aebcfa8118053df8a91f80d4bbb1a Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Fri, 17 Apr 2015 14:10:21 +0200 Subject: [PATCH 053/329] Use a tempdir for scoreboard under test harness. --- lib/MetaCPAN/Server.pm | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/lib/MetaCPAN/Server.pm b/lib/MetaCPAN/Server.pm index e16d79220..1f06dea06 100755 --- a/lib/MetaCPAN/Server.pm +++ b/lib/MetaCPAN/Server.pm @@ -6,6 +6,7 @@ use warnings; ## no critic (Modules::RequireEndWithOne) use CatalystX::RoleApplicator; +use File::Temp qw( tempdir ); use Moose; use Plack::Middleware::ReverseProxy; use Plack::Middleware::ServerStatus::Lite; @@ -94,9 +95,15 @@ if ( $ENV{PLACK_ENV} && $ENV{PLACK_ENV} eq 'development' ) { # Should this be `unless ( $ENV{HARNESS_ACTIVE} ) {` ? { my $scoreboard = __PACKAGE__->path_to(qw(var tmp scoreboard)); + my $scoreboard + = $ENV{HARNESS_ACTIVE} + ? tempdir( CLEANUP => 1 ) + : __PACKAGE__->path_to(qw(var tmp scoreboard)); # This may be a File object if it doesn't exist so change it, then make it. - Path::Class::Dir->new( $scoreboard->stringify )->mkpath; + my $dir = Path::Class::Dir->new( + ref $scoreboard ? $scoreboard->stringify : $scoreboard ); + $dir->mkpath unless -d $dir; Plack::Middleware::ServerStatus::Lite->wrap( $app, @@ -106,3 +113,5 @@ if ( $ENV{PLACK_ENV} && $ENV{PLACK_ENV} eq 'development' ) { ); } +# Let's be explicit because implicit returns can be confusing +return $app; From 6e4446b8e04377c2473e30dbef3606f38e701743 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Fri, 17 Apr 2015 14:13:05 +0200 Subject: [PATCH 054/329] Silence tmpdir creation on vagrant. --- t/00_setup.t | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/t/00_setup.t b/t/00_setup.t index 783d30a00..e1e6807aa 100644 --- a/t/00_setup.t +++ b/t/00_setup.t @@ -3,14 +3,14 @@ use warnings; use lib 't/lib'; -use Test::More 0.96; use Path::Class qw(dir); +use Test::More 0.96; my $tmp_dir = dir('var/tmp'); -unless ( -d $tmp_dir ) { +unless ( -d $tmp_dir || -l $tmp_dir ) { $tmp_dir->mkpath(); } -ok( -d $tmp_dir, 'var/tmp exists for testing' ); +ok( ( -d $tmp_dir || -l $tmp_dir ), 'var/tmp exists for testing' ); done_testing(); From 03c6c0434b06645717dbe28bf9e7238c2b53076e Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Fri, 17 Apr 2015 14:15:26 +0200 Subject: [PATCH 055/329] Stop cloning ElasticSearchX::Model in Travis setup. --- .travis.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index d00792e43..11afa9797 100644 --- a/.travis.yml +++ b/.travis.yml @@ -29,7 +29,6 @@ env: before_install: - sudo service elasticsearch restart - - git clone https://github.com/CPAN-API/p5-elasticsearch-model.git - pwd - cpanm -n Devel::Cover::Report::Coveralls @@ -50,7 +49,7 @@ script: # Devel::Cover isn't in the cpanfile # but if it's installed into the global dirs this should work. # NOTE: No '-r' for prove; 't/fakecpan.t' does the recursion for us. - - HARNESS_PERL_SWITCHES=-MDevel::Cover=+ignore,local carton exec prove -lv -I p5-elasticsearch-model/lib t + - HARNESS_PERL_SWITCHES=-MDevel::Cover=+ignore,local carton exec prove -lv t after_success: - cover -report coveralls From 0cf9f08a15f3e838c6d5a6c8b74b1ede1d5f663b Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Fri, 17 Apr 2015 14:16:47 +0200 Subject: [PATCH 056/329] Upgrade ElasticSearchX::Model to 0.1.8 --- cpanfile | 2 +- cpanfile.snapshot | 54 +++++++++++++++++++++++------------------------ 2 files changed, 28 insertions(+), 28 deletions(-) diff --git a/cpanfile b/cpanfile index d35b09d77..7d87cddcb 100644 --- a/cpanfile +++ b/cpanfile @@ -43,7 +43,7 @@ requires 'Devel::Confess'; requires 'Digest::MD5'; requires 'Digest::SHA1'; requires 'EV'; -requires 'ElasticSearchX::Model', '0.1.7'; +requires 'ElasticSearchX::Model', '0.1.8'; requires 'Email::Address'; requires 'Email::Sender::Simple'; requires 'Email::Simple'; diff --git a/cpanfile.snapshot b/cpanfile.snapshot index 64a31dcbe..70b75d607 100644 --- a/cpanfile.snapshot +++ b/cpanfile.snapshot @@ -2868,31 +2868,31 @@ DISTRIBUTIONS Test::More 0.96 strict 0 warnings 0 - ElasticSearchX-Model-0.1.7 - pathname: P/PE/PERLER/ElasticSearchX-Model-0.1.7.tar.gz - provides: - ElasticSearchX::Model 0.001007 - ElasticSearchX::Model::Bulk 0.001007 - ElasticSearchX::Model::Document 0.001007 - ElasticSearchX::Model::Document::Mapping 0.001007 - ElasticSearchX::Model::Document::Role 0.001007 - ElasticSearchX::Model::Document::Set 0.001007 - ElasticSearchX::Model::Document::Trait::Attribute 0.001007 - ElasticSearchX::Model::Document::Trait::Class 0.001007 - ElasticSearchX::Model::Document::Trait::Class::ID 0.001007 - ElasticSearchX::Model::Document::Trait::Class::Timestamp 0.001007 - ElasticSearchX::Model::Document::Trait::Class::Version 0.001007 - ElasticSearchX::Model::Document::Trait::Field::ID 0.001007 - ElasticSearchX::Model::Document::Trait::Field::TTL 0.001007 - ElasticSearchX::Model::Document::Trait::Field::Timestamp 0.001007 - ElasticSearchX::Model::Document::Trait::Field::Version 0.001007 - ElasticSearchX::Model::Document::Types 0.001007 - ElasticSearchX::Model::Index 0.001007 - ElasticSearchX::Model::Role 0.001007 - ElasticSearchX::Model::Scroll 0.001007 - ElasticSearchX::Model::Trait::Class 0.001007 - ElasticSearchX::Model::Tutorial 0.001007 - ElasticSearchX::Model::Util 0.001007 + ElasticSearchX-Model-0.1.8 + pathname: O/OA/OALDERS/ElasticSearchX-Model-0.1.8.tar.gz + provides: + ElasticSearchX::Model 0.001008 + ElasticSearchX::Model::Bulk 0.001008 + ElasticSearchX::Model::Document 0.001008 + ElasticSearchX::Model::Document::Mapping 0.001008 + ElasticSearchX::Model::Document::Role 0.001008 + ElasticSearchX::Model::Document::Set 0.001008 + ElasticSearchX::Model::Document::Trait::Attribute 0.001008 + ElasticSearchX::Model::Document::Trait::Class 0.001008 + ElasticSearchX::Model::Document::Trait::Class::ID 0.001008 + ElasticSearchX::Model::Document::Trait::Class::Timestamp 0.001008 + ElasticSearchX::Model::Document::Trait::Class::Version 0.001008 + ElasticSearchX::Model::Document::Trait::Field::ID 0.001008 + ElasticSearchX::Model::Document::Trait::Field::TTL 0.001008 + ElasticSearchX::Model::Document::Trait::Field::Timestamp 0.001008 + ElasticSearchX::Model::Document::Trait::Field::Version 0.001008 + ElasticSearchX::Model::Document::Types 0.001008 + ElasticSearchX::Model::Index 0.001008 + ElasticSearchX::Model::Role 0.001008 + ElasticSearchX::Model::Scroll 0.001008 + ElasticSearchX::Model::Trait::Class 0.001008 + ElasticSearchX::Model::Tutorial 0.001008 + ElasticSearchX::Model::Util 0.001008 requirements: Carp 0 Class::Load 0 @@ -2900,7 +2900,6 @@ DISTRIBUTIONS DateTime::Format::Epoch::Unix 0 DateTime::Format::ISO8601 0 Digest::SHA1 0 - ElasticSearch 0.65 JSON 0 List::MoreUtils 0 List::Util 0 @@ -2910,9 +2909,10 @@ DISTRIBUTIONS MooseX::Attribute::Chained v1.0.1 MooseX::Attribute::Deflator v2.2.0 MooseX::Types 0 - MooseX::Types::ElasticSearch v0.0.2 + MooseX::Types::ElasticSearch v0.0.4 MooseX::Types::Structured 0 Scalar::Util 0 + Search::Elasticsearch 1.11 Sub::Exporter 0 Email-Abstract-3.007 pathname: R/RJ/RJBS/Email-Abstract-3.007.tar.gz From 6c3591fbf02f18033f7e4197a6ae3f37fed0dc49 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Fri, 17 Apr 2015 14:36:13 +0200 Subject: [PATCH 057/329] Fix bad merge in MetaCPAN::Server. --- lib/MetaCPAN/Server.pm | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/MetaCPAN/Server.pm b/lib/MetaCPAN/Server.pm index 1f06dea06..c79e21d0f 100755 --- a/lib/MetaCPAN/Server.pm +++ b/lib/MetaCPAN/Server.pm @@ -94,7 +94,6 @@ if ( $ENV{PLACK_ENV} && $ENV{PLACK_ENV} eq 'development' ) { # Should this be `unless ( $ENV{HARNESS_ACTIVE} ) {` ? { - my $scoreboard = __PACKAGE__->path_to(qw(var tmp scoreboard)); my $scoreboard = $ENV{HARNESS_ACTIVE} ? tempdir( CLEANUP => 1 ) From 66ce92ea9a542b52aad1b62abc9323d6199816f3 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Fri, 17 Apr 2015 15:02:04 +0200 Subject: [PATCH 058/329] Tidy --- lib/MetaCPAN/Document/Dependency.pm | 2 +- lib/MetaCPAN/Document/File.pm | 6 ++-- lib/MetaCPAN/Document/Module.pm | 2 +- t/lib/MetaCPAN/Tests/PSGI.pm | 21 ++++++------- t/lib/MetaCPAN/Tests/Release.pm | 47 +++++++++++++++++++++++------ 5 files changed, 51 insertions(+), 27 deletions(-) diff --git a/lib/MetaCPAN/Document/Dependency.pm b/lib/MetaCPAN/Document/Dependency.pm index c820855ce..c36d60e71 100644 --- a/lib/MetaCPAN/Document/Dependency.pm +++ b/lib/MetaCPAN/Document/Dependency.pm @@ -20,7 +20,7 @@ has version_numified => ( ); sub _build_version_numified { - return MetaCPAN::Util::numify_version( shift->version ).''; + return MetaCPAN::Util::numify_version( shift->version ) . ''; } __PACKAGE__->meta->make_immutable; diff --git a/lib/MetaCPAN/Document/File.pm b/lib/MetaCPAN/Document/File.pm index fb20195eb..5dcc02e55 100644 --- a/lib/MetaCPAN/Document/File.pm +++ b/lib/MetaCPAN/Document/File.pm @@ -122,8 +122,8 @@ Download URL of the release =cut has download_url => ( - is => 'ro', - required => 1 + is => 'ro', + required => 1 ); =head2 date @@ -537,7 +537,7 @@ has version_numified => ( sub _build_version_numified { my $self = shift; return 0 unless ( $self->version ); - return MetaCPAN::Util::numify_version( $self->version ).''; + return MetaCPAN::Util::numify_version( $self->version ) . ''; } =head2 mime diff --git a/lib/MetaCPAN/Document/Module.pm b/lib/MetaCPAN/Document/Module.pm index 4a09d34fc..86e1216ea 100644 --- a/lib/MetaCPAN/Document/Module.pm +++ b/lib/MetaCPAN/Document/Module.pm @@ -107,7 +107,7 @@ has associated_pod => ( sub _build_version_numified { my $self = shift; return 0 unless ( $self->version ); - return MetaCPAN::Util::numify_version( $self->version ).''; + return MetaCPAN::Util::numify_version( $self->version ) . ''; } my $bom diff --git a/t/lib/MetaCPAN/Tests/PSGI.pm b/t/lib/MetaCPAN/Tests/PSGI.pm index 18888c585..8fa6bdbb1 100644 --- a/t/lib/MetaCPAN/Tests/PSGI.pm +++ b/t/lib/MetaCPAN/Tests/PSGI.pm @@ -1,25 +1,22 @@ package MetaCPAN::Tests::PSGI; + use Test::Routine; use Test::More; -use MetaCPAN::Server::Test; +use MetaCPAN::Server::Test qw( app test_psgi ); sub psgi_app { my ( $self, $sub ) = @_; my @result; - my $wantarray = wantarray; - test_psgi app, sub { - defined $wantarray - ? $wantarray - ? ( @result = $sub->(@_) ) - : ( $result[0] = $sub->(@_) ) - : do { $sub->(@_); 1 }; - return; - }; + test_psgi( + app => app(), + client => sub { + @result = $sub->(@_); + }, + ); - return $wantarray ? @result : $result[0] if defined $wantarray; - return; + return $result[0]; } 1; diff --git a/t/lib/MetaCPAN/Tests/Release.pm b/t/lib/MetaCPAN/Tests/Release.pm index 4dea00c0a..2d064ae66 100644 --- a/t/lib/MetaCPAN/Tests/Release.pm +++ b/t/lib/MetaCPAN/Tests/Release.pm @@ -1,12 +1,44 @@ package MetaCPAN::Tests::Release; + use Test::Routine; -use Test::More; + +use version; + use HTTP::Request::Common; use List::Util (); -use version; +use LWP::ConsoleLogger::Easy qw( debug_ua ); +use MetaCPAN::Server::Test qw( app ); +use Plack::Test::Agent; +use Test::More; + +with 'MetaCPAN::Tests::Model'; + +has _test_agent => ( + is => 'ro', + isa => 'Plack::Test::Agent', + handles => ['get'], + lazy => 1, + default => sub { + my $self = shift; + return Plack::Test::Agent->new( + app => app(), + ua => $self->_user_agent, -with qw( - MetaCPAN::Tests::Model + # server => 'HTTP::Server::Simple', + ); + }, +); + +# set a server value above if you want to see debugging info +has _user_agent => ( + is => 'ro', + isa => 'LWP::UserAgent', + lazy => 1, + default => sub { + my $ua = LWP::UserAgent->new; + debug_ua($ua); + return $ua; + }, ); sub _build_type {'release'} @@ -73,12 +105,7 @@ sub file_content { # I couldn't get the Source model to work outside the app (I got # "No handler available for type 'application/octet-stream'", # strangely), so just do the http request. - return $self->psgi_app( - sub { - shift->( GET "/source/$self->{author}/$self->{name}/$path" ) - ->content; - } - ); + return $self->get("/source/$self->{author}/$self->{name}/$path")->content; } sub file_by_path { From be97c2677522e7f0427cf614f51adb8b7ad31d45 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Fri, 17 Apr 2015 15:10:27 +0200 Subject: [PATCH 059/329] Move Perl::Critic checks to TidyAll. --- .perlcriticrc | 1 + .tidyallrc | 53 +++++++++++++++++++++ lib/MetaCPAN/Document/Dependency.pm | 2 +- lib/MetaCPAN/Document/Module.pm | 2 +- t/perl-critic.t | 73 ----------------------------- 5 files changed, 56 insertions(+), 75 deletions(-) delete mode 100644 t/perl-critic.t diff --git a/.perlcriticrc b/.perlcriticrc index 6c9e6659f..937500106 100644 --- a/.perlcriticrc +++ b/.perlcriticrc @@ -10,6 +10,7 @@ verbose = 11 [-RegularExpressions::RequireDotMatchAnything] [-RegularExpressions::RequireExtendedFormatting] [-RegularExpressions::RequireLineBoundaryMatching] +[-ValuesAndExpressions::ProhibitAccessOfPrivateData] [-Variables::ProhibitPunctuationVars] [CodeLayout::RequireTrailingCommas] diff --git a/.tidyallrc b/.tidyallrc index 614f12c3c..572ad0026 100644 --- a/.tidyallrc +++ b/.tidyallrc @@ -4,3 +4,56 @@ select = bin/daemon-control.pl select = app.psgi ignore = t/var/**/* argv = --profile=$ROOT/.perltidyrc + +[PerlCritic] +select = {lib,t}/**/*.{pl,pm,t,psgi} +ignore = t/var/**/* +ignore = bin/build_test_CPAN_dir.pl +ignore = bin/check_json.pl +ignore = bin/convert_authors.pl +ignore = bin/get_fields.pl +ignore = bin/mirror_cpan_for_developers.pl +ignore = bin/unlisted_prereqs.pl +ignore = bin/write_config_json +ignore = lib/Catalyst/Action/Deserialize/MetaCPANSanitizedJSON.pm +ignore = lib/Catalyst/Authentication/Store/Proxy.pm +ignore = lib/Catalyst/Plugin/OAuth2/Provider.pm +ignore = lib/Catalyst/Plugin/Session/Store/ElasticSearch.pm +ignore = lib/MetaCPAN/Document/Distribution.pm +ignore = lib/MetaCPAN/Document/File.pm +ignore = lib/MetaCPAN/Document/Rating.pm +ignore = lib/MetaCPAN/Document/Release.pm +ignore = lib/MetaCPAN/Model.pm +ignore = lib/MetaCPAN/Pod/XHTML.pm +ignore = lib/MetaCPAN/Role/Common.pm +ignore = lib/MetaCPAN/Script/Author.pm +ignore = lib/MetaCPAN/Script/Backup.pm +ignore = lib/MetaCPAN/Script/CPANTesters.pm +ignore = lib/MetaCPAN/Script/Check.pm +ignore = lib/MetaCPAN/Script/First.pm +ignore = lib/MetaCPAN/Script/Latest.pm +ignore = lib/MetaCPAN/Script/Mapping.pm +ignore = lib/MetaCPAN/Script/Pagerank.pm +ignore = lib/MetaCPAN/Script/PerlMongers.pm +ignore = lib/MetaCPAN/Script/Query.pm +ignore = lib/MetaCPAN/Script/ReindexDist.pm +ignore = lib/MetaCPAN/Script/Release.pm +ignore = lib/MetaCPAN/Script/Runner.pm +ignore = lib/MetaCPAN/Script/Tickets.pm +ignore = lib/MetaCPAN/Script/Watcher.pm +ignore = lib/MetaCPAN/Server/Controller.pm +ignore = lib/MetaCPAN/Server/Controller/Changes.pm +ignore = lib/MetaCPAN/Server/Controller/File.pm +ignore = lib/MetaCPAN/Server/Controller/Login.pm +ignore = lib/MetaCPAN/Server/Controller/Login/PAUSE.pm +ignore = lib/MetaCPAN/Server/Controller/Login/Twitter.pm +ignore = lib/MetaCPAN/Server/Controller/Root.pm +ignore = lib/MetaCPAN/Server/Controller/Search/Autocomplete.pm +ignore = lib/MetaCPAN/Server/Controller/Source.pm +ignore = lib/MetaCPAN/Server/Controller/User/Favorite.pm +ignore = lib/MetaCPAN/Server/Model/CPAN.pm +ignore = lib/MetaCPAN/Server/Model/Source.pm +ignore = lib/MetaCPAN/Server/View/JSON.pm +ignore = lib/MetaCPAN/Server/View/Pod.pm +ignore = lib/MetaCPAN/Util.pm +ignore = lib/Plack/Session/Store/ElasticSearch.pm diff --git a/lib/MetaCPAN/Document/Dependency.pm b/lib/MetaCPAN/Document/Dependency.pm index c36d60e71..6fa71ec34 100644 --- a/lib/MetaCPAN/Document/Dependency.pm +++ b/lib/MetaCPAN/Document/Dependency.pm @@ -20,7 +20,7 @@ has version_numified => ( ); sub _build_version_numified { - return MetaCPAN::Util::numify_version( shift->version ) . ''; + return MetaCPAN::Util::numify_version( shift->version ) . q{}; } __PACKAGE__->meta->make_immutable; diff --git a/lib/MetaCPAN/Document/Module.pm b/lib/MetaCPAN/Document/Module.pm index 86e1216ea..9893cd788 100644 --- a/lib/MetaCPAN/Document/Module.pm +++ b/lib/MetaCPAN/Document/Module.pm @@ -107,7 +107,7 @@ has associated_pod => ( sub _build_version_numified { my $self = shift; return 0 unless ( $self->version ); - return MetaCPAN::Util::numify_version( $self->version ) . ''; + return MetaCPAN::Util::numify_version( $self->version ) . q{}; } my $bom diff --git a/t/perl-critic.t b/t/perl-critic.t deleted file mode 100644 index 2f6a27dc4..000000000 --- a/t/perl-critic.t +++ /dev/null @@ -1,73 +0,0 @@ -use strict; -use warnings; - -use Test::More; -use Perl::Critic; -use Test::Perl::Critic; - -# NOTE: New files will be tested automatically. - -# FIXME: Things should be removed from (not added to) this list. -# Temporarily skip any files that existed before adding the tests. -# Eventually these should all be removed (once the files are cleaned up). -my %skip = map { ( $_ => 1 ) } qw( - bin/build_test_CPAN_dir.pl - bin/check_json.pl - bin/convert_authors.pl - bin/get_fields.pl - bin/mirror_cpan_for_developers.pl - bin/unlisted_prereqs.pl - bin/write_config_json - lib/Catalyst/Action/Deserialize/MetaCPANSanitizedJSON.pm - lib/Catalyst/Authentication/Store/Proxy.pm - lib/Catalyst/Plugin/OAuth2/Provider.pm - lib/Catalyst/Plugin/Session/Store/ElasticSearch.pm - lib/MetaCPAN/Document/Distribution.pm - lib/MetaCPAN/Document/File.pm - lib/MetaCPAN/Document/Rating.pm - lib/MetaCPAN/Document/Release.pm - lib/MetaCPAN/Model.pm - lib/MetaCPAN/Pod/XHTML.pm - lib/MetaCPAN/Role/Common.pm - lib/MetaCPAN/Script/Author.pm - lib/MetaCPAN/Script/Backup.pm - lib/MetaCPAN/Script/CPANTesters.pm - lib/MetaCPAN/Script/Check.pm - lib/MetaCPAN/Script/First.pm - lib/MetaCPAN/Script/Latest.pm - lib/MetaCPAN/Script/Mapping.pm - lib/MetaCPAN/Script/Pagerank.pm - lib/MetaCPAN/Script/PerlMongers.pm - lib/MetaCPAN/Script/Query.pm - lib/MetaCPAN/Script/ReindexDist.pm - lib/MetaCPAN/Script/Release.pm - lib/MetaCPAN/Script/Runner.pm - lib/MetaCPAN/Script/Tickets.pm - lib/MetaCPAN/Script/Watcher.pm - lib/MetaCPAN/Server/Controller.pm - lib/MetaCPAN/Server/Controller/Changes.pm - lib/MetaCPAN/Server/Controller/File.pm - lib/MetaCPAN/Server/Controller/Login.pm - lib/MetaCPAN/Server/Controller/Login/PAUSE.pm - lib/MetaCPAN/Server/Controller/Login/Twitter.pm - lib/MetaCPAN/Server/Controller/Root.pm - lib/MetaCPAN/Server/Controller/Search/Autocomplete.pm - lib/MetaCPAN/Server/Controller/Source.pm - lib/MetaCPAN/Server/Controller/User/Favorite.pm - lib/MetaCPAN/Server/Model/CPAN.pm - lib/MetaCPAN/Server/Model/Source.pm - lib/MetaCPAN/Server/View/JSON.pm - lib/MetaCPAN/Server/View/Pod.pm - lib/MetaCPAN/Util.pm - lib/Plack/Session/Store/ElasticSearch.pm -); - -my @files = grep { !$skip{$_} } - grep { !m{^t/var/} } - ( 'app.psgi', Perl::Critic::Utils::all_perl_files(qw( bin lib t )) ); - -foreach my $file (@files) { - critic_ok( $file, $file ); -} - -done_testing(); From 348cdf888feb5e86d146582be4134dcc8e6c7874 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Fri, 17 Apr 2015 15:23:42 +0200 Subject: [PATCH 060/329] Upgrades ElasticSearchX::Model to 0.1.9 --- cpanfile | 2 +- cpanfile.snapshot | 51 ++++++++++++++++++++++++----------------------- 2 files changed, 27 insertions(+), 26 deletions(-) diff --git a/cpanfile b/cpanfile index 7d87cddcb..5a1d13ee7 100644 --- a/cpanfile +++ b/cpanfile @@ -43,7 +43,7 @@ requires 'Devel::Confess'; requires 'Digest::MD5'; requires 'Digest::SHA1'; requires 'EV'; -requires 'ElasticSearchX::Model', '0.1.8'; +requires 'ElasticSearchX::Model', '0.1.9'; requires 'Email::Address'; requires 'Email::Sender::Simple'; requires 'Email::Simple'; diff --git a/cpanfile.snapshot b/cpanfile.snapshot index 70b75d607..a2f41a0f0 100644 --- a/cpanfile.snapshot +++ b/cpanfile.snapshot @@ -2868,31 +2868,32 @@ DISTRIBUTIONS Test::More 0.96 strict 0 warnings 0 - ElasticSearchX-Model-0.1.8 - pathname: O/OA/OALDERS/ElasticSearchX-Model-0.1.8.tar.gz - provides: - ElasticSearchX::Model 0.001008 - ElasticSearchX::Model::Bulk 0.001008 - ElasticSearchX::Model::Document 0.001008 - ElasticSearchX::Model::Document::Mapping 0.001008 - ElasticSearchX::Model::Document::Role 0.001008 - ElasticSearchX::Model::Document::Set 0.001008 - ElasticSearchX::Model::Document::Trait::Attribute 0.001008 - ElasticSearchX::Model::Document::Trait::Class 0.001008 - ElasticSearchX::Model::Document::Trait::Class::ID 0.001008 - ElasticSearchX::Model::Document::Trait::Class::Timestamp 0.001008 - ElasticSearchX::Model::Document::Trait::Class::Version 0.001008 - ElasticSearchX::Model::Document::Trait::Field::ID 0.001008 - ElasticSearchX::Model::Document::Trait::Field::TTL 0.001008 - ElasticSearchX::Model::Document::Trait::Field::Timestamp 0.001008 - ElasticSearchX::Model::Document::Trait::Field::Version 0.001008 - ElasticSearchX::Model::Document::Types 0.001008 - ElasticSearchX::Model::Index 0.001008 - ElasticSearchX::Model::Role 0.001008 - ElasticSearchX::Model::Scroll 0.001008 - ElasticSearchX::Model::Trait::Class 0.001008 - ElasticSearchX::Model::Tutorial 0.001008 - ElasticSearchX::Model::Util 0.001008 + ElasticSearchX-Model-0.1.9 + pathname: O/OA/OALDERS/ElasticSearchX-Model-0.1.9.tar.gz + provides: + ElasticSearchX::Model 0.001009 + ElasticSearchX::Model::Bulk 0.001009 + ElasticSearchX::Model::Document 0.001009 + ElasticSearchX::Model::Document::EmbeddedRole 0.001009 + ElasticSearchX::Model::Document::Mapping 0.001009 + ElasticSearchX::Model::Document::Role 0.001009 + ElasticSearchX::Model::Document::Set 0.001009 + ElasticSearchX::Model::Document::Trait::Attribute 0.001009 + ElasticSearchX::Model::Document::Trait::Class 0.001009 + ElasticSearchX::Model::Document::Trait::Class::ID 0.001009 + ElasticSearchX::Model::Document::Trait::Class::Timestamp 0.001009 + ElasticSearchX::Model::Document::Trait::Class::Version 0.001009 + ElasticSearchX::Model::Document::Trait::Field::ID 0.001009 + ElasticSearchX::Model::Document::Trait::Field::TTL 0.001009 + ElasticSearchX::Model::Document::Trait::Field::Timestamp 0.001009 + ElasticSearchX::Model::Document::Trait::Field::Version 0.001009 + ElasticSearchX::Model::Document::Types 0.001009 + ElasticSearchX::Model::Index 0.001009 + ElasticSearchX::Model::Role 0.001009 + ElasticSearchX::Model::Scroll 0.001009 + ElasticSearchX::Model::Trait::Class 0.001009 + ElasticSearchX::Model::Tutorial 0.001009 + ElasticSearchX::Model::Util 0.001009 requirements: Carp 0 Class::Load 0 From c42db635181c32ecf628725ddb2317f0f67e0c6d Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Fri, 17 Apr 2015 15:24:49 +0200 Subject: [PATCH 061/329] Don't include cpanm build log in Travis output. --- .travis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 11afa9797..d93fd7238 100644 --- a/.travis.yml +++ b/.travis.yml @@ -54,8 +54,8 @@ script: after_success: - cover -report coveralls -after_script: - - cat ~/.cpanm/build.log +#after_script: +# - cat ~/.cpanm/build.log services: - elasticsearch From 3a2ad549cd9e63d788459ef974ffb6490296a9ab Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Fri, 17 Apr 2015 16:02:43 +0200 Subject: [PATCH 062/329] Add Perl::Critic::Nits to cpanfile. --- cpanfile | 1 + cpanfile.snapshot | 9 +++++++++ 2 files changed, 10 insertions(+) diff --git a/cpanfile b/cpanfile index 5a1d13ee7..e4e906ff4 100644 --- a/cpanfile +++ b/cpanfile @@ -165,6 +165,7 @@ test_requires 'HTTP::Cookies'; test_requires 'LWP::ConsoleLogger'; test_requires 'Module::Faker', '0.015'; test_requires 'Module::Faker::Dist', '0.010'; +test_requires 'Perl::Critic::Nits'; test_requires 'Plack::Handler::HTTP::Server::Simple'; test_requires 'Plack::Test::Agent'; test_requires 'Test::Aggregate::Nested', '0.371'; diff --git a/cpanfile.snapshot b/cpanfile.snapshot index a2f41a0f0..4ac0caee4 100644 --- a/cpanfile.snapshot +++ b/cpanfile.snapshot @@ -6630,6 +6630,15 @@ DISTRIBUTIONS strict 0 version 0.77 warnings 0 + Perl-Critic-Nits-v1.0.0 + pathname: K/KC/KCOWGILL/Perl-Critic-Nits-v1.0.0.tar.gz + provides: + Perl::Critic::Nits undef + Perl::Critic::Policy::ValuesAndExpressions::ProhibitAccessOfPrivateData undef + requirements: + ExtUtils::MakeMaker 0 + Perl::Critic 1.07 + Test::More 0 Perl-Tidy-20140328 pathname: S/SH/SHANCOCK/Perl-Tidy-20140328.tar.gz provides: From 51b93b6149d6ed1df4b058173901fbb1d077e53c Mon Sep 17 00:00:00 2001 From: Clinton Gormley Date: Fri, 17 Apr 2015 13:34:03 +0200 Subject: [PATCH 063/329] Document::File::Set::prefix doesn't seem to be used anywhere, and seems to be a copy of autocomplete() Deleting --- lib/MetaCPAN/Document/File.pm | 63 ----------------------------------- 1 file changed, 63 deletions(-) diff --git a/lib/MetaCPAN/Document/File.pm b/lib/MetaCPAN/Document/File.pm index 5dcc02e55..9793dfe24 100644 --- a/lib/MetaCPAN/Document/File.pm +++ b/lib/MetaCPAN/Document/File.pm @@ -900,69 +900,6 @@ sub find_module_names_provided_by { ); } -# TODO: figure out what uses this and write tests for it -sub prefix { - my ( $self, $prefix ) = @_; - my @query = split( /\s+/, $prefix ); - my $should = [ - map { - { - simple_query_string => { - fields => [ - 'documentation.analyzed', 'documentation.camelcase' - ], - query => "$_*" - } - } - } grep {$_} @query - ]; - return $self->query( - { - filtered => { - query => { - function_score => { - query => { bool => { should => $should } }, - - script_score => { - script => - "_score - doc['documentation'].value.length()/100", - } - }, - }, - filter => { - and => [ - { - not => { - filter => { - or => [ - map { - +{ - term => { - 'file.distribution' => $_ - } - } - } @ROGUE_DISTRIBUTIONS - - ] - } - } - }, - { exists => { field => 'documentation' } }, - { term => { 'file.indexed' => \1 } }, - { term => { 'file.status' => 'latest' } }, - { - not => { - filter => - { term => { 'file.authorized' => \0 } } - } - } - ] - } - } - } - ); -} - =head2 history Find the history of a given module/documentation. From 6cb1aba9556c56e0ccfd543e2b1d8395eece918f Mon Sep 17 00:00:00 2001 From: Clinton Gormley Date: Fri, 17 Apr 2015 16:04:00 +0200 Subject: [PATCH 064/329] First take on providing an API which, given a module name and optionally a version or version range, and a dev flag, will return the single best download_url for the release that contains it. --- lib/MetaCPAN/Document/File.pm | 229 ++++++++++++++++++++++++++++------ 1 file changed, 194 insertions(+), 35 deletions(-) diff --git a/lib/MetaCPAN/Document/File.pm b/lib/MetaCPAN/Document/File.pm index 9793dfe24..2e7a650da 100644 --- a/lib/MetaCPAN/Document/File.pm +++ b/lib/MetaCPAN/Document/File.pm @@ -157,8 +157,8 @@ has description => ( sub _build_description { my $self = shift; return undef unless ( $self->is_perl_file ); - my $section = MetaCPAN::Util::extract_section( ${ $self->content }, - 'DESCRIPTION' ); + my $section + = MetaCPAN::Util::extract_section( ${ $self->content }, 'DESCRIPTION' ); return undef unless ($section); my $parser = Pod::Text->new; my $text = ""; @@ -700,7 +700,7 @@ Expects a C<$meta> parameter which is an instance of L. For each package (L) in the file and based on L it is decided, whether the module should have a true L attribute. -If there are any packages with leading underscores, the module gets a false +If there are any packages with leading underscores, the module gets a false L attribute, because PAUSE doesn't allow this kind of name for packages (https://github.com/andk/pause/blob/master/lib/PAUSE/pmfile.pm#L249). @@ -739,7 +739,7 @@ sub set_indexed { # .pm file with no package declaration but pod should be indexed !@{ $self->module } || - # don't index if the documentation doesn't match any of its modules + # don't index if the documentation doesn't match any of its modules !!grep { $self->documentation eq $_->name } @{ $self->module } ) if ( $self->documentation ); } @@ -810,8 +810,7 @@ my @ROGUE_DISTRIBUTIONS sub find { my ( $self, $module ) = @_; my @candidates = $self->index->type("file")->filter( - { - bool => { + { bool => { must => [ { term => { 'indexed' => \1, } }, { term => { 'authorized' => \1 } }, @@ -819,19 +818,16 @@ sub find { ], should => [ { term => { 'documentation' => $module } }, - { - nested => { - path => 'module', - filter => - { term => { 'module.name' => $module } }, + { nested => { + path => 'module', + filter => { term => { 'module.name' => $module } }, } } ] } } )->sort( - [ - { 'date' => { order => "desc" } }, + [ { 'date' => { order => "desc" } }, { 'mime' => { order => "asc" } }, { 'stat.mtime' => { order => 'desc' } } ] @@ -857,8 +853,7 @@ sub find_pod { if ( $module && ( my $pod = $module->associated_pod ) ) { my ( $author, $release, @path ) = split( /\//, $pod ); return $self->get( - { - author => $author, + { author => $author, release => $release, path => join( "/", @path ), } @@ -875,8 +870,7 @@ sub find_pod { sub find_provided_by { my ( $self, $release ) = @_; return $self->filter( - { - bool => { + { bool => { must => [ { term => { 'release' => $release->{name} } }, { term => { 'author' => $release->{author} } }, @@ -900,6 +894,178 @@ sub find_module_names_provided_by { ); } +=head2 find_download_url + + +cpanm Foo +=> status: latest, maturity: released + +cpanm --dev Foo +=> status: -backpan, sort_by: version_numified,date + +cpanm Foo~1.0 +=> status: latest, maturity: released, module.version_numified: gte: 1.0 + +cpanm --dev Foo~1.0 +-> status: -backpan, module.version_numified: gte: 1.0, sort_by: version_numified,date + +cpanm Foo~<2 +=> maturity: released, module.version_numified: lt: 2, sort_by: status,version_numified,date + +cpanm --dev Foo~<2 +=> status: -backpan, module.version_numified: lt: 2, sort_by: status,version_numified,date + + $file->find_download_url( "Foo", { version => $version, dev => 0|1 }); + +Sorting: + + if it's stable: + prefer latest > cpan > backpan + then sort by version desc + then sort by date descending (rev chron) + + if it's dev: + sort by version desc + sort by date descending (reverse chronologically) + + +=cut + +sub find_download_url { + my ( $self, $module, $args ) = @_; + $args ||= {}; + + my $dev = $args->{dev}; + my $version = $args->{version}; + my $explicit_version = $version && $version =~ /==/; + + # exclude backpan if dev, and + # require released modules if neither dev nor explicit version + my @filters + = $dev ? { not => { term => { status => 'backpan' } } } + : !$explicit_version ? { term => { maturity => 'released' } } + : (); + + # filters to be applied to the nested modules + my $module_f = { + nested => { + path => 'module', + filter => { + bool => { + must => [ + { term => { "module.authorized" => \1 } }, + { term => { "module.indexed" => \1 } }, + { term => { "module.name" => $module } }, + $self->_version_filters($version) + ] + } + } + } + }; + + my $filter + = @filters + ? { bool => { must => [ @filters, $module_f ] } } + : $module_f; + + # sort by score, then version desc, then date desc + my @sort = ( + "_score", + { "module.version_numified" => { + mode => 'max', + order => 'desc', + nested_filter => $module_f + } + }, + { date => { order => 'desc' } } + ); + + my $query; + + if ($dev) { + $query = { filtered => { filter => $filter } }; + } + else { + # if not dev, then prefer latest > cpan > backpan + $query = { + function_score => { + filter => { bool => { must => \@filters } }, + score_mode => 'first', + boost_mode => 'replace', + functions => [ + { filter => { term => { status => 'latest' } }, + weight => 3 + }, + { filter => { term => { status => 'cpan' } }, weight => 2 }, + { filter => { match_all => {} }, weight => 1 }, + ] + } + }; + } + + return $self->size(1)->query($query)->source('download_url') + ->sort( \@sort ); + +} + +sub _version_filters { + my ( $self, $version ) = @_; + + return () unless $version; + + if ( $version =~ s/^==\s*// ) { + return { term => { 'module.version' => $version }, }; + } + elsif ( $version !~ /\s/ ) { + return { + range => { + 'module.version_numified' => + { 'gte' => $self->_numify($version) } + }, + }; + } + else { + my %ops = qw(< lt <= lte > gt >= gte); + my ( %range, @exclusion ); + my @requirements = split /,\s*/, $version; + for my $r (@requirements) { + if ( $r =~ s/^([<>]=?)\s*// ) { + $range{ $ops{$1} } = $self->_numify($r); + } + elsif ( $r =~ s/\!=\s*// ) { + push @exclusion, $self->_numify($r); + } + } + + my @filters + = ( { range => { 'module.version_numified' => \%range } }, ); + + if (@exclusion) { + push @filters, { + not => { + or => [ + map { + +{ term => { + 'module.version_numified' => + $self->_numify($_) + } + } + } @exclusion + ] + }, + }; + } + + return @filters; + } +} + +sub _numify { + my ( $self, $ver ) = @_; + $ver =~ s/_//g; + version->new($ver)->numify; +} + =head2 history Find the history of a given module/documentation. @@ -910,8 +1076,7 @@ sub history { my ( $self, $type, $module, @path ) = @_; my $search = $type eq "module" ? $self->filter( - { - nested => { + { nested => { path => "module", query => { constant_score => { @@ -930,18 +1095,16 @@ sub history { } ) : $type eq "file" ? $self->filter( - { - bool => { + { bool => { must => [ - { term => { "file.path" => join( "/", @path ) } }, + { term => { "file.path" => join( "/", @path ) } }, { term => { "file.distribution" => $module } }, ] } } ) : $self->filter( - { - bool => { + { bool => { must => [ { term => { "file.documentation" => $module } }, { term => { "file.indexed" => \1 } }, @@ -959,15 +1122,13 @@ sub autocomplete { return $self unless $query; return $self->search_type('dfs_query_then_fetch')->query( - { - filtered => { + { filtered => { query => { multi_match => { - query => $query, - type => 'most_fields', - fields => [ - 'documentation', 'documentation.edge_camelcase' - ], + query => $query, + type => 'most_fields', + fields => + [ 'documentation', 'documentation.edge_camelcase' ], analyzer => 'camelcase', minimum_should_match => "80%" }, @@ -981,10 +1142,8 @@ sub autocomplete { { term => { 'authorized' => \1 } } ], must_not => [ - { - terms => { - 'distribution' => \@ROGUE_DISTRIBUTIONS - } + { terms => + { 'distribution' => \@ROGUE_DISTRIBUTIONS } }, ], From af9fec4342e5c118d8fc92f49b5b5c7754d1eb87 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Fri, 17 Apr 2015 17:15:48 +0200 Subject: [PATCH 065/329] Add some fake dists to fakecpan. --- ...Test-Dummy-Perl5-VersionBump-0.01.tar.gz.dist | Bin 0 -> 8987 bytes ...Test-Dummy-Perl5-VersionBump-0.02.tar.gz.dist | Bin 0 -> 9002 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 t/var/fakecpan/configs/MIYAGAWA_CPAN-Test-Dummy-Perl5-VersionBump-0.01.tar.gz.dist create mode 100644 t/var/fakecpan/configs/MIYAGAWA_CPAN-Test-Dummy-Perl5-VersionBump-0.02.tar.gz.dist diff --git a/t/var/fakecpan/configs/MIYAGAWA_CPAN-Test-Dummy-Perl5-VersionBump-0.01.tar.gz.dist b/t/var/fakecpan/configs/MIYAGAWA_CPAN-Test-Dummy-Perl5-VersionBump-0.01.tar.gz.dist new file mode 100644 index 0000000000000000000000000000000000000000..b70271c26f558629e4eddfa3af157a91baea4a64 GIT binary patch literal 8987 zcmb7~Q+FJW*S05iGO^vHX>2!UW3#bs+nT6hlSyOSwi?@PY#a0Z-v2jv*SZe&+Uq{J zPxrbuc`PEJ9+OQ20CVx(R&8&z>1CrQUtD!a**p#{V>NiQi!C?v293ZZE7M8s8`ZkK zUMwS@Pw#W_W6$>8ahh&3)PVfTCb7Hyg;9lj`&*}BvJ!LF#YIlcuZwv%ez2oq`KY5^ zpsLDwc%L&r*nYXZ>2>O=+hW0{sRa~K7>Mz_y>=-Csfet+;y!)rcv$P}tFF9QdL%;V z`30)cb)QTcjwbHYEZ*86?RdHrzcX61x<@4Ok3Zku9_7_Z_#7!a!l+2MWYLAWcCPJ# zuzoz*IN~203R|6jDlT>3=xD`5oL(WKkF*AiX#NLuar?gnDX%uQ<27=rcvQq!|BS1# zD57IPM(+HduCM2mMhu+1yvWei3^9*$@F!?oRIBLcwEyx(cZ#}51a5bz?7;0k%gl^O zHEF(8Yua8*MmT%PD5GPbWp{Z>hjh2M3Hmm;e+jVW{InSPeH+N`99kD+*gULuYbadG z@)z>CuKHb3xmEKJLVOJ@CDQvwJRsZMlh(R8$1er!3*?In%`c}70`^#14OD|TAP zq!*m-Rn0v5k}Y;CP_I9iJpr z4rrj_0ex)3`o1G%8eT=HncMMCz3scTSH*HG!aO7aQ2vq!q&TmoL#S@1uOuG(1*qF= zH2pmRJRkZ*7ls4cYM+rtq~!)XT~?ry{T@xjMu?Ht4+unKc>B{WUh!>P&iH+r#CELb z>cKDv#wXyj#9(`qzy$cOdMnxbt$p`Fb|t1Ur3DVNpYGTA@0aI!ZK%6N|hwPW8qoe+Y(n?=Vltc zO%Xa4kuAB)>r$e|LLj$|He4nUv3kd=q80>X2n>76B_2=-*qd)b+I5(H$GBj433k!% z?v#J)=1H{N5`nAhubQ~d^6Fn@$^ImpiV1LB-nsQh9C5-17EqT7W?=mlz+=#R}} z<`GSiV9(yIWa=Ftp?r2oo*v4~pB7lNl0u?j-X4truCK4xKOH+T+^Th-`z|J^;`hJ5 zc3f@Aw(4My9|rvj#79ssoYo^^566Hbc`C}n*NN{VgZ*nQ06xs@?Bs`UqG>wS<@;be z#v@W}CNPxQ(}1lW)nqM2UM(HK;c0#767j$WoPd&}{jMU7)sseyvv(Hmioc*}tyf(TefI(KP}u{}ON)Z|f+@f97hWHV3-I;kT>0tz29 zStK6n3Q0K<7P-xVK=I~>V4nizCn8ErHB!U+g?$FQyJN7lT80$SNHXj{1NkVZcIEHa zY~^97H;E1zlYadE8D-%bj17dAS-G2iZoojo|$}WwIguJ>e z@6gP6%Vg<9#ii_}hbm1@A&!Q-1&Si92wMq|z`hEW-7%FkYxzeqNeFj3a1o`Z?cHlj zohT9#zxR^>mYnSYwRN4Mb9x6o8qOpv?g5QToJC^oi%qV(uysbp40$PuiqjY7BtXR= zDw);#Qv`G?>>}(0F})Fiek{JROsn&L(Q_J0_~+hnLnpbvgYc=AjE8jv6zjXu_|T$@9>vQe$eMcKQ{f=0Nle6c*-xM(6SQtsGkrX z`&pWrw3bVSjt*KVSaJ|o=Es2y6rC>82EPRjKc^ETK-@n(IeRadl>wCj+SM@2*S@IN z##XUj{cpyk32Q4o;}#6Bf>DeedGtTYl4oI-F{>ceGR?ZsPJ}>F+9#1tiOGNBFU8&F zd=`@T(2!`J4!t0{MEyyOv~R6{yn+NIB<1n_x!_f3u(5xg%ySo;{Hi}rT0NVs&I&+{ z5=mjeM-oT2;oz1QEv3VCqByj}5*S$h-JlJd%I3Qd3`!tH-9z203=0J^gq3c!@rsr( zSV8xC+BOz;THlcgSUK}*w8q?;YPN9jNb$g4+;m~-G7WMUifg6bcV?q%Rm(q@PPv1upf!p_5& z$gubESIn}#hpblnjgIS3sY4Qf=Q`52v08^9O8pH2^sC=PkzE7Go(g;vk2)E$F4VkT zW`*n@bn!2${Q_r$6VjKf9wTD}?cIIBOEc5Gqv9kJ`-*i68 zo^*dnAU2Avn9O>F=4SQ|B;K+4)@vEgWYz3Hr@ut#^z@~n_6Uvt$2OcI&TlwW&g&!* z!mQT5_7GMe^Je+9(h||5iBeJnD;4{%lX7iLMBn&UTy=JCxm?S=AQ6-*fvDNdU7#HR z8AakdajqzLl=-Q~QtG82DF#<;pI2m79rt30d=oK#C9lIW%5jQX6pq@=Q&6u!f?wB! z!+?k776sb;O35PJwE|AaFKBqw?%5l{7`zj@E?Miz`W10kjF4b)RKH~ya$FvJ&S}h! zI*O@FiobD)+r_wev*1l3mVg-nGc629kGDExBNa|3nHf8p>;VJdVCckMngP8D7NWve z-)yb$v&dd*JB`~cP?tDSNERwHP)E7STr`9Bj^INu+7ewlgamev?6!XprGt;fDps^P zjt8&G0%~A{FAKR)prXM%fQpU&`jp26oq82176Tpe1sOhK?G9n|l>hf>iK_XqT1JFx8SyQ8Hj&=UFu zi;{@5X2HnE*unqCVSMrHOjeNGbFZ**cBZUkVkuYzl@`Z%PRB(ivCw3wgI2i*5s?Pq zadI|PY6UUfg8Sa((D%}K)RIuV3GA^D^oA=&3Hpw2DB_9};q{ReV8$8DPpKOAVE4g@RT%PAlJWi08xBwd%7ehv4H69SVFtS;NkEA+vQ=nl zG$QmXS|U_XkZdniJ|~+m0u*d6Oml+)>-9Wk^zFP2TSF}$nkK)M1_NYiC86UobBVYvMbsGg)Cp<=h z`M}l(#tXXGHI*xjcbm0L;}xn3>p%Xu%RcgKMtYY zylU~1%aqGWJQU0i+km}#ET1PbPjb8`+cu8cJiEPNo9mFw$8;cCaADZTpP4r9RltKJ zT5l$N4@nZ=&%96xc*->QwK?XjBTzQ_RlrL3b+n+|Cn0Ked`rnuA6mh#~KYwdi{ z3pt6xKhCK`XpUDBY6RmTDOpJvyDq&r81Ed#oy1^vfyUH}d8{ylqH+hM*{0@6SlaKs zY^Vc;jrl~kAYCIXtf@ckEu~U1pQO2Ca^=~y&?x3Cm&U_%rcuyyPO`@DcV5nh*B>cF z8774p&XMt~at5Netr=vJ*+>>zV;2MRKPL0KO$*vkS4GT`hEQP-*f*>Y`_zS9sHek_ z_@)z=vW+pgl5%2|jdP867T+hJr{jdg^x0OK8-lWfC;%7@39_%w`*5`6z10l-;g9{b z2}7x}Ojk!Xgi7O&vHq{f%^oks^lJA)pc4j(Jl!3riqmmaahbrJGZktNjL7AD!rZnn zFcgrT`H8HWWwhD>S3*Se)c`PN$dH#!pbx|0%HI%YKH2wY_-BC4iP$l+0VQ>OP zgl8!Wr~rkTw%_oJ@P=3TFR)cZ6@b{d z;|F`CC}9)BXYlNpqMA?oWz4lt^oxa+dK*bYiUPEZj>}A|9-OUxNUBB|h-r!}w42yW z8-58^)7hO4TvU;gBv%ZR#4<&S-_*$b z@uBaQv7fd)Eov@G7vI*Pko8BNVsr{V@W;01w~J?G%2;mWdL~SdUj;>b?`)cKZlnTu zK6waYg2SY$Xc*`alOiPV#RySUmRB5rceh-yz2F_ybS?^-LR{lm`H?nckQ6#cdY>%R z2et^~krIc$Nm9;?Q16E};H%W2%AkC)9fn;rI{NFFjFiy_4mt?S$O87Hu_j-TyegXB zq&gF`1?Pz99e@5o6FudPdLN!P6d4RfoN9u`g!0Wrdg0bK=AGJ&KM~K9!%ZbQ^%q)r z5!tbab|0FY^t3qKaGxJ8d{}t!n2A$D2b*WE%g?UNIIi#}LbL6w@>Xj4Ps&ItsXm?< ziX4%L(BDqqxZwI+OZPIxs+5*ZQ7%(beWm4Dvs4a9zgwl!ywMe~xS69*dKv`J3Mp!K z7~$3GIp++&^}ApoondMO4U~x?#lkI`vMYU^8e^y}h{Yj|h7u+g^MD^jfA-I~f;&^& z142{c*kg4bPqC8Xr(^TTwuK-(9T^k*o1fm#F^6&#IuX&r1DCG&q}gCElI#1&9Cj^d zL`a2aM`yYd|73v`8#X(Jqpy1F`Myq8R8#wslX|bVJPBI=%f4M;i_;CmJCS zgKg)3r^&(1ts>Wd^lJY&)I{?%uHCwpEZQ~+14Sw;+;qu>9`{FL8`Mg~htf&4!44_u zlZrJ5ZgA&&YG;jJr63FZ<}OO%79Vn!YM<4^8>h*~rgzs0f88X-SO8yO*E#P`-X6e8 zmFr3!48GpQuZ9Y>@-q^cut!OZYuK-${*TOvTo%>A=vh$D|29qlpKD!*&S#Zyawe3= z{uRp+G^P3r``|zNV6I)D7I-|iI@BFkf)W4~=Bc|WJZ_<7HTZc@o(Tng4jp%A@fL>I zBqAeN-PzqL#sPgKBrt^3FE1j&ce~(ym3^=KC#aJZJMF{(EI_oqNk(~mF5e8sUU6)2 zW$I8oQagjaq2Qk~Z-6@9Jk=0_4V1cr zaU!Og&+mBN2pLKeiyf?)VREAU`pH#08!qT*;0nIbZ9uT&U>L-0gU+BjnmW9J`?o{z zIG=CdCk3RG$)7*;z6+hNii$(Bvi?b2IeJ;-I@d3}!(U4_^BPwNt$Lr%P)OyM7d%Rv zh@BAOS1KF99@V+TEeLJPGIo&VcLDb)-p$)_Ox4gw)m2QAZiqGxH{n z!qh*IrSZR%mVHH0^<@%<{uWP~u_XAhAT~L0hL{-cAh)+KCO+fkC$rjTeR7GrxcVM{ zh&ms-l`f8|Ib+a^zcb|`jL0M3pT1n0v%Z6Gokc(mu$PWB3jc75uqN@yZv8q?$mh=X z^GLVRnpAphNIDFbx4bS=)NgF+;|sVQSb3_LFGSl^_k@6UVD#_Xt$l0i%sqxzG~F6n zbGpvgKGn#w#dq_siFamZ(}M&Aj_v%9Q{d9dF-v`UH9=byfuHB`PRqwi7M@CzW@DGs zSfz+%4e&VQd(NzjMZLzXxG+w%mkat%$HLe1+5&DvYZSp$1UFygKPWqbGz}D^K@;vP zfF63*Z|^!XlHp=_G2+7DlaVQ8H$2Wr|AgnlHwA}jv0mC%_Z9GX?psoc6xIezI(M8R z%{72OaFHBo$wc755B(Ym@QScc_Ay$anr53ea>jB(b!a17-#&Any=Cz8%4?!Xx1vpJ z*$|K9?DQ0S9qGr<+e{;>@3U51p9G^o<(htPeMGl7kn~Tp^LG`^RyBfljh9&6{)+LKQK^>bTcXFso>|9NMfsq4DTE5^W z^1Jwx&mqmNF);>~joNmwXI)nMZ*RCqY2!T!O5C_|ksc4|{%fCO{-|X*kO)v4D#Kw|P*p5chCk|FS^6GT{aC-WJI-jFJEE}p72%Ym`v^kV_E?Gp!UBX zxUA;^U${y{O2S-QFF@8!L!CrL3zHo9^lQoO!a9Ql8*dAbNI#O0Iaa>KDX4hA@Hq~x zj#g9;Z(d7L^=@sffDSXfi+f2-n`ieV^O@iy`O@5;lAQ` zi?V_<^$qaw04ZdMG208R)$2JlEkjq79PK=z_A#BOUg;iioJ$)fNVu*>D5j-ejQD)N z$GPIRK%i9vvuxxF^D9tX`iprN->4D6yLOVh(;C(E(O2BUHs!v6kClQs7I{e6qR);Q z&+5dQL7S11PSJMk`)<I|Z4h?zT*i=nZ_9)ACnK>?q z{)AiBLW>3uoa=1$s7y-khS!h1Pz_ncCck*+=WjWy%jhcU%g@@Zphig?BWIg2RKLJm z$DP>w!9)=&jbcsp!Z3*~R-HJIz^g|ycwitq|4z?|3Rrg$uW2=YkYu0oH*DcI8crTl zZ(c8Ol_zwO&EyEtfv^<*iXy29LZ`d!owL9x-a~qGJ(UajV1In9NPb%9GUxiRO6+pp zjL4x(%0bR(ZO0W0#>vv8eEch7xx3hpEB0XoloJ0JU1<}y`nOZgVX3sZQ|Nv^C_$mdr(v-&xZ@-a-0 zE212=_7_K7n{8prR&z7=a0LWu1=ujyZnfZPnn2DDz3%Ya=6W^P7+I+D((I5K`ds9C zg*>wiSP978VZOggVSXH1sZ>dItp0{uDbSbUbodi@AXmX3EEe|g^BX5^~(pezFi0oMW1{(dXJxZTYb&QD{(Sbv# z*p*Xu%EUG5><$;_!+R~WydRH3FIn+@sYqW=7!K;Xn_|R7@0Z;4(!>kH`@9Ic_?b#zPB6ifR+9K1!1} zWwAFE|0um95Pzm-y}eASF37!4(wNm2$u}+>U9U5tqt#uB$x_&DnaQV1eR6~Xp)B2V z>z}FG0;5>)qAK<>>%=@QzP+V8b$Z8;67F?fjKu5@k7yjcANnzU3n|!6vHewGBu=aq z6jE35h%>YURgMV_)H?D0i*{7h)Ftp4b&h<2AYPhLgH(R3Na?ua>1P;4eqUHl1`MTz zkp+2ynWlo8+ae;7-FQ<)wA>at{zB=u2ti-yW-PgiaJ7SBF=d`L)wd>NGSybPUIQcT zxN)yy7edfx@7s3gJp#H-p<6sM%0ZvU62~vkrQGy11msbyjTfxApu&yCBFx5rTVir# z){_BSjM_W=aSAwLA=Q06VV=h!6Z)GQvhN?gWKEthaYRtaapc6@ZQ-S?HX6Bh3B(FnEB8MRoj)$g&uOqrd$qVuYZ$;DeVU9u9>!@*)*{ zOaHUpH$@)sy4k33?F!4`#)>zT_$|y);WGOC+}wtM}1q%W3J5te94MFx0oZNX8}i~8so-f z5~7gTD8{)s4sVeYeIOspD;c9cKYUa$gJisNph4^JSqH14c~_K=W_qPBo;A-a%d}4@u%-`_jFuS@NY%}y zWJVyl-%|8(IId~S3H&t|gWYW4>MgOpzWE9+X?XPr^U@lMan>^6R{Gp{7x|!UN7&=E z?d%n+{FyQP9gqF07U;b!k+<5vAvxsW)I>mz?ksD0Tw6Ejl=u(A8(ig0T~Znu zJbzI>#+;0|h>f%naWralK9I7>KW&8`BuA`sas>K2&9yU@LH`D@1xEA#AA|n`FILlX z{(<%~n_eDa#O6bwmo2+S_zhY95wYZ}Kt>yhI`*?%&x?;Q9(v23cVesI&Y9uwON&Yd zNQ4E8&K}asHq5G_55%@g^FOtQ>Z5fRv5ug%M*4;LR@s4q2M28XQ-4;2iG_la{b!qa zsz0ayD=}`w4|^!YJID49JJS#TUHGkAPk7Gk(5oXf2UdnX5T+4`#q9N@Sh%E1kDuPw zfMQ5}_VldN>7?4AO5@B4a|pm(4y(S7WAD_RVDh42H~h;wAmCN?9T8RKS^i3&!LML=DB*pn#7jKz z$@7e&0Z}YCa5&taZF62`b^9OOUHnb>)y-TCIXdP0OhTmHzH8u8;Agh6wwB4Cy0jtP z#s~|Bw+UX*c4z=0y0vOoyJ4UkxeAey=o#Ug$R*{-*}uX8ZT<(YBf*MBJCB06ImGJ*y*yUA2kDesb7nB2A4g2G{l&HcWP2K@IMe9_D!C1GJoAlx4fL#e|7g)7 zyf|zd@P|}RXzyXMh?Is*IC)t?Zugq~`XzvsC6i&m&9lcL^OnUXvfytbi!3@#hIjTc z0v~+BJW@<0icf{}?VMM*a55t$Vw^Sq-Rk_Wu}unzz}1E{qOUrc(E{Lf(P+k=O!5JB z6vIyxL|EHA5c3-@>?>vHIS+b!Jav}kW-PwXrtMhZEmsfV{e3&IjP!hId^^w^RLA|{ zF7!rYD_8{4`uN;lum8NGH@zA0a!tq*t}(~GXMuCcGFw7~!G!ZTnKA9zt*RWTG$tq| zeutJ9eR&J)iKuISuPHaFYWvT#_iXcOCqh1?P9R-V&jVNAXmLlTA~mzvQ>=rgVgB+2 zx~={BTy&nwwpeaE;rr?LZD?9=i2RAM6y-MXHs}MmAbL&P{b0efa&b41;KDKM2nE6p z&_nmgvhEgZu{xg3N@@yN*$_(4yy)0yzz)&>MAyC&8bTl6bF@oe4{^$5>ihICufkywWAog7bV~~nCM_I_J zUAqhD>%ShKuDT3JV8^yq%FVVd>fLRW`<-Cy3l;tK=7J4~I#_Au{pQ#F$v?+{kKD7L zPAITyJUohT_lHtZI`|rNNR`sE; zed@0Inlc6%Ad17O1%SI0w$(V8Xnh9v7axF`3a5y2PB1R6;$UWD9R{#AXF_x2vDfWM zS(^?|VGeROp#F0u`Znu`XxyeAxNdfrCe?0TuRX@eDr`BIv-!~}vrDdAS$0NM6FZx4 zrNwKgAqTEpTQ#d^oBI8)*=qHxm=6!M@7;6Im3EJ3V_^$(pZdn`Evscr3=6;RzGh=+ z9{9CNONY!lw*&j<_x)LLj|O+Ihbj<&^0m7= zVJV>8pFpdoEtVhV}{+j4bFmBwpq5Nj!TP8nINT=y?YEHMKI!sPk{FW zSN}QR`E%~$n`BBxfs;Bc3HReROAm4ubLbxJ`uwpyK*7Z8%Q1JQ{$Z@ydx^ChQk`tl_^!xkr!iUfFF zxsU6T*rmQV`Y0!V`X<6{;sw9^jc&h=zbA`UP?E9e8&UXk)mvDImaPyy^nR@89qCo| z1?s@{@iOk>x&hVxbP#a-Utqs_=nL8W^sQ*z*n@u-)GMZu`h8B1Ub*|c$3Cw79(rX@ z-UAhQfuw%yY@$tljO;OZInsRIgNXCzNpC;#CY^_%V=QwFF1e)e_ugMgc-3Kl?&o88 zH5a{yz}{o6!lu3H;syr}1(e8DqCF+$hEj^v&JV)@Vy^%#HtPd7# z`K4?2kDHq_qUH4ED%-zz<%RlI{OcyZRB;*D9ZdRzg>;8TaAh5Xc@TuA9DtldDtPMA zpGZc_i);){52giX? zV4{ckCN&FGQ(CM}W;r}ZY$}vPqU(Hsn_OYydH5cD{YZNU;|Qgx_yWk(y}J`dgYJs_ z+UnDi+<|Vg7&r!nQ;e_*Nkk?tk&0poeW_BV9Fx1XA@=*q{!iQ%!Ay*OcF9FtJ%vf6 zp@baReCp+y!gie8tTDye?2Z*Ce2pVV^hbH3d8~aVMa-zF0tYQ1<*u*B(Kgl1i4-o| zo)I-jT`hFilss;nsVO#7#!-Ub$D;~ydx8|8Y^k-9I?V}#Ojfl9NDKYkfm{deaZHEJz z?<(L?R6NDhjA!7-$&ll)o!Sj*^K)PbR8UnK=qZ8?A8hr+4i6=jHHwBjsYm9L7Zpmm zisfs;At*iKX~SSgFFYk~sHyFHTU8%08r;3)Lq5wP&YF>w3@yqFobwq_)mBO{z<9~_{R58JJLP%B@PzOY7!?wqNi^4!BLmf~x zE}}j01kQXKjvfH79vkU1Hf&@kv1oByHWQ)MeTsPmDC1^QZ^{;XE}(qO#c+`nYF2%} z08$PZCr-j)v8ydTsn+rFvW(Y68tsZU_VvO$v%!CmCtV59ElZ!{*#WH|IC^D+1P1#p|HQIM0MDj zC0>gG!%RyS(lA_2Qw#Pez9cY;u)`mJWtXOi1W77zJvT8addT$4u3e(L>=~>m5TM#7 zl1x!)GKiyhP(K)Iot@Y_zi~kDjKE9$!-!L_jf2RWWjGR8N_U!L!={)G3|8X;26Ev0 z1*dVs70fVkim2SPPtJBr2CA7?fctBn^x}k~6^~c_zVZXzW zy--6LsIDl!0|yHczPab>M&Hcy4&hNWFVH3&;8R0Z{zSy_Bs2blL9evrj_wy|+6;46 z7#R_R^V$&8R}CI?^P~nzG!*VxzZ_=@lwKI15^qj( z#PAWv!sMFM_pXfm3gpSVur|W4ql8Up(3*7MeZa6rw&&^)vk-4hM=sub{4Q`ZLkWNO_`DZB@fUh?*N#ORi z5$gdNVQhx`Yzs!{0a+7C=zPF#8K)0=7R=xfJ<1)xN{YmKAEBZO?cIENfi`qk2}riD zdczdagCTCBf?dpQA)@4-FD-S#dUwex2G~6z3#Kk0AC|xpcTz$*hwNaJI>fMO#cJ;P8eC4!1T5p0G&p#~3Z=I}gKq!$r!n5)?E7UY|uY0X*# z9b-hBY%4Jmn3*;z895@}!t2BM;G?KQRJ3DbXQK9wtg77UVXGAWH4Y=`F=UwpBvYQj zYoxfdJxre z!&rg`J{jjBK;mS>0&bZQ1o%Pn<}7t=5ru(69IDG}rLg%^CclB2NXu%vZ6vb;PT5{f zTd)M)|AaZYCGx-)XBg#)(L{$=t#X$aB@$m-+l@t558m}^sgIfafd=UdY^Wx;PjiQY zj)+ud&@!1`+G8CAJqral3jG@c^veP3kEysd9HREo#RhI=9&7x%XMQo%PsPK*(qgf? z=&E@zGInj7z`Z|mIkG9AS7eyibXkFkaevyy!MmI{-Y_?W3S~#D$#CeTp1|Jc3rn|9 zSc6zPee}U^`sI<6_on4Ax1#*nBi6aI2$pvOG8jXExa4TWH3>dSq#L2U0V=rf?pDm3 zC!djf<+V1kif!$3P!zob&56RlT1$ftNm~czX>&!LAgXbA?}B1!8O!`i@B~vv;Ne)c zF)W1Az2u>%lYei0yRRr9j!`+z0}OK0^q%NLCr;sLe%zV5)Xj*j)NDz=aTyovrl2XD zXkz54?;Q(R!Il1pGWjUD&iPce0;3c*)WU>CLt?`N)z4W7`NV#q9X3sdmM~tZ!T)VE z5xT$QNraicfbP0eybaW0kz*aY)}EZ|??SAb><@pd*EWuFsuUMqdCKas!fb+&YO2^Z z(5T+O)yc-K2~!xwSOy;BxFd>9bO?D~ob|fu47JfU?E0OeuQO>-k13^K{Yt~xC`Awh zeXdGOD9P<+0yHTn{(u(=CfY9PEFn~8?EH7_E#9-eDE!Hk05p>%CYBOznXlMdm_Ue0#Z_@Y5mwyX4p?0v8m*c zu`MQDTihBJ1-qY)4@7rcz+tWix`ycLl0AtRE-Gfy2rY4=in?KzX}^X1N88lFL=^aI zy=RdlZ9LwpCCBg}zN%61Ke7_5;NssLKA)%XalCxPG;U_vqzPJaYAlTh=1N_04TZ22 z=9o~OKkWhVqj&jBcovD_n49Y{(|=&EsJ2R_$}D&3-cpCDeR7j8?Fm%%RxN2cFb`wd z2%T(`T2qQokG~z)Wu4UPzn4e|^^6rPC7~eu7?sDpsX`ASGP+{~-1ug|ZhD?c=Zh1P zWD{AZY0Wi$LjQ?gwUcc}aV&di z1FZ?-0Rm&=LlY&jOLj@6u~Z6Q#FaV{vx9d9mj5Xht(2cPB6v(q_0rH~&Q{#SQ?yJa z`=u@rc5y`<3)T-{eI-bXSG>`4`cjs~A`W|iaqIKp3BkdBTY z2`oUT5`;5DdJ~y>48E^)LJq=;=0!1bb;yj5nU2aSH5d$ey={o=<8t%1&KM+C=SRVX zLq31ZEg=ea|N71Jd;2xFRbhOAwS|@O#N4cM`TCXN!H9>+dTz?G)@o93LVVAKf$u5L z-1lnRXtMGfzj3F-Q6I0H#`Wi2O(&!AL1JD87B5|Z$qIs>`^TcohOpOP*WdcR6k>vX z>9f-cfNdcWm&0$j+?E?q=Y4~R!;=JMeFNar9P64&`|1d(p51fj(pl>UB{FbD>q{*r zrO(a5=z8T+(f%|+jWXZVv}O6Ka~JHxze+bfA7zVrZ_ zR+Z{SYi!^Ndj@$q>IosB+YLj|eb=no&)MBg-Yw5OaK7&pCV$tWVQw3tXlw>FZ^{iY z&J`pdFz#Lzvd?QZ`N{&{>u|r(0G}3<-E*5#-AqTeU*+Pp;MPzV%m5DzyjHG$rC-1J z6t^a74B{3GGz@gw{#k%kbc`G|p0-M;VCa5=bZYU1P8NYSh`&V#iM@4UZ|hzXihMNC@V2$wav^y)O2Tg^WZJ&b9NVdElYS+tek z;C%DB*u98fLiA1I2dOC6eF5t6!$AVKT`s&Z6{k`IUn#l35)vPxk@5@hP8lv?u-4YsS*_n%kL{+8|F=IKmqG0heE{b+?9F7!;*H^hWXcyoHo z%7ooCV9-m-`W7yCR?}-FJd?y(4b13`Cz+xfqa%^xC?Ge=2ZT%Zg89a?f??RmD_4jt z<4aohk!UE!%w8__*@c{GR|kPEOccGcLUlsI>9m~teeGM&@8IJG2zG&M|K#O2WL>y+ zjBXcVSJ9hgxnQ5&#qfnncnYzT`Ujf9Y=`pPS%3(P7&H)ELg}S7<*an;`3^E1F<||g zPMB@9xLJKpuF|Q=40=3!na(vg)b}?N6t7eeY0s2X;n9l|MdX5Cu6Cv%ge5mWP$MK3 z3`oVl!V70hEga#X6#Lm(?j$J{E_QJjn4cOQWE7wKaYWJS1+_3S^2Dv#cF0OGG|fu`i4wugH~TZs;|#%hbz84e(bZ znp{QUcw-Hz9aAl%ONh;l)v4=(7GwV&N9w3?xET1^VPOx>Xf8*c^ykgld3<`#}I}16l{oy zGpd^+3WhZ@GO>%E)bgkGoY{cU9cW=MX5+T3!n1U$qV{j8H7GY3-=xm{4i_?YU%%vr z4Sy^Aul*1%=9;uR_;`%-M&MWlZA}0srPmOGl=`5uIX07~#h4BYuB_m&c<1)8FBpvm zAt1mL?(12JCk=DUpz;S&JCkTvh#-EF_Zx*1ET^lK`btg^TKHgs);ge^^~TptZ!QnCX4!PDQsCN!dN6wdOJn^&wU3rFVjoA}gRyir41ecy^d-ns*%MOMrCbTTmDU z{yt6|D%YpuBIG#O8D$1T=NV`I8a7uPWg}Qda3hY)6NjW|jWfp9otQ4s^Mq1(rp5^` z>6svv`Z>7GaW?%gW5j&MUhlESrItz)InDI^jpieQ111?qcPABZ6t^&|%0YJYP*ZVN zehfk2%s)#ayBDCeS>jmc_84Da$3NC@LyVq<(iL5xt+?SpCa2LWaVq88Mcf4k4eh&V z{A%`Or>oblKQP?snq^H}6nW-Ti3(G>*fTEyYGmhP4ulDD5Q|Hz<6LvUW1hxwnXGaNlX{>RA!FuEoc3nNrUhFUaNy?aPDrumL zkn$)FM*PW}0ZRvxBU8N6Xy6Cq1Mt8RAH9pCeMC7R8|U|I^}#OOSd<^zTH?J~mPlS| zrWAVyT7}eK=H_3s6^Rk7dNj~%7#R*$sCYtwh8}k<0N>gieggvki}UsQQ&|WekPk9Q zD4wg;^ySOrN?Zqf2Bz=~T1kfJP$Zkw@AK08R>TmW12onN>Rmpx=5$7Qwc(0%MW4Q^ zzu1|!;=k|-Us^wj6AJfPSL)nJN0TGz?h_83(b3_jv=5kZ?Iu~8;VPYwBbXU^a&I|E zt&B)$d;R>HP{9HIHQ{)6uc+lvBpzSQY_dEYB-=&jVW7&WciG5xr1!#z9QcSJK(Lu@ z;N509X6zJzDBw2gj=bn$!_Y)s;!dR^S+!@T5!lH!R}Vtl;(`4M3O!ToNOg#E_*Xda zM5b%z0WzUoWTm>b3X}YXZs6tQ-}vf*@!nON^MZ$}OK5UUc_|)j-bt4n5Qb*T1VHBh=a|EOMDc4IL>;u(k#De~r zoA3LQpPWsZ=h_B+mQYZt9Z9M&jgB+TL?byL_vUW55YIq11);D)mf|ud-%ENeVDX=t zWZt!YEh*oNOj+;_Cb59iK<4yGy&#h#PGRkdawNM{smiND-BqEV8t5uXUw08b?A6pk z7LG5I14p3@Er!WZhb3xBs6=xKuebEV-u-Er^ylwVRK{0dtvM8Y77QGU1rXUS=k>7= znI*jN`uu{#lXm~giXQ8N#kjxU!*sIq;+y?E%+iTi>$>G^ zzWX{@?7P`^#oH6PoOj)Dr+EE1ld0q6xU5t7Tn8+8Zq#r3DFq{~@CQkx?Fz$mGm5Z! zzf;lDCe!&*(HSuM*_7~yy zc_fe*b*InhxHc%VQe4h1_wG5%bxhAuHowfDflZLxCr2)?xZaxI#C`#i38dS6lUw|5 z8QjTpET)Vw%n_YdHbbjek%EMh@3l0hxABz?m-;ln7DhxVBti7AP~M+*nvrf2?bz;{ zCa;_FW27_81!1D{ZwCkjW|u>;SB;5Y5n&VEbf0Dkj@g*pmr|OmdGuS17Jm*#aUoHP zy#Cse(u_AYt9kmUzqRbX-~Rhx)H>z@2>=V~dO|mi%*%bDtNLi~A0D47{?%Sd3$_di zZc`l=e?+|Y>iPYsr<=(+4Do z+lykgSomL={hwl_ZI>o(aNCvf%RPyQ+>5Xr;=SJt~?K%2fK*zgH|11ad&DHs_eCS5cTfr+0|v9TEEq_&Nq_V)?W6}kMnc($*kHy_B&pYZ5v1 z!}~;Uj}*k_f7mWEivPZ~Qxl>{gN*QjP1rW-szUQUAck;8aO|XSTtUH~KlEBsltO*- z5Wj2Z7yW};0lQw%?;yf!B#GiGz62IqOj}rGB z!>auCPBPM@FB9=oc=|&htLK-%`O)dXyqA31S-l}O;fkEn@ESMl_X33O1gp=wML^QF zV9$FDn_Ja>lrts;tDluLc(s?&Pn~F=10)YVe^7d!)$1J)L+cyc`=4G#1&>~#I~FDx z8UH>op3A@V{eIM6a;O(9wGVIoL*55kD5t#RqCtNcS0}s7Y7h;fR%&t z8vI}ig`OxK4VQU>jtl8r1XRx!0~q)GAs-0qqY=CCA+Ku{Cap}RS!&zQyV+6vaRNWf zyz0pY^_XAFT7_(8s_!h&(l&*0FB z{MKdu$tgwf-yURni|5%lqB6aw7h^G?u8W=PdOdI+lh~r)Y2J-&UFh7XXYt%f?IWfB z8DTdA`k~+#;8Xtgp3zRkykvaRY}`EN@)EEPfs&`*7w{3^ijL*@fZx16R~H5_CT`L; z%Me8}G$=$+yrM%a;4IOH#kO_{O+HQSKwm+zX-5Iy@NGvy`6yoJ8@2sVZFMPt~G3>vdyh@%9@)6v`KU63hD1*Ns zuN(+Ec!z9>h`uqb;=B{g^Y67EnY3peGrPuwQ}hylJCA5Zhkxci#_eyD^CQOS9%<_6 z?P$|n_&(_s73DRr1$afwd=K~TvmfdXm@6O-7=%F8o?k(>Jz%Kq1%%>17Oo$gu~@J{ zY1A<`{kOlj-T33J8!g@QE=sqG+_q{~=;5 zh0vGd?FW(D#pQwCPyTiN$Jg&af6vx|5L}r(>&uTi$yT1q9(HW%+gCkhpsS>tF3-?B8T0<- z|1JearO>_Pvg_cs@#B7(Bjhwc#?$_ye@aKjqAc9~W4AY=Cs4?;2gcd2xBgMjqBoi_ zg>@(&$&Tj7?16*J|J@TpF1?<2Y*QbgN@J);1q=rA-U3r<@y@9wWJe6L|3CY0Iu?rb Mi3)=gFaZGk5A1St5dZ)H literal 0 HcmV?d00001 From 2226c280f7d50ce25a8edc48825bb28796c98fdd Mon Sep 17 00:00:00 2001 From: Clinton Gormley Date: Fri, 17 Apr 2015 17:30:01 +0200 Subject: [PATCH 066/329] Made Script::Latest less high impact --- lib/MetaCPAN/Document/File.pm | 74 ++++++++++++++++++++++------------- lib/MetaCPAN/Script/Latest.pm | 65 ++++++++++++++---------------- 2 files changed, 77 insertions(+), 62 deletions(-) diff --git a/lib/MetaCPAN/Document/File.pm b/lib/MetaCPAN/Document/File.pm index 2e7a650da..21180251b 100644 --- a/lib/MetaCPAN/Document/File.pm +++ b/lib/MetaCPAN/Document/File.pm @@ -158,7 +158,8 @@ sub _build_description { my $self = shift; return undef unless ( $self->is_perl_file ); my $section - = MetaCPAN::Util::extract_section( ${ $self->content }, 'DESCRIPTION' ); + = MetaCPAN::Util::extract_section( ${ $self->content }, + 'DESCRIPTION' ); return undef unless ($section); my $parser = Pod::Text->new; my $text = ""; @@ -739,7 +740,7 @@ sub set_indexed { # .pm file with no package declaration but pod should be indexed !@{ $self->module } || - # don't index if the documentation doesn't match any of its modules + # don't index if the documentation doesn't match any of its modules !!grep { $self->documentation eq $_->name } @{ $self->module } ) if ( $self->documentation ); } @@ -810,7 +811,8 @@ my @ROGUE_DISTRIBUTIONS sub find { my ( $self, $module ) = @_; my @candidates = $self->index->type("file")->filter( - { bool => { + { + bool => { must => [ { term => { 'indexed' => \1, } }, { term => { 'authorized' => \1 } }, @@ -818,16 +820,19 @@ sub find { ], should => [ { term => { 'documentation' => $module } }, - { nested => { - path => 'module', - filter => { term => { 'module.name' => $module } }, + { + nested => { + path => 'module', + filter => + { term => { 'module.name' => $module } }, } } ] } } )->sort( - [ { 'date' => { order => "desc" } }, + [ + { 'date' => { order => "desc" } }, { 'mime' => { order => "asc" } }, { 'stat.mtime' => { order => 'desc' } } ] @@ -853,7 +858,8 @@ sub find_pod { if ( $module && ( my $pod = $module->associated_pod ) ) { my ( $author, $release, @path ) = split( /\//, $pod ); return $self->get( - { author => $author, + { + author => $author, release => $release, path => join( "/", @path ), } @@ -870,7 +876,8 @@ sub find_pod { sub find_provided_by { my ( $self, $release ) = @_; return $self->filter( - { bool => { + { + bool => { must => [ { term => { 'release' => $release->{name} } }, { term => { 'author' => $release->{author} } }, @@ -971,7 +978,8 @@ sub find_download_url { # sort by score, then version desc, then date desc my @sort = ( "_score", - { "module.version_numified" => { + { + "module.version_numified" => { mode => 'max', order => 'desc', nested_filter => $module_f @@ -989,22 +997,26 @@ sub find_download_url { # if not dev, then prefer latest > cpan > backpan $query = { function_score => { - filter => { bool => { must => \@filters } }, + filter => $filter, score_mode => 'first', boost_mode => 'replace', functions => [ - { filter => { term => { status => 'latest' } }, + { + filter => { term => { status => 'latest' } }, weight => 3 }, - { filter => { term => { status => 'cpan' } }, weight => 2 }, + { + filter => { term => { status => 'cpan' } }, + weight => 2 + }, { filter => { match_all => {} }, weight => 1 }, ] } }; } - return $self->size(1)->query($query)->source('download_url') - ->sort( \@sort ); + return $self->size(1)->query($query) + ->source( 'download_url', 'date', 'status' )->sort( \@sort ); } @@ -1045,7 +1057,8 @@ sub _version_filters { not => { or => [ map { - +{ term => { + +{ + term => { 'module.version_numified' => $self->_numify($_) } @@ -1076,7 +1089,8 @@ sub history { my ( $self, $type, $module, @path ) = @_; my $search = $type eq "module" ? $self->filter( - { nested => { + { + nested => { path => "module", query => { constant_score => { @@ -1095,16 +1109,18 @@ sub history { } ) : $type eq "file" ? $self->filter( - { bool => { + { + bool => { must => [ - { term => { "file.path" => join( "/", @path ) } }, + { term => { "file.path" => join( "/", @path ) } }, { term => { "file.distribution" => $module } }, ] } } ) : $self->filter( - { bool => { + { + bool => { must => [ { term => { "file.documentation" => $module } }, { term => { "file.indexed" => \1 } }, @@ -1122,13 +1138,15 @@ sub autocomplete { return $self unless $query; return $self->search_type('dfs_query_then_fetch')->query( - { filtered => { + { + filtered => { query => { multi_match => { - query => $query, - type => 'most_fields', - fields => - [ 'documentation', 'documentation.edge_camelcase' ], + query => $query, + type => 'most_fields', + fields => [ + 'documentation', 'documentation.edge_camelcase' + ], analyzer => 'camelcase', minimum_should_match => "80%" }, @@ -1142,8 +1160,10 @@ sub autocomplete { { term => { 'authorized' => \1 } } ], must_not => [ - { terms => - { 'distribution' => \@ROGUE_DISTRIBUTIONS } + { + terms => { + 'distribution' => \@ROGUE_DISTRIBUTIONS + } }, ], diff --git a/lib/MetaCPAN/Script/Latest.pm b/lib/MetaCPAN/Script/Latest.pm index 35473d866..4291cf542 100644 --- a/lib/MetaCPAN/Script/Latest.pm +++ b/lib/MetaCPAN/Script/Latest.pm @@ -66,11 +66,9 @@ sub run { : { exists => { field => "module.name" } }; my $scroll = $modules->filter( - { - bool => { + { bool => { must => [ - { - nested => { + { nested => { path => 'module', filter => { bool => { must => \@module_filters } } } @@ -84,8 +82,7 @@ sub run { } } )->source( - [ - 'module.name', 'author', 'release', 'distribution', + [ 'module.name', 'author', 'release', 'distribution', 'date', 'status', ] )->size(100)->raw->scroll; @@ -100,17 +97,17 @@ sub run { $i++; log_debug { "$i of " . $scroll->total } unless ( $i % 1000 ); my $data = $file->{_source}; - my @modules = map { $_->{name} } @{ $data->{module} }; - # Convert module name into Parse::CPAN::Packages::Fast::Package object. - @modules = grep {defined} map { - eval { $p->package($_) } - } @modules; + # Convert module name into Parse::CPAN::Packages::Fast::Package object. + my @modules = grep {defined} + map { + eval { $p->package( $_->{name} ) } + } @{ $data->{module} }; # For each of the packages in this file... foreach my $module (@modules) { - # Get P:C:P:F:Distribution (CPAN::DistnameInfo) object for package. + # Get P:C:P:F:Distribution (CPAN::DistnameInfo) object for package. my $dist = $module->distribution; # If 02packages has the same author/release for this package... @@ -138,13 +135,18 @@ sub run { } } + my $bulk = $self->model->es->bulk_helper( + index => $self->index->name, + type => 'file' + ); + while ( my ( $dist, $data ) = each %upgrade ) { # Don't reindex if already marked as latest. # This just means that it hasn't changed (query includes 'latest'). next if ( $data->{status} eq 'latest' ); - $self->reindex( $data, 'latest' ); + $self->reindex( $bulk, $data, 'latest' ); } while ( my ( $release, $data ) = each %downgrade ) { @@ -158,20 +160,20 @@ sub run { && $upgrade{ $data->{distribution} }->{release} eq $data->{release} ); - $self->reindex( $data, 'cpan' ); + $self->reindex( $bulk, $data, 'cpan' ); } + $bulk->flush; $self->index->refresh; } # Update the status for the release and all the files. sub reindex { - my ( $self, $source, $status ) = @_; + my ( $self, $bulk, $source, $status ) = @_; my $es = $self->es; # Update the status on the release. my $release = $self->index->type('release')->get( - { - author => $source->{author}, + { author => $source->{author}, name => $source->{release}, } ); @@ -184,16 +186,16 @@ sub reindex { $release->put unless ( $self->dry_run ); # Get all the files for the release. - my $scroll = $self->index->type("file")->size(1000)->filter( - { - and => [ - { term => { 'file.release' => $source->{release} } }, - { term => { 'file.author' => $source->{author} } } - ] + my $scroll = $self->index->type("file")->search_type('scan')->filter( + { bool => { + must => [ + { term => { 'release' => $source->{release} } }, + { term => { 'author' => $source->{author} } } + ] + } } - )->raw->scroll; + )->size(100)->source( [ 'status', 'file' ] )->raw->scroll; - my $bulk = $self->model->bulk; while ( my $row = $scroll->next ) { my $source = $row->{_source}; log_trace { @@ -202,17 +204,10 @@ sub reindex { }; # Use bulk update to overwrite the status for X files at a time. - $bulk->add( - { - index => { - index => $self->index->name, - type => 'file', - id => $row->{_id}, - body => { %$source, status => $status } - } - } - ) unless $self->dry_run; + $bulk->update( { id => $row->{_id}, doc => { status => $status } } ) + unless $self->dry_run; } + } sub compare_dates { From 623aa1dce61a91f1ef27ba42d1dc0eef667a5ab8 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Sat, 18 Apr 2015 12:08:52 +0200 Subject: [PATCH 067/329] Warn more on bad META files. --- lib/MetaCPAN/Model/Release.pm | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/MetaCPAN/Model/Release.pm b/lib/MetaCPAN/Model/Release.pm index 11809cee3..179ec5f04 100644 --- a/lib/MetaCPAN/Model/Release.pm +++ b/lib/MetaCPAN/Model/Release.pm @@ -329,7 +329,10 @@ sub _load_meta_file { try { $last = CPAN::Meta->load_file($file); } - catch { $error = $_ }; + catch { + $error = $_; + log_warn {"META file ($file) could not be loaded: $error"}; + }; if ($last) { last; } @@ -341,7 +344,7 @@ sub _load_meta_file { } } - log_warn {"META file could not be loaded: $error"} unless @backends; + log_warn {'No META files could be loaded'} unless @backends; } sub extract { From 6f3ab209937fc72f1d36ae9402430c35510b8911 Mon Sep 17 00:00:00 2001 From: Clinton Gormley Date: Sat, 18 Apr 2015 14:50:43 +0200 Subject: [PATCH 068/329] file.documentation should be undef if it has no length --- lib/MetaCPAN/Document/File.pm | 1 + t/release/moose.t | 8 +++----- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/lib/MetaCPAN/Document/File.pm b/lib/MetaCPAN/Document/File.pm index 21180251b..527627bc1 100644 --- a/lib/MetaCPAN/Document/File.pm +++ b/lib/MetaCPAN/Document/File.pm @@ -281,6 +281,7 @@ sub _build_documentation { my $self = shift; $self->_build_abstract; my $documentation = $self->documentation if ( $self->has_documentation ); + return undef unless length $documentation; return undef unless ( ${ $self->pod } ); my @indexed = grep { $_->indexed } @{ $self->module || [] }; if ( $documentation && $self->is_pod_file ) { diff --git a/t/release/moose.t b/t/release/moose.t index 645c226e1..632c9f95e 100644 --- a/t/release/moose.t +++ b/t/release/moose.t @@ -78,11 +78,9 @@ ok( !$signature, 'SIGNATURE is not documentation' ); $signature = $idx->type('file')->filter( { and => [ - { term => { name => 'SIGNATURE' } }, - -# these came from metacpan-web/lib/MetaCPAN/Web/Model/API/Release.pm:sub modules - { exists => { field => 'file.pod_lines' } }, - { term => { 'file.indexed' => \1 } }, + { term => { name => 'SIGNATURE' } }, + { exists => { field => 'documentation' } }, + { term => { 'indexed' => \1 } }, ] } )->first; From a58d7a99f3b71235922853dce943f03c5633b593 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Sat, 18 Apr 2015 15:03:48 +0200 Subject: [PATCH 069/329] Adds Git::Sub to cpanfile. --- cpanfile | 1 + cpanfile.snapshot | 59 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 60 insertions(+) diff --git a/cpanfile b/cpanfile index e4e906ff4..dc1dfd396 100644 --- a/cpanfile +++ b/cpanfile @@ -161,6 +161,7 @@ test_requires 'CPAN::Faker', '0.010'; test_requires 'Config::General'; test_requires 'ElasticSearch::TestServer'; test_requires 'File::Copy'; +test_requires 'Git::Sub'; test_requires 'HTTP::Cookies'; test_requires 'LWP::ConsoleLogger'; test_requires 'Module::Faker', '0.015'; diff --git a/cpanfile.snapshot b/cpanfile.snapshot index 4ac0caee4..9fb17a31f 100644 --- a/cpanfile.snapshot +++ b/cpanfile.snapshot @@ -3468,6 +3468,23 @@ DISTRIBUTIONS IPC::Open3 0 Package::Pkg 0.0014 Test::Most 0 + Git-Sub-0.130270 + pathname: D/DO/DOLMEN/Git-Sub-0.130270.tar.gz + provides: + Git::Sub 0.130270 + git 0.130270 + requirements: + Carp 0 + Cwd 0 + ExtUtils::MakeMaker 6.30 + File::Find 0 + File::Temp 0 + File::Which 0 + System::Sub 0 + Test::More 0 + strict 0 + subs 0 + warnings 0 Graph-0.96 pathname: J/JH/JHI/Graph-0.96.tar.gz provides: @@ -3953,6 +3970,19 @@ DISTRIBUTIONS IO::WrapTie::Slave 2.110 requirements: ExtUtils::MakeMaker 0 + IPC-Run-0.94 + pathname: T/TO/TODDR/IPC-Run-0.94.tar.gz + provides: + IPC::Run 0.94 + IPC::Run::Debug 0.90 + IPC::Run::IO 0.90 + IPC::Run::Timer 0.90 + IPC::Run::Win32Helper 0.90 + IPC::Run::Win32IO 0.90 + IPC::Run::Win32Pump 0.90 + requirements: + ExtUtils::MakeMaker 0 + Test::More 0.47 IPC-Run3-0.048 pathname: R/RJ/RJBS/IPC-Run3-0.048.tar.gz provides: @@ -4150,6 +4180,18 @@ DISTRIBUTIONS requirements: Test::More 0 version 0 + List-AllUtils-0.09 + pathname: D/DR/DROLSKY/List-AllUtils-0.09.tar.gz + provides: + List::AllUtils 0.09 + requirements: + Exporter 0 + ExtUtils::MakeMaker 0 + List::MoreUtils 0.28 + List::Util 1.31 + base 0 + strict 0 + warnings 0 List-MoreUtils-0.33 pathname: A/AD/ADAMK/List-MoreUtils-0.33.tar.gz provides: @@ -7453,6 +7495,23 @@ DISTRIBUTIONS constant 0 strict 0 warnings 0 + System-Sub-0.150960 + pathname: D/DO/DOLMEN/System-Sub-0.150960.tar.gz + provides: + System::Sub 0.150960 + System::Sub::AutoLoad 0.150960 + requirements: + Carp 0 + ExtUtils::MakeMaker 0 + File::Which 0 + IPC::Run 0 + Scalar::Util 1.11 + Sub::Name 0 + Symbol 0 + constant 0 + perl 5.006 + strict 0 + warnings 0 Task-Weaken-1.04 pathname: A/AD/ADAMK/Task-Weaken-1.04.tar.gz provides: From 81e172dc4b1d0bf20d4d542ad4580c2d932e3a8b Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Sat, 18 Apr 2015 15:22:50 +0200 Subject: [PATCH 070/329] Move test config building to MetaCPAN::TestHelpers --- t/fakecpan.t | 3 ++- t/lib/MetaCPAN/TestHelpers.pm | 28 +++++++++++++++++++++++----- t/model/release.t | 10 ++-------- t/model/release/dependencies.t | 8 ++------ t/model/release/metadata.t | 8 ++------ 5 files changed, 31 insertions(+), 26 deletions(-) diff --git a/t/fakecpan.t b/t/fakecpan.t index 8cb97c388..6ea261901 100644 --- a/t/fakecpan.t +++ b/t/fakecpan.t @@ -42,6 +42,7 @@ use Config::General; use DDP; use Search::Elasticsearch; use File::Copy; +use MetaCPAN::TestHelpers qw( get_config ); use MetaCPAN::Script::Author; use MetaCPAN::Script::Latest; use MetaCPAN::Script::Mapping; @@ -77,7 +78,7 @@ EOF Test::More::note( Test::More::explain( { 'Elasticsearch info' => $es->info } ) ); -my $config = MetaCPAN::Script::Runner->build_config; +my $config = get_config(); $config->{es} = $es; { diff --git a/t/lib/MetaCPAN/TestHelpers.pm b/t/lib/MetaCPAN/TestHelpers.pm index 27c2bdc10..1d5a218aa 100644 --- a/t/lib/MetaCPAN/TestHelpers.pm +++ b/t/lib/MetaCPAN/TestHelpers.pm @@ -4,22 +4,28 @@ use warnings; package # no_index MetaCPAN::TestHelpers; +use FindBin; +use Git::Sub; use JSON; +use MetaCPAN::Script::Runner; +use Path::Class qw( dir ); use Try::Tiny; use Test::More; use Test::Routine::Util; use base 'Exporter'; our @EXPORT = qw( - try catch finally - - multiline_diag hex_escape - encode_json + catch + get_config decode_json_ok - + encode_json + finally + hex_escape + multiline_diag run_tests test_distribution test_release + try ); =head1 EXPORTS @@ -84,4 +90,16 @@ sub test_release { ['MetaCPAN::Tests::Release'], $args, ); } +sub get_config { + my $config = do { + + my $checkout_root = scalar git::rev_parse qw(--show-toplevel); + + # build_config expects test to be t/*.t + local $FindBin::RealBin = dir( undef, $checkout_root, 't' ); + MetaCPAN::Script::Runner->build_config; + }; + return $config; +} + 1; diff --git a/t/model/release.t b/t/model/release.t index ca8bccc2a..b0bcd1c78 100644 --- a/t/model/release.t +++ b/t/model/release.t @@ -1,7 +1,6 @@ use strict; use warnings; -use FindBin; use File::Temp; use LWP::Simple qw(getstore); use MetaCPAN::Model::Release; @@ -9,15 +8,10 @@ use MetaCPAN::Script::Runner; use Test::More; use Test::RequiresInternet( 'metacpan.org' => 'https' ); -my $config = do { - - # build_config expects test to be t/*.t - local $FindBin::RealBin = "$FindBin::RealBin/.."; - MetaCPAN::Script::Runner->build_config; -}; - +my $config = get_config(); my $url = 'https://cpan.metacpan.org/authors/id/D/DC/DCANTRELL/Acme-Pony-1.1.2.tar.gz'; + my $archive_file = File::Temp->new; getstore $url, $archive_file->filename; ok -s $archive_file->filename; diff --git a/t/model/release/dependencies.t b/t/model/release/dependencies.t index d2bf2f5a0..eac8f9c24 100644 --- a/t/model/release/dependencies.t +++ b/t/model/release/dependencies.t @@ -4,14 +4,10 @@ use warnings; use FindBin; use MetaCPAN::Model::Release; use MetaCPAN::Script::Runner; +use MetaCPAN::TestHelpers qw( get_config ); use Test::Most; -my $config = do { - - # build_config expects test to be t/*.t - local $FindBin::RealBin = "$FindBin::RealBin/../.."; - MetaCPAN::Script::Runner->build_config; -}; +my $config = get_config(); subtest 'basic dependencies' => sub { my $file diff --git a/t/model/release/metadata.t b/t/model/release/metadata.t index 83223e54d..7d92eb6ae 100644 --- a/t/model/release/metadata.t +++ b/t/model/release/metadata.t @@ -4,16 +4,12 @@ use warnings; use FindBin; use MetaCPAN::Model::Release; use MetaCPAN::Script::Runner; +use MetaCPAN::TestHelpers qw( get_config ); use Test::More; my $authordir = 't/var/tmp/fakecpan/authors/id/L/LO/LOCAL'; -my $config = do { - - # build_config expects test to be t/*.t - local $FindBin::RealBin = "$FindBin::RealBin/../.."; - MetaCPAN::Script::Runner->build_config; -}; +my $config = get_config(); my $ext = 'tar.gz'; foreach my $test ( From ae5fc2794fa7a0cb5a3d0ce4882c6344e050ea47 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Sat, 18 Apr 2015 15:23:29 +0200 Subject: [PATCH 071/329] Tidy lib/MetaCPAN/Script/Latest.pm --- lib/MetaCPAN/Script/Latest.pm | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/lib/MetaCPAN/Script/Latest.pm b/lib/MetaCPAN/Script/Latest.pm index 4291cf542..f76afdf5f 100644 --- a/lib/MetaCPAN/Script/Latest.pm +++ b/lib/MetaCPAN/Script/Latest.pm @@ -66,9 +66,11 @@ sub run { : { exists => { field => "module.name" } }; my $scroll = $modules->filter( - { bool => { + { + bool => { must => [ - { nested => { + { + nested => { path => 'module', filter => { bool => { must => \@module_filters } } } @@ -82,7 +84,8 @@ sub run { } } )->source( - [ 'module.name', 'author', 'release', 'distribution', + [ + 'module.name', 'author', 'release', 'distribution', 'date', 'status', ] )->size(100)->raw->scroll; @@ -98,7 +101,7 @@ sub run { log_debug { "$i of " . $scroll->total } unless ( $i % 1000 ); my $data = $file->{_source}; - # Convert module name into Parse::CPAN::Packages::Fast::Package object. + # Convert module name into Parse::CPAN::Packages::Fast::Package object. my @modules = grep {defined} map { eval { $p->package( $_->{name} ) } @@ -107,7 +110,7 @@ sub run { # For each of the packages in this file... foreach my $module (@modules) { - # Get P:C:P:F:Distribution (CPAN::DistnameInfo) object for package. + # Get P:C:P:F:Distribution (CPAN::DistnameInfo) object for package. my $dist = $module->distribution; # If 02packages has the same author/release for this package... @@ -173,7 +176,8 @@ sub reindex { # Update the status on the release. my $release = $self->index->type('release')->get( - { author => $source->{author}, + { + author => $source->{author}, name => $source->{release}, } ); @@ -187,7 +191,8 @@ sub reindex { # Get all the files for the release. my $scroll = $self->index->type("file")->search_type('scan')->filter( - { bool => { + { + bool => { must => [ { term => { 'release' => $source->{release} } }, { term => { 'author' => $source->{author} } } From 977d7a360e6e2d16ca9c4e41be1312301de86646 Mon Sep 17 00:00:00 2001 From: Clinton Gormley Date: Sat, 18 Apr 2015 16:00:40 +0200 Subject: [PATCH 072/329] Added field "dir" to File, so that MetaCPAN::Web::Model::API::File::dir() no longer needs to use the prefix filter. --- lib/MetaCPAN/Document/File.pm | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/lib/MetaCPAN/Document/File.pm b/lib/MetaCPAN/Document/File.pm index 527627bc1..0d90c7b39 100644 --- a/lib/MetaCPAN/Document/File.pm +++ b/lib/MetaCPAN/Document/File.pm @@ -575,6 +575,22 @@ sub _build_path { return join( '/', $self->release->name, $self->name ); } +has dir => ( + is => 'ro', + lazy_build => 1, + isa => 'Str', + required => 1, + index => 'not_analyzed' +); + +sub _build_dir { + my $self = shift; + $DB::single = 1; + my $dir = $self->path; + $dir =~ s{/[^/]+$}{}; + return $dir; +} + has [qw(release distribution)] => ( is => 'ro', required => 1, From eea3b029ba65774ccf4f6651f60ce25068363402 Mon Sep 17 00:00:00 2001 From: Clinton Gormley Date: Sat, 18 Apr 2015 16:14:36 +0200 Subject: [PATCH 073/329] Added a controller for File::download_url and exposed the matching module version. Tests are currently skipped --- lib/MetaCPAN/Document/File.pm | 9 ++-- .../Server/Controller/Search/DownloadURL.pm | 30 ++++++++++++ t/server/controller/search/download_url.t | 49 +++++++++++++++++++ 3 files changed, 84 insertions(+), 4 deletions(-) create mode 100644 lib/MetaCPAN/Server/Controller/Search/DownloadURL.pm create mode 100644 t/server/controller/search/download_url.t diff --git a/lib/MetaCPAN/Document/File.pm b/lib/MetaCPAN/Document/File.pm index 0d90c7b39..0391a8057 100644 --- a/lib/MetaCPAN/Document/File.pm +++ b/lib/MetaCPAN/Document/File.pm @@ -973,8 +973,9 @@ sub find_download_url { # filters to be applied to the nested modules my $module_f = { nested => { - path => 'module', - filter => { + path => 'module', + inner_hits => { _source => "version" }, + filter => { bool => { must => [ { term => { "module.authorized" => \1 } }, @@ -999,7 +1000,7 @@ sub find_download_url { "module.version_numified" => { mode => 'max', order => 'desc', - nested_filter => $module_f + nested_filter => $module_f->{nested}{filter} } }, { date => { order => 'desc' } } @@ -1033,7 +1034,7 @@ sub find_download_url { } return $self->size(1)->query($query) - ->source( 'download_url', 'date', 'status' )->sort( \@sort ); + ->source( [ 'download_url', 'date', 'status' ] )->sort( \@sort ); } diff --git a/lib/MetaCPAN/Server/Controller/Search/DownloadURL.pm b/lib/MetaCPAN/Server/Controller/Search/DownloadURL.pm new file mode 100644 index 000000000..efd3b8e78 --- /dev/null +++ b/lib/MetaCPAN/Server/Controller/Search/DownloadURL.pm @@ -0,0 +1,30 @@ +package MetaCPAN::Server::Controller::Search::DownloadURL; + +use strict; +use warnings; + +use Moose; + +BEGIN { extends 'MetaCPAN::Server::Controller' } + +with 'MetaCPAN::Server::Role::JSONP'; + +has '+type' => ( default => 'file' ); + +sub get : Local : Path('/download_url') : Args(1) { + my ( $self, $c, $module ) = @_; + my $args = $c->req->params; + + my $model = $self->model($c); + my $res = $model->find_download_url( $module, $args )->raw->all; + my $hit = $res->{hits}{hits}[0] + or return $c->detach( '/not_found', [] ); + + $c->stash( + { %{ $hit->{_source} }, + %{ $hit->{inner_hits}{module}{hits}{hits}[0]{_source} } + } + ); +} + +1; diff --git a/t/server/controller/search/download_url.t b/t/server/controller/search/download_url.t new file mode 100644 index 000000000..305c382ce --- /dev/null +++ b/t/server/controller/search/download_url.t @@ -0,0 +1,49 @@ +use strict; +use warnings; + +use lib 't/lib'; +use MetaCPAN::Server::Test; +use MetaCPAN::TestHelpers; +use Test::More skip_all => + "Need to add CPAN::Test::Dummy::Perl5::VersionBump to CPAN::Faker and write tests"; + +use Log::Any::Adapter ( 'File', 'out' ); + +test_psgi app, sub { + my $cb = shift; + + # test ES script using doc['blah'] value + { + ok( my $res = $cb->( + GET + '/download_url/CPAN::Test::Dummy::Perl5::VersionBump::Decrease' + ), + 'GET' + ); + my $json = decode_json_ok($res); + + use Data::Dump qw(pp); + print STDERR ( pp( scalar $json ), "\n" ); + + # my $got + # = [ map { $_->{_source}{documentation} } + # @{ $json->{hits}{hits} } ]; + # + # is_deeply $got, [ + # qw( + # Multiple::Modules + # Multiple::Modules::A + # Multiple::Modules::B + # Multiple::Modules::RDeps + # Multiple::Modules::Tester + # Multiple::Modules::RDeps::A + # Multiple::Modules::RDeps::Deprecated + # ) + # ], + # 'results are sorted by module name length' + # or diag( Test::More::explain($got) ); + # } + }; +}; + +done_testing; From e5d2cdefa3041fad2e53681bc1fd494b63491bd9 Mon Sep 17 00:00:00 2001 From: Clinton Gormley Date: Sat, 18 Apr 2015 16:52:23 +0200 Subject: [PATCH 074/329] Expanded the range of fields used for autocomplete --- lib/MetaCPAN/Document/File.pm | 13 +++++-------- lib/MetaCPAN/Model.pm | 8 +++++++- t/server/controller/search/autocomplete.t | 3 +-- 3 files changed, 13 insertions(+), 11 deletions(-) diff --git a/lib/MetaCPAN/Document/File.pm b/lib/MetaCPAN/Document/File.pm index 0391a8057..cddcd1187 100644 --- a/lib/MetaCPAN/Document/File.pm +++ b/lib/MetaCPAN/Document/File.pm @@ -273,7 +273,7 @@ has documentation => ( lazy_build => 1, index => 'analyzed', predicate => 'has_documentation', - analyzer => [qw(standard camelcase edge_camelcase)], + analyzer => [qw(standard camelcase lowercase edge edge_camelcase)], clearer => 'clear_documentation', ); @@ -1160,12 +1160,10 @@ sub autocomplete { filtered => { query => { multi_match => { - query => $query, - type => 'most_fields', - fields => [ - 'documentation', 'documentation.edge_camelcase' - ], - analyzer => 'camelcase', + query => $query, + type => 'most_fields', + fields => [ 'documentation', 'documentation.*' ], + analyzer => 'camelcase', minimum_should_match => "80%" }, }, @@ -1183,7 +1181,6 @@ sub autocomplete { 'distribution' => \@ROGUE_DISTRIBUTIONS } }, - ], } } diff --git a/lib/MetaCPAN/Model.pm b/lib/MetaCPAN/Model.pm index d7f429ba7..e0213a1b7 100644 --- a/lib/MetaCPAN/Model.pm +++ b/lib/MetaCPAN/Model.pm @@ -32,7 +32,7 @@ filter edge => ( analyzer camelcase => ( type => 'custom', tokenizer => 'camelcase', - filter => ['lowercase'] + filter => [ 'lowercase', 'unique' ] ); analyzer edge_camelcase => ( @@ -41,6 +41,12 @@ analyzer edge_camelcase => ( filter => [ 'lowercase', 'edge' ] ); +analyzer edge => ( + type => 'custom', + tokenizer => 'standard', + filter => [ 'lowercase', 'edge' ] +); + index cpan => ( namespace => 'MetaCPAN::Document', alias_for => 'cpan_v1', diff --git a/t/server/controller/search/autocomplete.t b/t/server/controller/search/autocomplete.t index 2776bd988..cceedded4 100644 --- a/t/server/controller/search/autocomplete.t +++ b/t/server/controller/search/autocomplete.t @@ -15,8 +15,7 @@ test_psgi app, sub { 'GET' ); my $json = decode_json_ok($res); - my $got - = [ map { $_->{_source}{documentation} } + my $got = [ map { @{ $_->{fields}{documentation} } } @{ $json->{hits}{hits} } ]; is_deeply $got, [ From fde802cd870f2c5f06d1fdee7c015d2078b34edc Mon Sep 17 00:00:00 2001 From: Clinton Gormley Date: Sat, 18 Apr 2015 16:53:12 +0200 Subject: [PATCH 075/329] The "snowball" analyzer is going away - replacing with english --- lib/MetaCPAN/Model.pm | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/lib/MetaCPAN/Model.pm b/lib/MetaCPAN/Model.pm index e0213a1b7..0f2f062d9 100644 --- a/lib/MetaCPAN/Model.pm +++ b/lib/MetaCPAN/Model.pm @@ -12,10 +12,7 @@ analyzer lowercase => ( filter => 'lowercase', ); -analyzer fulltext => ( - type => 'snowball', - language => 'English', -); +analyzer fulltext => ( type => 'english' ); tokenizer camelcase => ( type => 'pattern', From e36a5906ae0704c483a016a202bac3d2c6330324 Mon Sep 17 00:00:00 2001 From: Clinton Gormley Date: Sat, 18 Apr 2015 16:55:30 +0200 Subject: [PATCH 076/329] ES_TRACE=1 when running fakecpan.t, now dumps logs to es.log for easier debugging --- t/fakecpan.t | 2 +- t/server/controller/search/download_url.t | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/t/fakecpan.t b/t/fakecpan.t index 6ea261901..77f903fc9 100644 --- a/t/fakecpan.t +++ b/t/fakecpan.t @@ -59,7 +59,7 @@ BEGIN { $ENV{EMAIL_SENDER_TRANSPORT} = 'Test' } ok( my $es = Search::Elasticsearch->new( nodes => $ES_HOST, - ( $ENV{ES_TRACE} ? ( trace_to => 'Stderr' ) : () ) + ( $ENV{ES_TRACE} ? ( trace_to => [ 'File', 'es.log' ] ) : () ) ), 'got ElasticSearch object' ); diff --git a/t/server/controller/search/download_url.t b/t/server/controller/search/download_url.t index 305c382ce..d9d42e61b 100644 --- a/t/server/controller/search/download_url.t +++ b/t/server/controller/search/download_url.t @@ -7,8 +7,6 @@ use MetaCPAN::TestHelpers; use Test::More skip_all => "Need to add CPAN::Test::Dummy::Perl5::VersionBump to CPAN::Faker and write tests"; -use Log::Any::Adapter ( 'File', 'out' ); - test_psgi app, sub { my $cb = shift; From ad9cdb01f4a540359e0ee6355e504ef88e7e5cf4 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Sat, 18 Apr 2015 15:31:03 +0200 Subject: [PATCH 077/329] Adds OrePAN2 to cpanfile. --- .gitignore | 1 + cpanfile | 1 + cpanfile.snapshot | 470 +++++++++++++++++++++++++++++++++++++++------- 3 files changed, 409 insertions(+), 63 deletions(-) diff --git a/.gitignore b/.gitignore index 871180658..638852b21 100644 --- a/.gitignore +++ b/.gitignore @@ -8,6 +8,7 @@ *.sqlite* /var /t/var/tmp/ +/t/var/cpan/ /etc/metacpan_local.pl metacpan_server_local.conf diff --git a/cpanfile b/cpanfile index dc1dfd396..22efa7cb1 100644 --- a/cpanfile +++ b/cpanfile @@ -166,6 +166,7 @@ test_requires 'HTTP::Cookies'; test_requires 'LWP::ConsoleLogger'; test_requires 'Module::Faker', '0.015'; test_requires 'Module::Faker::Dist', '0.010'; +test_requires 'OrePAN2', '0.38'; test_requires 'Perl::Critic::Nits'; test_requires 'Plack::Handler::HTTP::Server::Simple'; test_requires 'Plack::Test::Agent'; diff --git a/cpanfile.snapshot b/cpanfile.snapshot index 9fb17a31f..9be90e77f 100644 --- a/cpanfile.snapshot +++ b/cpanfile.snapshot @@ -183,6 +183,19 @@ DISTRIBUTIONS Params::Check 0.07 Test::More 0 if 0 + Archive-Peek-0.35 + pathname: L/LB/LBROCARD/Archive-Peek-0.35.tar.gz + provides: + Archive::Peek 0.35 + Archive::Peek::Tar undef + Archive::Peek::Zip undef + requirements: + Archive::Tar 0 + Archive::Zip 0 + ExtUtils::MakeMaker 0 + Moose 0 + MooseX::Types::Path::Class 0 + Test::More 0 Archive-Zip-1.37 pathname: P/PH/PHRED/Archive-Zip-1.37.tar.gz provides: @@ -396,16 +409,17 @@ DISTRIBUTIONS Text::Template 0 strict 0 warnings 0 - CPAN-Meta-2.141520 - pathname: D/DA/DAGOLDEN/CPAN-Meta-2.141520.tar.gz - provides: - CPAN::Meta 2.141520 - CPAN::Meta::Converter 2.141520 - CPAN::Meta::Feature 2.141520 - CPAN::Meta::History 2.141520 - CPAN::Meta::Prereqs 2.141520 - CPAN::Meta::Spec 2.141520 - CPAN::Meta::Validator 2.141520 + CPAN-Meta-2.150001 + pathname: D/DA/DAGOLDEN/CPAN-Meta-2.150001.tar.gz + provides: + CPAN::Meta 2.150001 + CPAN::Meta::Converter 2.150001 + CPAN::Meta::Feature 2.150001 + CPAN::Meta::History 2.150001 + CPAN::Meta::Merge 2.150001 + CPAN::Meta::Prereqs 2.150001 + CPAN::Meta::Spec 2.150001 + CPAN::Meta::Validator 2.150001 requirements: CPAN::Meta::Requirements 2.121 CPAN::Meta::YAML 0.008 @@ -414,6 +428,7 @@ DISTRIBUTIONS JSON::PP 2.27200 Parse::CPAN::Meta 1.4414 Scalar::Util 0 + perl 5.008 strict 0 version 0.88 warnings 0 @@ -1587,6 +1602,14 @@ DISTRIBUTIONS Term::ANSIColor 3 Test::More 0.88 version 0.77 + Data-Record-0.02 + pathname: O/OV/OVID/Data-Record-0.02.tar.gz + provides: + Data::Record 0.02 + requirements: + Sub::Uplevel 0.09 + Test::Exception 0.21 + Test::More 0.6 Data-Section-0.200006 pathname: R/RJ/RJBS/Data-Section-0.200006.tar.gz provides: @@ -3260,6 +3283,18 @@ DISTRIBUTIONS Test::Builder 0 Test::More 0 perl 5.006 + File-ConfigDir-0.016 + pathname: R/RE/REHSACK/File-ConfigDir-0.016.tar.gz + provides: + File::ConfigDir 0.016 + requirements: + Carp 0 + ExtUtils::MakeMaker 0 + File::Basename 0 + File::Path 2.00 + File::Spec 0 + FindBin 0 + perl 5.008001 File-Find-Rule-0.33 pathname: R/RC/RCLAMP/File-Find-Rule-0.33.tar.gz provides: @@ -3391,6 +3426,12 @@ DISTRIBUTIONS ExtUtils::MakeMaker 0 Fcntl 0 POSIX 0 + File-Sync-0.11 + pathname: B/BR/BRIANSKI/File-Sync-0.11.tar.gz + provides: + File::Sync 0.11 + requirements: + ExtUtils::MakeMaker 0 File-Which-1.09 pathname: A/AD/ADAMK/File-Which-1.09.tar.gz provides: @@ -3439,15 +3480,24 @@ DISTRIBUTIONS ExtUtils::MakeMaker 0 File::Spec 0 Test::More 0 - Getopt-Long-Descriptive-0.097 - pathname: R/RJ/RJBS/Getopt-Long-Descriptive-0.097.tar.gz + Getopt-Long-2.45 + pathname: J/JV/JV/Getopt-Long-2.45.tar.gz provides: - Getopt::Long::Descriptive 0.097 - Getopt::Long::Descriptive::Opts 0.097 - Getopt::Long::Descriptive::Usage 0.097 + Getopt::Long 2.45 + Getopt::Long::CallBack 2.45 + Getopt::Long::Parser 2.45 + requirements: + ExtUtils::MakeMaker 0 + Pod::Usage 1.14 + Getopt-Long-Descriptive-0.099 + pathname: R/RJ/RJBS/Getopt-Long-Descriptive-0.099.tar.gz + provides: + Getopt::Long::Descriptive 0.099 + Getopt::Long::Descriptive::Opts 0.099 + Getopt::Long::Descriptive::Usage 0.099 requirements: Carp 0 - ExtUtils::MakeMaker 6.30 + ExtUtils::MakeMaker 0 File::Basename 0 Getopt::Long 2.33 List::Util 0 @@ -3909,6 +3959,20 @@ DISTRIBUTIONS strict 0 vars 0 warnings 0 + IO-File-AtomicChange-0.05 + pathname: H/HI/HIROSE/IO-File-AtomicChange-0.05.tar.gz + provides: + IO::File::AtomicChange 0.05 + requirements: + CPAN::Meta 0 + ExtUtils::MakeMaker 6.36 + File::Copy 0 + File::Sync 0 + File::Temp 0 + IO::File 0 + POSIX 0 + Path::Class 0 + Time::HiRes 0 IO-HTML-1.00 pathname: C/CJ/CJM/IO-HTML-1.00.tar.gz provides: @@ -4192,6 +4256,18 @@ DISTRIBUTIONS base 0 strict 0 warnings 0 + List-Compare-0.49 + pathname: J/JK/JKEENAN/List-Compare-0.49.tar.gz + provides: + List::Compare 0.49 + List::Compare::Accelerated 0.49 + List::Compare::Base::_Auxiliary 0.49 + List::Compare::Base::_Engine 0.49 + List::Compare::Functional 0.49 + List::Compare::Multiple 0.49 + List::Compare::Multiple::Accelerated 0.49 + requirements: + ExtUtils::MakeMaker 0 List-MoreUtils-0.33 pathname: A/AD/ADAMK/List-MoreUtils-0.33.tar.gz provides: @@ -4355,6 +4431,16 @@ DISTRIBUTIONS requirements: ExtUtils::MakeMaker 0 MIME::Base64 0 + MIME-Charset-1.012 + pathname: N/NE/NEZUMI/MIME-Charset-1.012.tar.gz + provides: + MIME::Charset 1.012 + requirements: + CPAN 0 + Encode 1.98 + ExtUtils::MakeMaker 6.42 + Test::More 0 + perl 5.005 MIME-Types-2.04 pathname: M/MA/MARKOV/MIME-Types-2.04.tar.gz provides: @@ -4417,6 +4503,36 @@ DISTRIBUTIONS Fennec::Lite 0 Test::Exception 0 Test::More 0 + MetaCPAN-Client-1.012000 + pathname: M/MI/MICKEY/MetaCPAN-Client-1.012000.tar.gz + provides: + MetaCPAN::Client 1.012000 + MetaCPAN::Client::Author 1.012000 + MetaCPAN::Client::Distribution 1.012000 + MetaCPAN::Client::Favorite 1.012000 + MetaCPAN::Client::File 1.012000 + MetaCPAN::Client::Mirror 1.012000 + MetaCPAN::Client::Module 1.012000 + MetaCPAN::Client::Pod 1.012000 + MetaCPAN::Client::Rating 1.012000 + MetaCPAN::Client::Release 1.012000 + MetaCPAN::Client::Request 1.012000 + MetaCPAN::Client::ResultSet 1.012000 + MetaCPAN::Client::Role::Entity 1.012000 + requirements: + Carp 0 + ExtUtils::MakeMaker 0 + HTTP::Tiny 0 + JSON::MaybeXS 0 + Module::Build 0.28 + Moo 0 + Moo::Role 0 + Safe::Isa 0 + Search::Elasticsearch 1.10 + Search::Elasticsearch::Scroll 0 + Try::Tiny 0 + strict 0 + warnings 0 Mixin-Linewise-0.106 pathname: R/RJ/RJBS/Mixin-Linewise-0.106.tar.gz provides: @@ -4432,35 +4548,30 @@ DISTRIBUTIONS Sub::Exporter 0 strict 0 warnings 0 - Module-Build-0.4205 - pathname: L/LE/LEONT/Module-Build-0.4205.tar.gz - provides: - Module::Build 0.4205 - Module::Build::Base 0.4205 - Module::Build::Compat 0.4205 - Module::Build::Config 0.4205 - Module::Build::Cookbook 0.4205 - Module::Build::Dumper 0.4205 - Module::Build::ModuleInfo 0.4205 - Module::Build::Notes 0.4205 - Module::Build::PPMMaker 0.4205 - Module::Build::Platform::Default 0.4205 - Module::Build::Platform::MacOS 0.4205 - Module::Build::Platform::Unix 0.4205 - Module::Build::Platform::VMS 0.4205 - Module::Build::Platform::VOS 0.4205 - Module::Build::Platform::Windows 0.4205 - Module::Build::Platform::aix 0.4205 - Module::Build::Platform::cygwin 0.4205 - Module::Build::Platform::darwin 0.4205 - Module::Build::Platform::os2 0.4205 - Module::Build::PodParser 0.4205 - Module::Build::Version 0.87 - Module::Build::YAML 1.41 - inc::latest 0.4205 - inc::latest::private 0.4205 - requirements: - CPAN::Meta 2.110420 + Module-Build-0.4211 + pathname: L/LE/LEONT/Module-Build-0.4211.tar.gz + provides: + Module::Build 0.4211 + Module::Build::Base 0.4211 + Module::Build::Compat 0.4211 + Module::Build::Config 0.4211 + Module::Build::Cookbook 0.4211 + Module::Build::Dumper 0.4211 + Module::Build::Notes 0.4211 + Module::Build::PPMMaker 0.4211 + Module::Build::Platform::Default 0.4211 + Module::Build::Platform::MacOS 0.4211 + Module::Build::Platform::Unix 0.4211 + Module::Build::Platform::VMS 0.4211 + Module::Build::Platform::VOS 0.4211 + Module::Build::Platform::Windows 0.4211 + Module::Build::Platform::aix 0.4211 + Module::Build::Platform::cygwin 0.4211 + Module::Build::Platform::darwin 0.4211 + Module::Build::Platform::os2 0.4211 + Module::Build::PodParser 0.4211 + requirements: + CPAN::Meta 2.142060 CPAN::Meta::YAML 0.003 Cwd 0 Data::Dumper 0 @@ -4485,7 +4596,7 @@ DISTRIBUTIONS Test::More 0.49 Text::Abbrev 0 Text::ParseWords 0 - perl 5.006001 + perl 5.008000 version 0.87 Module-Build-Tiny-0.039 pathname: L/LE/LEONT/Module-Build-Tiny-0.039.tar.gz @@ -4643,36 +4754,94 @@ DISTRIBUTIONS perl 5.006 strict 0 warnings 0 - Moo-1.004006 - pathname: H/HA/HAARG/Moo-1.004006.tar.gz + Moo-2.000001 + pathname: H/HA/HAARG/Moo-2.000001.tar.gz provides: Method::Generate::Accessor undef Method::Generate::BuildAll undef Method::Generate::Constructor undef Method::Generate::DemolishAll undef Method::Inliner undef - Moo 1.004006 + Moo 2.000001 Moo::HandleMoose undef Moo::HandleMoose::FakeConstructor undef Moo::HandleMoose::FakeMetaClass undef Moo::HandleMoose::_TypeMap undef Moo::Object undef - Moo::Role 1.004006 + Moo::Role 2.000001 Moo::_Utils undef Moo::_mro undef + Moo::_strictures undef Moo::sification undef - Sub::Defer 1.004006 - Sub::Quote 1.004006 + Sub::Defer 2.000001 + Sub::Quote 2.000001 oo undef requirements: Class::Method::Modifiers 1.1 Devel::GlobalDestruction 0.11 + Exporter 5.57 ExtUtils::MakeMaker 0 - Import::Into 1.002 - Module::Runtime 0.012 - Role::Tiny 1.003003 + Module::Runtime 0.014 + Role::Tiny 2 + Scalar::Util 0 + perl 5.006 + MooX-ConfigFromFile-0.006 + pathname: R/RE/REHSACK/MooX-ConfigFromFile-0.006.tar.gz + provides: + MooX::ConfigFromFile 0.006 + MooX::ConfigFromFile::Role 0.006 + requirements: + Config::Any 0 + ExtUtils::MakeMaker 0 + File::Find::Rule 0.30 + FindBin 0 + Moo 1.003 + MooX::File::ConfigDir 0.002 + perl 5.008001 + MooX-File-ConfigDir-0.005 + pathname: R/RE/REHSACK/MooX-File-ConfigDir-0.005.tar.gz + provides: + MooX::File::ConfigDir 0.005 + requirements: + ExtUtils::MakeMaker 0 + File::ConfigDir 0.011 + Moo::Role 1.003000 + namespace::clean 0 + perl 5.008001 + MooX-Options-4.018 + pathname: C/CE/CELOGEEK/MooX-Options-4.018.tar.gz + provides: + MooX::Options 4.018 + MooX::Options::Descriptive 4.018 + MooX::Options::Descriptive::Usage 4.018 + MooX::Options::Role 4.018 + TestNamespaceClean undef + t::lib::MooXCmdTest undef + t::lib::MooXCmdTest::Cmd::test1 undef + t::lib::MooXCmdTest::Cmd::test1::Cmd::test2 undef + t::lib::MooXCmdTest::Cmd::test3 undef + requirements: + Carp 0 + Data::Record 0 + Getopt::Long 2.43 + Getopt::Long::Descriptive 0.099 + JSON 0 + MRO::Compat 0 + Module::Build 0.4211 + Module::Metadata 1.000019 + Moo 1.003001 + MooX::ConfigFromFile 0 + Path::Class 0.32 + Pod::Usage 0 + Regexp::Common 0 Scalar::Util 0 - strictures 1.004003 + Text::LineFold 0 + feature 0 + overload 0 + parent 0 + perl 5.010 + strict 0 + warnings 0 MooX-StrictConstructor-0.006 pathname: H/HA/HARTZELL/MooX-StrictConstructor-0.006.tar.gz provides: @@ -5891,6 +6060,52 @@ DISTRIBUTIONS Storable 2.11 Test::More 0.47 perl 5.005 + OrePAN2-0.38 + pathname: O/OA/OALDERS/OrePAN2-0.38.tar.gz + provides: + OrePAN2 0.38 + OrePAN2::Auditor undef + OrePAN2::CLI::Indexer undef + OrePAN2::CLI::Inject undef + OrePAN2::Index undef + OrePAN2::Indexer undef + OrePAN2::Injector undef + OrePAN2::Repository undef + OrePAN2::Repository::Cache undef + requirements: + Archive::Extract 0.72 + Archive::Tar 0 + CPAN::Meta 2.13156 + Class::Accessor::Lite 0.05 + Digest::MD5 0 + File::Path 0 + File::Temp 0 + File::pushd 0 + Getopt::Long 2.39 + HTTP::Tiny 0 + IO::File::AtomicChange 0 + IO::Socket::SSL 1.42 + IO::Uncompress::Gunzip 0 + IO::Zlib 0 + JSON::PP 0 + List::Compare 0 + MetaCPAN::Client 1.006 + Module::Build::Tiny 0.035 + Moo 1.007000 + MooX::Options 0 + Parse::CPAN::Meta 1.4414 + Parse::CPAN::Packages 2.39 + Parse::LocalDistribution 0.14 + Parse::PMFile 0.29 + Path::Tiny 0 + Pod::Usage 0 + Try::Tiny 0 + Type::Params 0 + Types::URI 0 + autodie 0 + parent 0 + perl 5.008005 + version 0.9912 Ouch-0.0408 pathname: R/RI/RIZEN/Ouch-0.0408.tar.gz provides: @@ -6271,6 +6486,26 @@ DISTRIBUTIONS File::Spec 0.80 JSON::PP 2.27200 strict 0 + Parse-CPAN-Packages-2.40 + pathname: M/MI/MITHALDU/Parse-CPAN-Packages-2.40.tar.gz + provides: + Parse::CPAN::Packages 2.40 + Parse::CPAN::Packages::Distribution undef + Parse::CPAN::Packages::Package undef + requirements: + Archive::Peek 0 + CPAN::DistnameInfo 0 + Compress::Zlib 0 + ExtUtils::MakeMaker 0 + File::Slurp 0 + Moo 0 + PPI 0 + Path::Class 0 + Test::InDistDir 0 + Test::More 0 + Type::Utils 0 + Types::Standard 0 + version 0 Parse-CPAN-Packages-Fast-0.07 pathname: S/SR/SREZIC/Parse-CPAN-Packages-Fast-0.07.tar.gz provides: @@ -6294,6 +6529,21 @@ DISTRIBUTIONS Test::More 0.47 Text::CSV_XS 0.42 perl 5.005 + Parse-LocalDistribution-0.15 + pathname: I/IS/ISHIGAKI/Parse-LocalDistribution-0.15.tar.gz + provides: + Parse::LocalDistribution 0.15 + requirements: + ExtUtils::MakeMaker::CPANfile 0.06 + File::Find 0 + File::Path 0 + File::Spec 0 + File::Temp 0 + List::Util 0 + Parse::CPAN::Meta 0 + Parse::PMFile 0.35 + Test::More 0.88 + Test::UseAllModules 0.10 Parse-MIME-1.003 pathname: A/AR/ARISTOTLE/Parse-MIME-1.003.tar.gz provides: @@ -6304,10 +6554,10 @@ DISTRIBUTIONS perl 5.006 strict 0 warnings 0 - Parse-PMFile-0.29 - pathname: I/IS/ISHIGAKI/Parse-PMFile-0.29.tar.gz + Parse-PMFile-0.36 + pathname: I/IS/ISHIGAKI/Parse-PMFile-0.36.tar.gz provides: - Parse::PMFile 0.29 + Parse::PMFile 0.36 requirements: Dumpvalue 0 ExtUtils::MakeMaker::CPANfile 0.06 @@ -7223,11 +7473,11 @@ DISTRIBUTIONS POSIX 0 Regexp::Common 0 Test::More 0.40 - Role-Tiny-1.003003 - pathname: H/HA/HAARG/Role-Tiny-1.003003.tar.gz + Role-Tiny-2.000000 + pathname: H/HA/HAARG/Role-Tiny-2.000000.tar.gz provides: - Role::Tiny 1.003003 - Role::Tiny::With 1.003003 + Role::Tiny 2.000000 + Role::Tiny::With 2.000000 requirements: Exporter 5.57 perl 5.006 @@ -7732,6 +7982,16 @@ DISTRIBUTIONS Test::Harness 3.30 requirements: ExtUtils::MakeMaker 0 + Test-InDistDir-1.112071 + pathname: M/MI/MITHALDU/Test-InDistDir-1.112071.tar.gz + provides: + Test::InDistDir 1.112071 + requirements: + ExtUtils::MakeMaker 6.30 + File::Find 0 + File::Spec 0 + File::Temp 0 + Test::More 0 Test-LongString-0.15 pathname: R/RG/RGARCIA/Test-LongString-0.15.tar.gz provides: @@ -8000,6 +8260,16 @@ DISTRIBUTIONS strict 0 version 0 warnings 0 + Test-UseAllModules-0.17 + pathname: I/IS/ISHIGAKI/Test-UseAllModules-0.17.tar.gz + provides: + Test::UseAllModules 0.17 + requirements: + Exporter 0 + ExtUtils::MakeMaker 0 + ExtUtils::Manifest 0 + Test::Builder 0.30 + Test::More 0.60 Test-Version-1.002004 pathname: X/XE/XENO/Test-Version-1.002004.tar.gz provides: @@ -8317,6 +8587,19 @@ DISTRIBUTIONS Exporter::Tiny 0.026 ExtUtils::MakeMaker 6.17 perl 5.006001 + Types-Path-Tiny-0.005 + pathname: D/DA/DAGOLDEN/Types-Path-Tiny-0.005.tar.gz + provides: + Types::Path::Tiny 0.005 + requirements: + ExtUtils::MakeMaker 6.30 + Path::Tiny 0 + Type::Library 0.008 + Type::Utils 0 + Types::Standard 0 + Types::TypeTiny 0.004 + strict 0 + warnings 0 Types-Serialiser-1.0 pathname: M/ML/MLEHMANN/Types-Serialiser-1.0.tar.gz provides: @@ -8327,6 +8610,28 @@ DISTRIBUTIONS requirements: ExtUtils::MakeMaker 0 common::sense 0 + Types-URI-0.006 + pathname: T/TO/TOBYINK/Types-URI-0.006.tar.gz + provides: + Types::URI 0.006 + requirements: + ExtUtils::MakeMaker 6.17 + Type::Library 1.000000 + Types::Path::Tiny 0 + Types::Standard 0 + Types::UUID 0 + URI 0 + URI::FromHash 0 + perl 5.008 + Types-UUID-0.004 + pathname: T/TO/TOBYINK/Types-UUID-0.004.tar.gz + provides: + Types::UUID 0.004 + requirements: + ExtUtils::MakeMaker 6.17 + Type::Tiny 1.000000 + UUID::Tiny 1.02 + perl 5.008 UNIVERSAL-require-0.17 pathname: N/NE/NEILB/UNIVERSAL-require-0.17.tar.gz provides: @@ -8430,6 +8735,31 @@ DISTRIBUTIONS ExtUtils::MakeMaker 0 Test::More 0.88 URI 1.31 + UUID-Tiny-1.04 + pathname: C/CA/CAUGUSTIN/UUID-Tiny-1.04.tar.gz + provides: + UUID::Tiny 1.04 + requirements: + Carp 0 + Digest::MD5 0 + ExtUtils::MakeMaker 0 + IO::File 0 + MIME::Base64 0 + POSIX 0 + Test::More 0 + Time::HiRes 0 + Unicode-LineBreak-2014.06 + pathname: N/NE/NEZUMI/Unicode-LineBreak-2014.06.tar.gz + provides: + Text::LineFold 2012.04 + Unicode::GCString 2013.10 + Unicode::LineBreak 2014.06 + requirements: + Encode 1.98 + ExtUtils::MakeMaker 6.26 + MIME::Charset v1.6.2 + Test::More 0.45 + perl 5.008 Variable-Magic-0.53 pathname: V/VP/VPIT/Variable-Magic-0.53.tar.gz provides: @@ -8749,3 +9079,17 @@ DISTRIBUTIONS bareword::filehandles 0 indirect 0 multidimensional 0 + version-0.9912 + pathname: J/JP/JPEACOCK/version-0.9912.tar.gz + provides: + charstar 0.9912 + version 0.9912 + version::regex 0.9912 + version::vpp 0.9912 + version::vxs 0.9912 + requirements: + ExtUtils::MakeMaker 6.17 + File::Temp 0.13 + Test::More 0.45 + parent 0.221 + perl 5.006002 From 47efe59f66ab8fd73279f2085514d7b0daaa65db Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Sun, 19 Apr 2015 11:20:55 +0200 Subject: [PATCH 078/329] Bumps ElasticSearchX::Model to 0.2.0 --- cpanfile | 2 +- cpanfile.snapshot | 52 +++++++++++++++++++++++------------------------ 2 files changed, 27 insertions(+), 27 deletions(-) diff --git a/cpanfile b/cpanfile index 22efa7cb1..cfd09790c 100644 --- a/cpanfile +++ b/cpanfile @@ -43,7 +43,7 @@ requires 'Devel::Confess'; requires 'Digest::MD5'; requires 'Digest::SHA1'; requires 'EV'; -requires 'ElasticSearchX::Model', '0.1.9'; +requires 'ElasticSearchX::Model', '0.2.0'; requires 'Email::Address'; requires 'Email::Sender::Simple'; requires 'Email::Simple'; diff --git a/cpanfile.snapshot b/cpanfile.snapshot index 9be90e77f..9def1ba0d 100644 --- a/cpanfile.snapshot +++ b/cpanfile.snapshot @@ -2891,32 +2891,32 @@ DISTRIBUTIONS Test::More 0.96 strict 0 warnings 0 - ElasticSearchX-Model-0.1.9 - pathname: O/OA/OALDERS/ElasticSearchX-Model-0.1.9.tar.gz - provides: - ElasticSearchX::Model 0.001009 - ElasticSearchX::Model::Bulk 0.001009 - ElasticSearchX::Model::Document 0.001009 - ElasticSearchX::Model::Document::EmbeddedRole 0.001009 - ElasticSearchX::Model::Document::Mapping 0.001009 - ElasticSearchX::Model::Document::Role 0.001009 - ElasticSearchX::Model::Document::Set 0.001009 - ElasticSearchX::Model::Document::Trait::Attribute 0.001009 - ElasticSearchX::Model::Document::Trait::Class 0.001009 - ElasticSearchX::Model::Document::Trait::Class::ID 0.001009 - ElasticSearchX::Model::Document::Trait::Class::Timestamp 0.001009 - ElasticSearchX::Model::Document::Trait::Class::Version 0.001009 - ElasticSearchX::Model::Document::Trait::Field::ID 0.001009 - ElasticSearchX::Model::Document::Trait::Field::TTL 0.001009 - ElasticSearchX::Model::Document::Trait::Field::Timestamp 0.001009 - ElasticSearchX::Model::Document::Trait::Field::Version 0.001009 - ElasticSearchX::Model::Document::Types 0.001009 - ElasticSearchX::Model::Index 0.001009 - ElasticSearchX::Model::Role 0.001009 - ElasticSearchX::Model::Scroll 0.001009 - ElasticSearchX::Model::Trait::Class 0.001009 - ElasticSearchX::Model::Tutorial 0.001009 - ElasticSearchX::Model::Util 0.001009 + ElasticSearchX-Model-0.2.0 + pathname: O/OA/OALDERS/ElasticSearchX-Model-0.2.0.tar.gz + provides: + ElasticSearchX::Model 0.002000 + ElasticSearchX::Model::Bulk 0.002000 + ElasticSearchX::Model::Document 0.002000 + ElasticSearchX::Model::Document::EmbeddedRole 0.002000 + ElasticSearchX::Model::Document::Mapping 0.002000 + ElasticSearchX::Model::Document::Role 0.002000 + ElasticSearchX::Model::Document::Set 0.002000 + ElasticSearchX::Model::Document::Trait::Attribute 0.002000 + ElasticSearchX::Model::Document::Trait::Class 0.002000 + ElasticSearchX::Model::Document::Trait::Class::ID 0.002000 + ElasticSearchX::Model::Document::Trait::Class::Timestamp 0.002000 + ElasticSearchX::Model::Document::Trait::Class::Version 0.002000 + ElasticSearchX::Model::Document::Trait::Field::ID 0.002000 + ElasticSearchX::Model::Document::Trait::Field::TTL 0.002000 + ElasticSearchX::Model::Document::Trait::Field::Timestamp 0.002000 + ElasticSearchX::Model::Document::Trait::Field::Version 0.002000 + ElasticSearchX::Model::Document::Types 0.002000 + ElasticSearchX::Model::Index 0.002000 + ElasticSearchX::Model::Role 0.002000 + ElasticSearchX::Model::Scroll 0.002000 + ElasticSearchX::Model::Trait::Class 0.002000 + ElasticSearchX::Model::Tutorial 0.002000 + ElasticSearchX::Model::Util 0.002000 requirements: Carp 0 Class::Load 0 From 6cfb145d34bce14777040c802aa08ec06bc9abd4 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Sun, 19 Apr 2015 11:25:02 +0200 Subject: [PATCH 079/329] Make functions in MetaCPAN::Util importable. --- lib/MetaCPAN/Util.pm | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/lib/MetaCPAN/Util.pm b/lib/MetaCPAN/Util.pm index 967105208..019e1fccb 100644 --- a/lib/MetaCPAN/Util.pm +++ b/lib/MetaCPAN/Util.pm @@ -8,6 +8,14 @@ use version; use Digest::SHA1; use Encode; +use Sub::Exporter -setup => { + exports => [ + 'author_dir', 'digest', + 'extract_section', 'fix_pod', + 'fix_version', 'numify_version', + 'pod_lines', 'strip_pod', + ] +}; sub digest { my $digest = Digest::SHA1::sha1_base64( join( "\0", grep {defined} @_ ) ); From 44c1681f0bb83ef5ec2a36eb17ba496f2aa2eb41 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Sun, 19 Apr 2015 11:29:38 +0200 Subject: [PATCH 080/329] Disable ProhibitNoisyQuotes Perl::Critic policy. --- .perlcriticrc | 1 + 1 file changed, 1 insertion(+) diff --git a/.perlcriticrc b/.perlcriticrc index 937500106..1e94ebf7a 100644 --- a/.perlcriticrc +++ b/.perlcriticrc @@ -11,6 +11,7 @@ verbose = 11 [-RegularExpressions::RequireExtendedFormatting] [-RegularExpressions::RequireLineBoundaryMatching] [-ValuesAndExpressions::ProhibitAccessOfPrivateData] +[-ValuesAndExpressions::ProhibitNoisyQuotes] [-Variables::ProhibitPunctuationVars] [CodeLayout::RequireTrailingCommas] From 6cb673fd776b4f793d680eefe0f9f1f1c4350679 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Sun, 19 Apr 2015 11:34:16 +0200 Subject: [PATCH 081/329] Adds Test::Vars to cpanfile. --- cpanfile | 1 + cpanfile.snapshot | 13 +++++++++++++ 2 files changed, 14 insertions(+) diff --git a/cpanfile b/cpanfile index cfd09790c..65bf3178b 100644 --- a/cpanfile +++ b/cpanfile @@ -179,6 +179,7 @@ test_requires 'Test::Perl::Critic'; test_requires 'Test::RequiresInternet'; test_requires 'Test::Routine', '0.012'; test_requires 'Test::Routine::Util', '0'; +test_requires 'Test::Vars'; author_requires 'Code::TidyAll'; author_requires 'Plack::Middleware::Rewrite'; diff --git a/cpanfile.snapshot b/cpanfile.snapshot index 9def1ba0d..70fabb337 100644 --- a/cpanfile.snapshot +++ b/cpanfile.snapshot @@ -8270,6 +8270,19 @@ DISTRIBUTIONS ExtUtils::Manifest 0 Test::Builder 0.30 Test::More 0.60 + Test-Vars-0.005 + pathname: G/GF/GFUJI/Test-Vars-0.005.tar.gz + provides: + Test::Vars 0.005 + requirements: + B 0 + CPAN::Meta 0 + CPAN::Meta::Prereqs 0 + ExtUtils::MakeMaker 6.59 + Module::Build 0.38 + Test::More 0.88 + parent 0 + perl 5.010000 Test-Version-1.002004 pathname: X/XE/XENO/Test-Version-1.002004.tar.gz provides: From 51bf6cb81203eb7325a56964099b49a0e7367cc6 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Sun, 19 Apr 2015 13:11:30 +0200 Subject: [PATCH 082/329] Move Elasticsearch test server logic into MetaCPAN::TestServer. --- t/fakecpan.t | 65 ++------------------- t/lib/MetaCPAN/TestHelpers.pm | 6 ++ t/lib/MetaCPAN/TestServer.pm | 104 ++++++++++++++++++++++++++++++++++ 3 files changed, 115 insertions(+), 60 deletions(-) create mode 100644 t/lib/MetaCPAN/TestServer.pm diff --git a/t/fakecpan.t b/t/fakecpan.t index 77f903fc9..bf803a4c6 100644 --- a/t/fakecpan.t +++ b/t/fakecpan.t @@ -9,31 +9,6 @@ use Test::Most; use Search::Elasticsearch; use Search::Elasticsearch::TestServer; -my $server; -my $ES_HOST = $ENV{ES}; - -if ( !$ES_HOST ) { - my $ES_HOME = $ENV{ES_HOME} or die <<"USAGE"; - - Please set \$ENV{ES} to a running instance of Elasticsearch, - eg 'localhost:9200' or set \$ENV{ES_HOME} to the - directory containing Elasticsearch - -USAGE - - $server = Search::Elasticsearch::TestServer->new( - es_home => $ES_HOME, - http_port => 9900, - es_port => 9700, - instances => 1, - 'cluster.name' => 'metacpan-test', - ); - - $ENV{ES} = $ES_HOST = $server->start->[0]; -} - -diag "Connecting to Elasticsearch on $ES_HOST"; - # Don't warn about Parse::PMFile's exit() use Test::Aggregate::Nested 0.371 (); @@ -50,42 +25,21 @@ use MetaCPAN::Script::Release; use MetaCPAN::Script::Runner; use MetaCPAN::Script::Tickets; use MetaCPAN::Server::Test; - +use MetaCPAN::TestHelpers qw( get_config get_test_es_server ); use Module::Faker 0.015 (); # Generates META.json. use Path::Class qw(dir file); BEGIN { $ENV{EMAIL_SENDER_TRANSPORT} = 'Test' } -ok( - my $es = Search::Elasticsearch->new( - nodes => $ES_HOST, - ( $ENV{ES_TRACE} ? ( trace_to => [ 'File', 'es.log' ] ) : () ) - ), - 'got ElasticSearch object' -); - -ok( !$@, "Connected to the Elasticsearch test instance on $ES_HOST" ) - or do { - diag(< $es->info } ) ); - +my $server = get_test_es_server(); my $config = get_config(); -$config->{es} = $es; +$config->{es} = $server->es_client; { local @ARGV = qw(mapping --delete); ok( MetaCPAN::Script::Mapping->new_with_options($config)->run, 'put mapping' ); - wait_for_es(); + $server->wait_for_es(); } foreach my $test_dir ( $config->{cpan}, $config->{source_base} ) { @@ -156,16 +110,7 @@ ok( 'tickets' ); -wait_for_es(); - -sub wait_for_es { - sleep $_[0] if $_[0]; - $es->cluster->health( - wait_for_status => 'yellow', - timeout => '30s' - ); - $es->indices->refresh; -} +$server->wait_for_es(); subtest 'Nested tests' => sub { my $tests = Test::Aggregate::Nested->new( diff --git a/t/lib/MetaCPAN/TestHelpers.pm b/t/lib/MetaCPAN/TestHelpers.pm index 1d5a218aa..bd27e1fd6 100644 --- a/t/lib/MetaCPAN/TestHelpers.pm +++ b/t/lib/MetaCPAN/TestHelpers.pm @@ -8,6 +8,7 @@ use FindBin; use Git::Sub; use JSON; use MetaCPAN::Script::Runner; +use MetaCPAN::TestServer; use Path::Class qw( dir ); use Try::Tiny; use Test::More; @@ -19,6 +20,7 @@ our @EXPORT = qw( get_config decode_json_ok encode_json + get_test_es_server finally hex_escape multiline_diag @@ -102,4 +104,8 @@ sub get_config { return $config; } +sub get_test_es_server { + return MetaCPAN::TestServer->new(); +} + 1; diff --git a/t/lib/MetaCPAN/TestServer.pm b/t/lib/MetaCPAN/TestServer.pm new file mode 100644 index 000000000..c52a0e39c --- /dev/null +++ b/t/lib/MetaCPAN/TestServer.pm @@ -0,0 +1,104 @@ +package MetaCPAN::TestServer; + +use strict; +use warnings; + +use MetaCPAN::Types qw( Str ); +use Moose; +use Test::More; + +has es_client => ( + is => 'ro', + isa => 'Search::Elasticsearch::Client::Direct', + lazy => 1, + builder => '_build_es_client', +); + +has es_server => ( + is => 'ro', + isa => 'Search::Elasticsearch::TestServer', + lazy => 1, + builder => '_build_es_server', +); + +has _es_home => ( + is => 'ro', + isa => Str, + lazy => 1, + builder => '_build_es_home', +); + +sub _build_es_home { + my $self = shift; + + my $es_home = $ENV{ES}; + + if ( !$es_home ) { + my $es_home = $ENV{ES_HOME} or die <<'USAGE'; +Please set $ENV{ES} to a running instance of Elasticsearch, eg +'localhost:9200' or set $ENV{ES_HOME} to the directory containing +Elasticsearch +USAGE + } + + return $es_home; +} + +sub _build_es_server { + my $self = shift; + + my $server = Search::Elasticsearch::TestServer->new( + es_home => $self->_es_home, + http_port => 9900, + es_port => 9700, + instances => 1, + 'cluster.name' => 'metacpan-test', + ); + + $ENV{ES} = $server->start->[0]; + + diag 'Connecting to Elasticsearch on ' . $self->_es_home; +} + +sub _build_es_client { + my $self = shift; + + my $es = Search::Elasticsearch->new( + nodes => $self->_es_home, + ( $ENV{ES_TRACE} ? ( trace_to => [ 'File', 'es.log' ] ) : () ) + ); + + ok( $es, 'got ElasticSearch object' ); + + my $host = $self->_es_home; + + ok( !$@, "Connected to the Elasticsearch test instance on $host" ) + or do { + diag(< $es->info } ) ); + + return $es; +} + +sub wait_for_es { + my $self = shift; + + sleep $_[0] if $_[0]; + + $self->es_client->cluster->health( + wait_for_status => 'yellow', + timeout => '30s' + ); + $self->es_client->indices->refresh; +} + +__PACKAGE__->meta->make_immutable(); +1; From d9196fa28aac849d69aebeb4065703cff8c6360c Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Sun, 19 Apr 2015 13:21:34 +0200 Subject: [PATCH 083/329] Sort use statements in t/fakecpan.t --- t/fakecpan.t | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/t/fakecpan.t b/t/fakecpan.t index bf803a4c6..362feadbf 100644 --- a/t/fakecpan.t +++ b/t/fakecpan.t @@ -6,8 +6,6 @@ use lib 't/lib'; # Require version for subtests but let Test::Most do the ->import() use Test::More 0.96 (); use Test::Most; -use Search::Elasticsearch; -use Search::Elasticsearch::TestServer; # Don't warn about Parse::PMFile's exit() use Test::Aggregate::Nested 0.371 (); @@ -15,9 +13,7 @@ use Test::Aggregate::Nested 0.371 (); use CPAN::Faker 0.010; use Config::General; use DDP; -use Search::Elasticsearch; use File::Copy; -use MetaCPAN::TestHelpers qw( get_config ); use MetaCPAN::Script::Author; use MetaCPAN::Script::Latest; use MetaCPAN::Script::Mapping; @@ -25,9 +21,12 @@ use MetaCPAN::Script::Release; use MetaCPAN::Script::Runner; use MetaCPAN::Script::Tickets; use MetaCPAN::Server::Test; +use MetaCPAN::TestHelpers qw( get_config ); use MetaCPAN::TestHelpers qw( get_config get_test_es_server ); use Module::Faker 0.015 (); # Generates META.json. use Path::Class qw(dir file); +use Search::Elasticsearch; +use Search::Elasticsearch::TestServer; BEGIN { $ENV{EMAIL_SENDER_TRANSPORT} = 'Test' } From 96e0c2db15807f3b27b2ce5523a8fda505ef5ad9 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Sun, 19 Apr 2015 13:45:14 +0200 Subject: [PATCH 084/329] Adds MetaCPAN::TestServer::put_mappings(). --- t/fakecpan.t | 33 ++++++++++++++++----------------- t/lib/MetaCPAN/TestHelpers.pm | 5 ----- t/lib/MetaCPAN/TestServer.pm | 30 +++++++++++++++++++++++++++++- 3 files changed, 45 insertions(+), 23 deletions(-) diff --git a/t/fakecpan.t b/t/fakecpan.t index 362feadbf..c3358e745 100644 --- a/t/fakecpan.t +++ b/t/fakecpan.t @@ -22,7 +22,7 @@ use MetaCPAN::Script::Runner; use MetaCPAN::Script::Tickets; use MetaCPAN::Server::Test; use MetaCPAN::TestHelpers qw( get_config ); -use MetaCPAN::TestHelpers qw( get_config get_test_es_server ); +use MetaCPAN::TestServer; use Module::Faker 0.015 (); # Generates META.json. use Path::Class qw(dir file); use Search::Elasticsearch; @@ -30,16 +30,11 @@ use Search::Elasticsearch::TestServer; BEGIN { $ENV{EMAIL_SENDER_TRANSPORT} = 'Test' } -my $server = get_test_es_server(); +my $server = MetaCPAN::TestServer->new; my $config = get_config(); $config->{es} = $server->es_client; -{ - local @ARGV = qw(mapping --delete); - ok( MetaCPAN::Script::Mapping->new_with_options($config)->run, - 'put mapping' ); - $server->wait_for_es(); -} +$server->put_mappings; foreach my $test_dir ( $config->{cpan}, $config->{source_base} ) { next unless $test_dir; @@ -83,17 +78,21 @@ ok( MetaCPAN::Script::Release->new_with_options($config)->run, local @ARGV = ('latest'); ok( MetaCPAN::Script::Latest->new_with_options($config)->run, 'latest' ); -copy( file(qw(t var fakecpan 00whois.xml)), +my $cpan_dir = dir( 't', 'var', 'fakecpan', ); + +copy( $cpan_dir->file('00whois.xml'), file( $config->{cpan}, qw(authors 00whois.xml) ) ); -copy( file(qw(t var fakecpan author-1.0.json)), + +copy( $cpan_dir->file('author-1.0.json'), file( $config->{cpan}, qw(authors id M MO MO author-1.0.json) ) ); -copy( - file(qw(t var fakecpan bugs.tsv)), - file( $config->{cpan}, qw(bugs.tsv) ) -); -local @ARGV = ('author'); -ok( MetaCPAN::Script::Author->new_with_options($config)->run, - 'index authors' ); + +copy( $cpan_dir->file('bugs.tsv'), file( $config->{cpan}, 'bugs.tsv' ) ); + +{ + local @ARGV = ('author'); + ok( MetaCPAN::Script::Author->new_with_options($config)->run, + 'index authors' ); +} ok( MetaCPAN::Script::Tickets->new_with_options( diff --git a/t/lib/MetaCPAN/TestHelpers.pm b/t/lib/MetaCPAN/TestHelpers.pm index bd27e1fd6..7cefa9257 100644 --- a/t/lib/MetaCPAN/TestHelpers.pm +++ b/t/lib/MetaCPAN/TestHelpers.pm @@ -20,7 +20,6 @@ our @EXPORT = qw( get_config decode_json_ok encode_json - get_test_es_server finally hex_escape multiline_diag @@ -104,8 +103,4 @@ sub get_config { return $config; } -sub get_test_es_server { - return MetaCPAN::TestServer->new(); -} - 1; diff --git a/t/lib/MetaCPAN/TestServer.pm b/t/lib/MetaCPAN/TestServer.pm index c52a0e39c..5d05d7c2e 100644 --- a/t/lib/MetaCPAN/TestServer.pm +++ b/t/lib/MetaCPAN/TestServer.pm @@ -3,7 +3,9 @@ package MetaCPAN::TestServer; use strict; use warnings; -use MetaCPAN::Types qw( Str ); +use MetaCPAN::Script::Mapping; +use MetaCPAN::TestHelpers qw( get_config ); +use MetaCPAN::Types qw( HashRef Str ); use Moose; use Test::More; @@ -21,6 +23,13 @@ has es_server => ( builder => '_build_es_server', ); +has _config => ( + is => 'ro', + isa => HashRef, + lazy => 1, + builder => '_build_config', +); + has _es_home => ( is => 'ro', isa => Str, @@ -28,6 +37,16 @@ has _es_home => ( builder => '_build_es_home', ); +sub _build_config { + my $self = shift; + + # don't know why get_config is not imported by this point + my $config = MetaCPAN::TestHelpers::get_config(); + + $config->{es} = $self->es_client; + return $config; +} + sub _build_es_home { my $self = shift; @@ -100,5 +119,14 @@ sub wait_for_es { $self->es_client->indices->refresh; } +sub put_mappings { + my $self = shift; + + local @ARGV = qw(mapping --delete); + ok( MetaCPAN::Script::Mapping->new_with_options( $self->_config )->run, + 'put mapping' ); + $self->wait_for_es(); +} + __PACKAGE__->meta->make_immutable(); 1; From fda2798441e1c1005d5e50e9fbd3293c83155ed9 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Sun, 19 Apr 2015 14:19:25 +0200 Subject: [PATCH 085/329] Adds CPAN::Repository to cpanfile. --- cpanfile | 1 + cpanfile.snapshot | 272 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 273 insertions(+) diff --git a/cpanfile b/cpanfile index 65bf3178b..fd0e7ad7d 100644 --- a/cpanfile +++ b/cpanfile @@ -159,6 +159,7 @@ requires 'warnings'; test_requires 'App::Prove'; test_requires 'CPAN::Faker', '0.010'; test_requires 'Config::General'; +test_requires 'CPAN::Repository'; test_requires 'ElasticSearch::TestServer'; test_requires 'File::Copy'; test_requires 'Git::Sub'; diff --git a/cpanfile.snapshot b/cpanfile.snapshot index 70fabb337..d4ab8c5d6 100644 --- a/cpanfile.snapshot +++ b/cpanfile.snapshot @@ -457,6 +457,28 @@ DISTRIBUTIONS Scalar::Util 0 strict 0 warnings 0 + CPAN-Repository-0.008 + pathname: G/GE/GETTY/CPAN-Repository-0.008.tar.gz + provides: + CPAN::Repository 0.008 + CPAN::Repository::Mailrc 0.008 + CPAN::Repository::Packages 0.008 + CPAN::Repository::Perms 0.008 + CPAN::Repository::Role::File 0.008 + requirements: + DateTime 0.72 + DateTime::Format::Epoch 0.13 + DateTime::Format::RFC3339 0 + Dist::Data 0.002 + ExtUtils::MakeMaker 6.30 + File::Path 2.08 + File::Spec::Functions 3.33 + File::Temp 0.22 + IO::File 1.14 + IO::Zlib 1.10 + Moo 0.009013 + Test::LoadAllModules 0.021 + Test::More 0.96 Cache-Cache-1.06 pathname: J/JS/JSWARTZ/Cache-Cache-1.06.tar.gz provides: @@ -1739,6 +1761,15 @@ DISTRIBUTIONS requirements: DateTime 0.18 DateTime::Format::Builder 0.77 + DateTime-Format-RFC3339-v1.0.5 + pathname: I/IK/IKEGAMI/DateTime-Format-RFC3339-v1.0.5.tar.gz + provides: + DateTime::Format::RFC3339 1.000005 + requirements: + DateTime 0 + ExtUtils::MakeMaker 0 + Test::More 0 + version 0 DateTime-Format-Strptime-1.55 pathname: D/DR/DROLSKY/DateTime-Format-Strptime-1.55.tar.gz provides: @@ -2827,6 +2858,57 @@ DISTRIBUTIONS base 0 strict 0 warnings 0 + Dist-Data-0.005 + pathname: G/GE/GETTY/Dist-Data-0.005.tar.gz + provides: + Dist::Data 0.005 + requirements: + Archive::Any 0.0932 + CPAN::Meta 2.113640 + DateTime::Format::Epoch 0.13 + Dist::Metadata 0.922 + ExtUtils::MakeMaker 6.30 + File::Find::Object 0 + File::Temp 0.22 + Module::Extract::Namespaces 0.14 + Moo 0.009013 + Dist-Metadata-0.925 + pathname: R/RW/RWSTAUNER/Dist-Metadata-0.925.tar.gz + provides: + Dist::Metadata 0.925 + Dist::Metadata::Archive 0.925 + Dist::Metadata::Dir 0.925 + Dist::Metadata::Dist 0.925 + Dist::Metadata::Struct 0.925 + Dist::Metadata::Tar 0.925 + Dist::Metadata::Zip 0.925 + requirements: + Archive::Tar 1 + Archive::Zip 1.30 + CPAN::DistnameInfo 0.12 + CPAN::Meta 2.1 + Carp 0 + Digest 1.03 + Digest::MD5 2 + Digest::SHA 5 + ExtUtils::MakeMaker 6.30 + File::Basename 0 + File::Find 0 + File::Spec 0 + File::Spec::Functions 0 + File::Spec::Native 1.002 + File::Temp 0.19 + List::Util 0 + Module::Metadata 0 + Path::Class 0.24 + Test::Fatal 0 + Test::MockObject 1.09 + Test::More 0.96 + Try::Tiny 0.09 + constant 0 + parent 0 + strict 0 + warnings 0 EV-4.17 pathname: M/ML/MLEHMANN/EV-4.17.tar.gz provides: @@ -3295,6 +3377,26 @@ DISTRIBUTIONS File::Spec 0 FindBin 0 perl 5.008001 + File-Find-Object-v0.2.13 + pathname: S/SH/SHLOMIF/File-Find-Object-v0.2.13.tar.gz + provides: + File::Find::Object 0.002013 + File::Find::Object::Base 0.002013 + File::Find::Object::PathComp 0.002013 + File::Find::Object::Result 0.002013 + requirements: + Carp 0 + Class::XSAccessor 0 + Fcntl 0 + File::Path 0 + File::Spec 0 + List::Util 0 + Module::Build 0.36 + Test::More 0 + parent 0 + perl 5.008 + strict 0 + warnings 0 File-Find-Rule-0.33 pathname: R/RC/RCLAMP/File-Find-Rule-0.33.tar.gz provides: @@ -3426,6 +3528,17 @@ DISTRIBUTIONS ExtUtils::MakeMaker 0 Fcntl 0 POSIX 0 + File-Spec-Native-1.003 + pathname: R/RW/RWSTAUNER/File-Spec-Native-1.003.tar.gz + provides: + File::Spec::Native 1.003 + requirements: + ExtUtils::MakeMaker 6.30 + File::Find 0 + File::Spec 0 + File::Spec::Functions 0 + File::Temp 0 + Test::More 0.88 File-Sync-0.11 pathname: B/BR/BRIANSKI/File-Sync-0.11.tar.gz provides: @@ -4650,6 +4763,15 @@ DISTRIBUTIONS CPAN::Meta 2.12091 CPAN::Meta::Prereqs 2.12091 ExtUtils::MakeMaker 6.30 + Module-Extract-Namespaces-1.02 + pathname: B/BD/BDFOY/Module-Extract-Namespaces-1.02.tar.gz + provides: + Module::Extract::Namespaces 1.02 + PPI::Lexer 1.02 + requirements: + ExtUtils::MakeMaker 0 + PPI 0 + Test::More 0 Module-Faker-0.016 pathname: R/RJ/RJBS/Module-Faker-0.016.tar.gz provides: @@ -4707,6 +4829,68 @@ DISTRIBUTIONS Try::Tiny 0 strict 0 warnings 0 + Module-Install-1.15 + pathname: E/ET/ETHER/Module-Install-1.15.tar.gz + provides: + Module::AutoInstall 1.15 + Module::Install 1.15 + Module::Install::Admin 1.15 + Module::Install::Admin::Bundle 1.15 + Module::Install::Admin::Compiler 1.15 + Module::Install::Admin::Find 1.15 + Module::Install::Admin::Include 1.15 + Module::Install::Admin::Makefile 1.15 + Module::Install::Admin::Manifest 1.15 + Module::Install::Admin::Metadata 1.15 + Module::Install::Admin::ScanDeps 1.15 + Module::Install::Admin::WriteAll 1.15 + Module::Install::AutoInstall 1.15 + Module::Install::Base 1.15 + Module::Install::Base::FakeAdmin 1.15 + Module::Install::Bundle 1.15 + Module::Install::Can 1.15 + Module::Install::Compiler 1.15 + Module::Install::DSL 1.15 + Module::Install::Deprecated 1.15 + Module::Install::External 1.15 + Module::Install::Fetch 1.15 + Module::Install::Include 1.15 + Module::Install::Inline 1.15 + Module::Install::MakeMaker 1.15 + Module::Install::Makefile 1.15 + Module::Install::Metadata 1.15 + Module::Install::PAR 1.15 + Module::Install::Run 1.15 + Module::Install::Scripts 1.15 + Module::Install::Share 1.15 + Module::Install::Win32 1.15 + Module::Install::With 1.15 + Module::Install::WriteAll 1.15 + inc::Module::Install 1.15 + inc::Module::Install::DSL 1.15 + requirements: + Devel::PPPort 3.16 + ExtUtils::Install 1.52 + ExtUtils::MakeMaker 6.59 + ExtUtils::ParseXS 2.19 + File::Path 0 + File::Remove 1.42 + File::Spec 3.28 + Module::Build 0.29 + Module::CoreList 2.17 + Module::ScanDeps 1.09 + Parse::CPAN::Meta 1.4413 + Test::Harness 3.13 + Test::More 0.86 + YAML::Tiny 1.38 + perl 5.006 + Module-Install-AuthorTests-0.002 + pathname: R/RJ/RJBS/Module-Install-AuthorTests-0.002.tar.gz + provides: + Module::Install::AuthorTests 0.002 + requirements: + ExtUtils::MakeMaker 0 + Module::Install 0 Module-Metadata-1.000024 pathname: E/ET/ETHER/Module-Metadata-1.000024.tar.gz provides: @@ -4754,6 +4938,23 @@ DISTRIBUTIONS perl 5.006 strict 0 warnings 0 + Module-ScanDeps-1.18 + pathname: R/RS/RSCHUPP/Module-ScanDeps-1.18.tar.gz + provides: + Module::ScanDeps 1.18 + Module::ScanDeps::Cache undef + Module::ScanDeps::DataFeed undef + requirements: + ExtUtils::MakeMaker 6.59 + File::Spec 0 + File::Temp 0 + Getopt::Long 0 + Module::Metadata 0 + Test::More 0 + Test::Requires 0 + Text::ParseWords 0 + perl 5.008001 + version 0 Moo-2.000001 pathname: H/HA/HAARG/Moo-2.000001.tar.gz provides: @@ -7992,6 +8193,18 @@ DISTRIBUTIONS File::Spec 0 File::Temp 0 Test::More 0 + Test-LoadAllModules-0.022 + pathname: K/KI/KITANO/Test-LoadAllModules-0.022.tar.gz + provides: + Test::LoadAllModules 0.022 + requirements: + ExtUtils::MakeMaker 6.36 + File::Spec 0 + Filter::Util::Call 0 + List::MoreUtils 0 + Module::Install::AuthorTests 0 + Module::Pluggable::Object 0 + Test::More 0 Test-LongString-0.15 pathname: R/RG/RGARCIA/Test-LongString-0.15.tar.gz provides: @@ -8000,6 +8213,26 @@ DISTRIBUTIONS ExtUtils::MakeMaker 0 Test::Builder 0.12 Test::Builder::Tester 1.04 + Test-MockObject-1.20140408 + pathname: C/CH/CHROMATIC/Test-MockObject-1.20140408.tar.gz + provides: + Test::MockObject 1.20140408 + Test::MockObject::Extends 1.20140408 + requirements: + CGI 0 + Carp 0 + Devel::Peek 0 + ExtUtils::MakeMaker 6.30 + Scalar::Util 0 + Test::Builder 0 + Test::Exception 0.31 + Test::More 0.98 + Test::Warn 0.23 + UNIVERSAL::can 1.20110617 + UNIVERSAL::isa 1.20110614 + constant 0 + strict 0 + warnings 0 Test-Most-0.33 pathname: O/OV/OVID/Test-Most-0.33.tar.gz provides: @@ -8645,6 +8878,31 @@ DISTRIBUTIONS Type::Tiny 1.000000 UUID::Tiny 1.02 perl 5.008 + UNIVERSAL-can-1.20140328 + pathname: C/CH/CHROMATIC/UNIVERSAL-can-1.20140328.tar.gz + provides: + Test::SmallWarn undef + UNIVERSAL::can 1.20140328 + requirements: + ExtUtils::MakeMaker 6.30 + Scalar::Util 0 + strict 0 + vars 0 + warnings 0 + warnings::register 0 + UNIVERSAL-isa-1.20140927 + pathname: E/ET/ETHER/UNIVERSAL-isa-1.20140927.tar.gz + provides: + UNIVERSAL::isa 1.20140927 + requirements: + ExtUtils::MakeMaker 0 + Module::Build::Tiny 0.038 + Scalar::Util 0 + UNIVERSAL 0 + perl v5.6.2 + strict 0 + warnings 0 + warnings::register 0 UNIVERSAL-require-0.17 pathname: N/NE/NEILB/UNIVERSAL-require-0.17.tar.gz provides: @@ -8954,6 +9212,20 @@ DISTRIBUTIONS requirements: ExtUtils::MakeMaker 6.59 perl 5.006 + YAML-Tiny-1.66 + pathname: E/ET/ETHER/YAML-Tiny-1.66.tar.gz + provides: + YAML::Tiny 1.66 + requirements: + B 0 + Carp 0 + Exporter 0 + ExtUtils::MakeMaker 0 + Fcntl 0 + Scalar::Util 0 + perl 5.008001 + strict 0 + warnings 0 aliased-0.31 pathname: O/OV/OVID/aliased-0.31.tar.gz provides: From 5899160d323d99682f3db6fc28f1a2009b2524b4 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Sun, 19 Apr 2015 16:43:29 +0200 Subject: [PATCH 086/329] Create an on-demand DarkPAN in tests using real CPAN modules. --- t/darkpan.t | 19 +++++++ t/fakecpan.t | 23 +------- t/lib/MetaCPAN/DarkPAN.pm | 104 +++++++++++++++++++++++++++++++++++ t/lib/MetaCPAN/TestServer.pm | 42 +++++++++++++- 4 files changed, 166 insertions(+), 22 deletions(-) create mode 100644 t/darkpan.t create mode 100644 t/lib/MetaCPAN/DarkPAN.pm diff --git a/t/darkpan.t b/t/darkpan.t new file mode 100644 index 000000000..f9ffb55cf --- /dev/null +++ b/t/darkpan.t @@ -0,0 +1,19 @@ +use strict; +use warnings; + +use lib 't/lib'; + +use MetaCPAN::DarkPAN; +use MetaCPAN::TestServer; +use Test::More; +use Test::RequiresInternet ( 'cpan.metacpan.org' => 80 ); + +my $darkpan = MetaCPAN::DarkPAN->new; +my $server = MetaCPAN::TestServer->new( cpan_dir => $darkpan->base_dir ); + +# create DarkPAN +$darkpan->run; + +$server->index_releases; + +done_testing(); diff --git a/t/fakecpan.t b/t/fakecpan.t index c3358e745..22e4b68cf 100644 --- a/t/fakecpan.t +++ b/t/fakecpan.t @@ -11,22 +11,13 @@ use Test::Most; use Test::Aggregate::Nested 0.371 (); use CPAN::Faker 0.010; -use Config::General; -use DDP; use File::Copy; -use MetaCPAN::Script::Author; -use MetaCPAN::Script::Latest; -use MetaCPAN::Script::Mapping; -use MetaCPAN::Script::Release; -use MetaCPAN::Script::Runner; use MetaCPAN::Script::Tickets; use MetaCPAN::Server::Test; use MetaCPAN::TestHelpers qw( get_config ); use MetaCPAN::TestServer; use Module::Faker 0.015 (); # Generates META.json. use Path::Class qw(dir file); -use Search::Elasticsearch; -use Search::Elasticsearch::TestServer; BEGIN { $ENV{EMAIL_SENDER_TRANSPORT} = 'Test' } @@ -71,12 +62,8 @@ ok( $cpan->make_cpan, 'make fake cpan' ); require Parse::PMFile; local $Parse::PMFile::VERBOSE = $ENV{TEST_VERBOSE} ? 9 : 0; -local @ARGV = ( 'release', $config->{cpan}, '--children', 0 ); -ok( MetaCPAN::Script::Release->new_with_options($config)->run, - 'index fakecpan' ); - -local @ARGV = ('latest'); -ok( MetaCPAN::Script::Latest->new_with_options($config)->run, 'latest' ); +$server->index_releases; +$server->set_latest; my $cpan_dir = dir( 't', 'var', 'fakecpan', ); @@ -88,11 +75,7 @@ copy( $cpan_dir->file('author-1.0.json'), copy( $cpan_dir->file('bugs.tsv'), file( $config->{cpan}, 'bugs.tsv' ) ); -{ - local @ARGV = ('author'); - ok( MetaCPAN::Script::Author->new_with_options($config)->run, - 'index authors' ); -} +$server->index_authors; ok( MetaCPAN::Script::Tickets->new_with_options( diff --git a/t/lib/MetaCPAN/DarkPAN.pm b/t/lib/MetaCPAN/DarkPAN.pm new file mode 100644 index 000000000..5b44c3513 --- /dev/null +++ b/t/lib/MetaCPAN/DarkPAN.pm @@ -0,0 +1,104 @@ +package MetaCPAN::DarkPAN; + +use strict; +use warnings; + +use CPAN::Repository::Perms; +use MetaCPAN::TestHelpers qw( get_config ); +use MetaCPAN::Types qw( Dir ); +use MetaCPAN::Util qw( author_dir ); +use Moose; +use OrePAN2::Indexer; +use OrePAN2::Injector; +use Path::Class qw( dir ); +use URI::FromHash qw( uri_object ); + +has base_dir => ( + is => 'ro', + isa => Dir, + lazy => 1, + coerce => 1, + default => 't/var/darkpan', +); + +sub run { + my $self = shift; + + my $dir = dir( 't', 'var', 'darkpan' ); + $dir->mkpath; + + my $base_uri = 'http://cpan.metacpan.org'; + + my $injector = OrePAN2::Injector->new( directory => $dir ); + + my %downloads = ( + MIYAGAWA => [ + 'CPAN-Test-Dummy-Perl5-VersionBump-0.01.tar.gz', + 'CPAN-Test-Dummy-Perl5-VersionBump-0.02.tar.gz', + ], + MLEHMANN => ['AnyEvent-4.232.tar.gz'], + ); + + foreach my $pauseid (%downloads) { + + my $files = $downloads{$pauseid}; + + foreach my $archive ( @{$files} ) { + my $uri = uri_object( + host => 'cpan.metacpan.org', + path => + join( q{/}, 'authors', author_dir($pauseid), $archive ), + scheme => 'http', + ); + + $injector->inject( $uri, { author => $pauseid }, ); + } + } + + my $orepan = OrePAN2::Indexer->new( + directory => $dir, + metacpan => 1, + ); + $orepan->make_index( no_compress => 1, ); + $self->_write_06perms; +} + +sub _write_06perms { + my $self = shift; + + my $perms = CPAN::Repository::Perms->new( + { + repository_root => $self->base_dir, + written_by => 'MetaCPAN', + } + ); + + my %authors = ( + MIYAGAWA => { + 'CPAN::Test::Dummy::Perl5::VersionBump::Decrease' => 'f', + 'CPAN::Test::Dummy::Perl5::VersionBump::Stay' => 'f', + 'CPAN::Test::Dummy::Perl5::VersionBump::Undef' => 'f', + }, + MLEHMANN => {}, + ); + + foreach my $pauseid ( keys %authors ) { + my $modules = $authors{$pauseid}; + foreach my $module ( keys %{$modules} ) { + $perms->set_perms( $module, $pauseid, $modules->{$module} ); + } + } + + my $modules_dir = $self->base_dir->subdir('modules'); + $modules_dir->mkpath; + + my $content = $perms->generate_content; + + # work around bug in generate_content() + $content =~ s{,f}{,f\n}g; + + $modules_dir->file('06perms.txt')->spew($content); +} + +__PACKAGE__->meta->make_immutable; +1; diff --git a/t/lib/MetaCPAN/TestServer.pm b/t/lib/MetaCPAN/TestServer.pm index 5d05d7c2e..856768835 100644 --- a/t/lib/MetaCPAN/TestServer.pm +++ b/t/lib/MetaCPAN/TestServer.pm @@ -3,10 +3,16 @@ package MetaCPAN::TestServer; use strict; use warnings; +use CPAN::Repository::Perms; +use MetaCPAN::Script::Author; +use MetaCPAN::Script::Latest; use MetaCPAN::Script::Mapping; +use MetaCPAN::Script::Release; use MetaCPAN::TestHelpers qw( get_config ); -use MetaCPAN::Types qw( HashRef Str ); +use MetaCPAN::Types qw( Dir HashRef Str ); use Moose; +use Search::Elasticsearch; +use Search::Elasticsearch::TestServer; use Test::More; has es_client => ( @@ -37,13 +43,22 @@ has _es_home => ( builder => '_build_es_home', ); +has _cpan_dir => ( + is => 'ro', + isa => Dir, + init_arg => 'cpan_dir', + coerce => 1, + default => 't/var/tmp/fakecpan', +); + sub _build_config { my $self = shift; # don't know why get_config is not imported by this point my $config = MetaCPAN::TestHelpers::get_config(); - $config->{es} = $self->es_client; + $config->{es} = $self->es_client; + $config->{cpan} = $self->_cpan_dir; return $config; } @@ -128,5 +143,28 @@ sub put_mappings { $self->wait_for_es(); } +sub index_releases { + my $self = shift; + + local @ARGV = ( 'release', $self->_cpan_dir, '--children', 0 ); + ok( MetaCPAN::Script::Release->new_with_options( $self->_config )->run, + 'index fakecpan' ); +} + +sub set_latest { + my $self = shift; + local @ARGV = ('latest'); + ok( MetaCPAN::Script::Latest->new_with_options( $self->_config )->run, + 'latest' ); +} + +sub index_authors { + my $self = shift; + + local @ARGV = ('author'); + ok( MetaCPAN::Script::Author->new_with_options( $self->_config )->run, + 'index authors' ); +} + __PACKAGE__->meta->make_immutable(); 1; From b3b6f5f65870ec8cc5c2f5f37391d46d50c4a41b Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Sun, 19 Apr 2015 18:21:52 +0200 Subject: [PATCH 087/329] Make bulk_size settable in Release script. --- lib/MetaCPAN/Script/Release.pm | 25 ++++++++++++++++--------- t/darkpan.t | 2 +- t/lib/MetaCPAN/TestServer.pm | 8 ++++++-- 3 files changed, 23 insertions(+), 12 deletions(-) diff --git a/lib/MetaCPAN/Script/Release.pm b/lib/MetaCPAN/Script/Release.pm index 50581c29f..c340c1ecb 100644 --- a/lib/MetaCPAN/Script/Release.pm +++ b/lib/MetaCPAN/Script/Release.pm @@ -14,7 +14,7 @@ use LWP::UserAgent; use Log::Contextual qw( :log :dlog ); use MetaCPAN::Document::Author; use MetaCPAN::Model::Release; -use MetaCPAN::Types qw( Dir ); +use MetaCPAN::Types qw( Bool Dir HashRef Int Str ); use Moose; use PerlIO::gzip; use Try::Tiny; @@ -23,41 +23,41 @@ with 'MetaCPAN::Role::Script', 'MooseX::Getopt'; has latest => ( is => 'ro', - isa => 'Bool', + isa => Bool, default => 0, documentation => q{run 'latest' script after each release}, ); has age => ( is => 'ro', - isa => 'Int', + isa => Int, documentation => 'index releases no older than x hours (undef)', ); has children => ( is => 'ro', - isa => 'Int', + isa => Int, default => 2, documentation => 'number of worker processes (2)', ); has skip => ( is => 'ro', - isa => 'Bool', + isa => Bool, default => 0, documentation => 'skip already indexed modules (0)', ); has status => ( is => 'ro', - isa => 'Str', + isa => Str, default => 'cpan', documentation => 'status of the indexed releases (cpan)', ); has detect_backpan => ( is => 'ro', - isa => 'Bool', + isa => Bool, default => 0, documentation => 'enable when indexing from a backpan', ); @@ -69,11 +69,18 @@ has backpan_index => ( has perms => ( is => 'ro', - isa => 'HashRef', + isa => HashRef, lazy_build => 1, traits => ['NoGetopt'], ); +has _bulk_size => ( + is => 'ro', + isa => Int, + init_arg => 'bulk_size', + default => 10, +); + sub run { my $self = shift; my ( undef, @args ) = @{ $self->extra_argv }; @@ -178,7 +185,7 @@ sub import_archive { my $cpan = $self->index; my $d = CPAN::DistnameInfo->new($archive_path); - my $bulk = $cpan->bulk( size => 10 ); + my $bulk = $cpan->bulk( size => $self->_bulk_size ); my $model = MetaCPAN::Model::Release->new( bulk => $bulk, diff --git a/t/darkpan.t b/t/darkpan.t index f9ffb55cf..80574f18e 100644 --- a/t/darkpan.t +++ b/t/darkpan.t @@ -14,6 +14,6 @@ my $server = MetaCPAN::TestServer->new( cpan_dir => $darkpan->base_dir ); # create DarkPAN $darkpan->run; -$server->index_releases; +$server->index_releases( bulk_size => 1 ); done_testing(); diff --git a/t/lib/MetaCPAN/TestServer.pm b/t/lib/MetaCPAN/TestServer.pm index 856768835..f7d1d42dc 100644 --- a/t/lib/MetaCPAN/TestServer.pm +++ b/t/lib/MetaCPAN/TestServer.pm @@ -145,10 +145,14 @@ sub put_mappings { sub index_releases { my $self = shift; + my %args = @_; local @ARGV = ( 'release', $self->_cpan_dir, '--children', 0 ); - ok( MetaCPAN::Script::Release->new_with_options( $self->_config )->run, - 'index fakecpan' ); + ok( + MetaCPAN::Script::Release->new_with_options( %{ $self->_config }, + %args )->run, + 'index fakecpan' + ); } sub set_latest { From 9000a6272ea245a018c88ac47ca5e0525fa5e581 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Sun, 19 Apr 2015 18:26:05 +0200 Subject: [PATCH 088/329] Tidy DownloadURL search controller. --- lib/MetaCPAN/Server/Controller/Search/DownloadURL.pm | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lib/MetaCPAN/Server/Controller/Search/DownloadURL.pm b/lib/MetaCPAN/Server/Controller/Search/DownloadURL.pm index efd3b8e78..aa494e58d 100644 --- a/lib/MetaCPAN/Server/Controller/Search/DownloadURL.pm +++ b/lib/MetaCPAN/Server/Controller/Search/DownloadURL.pm @@ -16,12 +16,13 @@ sub get : Local : Path('/download_url') : Args(1) { my $args = $c->req->params; my $model = $self->model($c); - my $res = $model->find_download_url( $module, $args )->raw->all; - my $hit = $res->{hits}{hits}[0] + my $res = $model->find_download_url( $module, $args )->raw->all; + my $hit = $res->{hits}{hits}[0] or return $c->detach( '/not_found', [] ); $c->stash( - { %{ $hit->{_source} }, + { + %{ $hit->{_source} }, %{ $hit->{inner_hits}{module}{hits}{hits}[0]{_source} } } ); From bd17b5b1065aa8d0be61d43befffbc77bd82a06b Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Sun, 19 Apr 2015 18:28:44 +0200 Subject: [PATCH 089/329] Remove darkpan module which has warnings that are causing failing tests on Travis. --- t/lib/MetaCPAN/DarkPAN.pm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/t/lib/MetaCPAN/DarkPAN.pm b/t/lib/MetaCPAN/DarkPAN.pm index 5b44c3513..13d9dceab 100644 --- a/t/lib/MetaCPAN/DarkPAN.pm +++ b/t/lib/MetaCPAN/DarkPAN.pm @@ -31,12 +31,14 @@ sub run { my $injector = OrePAN2::Injector->new( directory => $dir ); + # Add this one to test handling of Meta file parse warnings + # MLEHMANN => ['AnyEvent-4.232.tar.gz'], + my %downloads = ( MIYAGAWA => [ 'CPAN-Test-Dummy-Perl5-VersionBump-0.01.tar.gz', 'CPAN-Test-Dummy-Perl5-VersionBump-0.02.tar.gz', ], - MLEHMANN => ['AnyEvent-4.232.tar.gz'], ); foreach my $pauseid (%downloads) { From 4297afed8a2d5ef4b79f9e26be7885421d5e44fa Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Mon, 20 Apr 2015 04:25:58 +0200 Subject: [PATCH 090/329] Adds Git::Helpers to cpanfile. --- cpanfile | 2 +- cpanfile.snapshot | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/cpanfile b/cpanfile index fd0e7ad7d..630dce930 100644 --- a/cpanfile +++ b/cpanfile @@ -162,7 +162,7 @@ test_requires 'Config::General'; test_requires 'CPAN::Repository'; test_requires 'ElasticSearch::TestServer'; test_requires 'File::Copy'; -test_requires 'Git::Sub'; +test_requires 'Git::Helpers'; test_requires 'HTTP::Cookies'; test_requires 'LWP::ConsoleLogger'; test_requires 'Module::Faker', '0.015'; diff --git a/cpanfile.snapshot b/cpanfile.snapshot index d4ab8c5d6..5bef16083 100644 --- a/cpanfile.snapshot +++ b/cpanfile.snapshot @@ -3631,6 +3631,21 @@ DISTRIBUTIONS IPC::Open3 0 Package::Pkg 0.0014 Test::Most 0 + Git-Helpers-0.000002 + pathname: O/OA/OALDERS/Git-Helpers-0.000002.tar.gz + provides: + Git::Helpers 0.000002 + requirements: + Carp 0 + ExtUtils::MakeMaker 0 + File::pushd 0 + Git::Sub 0 + Module::Build 0.28 + Sub::Exporter 0 + Try::Tiny 0 + perl 5.006 + strict 0 + warnings 0 Git-Sub-0.130270 pathname: D/DO/DOLMEN/Git-Sub-0.130270.tar.gz provides: From 7b3a0cd7d61e12e99e4bd70e714f8fc3bfc1f960 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Mon, 20 Apr 2015 04:28:21 +0200 Subject: [PATCH 091/329] Use Git::Helpers rather than Git::Sub directly when building test config. --- t/lib/MetaCPAN/TestHelpers.pm | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/t/lib/MetaCPAN/TestHelpers.pm b/t/lib/MetaCPAN/TestHelpers.pm index 7cefa9257..fb2aabe23 100644 --- a/t/lib/MetaCPAN/TestHelpers.pm +++ b/t/lib/MetaCPAN/TestHelpers.pm @@ -5,7 +5,7 @@ package # no_index MetaCPAN::TestHelpers; use FindBin; -use Git::Sub; +use Git::Helpers qw( checkout_root ); use JSON; use MetaCPAN::Script::Runner; use MetaCPAN::TestServer; @@ -94,10 +94,8 @@ sub test_release { sub get_config { my $config = do { - my $checkout_root = scalar git::rev_parse qw(--show-toplevel); - # build_config expects test to be t/*.t - local $FindBin::RealBin = dir( undef, $checkout_root, 't' ); + local $FindBin::RealBin = dir( undef, checkout_root(), 't' ); MetaCPAN::Script::Runner->build_config; }; return $config; From fff25d3d09b2f808e701a9d8861354e106e5275b Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Mon, 20 Apr 2015 11:45:15 +0200 Subject: [PATCH 092/329] Adds a HasApp test role. --- lib/MetaCPAN/Script/Release.pm | 5 ++++ t/lib/MetaCPAN/DarkPAN.pm | 1 + t/lib/MetaCPAN/TestApp.pm | 40 +++++++++++++++++++++++++++++ t/lib/MetaCPAN/Tests/Release.pm | 37 +++----------------------- t/lib/MetaCPAN/Tests/Role/HasApp.pm | 16 ++++++++++++ t/util.t | 36 ++++++++++++-------------- 6 files changed, 83 insertions(+), 52 deletions(-) create mode 100644 t/lib/MetaCPAN/TestApp.pm create mode 100644 t/lib/MetaCPAN/Tests/Role/HasApp.pm diff --git a/lib/MetaCPAN/Script/Release.pm b/lib/MetaCPAN/Script/Release.pm index c340c1ecb..81ef09a94 100644 --- a/lib/MetaCPAN/Script/Release.pm +++ b/lib/MetaCPAN/Script/Release.pm @@ -236,6 +236,11 @@ sub import_archive { $document->abstract( $file->abstract ); $document->put; } + use feature qw( say ); + if ( $file->can('description') ) { + say $file->path; + say length( $file->description ) if $file->description; + } } if (@provides) { $document->provides( [ sort @provides ] ); diff --git a/t/lib/MetaCPAN/DarkPAN.pm b/t/lib/MetaCPAN/DarkPAN.pm index 13d9dceab..71b814e3c 100644 --- a/t/lib/MetaCPAN/DarkPAN.pm +++ b/t/lib/MetaCPAN/DarkPAN.pm @@ -39,6 +39,7 @@ sub run { 'CPAN-Test-Dummy-Perl5-VersionBump-0.01.tar.gz', 'CPAN-Test-Dummy-Perl5-VersionBump-0.02.tar.gz', ], + TINITA => ['HTML-Template-Compiled-1.001.tar.gz'], ); foreach my $pauseid (%downloads) { diff --git a/t/lib/MetaCPAN/TestApp.pm b/t/lib/MetaCPAN/TestApp.pm new file mode 100644 index 000000000..a3370b72d --- /dev/null +++ b/t/lib/MetaCPAN/TestApp.pm @@ -0,0 +1,40 @@ +package MetaCPAN::TestApp; + +use strict; +use warnings; + +use LWP::ConsoleLogger::Easy qw( debug_ua ); +use MetaCPAN::Server::Test qw( app ); +use Moose; +use Plack::Test::Agent; + +has _test_agent => ( + is => 'ro', + isa => 'Plack::Test::Agent', + handles => ['get'], + lazy => 1, + default => sub { + my $self = shift; + return Plack::Test::Agent->new( + app => app(), + ua => $self->_user_agent, + + # server => 'HTTP::Server::Simple', + ); + }, +); + +# set a server value above if you want to see debugging info +has _user_agent => ( + is => 'ro', + isa => 'LWP::UserAgent', + lazy => 1, + default => sub { + my $ua = LWP::UserAgent->new; + debug_ua($ua); + return $ua; + }, +); + +__PACKAGE__->meta->make_immutable(); +1; diff --git a/t/lib/MetaCPAN/Tests/Release.pm b/t/lib/MetaCPAN/Tests/Release.pm index 2d064ae66..9b55470dc 100644 --- a/t/lib/MetaCPAN/Tests/Release.pm +++ b/t/lib/MetaCPAN/Tests/Release.pm @@ -6,40 +6,10 @@ use version; use HTTP::Request::Common; use List::Util (); -use LWP::ConsoleLogger::Easy qw( debug_ua ); -use MetaCPAN::Server::Test qw( app ); -use Plack::Test::Agent; +use MetaCPAN::TestApp; use Test::More; -with 'MetaCPAN::Tests::Model'; - -has _test_agent => ( - is => 'ro', - isa => 'Plack::Test::Agent', - handles => ['get'], - lazy => 1, - default => sub { - my $self = shift; - return Plack::Test::Agent->new( - app => app(), - ua => $self->_user_agent, - - # server => 'HTTP::Server::Simple', - ); - }, -); - -# set a server value above if you want to see debugging info -has _user_agent => ( - is => 'ro', - isa => 'LWP::UserAgent', - lazy => 1, - default => sub { - my $ua = LWP::UserAgent->new; - debug_ua($ua); - return $ua; - }, -); +with( 'MetaCPAN::Tests::Model', 'MetaCPAN::Tests::Role::HasApp' ); sub _build_type {'release'} @@ -105,7 +75,8 @@ sub file_content { # I couldn't get the Source model to work outside the app (I got # "No handler available for type 'application/octet-stream'", # strangely), so just do the http request. - return $self->get("/source/$self->{author}/$self->{name}/$path")->content; + return $self->app->get("/source/$self->{author}/$self->{name}/$path") + ->content; } sub file_by_path { diff --git a/t/lib/MetaCPAN/Tests/Role/HasApp.pm b/t/lib/MetaCPAN/Tests/Role/HasApp.pm new file mode 100644 index 000000000..ab0644530 --- /dev/null +++ b/t/lib/MetaCPAN/Tests/Role/HasApp.pm @@ -0,0 +1,16 @@ +package MetaCPAN::Tests::Role::HasApp; + +use strict; +use warnings; + +use MetaCPAN::TestApp; +use Moose::Role; + +has app => ( + is => 'ro', + isa => 'MetaCPAN::TestApp', + lazy => 1, + default => sub { MetaCPAN::TestApp->new }, +); + +1; diff --git a/t/util.t b/t/util.t index 2c508e5ac..5a00ff02c 100644 --- a/t/util.t +++ b/t/util.t @@ -1,32 +1,30 @@ -use Test::Most; use strict; use warnings; -use MetaCPAN::Util; + use CPAN::Meta; +use MetaCPAN::Util qw( numify_version strip_pod ); +use Test::Most; -is( MetaCPAN::Util::numify_version(1), 1.000 ); -is( MetaCPAN::Util::numify_version('010'), 10.000 ); -is( MetaCPAN::Util::numify_version('v2.1.1'), 2.001001 ); -is( MetaCPAN::Util::numify_version(undef), 0.000 ); -is( MetaCPAN::Util::numify_version('LATEST'), 0.000 ); -is( MetaCPAN::Util::numify_version('0.20_8'), 0.208 ); -is( MetaCPAN::Util::numify_version('0.20_88'), 0.2088 ); -is( MetaCPAN::Util::numify_version('0.208_8'), 0.2088 ); -is( MetaCPAN::Util::numify_version('0.20_108'), 0.20108 ); -is( MetaCPAN::Util::numify_version('v0.9_9'), 0.099 ); +is( numify_version(1), 1.000 ); +is( numify_version('010'), 10.000 ); +is( numify_version('v2.1.1'), 2.001001 ); +is( numify_version(undef), 0.000 ); +is( numify_version('LATEST'), 0.000 ); +is( numify_version('0.20_8'), 0.208 ); +is( numify_version('0.20_88'), 0.2088 ); +is( numify_version('0.208_8'), 0.2088 ); +is( numify_version('0.20_108'), 0.20108 ); +is( numify_version('v0.9_9'), 0.099 ); lives_ok { is( version('2a'), 2 ) }; lives_ok { is( version('V0.01'), 'v0.01' ) }; lives_ok { is( version('0.99_1'), '0.99_1' ) }; lives_ok { is( version('0.99.01'), 'v0.99.01' ) }; -is( MetaCPAN::Util::strip_pod('hello L foo'), - 'hello link foo' ); -is( MetaCPAN::Util::strip_pod('hello L foo'), - 'hello section in Module foo' ); -is( MetaCPAN::Util::strip_pod('for L'), 'for Dist::Zilla' ); -is( MetaCPAN::Util::strip_pod('without a leading C<$>.'), - 'without a leading $.' ); +is( strip_pod('hello L foo'), 'hello link foo' ); +is( strip_pod('hello L foo'), 'hello section in Module foo' ); +is( strip_pod('for L'), 'for Dist::Zilla' ); +is( strip_pod('without a leading C<$>.'), 'without a leading $.' ); sub version { CPAN::Meta->new( From 7418c5e4ecc747cf2ecd5dabf55d55df8e82caaa Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Mon, 20 Apr 2015 15:20:36 +0200 Subject: [PATCH 093/329] Reformat some test files. --- t/model/archive.t | 2 +- t/release/binary-data.t | 5 +---- t/release/bugs.t | 4 +--- t/release/documentation-hide.t | 4 +++- t/release/documentation-not-readme.t | 6 ++++-- t/release/file-duplicates.t | 3 +-- t/release/local-lib.t | 4 +--- t/release/meta-license.t | 4 +--- t/release/moose.t | 2 ++ t/release/oops-locallib.t | 5 ++--- t/release/packages-unclaimable.t | 9 ++++----- t/release/packages.t | 5 ++--- t/release/pm-PL.t | 2 +- t/release/pod-with-data-token.t | 4 +--- t/release/pod-with-generator.t | 4 +--- t/release/versions.t | 2 +- t/server/controller/author.t | 11 ++++++++--- t/server/controller/changes.t | 2 +- t/server/controller/diff.t | 5 +---- t/server/controller/distribution.t | 4 +--- t/server/controller/file.t | 2 +- t/server/controller/login/openid.t | 1 - t/server/controller/login/pause.t | 1 - t/server/controller/mirror.t | 3 +-- t/server/controller/module.t | 6 +++--- t/server/controller/pod.t | 5 ++++- t/server/controller/scroll.t | 1 - t/server/controller/search/autocomplete.t | 1 - t/server/controller/search/download_url.t | 6 +++--- t/server/controller/search/reverse_dependencies.t | 3 ++- t/server/controller/source.t | 4 ++-- t/server/controller/user/favorite.t | 4 ++-- t/server/controller/user/turing.t | 3 ++- t/server/not_found.t | 9 ++++----- t/server/sanitize_query.t | 2 -- t/test-vars.t | 9 +++++++++ 36 files changed, 71 insertions(+), 76 deletions(-) create mode 100644 t/test-vars.t diff --git a/t/model/archive.t b/t/model/archive.t index c7b39c422..a4f159089 100644 --- a/t/model/archive.t +++ b/t/model/archive.t @@ -94,7 +94,7 @@ subtest 'set extract dir' => sub { ok -s $dir->file('Some-1.00-TRIAL/META.json'); } - ok -e $temp, q[Path::Class doesn't cleanup directories it was handed]; + ok -e $temp, q[Path::Class doesn't clean up directories it was handed]; }; done_testing; diff --git a/t/release/binary-data.t b/t/release/binary-data.t index a03cf3dc5..7ca67f7f8 100644 --- a/t/release/binary-data.t +++ b/t/release/binary-data.t @@ -1,10 +1,9 @@ -use Test::More; use strict; use warnings; -use DDP; use lib 't/lib'; use MetaCPAN::TestHelpers; +use Test::More; test_release( { @@ -50,7 +49,6 @@ sub test_binary_data { is $file->sloc, 4, 'sloc'; is $file->slop, 0, 'slop'; - p $file->{pod_lines}; is_deeply $file->{pod_lines}, [], 'no pod_lines'; my $binary = $self->file_content($file); @@ -65,7 +63,6 @@ sub test_binary_data { is $file->sloc, 4, 'sloc'; is $file->slop, 7, 'slop'; - p $file->{pod_lines}; is_deeply $file->{pod_lines}, [ [ 5, 5 ], [ 22, 6 ], ], 'pod_lines'; my $binary = $self->file_content($file); diff --git a/t/release/bugs.t b/t/release/bugs.t index 5ddbf613e..429a9a7e2 100644 --- a/t/release/bugs.t +++ b/t/release/bugs.t @@ -2,10 +2,8 @@ use strict; use warnings; use MetaCPAN::Server::Test; -use Test::More; - -use lib 't/lib'; use MetaCPAN::TestHelpers; +use Test::More; test_distribution( 'Moose', diff --git a/t/release/documentation-hide.t b/t/release/documentation-hide.t index 6d9084981..0c544b64d 100644 --- a/t/release/documentation-hide.t +++ b/t/release/documentation-hide.t @@ -29,11 +29,13 @@ ok( $release->first, 'Release is first' ); ] } )->all; + is( @files, 1, 'includes one file with modules' ); + my $file = shift @files; is( @{ $file->module }, 1, 'file contains one module' ); - my ($indexed) = grep { $_->{indexed} } @{ $file->module }; + my ($indexed) = grep { $_->{indexed} } @{ $file->module }; is( $indexed->name, 'Documentation::Hide', 'module name ok' ); is( $file->documentation, 'Documentation::Hide', 'documentation ok' ); diff --git a/t/release/documentation-not-readme.t b/t/release/documentation-not-readme.t index 2e4878269..e943f216f 100644 --- a/t/release/documentation-not-readme.t +++ b/t/release/documentation-not-readme.t @@ -1,10 +1,9 @@ -use Test::More; use strict; use warnings; use MetaCPAN::Server::Test; -use lib 't/lib'; use MetaCPAN::TestHelpers; +use Test::More; test_release( 'RWSTAUNER/Documentation-Not-Readme-0.01', @@ -16,10 +15,13 @@ test_release( sub test_modules { my ($self) = @_; + my @files = @{ $self->module_files }; is( @files, 1, 'includes one file with modules' ); + my $file = shift @files; is( @{ $file->module }, 1, 'file contains one module' ); + my ($indexed) = grep { $_->{indexed} } @{ $file->module }; is( $indexed->name, 'Documentation::Not::Readme', 'module name' ); diff --git a/t/release/file-duplicates.t b/t/release/file-duplicates.t index e4fa4b5e8..3a13ece02 100644 --- a/t/release/file-duplicates.t +++ b/t/release/file-duplicates.t @@ -1,10 +1,9 @@ -use Test::More; use strict; use warnings; use MetaCPAN::Server::Test; -use lib 't/lib'; use MetaCPAN::TestHelpers; +use Test::More; test_release( 'BORISNAT/File-Duplicates-1.000', diff --git a/t/release/local-lib.t b/t/release/local-lib.t index d2e646843..8241839f0 100644 --- a/t/release/local-lib.t +++ b/t/release/local-lib.t @@ -1,10 +1,9 @@ -use Test::More; use strict; use warnings; -use DDP; use lib 't/lib'; use MetaCPAN::TestHelpers; +use Test::More; test_release( { @@ -38,7 +37,6 @@ test_release( is $file->sloc, 3, 'sloc'; is $file->slop, 2, 'slop'; - p $file->{pod_lines}; is_deeply $file->{pod_lines}, [ [ 4, 3 ] ], 'pod_lines'; is $file->abstract, q[Legitimate module], 'abstract'; diff --git a/t/release/meta-license.t b/t/release/meta-license.t index 0e9638dff..92b627d98 100644 --- a/t/release/meta-license.t +++ b/t/release/meta-license.t @@ -2,10 +2,8 @@ use strict; use warnings; use MetaCPAN::Server::Test; -use Test::More; - -use lib 't/lib'; use MetaCPAN::TestHelpers; +use Test::More; test_release( 'RWSTAUNER/Meta-License-Single-1.0', diff --git a/t/release/moose.t b/t/release/moose.t index 632c9f95e..213bea394 100644 --- a/t/release/moose.t +++ b/t/release/moose.t @@ -91,9 +91,11 @@ diag p $signature; my $files = $idx->type('file'); my $module = $files->history( module => 'Moose' )->raw->all; my $file = $files->history( file => 'Moose', 'lib/Moose.pm' )->raw->all; + is_deeply( $module->{hits}, $file->{hits}, 'history of Moose and lib/Moose.pm match' ); is( $module->{hits}->{total}, 2, 'two hits' ); + my $pod = $files->history( documentation => 'Moose::FAQ' )->raw->all; is( $pod->{hits}->{total}, 1, 'one hit' ); } diff --git a/t/release/oops-locallib.t b/t/release/oops-locallib.t index b6f98d6e3..597919a64 100644 --- a/t/release/oops-locallib.t +++ b/t/release/oops-locallib.t @@ -1,10 +1,9 @@ -use Test::More; use strict; use warnings; -use DDP; use lib 't/lib'; use MetaCPAN::TestHelpers; +use Test::More; test_release( { @@ -48,7 +47,7 @@ test_release( is $file->sloc, 2, 'sloc'; is $file->slop, 2, 'slop'; - p $file->{pod_lines} is_deeply $file->{pod_lines}, + is_deeply $file->{pod_lines}, [ [ 4, 3 ] ], 'pod_lines'; is $file->abstract, q[should not have been included], diff --git a/t/release/packages-unclaimable.t b/t/release/packages-unclaimable.t index ddc37fd41..ce8d4ec87 100644 --- a/t/release/packages-unclaimable.t +++ b/t/release/packages-unclaimable.t @@ -1,14 +1,12 @@ use strict; use warnings; -use MetaCPAN::Server::Test; -use Test::More; use IO::String; -use Module::Metadata; use List::MoreUtils qw(uniq); - -use lib 't/lib'; +use MetaCPAN::Server::Test; use MetaCPAN::TestHelpers; +use Module::Metadata; +use Test::More; test_release( { @@ -46,6 +44,7 @@ test_release( = Module::Metadata->new_from_handle( IO::String->new($content), 'lib/Packages/Unclaimable.pm' ); + is_deeply [ uniq sort $mm->packages_inside ], [ sort qw(Packages::Unclaimable main DB) ], 'Module::Metadata finds the packages we ignore'; diff --git a/t/release/packages.t b/t/release/packages.t index e3839860e..c98a05035 100644 --- a/t/release/packages.t +++ b/t/release/packages.t @@ -2,10 +2,8 @@ use strict; use warnings; use MetaCPAN::Server::Test; -use Test::More; - -use lib 't/lib'; use MetaCPAN::TestHelpers; +use Test::More; test_release( { @@ -45,6 +43,7 @@ test_release( my $self = shift; my $path = 'lib/Packages/BOM.pm'; my $content = $self->file_content($path); + like $content, qr/\A\xef\xbb\xbfpackage Packages::BOM;\n/, 'Packages::BOM module starts with UTF-8 BOM'; diff --git a/t/release/pm-PL.t b/t/release/pm-PL.t index 3b77313dd..9f38500db 100644 --- a/t/release/pm-PL.t +++ b/t/release/pm-PL.t @@ -1,8 +1,8 @@ use strict; use warnings; -use Test::More; use MetaCPAN::Server::Test; +use Test::More; my $model = model(); my $idx = $model->index('cpan'); diff --git a/t/release/pod-with-data-token.t b/t/release/pod-with-data-token.t index 90786c3fe..92a5de914 100644 --- a/t/release/pod-with-data-token.t +++ b/t/release/pod-with-data-token.t @@ -1,10 +1,9 @@ -use Test::More; use strict; use warnings; -use DDP; use lib 't/lib'; use MetaCPAN::TestHelpers; +use Test::More; test_release( { @@ -38,7 +37,6 @@ sub test_content { is $mod->sloc, 5, 'sloc'; is $mod->slop, 17, 'slop'; - p $mod->{pod_lines}; is_deeply $mod->{pod_lines}, #<<< [ diff --git a/t/release/pod-with-generator.t b/t/release/pod-with-generator.t index 3b8a64e47..d1c70636b 100644 --- a/t/release/pod-with-generator.t +++ b/t/release/pod-with-generator.t @@ -1,10 +1,9 @@ -use Test::More; use strict; use warnings; -use DDP; use lib 't/lib'; use MetaCPAN::TestHelpers; +use Test::More; test_release( { @@ -38,7 +37,6 @@ sub test_assoc_pod { is $mod->sloc, 3, 'sloc'; is $mod->slop, 5, 'slop'; - p $mod->{pod_lines}; is_deeply $mod->{pod_lines}, [ [ 5, 9 ], ], 'pod lines determined correctly'; diff --git a/t/release/versions.t b/t/release/versions.t index 9c691e535..ace4f2ce7 100644 --- a/t/release/versions.t +++ b/t/release/versions.t @@ -8,10 +8,10 @@ my $model = model(); my $idx = $model->index('cpan'); my %modules = ( - 'Versions::PkgVar' => '1.23', 'Versions::Our' => '1.45', 'Versions::PkgNameVersion' => '1.67', 'Versions::PkgNameVersionBlock' => '1.89', + 'Versions::PkgVar' => '1.23', ); while ( my ( $module, $version ) = each %modules ) { diff --git a/t/server/controller/author.t b/t/server/controller/author.t index f99d5f0c0..3fa24a7e5 100644 --- a/t/server/controller/author.t +++ b/t/server/controller/author.t @@ -1,15 +1,14 @@ use strict; use warnings; -use lib 't/lib'; use MetaCPAN::Server::Test; use MetaCPAN::TestHelpers; use Test::More; my %tests = ( '/author' => 200, - '/author/MO' => 200, '/author/DOESNEXIST' => 404, + '/author/MO' => 200, '/author/_mapping' => 200, ); @@ -23,6 +22,7 @@ test_psgi app, sub { 'application/json; charset=utf-8', 'Content-type' ); + my $json = decode_json_ok($res); ok( $json->{pauseid} eq 'MO', 'pauseid is MO' ) if ( $k eq '/author/MO' ); @@ -48,11 +48,13 @@ test_psgi app, sub { ), 'POST _search' ); + my $json = decode_json_ok($res); is( @{ $json->{hits}->{hits} }, 0, '0 results' ); ok( $res = $cb->( GET '/author/DOY?join=release' ), 'GET /author/DOY?join=release' ); + $json = decode_json_ok($res); is( @{ $json->{release}->{hits}->{hits} }, 2, 'joined 2 releases' ); @@ -70,11 +72,11 @@ test_psgi app, sub { ), 'POST /author/DOY?join=release with query body', ); + $json = decode_json_ok($res); is( @{ $json->{release}->{hits}->{hits} }, 1, 'joined 1 release' ); is( $json->{release}->{hits}->{hits}->[0]->{_source}->{status}, 'latest', '1 release has status latest' ); - my $doy = $json; ok( $res = $cb->( @@ -105,7 +107,10 @@ test_psgi app, sub { ), 'POST /author/_search?join=release with query body' ); + + my $doy = $json; $json = decode_json_ok($res); + is( @{ $json->{hits}->{hits} }, 1, '1 hit' ); is_deeply( $json->{hits}->{hits}->[0]->{_source}, $doy, 'same result as direct get' ); diff --git a/t/server/controller/changes.t b/t/server/controller/changes.t index 423982c88..f409e851c 100644 --- a/t/server/controller/changes.t +++ b/t/server/controller/changes.t @@ -1,7 +1,6 @@ use strict; use warnings; -use lib 't/lib'; use MetaCPAN::Server::Test; use MetaCPAN::TestHelpers; use Test::More; @@ -85,6 +84,7 @@ done_testing; sub get_ok { my ( $cb, $path, $code ) = @_; + ok( my $res = $cb->( GET $path), "GET $path" ); is( $res->code, $code, "code $code" ); is( diff --git a/t/server/controller/diff.t b/t/server/controller/diff.t index 62d5dd6d9..78ae1dc19 100644 --- a/t/server/controller/diff.t +++ b/t/server/controller/diff.t @@ -3,11 +3,8 @@ use warnings; use Encode; use MetaCPAN::Server::Test; -use Test::More; - -use lib 't/lib'; - use MetaCPAN::TestHelpers; +use Test::More; { no warnings 'redefine'; diff --git a/t/server/controller/distribution.t b/t/server/controller/distribution.t index 066fbe9ea..c1b14d3b1 100644 --- a/t/server/controller/distribution.t +++ b/t/server/controller/distribution.t @@ -1,16 +1,14 @@ use strict; use warnings; -use lib 't/lib'; - use MetaCPAN::Server::Test; use MetaCPAN::TestHelpers; use Test::More; my @tests = ( [ '/distribution' => 200 ], - [ '/distribution/Moose' => 200 ], [ '/distribution/DOESNEXIST' => 404 ], + [ '/distribution/Moose' => 200 ], ); test_psgi app, sub { diff --git a/t/server/controller/file.t b/t/server/controller/file.t index 9539775d6..8acd16b6a 100644 --- a/t/server/controller/file.t +++ b/t/server/controller/file.t @@ -1,7 +1,6 @@ use strict; use warnings; -use lib 't/lib'; use MetaCPAN::Server::Test; use MetaCPAN::TestHelpers; use Test::More; @@ -24,6 +23,7 @@ test_psgi app, sub { 'application/json; charset=utf-8', 'Content-type' ); + my $json = decode_json_ok($res); if ( $k eq '/file' ) { ok( $json->{hits}->{total}, 'got total count' ); diff --git a/t/server/controller/login/openid.t b/t/server/controller/login/openid.t index 700d37359..8712c5f6e 100644 --- a/t/server/controller/login/openid.t +++ b/t/server/controller/login/openid.t @@ -1,7 +1,6 @@ use strict; use warnings; use utf8; -use lib 't/lib'; package # Test::Routine's run_me (in main) doesn't mix well with Test::Aggregate. t::server::controller::login::openid; diff --git a/t/server/controller/login/pause.t b/t/server/controller/login/pause.t index 252e6acca..e8eaa7fca 100644 --- a/t/server/controller/login/pause.t +++ b/t/server/controller/login/pause.t @@ -2,7 +2,6 @@ use strict; use warnings; use utf8; -use lib 't/lib'; use Encode qw( encode is_utf8 FB_CROAK LEAVE_SRC ); use MetaCPAN::Server::Test; use MetaCPAN::TestHelpers; diff --git a/t/server/controller/mirror.t b/t/server/controller/mirror.t index 6bb9ad4b0..61368c84b 100644 --- a/t/server/controller/mirror.t +++ b/t/server/controller/mirror.t @@ -1,7 +1,6 @@ use strict; use warnings; -use lib 't/lib'; use MetaCPAN::Server::Test; use MetaCPAN::TestHelpers; use Test::More; @@ -22,7 +21,7 @@ test_psgi app, sub { 'application/json; charset=utf-8', 'Content-type' ); - my $json = decode_json_ok($res); + decode_json_ok($res); } }; diff --git a/t/server/controller/module.t b/t/server/controller/module.t index d6053fffc..10f18d199 100644 --- a/t/server/controller/module.t +++ b/t/server/controller/module.t @@ -1,18 +1,17 @@ use strict; use warnings; -use lib 't/lib'; use MetaCPAN::Server::Test; use MetaCPAN::TestHelpers; use Test::More; my %tests = ( '/module' => 200, - '/module/Moose' => 200, - '/module/Moose?fields=documentation,name' => 200, '/module/DOESNEXIST' => 404, '/module/DOES/Not/Exist.pm' => 404, '/module/DOY/Moose-0.01/lib/Moose.pm' => 200, + '/module/Moose' => 200, + '/module/Moose?fields=documentation,name' => 200, ); test_psgi app, sub { @@ -25,6 +24,7 @@ test_psgi app, sub { 'application/json; charset=utf-8', 'Content-type' ); + my $json = decode_json_ok($res); if ( $k eq '/module' ) { ok( $json->{hits}->{total}, 'got total count' ); diff --git a/t/server/controller/pod.t b/t/server/controller/pod.t index 20f2cfdc6..b1277ebaf 100644 --- a/t/server/controller/pod.t +++ b/t/server/controller/pod.t @@ -15,9 +15,9 @@ my %tests = ( # TODO #'/pod' => 404, '/pod/DOESNEXIST' => 404, - '/pod/Moose' => 200, '/pod/DOY/Moose-0.01/lib/Moose.pm' => 200, '/pod/DOY/Moose-0.02/binary.bin' => 400, + '/pod/Moose' => 200, '/pod/Pod::Pm' => 200, ); @@ -33,6 +33,7 @@ test_psgi app, sub { : 'application/json; charset=utf-8', 'Content-type' ); + if ( $k eq '/pod/Pod::Pm' ) { like( $res->content, qr/Pod::Pm - abstract/, 'NAME section' ); } @@ -59,10 +60,12 @@ test_psgi app, sub { 'text/javascript; charset=UTF-8', 'Content-type' ); + ok( my ($function_args) = $res->content =~ /^\/\*\*\/foo\((.*)\)/s, 'callback included' ); ok( my $jsdata = JSON->new->allow_nonref->decode($function_args), 'decode json' ); + if ( $v eq 200 ) { if ($ct) { diff --git a/t/server/controller/scroll.t b/t/server/controller/scroll.t index 020b7304c..22ec04d11 100644 --- a/t/server/controller/scroll.t +++ b/t/server/controller/scroll.t @@ -1,7 +1,6 @@ use strict; use warnings; -use lib 't/lib'; use MetaCPAN::Server::Test; use MetaCPAN::TestHelpers; use Test::More; diff --git a/t/server/controller/search/autocomplete.t b/t/server/controller/search/autocomplete.t index cceedded4..ee80ea886 100644 --- a/t/server/controller/search/autocomplete.t +++ b/t/server/controller/search/autocomplete.t @@ -1,7 +1,6 @@ use strict; use warnings; -use lib 't/lib'; use MetaCPAN::Server::Test; use MetaCPAN::TestHelpers; use Test::More; diff --git a/t/server/controller/search/download_url.t b/t/server/controller/search/download_url.t index d9d42e61b..aad59a4cc 100644 --- a/t/server/controller/search/download_url.t +++ b/t/server/controller/search/download_url.t @@ -1,18 +1,18 @@ use strict; use warnings; -use lib 't/lib'; use MetaCPAN::Server::Test; use MetaCPAN::TestHelpers; use Test::More skip_all => - "Need to add CPAN::Test::Dummy::Perl5::VersionBump to CPAN::Faker and write tests"; + 'Need to add CPAN::Test::Dummy::Perl5::VersionBump to CPAN::Faker and write tests'; test_psgi app, sub { my $cb = shift; # test ES script using doc['blah'] value { - ok( my $res = $cb->( + ok( + my $res = $cb->( GET '/download_url/CPAN::Test::Dummy::Perl5::VersionBump::Decrease' ), diff --git a/t/server/controller/search/reverse_dependencies.t b/t/server/controller/search/reverse_dependencies.t index 243af0627..e23e0569e 100644 --- a/t/server/controller/search/reverse_dependencies.t +++ b/t/server/controller/search/reverse_dependencies.t @@ -1,7 +1,6 @@ use strict; use warnings; -use lib 't/lib'; use MetaCPAN::Server::Test; use MetaCPAN::TestHelpers; use Test::More; @@ -44,6 +43,7 @@ sub check_search_results { ); is( $res->code, $code, "code $code" ) or return; + my $json = decode_json_ok($res); return unless $code == 200; @@ -123,6 +123,7 @@ test_psgi app, sub { ), 'POST' ); + my $json = decode_json_ok($res); is( $json->{hits}->{total}, 1, 'total is 1' ); is( $json->{hits}->{hits}->[0]->{fields}->{distribution}->[0], diff --git a/t/server/controller/source.t b/t/server/controller/source.t index 02bbaceba..a22f43c87 100644 --- a/t/server/controller/source.t +++ b/t/server/controller/source.t @@ -7,10 +7,10 @@ use Test::More; my %tests = ( '/source/DOESNEXIST' => 404, '/source/DOY/Moose-0.01/' => 200, - '/source/DOY/Moose-0.01/MANIFEST' => 200, - '/source/DOY/Moose-0.01/MANIFEST?callback=foo' => 200, '/source/DOY/Moose-0.01/Changes' => 200, '/source/DOY/Moose-0.01/Changes?callback=foo' => 200, + '/source/DOY/Moose-0.01/MANIFEST' => 200, + '/source/DOY/Moose-0.01/MANIFEST?callback=foo' => 200, '/source/Moose' => 200, ); diff --git a/t/server/controller/user/favorite.t b/t/server/controller/user/favorite.t index 5c8226ae5..8575ca4fa 100644 --- a/t/server/controller/user/favorite.t +++ b/t/server/controller/user/favorite.t @@ -1,7 +1,6 @@ use strict; use warnings; -use lib 't/lib'; use MetaCPAN::Server::Test; use MetaCPAN::TestHelpers; use Test::More; @@ -30,6 +29,7 @@ test_psgi app, sub { ok( my $location = $res->header('location'), 'location header set' ); ok( $res = $cb->( GET $location ), "GET $location" ); is( $res->code, 200, 'found' ); + my $json = decode_json_ok($res); is( $json->{user}, $user->{id}, 'user is ' . $user->{id} ); ok( $res = $cb->( DELETE '/user/favorite/Moose?access_token=testing' ), @@ -41,6 +41,7 @@ test_psgi app, sub { ok( $user = $cb->( GET '/user?access_token=bot' ), 'get bot' ); is( $user->code, 200, 'code 200' ); + $user = decode_json_ok($user); ok( !$user->{looks_human}, 'user looks like a bot' ); ok( @@ -58,7 +59,6 @@ test_psgi app, sub { ); decode_json_ok($res); is( $res->code, 403, 'forbidden' ); - }; done_testing; diff --git a/t/server/controller/user/turing.t b/t/server/controller/user/turing.t index c74821ab4..94c447e24 100644 --- a/t/server/controller/user/turing.t +++ b/t/server/controller/user/turing.t @@ -17,7 +17,6 @@ package main; use strict; use warnings; -use lib 't/lib'; use MetaCPAN::Server::Test; use MetaCPAN::TestHelpers; use Test::More; @@ -50,7 +49,9 @@ test_psgi app, sub { ), 'post challenge' ); + is( $res->code, 200, 'successful request' ); + my $user = decode_json_ok($res); ok( $user->{looks_human}, 'looks human' ); ok( $user->{passed_captcha}, 'passed captcha' ); diff --git a/t/server/not_found.t b/t/server/not_found.t index 7eebb1c58..6384d60c9 100644 --- a/t/server/not_found.t +++ b/t/server/not_found.t @@ -1,20 +1,19 @@ use strict; use warnings; -use lib 't/lib'; use MetaCPAN::Server::Test; use MetaCPAN::TestHelpers; use Test::More; my @tests = ( - [ '/release/File-Changes' => 200 ], - [ '/release/No-Dist-Here' => 404 ], - [ '/changes/LOCAL/File-Changes-2.0' => 200 ], [ '/changes/LOCAL/File-Changes-2' => 404 ], + [ '/changes/LOCAL/File-Changes-2.0' => 200 ], + [ '/fakedoctype/andaction' => 404 ], [ '/file/LOCAL/File-Changes-2.0/Changes' => 200 ], [ '/file/LOCAL/File-Changes-2.0/NoChanges' => 404 ], + [ '/release/File-Changes' => 200 ], + [ '/release/No-Dist-Here' => 404 ], [ '/root.file' => 404 ], - [ '/fakedoctype/andaction' => 404 ], ); test_psgi app, sub { diff --git a/t/server/sanitize_query.t b/t/server/sanitize_query.t index f30612e65..4386199f0 100644 --- a/t/server/sanitize_query.t +++ b/t/server/sanitize_query.t @@ -1,8 +1,6 @@ use strict; use warnings; -use lib 't/lib'; - use MetaCPAN::Server::Test; use MetaCPAN::TestHelpers; use Test::More skip_all => 'Scripting is disabled'; diff --git a/t/test-vars.t b/t/test-vars.t new file mode 100644 index 000000000..6fc22fad9 --- /dev/null +++ b/t/test-vars.t @@ -0,0 +1,9 @@ +use strict; +use warnings; + +use Test::More; +use Test::Vars; + +vars_ok('MetaCPAN::Server'); + +done_testing(); From 2c11800f648dabe5b7cde5bd04479b2ef4198412 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Mon, 20 Apr 2015 15:22:28 +0200 Subject: [PATCH 094/329] gitignore t/var/darkpan. --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 638852b21..f7bc970db 100644 --- a/.gitignore +++ b/.gitignore @@ -8,7 +8,7 @@ *.sqlite* /var /t/var/tmp/ -/t/var/cpan/ +/t/var/darkpan/ /etc/metacpan_local.pl metacpan_server_local.conf From 99f92b3c21de12a0d139aff73c099e012eb651ad Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Mon, 20 Apr 2015 15:22:54 +0200 Subject: [PATCH 095/329] Create a doc directory for, you know, docs. --- doc/testing.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 doc/testing.md diff --git a/doc/testing.md b/doc/testing.md new file mode 100644 index 000000000..8cebbb40e --- /dev/null +++ b/doc/testing.md @@ -0,0 +1,14 @@ +# Testing + +## Releases + +When debugging the release indexing, try setting the bulk_size param to a low number, in order to make debugging easier. + + my $server = MetaCPAN::TestServer->new( ... ); + $server->index_releases( bulk_size => 1 ); + +You can enable Elasticsearch tracing when running tests at the command line: + + ES_TRACE=1 ES=localhost:9200 ./bin/prove t/darkpan.t + +You'll then find extensive logging information in `es.log`, at the top level of your Git checkout. From 7af5e9ee1db77e394a8dd2bae1a3203c7f9a5ea6 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Mon, 20 Apr 2015 16:02:26 +0200 Subject: [PATCH 096/329] Move file from doc to docs folder. --- {doc => docs}/testing.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {doc => docs}/testing.md (100%) diff --git a/doc/testing.md b/docs/testing.md similarity index 100% rename from doc/testing.md rename to docs/testing.md From 7da6224545c2b555243670e08efaaf08534455c9 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Mon, 20 Apr 2015 16:27:16 +0200 Subject: [PATCH 097/329] Replace quotes in find_download_url() --- lib/MetaCPAN/Document/File.pm | 12 ++++++------ .../MetaCPAN/Tests/Controller/Search/DownloadURL.pm} | 0 2 files changed, 6 insertions(+), 6 deletions(-) rename t/{server/controller/search/download_url.t => lib/MetaCPAN/Tests/Controller/Search/DownloadURL.pm} (100%) diff --git a/lib/MetaCPAN/Document/File.pm b/lib/MetaCPAN/Document/File.pm index cddcd1187..1f40e1431 100644 --- a/lib/MetaCPAN/Document/File.pm +++ b/lib/MetaCPAN/Document/File.pm @@ -974,13 +974,13 @@ sub find_download_url { my $module_f = { nested => { path => 'module', - inner_hits => { _source => "version" }, + inner_hits => { _source => 'version' }, filter => { bool => { must => [ - { term => { "module.authorized" => \1 } }, - { term => { "module.indexed" => \1 } }, - { term => { "module.name" => $module } }, + { term => { 'module.authorized' => \1 } }, + { term => { 'module.indexed' => \1 } }, + { term => { 'module.name' => $module } }, $self->_version_filters($version) ] } @@ -995,9 +995,9 @@ sub find_download_url { # sort by score, then version desc, then date desc my @sort = ( - "_score", + '_score', { - "module.version_numified" => { + 'module.version_numified' => { mode => 'max', order => 'desc', nested_filter => $module_f->{nested}{filter} diff --git a/t/server/controller/search/download_url.t b/t/lib/MetaCPAN/Tests/Controller/Search/DownloadURL.pm similarity index 100% rename from t/server/controller/search/download_url.t rename to t/lib/MetaCPAN/Tests/Controller/Search/DownloadURL.pm From 3adf84fc050d90aa81bf7e20b591912ffe1b0fe2 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Mon, 20 Apr 2015 16:28:58 +0200 Subject: [PATCH 098/329] Partially fix download_url tests. --- .../Tests/Controller/Search/DownloadURL.pm | 34 +++++++++---------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/t/lib/MetaCPAN/Tests/Controller/Search/DownloadURL.pm b/t/lib/MetaCPAN/Tests/Controller/Search/DownloadURL.pm index aad59a4cc..910bda70b 100644 --- a/t/lib/MetaCPAN/Tests/Controller/Search/DownloadURL.pm +++ b/t/lib/MetaCPAN/Tests/Controller/Search/DownloadURL.pm @@ -1,23 +1,22 @@ +package MetaCPAN::Tests::Controller::Search::DownloadURL; + use strict; use warnings; use MetaCPAN::Server::Test; use MetaCPAN::TestHelpers; -use Test::More skip_all => - 'Need to add CPAN::Test::Dummy::Perl5::VersionBump to CPAN::Faker and write tests'; - -test_psgi app, sub { - my $cb = shift; - - # test ES script using doc['blah'] value - { - ok( - my $res = $cb->( - GET - '/download_url/CPAN::Test::Dummy::Perl5::VersionBump::Decrease' - ), - 'GET' - ); +use Moose; +use Test::More; + +sub run_tests { + test_psgi app, sub { + my $cb = shift; + + my $module = 'CPAN::Test::Dummy::Perl5::VersionBump::Decrease'; + + # test ES script using doc['blah'] value + ok( my $res = $cb->( GET '/download_url/' . $module ), + "GET $module" ); my $json = decode_json_ok($res); use Data::Dump qw(pp); @@ -42,6 +41,7 @@ test_psgi app, sub { # or diag( Test::More::explain($got) ); # } }; -}; +} -done_testing; +__PACKAGE__->meta->make_immutable; +1; From 34f5bfbbbf07dc12886920765999c5bfe58da124 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Mon, 20 Apr 2015 16:30:24 +0200 Subject: [PATCH 099/329] Run download tests as part of fakepan tests. --- t/darkpan.t | 4 ++++ t/lib/MetaCPAN/TestServer.pm | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/t/darkpan.t b/t/darkpan.t index 80574f18e..442df14a3 100644 --- a/t/darkpan.t +++ b/t/darkpan.t @@ -5,6 +5,7 @@ use lib 't/lib'; use MetaCPAN::DarkPAN; use MetaCPAN::TestServer; +use MetaCPAN::Tests::Controller::Search::DownloadURL; use Test::More; use Test::RequiresInternet ( 'cpan.metacpan.org' => 80 ); @@ -16,4 +17,7 @@ $darkpan->run; $server->index_releases( bulk_size => 1 ); +my $download_url = MetaCPAN::Tests::Controller::Search::DownloadURL->new; +$download_url->run_tests; + done_testing(); diff --git a/t/lib/MetaCPAN/TestServer.pm b/t/lib/MetaCPAN/TestServer.pm index f7d1d42dc..c4a35230b 100644 --- a/t/lib/MetaCPAN/TestServer.pm +++ b/t/lib/MetaCPAN/TestServer.pm @@ -151,7 +151,7 @@ sub index_releases { ok( MetaCPAN::Script::Release->new_with_options( %{ $self->_config }, %args )->run, - 'index fakecpan' + 'index releases' ); } From 1f88770ce96a38450cd650870342f9adb941282c Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Mon, 20 Apr 2015 17:28:16 +0200 Subject: [PATCH 100/329] SKIP download tests for now. --- t/darkpan.t | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/t/darkpan.t b/t/darkpan.t index 442df14a3..4e92fc612 100644 --- a/t/darkpan.t +++ b/t/darkpan.t @@ -17,7 +17,11 @@ $darkpan->run; $server->index_releases( bulk_size => 1 ); -my $download_url = MetaCPAN::Tests::Controller::Search::DownloadURL->new; -$download_url->run_tests; +SKIP: { + # XXX "path does not support inner_hits" + skip( 'Download URL not yet fully implemented', 1 ); + my $url_tests = MetaCPAN::Tests::Controller::Search::DownloadURL->new; + $url_tests->run_tests; +} done_testing(); From fa2d4962b89d36a76916fc21b67a7d8cebe4f17c Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Fri, 24 Apr 2015 22:01:01 -0400 Subject: [PATCH 101/329] Bumps ElasticSearchX::Model to 0.2.1 --- cpanfile | 2 +- cpanfile.snapshot | 52 +++++++++++++++++++++++------------------------ 2 files changed, 27 insertions(+), 27 deletions(-) diff --git a/cpanfile b/cpanfile index 630dce930..cba09c022 100644 --- a/cpanfile +++ b/cpanfile @@ -43,7 +43,7 @@ requires 'Devel::Confess'; requires 'Digest::MD5'; requires 'Digest::SHA1'; requires 'EV'; -requires 'ElasticSearchX::Model', '0.2.0'; +requires 'ElasticSearchX::Model', '0.2.1'; requires 'Email::Address'; requires 'Email::Sender::Simple'; requires 'Email::Simple'; diff --git a/cpanfile.snapshot b/cpanfile.snapshot index 5bef16083..d93a1a09d 100644 --- a/cpanfile.snapshot +++ b/cpanfile.snapshot @@ -2973,32 +2973,32 @@ DISTRIBUTIONS Test::More 0.96 strict 0 warnings 0 - ElasticSearchX-Model-0.2.0 - pathname: O/OA/OALDERS/ElasticSearchX-Model-0.2.0.tar.gz - provides: - ElasticSearchX::Model 0.002000 - ElasticSearchX::Model::Bulk 0.002000 - ElasticSearchX::Model::Document 0.002000 - ElasticSearchX::Model::Document::EmbeddedRole 0.002000 - ElasticSearchX::Model::Document::Mapping 0.002000 - ElasticSearchX::Model::Document::Role 0.002000 - ElasticSearchX::Model::Document::Set 0.002000 - ElasticSearchX::Model::Document::Trait::Attribute 0.002000 - ElasticSearchX::Model::Document::Trait::Class 0.002000 - ElasticSearchX::Model::Document::Trait::Class::ID 0.002000 - ElasticSearchX::Model::Document::Trait::Class::Timestamp 0.002000 - ElasticSearchX::Model::Document::Trait::Class::Version 0.002000 - ElasticSearchX::Model::Document::Trait::Field::ID 0.002000 - ElasticSearchX::Model::Document::Trait::Field::TTL 0.002000 - ElasticSearchX::Model::Document::Trait::Field::Timestamp 0.002000 - ElasticSearchX::Model::Document::Trait::Field::Version 0.002000 - ElasticSearchX::Model::Document::Types 0.002000 - ElasticSearchX::Model::Index 0.002000 - ElasticSearchX::Model::Role 0.002000 - ElasticSearchX::Model::Scroll 0.002000 - ElasticSearchX::Model::Trait::Class 0.002000 - ElasticSearchX::Model::Tutorial 0.002000 - ElasticSearchX::Model::Util 0.002000 + ElasticSearchX-Model-0.2.1 + pathname: O/OA/OALDERS/ElasticSearchX-Model-0.2.1.tar.gz + provides: + ElasticSearchX::Model 0.002001 + ElasticSearchX::Model::Bulk 0.002001 + ElasticSearchX::Model::Document 0.002001 + ElasticSearchX::Model::Document::EmbeddedRole 0.002001 + ElasticSearchX::Model::Document::Mapping 0.002001 + ElasticSearchX::Model::Document::Role 0.002001 + ElasticSearchX::Model::Document::Set 0.002001 + ElasticSearchX::Model::Document::Trait::Attribute 0.002001 + ElasticSearchX::Model::Document::Trait::Class 0.002001 + ElasticSearchX::Model::Document::Trait::Class::ID 0.002001 + ElasticSearchX::Model::Document::Trait::Class::Timestamp 0.002001 + ElasticSearchX::Model::Document::Trait::Class::Version 0.002001 + ElasticSearchX::Model::Document::Trait::Field::ID 0.002001 + ElasticSearchX::Model::Document::Trait::Field::TTL 0.002001 + ElasticSearchX::Model::Document::Trait::Field::Timestamp 0.002001 + ElasticSearchX::Model::Document::Trait::Field::Version 0.002001 + ElasticSearchX::Model::Document::Types 0.002001 + ElasticSearchX::Model::Index 0.002001 + ElasticSearchX::Model::Role 0.002001 + ElasticSearchX::Model::Scroll 0.002001 + ElasticSearchX::Model::Trait::Class 0.002001 + ElasticSearchX::Model::Tutorial 0.002001 + ElasticSearchX::Model::Util 0.002001 requirements: Carp 0 Class::Load 0 From b15e2c6fb2cdc54057cae6ce3fd14f8841e6f7ea Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Fri, 24 Apr 2015 22:05:58 -0400 Subject: [PATCH 102/329] Don't clobber the imported run_tests() function. --- t/darkpan.t | 2 +- t/lib/MetaCPAN/Tests/Controller/Search/DownloadURL.pm | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/t/darkpan.t b/t/darkpan.t index 4e92fc612..f55dd9318 100644 --- a/t/darkpan.t +++ b/t/darkpan.t @@ -21,7 +21,7 @@ SKIP: { # XXX "path does not support inner_hits" skip( 'Download URL not yet fully implemented', 1 ); my $url_tests = MetaCPAN::Tests::Controller::Search::DownloadURL->new; - $url_tests->run_tests; + $url_tests->run; } done_testing(); diff --git a/t/lib/MetaCPAN/Tests/Controller/Search/DownloadURL.pm b/t/lib/MetaCPAN/Tests/Controller/Search/DownloadURL.pm index 910bda70b..1fc6353ac 100644 --- a/t/lib/MetaCPAN/Tests/Controller/Search/DownloadURL.pm +++ b/t/lib/MetaCPAN/Tests/Controller/Search/DownloadURL.pm @@ -8,7 +8,7 @@ use MetaCPAN::TestHelpers; use Moose; use Test::More; -sub run_tests { +sub run { test_psgi app, sub { my $cb = shift; From f914128e5c42b568678aa5eb8778274a4daefbb0 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Fri, 24 Apr 2015 22:11:54 -0400 Subject: [PATCH 103/329] Remove accidentally committed debugging info. --- lib/MetaCPAN/Script/Release.pm | 5 ----- 1 file changed, 5 deletions(-) diff --git a/lib/MetaCPAN/Script/Release.pm b/lib/MetaCPAN/Script/Release.pm index 81ef09a94..c340c1ecb 100644 --- a/lib/MetaCPAN/Script/Release.pm +++ b/lib/MetaCPAN/Script/Release.pm @@ -236,11 +236,6 @@ sub import_archive { $document->abstract( $file->abstract ); $document->put; } - use feature qw( say ); - if ( $file->can('description') ) { - say $file->path; - say length( $file->description ) if $file->description; - } } if (@provides) { $document->provides( [ sort @provides ] ); From 80269c1e033c8a64aa4a4c2323a0bc04096d1501 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Fri, 24 Apr 2015 22:12:27 -0400 Subject: [PATCH 104/329] Use Devel::Confess to try to troubleshoot Travis errors. --- t/darkpan.t | 1 + 1 file changed, 1 insertion(+) diff --git a/t/darkpan.t b/t/darkpan.t index f55dd9318..e39f4d0aa 100644 --- a/t/darkpan.t +++ b/t/darkpan.t @@ -3,6 +3,7 @@ use warnings; use lib 't/lib'; +use Devel::Confess; use MetaCPAN::DarkPAN; use MetaCPAN::TestServer; use MetaCPAN::Tests::Controller::Search::DownloadURL; From 8571b5b54c83e1054674b8b6c4f16a37105426ad Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Sat, 2 May 2015 14:42:39 -0400 Subject: [PATCH 105/329] Switch mirror.contact from ArrayRef to Dict. --- lib/MetaCPAN/Document/Mirror.pm | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/lib/MetaCPAN/Document/Mirror.pm b/lib/MetaCPAN/Document/Mirror.pm index 89d1eb8a5..48c956b68 100644 --- a/lib/MetaCPAN/Document/Mirror.pm +++ b/lib/MetaCPAN/Document/Mirror.pm @@ -4,10 +4,11 @@ use strict; use warnings; use Moose; -use ElasticSearchX::Model::Document::Types qw(:all); +use ElasticSearchX::Model::Document::Types qw( Location ); use ElasticSearchX::Model::Document; -use MetaCPAN::Util; +use MetaCPAN::Types qw( ArrayRef Dict Str ); +use MooseX::Types::Structured qw(Dict ); # not sure why I have to do this has name => ( is => 'ro', @@ -28,10 +29,11 @@ has location => ( isa => Location, coerce => 1, ); + has contact => ( is => 'ro', required => 1, - isa => 'ArrayRef', + isa => Dict [ contact_site => Str, contact_user => Str ], ); has [qw(inceptdate reitredate)] => ( From 33fa10aee928821a26c4cab02da3db2ec083c603 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Sat, 2 May 2015 14:43:22 -0400 Subject: [PATCH 106/329] s/refresh_index/refresh/ --- lib/MetaCPAN/Script/Mirrors.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/MetaCPAN/Script/Mirrors.pm b/lib/MetaCPAN/Script/Mirrors.pm index 7e58574ce..aeb199dbc 100644 --- a/lib/MetaCPAN/Script/Mirrors.pm +++ b/lib/MetaCPAN/Script/Mirrors.pm @@ -14,7 +14,7 @@ with 'MetaCPAN::Role::Script', 'MooseX::Getopt'; sub run { my $self = shift; $self->index_mirrors; - $self->es->refresh_index( index => $self->index->name ); + $self->index->refresh; } sub index_mirrors { From bbd210719062257922f893fc4ee231be3d7aaa2a Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Sat, 2 May 2015 15:22:17 -0400 Subject: [PATCH 107/329] Optionally refresh cpantesters even if file hasn't changed. --- lib/MetaCPAN/Role/Script.pm | 2 ++ lib/MetaCPAN/Script/CPANTesters.pm | 17 ++++++++++++++--- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/lib/MetaCPAN/Role/Script.pm b/lib/MetaCPAN/Role/Script.pm index 0f4af0fbf..d5488def2 100644 --- a/lib/MetaCPAN/Role/Script.pm +++ b/lib/MetaCPAN/Role/Script.pm @@ -75,6 +75,8 @@ sub index { sub _build_model { my $self = shift; + + # es provided by ElasticSearchX::Model::Role return MetaCPAN::Model->new( es => $self->es ); } diff --git a/lib/MetaCPAN/Script/CPANTesters.pm b/lib/MetaCPAN/Script/CPANTesters.pm index ec3854f1d..4af64b215 100644 --- a/lib/MetaCPAN/Script/CPANTesters.pm +++ b/lib/MetaCPAN/Script/CPANTesters.pm @@ -10,15 +10,21 @@ use File::stat qw(stat); use IO::Uncompress::Bunzip2 qw(bunzip2); use LWP::UserAgent (); use Log::Contextual qw( :log :dlog ); +use MetaCPAN::Types qw( Bool ); use Moose; -with 'MetaCPAN::Role::Script', 'MooseX::Getopt'; +with 'MetaCPAN::Role::Script', 'MooseX::Getopt::Dashes'; has db => ( is => 'ro', default => 'http://devel.cpantesters.org/release/release.db.bz2' ); +has force_refresh => ( + is => 'ro', + isa => Bool, +); + sub run { my $self = shift; $self->index_reports; @@ -26,16 +32,20 @@ sub run { } sub index_reports { - my $self = shift; + my $self = shift; + my $es = $self->model->es; my $index = $self->index->name; my $ua = LWP::UserAgent->new; my $db = $self->home->file(qw(var tmp cpantesters.db)); + log_info { "Mirroring " . $self->db }; + $ua->mirror( $self->db, "$db.bz2" ); + if ( -e $db && stat($db)->mtime >= stat("$db.bz2")->mtime ) { log_info {"DB hasn't been modified"}; - return; + return unless $self->force_refresh; } bunzip2 "$db.bz2" => "$db", AutoClose => 1; @@ -53,6 +63,7 @@ sub index_reports { } log_info { 'Opening database file at ' . $db }; + my $dbh = DBI->connect( 'dbi:SQLite:dbname=' . $db ); my $sth; $sth = $dbh->prepare('SELECT * FROM release'); From a672dd192af024df2e72e3a26191c31ec61371ce Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Sat, 2 May 2015 15:22:49 -0400 Subject: [PATCH 108/329] Don't redefine in CPANTesters script. --- lib/MetaCPAN/Script/CPANTesters.pm | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/MetaCPAN/Script/CPANTesters.pm b/lib/MetaCPAN/Script/CPANTesters.pm index 4af64b215..80e0ea1bb 100644 --- a/lib/MetaCPAN/Script/CPANTesters.pm +++ b/lib/MetaCPAN/Script/CPANTesters.pm @@ -90,7 +90,6 @@ sub index_reports { sub bulk { my ( $self, $bulk ) = @_; - my $bulk = $self->model->bulk; my $index = $self->index->name; while ( my $data = shift @$bulk ) { $bulk->add( From 04505a2462ebbc440ec4c1d8193376b5ba7ef3bb Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Sat, 2 May 2015 18:48:51 -0400 Subject: [PATCH 109/329] s/force_refresh/skip_download/ I'm on airport wifi right now and the LWP mirror functionality just replaced my cpantesters db with whatever the proxy barfed about logging into free wifi. Make it easy not to try to get the db via the network. --- lib/MetaCPAN/Script/CPANTesters.pm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/MetaCPAN/Script/CPANTesters.pm b/lib/MetaCPAN/Script/CPANTesters.pm index 80e0ea1bb..9bd313ac2 100644 --- a/lib/MetaCPAN/Script/CPANTesters.pm +++ b/lib/MetaCPAN/Script/CPANTesters.pm @@ -20,7 +20,7 @@ has db => ( default => 'http://devel.cpantesters.org/release/release.db.bz2' ); -has force_refresh => ( +has skip_download => ( is => 'ro', isa => Bool, ); @@ -45,7 +45,7 @@ sub index_reports { if ( -e $db && stat($db)->mtime >= stat("$db.bz2")->mtime ) { log_info {"DB hasn't been modified"}; - return unless $self->force_refresh; + return unless $self->skip_download; } bunzip2 "$db.bz2" => "$db", AutoClose => 1; From 01e706f1e20f07f2f516ec6732a088e4f769b920 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Sat, 2 May 2015 20:25:25 -0400 Subject: [PATCH 110/329] Mostly working cpantesters import. --- lib/MetaCPAN/Script/CPANTesters.pm | 80 +++++++++++++++++++----------- 1 file changed, 51 insertions(+), 29 deletions(-) diff --git a/lib/MetaCPAN/Script/CPANTesters.pm b/lib/MetaCPAN/Script/CPANTesters.pm index 9bd313ac2..5a84047c5 100644 --- a/lib/MetaCPAN/Script/CPANTesters.pm +++ b/lib/MetaCPAN/Script/CPANTesters.pm @@ -25,6 +25,18 @@ has skip_download => ( isa => Bool, ); +has _bulk => ( + is => 'ro', + isa => 'Search::Elasticsearch::Bulk', + lazy => 1, + default => sub { + $_[0]->model->es->bulk_helper( + index => $_[0]->index->name, + type => 'release' + ); + }, +); + sub run { my $self = shift; $self->index_reports; @@ -41,16 +53,20 @@ sub index_reports { log_info { "Mirroring " . $self->db }; - $ua->mirror( $self->db, "$db.bz2" ); + $ua->mirror( $self->db, "$db.bz2" ) unless $self->skip_download; if ( -e $db && stat($db)->mtime >= stat("$db.bz2")->mtime ) { log_info {"DB hasn't been modified"}; return unless $self->skip_download; } - bunzip2 "$db.bz2" => "$db", AutoClose => 1; + bunzip2 "$db.bz2" => "$db", AutoClose => 1 if -e "$db.bz2"; - my $scroll = $self->index->type('release')->size(500)->raw->scroll; + my $scroll = $es->scroll_helper( + index => $self->index->name, + search_type => 'scan', + size => '500', + ); my %releases; while ( my $release = $scroll->next ) { @@ -70,40 +86,46 @@ sub index_reports { $sth->execute; my @bulk; + use DDP; + while ( my $row_from_db = $sth->fetchrow_hashref ) { + my $release + = join( '-', $row_from_db->{dist}, $row_from_db->{version} ); + my $release_doc = $releases{$release}; + + # there's a cpantesters dist we haven't indexed + next unless ($release_doc); - while ( my $data = $sth->fetchrow_hashref ) { - my $release = join( '-', $data->{dist}, $data->{version} ); - next unless ( $release = $releases{$release} ); my $bulk = 0; - for (qw(fail pass na unknown)) { - $bulk = 1 if ( $data->{$_} != ( $release->{tests}->{$_} || 0 ) ); + + my $tester_results = $release_doc->{tests}; + if ( !$tester_results ) { + $tester_results = {}; + $bulk = 1; } - next unless ($bulk); - $release->{tests} - = { map { $_ => $data->{$_} } qw(fail pass na unknown) }; - push( @bulk, $release ); - $self->bulk( \@bulk ) if ( @bulk > 100 ); - } - $self->bulk( \@bulk ); - log_info {'done'}; -} -sub bulk { - my ( $self, $bulk ) = @_; - my $index = $self->index->name; - while ( my $data = shift @$bulk ) { - $bulk->add( + # maybe us Data::Compare instead + for my $condition (qw(fail pass na unknown)) { + last if $bulk; + if ( ( $tester_results->{$condition} || 0 ) + != $row_from_db->{$condition} ) { - index => { - index => $index, - id => $data->{id}, - type => 'release', - body => $data - } + $bulk = 1; + } + } + + next unless ($bulk); + my %tests = map { $_ => $row_from_db->{$_} } qw(fail pass na unknown); + p %tests; + $self->_bulk->update( + { + doc => { tests => \%tests }, + doc_as_upsert => 1, + id => $release_doc->{id}, } ); } - + $self->_bulk->flush; + log_info {'done'}; } __PACKAGE__->meta->make_immutable; From 2a7f8827c535f28583e3f8dc810b993e81bb1046 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Wed, 19 Aug 2015 09:15:42 -0400 Subject: [PATCH 111/329] Adds index_cpantesters() to MetaCPAN::TestServer. --- t/lib/MetaCPAN/TestServer.pm | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/t/lib/MetaCPAN/TestServer.pm b/t/lib/MetaCPAN/TestServer.pm index c4a35230b..7452aef89 100644 --- a/t/lib/MetaCPAN/TestServer.pm +++ b/t/lib/MetaCPAN/TestServer.pm @@ -170,5 +170,19 @@ sub index_authors { 'index authors' ); } +# Right now this test requires you to have an internet connection. If we can +# get a sample db then we can run this with the '--skip-download' option. + +sub index_cpantesters { + my $self = shift; + + local @ARGV = ('cpantesters'); + ok( + MetaCPAN::Script::CPANTesters->new_with_options( $self->_config ) + ->run, + 'index authors' + ); +} + __PACKAGE__->meta->make_immutable(); 1; From ae81240a0a700efddaec01d78c8c1e19f9720780 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Sun, 8 Nov 2015 22:45:07 -0500 Subject: [PATCH 112/329] Set minimum version of Search::Elasticsearch to 2.00 --- cpanfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpanfile b/cpanfile index cba09c022..492177101 100644 --- a/cpanfile +++ b/cpanfile @@ -135,7 +135,7 @@ requires 'Pod::Text'; requires 'Regexp::Common'; requires 'Regexp::Common::time'; requires 'Safe', '2.35'; # bug fixes (used by Parse::PMFile) -requires 'Search::Elasticsearch'; +requires 'Search::Elasticsearch', '2.00'; requires 'Starman'; requires 'Time::Local'; requires 'Throwable::Error'; From 68719b534224ea6f1f9c13c88aeeca791cf4cc1a Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Tue, 10 Nov 2015 21:46:51 -0500 Subject: [PATCH 113/329] Update Catalyst, Data::Printer, Email::Valid --- cpanfile | 7 +- cpanfile.snapshot | 7414 +++++++++++++++++++++------------------------ 2 files changed, 3539 insertions(+), 3882 deletions(-) diff --git a/cpanfile b/cpanfile index 492177101..109897f95 100644 --- a/cpanfile +++ b/cpanfile @@ -9,7 +9,7 @@ requires 'CPAN::DistnameInfo'; requires 'CPAN::Meta', '2.141170'; # Avoid issues with List::Util dep under carton install. requires 'CPAN::Meta::Requirements'; requires 'Captcha::reCAPTCHA', '0.94'; -requires 'Catalyst', '5.90011'; +requires 'Catalyst', '5.90102'; requires 'Catalyst::Action::RenderView'; requires 'Catalyst::Authentication::User'; requires 'Catalyst::Controller'; @@ -30,7 +30,7 @@ requires 'CatalystX::InjectComponent'; requires 'CatalystX::RoleApplicator'; requires 'Config::JFDI'; requires 'Cwd'; -requires 'Data::Printer'; +requires 'Data::Printer', '0.36'; requires 'DBD::SQLite', '>=1.44'; requires 'DBI', '1.616'; requires 'Data::DPath'; @@ -47,7 +47,7 @@ requires 'ElasticSearchX::Model', '0.2.1'; requires 'Email::Address'; requires 'Email::Sender::Simple'; requires 'Email::Simple'; -requires 'Email::Valid'; +requires 'Email::Valid', '1.198'; requires 'Encode'; requires 'Encoding::FixLatin'; requires 'Exporter'; @@ -160,7 +160,6 @@ test_requires 'App::Prove'; test_requires 'CPAN::Faker', '0.010'; test_requires 'Config::General'; test_requires 'CPAN::Repository'; -test_requires 'ElasticSearch::TestServer'; test_requires 'File::Copy'; test_requires 'Git::Helpers'; test_requires 'HTTP::Cookies'; diff --git a/cpanfile.snapshot b/cpanfile.snapshot index d93a1a09d..a5976c0c0 100644 --- a/cpanfile.snapshot +++ b/cpanfile.snapshot @@ -9,23 +9,24 @@ DISTRIBUTIONS ExtUtils::MakeMaker 0 Test::More 0.47 perl 5.006 - Algorithm-Diff-1.1902 - pathname: T/TY/TYEMQ/Algorithm-Diff-1.1902.tar.gz + Algorithm-Diff-1.1903 + pathname: T/TY/TYEMQ/Algorithm-Diff-1.1903.tar.gz provides: - Algorithm::Diff 1.1902 - Algorithm::Diff::_impl 1.1902 - Algorithm::DiffOld 1.1 + Algorithm::Diff 1.1903 + Algorithm::Diff::_impl 1.1903 requirements: ExtUtils::MakeMaker 0 - Any-Moose-0.21 - pathname: S/SA/SARTAK/Any-Moose-0.21.tar.gz + Any-Moose-0.26 + pathname: E/ET/ETHER/Any-Moose-0.26.tar.gz provides: - Any::Moose 0.21 - AnyMooseTest undef - inc::MakeMaker undef + Any::Moose 0.26 requirements: - ExtUtils::MakeMaker 6.30 + Carp 0 + ExtUtils::MakeMaker 0 Moose 0 + perl 5.006_002 + strict 0 + warnings 0 Any-URI-Escape-0.01 pathname: P/PH/PHRED/Any-URI-Escape-0.01.tar.gz provides: @@ -33,17 +34,17 @@ DISTRIBUTIONS requirements: ExtUtils::MakeMaker 0 URI::Escape 0 - AnyEvent-7.07 - pathname: M/ML/MLEHMANN/AnyEvent-7.07.tar.gz + AnyEvent-7.11 + pathname: M/ML/MLEHMANN/AnyEvent-7.11.tar.gz provides: AE undef AE::Log::COLLECT undef AE::Log::FILTER undef AE::Log::LOG undef - AnyEvent 7.07 - AnyEvent::Base 7.07 - AnyEvent::CondVar 7.07 - AnyEvent::CondVar::Base 7.07 + AnyEvent 7.11 + AnyEvent::Base 7.11 + AnyEvent::CondVar 7.11 + AnyEvent::CondVar::Base 7.11 AnyEvent::DNS undef AnyEvent::Debug undef AnyEvent::Debug::Backtrace undef @@ -68,6 +69,7 @@ DISTRIBUTIONS AnyEvent::Impl::Qt::Io undef AnyEvent::Impl::Qt::Timer undef AnyEvent::Impl::Tk undef + AnyEvent::Impl::UV undef AnyEvent::Log undef AnyEvent::Log::COLLECT undef AnyEvent::Log::Ctx undef @@ -79,36 +81,12 @@ DISTRIBUTIONS AnyEvent::TLS undef AnyEvent::Util undef requirements: - ExtUtils::MakeMaker 0 - AnyEvent-HTTP-2.15 - pathname: M/ML/MLEHMANN/AnyEvent-HTTP-2.15.tar.gz - provides: - AnyEvent::HTTP 2.15 - requirements: - AnyEvent 5.33 - ExtUtils::MakeMaker 0 - common::sense 3.3 - AnyEvent-HTTP-LWP-UserAgent-0.10 - pathname: Y/YA/YAKEX/AnyEvent-HTTP-LWP-UserAgent-0.10.tar.gz - provides: - AnyEvent::HTTP::LWP::UserAgent 0.10 - requirements: - AnyEvent 5 - AnyEvent::HTTP 2.1 - ExtUtils::MakeMaker 6.30 - File::Temp 0 - HTTP::Headers::Util 0 - HTTP::Request::Common 0 - HTTP::Response 0 - LWP::UserAgent 5.815 - Test::More 0 - parent 0 - strict 0 - warnings 0 - Apache-LogFormat-Compiler-0.30 - pathname: K/KA/KAZEBURO/Apache-LogFormat-Compiler-0.30.tar.gz + Canary::Stability 0 + ExtUtils::MakeMaker 6.52 + Apache-LogFormat-Compiler-0.32 + pathname: K/KA/KAZEBURO/Apache-LogFormat-Compiler-0.32.tar.gz provides: - Apache::LogFormat::Compiler 0.30 + Apache::LogFormat::Compiler 0.32 requirements: CPAN::Meta 0 CPAN::Meta::Prereqs 0 @@ -117,7 +95,7 @@ DISTRIBUTIONS POSIX 0 POSIX::strftime::Compiler 0.30 Time::Local 0 - perl 5.008004 + perl 5.008001 App-Cache-0.37 pathname: L/LB/LBROCARD/App-Cache-0.37.tar.gz provides: @@ -133,24 +111,24 @@ DISTRIBUTIONS Path::Class 0 Storable 0 Test::More 0 - Archive-Any-0.0941 - pathname: O/OA/OALDERS/Archive-Any-0.0941.tar.gz + Archive-Any-0.0942 + pathname: O/OA/OALDERS/Archive-Any-0.0942.tar.gz provides: - Archive::Any 0.0941 - Archive::Any::Plugin 0.0941 - Archive::Any::Plugin::Tar 0.0941 - Archive::Any::Plugin::Zip 0.0941 - Archive::Any::Tar 0.0941 - Archive::Any::Zip 0.0941 + Archive::Any 0.0942 + Archive::Any::Plugin 0.0942 + Archive::Any::Plugin::Tar 0.0942 + Archive::Any::Plugin::Zip 0.0942 + Archive::Any::Tar 0.0942 + Archive::Any::Zip 0.0942 requirements: Archive::Tar 0 Archive::Zip 0 Cwd 0 - ExtUtils::MakeMaker 6.30 + ExtUtils::MakeMaker 0 File::MMagic 0 File::Spec::Functions 0 MIME::Types 0 - Module::Build 0.3601 + Module::Build 0.28 Module::Find 0 base 0 strict 0 @@ -168,10 +146,10 @@ DISTRIBUTIONS ExtUtils::MakeMaker 6.30 IO::Zlib 0 UNIVERSAL::require 0 - Archive-Extract-0.72 - pathname: B/BI/BINGOS/Archive-Extract-0.72.tar.gz + Archive-Extract-0.76 + pathname: B/BI/BINGOS/Archive-Extract-0.76.tar.gz provides: - Archive::Extract 0.72 + Archive::Extract 0.76 requirements: ExtUtils::MakeMaker 0 File::Basename 0 @@ -196,21 +174,21 @@ DISTRIBUTIONS Moose 0 MooseX::Types::Path::Class 0 Test::More 0 - Archive-Zip-1.37 - pathname: P/PH/PHRED/Archive-Zip-1.37.tar.gz - provides: - Archive::Zip 1.37 - Archive::Zip::Archive 1.37 - Archive::Zip::BufferedFileHandle 1.37 - Archive::Zip::DirectoryMember 1.37 - Archive::Zip::FileMember 1.37 - Archive::Zip::Member 1.37 - Archive::Zip::MemberRead 1.37 - Archive::Zip::MockFileHandle 1.37 - Archive::Zip::NewFileMember 1.37 - Archive::Zip::StringMember 1.37 - Archive::Zip::Tree 1.37 - Archive::Zip::ZipFileMember 1.37 + Archive-Zip-1.53 + pathname: P/PH/PHRED/Archive-Zip-1.53.tar.gz + provides: + Archive::Zip 1.53 + Archive::Zip::Archive 1.53 + Archive::Zip::BufferedFileHandle 1.53 + Archive::Zip::DirectoryMember 1.53 + Archive::Zip::FileMember 1.53 + Archive::Zip::Member 1.53 + Archive::Zip::MemberRead 1.53 + Archive::Zip::MockFileHandle 1.53 + Archive::Zip::NewFileMember 1.53 + Archive::Zip::StringMember 1.53 + Archive::Zip::Tree 1.53 + Archive::Zip::ZipFileMember 1.53 requirements: Compress::Raw::Zlib 2.017 ExtUtils::MakeMaker 0 @@ -235,19 +213,21 @@ DISTRIBUTIONS Array::Iterator::Reusable 0.11 requirements: ExtUtils::MakeMaker 6.30 - B-Hooks-EndOfScope-0.13 - pathname: E/ET/ETHER/B-Hooks-EndOfScope-0.13.tar.gz + B-Hooks-EndOfScope-0.15 + pathname: E/ET/ETHER/B-Hooks-EndOfScope-0.15.tar.gz provides: - B::Hooks::EndOfScope 0.13 - B::Hooks::EndOfScope::PP 0.13 - B::Hooks::EndOfScope::XS 0.13 + B::Hooks::EndOfScope 0.15 + B::Hooks::EndOfScope::PP 0.15 + B::Hooks::EndOfScope::XS 0.15 requirements: ExtUtils::CBuilder 0.26 - ExtUtils::MakeMaker 6.30 + ExtUtils::MakeMaker 0 Module::Implementation 0.05 - Module::Runtime 0.012 Sub::Exporter::Progressive 0.001006 Variable::Magic 0.48 + perl 5.008001 + strict 0 + warnings 0 B-Hooks-OP-Check-0.19 pathname: Z/ZE/ZEFRAM/B-Hooks-OP-Check-0.19.tar.gz provides: @@ -259,10 +239,10 @@ DISTRIBUTIONS Test::More 0 parent 0 perl 5.008001 - B-Keywords-1.13 - pathname: R/RU/RURBAN/B-Keywords-1.13.tar.gz + B-Keywords-1.14 + pathname: R/RU/RURBAN/B-Keywords-1.14.tar.gz provides: - B::Keywords 1.13 + B::Keywords 1.14 requirements: B 0 ExtUtils::MakeMaker 0 @@ -298,13 +278,43 @@ DISTRIBUTIONS autodie 0 parent 0 perl 5.008001 - CGI-Simple-1.113 - pathname: A/AN/ANDYA/CGI-Simple-1.113.tar.gz + CGI-4.22 + pathname: L/LE/LEEJO/CGI-4.22.tar.gz + provides: + CGI 4.22 + CGI::Carp 4.22 + CGI::Cookie 4.22 + CGI::File::Temp 4.22 + CGI::HTML::Functions undef + CGI::Pretty 4.22 + CGI::Push 4.22 + CGI::Util 4.22 + Fh 4.22 + MultipartBuffer 4.22 + requirements: + Carp 0 + Config 0 + Encode 0 + Exporter 0 + ExtUtils::MakeMaker 0 + File::Spec 0.82 + File::Temp 0 + HTML::Entities 3.69 + base 0 + if 0 + overload 0 + parent 0.225 + perl 5.008001 + strict 0 + utf8 0 + warnings 0 + CGI-Simple-1.115 + pathname: S/SZ/SZABGAB/CGI-Simple-1.115.tar.gz provides: - CGI::Simple 1.113 - CGI::Simple::Cookie 1.113 - CGI::Simple::Standard 1.113 - CGI::Simple::Util 1.113 + CGI::Simple 1.115 + CGI::Simple::Cookie 1.114 + CGI::Simple::Standard 1.114 + CGI::Simple::Util 1.114 requirements: IO::Scalar 0 Test::More 0 @@ -317,33 +327,34 @@ DISTRIBUTIONS Storable 0 Test::Deep 0 Test::More 0 - CHI-0.58 - pathname: H/HA/HAARG/CHI-0.58.tar.gz - provides: - CHI 0.58 - CHI::CacheObject 0.58 - CHI::Driver 0.58 - CHI::Driver::Base::CacheContainer 0.58 - CHI::Driver::CacheCache 0.58 - CHI::Driver::FastMmap 0.58 - CHI::Driver::File 0.58 - CHI::Driver::Memory 0.58 - CHI::Driver::Metacache 0.58 - CHI::Driver::Null 0.58 - CHI::Driver::RawMemory 0.58 - CHI::Driver::Role::HasSubcaches 0.58 - CHI::Driver::Role::IsSizeAware 0.58 - CHI::Driver::Role::IsSubcache 0.58 - CHI::Stats 0.58 + CHI-0.60 + pathname: J/JS/JSWARTZ/CHI-0.60.tar.gz + provides: + CHI 0.60 + CHI::CacheObject 0.60 + CHI::Driver 0.60 + CHI::Driver::Base::CacheContainer 0.60 + CHI::Driver::CacheCache 0.60 + CHI::Driver::FastMmap 0.60 + CHI::Driver::File 0.60 + CHI::Driver::Memory 0.60 + CHI::Driver::Metacache 0.60 + CHI::Driver::Null 0.60 + CHI::Driver::RawMemory 0.60 + CHI::Driver::Role::HasSubcaches 0.60 + CHI::Driver::Role::IsSizeAware 0.60 + CHI::Driver::Role::IsSubcache 0.60 + CHI::Stats 0.60 requirements: Carp::Assert 0.20 + Class::Load 0 Data::UUID 0 Digest::JHash 0 Digest::MD5 0 - ExtUtils::MakeMaker 6.30 + ExtUtils::MakeMaker 0 File::Spec 0.80 Hash::MoreUtils 0 - JSON 0 + JSON::MaybeXS 1.003003 List::MoreUtils 0.13 Log::Any 0.08 Moo 1.003 @@ -364,10 +375,10 @@ DISTRIBUTIONS requirements: ExtUtils::MakeMaker 0 Test::More 0.07 - CPAN-Checksums-2.09 - pathname: A/AN/ANDK/CPAN-Checksums-2.09.tar.gz + CPAN-Checksums-2.10 + pathname: A/AN/ANDK/CPAN-Checksums-2.10.tar.gz provides: - CPAN::Checksums 2.09 + CPAN::Checksums 2.10 requirements: Compress::Bzip2 0 Compress::Zlib 0 @@ -409,17 +420,17 @@ DISTRIBUTIONS Text::Template 0 strict 0 warnings 0 - CPAN-Meta-2.150001 - pathname: D/DA/DAGOLDEN/CPAN-Meta-2.150001.tar.gz - provides: - CPAN::Meta 2.150001 - CPAN::Meta::Converter 2.150001 - CPAN::Meta::Feature 2.150001 - CPAN::Meta::History 2.150001 - CPAN::Meta::Merge 2.150001 - CPAN::Meta::Prereqs 2.150001 - CPAN::Meta::Spec 2.150001 - CPAN::Meta::Validator 2.150001 + CPAN-Meta-2.150005 + pathname: D/DA/DAGOLDEN/CPAN-Meta-2.150005.tar.gz + provides: + CPAN::Meta 2.150005 + CPAN::Meta::Converter 2.150005 + CPAN::Meta::Feature 2.150005 + CPAN::Meta::History 2.150005 + CPAN::Meta::Merge 2.150005 + CPAN::Meta::Prereqs 2.150005 + CPAN::Meta::Spec 2.150005 + CPAN::Meta::Validator 2.150005 requirements: CPAN::Meta::Requirements 2.121 CPAN::Meta::YAML 0.008 @@ -432,22 +443,10 @@ DISTRIBUTIONS strict 0 version 0.88 warnings 0 - CPAN-Meta-Check-0.008 - pathname: L/LE/LEONT/CPAN-Meta-Check-0.008.tar.gz - provides: - CPAN::Meta::Check 0.008 - requirements: - CPAN::Meta::Prereqs 2.132830 - CPAN::Meta::Requirements 2.121 - Exporter 5.57 - ExtUtils::MakeMaker 6.30 - Module::Metadata 0 - strict 0 - warnings 0 - CPAN-Meta-YAML-0.012 - pathname: D/DA/DAGOLDEN/CPAN-Meta-YAML-0.012.tar.gz + CPAN-Meta-YAML-0.016 + pathname: D/DA/DAGOLDEN/CPAN-Meta-YAML-0.016.tar.gz provides: - CPAN::Meta::YAML 0.012 + CPAN::Meta::YAML 0.016 requirements: B 0 Carp 0 @@ -455,6 +454,7 @@ DISTRIBUTIONS ExtUtils::MakeMaker 6.17 Fcntl 0 Scalar::Util 0 + perl 5.008001 strict 0 warnings 0 CPAN-Repository-0.008 @@ -479,12 +479,12 @@ DISTRIBUTIONS Moo 0.009013 Test::LoadAllModules 0.021 Test::More 0.96 - Cache-Cache-1.06 - pathname: J/JS/JSWARTZ/Cache-Cache-1.06.tar.gz + Cache-Cache-1.08 + pathname: R/RJ/RJBS/Cache-Cache-1.08.tar.gz provides: Cache::BaseCache undef Cache::BaseCacheTester undef - Cache::Cache 1.06 + Cache::Cache 1.08 Cache::CacheMetaData undef Cache::CacheSizer undef Cache::CacheTester undef @@ -508,6 +508,21 @@ DISTRIBUTIONS ExtUtils::MakeMaker 0 File::Spec 0.82 Storable 1.014 + Cache-LRU-0.04 + pathname: K/KA/KAZUHO/Cache-LRU-0.04.tar.gz + provides: + Cache::LRU 0.04 + requirements: + ExtUtils::MakeMaker 6.42 + Test::More 0.88 + Test::Requires 0 + perl 5.008001 + Canary-Stability-2006 + pathname: M/ML/MLEHMANN/Canary-Stability-2006.tar.gz + provides: + Canary::Stability 2006 + requirements: + ExtUtils::MakeMaker 0 Captcha-reCAPTCHA-0.97 pathname: P/PH/PHRED/Captcha-reCAPTCHA-0.97.tar.gz provides: @@ -517,10 +532,10 @@ DISTRIBUTIONS HTML::Tiny 0.904 LWP::UserAgent 0 Test::More 0 - Capture-Tiny-0.24 - pathname: D/DA/DAGOLDEN/Capture-Tiny-0.24.tar.gz + Capture-Tiny-0.30 + pathname: D/DA/DAGOLDEN/Capture-Tiny-0.30.tar.gz provides: - Capture::Tiny 0.24 + Capture::Tiny 0.30 requirements: Carp 0 Exporter 0 @@ -529,16 +544,21 @@ DISTRIBUTIONS File::Temp 0 IO::Handle 0 Scalar::Util 0 + perl 5.006 strict 0 warnings 0 - Carp-Assert-0.20 - pathname: M/MS/MSCHWERN/Carp-Assert-0.20.tar.gz + Carp-Assert-0.21 + pathname: N/NE/NEILB/Carp-Assert-0.21.tar.gz provides: - Carp::Assert 0.20 + Carp::Assert 0.21 requirements: Carp 0 + Exporter 0 ExtUtils::MakeMaker 0 - Test::More 0.4 + perl 5.006 + strict 0 + vars 0 + warnings 0 Carp-Assert-More-1.14 pathname: P/PE/PETDANCE/Carp-Assert-More-1.14.tar.gz provides: @@ -565,35 +585,35 @@ DISTRIBUTIONS Carp::Clan 0 ExtUtils::MakeMaker 6.42 Test::More 0 - Catalyst-Action-REST-1.15 - pathname: F/FR/FREW/Catalyst-Action-REST-1.15.tar.gz - provides: - Catalyst::Action::Deserialize 1.15 - Catalyst::Action::Deserialize::Callback 1.15 - Catalyst::Action::Deserialize::JSON 1.15 - Catalyst::Action::Deserialize::JSON::XS 1.15 - Catalyst::Action::Deserialize::View 1.15 - Catalyst::Action::Deserialize::XML::Simple 1.15 - Catalyst::Action::Deserialize::YAML 1.15 - Catalyst::Action::DeserializeMultiPart 1.15 - Catalyst::Action::REST 1.15 - Catalyst::Action::REST::ForBrowsers 1.15 - Catalyst::Action::Serialize 1.15 - Catalyst::Action::Serialize::Callback 1.15 - Catalyst::Action::Serialize::JSON 1.15 - Catalyst::Action::Serialize::JSON::XS 1.15 - Catalyst::Action::Serialize::JSONP 1.15 - Catalyst::Action::Serialize::View 1.15 - Catalyst::Action::Serialize::XML::Simple 1.15 - Catalyst::Action::Serialize::YAML 1.15 - Catalyst::Action::Serialize::YAML::HTML 1.15 - Catalyst::Action::SerializeBase 1.15 + Catalyst-Action-REST-1.20 + pathname: J/JJ/JJNAPIORK/Catalyst-Action-REST-1.20.tar.gz + provides: + Catalyst::Action::Deserialize 1.20 + Catalyst::Action::Deserialize::Callback 1.20 + Catalyst::Action::Deserialize::JSON 1.20 + Catalyst::Action::Deserialize::JSON::XS 1.20 + Catalyst::Action::Deserialize::View 1.20 + Catalyst::Action::Deserialize::XML::Simple 1.20 + Catalyst::Action::Deserialize::YAML 1.20 + Catalyst::Action::DeserializeMultiPart 1.20 + Catalyst::Action::REST 1.20 + Catalyst::Action::REST::ForBrowsers 1.20 + Catalyst::Action::Serialize 1.20 + Catalyst::Action::Serialize::Callback 1.20 + Catalyst::Action::Serialize::JSON 1.20 + Catalyst::Action::Serialize::JSON::XS 1.20 + Catalyst::Action::Serialize::JSONP 1.20 + Catalyst::Action::Serialize::View 1.20 + Catalyst::Action::Serialize::XML::Simple 1.20 + Catalyst::Action::Serialize::YAML 1.20 + Catalyst::Action::Serialize::YAML::HTML 1.20 + Catalyst::Action::SerializeBase 1.20 Catalyst::Action::Serializer::Broken undef - Catalyst::Controller::REST 1.15 - Catalyst::Request::REST 1.15 - Catalyst::Request::REST::ForBrowsers 1.15 - Catalyst::TraitFor::Request::REST 1.15 - Catalyst::TraitFor::Request::REST::ForBrowsers 1.15 + Catalyst::Controller::REST 1.20 + Catalyst::Request::REST 1.20 + Catalyst::Request::REST::ForBrowsers 1.20 + Catalyst::TraitFor::Request::REST 1.20 + Catalyst::TraitFor::Request::REST::ForBrowsers 1.20 Test::Action::Class undef Test::Action::Class::Sub undef Test::Catalyst::Action::REST undef @@ -615,8 +635,8 @@ DISTRIBUTIONS requirements: Catalyst::Runtime 5.80030 Class::Inspector 1.13 - ExtUtils::MakeMaker 6.30 - LWP::UserAgent 2.033 + ExtUtils::MakeMaker 0 + JSON::MaybeXS 0 MRO::Compat 0.10 Module::Pluggable::Object 0 Moose 1.03 @@ -680,10 +700,10 @@ DISTRIBUTIONS Path::Class 0 Test::More 0 perl 5.008 - Catalyst-Plugin-Session-0.39 - pathname: J/JJ/JJNAPIORK/Catalyst-Plugin-Session-0.39.tar.gz + Catalyst-Plugin-Session-0.40 + pathname: J/JJ/JJNAPIORK/Catalyst-Plugin-Session-0.40.tar.gz provides: - Catalyst::Plugin::Session 0.39 + Catalyst::Plugin::Session 0.40 Catalyst::Plugin::Session::State undef Catalyst::Plugin::Session::Store undef Catalyst::Plugin::Session::Store::Dummy undef @@ -718,10 +738,10 @@ DISTRIBUTIONS Moose 0 Test::More 0 namespace::autoclean 0 - Catalyst-Plugin-Static-Simple-0.31 - pathname: A/AB/ABRAXXA/Catalyst-Plugin-Static-Simple-0.31.tar.gz + Catalyst-Plugin-Static-Simple-0.33 + pathname: J/JJ/JJNAPIORK/Catalyst-Plugin-Static-Simple-0.33.tar.gz provides: - Catalyst::Plugin::Static::Simple 0.31 + Catalyst::Plugin::Static::Simple 0.33 requirements: Catalyst::Runtime 5.80008 ExtUtils::MakeMaker 6.36 @@ -730,15 +750,17 @@ DISTRIBUTIONS MooseX::Types 0 Test::More 0 namespace::autoclean 0 - Catalyst-Runtime-5.90064 - pathname: J/JJ/JJNAPIORK/Catalyst-Runtime-5.90064.tar.gz + Catalyst-Runtime-5.90102 + pathname: J/JJ/JJNAPIORK/Catalyst-Runtime-5.90102.tar.gz provides: - Catalyst 5.90064 + Catalyst 5.90102 Catalyst::Action undef Catalyst::ActionChain undef Catalyst::ActionContainer undef Catalyst::ActionRole::ConsumesContent undef Catalyst::ActionRole::HTTPMethods undef + Catalyst::ActionRole::QueryMatching undef + Catalyst::ActionRole::Scheme undef Catalyst::Base undef Catalyst::ClassData undef Catalyst::Component undef @@ -760,12 +782,15 @@ DISTRIBUTIONS Catalyst::Exception::Go undef Catalyst::Exception::Interface undef Catalyst::Log undef + Catalyst::Middleware::Stash undef Catalyst::Model undef - Catalyst::Plugin::Unicode::Encoding 2.1 + Catalyst::Plugin::Unicode::Encoding 99.0 Catalyst::Request undef + Catalyst::Request::PartData undef Catalyst::Request::Upload undef Catalyst::Response undef - Catalyst::Runtime 5.90064 + Catalyst::Response::Writer undef + Catalyst::Runtime 5.90102 Catalyst::Script::CGI undef Catalyst::Script::Create undef Catalyst::Script::FastCGI undef @@ -780,7 +805,7 @@ DISTRIBUTIONS requirements: CGI::Simple::Cookie 1.109 CGI::Struct 0 - Carp 0 + Carp 1.25 Class::C3::Adopt::NEXT 0.07 Class::Data::Inheritable 0 Class::Load 0.12 @@ -791,7 +816,7 @@ DISTRIBUTIONS ExtUtils::MakeMaker 6.59 HTML::Entities 0 HTML::HeadParser 0 - HTTP::Body 1.06 + HTTP::Body 1.22 HTTP::Headers 1.64 HTTP::Request 5.814 HTTP::Request::AsCGI 1.0 @@ -820,7 +845,7 @@ DISTRIBUTIONS Plack::Middleware::IIS6ScriptNameFix 0 Plack::Middleware::IIS7KeepAliveFix 0 Plack::Middleware::LighttpdScriptNameFix 0 - Plack::Middleware::MethodOverride 0 + Plack::Middleware::MethodOverride 0.12 Plack::Middleware::RemoveRedundantBody 0.03 Plack::Middleware::ReverseProxy 0.04 Plack::Request::Upload 0 @@ -839,19 +864,20 @@ DISTRIBUTIONS Tree::Simple 1.15 Tree::Simple::Visitor::FindByPath 0 Try::Tiny 0.17 - URI 1.36 + URI 1.65 + URI::ws 0.03 namespace::autoclean 0.09 namespace::clean 0.23 perl 5.008003 - Catalyst-View-JSON-0.33 - pathname: M/MI/MIYAGAWA/Catalyst-View-JSON-0.33.tar.gz + Catalyst-View-JSON-0.35 + pathname: J/JJ/JJNAPIORK/Catalyst-View-JSON-0.35.tar.gz provides: Catalyst::Helper::View::JSON undef - Catalyst::View::JSON 0.33 + Catalyst::View::JSON 0.35 requirements: Catalyst 5.6 - ExtUtils::MakeMaker 6.42 - JSON::Any 1.15 + ExtUtils::MakeMaker 6.59 + JSON::MaybeXS 1.003000 MRO::Compat 0 Test::More 0 YAML 0 @@ -924,42 +950,33 @@ DISTRIBUTIONS Test::Exception 0.31 Test::More 0.88 perl 5.006 - Class-Accessor-Lite-0.06 - pathname: K/KA/KAZUHO/Class-Accessor-Lite-0.06.tar.gz + Class-Accessor-Lite-0.08 + pathname: K/KA/KAZUHO/Class-Accessor-Lite-0.08.tar.gz provides: - Class::Accessor::Lite 0.06 + Class::Accessor::Lite 0.08 requirements: - ExtUtils::MakeMaker 6.42 - Class-C3-0.27 - pathname: H/HA/HAARG/Class-C3-0.27.tar.gz + ExtUtils::MakeMaker 6.36 + Class-C3-0.30 + pathname: H/HA/HAARG/Class-C3-0.30.tar.gz provides: - Class::C3 0.27 + Class::C3 0.30 requirements: Algorithm::C3 0.07 - ExtUtils::CBuilder 0.27 ExtUtils::MakeMaker 0 Scalar::Util 0 perl 5.006 - Class-C3-Adopt-NEXT-0.13 - pathname: F/FL/FLORA/Class-C3-Adopt-NEXT-0.13.tar.gz - provides: - C3NT undef - C3NT::Bar undef - C3NT::Baz undef - C3NT::Child undef - C3NT::Foo undef - C3NT::Quux undef - C3NT_nowarn undef - Class::C3::Adopt::NEXT 0.13 + Class-C3-Adopt-NEXT-0.14 + pathname: E/ET/ETHER/Class-C3-Adopt-NEXT-0.14.tar.gz + provides: + Class::C3::Adopt::NEXT 0.14 requirements: - ExtUtils::MakeMaker 6.31 - FindBin 0 - List::MoreUtils 0 + List::Util 1.33 MRO::Compat 0 + Module::Build::Tiny 0.039 NEXT 0 - Test::Exception 0.27 - Test::More 0 - vars 0 + perl 5.006 + strict 0 + warnings 0 warnings::register 0 Class-C3-Componentised-1.001000 pathname: F/FR/FREW/Class-C3-Componentised-1.001000.tar.gz @@ -995,61 +1012,62 @@ DISTRIBUTIONS File::Spec 0.80 Test::More 0.47 perl 5.006 - Class-Load-0.21 - pathname: E/ET/ETHER/Class-Load-0.21.tar.gz + Class-Load-0.23 + pathname: E/ET/ETHER/Class-Load-0.23.tar.gz provides: - Class::Load 0.21 - Class::Load::PP 0.21 + Class::Load 0.23 + Class::Load::PP 0.23 requirements: Carp 0 Data::OptList 0 Exporter 0 - ExtUtils::MakeMaker 6.30 - Module::Build::Tiny 0.034 + ExtUtils::MakeMaker 0 Module::Implementation 0.04 Module::Runtime 0.012 Package::Stash 0.14 Scalar::Util 0 Try::Tiny 0 base 0 - perl 5.008 + perl 5.006 strict 0 warnings 0 - Class-Load-XS-0.08 - pathname: E/ET/ETHER/Class-Load-XS-0.08.tar.gz + Class-Load-XS-0.09 + pathname: E/ET/ETHER/Class-Load-XS-0.09.tar.gz provides: - Class::Load::XS 0.08 + Class::Load::XS 0.09 requirements: Class::Load 0.20 - ExtUtils::MakeMaker 6.30 + ExtUtils::MakeMaker 0 XSLoader 0 + perl 5.006 strict 0 warnings 0 - Class-Method-Modifiers-2.10 - pathname: E/ET/ETHER/Class-Method-Modifiers-2.10.tar.gz + Class-Method-Modifiers-2.11 + pathname: E/ET/ETHER/Class-Method-Modifiers-2.11.tar.gz provides: - Class::Method::Modifiers 2.10 + Class::Method::Modifiers 2.11 requirements: B 0 Carp 0 Exporter 0 - ExtUtils::MakeMaker 6.30 + ExtUtils::MakeMaker 0 base 0 strict 0 warnings 0 - Class-Singleton-1.4 - pathname: A/AB/ABW/Class-Singleton-1.4.tar.gz + Class-Singleton-1.5 + pathname: S/SH/SHAY/Class-Singleton-1.5.tar.gz provides: - Class::Singleton 1.4 + Class::Singleton 1.5 requirements: ExtUtils::MakeMaker 0 - Class-Tiny-0.014 - pathname: D/DA/DAGOLDEN/Class-Tiny-0.014.tar.gz + Class-Tiny-1.004 + pathname: D/DA/DAGOLDEN/Class-Tiny-1.004.tar.gz provides: - Class::Tiny 0.014 + Class::Tiny 1.004 requirements: Carp 0 ExtUtils::MakeMaker 6.17 + perl 5.006 strict 0 warnings 0 Class-XSAccessor-1.19 @@ -1063,10 +1081,10 @@ DISTRIBUTIONS Time::HiRes 0 XSLoader 0 perl 5.008 - Clone-0.37 - pathname: G/GA/GARU/Clone-0.37.tar.gz + Clone-0.38 + pathname: G/GA/GARU/Clone-0.38.tar.gz provides: - Clone 0.37 + Clone 0.38 requirements: ExtUtils::MakeMaker 0 Test::More 0 @@ -1081,61 +1099,78 @@ DISTRIBUTIONS strict 0 vars 0 warnings 0 - Code-TidyAll-0.20 - pathname: J/JS/JSWARTZ/Code-TidyAll-0.20.tar.gz - provides: - Code::TidyAll 0.20 - Code::TidyAll::Cache 0.20 - Code::TidyAll::Config::INI::Reader 0.20 - Code::TidyAll::Git::Precommit 0.20 - Code::TidyAll::Git::Prereceive 0.20 - Code::TidyAll::Git::Util 0.20 - Code::TidyAll::Plugin 0.20 - Code::TidyAll::Plugin::CSSUnminifier 0.20 - Code::TidyAll::Plugin::JSBeautify 0.20 - Code::TidyAll::Plugin::JSHint 0.20 - Code::TidyAll::Plugin::JSLint 0.20 - Code::TidyAll::Plugin::JSON 0.20 - Code::TidyAll::Plugin::MasonTidy 0.20 - Code::TidyAll::Plugin::PHPCodeSniffer 0.20 - Code::TidyAll::Plugin::PerlCritic 0.20 - Code::TidyAll::Plugin::PerlTidy 0.20 - Code::TidyAll::Plugin::PodChecker 0.20 - Code::TidyAll::Plugin::PodSpell 0.20 - Code::TidyAll::Plugin::PodTidy 0.20 - Code::TidyAll::Plugin::SortLines 0.20 - Code::TidyAll::Result 0.20 - Code::TidyAll::SVN::Precommit 0.20 - Code::TidyAll::SVN::Util 0.20 - Code::TidyAll::Util::Zglob 0.20 - Pod::Weaver::Section::SeeAlsoCodeTidyAll 0.20 - Test::Code::TidyAll 0.20 - requirements: - Capture::Tiny 0.12 + Code-TidyAll-0.30 + pathname: D/DR/DROLSKY/Code-TidyAll-0.30.tar.gz + provides: + Code::TidyAll 0.30 + Code::TidyAll::Cache 0.30 + Code::TidyAll::CacheModel 0.30 + Code::TidyAll::CacheModel::Shared 0.30 + Code::TidyAll::Config::INI::Reader 0.30 + Code::TidyAll::Git::Precommit 0.30 + Code::TidyAll::Git::Prereceive 0.30 + Code::TidyAll::Git::Util 0.30 + Code::TidyAll::Plugin 0.30 + Code::TidyAll::Plugin::CSSUnminifier 0.30 + Code::TidyAll::Plugin::JSBeautify 0.30 + Code::TidyAll::Plugin::JSHint 0.30 + Code::TidyAll::Plugin::JSLint 0.30 + Code::TidyAll::Plugin::JSON 0.30 + Code::TidyAll::Plugin::MasonTidy 0.30 + Code::TidyAll::Plugin::PHPCodeSniffer 0.30 + Code::TidyAll::Plugin::PerlCritic 0.30 + Code::TidyAll::Plugin::PerlTidy 0.30 + Code::TidyAll::Plugin::PerlTidySweet 0.30 + Code::TidyAll::Plugin::PodChecker 0.30 + Code::TidyAll::Plugin::PodSpell 0.30 + Code::TidyAll::Plugin::PodTidy 0.30 + Code::TidyAll::Plugin::SortLines 0.30 + Code::TidyAll::Result 0.30 + Code::TidyAll::Role::Tempdir 0.30 + Code::TidyAll::SVN::Precommit 0.30 + Code::TidyAll::SVN::Util 0.30 + Code::TidyAll::Util::Zglob 0.30 + Test::Code::TidyAll 0.30 + requirements: + Capture::Tiny 0 Config::INI::Reader 0 + Cwd 0 + Data::Dumper 0 Date::Format 0 - Digest::SHA1 0 - ExtUtils::MakeMaker 6.30 + Digest::SHA 0 + Exporter 0 + ExtUtils::MakeMaker 0 File::Basename 0 File::Find 0 File::Path 0 + File::Slurp::Tiny 0 + File::Spec::Functions 0 File::Temp 0 File::Zglob 0 Getopt::Long 0 Guard 0 IPC::Run3 0 - IPC::System::Simple 0.15 + IPC::System::Simple 0 List::MoreUtils 0 Log::Any 0 - Moo 0.0091010 + Moo 0 + Moo::Role 0 Scalar::Util 0 + Test::Builder 0 + Text::Diff 0 + Text::Diff::Table 0 Text::ParseWords 0 Time::Duration::Parse 0 Try::Tiny 0 - Compress-Bzip2-2.17 - pathname: R/RU/RURBAN/Compress-Bzip2-2.17.tar.gz + base 0 + constant 0 + strict 0 + vars 0 + warnings 0 + Compress-Bzip2-2.22 + pathname: R/RU/RURBAN/Compress-Bzip2-2.22.tar.gz provides: - Compress::Bzip2 2.17 + Compress::Bzip2 2.22 requirements: Carp 0 Config 0 @@ -1145,10 +1180,11 @@ DISTRIBUTIONS File::Spec 0 Getopt::Std 0 Test::More 0 - Config-Any-0.24 - pathname: B/BR/BRICAS/Config-Any-0.24.tar.gz + constant 1.04 + Config-Any-0.26 + pathname: B/BR/BRICAS/Config-Any-0.26.tar.gz provides: - Config::Any 0.24 + Config::Any 0.26 Config::Any::Base undef Config::Any::General undef Config::Any::INI undef @@ -1161,10 +1197,10 @@ DISTRIBUTIONS Module::Pluggable 3.01 Test::More 0 perl 5.006 - Config-General-2.56 - pathname: T/TL/TLINDEN/Config-General-2.56.tar.gz + Config-General-2.60 + pathname: T/TL/TLINDEN/Config-General-2.60.tar.gz provides: - Config::General 2.56 + Config::General 2.60 Config::General::Extended 2.07 Config::General::Interpolated 2.15 requirements: @@ -1173,16 +1209,16 @@ DISTRIBUTIONS File::Spec::Functions 0 FileHandle 0 IO::File 0 - Config-INI-0.024 - pathname: R/RJ/RJBS/Config-INI-0.024.tar.gz + Config-INI-0.025 + pathname: R/RJ/RJBS/Config-INI-0.025.tar.gz provides: - Config::INI 0.024 - Config::INI::Reader 0.024 - Config::INI::Writer 0.024 + Config::INI 0.025 + Config::INI::Reader 0.025 + Config::INI::Writer 0.025 requirements: Carp 0 - ExtUtils::MakeMaker 6.30 - Mixin::Linewise::Readers 0.100 + ExtUtils::MakeMaker 0 + Mixin::Linewise::Readers 0.105 Mixin::Linewise::Writers 0 strict 0 warnings 0 @@ -1208,14 +1244,14 @@ DISTRIBUTIONS Path::Class 0 Sub::Install 0 Test::Most 0 - Config-Tiny-2.20 - pathname: R/RS/RSAVAGE/Config-Tiny-2.20.tgz + Config-Tiny-2.23 + pathname: R/RS/RSAVAGE/Config-Tiny-2.23.tgz provides: - Config::Tiny 2.20 + Config::Tiny 2.23 requirements: + ExtUtils::MakeMaker 0 File::Spec 3.3 File::Temp 0.22 - Module::Build 0.34 Test::More 0.47 UNIVERSAL 0 perl v5.8.1 @@ -1231,22 +1267,19 @@ DISTRIBUTIONS Test::Exception 0 Test::More 0 ok 0 - Cookie-Baker-0.03 - pathname: K/KA/KAZEBURO/Cookie-Baker-0.03.tar.gz + Cookie-Baker-0.06 + pathname: K/KA/KAZEBURO/Cookie-Baker-0.06.tar.gz provides: - Cookie::Baker 0.03 + Cookie::Baker 0.06 requirements: - CPAN::Meta 0 - CPAN::Meta::Prereqs 0 Exporter 0 - ExtUtils::CBuilder 0 Module::Build 0.38 URI::Escape 0 - perl 5.008005 - Cpanel-JSON-XS-3.0104 - pathname: R/RU/RURBAN/Cpanel-JSON-XS-3.0104.tar.gz + perl 5.008001 + Cpanel-JSON-XS-3.0115 + pathname: R/RU/RURBAN/Cpanel-JSON-XS-3.0115.tar.gz provides: - Cpanel::JSON::XS 3.0104 + Cpanel::JSON::XS 3.0115 requirements: ExtUtils::MakeMaker 0 Pod::Text 2.08 @@ -1285,19 +1318,17 @@ DISTRIBUTIONS Path::Class 0.26 Try::Tiny 0.19 perl 5.006 - DBD-SQLite-1.44 - pathname: I/IS/ISHIGAKI/DBD-SQLite-1.44.tar.gz + DBD-SQLite-1.48 + pathname: I/IS/ISHIGAKI/DBD-SQLite-1.48.tar.gz provides: - DBD::SQLite 1.44 - DBD::SQLite::VirtualTable 1.44 - DBD::SQLite::VirtualTable::Cursor 1.44 + DBD::SQLite 1.48 + DBD::SQLite::Constants undef + DBD::SQLite::VirtualTable 1.48 + DBD::SQLite::VirtualTable::Cursor 1.48 DBD::SQLite::VirtualTable::FileContent undef DBD::SQLite::VirtualTable::FileContent::Cursor undef DBD::SQLite::VirtualTable::PerlData undef DBD::SQLite::VirtualTable::PerlData::Cursor undef - DBD::SQLite::_WriteOnceHash 1.44 - DBD::SQLite::db 1.44 - DBD::SQLite::dr 1.44 requirements: DBI 1.57 ExtUtils::MakeMaker 6.48 @@ -1306,8 +1337,8 @@ DISTRIBUTIONS Test::More 0.47 Tie::Hash 0 perl 5.006 - DBI-1.631 - pathname: T/TI/TIMB/DBI-1.631.tar.gz + DBI-1.634 + pathname: T/TI/TIMB/DBI-1.634.tar.gz provides: Bundle::DBI 12.008696 DBD::DBM 0.08 @@ -1320,15 +1351,15 @@ DISTRIBUTIONS DBD::ExampleP::db 12.014311 DBD::ExampleP::dr 12.014311 DBD::ExampleP::st 12.014311 - DBD::File 0.42 - DBD::File::DataSource::File 0.42 - DBD::File::DataSource::Stream 0.42 - DBD::File::Statement 0.42 - DBD::File::Table 0.42 - DBD::File::TableSource::FileSystem 0.42 - DBD::File::db 0.42 - DBD::File::dr 0.42 - DBD::File::st 0.42 + DBD::File 0.44 + DBD::File::DataSource::File 0.44 + DBD::File::DataSource::Stream 0.44 + DBD::File::Statement 0.44 + DBD::File::Table 0.44 + DBD::File::TableSource::FileSystem 0.44 + DBD::File::db 0.44 + DBD::File::dr 0.44 + DBD::File::st 0.44 DBD::Gofer 0.015327 DBD::Gofer::Policy::Base 0.010088 DBD::Gofer::Policy::classic 0.010088 @@ -1356,7 +1387,7 @@ DISTRIBUTIONS DBD::Sponge::dr 12.010003 DBD::Sponge::st 12.010003 DBDI 12.015129 - DBI 1.631 + DBI 1.634 DBI::Const::GetInfo::ANSI 2.008697 DBI::Const::GetInfo::ODBC 2.011374 DBI::Const::GetInfoReturn 2.008697 @@ -1397,15 +1428,15 @@ DISTRIBUTIONS DBI::SQL::Nano::Table_ 1.015544 DBI::Util::CacheMemory 0.010315 DBI::Util::_accessor 0.009479 - DBI::common 1.631 + DBI::common 1.634 requirements: ExtUtils::MakeMaker 6.48 Test::Simple 0.90 perl 5.008 - DBIx-Class-0.082801 - pathname: R/RI/RIBASUSHI/DBIx-Class-0.082801.tar.gz + DBIx-Class-0.082820 + pathname: R/RI/RIBASUSHI/DBIx-Class-0.082820.tar.gz provides: - DBIx::Class 0.082801 + DBIx::Class 0.082820 DBIx::Class::AccessorGroup undef DBIx::Class::Admin undef DBIx::Class::CDBICompat undef @@ -1509,10 +1540,10 @@ DISTRIBUTIONS List::Util 1.16 MRO::Compat 0.12 Module::Find 0.07 - Moo 1.004005 + Moo 2.000 Package::Stash 0.28 Path::Class 0.18 - SQL::Abstract 1.80 + SQL::Abstract 1.81 Scope::Guard 0.03 Sub::Name 0.04 Test::Deep 0.101 @@ -1523,30 +1554,30 @@ DISTRIBUTIONS Try::Tiny 0.07 namespace::clean 0.24 perl 5.008001 - Data-Compare-1.24 - pathname: D/DC/DCANTRELL/Data-Compare-1.24.tar.gz + Data-Compare-1.25 + pathname: D/DC/DCANTRELL/Data-Compare-1.25.tar.gz provides: - Data::Compare 1.24 + Data::Compare 1.25 Data::Compare::Plugins::Scalar::Properties 1 requirements: ExtUtils::MakeMaker 0 File::Find::Rule 0.1 Scalar::Util 0 - Data-DPath-0.50 - pathname: S/SC/SCHWIGON/Data-DPath-0.50.tar.gz + Data-DPath-0.55 + pathname: S/SC/SCHWIGON/Data-DPath-0.55.tar.gz provides: - Data::DPath 0.50 - Data::DPath::Attrs 0.50 - Data::DPath::Context 0.50 - Data::DPath::Filters 0.50 - Data::DPath::Path 0.50 - Data::DPath::Point 0.50 - Data::DPath::Step 0.50 + Data::DPath 0.55 + Data::DPath::Attrs 0.55 + Data::DPath::Context 0.55 + Data::DPath::Filters 0.55 + Data::DPath::Path 0.55 + Data::DPath::Point 0.55 + Data::DPath::Step 0.55 requirements: Class::XSAccessor 0 Class::XSAccessor::Array 0 Data::Dumper 0 - ExtUtils::MakeMaker 6.30 + ExtUtils::MakeMaker 0 Iterator::Util 0 List::MoreUtils 0 List::Util 0 @@ -1555,14 +1586,15 @@ DISTRIBUTIONS Scalar::Util 0 Sub::Exporter 0 Text::Balanced 2.02 - aliased 0 + aliased 0.33 constant 0 + perl 5.008 strict 0 warnings 0 - Data-Dump-1.22 - pathname: G/GA/GAAS/Data-Dump-1.22.tar.gz + Data-Dump-1.23 + pathname: G/GA/GAAS/Data-Dump-1.23.tar.gz provides: - Data::Dump 1.22 + Data::Dump 1.23 Data::Dump::FilterContext undef Data::Dump::Filtered undef Data::Dump::Trace 0.02 @@ -1601,11 +1633,11 @@ DISTRIBUTIONS Class::Accessor::Chained::Fast 0 Test::Exception 0 Test::More 0 - Data-Printer-0.35 - pathname: G/GA/GARU/Data-Printer-0.35.tar.gz + Data-Printer-0.36 + pathname: G/GA/GARU/Data-Printer-0.36.tar.gz provides: DDP undef - Data::Printer 0.35 + Data::Printer 0.36 Data::Printer::Filter undef Data::Printer::Filter::DB undef Data::Printer::Filter::DateTime undef @@ -1659,10 +1691,10 @@ DISTRIBUTIONS Sub::Exporter 0.979 strict 0 warnings 0 - Data-UUID-1.219 - pathname: R/RJ/RJBS/Data-UUID-1.219.tar.gz + Data-UUID-1.221 + pathname: R/RJ/RJBS/Data-UUID-1.221.tar.gz provides: - Data::UUID 1.219 + Data::UUID 1.221 requirements: Digest::MD5 0 ExtUtils::MakeMaker 0 @@ -1678,25 +1710,24 @@ DISTRIBUTIONS Task::Weaken 0 Tie::ToObject 0.01 namespace::clean 0.19 - DateTime-1.10 - pathname: D/DR/DROLSKY/DateTime-1.10.tar.gz - provides: - DateTime 1.10 - DateTime::Duration 1.10 - DateTime::Helpers 1.10 - DateTime::Infinite 1.10 - DateTime::Infinite::Future 1.10 - DateTime::Infinite::Past 1.10 - DateTime::LeapSecond 1.10 - inc::MyModuleBuild undef + DateTime-1.21 + pathname: D/DR/DROLSKY/DateTime-1.21.tar.gz + provides: + DateTime 1.21 + DateTime::Duration 1.21 + DateTime::Helpers 1.21 + DateTime::Infinite 1.21 + DateTime::LeapSecond 1.21 + DateTime::PP 1.21 + DateTime::PPExtra 1.21 requirements: Carp 0 DateTime::Locale 0.41 - DateTime::TimeZone 1.09 + DateTime::TimeZone 1.74 ExtUtils::CBuilder 0 - Module::Build 0.3601 + Module::Build 0.28 POSIX 0 - Params::Validate 0.76 + Params::Validate 1.03 Scalar::Util 0 Try::Tiny 0 XSLoader 0 @@ -1733,16 +1764,17 @@ DISTRIBUTIONS strict 0 vars 0 warnings 0 - DateTime-Format-Epoch-0.13 - pathname: C/CH/CHORNY/DateTime-Format-Epoch-0.13.tar.gz + DateTime-Format-Epoch-0.16 + pathname: C/CH/CHORNY/DateTime-Format-Epoch-0.16.tar.gz provides: - DateTime::Format::Epoch 0.13 + DateTime::Format::Epoch 0.16 DateTime::Format::Epoch::ActiveDirectory 0.13 DateTime::Format::Epoch::DotNet 0.13 DateTime::Format::Epoch::JD 0.13 DateTime::Format::Epoch::Lilian 0.13 DateTime::Format::Epoch::MJD 0.13 DateTime::Format::Epoch::MacOS 0.13 + DateTime::Format::Epoch::NTP 0.14 DateTime::Format::Epoch::RJD 0.13 DateTime::Format::Epoch::RataDie 0.13 DateTime::Format::Epoch::TAI64 0.13 @@ -1754,6 +1786,7 @@ DISTRIBUTIONS Params::Validate 0 Test::More 0 perl 5.00503 + warnings 0 DateTime-Format-ISO8601-0.08 pathname: J/JH/JHOBLITT/DateTime-Format-ISO8601-0.08.tar.gz provides: @@ -1761,931 +1794,429 @@ DISTRIBUTIONS requirements: DateTime 0.18 DateTime::Format::Builder 0.77 - DateTime-Format-RFC3339-v1.0.5 - pathname: I/IK/IKEGAMI/DateTime-Format-RFC3339-v1.0.5.tar.gz + DateTime-Format-RFC3339-v1.2.0 + pathname: I/IK/IKEGAMI/DateTime-Format-RFC3339-v1.2.0.tar.gz provides: - DateTime::Format::RFC3339 1.000005 + DateTime::Format::RFC3339 undef requirements: - DateTime 0 - ExtUtils::MakeMaker 0 - Test::More 0 - version 0 - DateTime-Format-Strptime-1.55 - pathname: D/DR/DROLSKY/DateTime-Format-Strptime-1.55.tar.gz + ExtUtils::MakeMaker 6.52 + DateTime-Format-Strptime-1.60 + pathname: D/DR/DROLSKY/DateTime-Format-Strptime-1.60.tar.gz provides: - DateTime::Format::Strptime 1.55 + DateTime::Format::Strptime 1.60 requirements: Carp 0 DateTime 1.00 DateTime::Locale 0.45 DateTime::TimeZone 0.79 Exporter 0 - ExtUtils::MakeMaker 6.30 - Params::Validate 0.64 + ExtUtils::MakeMaker 0 + Package::DeprecationManager 0 + Params::Validate 1.20 + Try::Tiny 0 + constant 0 strict 0 - vars 0 - DateTime-Locale-0.45 - pathname: D/DR/DROLSKY/DateTime-Locale-0.45.tar.gz + warnings 0 + DateTime-Locale-1.01 + pathname: D/DR/DROLSKY/DateTime-Locale-1.01.tar.gz provides: - DateTime::Locale 0.45 - DateTime::Locale::Base undef - DateTime::Locale::Catalog undef - DateTime::Locale::aa undef - DateTime::Locale::aa_DJ undef - DateTime::Locale::aa_ER undef - DateTime::Locale::aa_ER_SAAHO undef - DateTime::Locale::aa_ET undef - DateTime::Locale::af undef - DateTime::Locale::af_NA undef - DateTime::Locale::af_ZA undef - DateTime::Locale::ak undef - DateTime::Locale::ak_GH undef - DateTime::Locale::am undef - DateTime::Locale::am_ET undef - DateTime::Locale::ar undef - DateTime::Locale::ar_AE undef - DateTime::Locale::ar_BH undef - DateTime::Locale::ar_DZ undef - DateTime::Locale::ar_EG undef - DateTime::Locale::ar_IQ undef - DateTime::Locale::ar_JO undef - DateTime::Locale::ar_KW undef - DateTime::Locale::ar_LB undef - DateTime::Locale::ar_LY undef - DateTime::Locale::ar_MA undef - DateTime::Locale::ar_OM undef - DateTime::Locale::ar_QA undef - DateTime::Locale::ar_SA undef - DateTime::Locale::ar_SD undef - DateTime::Locale::ar_SY undef - DateTime::Locale::ar_TN undef - DateTime::Locale::ar_YE undef - DateTime::Locale::as undef - DateTime::Locale::as_IN undef - DateTime::Locale::az undef - DateTime::Locale::az_AZ undef - DateTime::Locale::az_Cyrl undef - DateTime::Locale::az_Cyrl_AZ undef - DateTime::Locale::az_Latn undef - DateTime::Locale::az_Latn_AZ undef - DateTime::Locale::be undef - DateTime::Locale::be_BY undef - DateTime::Locale::bg undef - DateTime::Locale::bg_BG undef - DateTime::Locale::bn undef - DateTime::Locale::bn_BD undef - DateTime::Locale::bn_IN undef - DateTime::Locale::bo undef - DateTime::Locale::bo_CN undef - DateTime::Locale::bo_IN undef - DateTime::Locale::bs undef - DateTime::Locale::bs_BA undef - DateTime::Locale::byn undef - DateTime::Locale::byn_ER undef - DateTime::Locale::ca undef - DateTime::Locale::ca_ES undef - DateTime::Locale::cch undef - DateTime::Locale::cch_NG undef - DateTime::Locale::cop undef - DateTime::Locale::cs undef - DateTime::Locale::cs_CZ undef - DateTime::Locale::cy undef - DateTime::Locale::cy_GB undef - DateTime::Locale::da undef - DateTime::Locale::da_DK undef - DateTime::Locale::de undef - DateTime::Locale::de_AT undef - DateTime::Locale::de_BE undef - DateTime::Locale::de_CH undef - DateTime::Locale::de_DE undef - DateTime::Locale::de_LI undef - DateTime::Locale::de_LU undef - DateTime::Locale::dv undef - DateTime::Locale::dv_MV undef - DateTime::Locale::dz undef - DateTime::Locale::dz_BT undef - DateTime::Locale::ee undef - DateTime::Locale::ee_GH undef - DateTime::Locale::ee_TG undef - DateTime::Locale::el undef - DateTime::Locale::el_CY undef - DateTime::Locale::el_GR undef - DateTime::Locale::el_POLYTON undef - DateTime::Locale::en undef - DateTime::Locale::en_AS undef - DateTime::Locale::en_AU undef - DateTime::Locale::en_BE undef - DateTime::Locale::en_BW undef - DateTime::Locale::en_BZ undef - DateTime::Locale::en_CA undef - DateTime::Locale::en_Dsrt undef - DateTime::Locale::en_Dsrt_US undef - DateTime::Locale::en_GB undef - DateTime::Locale::en_GU undef - DateTime::Locale::en_HK undef - DateTime::Locale::en_IE undef - DateTime::Locale::en_IN undef - DateTime::Locale::en_JM undef - DateTime::Locale::en_MH undef - DateTime::Locale::en_MP undef - DateTime::Locale::en_MT undef - DateTime::Locale::en_NA undef - DateTime::Locale::en_NZ undef - DateTime::Locale::en_PH undef - DateTime::Locale::en_PK undef - DateTime::Locale::en_SG undef - DateTime::Locale::en_Shaw undef - DateTime::Locale::en_TT undef - DateTime::Locale::en_UM undef - DateTime::Locale::en_US undef - DateTime::Locale::en_US_POSIX undef - DateTime::Locale::en_VI undef - DateTime::Locale::en_ZA undef - DateTime::Locale::en_ZW undef - DateTime::Locale::eo undef - DateTime::Locale::es undef - DateTime::Locale::es_AR undef - DateTime::Locale::es_BO undef - DateTime::Locale::es_CL undef - DateTime::Locale::es_CO undef - DateTime::Locale::es_CR undef - DateTime::Locale::es_DO undef - DateTime::Locale::es_EC undef - DateTime::Locale::es_ES undef - DateTime::Locale::es_GT undef - DateTime::Locale::es_HN undef - DateTime::Locale::es_MX undef - DateTime::Locale::es_NI undef - DateTime::Locale::es_PA undef - DateTime::Locale::es_PE undef - DateTime::Locale::es_PR undef - DateTime::Locale::es_PY undef - DateTime::Locale::es_SV undef - DateTime::Locale::es_US undef - DateTime::Locale::es_UY undef - DateTime::Locale::es_VE undef - DateTime::Locale::et undef - DateTime::Locale::et_EE undef - DateTime::Locale::eu undef - DateTime::Locale::eu_ES undef - DateTime::Locale::fa undef - DateTime::Locale::fa_AF undef - DateTime::Locale::fa_IR undef - DateTime::Locale::fi undef - DateTime::Locale::fi_FI undef - DateTime::Locale::fil undef - DateTime::Locale::fil_PH undef - DateTime::Locale::fo undef - DateTime::Locale::fo_FO undef - DateTime::Locale::fr undef - DateTime::Locale::fr_BE undef - DateTime::Locale::fr_CA undef - DateTime::Locale::fr_CH undef - DateTime::Locale::fr_FR undef - DateTime::Locale::fr_LU undef - DateTime::Locale::fr_MC undef - DateTime::Locale::fr_SN undef - DateTime::Locale::fur undef - DateTime::Locale::fur_IT undef - DateTime::Locale::ga undef - DateTime::Locale::ga_IE undef - DateTime::Locale::gaa undef - DateTime::Locale::gaa_GH undef - DateTime::Locale::gez undef - DateTime::Locale::gez_ER undef - DateTime::Locale::gez_ET undef - DateTime::Locale::gl undef - DateTime::Locale::gl_ES undef - DateTime::Locale::gsw undef - DateTime::Locale::gsw_CH undef - DateTime::Locale::gu undef - DateTime::Locale::gu_IN undef - DateTime::Locale::gv undef - DateTime::Locale::gv_GB undef - DateTime::Locale::ha undef - DateTime::Locale::ha_Arab undef - DateTime::Locale::ha_Arab_NG undef - DateTime::Locale::ha_Arab_SD undef - DateTime::Locale::ha_GH undef - DateTime::Locale::ha_Latn undef - DateTime::Locale::ha_Latn_GH undef - DateTime::Locale::ha_Latn_NE undef - DateTime::Locale::ha_Latn_NG undef - DateTime::Locale::ha_NE undef - DateTime::Locale::ha_NG undef - DateTime::Locale::ha_SD undef - DateTime::Locale::haw undef - DateTime::Locale::haw_US undef - DateTime::Locale::he undef - DateTime::Locale::he_IL undef - DateTime::Locale::hi undef - DateTime::Locale::hi_IN undef - DateTime::Locale::hr undef - DateTime::Locale::hr_HR undef - DateTime::Locale::hu undef - DateTime::Locale::hu_HU undef - DateTime::Locale::hy undef - DateTime::Locale::hy_AM undef - DateTime::Locale::hy_AM_REVISED undef - DateTime::Locale::ia undef - DateTime::Locale::id undef - DateTime::Locale::id_ID undef - DateTime::Locale::ig undef - DateTime::Locale::ig_NG undef - DateTime::Locale::ii undef - DateTime::Locale::ii_CN undef - DateTime::Locale::is undef - DateTime::Locale::is_IS undef - DateTime::Locale::it undef - DateTime::Locale::it_CH undef - DateTime::Locale::it_IT undef - DateTime::Locale::iu undef - DateTime::Locale::ja undef - DateTime::Locale::ja_JP undef - DateTime::Locale::ka undef - DateTime::Locale::ka_GE undef - DateTime::Locale::kaj undef - DateTime::Locale::kaj_NG undef - DateTime::Locale::kam undef - DateTime::Locale::kam_KE undef - DateTime::Locale::kcg undef - DateTime::Locale::kcg_NG undef - DateTime::Locale::kfo undef - DateTime::Locale::kfo_CI undef - DateTime::Locale::kk undef - DateTime::Locale::kk_Cyrl undef - DateTime::Locale::kk_Cyrl_KZ undef - DateTime::Locale::kk_KZ undef - DateTime::Locale::kl undef - DateTime::Locale::kl_GL undef - DateTime::Locale::km undef - DateTime::Locale::km_KH undef - DateTime::Locale::kn undef - DateTime::Locale::kn_IN undef - DateTime::Locale::ko undef - DateTime::Locale::ko_KR undef - DateTime::Locale::kok undef - DateTime::Locale::kok_IN undef - DateTime::Locale::kpe undef - DateTime::Locale::kpe_GN undef - DateTime::Locale::kpe_LR undef - DateTime::Locale::ku undef - DateTime::Locale::ku_Arab undef - DateTime::Locale::ku_Arab_IQ undef - DateTime::Locale::ku_Arab_IR undef - DateTime::Locale::ku_Arab_SY undef - DateTime::Locale::ku_IQ undef - DateTime::Locale::ku_IR undef - DateTime::Locale::ku_Latn undef - DateTime::Locale::ku_Latn_TR undef - DateTime::Locale::ku_SY undef - DateTime::Locale::ku_TR undef - DateTime::Locale::kw undef - DateTime::Locale::kw_GB undef - DateTime::Locale::ky undef - DateTime::Locale::ky_KG undef - DateTime::Locale::ln undef - DateTime::Locale::ln_CD undef - DateTime::Locale::ln_CG undef - DateTime::Locale::lo undef - DateTime::Locale::lo_LA undef - DateTime::Locale::lt undef - DateTime::Locale::lt_LT undef - DateTime::Locale::lv undef - DateTime::Locale::lv_LV undef - DateTime::Locale::mk undef - DateTime::Locale::mk_MK undef - DateTime::Locale::ml undef - DateTime::Locale::ml_IN undef - DateTime::Locale::mn undef - DateTime::Locale::mn_CN undef - DateTime::Locale::mn_Cyrl undef - DateTime::Locale::mn_Cyrl_MN undef - DateTime::Locale::mn_MN undef - DateTime::Locale::mn_Mong undef - DateTime::Locale::mn_Mong_CN undef - DateTime::Locale::mo undef - DateTime::Locale::mr undef - DateTime::Locale::mr_IN undef - DateTime::Locale::ms undef - DateTime::Locale::ms_BN undef - DateTime::Locale::ms_MY undef - DateTime::Locale::mt undef - DateTime::Locale::mt_MT undef - DateTime::Locale::my undef - DateTime::Locale::my_MM undef - DateTime::Locale::nb undef - DateTime::Locale::nb_NO undef - DateTime::Locale::nds undef - DateTime::Locale::nds_DE undef - DateTime::Locale::ne undef - DateTime::Locale::ne_IN undef - DateTime::Locale::ne_NP undef - DateTime::Locale::nl undef - DateTime::Locale::nl_BE undef - DateTime::Locale::nl_NL undef - DateTime::Locale::nn undef - DateTime::Locale::nn_NO undef - DateTime::Locale::no undef - DateTime::Locale::nr undef - DateTime::Locale::nr_ZA undef - DateTime::Locale::nso undef - DateTime::Locale::nso_ZA undef - DateTime::Locale::ny undef - DateTime::Locale::ny_MW undef - DateTime::Locale::oc undef - DateTime::Locale::oc_FR undef - DateTime::Locale::om undef - DateTime::Locale::om_ET undef - DateTime::Locale::om_KE undef - DateTime::Locale::or undef - DateTime::Locale::or_IN undef - DateTime::Locale::pa undef - DateTime::Locale::pa_Arab undef - DateTime::Locale::pa_Arab_PK undef - DateTime::Locale::pa_Guru undef - DateTime::Locale::pa_Guru_IN undef - DateTime::Locale::pa_IN undef - DateTime::Locale::pa_PK undef - DateTime::Locale::pl undef - DateTime::Locale::pl_PL undef - DateTime::Locale::ps undef - DateTime::Locale::ps_AF undef - DateTime::Locale::pt undef - DateTime::Locale::pt_BR undef - DateTime::Locale::pt_PT undef - DateTime::Locale::ro undef - DateTime::Locale::ro_MD undef - DateTime::Locale::ro_RO undef - DateTime::Locale::root undef - DateTime::Locale::ru undef - DateTime::Locale::ru_RU undef - DateTime::Locale::ru_UA undef - DateTime::Locale::rw undef - DateTime::Locale::rw_RW undef - DateTime::Locale::sa undef - DateTime::Locale::sa_IN undef - DateTime::Locale::se undef - DateTime::Locale::se_FI undef - DateTime::Locale::se_NO undef - DateTime::Locale::sh undef - DateTime::Locale::sh_BA undef - DateTime::Locale::sh_CS undef - DateTime::Locale::sh_YU undef - DateTime::Locale::si undef - DateTime::Locale::si_LK undef - DateTime::Locale::sid undef - DateTime::Locale::sid_ET undef - DateTime::Locale::sk undef - DateTime::Locale::sk_SK undef - DateTime::Locale::sl undef - DateTime::Locale::sl_SI undef - DateTime::Locale::so undef - DateTime::Locale::so_DJ undef - DateTime::Locale::so_ET undef - DateTime::Locale::so_KE undef - DateTime::Locale::so_SO undef - DateTime::Locale::sq undef - DateTime::Locale::sq_AL undef - DateTime::Locale::sr undef - DateTime::Locale::sr_BA undef - DateTime::Locale::sr_CS undef - DateTime::Locale::sr_Cyrl undef - DateTime::Locale::sr_Cyrl_BA undef - DateTime::Locale::sr_Cyrl_CS undef - DateTime::Locale::sr_Cyrl_ME undef - DateTime::Locale::sr_Cyrl_RS undef - DateTime::Locale::sr_Cyrl_YU undef - DateTime::Locale::sr_Latn undef - DateTime::Locale::sr_Latn_BA undef - DateTime::Locale::sr_Latn_CS undef - DateTime::Locale::sr_Latn_ME undef - DateTime::Locale::sr_Latn_RS undef - DateTime::Locale::sr_Latn_YU undef - DateTime::Locale::sr_ME undef - DateTime::Locale::sr_RS undef - DateTime::Locale::sr_YU undef - DateTime::Locale::ss undef - DateTime::Locale::ss_SZ undef - DateTime::Locale::ss_ZA undef - DateTime::Locale::st undef - DateTime::Locale::st_LS undef - DateTime::Locale::st_ZA undef - DateTime::Locale::sv undef - DateTime::Locale::sv_FI undef - DateTime::Locale::sv_SE undef - DateTime::Locale::sw undef - DateTime::Locale::sw_KE undef - DateTime::Locale::sw_TZ undef - DateTime::Locale::syr undef - DateTime::Locale::syr_SY undef - DateTime::Locale::ta undef - DateTime::Locale::ta_IN undef - DateTime::Locale::te undef - DateTime::Locale::te_IN undef - DateTime::Locale::tg undef - DateTime::Locale::tg_Cyrl undef - DateTime::Locale::tg_Cyrl_TJ undef - DateTime::Locale::tg_TJ undef - DateTime::Locale::th undef - DateTime::Locale::th_TH undef - DateTime::Locale::ti undef - DateTime::Locale::ti_ER undef - DateTime::Locale::ti_ET undef - DateTime::Locale::tig undef - DateTime::Locale::tig_ER undef - DateTime::Locale::tl undef - DateTime::Locale::tn undef - DateTime::Locale::tn_ZA undef - DateTime::Locale::to undef - DateTime::Locale::to_TO undef - DateTime::Locale::tr undef - DateTime::Locale::tr_TR undef - DateTime::Locale::trv undef - DateTime::Locale::trv_TW undef - DateTime::Locale::ts undef - DateTime::Locale::ts_ZA undef - DateTime::Locale::tt undef - DateTime::Locale::tt_RU undef - DateTime::Locale::ug undef - DateTime::Locale::ug_Arab undef - DateTime::Locale::ug_Arab_CN undef - DateTime::Locale::ug_CN undef - DateTime::Locale::uk undef - DateTime::Locale::uk_UA undef - DateTime::Locale::ur undef - DateTime::Locale::ur_IN undef - DateTime::Locale::ur_PK undef - DateTime::Locale::uz undef - DateTime::Locale::uz_AF undef - DateTime::Locale::uz_Arab undef - DateTime::Locale::uz_Arab_AF undef - DateTime::Locale::uz_Cyrl undef - DateTime::Locale::uz_Cyrl_UZ undef - DateTime::Locale::uz_Latn undef - DateTime::Locale::uz_Latn_UZ undef - DateTime::Locale::uz_UZ undef - DateTime::Locale::ve undef - DateTime::Locale::ve_ZA undef - DateTime::Locale::vi undef - DateTime::Locale::vi_VN undef - DateTime::Locale::wal undef - DateTime::Locale::wal_ET undef - DateTime::Locale::wo undef - DateTime::Locale::wo_Latn undef - DateTime::Locale::wo_Latn_SN undef - DateTime::Locale::wo_SN undef - DateTime::Locale::xh undef - DateTime::Locale::xh_ZA undef - DateTime::Locale::yo undef - DateTime::Locale::yo_NG undef - DateTime::Locale::zh undef - DateTime::Locale::zh_CN undef - DateTime::Locale::zh_HK undef - DateTime::Locale::zh_Hans undef - DateTime::Locale::zh_Hans_CN undef - DateTime::Locale::zh_Hans_HK undef - DateTime::Locale::zh_Hans_MO undef - DateTime::Locale::zh_Hans_SG undef - DateTime::Locale::zh_Hant undef - DateTime::Locale::zh_Hant_HK undef - DateTime::Locale::zh_Hant_MO undef - DateTime::Locale::zh_Hant_TW undef - DateTime::Locale::zh_MO undef - DateTime::Locale::zh_SG undef - DateTime::Locale::zh_TW undef - DateTime::Locale::zu undef - DateTime::Locale::zu_ZA undef + DateTime::Locale 1.01 + DateTime::Locale::Base 1.01 + DateTime::Locale::Catalog 1.01 + DateTime::Locale::Data 1.01 + DateTime::Locale::FromData 1.01 + DateTime::Locale::Util 1.01 requirements: + Carp 0 + Dist::CheckConflicts 0.02 + Exporter 0 + ExtUtils::MakeMaker 0 List::MoreUtils 0 - Module::Build 0 - Params::Validate 0.91 - perl 5.006 - DateTime-TimeZone-1.70 - pathname: D/DR/DROLSKY/DateTime-TimeZone-1.70.tar.gz - provides: - DateTime::TimeZone 1.70 - DateTime::TimeZone::Africa::Abidjan 1.70 - DateTime::TimeZone::Africa::Accra 1.70 - DateTime::TimeZone::Africa::Addis_Ababa 1.70 - DateTime::TimeZone::Africa::Algiers 1.70 - DateTime::TimeZone::Africa::Asmara 1.70 - DateTime::TimeZone::Africa::Bamako 1.70 - DateTime::TimeZone::Africa::Bangui 1.70 - DateTime::TimeZone::Africa::Banjul 1.70 - DateTime::TimeZone::Africa::Bissau 1.70 - DateTime::TimeZone::Africa::Blantyre 1.70 - DateTime::TimeZone::Africa::Brazzaville 1.70 - DateTime::TimeZone::Africa::Bujumbura 1.70 - DateTime::TimeZone::Africa::Cairo 1.70 - DateTime::TimeZone::Africa::Casablanca 1.70 - DateTime::TimeZone::Africa::Ceuta 1.70 - DateTime::TimeZone::Africa::Conakry 1.70 - DateTime::TimeZone::Africa::Dakar 1.70 - DateTime::TimeZone::Africa::Dar_es_Salaam 1.70 - DateTime::TimeZone::Africa::Djibouti 1.70 - DateTime::TimeZone::Africa::Douala 1.70 - DateTime::TimeZone::Africa::El_Aaiun 1.70 - DateTime::TimeZone::Africa::Freetown 1.70 - DateTime::TimeZone::Africa::Gaborone 1.70 - DateTime::TimeZone::Africa::Harare 1.70 - DateTime::TimeZone::Africa::Johannesburg 1.70 - DateTime::TimeZone::Africa::Kampala 1.70 - DateTime::TimeZone::Africa::Khartoum 1.70 - DateTime::TimeZone::Africa::Kigali 1.70 - DateTime::TimeZone::Africa::Kinshasa 1.70 - DateTime::TimeZone::Africa::Lagos 1.70 - DateTime::TimeZone::Africa::Libreville 1.70 - DateTime::TimeZone::Africa::Lome 1.70 - DateTime::TimeZone::Africa::Luanda 1.70 - DateTime::TimeZone::Africa::Lubumbashi 1.70 - DateTime::TimeZone::Africa::Lusaka 1.70 - DateTime::TimeZone::Africa::Malabo 1.70 - DateTime::TimeZone::Africa::Maputo 1.70 - DateTime::TimeZone::Africa::Maseru 1.70 - DateTime::TimeZone::Africa::Mbabane 1.70 - DateTime::TimeZone::Africa::Mogadishu 1.70 - DateTime::TimeZone::Africa::Monrovia 1.70 - DateTime::TimeZone::Africa::Nairobi 1.70 - DateTime::TimeZone::Africa::Ndjamena 1.70 - DateTime::TimeZone::Africa::Niamey 1.70 - DateTime::TimeZone::Africa::Nouakchott 1.70 - DateTime::TimeZone::Africa::Ouagadougou 1.70 - DateTime::TimeZone::Africa::Porto_Novo 1.70 - DateTime::TimeZone::Africa::Sao_Tome 1.70 - DateTime::TimeZone::Africa::Tripoli 1.70 - DateTime::TimeZone::Africa::Tunis 1.70 - DateTime::TimeZone::Africa::Windhoek 1.70 - DateTime::TimeZone::America::Adak 1.70 - DateTime::TimeZone::America::Anchorage 1.70 - DateTime::TimeZone::America::Antigua 1.70 - DateTime::TimeZone::America::Araguaina 1.70 - DateTime::TimeZone::America::Argentina::Buenos_Aires 1.70 - DateTime::TimeZone::America::Argentina::Catamarca 1.70 - DateTime::TimeZone::America::Argentina::Cordoba 1.70 - DateTime::TimeZone::America::Argentina::Jujuy 1.70 - DateTime::TimeZone::America::Argentina::La_Rioja 1.70 - DateTime::TimeZone::America::Argentina::Mendoza 1.70 - DateTime::TimeZone::America::Argentina::Rio_Gallegos 1.70 - DateTime::TimeZone::America::Argentina::Salta 1.70 - DateTime::TimeZone::America::Argentina::San_Juan 1.70 - DateTime::TimeZone::America::Argentina::San_Luis 1.70 - DateTime::TimeZone::America::Argentina::Tucuman 1.70 - DateTime::TimeZone::America::Argentina::Ushuaia 1.70 - DateTime::TimeZone::America::Asuncion 1.70 - DateTime::TimeZone::America::Atikokan 1.70 - DateTime::TimeZone::America::Bahia 1.70 - DateTime::TimeZone::America::Bahia_Banderas 1.70 - DateTime::TimeZone::America::Barbados 1.70 - DateTime::TimeZone::America::Belem 1.70 - DateTime::TimeZone::America::Belize 1.70 - DateTime::TimeZone::America::Blanc_Sablon 1.70 - DateTime::TimeZone::America::Boa_Vista 1.70 - DateTime::TimeZone::America::Bogota 1.70 - DateTime::TimeZone::America::Boise 1.70 - DateTime::TimeZone::America::Cambridge_Bay 1.70 - DateTime::TimeZone::America::Campo_Grande 1.70 - DateTime::TimeZone::America::Cancun 1.70 - DateTime::TimeZone::America::Caracas 1.70 - DateTime::TimeZone::America::Cayenne 1.70 - DateTime::TimeZone::America::Cayman 1.70 - DateTime::TimeZone::America::Chicago 1.70 - DateTime::TimeZone::America::Chihuahua 1.70 - DateTime::TimeZone::America::Costa_Rica 1.70 - DateTime::TimeZone::America::Creston 1.70 - DateTime::TimeZone::America::Cuiaba 1.70 - DateTime::TimeZone::America::Curacao 1.70 - DateTime::TimeZone::America::Danmarkshavn 1.70 - DateTime::TimeZone::America::Dawson 1.70 - DateTime::TimeZone::America::Dawson_Creek 1.70 - DateTime::TimeZone::America::Denver 1.70 - DateTime::TimeZone::America::Detroit 1.70 - DateTime::TimeZone::America::Edmonton 1.70 - DateTime::TimeZone::America::Eirunepe 1.70 - DateTime::TimeZone::America::El_Salvador 1.70 - DateTime::TimeZone::America::Fortaleza 1.70 - DateTime::TimeZone::America::Glace_Bay 1.70 - DateTime::TimeZone::America::Godthab 1.70 - DateTime::TimeZone::America::Goose_Bay 1.70 - DateTime::TimeZone::America::Grand_Turk 1.70 - DateTime::TimeZone::America::Guatemala 1.70 - DateTime::TimeZone::America::Guayaquil 1.70 - DateTime::TimeZone::America::Guyana 1.70 - DateTime::TimeZone::America::Halifax 1.70 - DateTime::TimeZone::America::Havana 1.70 - DateTime::TimeZone::America::Hermosillo 1.70 - DateTime::TimeZone::America::Indiana::Indianapolis 1.70 - DateTime::TimeZone::America::Indiana::Knox 1.70 - DateTime::TimeZone::America::Indiana::Marengo 1.70 - DateTime::TimeZone::America::Indiana::Petersburg 1.70 - DateTime::TimeZone::America::Indiana::Tell_City 1.70 - DateTime::TimeZone::America::Indiana::Vevay 1.70 - DateTime::TimeZone::America::Indiana::Vincennes 1.70 - DateTime::TimeZone::America::Indiana::Winamac 1.70 - DateTime::TimeZone::America::Inuvik 1.70 - DateTime::TimeZone::America::Iqaluit 1.70 - DateTime::TimeZone::America::Jamaica 1.70 - DateTime::TimeZone::America::Juneau 1.70 - DateTime::TimeZone::America::Kentucky::Louisville 1.70 - DateTime::TimeZone::America::Kentucky::Monticello 1.70 - DateTime::TimeZone::America::La_Paz 1.70 - DateTime::TimeZone::America::Lima 1.70 - DateTime::TimeZone::America::Los_Angeles 1.70 - DateTime::TimeZone::America::Maceio 1.70 - DateTime::TimeZone::America::Managua 1.70 - DateTime::TimeZone::America::Manaus 1.70 - DateTime::TimeZone::America::Martinique 1.70 - DateTime::TimeZone::America::Matamoros 1.70 - DateTime::TimeZone::America::Mazatlan 1.70 - DateTime::TimeZone::America::Menominee 1.70 - DateTime::TimeZone::America::Merida 1.70 - DateTime::TimeZone::America::Metlakatla 1.70 - DateTime::TimeZone::America::Mexico_City 1.70 - DateTime::TimeZone::America::Miquelon 1.70 - DateTime::TimeZone::America::Moncton 1.70 - DateTime::TimeZone::America::Monterrey 1.70 - DateTime::TimeZone::America::Montevideo 1.70 - DateTime::TimeZone::America::Montreal 1.70 - DateTime::TimeZone::America::Nassau 1.70 - DateTime::TimeZone::America::New_York 1.70 - DateTime::TimeZone::America::Nipigon 1.70 - DateTime::TimeZone::America::Nome 1.70 - DateTime::TimeZone::America::Noronha 1.70 - DateTime::TimeZone::America::North_Dakota::Beulah 1.70 - DateTime::TimeZone::America::North_Dakota::Center 1.70 - DateTime::TimeZone::America::North_Dakota::New_Salem 1.70 - DateTime::TimeZone::America::Ojinaga 1.70 - DateTime::TimeZone::America::Panama 1.70 - DateTime::TimeZone::America::Pangnirtung 1.70 - DateTime::TimeZone::America::Paramaribo 1.70 - DateTime::TimeZone::America::Phoenix 1.70 - DateTime::TimeZone::America::Port_au_Prince 1.70 - DateTime::TimeZone::America::Port_of_Spain 1.70 - DateTime::TimeZone::America::Porto_Velho 1.70 - DateTime::TimeZone::America::Puerto_Rico 1.70 - DateTime::TimeZone::America::Rainy_River 1.70 - DateTime::TimeZone::America::Rankin_Inlet 1.70 - DateTime::TimeZone::America::Recife 1.70 - DateTime::TimeZone::America::Regina 1.70 - DateTime::TimeZone::America::Resolute 1.70 - DateTime::TimeZone::America::Rio_Branco 1.70 - DateTime::TimeZone::America::Santa_Isabel 1.70 - DateTime::TimeZone::America::Santarem 1.70 - DateTime::TimeZone::America::Santiago 1.70 - DateTime::TimeZone::America::Santo_Domingo 1.70 - DateTime::TimeZone::America::Sao_Paulo 1.70 - DateTime::TimeZone::America::Scoresbysund 1.70 - DateTime::TimeZone::America::Sitka 1.70 - DateTime::TimeZone::America::St_Johns 1.70 - DateTime::TimeZone::America::Swift_Current 1.70 - DateTime::TimeZone::America::Tegucigalpa 1.70 - DateTime::TimeZone::America::Thule 1.70 - DateTime::TimeZone::America::Thunder_Bay 1.70 - DateTime::TimeZone::America::Tijuana 1.70 - DateTime::TimeZone::America::Toronto 1.70 - DateTime::TimeZone::America::Vancouver 1.70 - DateTime::TimeZone::America::Whitehorse 1.70 - DateTime::TimeZone::America::Winnipeg 1.70 - DateTime::TimeZone::America::Yakutat 1.70 - DateTime::TimeZone::America::Yellowknife 1.70 - DateTime::TimeZone::Antarctica::Casey 1.70 - DateTime::TimeZone::Antarctica::Davis 1.70 - DateTime::TimeZone::Antarctica::DumontDUrville 1.70 - DateTime::TimeZone::Antarctica::Macquarie 1.70 - DateTime::TimeZone::Antarctica::Mawson 1.70 - DateTime::TimeZone::Antarctica::Palmer 1.70 - DateTime::TimeZone::Antarctica::Rothera 1.70 - DateTime::TimeZone::Antarctica::Syowa 1.70 - DateTime::TimeZone::Antarctica::Troll 1.70 - DateTime::TimeZone::Antarctica::Vostok 1.70 - DateTime::TimeZone::Asia::Aden 1.70 - DateTime::TimeZone::Asia::Almaty 1.70 - DateTime::TimeZone::Asia::Amman 1.70 - DateTime::TimeZone::Asia::Anadyr 1.70 - DateTime::TimeZone::Asia::Aqtau 1.70 - DateTime::TimeZone::Asia::Aqtobe 1.70 - DateTime::TimeZone::Asia::Ashgabat 1.70 - DateTime::TimeZone::Asia::Baghdad 1.70 - DateTime::TimeZone::Asia::Bahrain 1.70 - DateTime::TimeZone::Asia::Baku 1.70 - DateTime::TimeZone::Asia::Bangkok 1.70 - DateTime::TimeZone::Asia::Beirut 1.70 - DateTime::TimeZone::Asia::Bishkek 1.70 - DateTime::TimeZone::Asia::Brunei 1.70 - DateTime::TimeZone::Asia::Choibalsan 1.70 - DateTime::TimeZone::Asia::Chongqing 1.70 - DateTime::TimeZone::Asia::Colombo 1.70 - DateTime::TimeZone::Asia::Damascus 1.70 - DateTime::TimeZone::Asia::Dhaka 1.70 - DateTime::TimeZone::Asia::Dili 1.70 - DateTime::TimeZone::Asia::Dubai 1.70 - DateTime::TimeZone::Asia::Dushanbe 1.70 - DateTime::TimeZone::Asia::Gaza 1.70 - DateTime::TimeZone::Asia::Harbin 1.70 - DateTime::TimeZone::Asia::Hebron 1.70 - DateTime::TimeZone::Asia::Ho_Chi_Minh 1.70 - DateTime::TimeZone::Asia::Hong_Kong 1.70 - DateTime::TimeZone::Asia::Hovd 1.70 - DateTime::TimeZone::Asia::Irkutsk 1.70 - DateTime::TimeZone::Asia::Jakarta 1.70 - DateTime::TimeZone::Asia::Jayapura 1.70 - DateTime::TimeZone::Asia::Jerusalem 1.70 - DateTime::TimeZone::Asia::Kabul 1.70 - DateTime::TimeZone::Asia::Kamchatka 1.70 - DateTime::TimeZone::Asia::Karachi 1.70 - DateTime::TimeZone::Asia::Kashgar 1.70 - DateTime::TimeZone::Asia::Kathmandu 1.70 - DateTime::TimeZone::Asia::Khandyga 1.70 - DateTime::TimeZone::Asia::Kolkata 1.70 - DateTime::TimeZone::Asia::Krasnoyarsk 1.70 - DateTime::TimeZone::Asia::Kuala_Lumpur 1.70 - DateTime::TimeZone::Asia::Kuching 1.70 - DateTime::TimeZone::Asia::Kuwait 1.70 - DateTime::TimeZone::Asia::Macau 1.70 - DateTime::TimeZone::Asia::Magadan 1.70 - DateTime::TimeZone::Asia::Makassar 1.70 - DateTime::TimeZone::Asia::Manila 1.70 - DateTime::TimeZone::Asia::Muscat 1.70 - DateTime::TimeZone::Asia::Nicosia 1.70 - DateTime::TimeZone::Asia::Novokuznetsk 1.70 - DateTime::TimeZone::Asia::Novosibirsk 1.70 - DateTime::TimeZone::Asia::Omsk 1.70 - DateTime::TimeZone::Asia::Oral 1.70 - DateTime::TimeZone::Asia::Phnom_Penh 1.70 - DateTime::TimeZone::Asia::Pontianak 1.70 - DateTime::TimeZone::Asia::Pyongyang 1.70 - DateTime::TimeZone::Asia::Qatar 1.70 - DateTime::TimeZone::Asia::Qyzylorda 1.70 - DateTime::TimeZone::Asia::Rangoon 1.70 - DateTime::TimeZone::Asia::Riyadh 1.70 - DateTime::TimeZone::Asia::Sakhalin 1.70 - DateTime::TimeZone::Asia::Samarkand 1.70 - DateTime::TimeZone::Asia::Seoul 1.70 - DateTime::TimeZone::Asia::Shanghai 1.70 - DateTime::TimeZone::Asia::Singapore 1.70 - DateTime::TimeZone::Asia::Taipei 1.70 - DateTime::TimeZone::Asia::Tashkent 1.70 - DateTime::TimeZone::Asia::Tbilisi 1.70 - DateTime::TimeZone::Asia::Tehran 1.70 - DateTime::TimeZone::Asia::Thimphu 1.70 - DateTime::TimeZone::Asia::Tokyo 1.70 - DateTime::TimeZone::Asia::Ulaanbaatar 1.70 - DateTime::TimeZone::Asia::Urumqi 1.70 - DateTime::TimeZone::Asia::Ust_Nera 1.70 - DateTime::TimeZone::Asia::Vientiane 1.70 - DateTime::TimeZone::Asia::Vladivostok 1.70 - DateTime::TimeZone::Asia::Yakutsk 1.70 - DateTime::TimeZone::Asia::Yekaterinburg 1.70 - DateTime::TimeZone::Asia::Yerevan 1.70 - DateTime::TimeZone::Atlantic::Azores 1.70 - DateTime::TimeZone::Atlantic::Bermuda 1.70 - DateTime::TimeZone::Atlantic::Canary 1.70 - DateTime::TimeZone::Atlantic::Cape_Verde 1.70 - DateTime::TimeZone::Atlantic::Faroe 1.70 - DateTime::TimeZone::Atlantic::Madeira 1.70 - DateTime::TimeZone::Atlantic::Reykjavik 1.70 - DateTime::TimeZone::Atlantic::South_Georgia 1.70 - DateTime::TimeZone::Atlantic::St_Helena 1.70 - DateTime::TimeZone::Atlantic::Stanley 1.70 - DateTime::TimeZone::Australia::Adelaide 1.70 - DateTime::TimeZone::Australia::Brisbane 1.70 - DateTime::TimeZone::Australia::Broken_Hill 1.70 - DateTime::TimeZone::Australia::Currie 1.70 - DateTime::TimeZone::Australia::Darwin 1.70 - DateTime::TimeZone::Australia::Eucla 1.70 - DateTime::TimeZone::Australia::Hobart 1.70 - DateTime::TimeZone::Australia::Lindeman 1.70 - DateTime::TimeZone::Australia::Lord_Howe 1.70 - DateTime::TimeZone::Australia::Melbourne 1.70 - DateTime::TimeZone::Australia::Perth 1.70 - DateTime::TimeZone::Australia::Sydney 1.70 - DateTime::TimeZone::CET 1.70 - DateTime::TimeZone::CST6CDT 1.70 - DateTime::TimeZone::Catalog 1.70 - DateTime::TimeZone::EET 1.70 - DateTime::TimeZone::EST 1.70 - DateTime::TimeZone::EST5EDT 1.70 - DateTime::TimeZone::Europe::Amsterdam 1.70 - DateTime::TimeZone::Europe::Andorra 1.70 - DateTime::TimeZone::Europe::Athens 1.70 - DateTime::TimeZone::Europe::Belgrade 1.70 - DateTime::TimeZone::Europe::Berlin 1.70 - DateTime::TimeZone::Europe::Brussels 1.70 - DateTime::TimeZone::Europe::Bucharest 1.70 - DateTime::TimeZone::Europe::Budapest 1.70 - DateTime::TimeZone::Europe::Chisinau 1.70 - DateTime::TimeZone::Europe::Copenhagen 1.70 - DateTime::TimeZone::Europe::Dublin 1.70 - DateTime::TimeZone::Europe::Gibraltar 1.70 - DateTime::TimeZone::Europe::Helsinki 1.70 - DateTime::TimeZone::Europe::Istanbul 1.70 - DateTime::TimeZone::Europe::Kaliningrad 1.70 - DateTime::TimeZone::Europe::Kiev 1.70 - DateTime::TimeZone::Europe::Lisbon 1.70 - DateTime::TimeZone::Europe::London 1.70 - DateTime::TimeZone::Europe::Luxembourg 1.70 - DateTime::TimeZone::Europe::Madrid 1.70 - DateTime::TimeZone::Europe::Malta 1.70 - DateTime::TimeZone::Europe::Minsk 1.70 - DateTime::TimeZone::Europe::Monaco 1.70 - DateTime::TimeZone::Europe::Moscow 1.70 - DateTime::TimeZone::Europe::Oslo 1.70 - DateTime::TimeZone::Europe::Paris 1.70 - DateTime::TimeZone::Europe::Prague 1.70 - DateTime::TimeZone::Europe::Riga 1.70 - DateTime::TimeZone::Europe::Rome 1.70 - DateTime::TimeZone::Europe::Samara 1.70 - DateTime::TimeZone::Europe::Simferopol 1.70 - DateTime::TimeZone::Europe::Sofia 1.70 - DateTime::TimeZone::Europe::Stockholm 1.70 - DateTime::TimeZone::Europe::Tallinn 1.70 - DateTime::TimeZone::Europe::Tirane 1.70 - DateTime::TimeZone::Europe::Uzhgorod 1.70 - DateTime::TimeZone::Europe::Vienna 1.70 - DateTime::TimeZone::Europe::Vilnius 1.70 - DateTime::TimeZone::Europe::Volgograd 1.70 - DateTime::TimeZone::Europe::Warsaw 1.70 - DateTime::TimeZone::Europe::Zaporozhye 1.70 - DateTime::TimeZone::Europe::Zurich 1.70 - DateTime::TimeZone::Floating 1.70 - DateTime::TimeZone::HST 1.70 - DateTime::TimeZone::Indian::Antananarivo 1.70 - DateTime::TimeZone::Indian::Chagos 1.70 - DateTime::TimeZone::Indian::Christmas 1.70 - DateTime::TimeZone::Indian::Cocos 1.70 - DateTime::TimeZone::Indian::Comoro 1.70 - DateTime::TimeZone::Indian::Kerguelen 1.70 - DateTime::TimeZone::Indian::Mahe 1.70 - DateTime::TimeZone::Indian::Maldives 1.70 - DateTime::TimeZone::Indian::Mauritius 1.70 - DateTime::TimeZone::Indian::Mayotte 1.70 - DateTime::TimeZone::Indian::Reunion 1.70 - DateTime::TimeZone::Local 1.70 - DateTime::TimeZone::Local::Unix 1.70 - DateTime::TimeZone::Local::VMS 1.70 - DateTime::TimeZone::Local::Win32 1.70 - DateTime::TimeZone::MET 1.70 - DateTime::TimeZone::MST 1.70 - DateTime::TimeZone::MST7MDT 1.70 - DateTime::TimeZone::OffsetOnly 1.70 - DateTime::TimeZone::OlsonDB 1.70 - DateTime::TimeZone::OlsonDB::Change 1.70 - DateTime::TimeZone::OlsonDB::Observance 1.70 - DateTime::TimeZone::OlsonDB::Rule 1.70 - DateTime::TimeZone::OlsonDB::Zone 1.70 - DateTime::TimeZone::PST8PDT 1.70 - DateTime::TimeZone::Pacific::Apia 1.70 - DateTime::TimeZone::Pacific::Auckland 1.70 - DateTime::TimeZone::Pacific::Chatham 1.70 - DateTime::TimeZone::Pacific::Chuuk 1.70 - DateTime::TimeZone::Pacific::Easter 1.70 - DateTime::TimeZone::Pacific::Efate 1.70 - DateTime::TimeZone::Pacific::Enderbury 1.70 - DateTime::TimeZone::Pacific::Fakaofo 1.70 - DateTime::TimeZone::Pacific::Fiji 1.70 - DateTime::TimeZone::Pacific::Funafuti 1.70 - DateTime::TimeZone::Pacific::Galapagos 1.70 - DateTime::TimeZone::Pacific::Gambier 1.70 - DateTime::TimeZone::Pacific::Guadalcanal 1.70 - DateTime::TimeZone::Pacific::Guam 1.70 - DateTime::TimeZone::Pacific::Honolulu 1.70 - DateTime::TimeZone::Pacific::Kiritimati 1.70 - DateTime::TimeZone::Pacific::Kosrae 1.70 - DateTime::TimeZone::Pacific::Kwajalein 1.70 - DateTime::TimeZone::Pacific::Majuro 1.70 - DateTime::TimeZone::Pacific::Marquesas 1.70 - DateTime::TimeZone::Pacific::Midway 1.70 - DateTime::TimeZone::Pacific::Nauru 1.70 - DateTime::TimeZone::Pacific::Niue 1.70 - DateTime::TimeZone::Pacific::Norfolk 1.70 - DateTime::TimeZone::Pacific::Noumea 1.70 - DateTime::TimeZone::Pacific::Pago_Pago 1.70 - DateTime::TimeZone::Pacific::Palau 1.70 - DateTime::TimeZone::Pacific::Pitcairn 1.70 - DateTime::TimeZone::Pacific::Pohnpei 1.70 - DateTime::TimeZone::Pacific::Port_Moresby 1.70 - DateTime::TimeZone::Pacific::Rarotonga 1.70 - DateTime::TimeZone::Pacific::Saipan 1.70 - DateTime::TimeZone::Pacific::Tahiti 1.70 - DateTime::TimeZone::Pacific::Tarawa 1.70 - DateTime::TimeZone::Pacific::Tongatapu 1.70 - DateTime::TimeZone::Pacific::Wake 1.70 - DateTime::TimeZone::Pacific::Wallis 1.70 - DateTime::TimeZone::UTC 1.70 - DateTime::TimeZone::WET 1.70 + Params::Validate 0 + perl 5.008001 + strict 0 + warnings 0 + DateTime-TimeZone-1.94 + pathname: D/DR/DROLSKY/DateTime-TimeZone-1.94.tar.gz + provides: + DateTime::TimeZone 1.94 + DateTime::TimeZone::Africa::Abidjan 1.94 + DateTime::TimeZone::Africa::Accra 1.94 + DateTime::TimeZone::Africa::Algiers 1.94 + DateTime::TimeZone::Africa::Bissau 1.94 + DateTime::TimeZone::Africa::Cairo 1.94 + DateTime::TimeZone::Africa::Casablanca 1.94 + DateTime::TimeZone::Africa::Ceuta 1.94 + DateTime::TimeZone::Africa::El_Aaiun 1.94 + DateTime::TimeZone::Africa::Johannesburg 1.94 + DateTime::TimeZone::Africa::Khartoum 1.94 + DateTime::TimeZone::Africa::Lagos 1.94 + DateTime::TimeZone::Africa::Maputo 1.94 + DateTime::TimeZone::Africa::Monrovia 1.94 + DateTime::TimeZone::Africa::Nairobi 1.94 + DateTime::TimeZone::Africa::Ndjamena 1.94 + DateTime::TimeZone::Africa::Tripoli 1.94 + DateTime::TimeZone::Africa::Tunis 1.94 + DateTime::TimeZone::Africa::Windhoek 1.94 + DateTime::TimeZone::America::Adak 1.94 + DateTime::TimeZone::America::Anchorage 1.94 + DateTime::TimeZone::America::Araguaina 1.94 + DateTime::TimeZone::America::Argentina::Buenos_Aires 1.94 + DateTime::TimeZone::America::Argentina::Catamarca 1.94 + DateTime::TimeZone::America::Argentina::Cordoba 1.94 + DateTime::TimeZone::America::Argentina::Jujuy 1.94 + DateTime::TimeZone::America::Argentina::La_Rioja 1.94 + DateTime::TimeZone::America::Argentina::Mendoza 1.94 + DateTime::TimeZone::America::Argentina::Rio_Gallegos 1.94 + DateTime::TimeZone::America::Argentina::Salta 1.94 + DateTime::TimeZone::America::Argentina::San_Juan 1.94 + DateTime::TimeZone::America::Argentina::San_Luis 1.94 + DateTime::TimeZone::America::Argentina::Tucuman 1.94 + DateTime::TimeZone::America::Argentina::Ushuaia 1.94 + DateTime::TimeZone::America::Asuncion 1.94 + DateTime::TimeZone::America::Atikokan 1.94 + DateTime::TimeZone::America::Bahia 1.94 + DateTime::TimeZone::America::Bahia_Banderas 1.94 + DateTime::TimeZone::America::Barbados 1.94 + DateTime::TimeZone::America::Belem 1.94 + DateTime::TimeZone::America::Belize 1.94 + DateTime::TimeZone::America::Blanc_Sablon 1.94 + DateTime::TimeZone::America::Boa_Vista 1.94 + DateTime::TimeZone::America::Bogota 1.94 + DateTime::TimeZone::America::Boise 1.94 + DateTime::TimeZone::America::Cambridge_Bay 1.94 + DateTime::TimeZone::America::Campo_Grande 1.94 + DateTime::TimeZone::America::Cancun 1.94 + DateTime::TimeZone::America::Caracas 1.94 + DateTime::TimeZone::America::Cayenne 1.94 + DateTime::TimeZone::America::Cayman 1.94 + DateTime::TimeZone::America::Chicago 1.94 + DateTime::TimeZone::America::Chihuahua 1.94 + DateTime::TimeZone::America::Costa_Rica 1.94 + DateTime::TimeZone::America::Creston 1.94 + DateTime::TimeZone::America::Cuiaba 1.94 + DateTime::TimeZone::America::Curacao 1.94 + DateTime::TimeZone::America::Danmarkshavn 1.94 + DateTime::TimeZone::America::Dawson 1.94 + DateTime::TimeZone::America::Dawson_Creek 1.94 + DateTime::TimeZone::America::Denver 1.94 + DateTime::TimeZone::America::Detroit 1.94 + DateTime::TimeZone::America::Edmonton 1.94 + DateTime::TimeZone::America::Eirunepe 1.94 + DateTime::TimeZone::America::El_Salvador 1.94 + DateTime::TimeZone::America::Fort_Nelson 1.94 + DateTime::TimeZone::America::Fortaleza 1.94 + DateTime::TimeZone::America::Glace_Bay 1.94 + DateTime::TimeZone::America::Godthab 1.94 + DateTime::TimeZone::America::Goose_Bay 1.94 + DateTime::TimeZone::America::Grand_Turk 1.94 + DateTime::TimeZone::America::Guatemala 1.94 + DateTime::TimeZone::America::Guayaquil 1.94 + DateTime::TimeZone::America::Guyana 1.94 + DateTime::TimeZone::America::Halifax 1.94 + DateTime::TimeZone::America::Havana 1.94 + DateTime::TimeZone::America::Hermosillo 1.94 + DateTime::TimeZone::America::Indiana::Indianapolis 1.94 + DateTime::TimeZone::America::Indiana::Knox 1.94 + DateTime::TimeZone::America::Indiana::Marengo 1.94 + DateTime::TimeZone::America::Indiana::Petersburg 1.94 + DateTime::TimeZone::America::Indiana::Tell_City 1.94 + DateTime::TimeZone::America::Indiana::Vevay 1.94 + DateTime::TimeZone::America::Indiana::Vincennes 1.94 + DateTime::TimeZone::America::Indiana::Winamac 1.94 + DateTime::TimeZone::America::Inuvik 1.94 + DateTime::TimeZone::America::Iqaluit 1.94 + DateTime::TimeZone::America::Jamaica 1.94 + DateTime::TimeZone::America::Juneau 1.94 + DateTime::TimeZone::America::Kentucky::Louisville 1.94 + DateTime::TimeZone::America::Kentucky::Monticello 1.94 + DateTime::TimeZone::America::La_Paz 1.94 + DateTime::TimeZone::America::Lima 1.94 + DateTime::TimeZone::America::Los_Angeles 1.94 + DateTime::TimeZone::America::Maceio 1.94 + DateTime::TimeZone::America::Managua 1.94 + DateTime::TimeZone::America::Manaus 1.94 + DateTime::TimeZone::America::Martinique 1.94 + DateTime::TimeZone::America::Matamoros 1.94 + DateTime::TimeZone::America::Mazatlan 1.94 + DateTime::TimeZone::America::Menominee 1.94 + DateTime::TimeZone::America::Merida 1.94 + DateTime::TimeZone::America::Metlakatla 1.94 + DateTime::TimeZone::America::Mexico_City 1.94 + DateTime::TimeZone::America::Miquelon 1.94 + DateTime::TimeZone::America::Moncton 1.94 + DateTime::TimeZone::America::Monterrey 1.94 + DateTime::TimeZone::America::Montevideo 1.94 + DateTime::TimeZone::America::Nassau 1.94 + DateTime::TimeZone::America::New_York 1.94 + DateTime::TimeZone::America::Nipigon 1.94 + DateTime::TimeZone::America::Nome 1.94 + DateTime::TimeZone::America::Noronha 1.94 + DateTime::TimeZone::America::North_Dakota::Beulah 1.94 + DateTime::TimeZone::America::North_Dakota::Center 1.94 + DateTime::TimeZone::America::North_Dakota::New_Salem 1.94 + DateTime::TimeZone::America::Ojinaga 1.94 + DateTime::TimeZone::America::Panama 1.94 + DateTime::TimeZone::America::Pangnirtung 1.94 + DateTime::TimeZone::America::Paramaribo 1.94 + DateTime::TimeZone::America::Phoenix 1.94 + DateTime::TimeZone::America::Port_au_Prince 1.94 + DateTime::TimeZone::America::Port_of_Spain 1.94 + DateTime::TimeZone::America::Porto_Velho 1.94 + DateTime::TimeZone::America::Puerto_Rico 1.94 + DateTime::TimeZone::America::Rainy_River 1.94 + DateTime::TimeZone::America::Rankin_Inlet 1.94 + DateTime::TimeZone::America::Recife 1.94 + DateTime::TimeZone::America::Regina 1.94 + DateTime::TimeZone::America::Resolute 1.94 + DateTime::TimeZone::America::Rio_Branco 1.94 + DateTime::TimeZone::America::Santa_Isabel 1.94 + DateTime::TimeZone::America::Santarem 1.94 + DateTime::TimeZone::America::Santiago 1.94 + DateTime::TimeZone::America::Santo_Domingo 1.94 + DateTime::TimeZone::America::Sao_Paulo 1.94 + DateTime::TimeZone::America::Scoresbysund 1.94 + DateTime::TimeZone::America::Sitka 1.94 + DateTime::TimeZone::America::St_Johns 1.94 + DateTime::TimeZone::America::Swift_Current 1.94 + DateTime::TimeZone::America::Tegucigalpa 1.94 + DateTime::TimeZone::America::Thule 1.94 + DateTime::TimeZone::America::Thunder_Bay 1.94 + DateTime::TimeZone::America::Tijuana 1.94 + DateTime::TimeZone::America::Toronto 1.94 + DateTime::TimeZone::America::Vancouver 1.94 + DateTime::TimeZone::America::Whitehorse 1.94 + DateTime::TimeZone::America::Winnipeg 1.94 + DateTime::TimeZone::America::Yakutat 1.94 + DateTime::TimeZone::America::Yellowknife 1.94 + DateTime::TimeZone::Antarctica::Casey 1.94 + DateTime::TimeZone::Antarctica::Davis 1.94 + DateTime::TimeZone::Antarctica::DumontDUrville 1.94 + DateTime::TimeZone::Antarctica::Macquarie 1.94 + DateTime::TimeZone::Antarctica::Mawson 1.94 + DateTime::TimeZone::Antarctica::Palmer 1.94 + DateTime::TimeZone::Antarctica::Rothera 1.94 + DateTime::TimeZone::Antarctica::Syowa 1.94 + DateTime::TimeZone::Antarctica::Troll 1.94 + DateTime::TimeZone::Antarctica::Vostok 1.94 + DateTime::TimeZone::Asia::Almaty 1.94 + DateTime::TimeZone::Asia::Amman 1.94 + DateTime::TimeZone::Asia::Anadyr 1.94 + DateTime::TimeZone::Asia::Aqtau 1.94 + DateTime::TimeZone::Asia::Aqtobe 1.94 + DateTime::TimeZone::Asia::Ashgabat 1.94 + DateTime::TimeZone::Asia::Baghdad 1.94 + DateTime::TimeZone::Asia::Baku 1.94 + DateTime::TimeZone::Asia::Bangkok 1.94 + DateTime::TimeZone::Asia::Beirut 1.94 + DateTime::TimeZone::Asia::Bishkek 1.94 + DateTime::TimeZone::Asia::Brunei 1.94 + DateTime::TimeZone::Asia::Chita 1.94 + DateTime::TimeZone::Asia::Choibalsan 1.94 + DateTime::TimeZone::Asia::Colombo 1.94 + DateTime::TimeZone::Asia::Damascus 1.94 + DateTime::TimeZone::Asia::Dhaka 1.94 + DateTime::TimeZone::Asia::Dili 1.94 + DateTime::TimeZone::Asia::Dubai 1.94 + DateTime::TimeZone::Asia::Dushanbe 1.94 + DateTime::TimeZone::Asia::Gaza 1.94 + DateTime::TimeZone::Asia::Hebron 1.94 + DateTime::TimeZone::Asia::Ho_Chi_Minh 1.94 + DateTime::TimeZone::Asia::Hong_Kong 1.94 + DateTime::TimeZone::Asia::Hovd 1.94 + DateTime::TimeZone::Asia::Irkutsk 1.94 + DateTime::TimeZone::Asia::Jakarta 1.94 + DateTime::TimeZone::Asia::Jayapura 1.94 + DateTime::TimeZone::Asia::Jerusalem 1.94 + DateTime::TimeZone::Asia::Kabul 1.94 + DateTime::TimeZone::Asia::Kamchatka 1.94 + DateTime::TimeZone::Asia::Karachi 1.94 + DateTime::TimeZone::Asia::Kathmandu 1.94 + DateTime::TimeZone::Asia::Khandyga 1.94 + DateTime::TimeZone::Asia::Kolkata 1.94 + DateTime::TimeZone::Asia::Krasnoyarsk 1.94 + DateTime::TimeZone::Asia::Kuala_Lumpur 1.94 + DateTime::TimeZone::Asia::Kuching 1.94 + DateTime::TimeZone::Asia::Macau 1.94 + DateTime::TimeZone::Asia::Magadan 1.94 + DateTime::TimeZone::Asia::Makassar 1.94 + DateTime::TimeZone::Asia::Manila 1.94 + DateTime::TimeZone::Asia::Nicosia 1.94 + DateTime::TimeZone::Asia::Novokuznetsk 1.94 + DateTime::TimeZone::Asia::Novosibirsk 1.94 + DateTime::TimeZone::Asia::Omsk 1.94 + DateTime::TimeZone::Asia::Oral 1.94 + DateTime::TimeZone::Asia::Pontianak 1.94 + DateTime::TimeZone::Asia::Pyongyang 1.94 + DateTime::TimeZone::Asia::Qatar 1.94 + DateTime::TimeZone::Asia::Qyzylorda 1.94 + DateTime::TimeZone::Asia::Rangoon 1.94 + DateTime::TimeZone::Asia::Riyadh 1.94 + DateTime::TimeZone::Asia::Sakhalin 1.94 + DateTime::TimeZone::Asia::Samarkand 1.94 + DateTime::TimeZone::Asia::Seoul 1.94 + DateTime::TimeZone::Asia::Shanghai 1.94 + DateTime::TimeZone::Asia::Singapore 1.94 + DateTime::TimeZone::Asia::Srednekolymsk 1.94 + DateTime::TimeZone::Asia::Taipei 1.94 + DateTime::TimeZone::Asia::Tashkent 1.94 + DateTime::TimeZone::Asia::Tbilisi 1.94 + DateTime::TimeZone::Asia::Tehran 1.94 + DateTime::TimeZone::Asia::Thimphu 1.94 + DateTime::TimeZone::Asia::Tokyo 1.94 + DateTime::TimeZone::Asia::Ulaanbaatar 1.94 + DateTime::TimeZone::Asia::Urumqi 1.94 + DateTime::TimeZone::Asia::Ust_Nera 1.94 + DateTime::TimeZone::Asia::Vladivostok 1.94 + DateTime::TimeZone::Asia::Yakutsk 1.94 + DateTime::TimeZone::Asia::Yekaterinburg 1.94 + DateTime::TimeZone::Asia::Yerevan 1.94 + DateTime::TimeZone::Atlantic::Azores 1.94 + DateTime::TimeZone::Atlantic::Bermuda 1.94 + DateTime::TimeZone::Atlantic::Canary 1.94 + DateTime::TimeZone::Atlantic::Cape_Verde 1.94 + DateTime::TimeZone::Atlantic::Faroe 1.94 + DateTime::TimeZone::Atlantic::Madeira 1.94 + DateTime::TimeZone::Atlantic::Reykjavik 1.94 + DateTime::TimeZone::Atlantic::South_Georgia 1.94 + DateTime::TimeZone::Atlantic::Stanley 1.94 + DateTime::TimeZone::Australia::Adelaide 1.94 + DateTime::TimeZone::Australia::Brisbane 1.94 + DateTime::TimeZone::Australia::Broken_Hill 1.94 + DateTime::TimeZone::Australia::Currie 1.94 + DateTime::TimeZone::Australia::Darwin 1.94 + DateTime::TimeZone::Australia::Eucla 1.94 + DateTime::TimeZone::Australia::Hobart 1.94 + DateTime::TimeZone::Australia::Lindeman 1.94 + DateTime::TimeZone::Australia::Lord_Howe 1.94 + DateTime::TimeZone::Australia::Melbourne 1.94 + DateTime::TimeZone::Australia::Perth 1.94 + DateTime::TimeZone::Australia::Sydney 1.94 + DateTime::TimeZone::CET 1.94 + DateTime::TimeZone::CST6CDT 1.94 + DateTime::TimeZone::Catalog 1.94 + DateTime::TimeZone::EET 1.94 + DateTime::TimeZone::EST 1.94 + DateTime::TimeZone::EST5EDT 1.94 + DateTime::TimeZone::Europe::Amsterdam 1.94 + DateTime::TimeZone::Europe::Andorra 1.94 + DateTime::TimeZone::Europe::Athens 1.94 + DateTime::TimeZone::Europe::Belgrade 1.94 + DateTime::TimeZone::Europe::Berlin 1.94 + DateTime::TimeZone::Europe::Brussels 1.94 + DateTime::TimeZone::Europe::Bucharest 1.94 + DateTime::TimeZone::Europe::Budapest 1.94 + DateTime::TimeZone::Europe::Chisinau 1.94 + DateTime::TimeZone::Europe::Copenhagen 1.94 + DateTime::TimeZone::Europe::Dublin 1.94 + DateTime::TimeZone::Europe::Gibraltar 1.94 + DateTime::TimeZone::Europe::Helsinki 1.94 + DateTime::TimeZone::Europe::Istanbul 1.94 + DateTime::TimeZone::Europe::Kaliningrad 1.94 + DateTime::TimeZone::Europe::Kiev 1.94 + DateTime::TimeZone::Europe::Lisbon 1.94 + DateTime::TimeZone::Europe::London 1.94 + DateTime::TimeZone::Europe::Luxembourg 1.94 + DateTime::TimeZone::Europe::Madrid 1.94 + DateTime::TimeZone::Europe::Malta 1.94 + DateTime::TimeZone::Europe::Minsk 1.94 + DateTime::TimeZone::Europe::Monaco 1.94 + DateTime::TimeZone::Europe::Moscow 1.94 + DateTime::TimeZone::Europe::Oslo 1.94 + DateTime::TimeZone::Europe::Paris 1.94 + DateTime::TimeZone::Europe::Prague 1.94 + DateTime::TimeZone::Europe::Riga 1.94 + DateTime::TimeZone::Europe::Rome 1.94 + DateTime::TimeZone::Europe::Samara 1.94 + DateTime::TimeZone::Europe::Simferopol 1.94 + DateTime::TimeZone::Europe::Sofia 1.94 + DateTime::TimeZone::Europe::Stockholm 1.94 + DateTime::TimeZone::Europe::Tallinn 1.94 + DateTime::TimeZone::Europe::Tirane 1.94 + DateTime::TimeZone::Europe::Uzhgorod 1.94 + DateTime::TimeZone::Europe::Vienna 1.94 + DateTime::TimeZone::Europe::Vilnius 1.94 + DateTime::TimeZone::Europe::Volgograd 1.94 + DateTime::TimeZone::Europe::Warsaw 1.94 + DateTime::TimeZone::Europe::Zaporozhye 1.94 + DateTime::TimeZone::Europe::Zurich 1.94 + DateTime::TimeZone::Floating 1.94 + DateTime::TimeZone::HST 1.94 + DateTime::TimeZone::Indian::Chagos 1.94 + DateTime::TimeZone::Indian::Christmas 1.94 + DateTime::TimeZone::Indian::Cocos 1.94 + DateTime::TimeZone::Indian::Kerguelen 1.94 + DateTime::TimeZone::Indian::Mahe 1.94 + DateTime::TimeZone::Indian::Maldives 1.94 + DateTime::TimeZone::Indian::Mauritius 1.94 + DateTime::TimeZone::Indian::Reunion 1.94 + DateTime::TimeZone::Local 1.94 + DateTime::TimeZone::Local::Android 1.94 + DateTime::TimeZone::Local::Unix 1.94 + DateTime::TimeZone::Local::VMS 1.94 + DateTime::TimeZone::MET 1.94 + DateTime::TimeZone::MST 1.94 + DateTime::TimeZone::MST7MDT 1.94 + DateTime::TimeZone::OffsetOnly 1.94 + DateTime::TimeZone::OlsonDB 1.94 + DateTime::TimeZone::OlsonDB::Change 1.94 + DateTime::TimeZone::OlsonDB::Observance 1.94 + DateTime::TimeZone::OlsonDB::Rule 1.94 + DateTime::TimeZone::OlsonDB::Zone 1.94 + DateTime::TimeZone::PST8PDT 1.94 + DateTime::TimeZone::Pacific::Apia 1.94 + DateTime::TimeZone::Pacific::Auckland 1.94 + DateTime::TimeZone::Pacific::Bougainville 1.94 + DateTime::TimeZone::Pacific::Chatham 1.94 + DateTime::TimeZone::Pacific::Chuuk 1.94 + DateTime::TimeZone::Pacific::Easter 1.94 + DateTime::TimeZone::Pacific::Efate 1.94 + DateTime::TimeZone::Pacific::Enderbury 1.94 + DateTime::TimeZone::Pacific::Fakaofo 1.94 + DateTime::TimeZone::Pacific::Fiji 1.94 + DateTime::TimeZone::Pacific::Funafuti 1.94 + DateTime::TimeZone::Pacific::Galapagos 1.94 + DateTime::TimeZone::Pacific::Gambier 1.94 + DateTime::TimeZone::Pacific::Guadalcanal 1.94 + DateTime::TimeZone::Pacific::Guam 1.94 + DateTime::TimeZone::Pacific::Honolulu 1.94 + DateTime::TimeZone::Pacific::Kiritimati 1.94 + DateTime::TimeZone::Pacific::Kosrae 1.94 + DateTime::TimeZone::Pacific::Kwajalein 1.94 + DateTime::TimeZone::Pacific::Majuro 1.94 + DateTime::TimeZone::Pacific::Marquesas 1.94 + DateTime::TimeZone::Pacific::Nauru 1.94 + DateTime::TimeZone::Pacific::Niue 1.94 + DateTime::TimeZone::Pacific::Norfolk 1.94 + DateTime::TimeZone::Pacific::Noumea 1.94 + DateTime::TimeZone::Pacific::Pago_Pago 1.94 + DateTime::TimeZone::Pacific::Palau 1.94 + DateTime::TimeZone::Pacific::Pitcairn 1.94 + DateTime::TimeZone::Pacific::Pohnpei 1.94 + DateTime::TimeZone::Pacific::Port_Moresby 1.94 + DateTime::TimeZone::Pacific::Rarotonga 1.94 + DateTime::TimeZone::Pacific::Tahiti 1.94 + DateTime::TimeZone::Pacific::Tarawa 1.94 + DateTime::TimeZone::Pacific::Tongatapu 1.94 + DateTime::TimeZone::Pacific::Wake 1.94 + DateTime::TimeZone::Pacific::Wallis 1.94 + DateTime::TimeZone::UTC 1.94 + DateTime::TimeZone::WET 1.94 requirements: - Class::Load 0 Class::Singleton 1.03 Cwd 3 - ExtUtils::MakeMaker 6.30 + ExtUtils::MakeMaker 0 File::Basename 0 File::Compare 0 File::Find 0 File::Spec 0 - List::Util 0 + List::Util 1.33 + Module::Runtime 0 Params::Validate 0.72 + Try::Tiny 0 constant 0 parent 0 + perl 5.006 strict 0 vars 0 warnings 0 @@ -2697,14 +2228,12 @@ DISTRIBUTIONS ExtUtils::MakeMaker 0 PadWalker 0 Test::use::ok 0 - Devel-CheckCompiler-0.05 - pathname: S/SY/SYOHEX/Devel-CheckCompiler-0.05.tar.gz + Devel-CheckCompiler-0.06 + pathname: S/SY/SYOHEX/Devel-CheckCompiler-0.06.tar.gz provides: Devel::AssertC99 undef - Devel::CheckCompiler 0.05 + Devel::CheckCompiler 0.06 requirements: - CPAN::Meta 0 - CPAN::Meta::Prereqs 0 Exporter 0 ExtUtils::CBuilder 0 File::Temp 0 @@ -2713,10 +2242,10 @@ DISTRIBUTIONS Test::Requires 0 parent 0 perl 5.008001 - Devel-CheckLib-1.01 - pathname: M/MA/MATTN/Devel-CheckLib-1.01.tar.gz + Devel-CheckLib-1.05 + pathname: M/MA/MATTN/Devel-CheckLib-1.05.tar.gz provides: - Devel::CheckLib 1.01 + Devel::CheckLib 1.05 requirements: Exporter 0 ExtUtils::MakeMaker 0 @@ -2725,11 +2254,11 @@ DISTRIBUTIONS IO::CaptureOutput 1.0801 Test::More 0.62 perl 5.00405 - Devel-Confess-0.007012 - pathname: H/HA/HAARG/Devel-Confess-0.007012.tar.gz + Devel-Confess-0.008000 + pathname: H/HA/HAARG/Devel-Confess-0.008000.tar.gz provides: - Devel::Confess 0.007012 - Devel::Confess::Builtin 0.007012 + Devel::Confess 0.008000 + Devel::Confess::Builtin 0.008000 Devel::Confess::Source undef Devel::Confess::_Util undef requirements: @@ -2737,10 +2266,10 @@ DISTRIBUTIONS ExtUtils::MakeMaker 0 Scalar::Util 0 perl 5.006000 - Devel-GlobalDestruction-0.12 - pathname: H/HA/HAARG/Devel-GlobalDestruction-0.12.tar.gz + Devel-GlobalDestruction-0.13 + pathname: H/HA/HAARG/Devel-GlobalDestruction-0.13.tar.gz provides: - Devel::GlobalDestruction 0.12 + Devel::GlobalDestruction 0.13 requirements: ExtUtils::CBuilder 0.27 ExtUtils::MakeMaker 0 @@ -2753,33 +2282,38 @@ DISTRIBUTIONS requirements: ExtUtils::MakeMaker 0 Test::More 0 - Devel-OverloadInfo-0.002 - pathname: I/IL/ILMARI/Devel-OverloadInfo-0.002.tar.gz + Devel-OverloadInfo-0.004 + pathname: I/IL/ILMARI/Devel-OverloadInfo-0.004.tar.gz provides: - Devel::OverloadInfo 0.002 + Devel::OverloadInfo 0.004 requirements: Exporter 5.57 - ExtUtils::MakeMaker 6.30 + ExtUtils::MakeMaker 0 MRO::Compat 0 Package::Stash 0.14 Scalar::Util 0 Sub::Identify 0 overload 0 + perl 5.006 strict 0 warnings 0 - Devel-PartialDump-0.17 - pathname: E/ET/ETHER/Devel-PartialDump-0.17.tar.gz + Devel-PPPort-3.32 + pathname: W/WO/WOLFSAGE/Devel-PPPort-3.32.tar.gz provides: - Devel::PartialDump 0.17 + Devel::PPPort 3.32 + requirements: + ExtUtils::MakeMaker 0 + Devel-PartialDump-0.18 + pathname: E/ET/ETHER/Devel-PartialDump-0.18.tar.gz + provides: + Devel::PartialDump 0.18 requirements: Carp 0 - Carp::Heavy 0 Class::Tiny 0 - ExtUtils::MakeMaker 6.30 - Module::Build::Tiny 0.030 + ExtUtils::MakeMaker 0 Scalar::Util 0 Sub::Exporter 0 - namespace::clean 0 + namespace::clean 0.19 perl 5.006001 strict 0 warnings 0 @@ -2806,10 +2340,10 @@ DISTRIBUTIONS Filter::Util::Call 0 Test::More 0 perl 5.008001 - Devel-Symdump-2.11 - pathname: A/AN/ANDK/Devel-Symdump-2.11.tar.gz + Devel-Symdump-2.15 + pathname: A/AN/ANDK/Devel-Symdump-2.15.tar.gz provides: - Devel::Symdump 2.11 + Devel::Symdump 2.15 Devel::Symdump::Export undef requirements: Compress::Zlib 0 @@ -2827,16 +2361,16 @@ DISTRIBUTIONS Digest::SHA 1 ExtUtils::MakeMaker 0 perl 5.004 - Digest-JHash-0.08 - pathname: S/SH/SHLOMIF/Digest-JHash-0.08.tar.gz + Digest-JHash-0.09 + pathname: S/SH/SHLOMIF/Digest-JHash-0.09.tar.gz provides: - Digest::JHash 0.08 + Digest::JHash 0.09 requirements: DynaLoader 0 Exporter 0 ExtUtils::MakeMaker 0 - perl 5.008 strict 0 + vars 0 warnings 0 Digest-SHA1-2.13 pathname: G/GA/GAAS/Digest-SHA1-2.13.tar.gz @@ -2858,30 +2392,30 @@ DISTRIBUTIONS base 0 strict 0 warnings 0 - Dist-Data-0.005 - pathname: G/GE/GETTY/Dist-Data-0.005.tar.gz + Dist-Data-0.006 + pathname: G/GE/GETTY/Dist-Data-0.006.tar.gz provides: - Dist::Data 0.005 + Dist::Data 0.006 requirements: Archive::Any 0.0932 CPAN::Meta 2.113640 DateTime::Format::Epoch 0.13 Dist::Metadata 0.922 - ExtUtils::MakeMaker 6.30 - File::Find::Object 0 + ExtUtils::MakeMaker 0 + File::Find::Object v0.2.3 File::Temp 0.22 Module::Extract::Namespaces 0.14 Moo 0.009013 - Dist-Metadata-0.925 - pathname: R/RW/RWSTAUNER/Dist-Metadata-0.925.tar.gz + Dist-Metadata-0.926 + pathname: R/RW/RWSTAUNER/Dist-Metadata-0.926.tar.gz provides: - Dist::Metadata 0.925 - Dist::Metadata::Archive 0.925 - Dist::Metadata::Dir 0.925 - Dist::Metadata::Dist 0.925 - Dist::Metadata::Struct 0.925 - Dist::Metadata::Tar 0.925 - Dist::Metadata::Zip 0.925 + Dist::Metadata 0.926 + Dist::Metadata::Archive 0.926 + Dist::Metadata::Dir 0.926 + Dist::Metadata::Dist 0.926 + Dist::Metadata::Struct 0.926 + Dist::Metadata::Tar 0.926 + Dist::Metadata::Zip 0.926 requirements: Archive::Tar 1 Archive::Zip 1.30 @@ -2891,114 +2425,54 @@ DISTRIBUTIONS Digest 1.03 Digest::MD5 2 Digest::SHA 5 - ExtUtils::MakeMaker 6.30 + ExtUtils::MakeMaker 0 File::Basename 0 File::Find 0 - File::Spec 0 - File::Spec::Functions 0 File::Spec::Native 1.002 File::Temp 0.19 List::Util 0 Module::Metadata 0 Path::Class 0.24 - Test::Fatal 0 - Test::MockObject 1.09 - Test::More 0.96 Try::Tiny 0.09 - constant 0 parent 0 + perl 5.006 strict 0 warnings 0 - EV-4.17 - pathname: M/ML/MLEHMANN/EV-4.17.tar.gz + EV-4.21 + pathname: M/ML/MLEHMANN/EV-4.21.tar.gz provides: - EV 4.17 + EV 4.21 EV::MakeMaker undef requirements: - ExtUtils::MakeMaker 0 + Canary::Stability 0 + ExtUtils::MakeMaker 6.52 common::sense 0 - ElasticSearch-0.68 - pathname: D/DR/DRTECH/ElasticSearch-0.68.tar.gz - provides: - ElasticSearch 0.68 - ElasticSearch::Error 0.68 - ElasticSearch::QueryParser 0.68 - ElasticSearch::ScrolledSearch 0.68 - ElasticSearch::TestServer 0.68 - ElasticSearch::Transport 0.68 - ElasticSearch::Transport::HTTP 0.68 - ElasticSearch::Transport::HTTPLite 0.68 - ElasticSearch::Transport::HTTPTiny 0.68 - ElasticSearch::Util 0.68 - requirements: - Any::URI::Escape 0 - Carp 0 - Data::Dumper 0 - ElasticSearch::SearchBuilder 0.18 - Encode 0 - Exporter 0 - ExtUtils::MakeMaker 6.30 - File::Path 0 - File::Spec::Functions 0 - File::Temp 0.22 - HTTP::Lite 0 - HTTP::Request 0 - HTTP::Tiny 0 - IO::Handle 0 - IO::Socket 0 - IO::Uncompress::Inflate 0 - JSON 0 - LWP::ConnCache 0 - LWP::UserAgent 0 - List::Util 0 - POSIX 0 - Scalar::Util 1.07 - Task::Weaken 0 - Test::More 0.96 - URI 0 - YAML 0 - constant 0 - overload 0 - parent 0 - strict 0 - warnings 0 - ElasticSearch-SearchBuilder-0.19 - pathname: D/DR/DRTECH/ElasticSearch-SearchBuilder-0.19.tar.gz - provides: - ElasticSearch::SearchBuilder 0.19 - requirements: - Carp 0 - ExtUtils::MakeMaker 6.30 - Scalar::Util 0 - Test::More 0.96 - strict 0 - warnings 0 - ElasticSearchX-Model-0.2.1 - pathname: O/OA/OALDERS/ElasticSearchX-Model-0.2.1.tar.gz - provides: - ElasticSearchX::Model 0.002001 - ElasticSearchX::Model::Bulk 0.002001 - ElasticSearchX::Model::Document 0.002001 - ElasticSearchX::Model::Document::EmbeddedRole 0.002001 - ElasticSearchX::Model::Document::Mapping 0.002001 - ElasticSearchX::Model::Document::Role 0.002001 - ElasticSearchX::Model::Document::Set 0.002001 - ElasticSearchX::Model::Document::Trait::Attribute 0.002001 - ElasticSearchX::Model::Document::Trait::Class 0.002001 - ElasticSearchX::Model::Document::Trait::Class::ID 0.002001 - ElasticSearchX::Model::Document::Trait::Class::Timestamp 0.002001 - ElasticSearchX::Model::Document::Trait::Class::Version 0.002001 - ElasticSearchX::Model::Document::Trait::Field::ID 0.002001 - ElasticSearchX::Model::Document::Trait::Field::TTL 0.002001 - ElasticSearchX::Model::Document::Trait::Field::Timestamp 0.002001 - ElasticSearchX::Model::Document::Trait::Field::Version 0.002001 - ElasticSearchX::Model::Document::Types 0.002001 - ElasticSearchX::Model::Index 0.002001 - ElasticSearchX::Model::Role 0.002001 - ElasticSearchX::Model::Scroll 0.002001 - ElasticSearchX::Model::Trait::Class 0.002001 - ElasticSearchX::Model::Tutorial 0.002001 - ElasticSearchX::Model::Util 0.002001 + ElasticSearchX-Model-0.2.2 + pathname: O/OA/OALDERS/ElasticSearchX-Model-0.2.2.tar.gz + provides: + ElasticSearchX::Model 0.002002 + ElasticSearchX::Model::Bulk 0.002002 + ElasticSearchX::Model::Document 0.002002 + ElasticSearchX::Model::Document::EmbeddedRole 0.002002 + ElasticSearchX::Model::Document::Mapping 0.002002 + ElasticSearchX::Model::Document::Role 0.002002 + ElasticSearchX::Model::Document::Set 0.002002 + ElasticSearchX::Model::Document::Trait::Attribute 0.002002 + ElasticSearchX::Model::Document::Trait::Class 0.002002 + ElasticSearchX::Model::Document::Trait::Class::ID 0.002002 + ElasticSearchX::Model::Document::Trait::Class::Timestamp 0.002002 + ElasticSearchX::Model::Document::Trait::Class::Version 0.002002 + ElasticSearchX::Model::Document::Trait::Field::ID 0.002002 + ElasticSearchX::Model::Document::Trait::Field::TTL 0.002002 + ElasticSearchX::Model::Document::Trait::Field::Timestamp 0.002002 + ElasticSearchX::Model::Document::Trait::Field::Version 0.002002 + ElasticSearchX::Model::Document::Types 0.002002 + ElasticSearchX::Model::Index 0.002002 + ElasticSearchX::Model::Role 0.002002 + ElasticSearchX::Model::Scroll 0.002002 + ElasticSearchX::Model::Trait::Class 0.002002 + ElasticSearchX::Model::Tutorial 0.002002 + ElasticSearchX::Model::Util 0.002002 requirements: Carp 0 Class::Load 0 @@ -3020,72 +2494,73 @@ DISTRIBUTIONS Scalar::Util 0 Search::Elasticsearch 1.11 Sub::Exporter 0 - Email-Abstract-3.007 - pathname: R/RJ/RJBS/Email-Abstract-3.007.tar.gz - provides: - Email::Abstract 3.007 - Email::Abstract::EmailMIME 3.007 - Email::Abstract::EmailSimple 3.007 - Email::Abstract::MIMEEntity 3.007 - Email::Abstract::MailInternet 3.007 - Email::Abstract::MailMessage 3.007 - Email::Abstract::Plugin 3.007 + Email-Abstract-3.008 + pathname: R/RJ/RJBS/Email-Abstract-3.008.tar.gz + provides: + Email::Abstract 3.008 + Email::Abstract::EmailMIME 3.008 + Email::Abstract::EmailSimple 3.008 + Email::Abstract::MIMEEntity 3.008 + Email::Abstract::MailInternet 3.008 + Email::Abstract::MailMessage 3.008 + Email::Abstract::Plugin 3.008 Test::EmailAbstract undef requirements: Carp 0 Email::Simple 1.998 - ExtUtils::MakeMaker 6.30 + ExtUtils::MakeMaker 0 MRO::Compat 0 Module::Pluggable 1.5 Scalar::Util 0 + perl 5.006 strict 0 warnings 0 - Email-Address-1.903 - pathname: R/RJ/RJBS/Email-Address-1.903.tar.gz + Email-Address-1.908 + pathname: R/RJ/RJBS/Email-Address-1.908.tar.gz provides: - Email::Address 1.903 + Email::Address 1.908 requirements: - ExtUtils::MakeMaker 6.30 + ExtUtils::MakeMaker 0 overload 0 strict 0 warnings 0 - Email-Date-Format-1.004 - pathname: R/RJ/RJBS/Email-Date-Format-1.004.tar.gz + Email-Date-Format-1.005 + pathname: R/RJ/RJBS/Email-Date-Format-1.005.tar.gz provides: - Email::Date::Format 1.004 + Email::Date::Format 1.005 requirements: Exporter 5.57 - ExtUtils::MakeMaker 6.30 + ExtUtils::MakeMaker 0 Time::Local 0 strict 0 warnings 0 - Email-Sender-1.300011 - pathname: R/RJ/RJBS/Email-Sender-1.300011.tar.gz - provides: - Email::Sender 1.300011 - Email::Sender::Failure 1.300011 - Email::Sender::Failure::Multi 1.300011 - Email::Sender::Failure::Permanent 1.300011 - Email::Sender::Failure::Temporary 1.300011 - Email::Sender::Manual 1.300011 - Email::Sender::Manual::QuickStart 1.300011 - Email::Sender::Role::CommonSending 1.300011 - Email::Sender::Role::HasMessage 1.300011 - Email::Sender::Simple 1.300011 - Email::Sender::Success 1.300011 - Email::Sender::Success::Partial 1.300011 - Email::Sender::Transport 1.300011 - Email::Sender::Transport::DevNull 1.300011 - Email::Sender::Transport::Failable 1.300011 - Email::Sender::Transport::Maildir 1.300011 - Email::Sender::Transport::Mbox 1.300011 - Email::Sender::Transport::Print 1.300011 - Email::Sender::Transport::SMTP 1.300011 - Email::Sender::Transport::SMTP::Persistent 1.300011 - Email::Sender::Transport::Sendmail 1.300011 - Email::Sender::Transport::Test 1.300011 - Email::Sender::Transport::Wrapper 1.300011 - Email::Sender::Util 1.300011 + Email-Sender-1.300021 + pathname: R/RJ/RJBS/Email-Sender-1.300021.tar.gz + provides: + Email::Sender 1.300021 + Email::Sender::Failure 1.300021 + Email::Sender::Failure::Multi 1.300021 + Email::Sender::Failure::Permanent 1.300021 + Email::Sender::Failure::Temporary 1.300021 + Email::Sender::Manual 1.300021 + Email::Sender::Manual::QuickStart 1.300021 + Email::Sender::Role::CommonSending 1.300021 + Email::Sender::Role::HasMessage 1.300021 + Email::Sender::Simple 1.300021 + Email::Sender::Success 1.300021 + Email::Sender::Success::Partial 1.300021 + Email::Sender::Transport 1.300021 + Email::Sender::Transport::DevNull 1.300021 + Email::Sender::Transport::Failable 1.300021 + Email::Sender::Transport::Maildir 1.300021 + Email::Sender::Transport::Mbox 1.300021 + Email::Sender::Transport::Print 1.300021 + Email::Sender::Transport::SMTP 1.300021 + Email::Sender::Transport::SMTP::Persistent 1.300021 + Email::Sender::Transport::Sendmail 1.300021 + Email::Sender::Transport::Test 1.300021 + Email::Sender::Transport::Wrapper 1.300021 + Email::Sender::Util 1.300021 Test::Email::SMTPRig undef Test::Email::Sender::Transport::FailEvery undef Test::Email::Sender::Util undef @@ -3094,12 +2569,12 @@ DISTRIBUTIONS Email::Abstract 3.006 Email::Address 0 Email::Simple 1.998 - ExtUtils::MakeMaker 6.30 + ExtUtils::MakeMaker 0 Fcntl 0 File::Basename 0 File::Path 2.06 File::Spec 0 - IO::File 0 + IO::File 1.11 IO::Handle 0 List::MoreUtils 0 Module::Runtime 0 @@ -3115,38 +2590,40 @@ DISTRIBUTIONS Throwable::Error 0.200003 Try::Tiny 0 strict 0 + utf8 0 warnings 0 - Email-Simple-2.203 - pathname: R/RJ/RJBS/Email-Simple-2.203.tar.gz + Email-Simple-2.208 + pathname: R/RJ/RJBS/Email-Simple-2.208.tar.gz provides: - Email::Simple 2.203 - Email::Simple::Creator 2.203 - Email::Simple::Header 2.203 + Email::Simple 2.208 + Email::Simple::Creator 2.208 + Email::Simple::Header 2.208 requirements: Carp 0 Email::Date::Format 0 - ExtUtils::MakeMaker 6.30 + ExtUtils::MakeMaker 0 + perl 5.008 strict 0 warnings 0 - Email-Valid-1.194 - pathname: R/RJ/RJBS/Email-Valid-1.194.tar.gz + Email-Valid-1.198 + pathname: R/RJ/RJBS/Email-Valid-1.198.tar.gz provides: - Email::Valid 1.194 + Email::Valid 1.198 requirements: ExtUtils::MakeMaker 0 Mail::Address 0 + Net::DNS 0 Scalar::Util 0 Test::More 0 perl 5.006 - Encode-Locale-1.03 - pathname: G/GA/GAAS/Encode-Locale-1.03.tar.gz + Encode-Locale-1.05 + pathname: G/GA/GAAS/Encode-Locale-1.05.tar.gz provides: - Encode::Locale 1.03 + Encode::Locale 1.05 requirements: Encode 2 Encode::Alias 0 ExtUtils::MakeMaker 0 - Test 0 perl 5.008 Encoding-FixLatin-1.04 pathname: G/GR/GRANTM/Encoding-FixLatin-1.04.tar.gz @@ -3155,48 +2632,49 @@ DISTRIBUTIONS requirements: ExtUtils::MakeMaker 6.30 Test::More 0.90 - Error-0.17022 - pathname: S/SH/SHLOMIF/Error-0.17022.tar.gz + Error-0.17024 + pathname: S/SH/SHLOMIF/Error-0.17024.tar.gz provides: - Error 0.17022 + Error 0.17024 requirements: - Module::Build 0.39 + Module::Build 0.280801 Scalar::Util 0 perl v5.6.0 strict 0 warnings 0 - Eval-Closure-0.11 - pathname: D/DO/DOY/Eval-Closure-0.11.tar.gz + Eval-Closure-0.13 + pathname: D/DO/DOY/Eval-Closure-0.13.tar.gz provides: - Eval::Closure 0.11 + Eval::Closure 0.13 requirements: Carp 0 Exporter 0 - ExtUtils::MakeMaker 6.30 + ExtUtils::MakeMaker 0 Scalar::Util 0 Try::Tiny 0 constant 0 overload 0 strict 0 warnings 0 - Exception-Class-1.38 - pathname: D/DR/DROLSKY/Exception-Class-1.38.tar.gz + Exception-Class-1.39 + pathname: D/DR/DROLSKY/Exception-Class-1.39.tar.gz provides: - Exception::Class 1.38 - Exception::Class::Base 1.38 + Exception::Class 1.39 + Exception::Class::Base 1.39 requirements: Class::Data::Inheritable 0.02 - Devel::StackTrace 1.20 - ExtUtils::MakeMaker 6.30 + Devel::StackTrace 2.00 + ExtUtils::MakeMaker 0 Scalar::Util 0 base 0 overload 0 + perl 5.008001 strict 0 warnings 0 - Exporter-Declare-0.113 - pathname: E/EX/EXODIST/Exporter-Declare-0.113.tar.gz + Exporter-Declare-0.114 + pathname: E/EX/EXODIST/Exporter-Declare-0.114.tar.gz provides: - Exporter::Declare 0.113 + Exporter::Declare 0.114 Exporter::Declare::Export undef Exporter::Declare::Export::Alias undef Exporter::Declare::Export::Generator undef @@ -3213,10 +2691,10 @@ DISTRIBUTIONS Test::Simple 0.88 aliased 0 perl v5.8.0 - Exporter-Lite-0.05 - pathname: N/NE/NEILB/Exporter-Lite-0.05.tar.gz + Exporter-Lite-0.07 + pathname: N/NE/NEILB/Exporter-Lite-0.07.tar.gz provides: - Exporter::Lite 0.05 + Exporter::Lite 0.07 requirements: ExtUtils::MakeMaker 6.3 perl 5.006 @@ -3230,23 +2708,19 @@ DISTRIBUTIONS requirements: ExtUtils::MakeMaker 6.17 perl 5.006001 - ExtUtils-Config-0.007 - pathname: L/LE/LEONT/ExtUtils-Config-0.007.tar.gz + ExtUtils-Config-0.008 + pathname: L/LE/LEONT/ExtUtils-Config-0.008.tar.gz provides: - ExtUtils::Config 0.007 + ExtUtils::Config 0.008 requirements: - Config 0 Data::Dumper 0 ExtUtils::MakeMaker 6.30 - File::Find 0 - File::Temp 0 - Test::More 0.88 strict 0 warnings 0 - ExtUtils-Depends-0.308 - pathname: X/XA/XAOC/ExtUtils-Depends-0.308.tar.gz + ExtUtils-Depends-0.404 + pathname: X/XA/XAOC/ExtUtils-Depends-0.404.tar.gz provides: - ExtUtils::Depends 0.308 + ExtUtils::Depends 0.404 requirements: Data::Dumper 0 ExtUtils::MakeMaker 0 @@ -3271,15 +2745,16 @@ DISTRIBUTIONS Text::ParseWords 3.24 strict 0 warnings 0 - ExtUtils-InstallPaths-0.010 - pathname: L/LE/LEONT/ExtUtils-InstallPaths-0.010.tar.gz + ExtUtils-InstallPaths-0.011 + pathname: L/LE/LEONT/ExtUtils-InstallPaths-0.011.tar.gz provides: - ExtUtils::InstallPaths 0.010 + ExtUtils::InstallPaths 0.011 requirements: Carp 0 ExtUtils::Config 0.002 - ExtUtils::MakeMaker 6.30 + ExtUtils::MakeMaker 0 File::Spec 0 + perl 5.006 strict 0 warnings 0 ExtUtils-MakeMaker-CPANfile-0.06 @@ -3293,19 +2768,19 @@ DISTRIBUTIONS Module::CPANfile 0 Test::More 0.88 version 0.76 - ExtUtils-ParseXS-3.24 - pathname: S/SM/SMUELLER/ExtUtils-ParseXS-3.24.tar.gz - provides: - ExtUtils::ParseXS 3.24 - ExtUtils::ParseXS::Constants 3.24 - ExtUtils::ParseXS::CountLines 3.24 - ExtUtils::ParseXS::Eval 3.24 - ExtUtils::ParseXS::Utilities 3.24 - ExtUtils::Typemaps 3.24 - ExtUtils::Typemaps::Cmd 3.24 - ExtUtils::Typemaps::InputMap 3.24 - ExtUtils::Typemaps::OutputMap 3.24 - ExtUtils::Typemaps::Type 3.24 + ExtUtils-ParseXS-3.30 + pathname: S/SM/SMUELLER/ExtUtils-ParseXS-3.30.tar.gz + provides: + ExtUtils::ParseXS 3.30 + ExtUtils::ParseXS::Constants 3.30 + ExtUtils::ParseXS::CountLines 3.30 + ExtUtils::ParseXS::Eval 3.30 + ExtUtils::ParseXS::Utilities 3.30 + ExtUtils::Typemaps 3.30 + ExtUtils::Typemaps::Cmd 3.30 + ExtUtils::Typemaps::InputMap 3.30 + ExtUtils::Typemaps::OutputMap 3.30 + ExtUtils::Typemaps::Type 3.30 requirements: Carp 0 Cwd 0 @@ -3317,42 +2792,41 @@ DISTRIBUTIONS File::Spec 0 Symbol 0 Test::More 0.47 - Facebook-Graph-1.0700 - pathname: R/RI/RIZEN/Facebook-Graph-1.0700.tar.gz - provides: - Facebook::Graph 1.0700 - Facebook::Graph::AccessToken 1.0700 - Facebook::Graph::AccessToken::Response 1.0700 - Facebook::Graph::Authorize 1.0700 - Facebook::Graph::BatchRequests 1.0700 - Facebook::Graph::Picture 1.0700 - Facebook::Graph::Publish 1.0700 - Facebook::Graph::Publish::Checkin 1.0700 - Facebook::Graph::Publish::Comment 1.0700 - Facebook::Graph::Publish::Event 1.0700 - Facebook::Graph::Publish::Like 1.0700 - Facebook::Graph::Publish::Link 1.0700 - Facebook::Graph::Publish::Note 1.0700 - Facebook::Graph::Publish::PageTab 1.0700 - Facebook::Graph::Publish::Photo 1.0700 - Facebook::Graph::Publish::Post 1.0700 - Facebook::Graph::Publish::RSVPAttending 1.0700 - Facebook::Graph::Publish::RSVPDeclined 1.0700 - Facebook::Graph::Publish::RSVPMaybe 1.0700 - Facebook::Graph::Query 1.0700 - Facebook::Graph::Request 1.0700 - Facebook::Graph::Response 1.0700 - Facebook::Graph::Role::Uri 1.0700 - Facebook::Graph::Session 1.0700 - requirements: - Any::Moose 0.13 - AnyEvent::HTTP::LWP::UserAgent 0.08 - AnyEvent::TLS 0 + Facebook-Graph-1.1100 + pathname: R/RI/RIZEN/Facebook-Graph-1.1100.tar.gz + provides: + Facebook::Graph 1.1100 + Facebook::Graph::AccessToken 1.1100 + Facebook::Graph::AccessToken::Response 1.1100 + Facebook::Graph::Authorize 1.1100 + Facebook::Graph::BatchRequests 1.1100 + Facebook::Graph::Page::Feed 1.1100 + Facebook::Graph::Picture 1.1100 + Facebook::Graph::Publish 1.1100 + Facebook::Graph::Publish::Checkin 1.1100 + Facebook::Graph::Publish::Comment 1.1100 + Facebook::Graph::Publish::Like 1.1100 + Facebook::Graph::Publish::Link 1.1100 + Facebook::Graph::Publish::PageTab 1.1100 + Facebook::Graph::Publish::Photo 1.1100 + Facebook::Graph::Publish::Post 1.1100 + Facebook::Graph::Publish::RSVPAttending 1.1100 + Facebook::Graph::Publish::RSVPDeclined 1.1100 + Facebook::Graph::Publish::RSVPMaybe 1.1100 + Facebook::Graph::Query 1.1100 + Facebook::Graph::Request 1.1100 + Facebook::Graph::Response 1.1100 + Facebook::Graph::Role::Uri 1.1100 + Facebook::Graph::Session 1.1100 + requirements: DateTime 0.61 DateTime::Format::Strptime 1.4000 ExtUtils::MakeMaker 6.30 JSON 2.16 + LWP::Protocol::https 6.06 + LWP::UserAgent 6.13 MIME::Base64::URLSafe 0.01 + Moo 0 Ouch 0.0400 Test::More 0 URI 1.54 @@ -3365,10 +2839,10 @@ DISTRIBUTIONS Test::Builder 0 Test::More 0 perl 5.006 - File-ConfigDir-0.016 - pathname: R/RE/REHSACK/File-ConfigDir-0.016.tar.gz + File-ConfigDir-0.017 + pathname: R/RE/REHSACK/File-ConfigDir-0.017.tar.gz provides: - File::ConfigDir 0.016 + File::ConfigDir 0.017 requirements: Carp 0 ExtUtils::MakeMaker 0 @@ -3409,18 +2883,17 @@ DISTRIBUTIONS Number::Compare 0 Test::More 0 Text::Glob 0.07 - File-Find-Rule-Perl-1.13 - pathname: A/AD/ADAMK/File-Find-Rule-Perl-1.13.tar.gz + File-Find-Rule-Perl-1.15 + pathname: E/ET/ETHER/File-Find-Rule-Perl-1.15.tar.gz provides: - File::Find::Rule::Perl 1.13 + File::Find::Rule::Perl 1.15 requirements: - ExtUtils::MakeMaker 6.36 + ExtUtils::MakeMaker 0 File::Find::Rule 0.20 File::Spec 0.82 Params::Util 0.38 Parse::CPAN::Meta 1.38 - Test::More 0.47 - perl 5.00503 + perl 5.006 File-HomeDir-1.00 pathname: A/AD/ADAMK/File-HomeDir-1.00.tar.gz provides: @@ -3494,28 +2967,28 @@ DISTRIBUTIONS File::Spec 0.80 perl 5.008001 warnings 0 - File-ShareDir-Install-0.08 - pathname: G/GW/GWYN/File-ShareDir-Install-0.08.tar.gz + File-ShareDir-Install-0.10 + pathname: G/GW/GWYN/File-ShareDir-Install-0.10.tar.gz provides: - File::ShareDir::Install 0.08 + File::ShareDir::Install 0.10 requirements: ExtUtils::MakeMaker 6.11 File::Spec 0 IO::Dir 0 - File-ShareDir-ProjectDistDir-1.000001 - pathname: K/KE/KENTNL/File-ShareDir-ProjectDistDir-1.000001.tar.gz + File-ShareDir-ProjectDistDir-1.000008 + pathname: K/KE/KENTNL/File-ShareDir-ProjectDistDir-1.000008.tar.gz provides: - File::ShareDir::ProjectDistDir 1.000001 + File::ShareDir::ProjectDistDir 1.000008 requirements: Carp 0 - ExtUtils::MakeMaker 6.30 + ExtUtils::MakeMaker 0 File::ShareDir 0 Path::FindDev 0 Path::IsDev 0 Path::Tiny 0 Sub::Exporter 0 + perl 5.006 strict 0 - utf8 0 warnings 0 File-Slurp-9999.19 pathname: U/UR/URI/File-Slurp-9999.19.tar.gz @@ -3528,34 +3001,42 @@ DISTRIBUTIONS ExtUtils::MakeMaker 0 Fcntl 0 POSIX 0 - File-Spec-Native-1.003 - pathname: R/RW/RWSTAUNER/File-Spec-Native-1.003.tar.gz + File-Slurp-Tiny-0.004 + pathname: L/LE/LEONT/File-Slurp-Tiny-0.004.tar.gz provides: - File::Spec::Native 1.003 + File::Slurp::Tiny 0.004 requirements: - ExtUtils::MakeMaker 6.30 - File::Find 0 - File::Spec 0 + Carp 0 + Exporter 5.57 + ExtUtils::MakeMaker 0 File::Spec::Functions 0 - File::Temp 0 - Test::More 0.88 + FileHandle 0 + perl 5.008001 + strict 0 + warnings 0 + File-Spec-Native-1.004 + pathname: R/RW/RWSTAUNER/File-Spec-Native-1.004.tar.gz + provides: + File::Spec::Native 1.004 + requirements: + ExtUtils::MakeMaker 0 + File::Spec 0 + perl 5.006 + strict 0 + warnings 0 File-Sync-0.11 pathname: B/BR/BRIANSKI/File-Sync-0.11.tar.gz provides: File::Sync 0.11 requirements: ExtUtils::MakeMaker 0 - File-Which-1.09 - pathname: A/AD/ADAMK/File-Which-1.09.tar.gz + File-Which-1.19 + pathname: P/PL/PLICEASE/File-Which-1.19.tar.gz provides: - File::Which 1.09 + File::Which 1.19 requirements: - Exporter 0 ExtUtils::MakeMaker 0 - File::Spec 0.60 - Getopt::Std 0 - Test::More 0.80 - Test::Script 1.05 + perl 5.006 File-Zglob-0.11 pathname: T/TO/TOKUHIROM/File-Zglob-0.11.tar.gz provides: @@ -3593,12 +3074,12 @@ DISTRIBUTIONS ExtUtils::MakeMaker 0 File::Spec 0 Test::More 0 - Getopt-Long-2.45 - pathname: J/JV/JV/Getopt-Long-2.45.tar.gz + Getopt-Long-2.48 + pathname: J/JV/JV/Getopt-Long-2.48.tar.gz provides: - Getopt::Long 2.45 - Getopt::Long::CallBack 2.45 - Getopt::Long::Parser 2.45 + Getopt::Long 2.48 + Getopt::Long::CallBack 2.48 + Getopt::Long::Parser 2.48 requirements: ExtUtils::MakeMaker 0 Pod::Usage 1.14 @@ -3631,10 +3112,10 @@ DISTRIBUTIONS IPC::Open3 0 Package::Pkg 0.0014 Test::Most 0 - Git-Helpers-0.000002 - pathname: O/OA/OALDERS/Git-Helpers-0.000002.tar.gz + Git-Helpers-0.000003 + pathname: O/OA/OALDERS/Git-Helpers-0.000003.tar.gz provides: - Git::Helpers 0.000002 + Git::Helpers 0.000003 requirements: Carp 0 ExtUtils::MakeMaker 0 @@ -3663,10 +3144,10 @@ DISTRIBUTIONS strict 0 subs 0 warnings 0 - Graph-0.96 - pathname: J/JH/JHI/Graph-0.96.tar.gz + Graph-0.9704 + pathname: J/JH/JHI/Graph-0.9704.tar.gz provides: - Graph 0.96 + Graph 0.9704 Graph::AdjacencyMap undef Graph::AdjacencyMap::Heavy undef Graph::AdjacencyMap::Light undef @@ -3675,9 +3156,9 @@ DISTRIBUTIONS Graph::Attribute undef Graph::BitMatrix undef Graph::Directed undef - Graph::MSTHeapElem 0.01 + Graph::MSTHeapElem undef Graph::Matrix undef - Graph::SPTHeapElem 0.01 + Graph::SPTHeapElem undef Graph::TransitiveClosure undef Graph::TransitiveClosure::Matrix undef Graph::Traversal undef @@ -3685,8 +3166,8 @@ DISTRIBUTIONS Graph::Traversal::DFS undef Graph::Undirected undef Graph::UnionFind undef - Heap071::Elem 0.71 - Heap071::Fibonacci 0.71 + Heap071::Elem undef + Heap071::Fibonacci undef requirements: ExtUtils::MakeMaker 0 List::Util 0 @@ -3695,6 +3176,7 @@ DISTRIBUTIONS Scalar::Util 0 Storable 2.05 Test::More 0 + perl 5.006 Graph-Centrality-Pagerank-1.05 pathname: K/KU/KUBINA/Graph-Centrality-Pagerank-1.05.tar.gz provides: @@ -3719,10 +3201,10 @@ DISTRIBUTIONS URI::Escape 0 parent 0 perl v5.6.0 - Guard-1.022 - pathname: M/ML/MLEHMANN/Guard-1.022.tar.gz + Guard-1.023 + pathname: M/ML/MLEHMANN/Guard-1.023.tar.gz provides: - Guard 1.022 + Guard 1.023 requirements: ExtUtils::MakeMaker 0 HTML-Form-6.03 @@ -3835,20 +3317,20 @@ DISTRIBUTIONS base 0 integer 0 perl 5.008 - HTTP-Body-1.19 - pathname: G/GE/GETTY/HTTP-Body-1.19.tar.gz - provides: - HTTP::Body 1.19 - HTTP::Body::MultiPart 1.19 - HTTP::Body::OctetStream 1.19 - HTTP::Body::UrlEncoded 1.19 - HTTP::Body::XForms 1.19 - HTTP::Body::XFormsMultipart 1.19 + HTTP-Body-1.22 + pathname: G/GE/GETTY/HTTP-Body-1.22.tar.gz + provides: + HTTP::Body 1.22 + HTTP::Body::MultiPart 1.22 + HTTP::Body::OctetStream 1.22 + HTTP::Body::UrlEncoded 1.22 + HTTP::Body::XForms 1.22 + HTTP::Body::XFormsMultipart 1.22 PAML undef requirements: Carp 0 Digest::MD5 0 - ExtUtils::MakeMaker 6.30 + ExtUtils::MakeMaker 0 File::Temp 0.14 HTTP::Headers 0 IO::File 1.14 @@ -3905,30 +3387,32 @@ DISTRIBUTIONS ExtUtils::MakeMaker 0 Time::Local 0 perl 5.006002 - HTTP-Lite-2.43 - pathname: N/NE/NEILB/HTTP-Lite-2.43.tar.gz + HTTP-Headers-Fast-0.19 + pathname: T/TO/TOKUHIROM/HTTP-Headers-Fast-0.19.tar.gz provides: - HTTP::Lite 2.43 + HTTP::Headers::Fast 0.19 requirements: - ExtUtils::MakeMaker 6.42 - perl 5.005 - HTTP-Message-6.06 - pathname: G/GA/GAAS/HTTP-Message-6.06.tar.gz - provides: - HTTP::Config 6.00 - HTTP::Headers 6.05 - HTTP::Headers::Auth 6.00 - HTTP::Headers::ETag 6.00 - HTTP::Headers::Util 6.03 - HTTP::Message 6.06 - HTTP::Request 6.00 - HTTP::Request::Common 6.04 - HTTP::Response 6.04 - HTTP::Status 6.03 + HTTP::Date 0 + Module::Build 0.38 + perl 5.008001 + HTTP-Message-6.11 + pathname: E/ET/ETHER/HTTP-Message-6.11.tar.gz + provides: + HTTP::Config 6.11 + HTTP::Headers 6.11 + HTTP::Headers::Auth 6.11 + HTTP::Headers::ETag 6.11 + HTTP::Headers::Util 6.11 + HTTP::Message 6.11 + HTTP::Request 6.11 + HTTP::Request::Common 6.11 + HTTP::Response 6.11 + HTTP::Status 6.11 requirements: Compress::Raw::Zlib 0 Encode 2.21 Encode::Locale 1 + Exporter 5.57 ExtUtils::MakeMaker 0 HTTP::Date 6 IO::Compress::Bzip2 2.021 @@ -3952,13 +3436,13 @@ DISTRIBUTIONS ExtUtils::MakeMaker 0 HTTP::Headers 6 perl 5.008001 - HTTP-Parser-XS-0.16 - pathname: K/KA/KAZUHO/HTTP-Parser-XS-0.16.tar.gz + HTTP-Parser-XS-0.17 + pathname: K/KA/KAZUHO/HTTP-Parser-XS-0.17.tar.gz provides: - HTTP::Parser::XS 0.16 + HTTP::Parser::XS 0.17 HTTP::Parser::XS::PP undef requirements: - ExtUtils::MakeMaker 6.42 + ExtUtils::MakeMaker 6.36 Test::More 0.96 HTTP-Request-AsCGI-1.2 pathname: F/FL/FLORA/HTTP-Request-AsCGI-1.2.tar.gz @@ -3973,16 +3457,16 @@ DISTRIBUTIONS IO::File 0 Test::More 0 URI::Escape 0 - HTTP-Server-Simple-0.44 - pathname: J/JE/JESSE/HTTP-Server-Simple-0.44.tar.gz + HTTP-Server-Simple-0.51 + pathname: B/BP/BPS/HTTP-Server-Simple-0.51.tar.gz provides: - HTTP::Server::Simple 0.44 + HTTP::Server::Simple 0.51 HTTP::Server::Simple::CGI undef HTTP::Server::Simple::CGI::Environment undef requirements: CGI 0 - ExtUtils::MakeMaker 6.42 - Socket 0 + ExtUtils::MakeMaker 6.36 + Socket 1.94 Test::More 0 HTTP-Server-Simple-PSGI-0.16 pathname: M/MI/MIYAGAWA/HTTP-Server-Simple-PSGI-0.16.tar.gz @@ -3994,10 +3478,10 @@ DISTRIBUTIONS requirements: ExtUtils::MakeMaker 6.30 HTTP::Server::Simple 0.42 - HTTP-Tiny-0.043 - pathname: D/DA/DAGOLDEN/HTTP-Tiny-0.043.tar.gz + HTTP-Tiny-0.056 + pathname: D/DA/DAGOLDEN/HTTP-Tiny-0.056.tar.gz provides: - HTTP::Tiny 0.043 + HTTP::Tiny 0.056 requirements: Carp 0 ExtUtils::MakeMaker 6.17 @@ -4006,6 +3490,7 @@ DISTRIBUTIONS MIME::Base64 0 Time::Local 0 bytes 0 + perl 5.006 strict 0 warnings 0 Hash-Merge-0.200 @@ -4031,52 +3516,58 @@ DISTRIBUTIONS Hash::MoreUtils 0.05 requirements: Test::More 0.90 - Hash-MultiValue-0.15 - pathname: M/MI/MIYAGAWA/Hash-MultiValue-0.15.tar.gz + Hash-MultiValue-0.16 + pathname: A/AR/ARISTOTLE/Hash-MultiValue-0.16.tar.gz provides: - Hash::MultiValue 0.15 + Hash::MultiValue 0.16 requirements: - ExtUtils::MakeMaker 6.30 - Hijk-0.19 - pathname: A/AV/AVAR/Hijk-0.19.tar.gz + ExtUtils::MakeMaker 0 + perl 5.008001 + Hijk-0.24 + pathname: A/AV/AVAR/Hijk-0.24.tar.gz provides: - Hijk 0.19 + Hijk 0.24 requirements: CPAN::Meta 0 ExtUtils::MakeMaker 6.36 - Hook-LexWrap-0.24 - pathname: C/CH/CHORNY/Hook-LexWrap-0.24.tar.gz + Time::HiRes 0 + Hook-LexWrap-0.25 + pathname: E/ET/ETHER/Hook-LexWrap-0.25.tar.gz provides: - Hook::LexWrap 0.24 + Hook::LexWrap 0.25 requirements: - Test::More 0 + Carp 0 + ExtUtils::MakeMaker 0 + Module::Build::Tiny 0.039 + overload 0 perl 5.006 - IO-All-0.61 - pathname: F/FR/FREW/IO-All-0.61.tar.gz - provides: - IO::All 0.61 - IO::All::Base 0.61 - IO::All::DBM 0.61 - IO::All::Dir 0.61 - IO::All::File 0.61 - IO::All::Filesys 0.61 - IO::All::Link 0.61 - IO::All::MLDBM 0.61 - IO::All::Pipe 0.61 - IO::All::STDIO 0.61 - IO::All::Socket 0.61 - IO::All::String 0.61 - IO::All::Temp 0.61 - IO_All_Test undef - IO_Dumper undef + strict 0 + warnings 0 + IO-All-0.86 + pathname: I/IN/INGY/IO-All-0.86.tar.gz + provides: + IO::All 0.86 + IO::All::Base undef + IO::All::DBM undef + IO::All::Dir undef + IO::All::File undef + IO::All::Filesys undef + IO::All::Link undef + IO::All::MLDBM undef + IO::All::Pipe undef + IO::All::STDIO undef + IO::All::Socket undef + IO::All::String undef + IO::All::Temp undef requirements: Cwd 0 - ExtUtils::MakeMaker 6.30 + ExtUtils::MakeMaker 0 Scalar::Util 0 - IO-CaptureOutput-1.1103 - pathname: D/DA/DAGOLDEN/IO-CaptureOutput-1.1103.tar.gz + perl 5.008001 + IO-CaptureOutput-1.1104 + pathname: D/DA/DAGOLDEN/IO-CaptureOutput-1.1104.tar.gz provides: - IO::CaptureOutput 1.1103 + IO::CaptureOutput 1.1104 requirements: Carp 0 Exporter 0 @@ -4084,6 +3575,7 @@ DISTRIBUTIONS File::Basename 0 File::Temp 0.16 Symbol 0 + perl 5.006 strict 0 vars 0 warnings 0 @@ -4101,18 +3593,15 @@ DISTRIBUTIONS POSIX 0 Path::Class 0 Time::HiRes 0 - IO-HTML-1.00 - pathname: C/CJ/CJM/IO-HTML-1.00.tar.gz + IO-HTML-1.001 + pathname: C/CJ/CJM/IO-HTML-1.001.tar.gz provides: - IO::HTML 1.00 + IO::HTML 1.001 requirements: Carp 0 Encode 2.10 Exporter 5.57 ExtUtils::MakeMaker 6.30 - File::Temp 0 - Scalar::Util 0 - Test::More 0.88 IO-Interactive-0.0.6 pathname: B/BD/BDFOY/IO-Interactive-0.0.6.tar.gz provides: @@ -4121,18 +3610,26 @@ DISTRIBUTIONS ExtUtils::MakeMaker 0 Test::More 0 version 0 - IO-Socket-SSL-1.992 - pathname: S/SU/SULLR/IO-Socket-SSL-1.992.tar.gz + IO-Socket-IP-0.37 + pathname: P/PE/PEVANS/IO-Socket-IP-0.37.tar.gz + provides: + IO::Socket::IP 0.37 + requirements: + IO::Socket 0 + Socket 1.97 + Test::More 0.88 + IO-Socket-SSL-2.020 + pathname: S/SU/SULLR/IO-Socket-SSL-2.020.tar.gz provides: - IO::Socket::SSL 1.992 - IO::Socket::SSL::Intercept 1.93 - IO::Socket::SSL::OCSP_Cache 1.992 - IO::Socket::SSL::OCSP_Resolver 1.992 + IO::Socket::SSL 2.020 + IO::Socket::SSL::Intercept 2.014 + IO::Socket::SSL::OCSP_Cache 2.020 + IO::Socket::SSL::OCSP_Resolver 2.020 IO::Socket::SSL::PublicSuffix undef - IO::Socket::SSL::SSL_Context 1.992 - IO::Socket::SSL::SSL_HANDLE 1.992 - IO::Socket::SSL::Session_Cache 1.992 - IO::Socket::SSL::Utils 0.02 + IO::Socket::SSL::SSL_Context 2.020 + IO::Socket::SSL::SSL_HANDLE 2.020 + IO::Socket::SSL::Session_Cache 2.020 + IO::Socket::SSL::Utils 2.014 requirements: ExtUtils::MakeMaker 0 Mozilla::CA 0 @@ -4144,22 +3641,20 @@ DISTRIBUTIONS IO::String 1.08 requirements: ExtUtils::MakeMaker 0 - IO-stringy-2.110 - pathname: D/DS/DSKOLL/IO-stringy-2.110.tar.gz + IO-stringy-2.111 + pathname: D/DS/DSKOLL/IO-stringy-2.111.tar.gz provides: - Common undef - ExtUtils::TBone 1.1 - IO::AtomicFile 2.110 + IO::AtomicFile 2.111 IO::Clever 1.01 - IO::InnerFile 2.110 - IO::Lines 2.110 - IO::Scalar 2.110 - IO::ScalarArray 2.110 - IO::Stringy 2.110 - IO::Wrap 2.110 - IO::WrapTie 2.110 - IO::WrapTie::Master 2.110 - IO::WrapTie::Slave 2.110 + IO::InnerFile 2.111 + IO::Lines 2.111 + IO::Scalar 2.111 + IO::ScalarArray 2.111 + IO::Stringy 2.111 + IO::Wrap 2.111 + IO::WrapTie 2.111 + IO::WrapTie::Master 2.111 + IO::WrapTie::Slave 2.111 requirements: ExtUtils::MakeMaker 0 IPC-Run-0.94 @@ -4198,13 +3693,6 @@ DISTRIBUTIONS re 0 strict 0 warnings 0 - Import-Into-1.002002 - pathname: E/ET/ETHER/Import-Into-1.002002.tar.gz - provides: - Import::Into 1.002002 - requirements: - ExtUtils::MakeMaker 0 - perl 5.006 Iterator-0.03 pathname: R/RO/ROODE/Iterator-0.03.tar.gz provides: @@ -4231,27 +3719,19 @@ DISTRIBUTIONS requirements: ExtUtils::MakeMaker 0 Test::More 0 - JSON-Any-1.34 - pathname: E/ET/ETHER/JSON-Any-1.34.tar.gz + JSON-MaybeXS-1.003005 + pathname: E/ET/ETHER/JSON-MaybeXS-1.003005.tar.gz provides: - JSON::Any 1.34 + JSON::MaybeXS 1.003005 requirements: Carp 0 - ExtUtils::MakeMaker 6.30 - constant 0 - strict 0 - warnings 0 - JSON-MaybeXS-1.002002 - pathname: E/ET/ETHER/JSON-MaybeXS-1.002002.tar.gz - provides: - JSON::MaybeXS 1.002002 - requirements: Cpanel::JSON::XS 2.3310 ExtUtils::CBuilder 0.27 ExtUtils::MakeMaker 0 File::Spec 0 File::Temp 0 JSON::PP 2.27202 + Scalar::Util 0 perl 5.006 JSON-XS-3.01 pathname: M/ML/MLEHMANN/JSON-XS-3.01.tar.gz @@ -4261,11 +3741,11 @@ DISTRIBUTIONS ExtUtils::MakeMaker 0 Types::Serialiser 0 common::sense 0 - LWP-ConsoleLogger-0.000015 - pathname: O/OA/OALDERS/LWP-ConsoleLogger-0.000015.tar.gz + LWP-ConsoleLogger-0.000020 + pathname: O/OA/OALDERS/LWP-ConsoleLogger-0.000020.tar.gz provides: - LWP::ConsoleLogger 0.000015 - LWP::ConsoleLogger::Easy 0.000015 + LWP::ConsoleLogger 0.000020 + LWP::ConsoleLogger::Easy 0.000020 requirements: Data::Printer 0 DateTime 0 @@ -4276,9 +3756,11 @@ DISTRIBUTIONS JSON::MaybeXS 0 Log::Dispatch 0 Module::Build 0.28 + Module::Load::Conditional 0 Moo 0 MooX::StrictConstructor 0 Parse::MIME 0 + String::Trim 0 Sub::Exporter 0 Term::Size::Any 0 Text::SimpleTable::AutoWidth 0.09 @@ -4299,22 +3781,23 @@ DISTRIBUTIONS requirements: ExtUtils::MakeMaker 0 perl 5.006002 - LWP-Protocol-https-6.04 - pathname: G/GA/GAAS/LWP-Protocol-https-6.04.tar.gz + LWP-Protocol-https-6.06 + pathname: M/MS/MSCHILLI/LWP-Protocol-https-6.06.tar.gz provides: - LWP::Protocol::https 6.04 - LWP::Protocol::https::Socket 6.04 + LWP::Protocol::https 6.06 + LWP::Protocol::https::Socket 6.06 requirements: ExtUtils::MakeMaker 0 IO::Socket::SSL 1.54 - LWP::UserAgent 6.04 + LWP::UserAgent 6.06 Mozilla::CA 20110101 Net::HTTPS 6 perl 5.008001 - LWP-UserAgent-Paranoid-0.95 - pathname: T/TS/TSIBLEY/LWP-UserAgent-Paranoid-0.95.tar.gz + LWP-UserAgent-Paranoid-0.97 + pathname: T/TS/TSIBLEY/LWP-UserAgent-Paranoid-0.97.tar.gz provides: - LWP::UserAgent::Paranoid 0.95 + LWP::UserAgent::Paranoid 0.97 + LWP::UserAgent::Paranoid::Compat undef LWP::UserAgent::Paranoid::Test undef requirements: ExtUtils::MakeMaker 6.36 @@ -4355,72 +3838,67 @@ DISTRIBUTIONS Net::DNS::Paranoid 0.07 parent 0 perl 5.008008 - Lexical-SealRequireHints-0.007 - pathname: Z/ZE/ZEFRAM/Lexical-SealRequireHints-0.007.tar.gz + Lexical-SealRequireHints-0.009 + pathname: Z/ZE/ZEFRAM/Lexical-SealRequireHints-0.009.tar.gz provides: - Lexical::SealRequireHints 0.007 + Lexical::SealRequireHints 0.009 requirements: Module::Build 0 - Test::More 0 + Test::More 0.41 perl 5.006 strict 0 warnings 0 - Lingua-EN-Inflect-1.895 - pathname: D/DC/DCONWAY/Lingua-EN-Inflect-1.895.tar.gz + Lingua-EN-Inflect-1.899 + pathname: D/DC/DCONWAY/Lingua-EN-Inflect-1.899.tar.gz provides: - Lingua::EN::Inflect 1.895 + Lingua::EN::Inflect 1.899 requirements: Test::More 0 - version 0 - List-AllUtils-0.09 - pathname: D/DR/DROLSKY/List-AllUtils-0.09.tar.gz + List-Compare-0.53 + pathname: J/JK/JKEENAN/List-Compare-0.53.tar.gz provides: - List::AllUtils 0.09 + List::Compare 0.53 + List::Compare::Accelerated 0.53 + List::Compare::Base::_Auxiliary 0.53 + List::Compare::Base::_Engine 0.53 + List::Compare::Functional 0.53 + List::Compare::Multiple 0.53 + List::Compare::Multiple::Accelerated 0.53 requirements: - Exporter 0 ExtUtils::MakeMaker 0 - List::MoreUtils 0.28 - List::Util 1.31 - base 0 - strict 0 - warnings 0 - List-Compare-0.49 - pathname: J/JK/JKEENAN/List-Compare-0.49.tar.gz + List-MoreUtils-0.413 + pathname: R/RE/REHSACK/List-MoreUtils-0.413.tar.gz provides: - List::Compare 0.49 - List::Compare::Accelerated 0.49 - List::Compare::Base::_Auxiliary 0.49 - List::Compare::Base::_Engine 0.49 - List::Compare::Functional 0.49 - List::Compare::Multiple 0.49 - List::Compare::Multiple::Accelerated 0.49 + List::MoreUtils 0.413 + List::MoreUtils::PP 0.413 + List::MoreUtils::XS 0.413 requirements: + Carp 0 + Exporter::Tiny 0.038 ExtUtils::MakeMaker 0 - List-MoreUtils-0.33 - pathname: A/AD/ADAMK/List-MoreUtils-0.33.tar.gz - provides: - List::MoreUtils 0.33 - requirements: - ExtUtils::CBuilder 0.27 - ExtUtils::MakeMaker 6.52 - Test::More 0.82 - perl 5.00503 - Log-Any-1.03 - pathname: D/DA/DAGOLDEN/Log-Any-1.03.tar.gz - provides: - Log::Any 1.03 - Log::Any::Adapter 1.03 - Log::Any::Adapter::Base 1.03 - Log::Any::Adapter::File 1.03 - Log::Any::Adapter::Null 1.03 - Log::Any::Adapter::Stderr 1.03 - Log::Any::Adapter::Stdout 1.03 - Log::Any::Adapter::Test 1.03 - Log::Any::Adapter::Util 1.03 - Log::Any::Manager 1.03 - Log::Any::Proxy 1.03 - Log::Any::Proxy::Test 1.03 - Log::Any::Test 1.03 + File::Basename 0 + File::Copy 0 + File::Path 0 + File::Spec 0 + IPC::Cmd 0 + XSLoader 0 + base 0 + Log-Any-1.032 + pathname: D/DA/DAGOLDEN/Log-Any-1.032.tar.gz + provides: + Log::Any 1.032 + Log::Any::Adapter 1.032 + Log::Any::Adapter::Base 1.032 + Log::Any::Adapter::File 1.032 + Log::Any::Adapter::Null 1.032 + Log::Any::Adapter::Stderr 1.032 + Log::Any::Adapter::Stdout 1.032 + Log::Any::Adapter::Test 1.032 + Log::Any::Adapter::Util 1.032 + Log::Any::Manager 1.032 + Log::Any::Proxy 1.032 + Log::Any::Proxy::Test 1.032 + Log::Any::Test 1.032 requirements: B 0 Carp 0 @@ -4435,22 +3913,22 @@ DISTRIBUTIONS perl 5.008001 strict 0 warnings 0 - Log-Contextual-0.006003 - pathname: F/FR/FREW/Log-Contextual-0.006003.tar.gz + Log-Contextual-0.006005 + pathname: F/FR/FREW/Log-Contextual-0.006005.tar.gz provides: BaseLogger undef DefaultImportLogger undef DumbLogger2 undef - Log::Contextual 0.006003 - Log::Contextual::Easy::Default 0.006003 - Log::Contextual::Easy::Package 0.006003 - Log::Contextual::Role::Router 0.006003 - Log::Contextual::Role::Router::SetLogger 0.006003 - Log::Contextual::Role::Router::WithLogger 0.006003 - Log::Contextual::Router 0.006003 - Log::Contextual::SimpleLogger 0.006003 - Log::Contextual::TeeLogger 0.006003 - Log::Contextual::WarnLogger 0.006003 + Log::Contextual 0.006005 + Log::Contextual::Easy::Default 0.006005 + Log::Contextual::Easy::Package 0.006005 + Log::Contextual::Role::Router 0.006005 + Log::Contextual::Role::Router::SetLogger 0.006005 + Log::Contextual::Role::Router::WithLogger 0.006005 + Log::Contextual::Router 0.006005 + Log::Contextual::SimpleLogger 0.006005 + Log::Contextual::TeeLogger 0.006005 + Log::Contextual::WarnLogger 0.006005 My::Module undef My::Module2 undef TestExporter undef @@ -4459,48 +3937,49 @@ DISTRIBUTIONS Carp 0 Data::Dumper::Concise 0 Exporter::Declare 0.111 - ExtUtils::MakeMaker 6.30 + ExtUtils::MakeMaker 0 Moo 1.003 Scalar::Util 0 - Log-Dispatch-2.44 - pathname: D/DR/DROLSKY/Log-Dispatch-2.44.tar.gz - provides: - Log::Dispatch 2.44 - Log::Dispatch::ApacheLog 2.44 - Log::Dispatch::Base 2.44 - Log::Dispatch::Code 2.44 - Log::Dispatch::Email 2.44 - Log::Dispatch::Email::MIMELite 2.44 - Log::Dispatch::Email::MailSend 2.44 - Log::Dispatch::Email::MailSender 2.44 - Log::Dispatch::Email::MailSendmail 2.44 - Log::Dispatch::File 2.44 - Log::Dispatch::File::Locked 2.44 - Log::Dispatch::Handle 2.44 - Log::Dispatch::Null 2.44 - Log::Dispatch::Output 2.44 - Log::Dispatch::Screen 2.44 - Log::Dispatch::Syslog 2.44 + Log-Dispatch-2.51 + pathname: D/DR/DROLSKY/Log-Dispatch-2.51.tar.gz + provides: + Log::Dispatch 2.51 + Log::Dispatch::ApacheLog 2.51 + Log::Dispatch::Base 2.51 + Log::Dispatch::Code 2.51 + Log::Dispatch::Email 2.51 + Log::Dispatch::Email::MIMELite 2.51 + Log::Dispatch::Email::MailSend 2.51 + Log::Dispatch::Email::MailSender 2.51 + Log::Dispatch::Email::MailSendmail 2.51 + Log::Dispatch::File 2.51 + Log::Dispatch::File::Locked 2.51 + Log::Dispatch::Handle 2.51 + Log::Dispatch::Null 2.51 + Log::Dispatch::Output 2.51 + Log::Dispatch::Screen 2.51 + Log::Dispatch::Syslog 2.51 requirements: Carp 0 Devel::GlobalDestruction 0 Dist::CheckConflicts 0.02 + Encode 0 ExtUtils::MakeMaker 0 Fcntl 0 + IO::Handle 0 Module::Runtime 0 - Params::Validate 0.15 + Params::Validate 1.03 Scalar::Util 0 Sys::Syslog 0.28 base 0 + perl 5.006 strict 0 - threads 0 - threads::shared 0 warnings 0 - Log-Log4perl-1.44 - pathname: M/MS/MSCHILLI/Log-Log4perl-1.44.tar.gz + Log-Log4perl-1.46 + pathname: M/MS/MSCHILLI/Log-Log4perl-1.46.tar.gz provides: L4pResurrectable 0.01 - Log::Log4perl 1.44 + Log::Log4perl 1.46 Log::Log4perl::Appender undef Log::Log4perl::Appender::DBI undef Log::Log4perl::Appender::File undef @@ -4552,6 +4031,46 @@ DISTRIBUTIONS File::Path 2.0606 File::Spec 0.82 Test::More 0.45 + MCE-1.608 + pathname: M/MA/MARIOROY/MCE-1.608.tar.gz + provides: + MCE 1.608 + MCE::Candy 1.608 + MCE::Core::Input::Generator 1.608 + MCE::Core::Input::Handle 1.608 + MCE::Core::Input::Iterator 1.608 + MCE::Core::Input::Request 1.608 + MCE::Core::Input::Sequence 1.608 + MCE::Core::Manager 1.608 + MCE::Core::Validation 1.608 + MCE::Core::Worker 1.608 + MCE::Flow 1.608 + MCE::Grep 1.608 + MCE::Loop 1.608 + MCE::Map 1.608 + MCE::Mutex 1.608 + MCE::Queue 1.608 + MCE::Relay 1.608 + MCE::Signal 1.608 + MCE::Step 1.608 + MCE::Stream 1.608 + MCE::Subs 1.608 + MCE::Util 1.608 + requirements: + Carp 0 + ExtUtils::MakeMaker 0 + Fcntl 0 + File::Path 0 + Getopt::Long 0 + IO::Handle 0 + Scalar::Util 0 + Socket 0 + Storable 2.04 + Symbol 0 + Time::HiRes 0 + bytes 0 + constant 0 + perl 5.008 MIME-Base64-URLSafe-0.01 pathname: K/KA/KAZUHO/MIME-Base64-URLSafe-0.01.tar.gz provides: @@ -4569,15 +4088,17 @@ DISTRIBUTIONS ExtUtils::MakeMaker 6.42 Test::More 0 perl 5.005 - MIME-Types-2.04 - pathname: M/MA/MARKOV/MIME-Types-2.04.tar.gz + MIME-Types-2.11 + pathname: M/MA/MARKOV/MIME-Types-2.11.tar.gz provides: - MIME::Type 2.04 - MIME::Types 2.04 + MIME::Type 2.11 + MIME::Types 2.11 + MojoX::MIME::Types 2.11 requirements: ExtUtils::MakeMaker 0 File::Basename 0 File::Spec 0 + List::Util 0 Test::More 0.47 MRO-Compat-0.12 pathname: B/BO/BOBTFISH/MRO-Compat-0.12.tar.gz @@ -4587,31 +4108,31 @@ DISTRIBUTIONS ExtUtils::MakeMaker 6.59 Test::More 0.47 perl 5.006 - MailTools-2.13 - pathname: M/MA/MARKOV/MailTools-2.13.tar.gz + MailTools-2.14 + pathname: M/MA/MARKOV/MailTools-2.14.tar.gz provides: Mail undef - Mail::Address 2.13 - Mail::Cap 2.13 - Mail::Field 2.13 - Mail::Field::AddrList 2.13 - Mail::Field::Date 2.13 - Mail::Field::Generic 2.13 - Mail::Filter 2.13 - Mail::Header 2.13 - Mail::Internet 2.13 - Mail::Mailer 2.13 - Mail::Mailer::qmail 2.13 - Mail::Mailer::rfc822 2.13 - Mail::Mailer::sendmail 2.13 - Mail::Mailer::smtp 2.13 - Mail::Mailer::smtp::pipe 2.13 - Mail::Mailer::smtps 2.13 - Mail::Mailer::smtps::pipe 2.13 - Mail::Mailer::testfile 2.13 - Mail::Mailer::testfile::pipe 2.13 - Mail::Send 2.13 - Mail::Util 2.13 + Mail::Address 2.14 + Mail::Cap 2.14 + Mail::Field 2.14 + Mail::Field::AddrList 2.14 + Mail::Field::Date 2.14 + Mail::Field::Generic 2.14 + Mail::Filter 2.14 + Mail::Header 2.14 + Mail::Internet 2.14 + Mail::Mailer 2.14 + Mail::Mailer::qmail 2.14 + Mail::Mailer::rfc822 2.14 + Mail::Mailer::sendmail 2.14 + Mail::Mailer::smtp 2.14 + Mail::Mailer::smtp::pipe 2.14 + Mail::Mailer::smtps 2.14 + Mail::Mailer::smtps::pipe 2.14 + Mail::Mailer::testfile 2.14 + Mail::Mailer::testfile::pipe 2.14 + Mail::Send 2.14 + Mail::Util 2.14 requirements: Date::Format 0 Date::Parse 0 @@ -4631,22 +4152,22 @@ DISTRIBUTIONS Fennec::Lite 0 Test::Exception 0 Test::More 0 - MetaCPAN-Client-1.012000 - pathname: M/MI/MICKEY/MetaCPAN-Client-1.012000.tar.gz - provides: - MetaCPAN::Client 1.012000 - MetaCPAN::Client::Author 1.012000 - MetaCPAN::Client::Distribution 1.012000 - MetaCPAN::Client::Favorite 1.012000 - MetaCPAN::Client::File 1.012000 - MetaCPAN::Client::Mirror 1.012000 - MetaCPAN::Client::Module 1.012000 - MetaCPAN::Client::Pod 1.012000 - MetaCPAN::Client::Rating 1.012000 - MetaCPAN::Client::Release 1.012000 - MetaCPAN::Client::Request 1.012000 - MetaCPAN::Client::ResultSet 1.012000 - MetaCPAN::Client::Role::Entity 1.012000 + MetaCPAN-Client-1.013000 + pathname: M/MI/MICKEY/MetaCPAN-Client-1.013000.tar.gz + provides: + MetaCPAN::Client 1.013000 + MetaCPAN::Client::Author 1.013000 + MetaCPAN::Client::Distribution 1.013000 + MetaCPAN::Client::Favorite 1.013000 + MetaCPAN::Client::File 1.013000 + MetaCPAN::Client::Mirror 1.013000 + MetaCPAN::Client::Module 1.013000 + MetaCPAN::Client::Pod 1.013000 + MetaCPAN::Client::Rating 1.013000 + MetaCPAN::Client::Release 1.013000 + MetaCPAN::Client::Request 1.013000 + MetaCPAN::Client::ResultSet 1.013000 + MetaCPAN::Client::Role::Entity 1.013000 requirements: Carp 0 ExtUtils::MakeMaker 0 @@ -4659,45 +4180,47 @@ DISTRIBUTIONS Search::Elasticsearch 1.10 Search::Elasticsearch::Scroll 0 Try::Tiny 0 + perl 5.008 strict 0 warnings 0 - Mixin-Linewise-0.106 - pathname: R/RJ/RJBS/Mixin-Linewise-0.106.tar.gz + Mixin-Linewise-0.108 + pathname: R/RJ/RJBS/Mixin-Linewise-0.108.tar.gz provides: MLTests undef - Mixin::Linewise 0.106 - Mixin::Linewise::Readers 0.106 - Mixin::Linewise::Writers 0.106 + Mixin::Linewise 0.108 + Mixin::Linewise::Readers 0.108 + Mixin::Linewise::Writers 0.108 requirements: Carp 0 - ExtUtils::MakeMaker 6.30 + ExtUtils::MakeMaker 0 IO::File 0 PerlIO::utf8_strict 0 Sub::Exporter 0 + perl 5.008001 strict 0 warnings 0 - Module-Build-0.4211 - pathname: L/LE/LEONT/Module-Build-0.4211.tar.gz - provides: - Module::Build 0.4211 - Module::Build::Base 0.4211 - Module::Build::Compat 0.4211 - Module::Build::Config 0.4211 - Module::Build::Cookbook 0.4211 - Module::Build::Dumper 0.4211 - Module::Build::Notes 0.4211 - Module::Build::PPMMaker 0.4211 - Module::Build::Platform::Default 0.4211 - Module::Build::Platform::MacOS 0.4211 - Module::Build::Platform::Unix 0.4211 - Module::Build::Platform::VMS 0.4211 - Module::Build::Platform::VOS 0.4211 - Module::Build::Platform::Windows 0.4211 - Module::Build::Platform::aix 0.4211 - Module::Build::Platform::cygwin 0.4211 - Module::Build::Platform::darwin 0.4211 - Module::Build::Platform::os2 0.4211 - Module::Build::PodParser 0.4211 + Module-Build-0.4214 + pathname: L/LE/LEONT/Module-Build-0.4214.tar.gz + provides: + Module::Build 0.4214 + Module::Build::Base 0.4214 + Module::Build::Compat 0.4214 + Module::Build::Config 0.4214 + Module::Build::Cookbook 0.4214 + Module::Build::Dumper 0.4214 + Module::Build::Notes 0.4214 + Module::Build::PPMMaker 0.4214 + Module::Build::Platform::Default 0.4214 + Module::Build::Platform::MacOS 0.4214 + Module::Build::Platform::Unix 0.4214 + Module::Build::Platform::VMS 0.4214 + Module::Build::Platform::VOS 0.4214 + Module::Build::Platform::Windows 0.4214 + Module::Build::Platform::aix 0.4214 + Module::Build::Platform::cygwin 0.4214 + Module::Build::Platform::darwin 0.4214 + Module::Build::Platform::os2 0.4214 + Module::Build::PodParser 0.4214 requirements: CPAN::Meta 2.142060 CPAN::Meta::YAML 0.003 @@ -4751,33 +4274,34 @@ DISTRIBUTIONS perl 5.006 strict 0 warnings 0 - Module-Build-XSUtil-0.10 - pathname: H/HI/HIDEAKIO/Module-Build-XSUtil-0.10.tar.gz + Module-Build-XSUtil-0.16 + pathname: H/HI/HIDEAKIO/Module-Build-XSUtil-0.16.tar.gz provides: - Module::Build::XSUtil 0.10 + Module::Build::XSUtil 0.16 requirements: - CPAN::Meta 0 - CPAN::Meta::Prereqs 0 - Devel::CheckCompiler 0.02 - Devel::PPPort 3.19 + Devel::CheckCompiler 0 + Devel::PPPort 0 Exporter 0 ExtUtils::CBuilder 0 File::Basename 0 File::Path 0 Module::Build 0.4005 - XSLoader 0.02 + XSLoader 0 parent 0 perl 5.008005 - Module-CPANfile-1.0002 - pathname: M/MI/MIYAGAWA/Module-CPANfile-1.0002.tar.gz + Module-CPANfile-1.1001 + pathname: M/MI/MIYAGAWA/Module-CPANfile-1.1001.tar.gz provides: - Module::CPANfile 1.0002 + Module::CPANfile 1.1001 Module::CPANfile::Environment undef - Module::CPANfile::Result undef + Module::CPANfile::Prereq undef + Module::CPANfile::Prereqs undef + Module::CPANfile::Requirement undef requirements: CPAN::Meta 2.12091 CPAN::Meta::Prereqs 2.12091 - ExtUtils::MakeMaker 6.30 + ExtUtils::MakeMaker 0 + parent 0 Module-Extract-Namespaces-1.02 pathname: B/BD/BDFOY/Module-Extract-Namespaces-1.02.tar.gz provides: @@ -4787,16 +4311,16 @@ DISTRIBUTIONS ExtUtils::MakeMaker 0 PPI 0 Test::More 0 - Module-Faker-0.016 - pathname: R/RJ/RJBS/Module-Faker-0.016.tar.gz + Module-Faker-0.017 + pathname: R/RJ/RJBS/Module-Faker-0.017.tar.gz provides: - Module::Faker 0.016 - Module::Faker::Appendix 0.016 - Module::Faker::Dist 0.016 - Module::Faker::File 0.016 - Module::Faker::Heavy 0.016 - Module::Faker::Module 0.016 - Module::Faker::Package 0.016 + Module::Faker 0.017 + Module::Faker::Appendix 0.017 + Module::Faker::Dist 0.017 + Module::Faker::File 0.017 + Module::Faker::Heavy 0.017 + Module::Faker::Module 0.017 + Module::Faker::Package 0.017 requirements: Archive::Any::Create 0 CPAN::DistnameInfo 0 @@ -4804,7 +4328,7 @@ DISTRIBUTIONS CPAN::Meta::Requirements 0 Carp 0 Encode 0 - ExtUtils::MakeMaker 6.30 + ExtUtils::MakeMaker 0 File::Next 0 File::Path 0 File::Temp 0 @@ -4816,10 +4340,10 @@ DISTRIBUTIONS Text::Template 0 strict 0 warnings 0 - Module-Find-0.12 - pathname: C/CR/CRENZ/Module-Find-0.12.tar.gz + Module-Find-0.13 + pathname: C/CR/CRENZ/Module-Find-0.13.tar.gz provides: - Module::Find 0.12 + Module::Find 0.13 ModuleFindTest undef ModuleFindTest::SubMod undef ModuleFindTest::SubMod::SubSubMod undef @@ -4829,60 +4353,56 @@ DISTRIBUTIONS File::Spec 0 Test::More 0 perl 5.006001 - Module-Implementation-0.07 - pathname: D/DR/DROLSKY/Module-Implementation-0.07.tar.gz + Module-Implementation-0.09 + pathname: D/DR/DROLSKY/Module-Implementation-0.09.tar.gz provides: - Module::Implementation 0.07 - T::Impl1 undef - T::Impl2 undef - T::ImplFails1 undef - T::ImplFails2 undef + Module::Implementation 0.09 requirements: Carp 0 - ExtUtils::MakeMaker 6.30 + ExtUtils::MakeMaker 0 Module::Runtime 0.012 Try::Tiny 0 strict 0 warnings 0 - Module-Install-1.15 - pathname: E/ET/ETHER/Module-Install-1.15.tar.gz - provides: - Module::AutoInstall 1.15 - Module::Install 1.15 - Module::Install::Admin 1.15 - Module::Install::Admin::Bundle 1.15 - Module::Install::Admin::Compiler 1.15 - Module::Install::Admin::Find 1.15 - Module::Install::Admin::Include 1.15 - Module::Install::Admin::Makefile 1.15 - Module::Install::Admin::Manifest 1.15 - Module::Install::Admin::Metadata 1.15 - Module::Install::Admin::ScanDeps 1.15 - Module::Install::Admin::WriteAll 1.15 - Module::Install::AutoInstall 1.15 - Module::Install::Base 1.15 - Module::Install::Base::FakeAdmin 1.15 - Module::Install::Bundle 1.15 - Module::Install::Can 1.15 - Module::Install::Compiler 1.15 - Module::Install::DSL 1.15 - Module::Install::Deprecated 1.15 - Module::Install::External 1.15 - Module::Install::Fetch 1.15 - Module::Install::Include 1.15 - Module::Install::Inline 1.15 - Module::Install::MakeMaker 1.15 - Module::Install::Makefile 1.15 - Module::Install::Metadata 1.15 - Module::Install::PAR 1.15 - Module::Install::Run 1.15 - Module::Install::Scripts 1.15 - Module::Install::Share 1.15 - Module::Install::Win32 1.15 - Module::Install::With 1.15 - Module::Install::WriteAll 1.15 - inc::Module::Install 1.15 - inc::Module::Install::DSL 1.15 + Module-Install-1.16 + pathname: E/ET/ETHER/Module-Install-1.16.tar.gz + provides: + Module::AutoInstall 1.16 + Module::Install 1.16 + Module::Install::Admin 1.16 + Module::Install::Admin::Bundle 1.16 + Module::Install::Admin::Compiler 1.16 + Module::Install::Admin::Find 1.16 + Module::Install::Admin::Include 1.16 + Module::Install::Admin::Makefile 1.16 + Module::Install::Admin::Manifest 1.16 + Module::Install::Admin::Metadata 1.16 + Module::Install::Admin::ScanDeps 1.16 + Module::Install::Admin::WriteAll 1.16 + Module::Install::AutoInstall 1.16 + Module::Install::Base 1.16 + Module::Install::Base::FakeAdmin 1.16 + Module::Install::Bundle 1.16 + Module::Install::Can 1.16 + Module::Install::Compiler 1.16 + Module::Install::DSL 1.16 + Module::Install::Deprecated 1.16 + Module::Install::External 1.16 + Module::Install::Fetch 1.16 + Module::Install::Include 1.16 + Module::Install::Inline 1.16 + Module::Install::MakeMaker 1.16 + Module::Install::Makefile 1.16 + Module::Install::Metadata 1.16 + Module::Install::PAR 1.16 + Module::Install::Run 1.16 + Module::Install::Scripts 1.16 + Module::Install::Share 1.16 + Module::Install::Win32 1.16 + Module::Install::With 1.16 + Module::Install::WriteAll 1.16 + inc::Module::Install 1.16 + inc::Module::Install::DSL 1.16 requirements: Devel::PPPort 3.16 ExtUtils::Install 1.52 @@ -4898,6 +4418,7 @@ DISTRIBUTIONS Test::Harness 3.13 Test::More 0.86 YAML::Tiny 1.38 + autodie 0 perl 5.006 Module-Install-AuthorTests-0.002 pathname: R/RJ/RJBS/Module-Install-AuthorTests-0.002.tar.gz @@ -4906,31 +4427,36 @@ DISTRIBUTIONS requirements: ExtUtils::MakeMaker 0 Module::Install 0 - Module-Metadata-1.000024 - pathname: E/ET/ETHER/Module-Metadata-1.000024.tar.gz + Module-Metadata-1.000027 + pathname: E/ET/ETHER/Module-Metadata-1.000027.tar.gz provides: - Module::Metadata 1.000024 + Module::Metadata 1.000027 requirements: Carp 0 - ExtUtils::MakeMaker 6.30 + ExtUtils::MakeMaker 0 Fcntl 0 File::Find 0 File::Spec 0 + perl 5.006 strict 0 version 0.87 warnings 0 - Module-Pluggable-5.1 - pathname: S/SI/SIMONW/Module-Pluggable-5.1.tar.gz + Module-Pluggable-5.2 + pathname: S/SI/SIMONW/Module-Pluggable-5.2.tar.gz provides: Devel::InnerPackage 0.4 - Module::Pluggable 5.1 - Module::Pluggable::Object 5.1 + Module::Pluggable 5.2 + Module::Pluggable::Object 5.2 requirements: + Exporter 5.57 + ExtUtils::MakeMaker 0 File::Basename 0 + File::Find 0 File::Spec 3.00 - Module::Build 0.38 - Test::More 0.62 + File::Spec::Functions 0 if 0 + perl 5.00503 + strict 0 Module-Runtime-0.014 pathname: Z/ZE/ZEFRAM/Module-Runtime-0.014.tar.gz provides: @@ -4941,24 +4467,22 @@ DISTRIBUTIONS perl 5.006 strict 0 warnings 0 - Module-Runtime-Conflicts-0.001 - pathname: E/ET/ETHER/Module-Runtime-Conflicts-0.001.tar.gz + Module-Runtime-Conflicts-0.002 + pathname: E/ET/ETHER/Module-Runtime-Conflicts-0.002.tar.gz provides: - Module::Runtime::Conflicts 0.001 + Module::Runtime::Conflicts 0.002 requirements: Dist::CheckConflicts 0 - ExtUtils::MakeMaker 0 - Module::Build::Tiny 0.038 + Module::Build::Tiny 0.039 Module::Runtime 0 perl 5.006 strict 0 warnings 0 - Module-ScanDeps-1.18 - pathname: R/RS/RSCHUPP/Module-ScanDeps-1.18.tar.gz + Module-ScanDeps-1.20 + pathname: R/RS/RSCHUPP/Module-ScanDeps-1.20.tar.gz provides: - Module::ScanDeps 1.18 + Module::ScanDeps 1.20 Module::ScanDeps::Cache undef - Module::ScanDeps::DataFeed undef requirements: ExtUtils::MakeMaker 6.59 File::Spec 0 @@ -4970,27 +4494,27 @@ DISTRIBUTIONS Text::ParseWords 0 perl 5.008001 version 0 - Moo-2.000001 - pathname: H/HA/HAARG/Moo-2.000001.tar.gz + Moo-2.000002 + pathname: H/HA/HAARG/Moo-2.000002.tar.gz provides: Method::Generate::Accessor undef Method::Generate::BuildAll undef Method::Generate::Constructor undef Method::Generate::DemolishAll undef Method::Inliner undef - Moo 2.000001 + Moo 2.000002 Moo::HandleMoose undef Moo::HandleMoose::FakeConstructor undef Moo::HandleMoose::FakeMetaClass undef Moo::HandleMoose::_TypeMap undef Moo::Object undef - Moo::Role 2.000001 + Moo::Role 2.000002 Moo::_Utils undef Moo::_mro undef Moo::_strictures undef Moo::sification undef - Sub::Defer 2.000001 - Sub::Quote 2.000001 + Sub::Defer 2.000002 + Sub::Quote 2.000002 oo undef requirements: Class::Method::Modifiers 1.1 @@ -5001,11 +4525,12 @@ DISTRIBUTIONS Role::Tiny 2 Scalar::Util 0 perl 5.006 - MooX-ConfigFromFile-0.006 - pathname: R/RE/REHSACK/MooX-ConfigFromFile-0.006.tar.gz + MooX-ConfigFromFile-0.007 + pathname: R/RE/REHSACK/MooX-ConfigFromFile-0.007.tar.gz provides: - MooX::ConfigFromFile 0.006 - MooX::ConfigFromFile::Role 0.006 + MooX::ConfigFromFile 0.007 + MooX::ConfigFromFile::Role 0.007 + MooX::ConfigFromFile::Role::HashMergeLoaded 0.007 requirements: Config::Any 0 ExtUtils::MakeMaker 0 @@ -5024,14 +4549,15 @@ DISTRIBUTIONS Moo::Role 1.003000 namespace::clean 0 perl 5.008001 - MooX-Options-4.018 - pathname: C/CE/CELOGEEK/MooX-Options-4.018.tar.gz + MooX-Options-4.020 + pathname: C/CE/CELOGEEK/MooX-Options-4.020.tar.gz provides: - MooX::Options 4.018 - MooX::Options::Descriptive 4.018 - MooX::Options::Descriptive::Usage 4.018 - MooX::Options::Role 4.018 + MooX::Options 4.020 + MooX::Options::Descriptive 4.020 + MooX::Options::Descriptive::Usage 4.020 + MooX::Options::Role 4.020 TestNamespaceClean undef + t::Test undef t::lib::MooXCmdTest undef t::lib::MooXCmdTest::Cmd::test1 undef t::lib::MooXCmdTest::Cmd::test1::Cmd::test2 undef @@ -5039,10 +4565,11 @@ DISTRIBUTIONS requirements: Carp 0 Data::Record 0 + File::ShareDir 1.00 Getopt::Long 2.43 Getopt::Long::Descriptive 0.099 - JSON 0 - MRO::Compat 0 + JSON::MaybeXS 0 + Locale::TextDomain 0 Module::Build 0.4211 Module::Metadata 1.000019 Moo 1.003001 @@ -5051,6 +4578,7 @@ DISTRIBUTIONS Pod::Usage 0 Regexp::Common 0 Scalar::Util 0 + Term::Size::Any 0 Text::LineFold 0 feature 0 overload 0 @@ -5058,31 +4586,33 @@ DISTRIBUTIONS perl 5.010 strict 0 warnings 0 - MooX-StrictConstructor-0.006 - pathname: H/HA/HARTZELL/MooX-StrictConstructor-0.006.tar.gz + MooX-StrictConstructor-0.008 + pathname: H/HA/HARTZELL/MooX-StrictConstructor-0.008.tar.gz provides: - Method::Generate::Constructor::Role::StrictConstructor 0.006 - MooX::StrictConstructor 0.006 + Method::Generate::Constructor::Role::StrictConstructor 0.008 + MooX::StrictConstructor 0.008 requirements: B 0 Class::Method::Modifiers 0 - Module::Build 0.3601 + ExtUtils::MakeMaker 0 + Module::Build 0.28 Moo 1.001000 Moo::Role 0 + bareword::filehandles 0 constant 0 + indirect 0 + multidimensional 0 perl 5.006 + strict 0 strictures 1 - MooX-Types-MooseLike-0.25 - pathname: M/MA/MATEU/MooX-Types-MooseLike-0.25.tar.gz + MooX-Types-MooseLike-0.29 + pathname: M/MA/MATEU/MooX-Types-MooseLike-0.29.tar.gz provides: - MooX::Types::MooseLike 0.25 - MooX::Types::MooseLike::Base 0.25 + MooX::Types::MooseLike 0.29 + MooX::Types::MooseLike::Base 0.29 requirements: ExtUtils::MakeMaker 0 - Module::Runtime 0.012 - Moo 0.09101 - Test::Fatal 0.003 - Test::More 0.96 + Module::Runtime 0.014 MooX-Types-MooseLike-Numeric-1.02 pathname: M/MA/MATEU/MooX-Types-MooseLike-Numeric-1.02.tar.gz provides: @@ -5092,279 +4622,279 @@ DISTRIBUTIONS MooX::Types::MooseLike 0.23 Test::Fatal 0.003 Test::More 0.96 - Moose-2.1403 - pathname: E/ET/ETHER/Moose-2.1403.tar.gz + Moose-2.1604 + pathname: E/ET/ETHER/Moose-2.1604.tar.gz provides: - Class::MOP 2.1403 - Class::MOP::Attribute 2.1403 - Class::MOP::Class 2.1403 + Class::MOP 2.1604 + Class::MOP::Attribute 2.1604 + Class::MOP::Class 2.1604 Class::MOP::Class::Immutable::Trait undef Class::MOP::Deprecated undef - Class::MOP::Instance 2.1403 - Class::MOP::Method 2.1403 - Class::MOP::Method::Accessor 2.1403 - Class::MOP::Method::Constructor 2.1403 - Class::MOP::Method::Generated 2.1403 - Class::MOP::Method::Inlined 2.1403 - Class::MOP::Method::Meta 2.1403 - Class::MOP::Method::Wrapped 2.1403 + Class::MOP::Instance 2.1604 + Class::MOP::Method 2.1604 + Class::MOP::Method::Accessor 2.1604 + Class::MOP::Method::Constructor 2.1604 + Class::MOP::Method::Generated 2.1604 + Class::MOP::Method::Inlined 2.1604 + Class::MOP::Method::Meta 2.1604 + Class::MOP::Method::Wrapped 2.1604 Class::MOP::MiniTrait undef Class::MOP::Mixin undef Class::MOP::Mixin::AttributeCore undef Class::MOP::Mixin::HasAttributes undef Class::MOP::Mixin::HasMethods undef Class::MOP::Mixin::HasOverloads undef - Class::MOP::Module 2.1403 - Class::MOP::Object 2.1403 - Class::MOP::Overload 2.1403 - Class::MOP::Package 2.1403 - Moose 2.1403 + Class::MOP::Module 2.1604 + Class::MOP::Object 2.1604 + Class::MOP::Overload 2.1604 + Class::MOP::Package 2.1604 + Moose 2.1604 Moose::Deprecated undef - Moose::Exception 2.1403 - Moose::Exception::AccessorMustReadWrite 2.1403 - Moose::Exception::AddParameterizableTypeTakesParameterizableType 2.1403 - Moose::Exception::AddRoleTakesAMooseMetaRoleInstance 2.1403 - Moose::Exception::AddRoleToARoleTakesAMooseMetaRole 2.1403 - Moose::Exception::ApplyTakesABlessedInstance 2.1403 - Moose::Exception::AttachToClassNeedsAClassMOPClassInstanceOrASubclass 2.1403 - Moose::Exception::AttributeConflictInRoles 2.1403 - Moose::Exception::AttributeConflictInSummation 2.1403 - Moose::Exception::AttributeExtensionIsNotSupportedInRoles 2.1403 - Moose::Exception::AttributeIsRequired 2.1403 - Moose::Exception::AttributeMustBeAnClassMOPMixinAttributeCoreOrSubclass 2.1403 - Moose::Exception::AttributeNamesDoNotMatch 2.1403 - Moose::Exception::AttributeValueIsNotAnObject 2.1403 - Moose::Exception::AttributeValueIsNotDefined 2.1403 - Moose::Exception::AutoDeRefNeedsArrayRefOrHashRef 2.1403 - Moose::Exception::BadOptionFormat 2.1403 - Moose::Exception::BothBuilderAndDefaultAreNotAllowed 2.1403 - Moose::Exception::BuilderDoesNotExist 2.1403 - Moose::Exception::BuilderMethodNotSupportedForAttribute 2.1403 - Moose::Exception::BuilderMethodNotSupportedForInlineAttribute 2.1403 - Moose::Exception::BuilderMustBeAMethodName 2.1403 - Moose::Exception::CallingMethodOnAnImmutableInstance 2.1403 - Moose::Exception::CallingReadOnlyMethodOnAnImmutableInstance 2.1403 - Moose::Exception::CanExtendOnlyClasses 2.1403 - Moose::Exception::CanOnlyConsumeRole 2.1403 - Moose::Exception::CanOnlyWrapBlessedCode 2.1403 - Moose::Exception::CanReblessOnlyIntoASubclass 2.1403 - Moose::Exception::CanReblessOnlyIntoASuperclass 2.1403 - Moose::Exception::CannotAddAdditionalTypeCoercionsToUnion 2.1403 - Moose::Exception::CannotAddAsAnAttributeToARole 2.1403 - Moose::Exception::CannotApplyBaseClassRolesToRole 2.1403 - Moose::Exception::CannotAssignValueToReadOnlyAccessor 2.1403 - Moose::Exception::CannotAugmentIfLocalMethodPresent 2.1403 - Moose::Exception::CannotAugmentNoSuperMethod 2.1403 - Moose::Exception::CannotAutoDerefWithoutIsa 2.1403 - Moose::Exception::CannotAutoDereferenceTypeConstraint 2.1403 - Moose::Exception::CannotCalculateNativeType 2.1403 - Moose::Exception::CannotCallAnAbstractBaseMethod 2.1403 - Moose::Exception::CannotCallAnAbstractMethod 2.1403 - Moose::Exception::CannotCoerceAWeakRef 2.1403 - Moose::Exception::CannotCoerceAttributeWhichHasNoCoercion 2.1403 - Moose::Exception::CannotCreateHigherOrderTypeWithoutATypeParameter 2.1403 - Moose::Exception::CannotCreateMethodAliasLocalMethodIsPresent 2.1403 - Moose::Exception::CannotCreateMethodAliasLocalMethodIsPresentInClass 2.1403 - Moose::Exception::CannotDelegateLocalMethodIsPresent 2.1403 - Moose::Exception::CannotDelegateWithoutIsa 2.1403 - Moose::Exception::CannotFindDelegateMetaclass 2.1403 - Moose::Exception::CannotFindType 2.1403 - Moose::Exception::CannotFindTypeGivenToMatchOnType 2.1403 - Moose::Exception::CannotFixMetaclassCompatibility 2.1403 - Moose::Exception::CannotGenerateInlineConstraint 2.1403 - Moose::Exception::CannotInitializeMooseMetaRoleComposite 2.1403 - Moose::Exception::CannotInlineTypeConstraintCheck 2.1403 - Moose::Exception::CannotLocatePackageInINC 2.1403 - Moose::Exception::CannotMakeMetaclassCompatible 2.1403 - Moose::Exception::CannotOverrideALocalMethod 2.1403 - Moose::Exception::CannotOverrideBodyOfMetaMethods 2.1403 - Moose::Exception::CannotOverrideLocalMethodIsPresent 2.1403 - Moose::Exception::CannotOverrideNoSuperMethod 2.1403 - Moose::Exception::CannotRegisterUnnamedTypeConstraint 2.1403 - Moose::Exception::CannotUseLazyBuildAndDefaultSimultaneously 2.1403 - Moose::Exception::CircularReferenceInAlso 2.1403 - Moose::Exception::ClassDoesNotHaveInitMeta 2.1403 - Moose::Exception::ClassDoesTheExcludedRole 2.1403 - Moose::Exception::ClassNamesDoNotMatch 2.1403 - Moose::Exception::CloneObjectExpectsAnInstanceOfMetaclass 2.1403 - Moose::Exception::CodeBlockMustBeACodeRef 2.1403 - Moose::Exception::CoercingWithoutCoercions 2.1403 - Moose::Exception::CoercionAlreadyExists 2.1403 - Moose::Exception::CoercionNeedsTypeConstraint 2.1403 - Moose::Exception::ConflictDetectedInCheckRoleExclusions 2.1403 - Moose::Exception::ConflictDetectedInCheckRoleExclusionsInToClass 2.1403 - Moose::Exception::ConstructClassInstanceTakesPackageName 2.1403 - Moose::Exception::CouldNotCreateMethod 2.1403 - Moose::Exception::CouldNotCreateWriter 2.1403 - Moose::Exception::CouldNotEvalConstructor 2.1403 - Moose::Exception::CouldNotEvalDestructor 2.1403 - Moose::Exception::CouldNotFindTypeConstraintToCoerceFrom 2.1403 - Moose::Exception::CouldNotGenerateInlineAttributeMethod 2.1403 - Moose::Exception::CouldNotLocateTypeConstraintForUnion 2.1403 - Moose::Exception::CouldNotParseType 2.1403 - Moose::Exception::CreateMOPClassTakesArrayRefOfAttributes 2.1403 - Moose::Exception::CreateMOPClassTakesArrayRefOfSuperclasses 2.1403 - Moose::Exception::CreateMOPClassTakesHashRefOfMethods 2.1403 - Moose::Exception::CreateTakesArrayRefOfRoles 2.1403 - Moose::Exception::CreateTakesHashRefOfAttributes 2.1403 - Moose::Exception::CreateTakesHashRefOfMethods 2.1403 - Moose::Exception::DefaultToMatchOnTypeMustBeCodeRef 2.1403 - Moose::Exception::DelegationToAClassWhichIsNotLoaded 2.1403 - Moose::Exception::DelegationToARoleWhichIsNotLoaded 2.1403 - Moose::Exception::DelegationToATypeWhichIsNotAClass 2.1403 - Moose::Exception::DoesRequiresRoleName 2.1403 - Moose::Exception::EnumCalledWithAnArrayRefAndAdditionalArgs 2.1403 - Moose::Exception::EnumValuesMustBeString 2.1403 - Moose::Exception::ExtendsMissingArgs 2.1403 - Moose::Exception::HandlesMustBeAHashRef 2.1403 - Moose::Exception::IllegalInheritedOptions 2.1403 - Moose::Exception::IllegalMethodTypeToAddMethodModifier 2.1403 - Moose::Exception::IncompatibleMetaclassOfSuperclass 2.1403 - Moose::Exception::InitMetaRequiresClass 2.1403 - Moose::Exception::InitializeTakesUnBlessedPackageName 2.1403 - Moose::Exception::InstanceBlessedIntoWrongClass 2.1403 - Moose::Exception::InstanceMustBeABlessedReference 2.1403 - Moose::Exception::InvalidArgPassedToMooseUtilMetaRole 2.1403 - Moose::Exception::InvalidArgumentToMethod 2.1403 - Moose::Exception::InvalidArgumentsToTraitAliases 2.1403 - Moose::Exception::InvalidBaseTypeGivenToCreateParameterizedTypeConstraint 2.1403 - Moose::Exception::InvalidHandleValue 2.1403 - Moose::Exception::InvalidHasProvidedInARole 2.1403 - Moose::Exception::InvalidNameForType 2.1403 - Moose::Exception::InvalidOverloadOperator 2.1403 - Moose::Exception::InvalidRoleApplication 2.1403 - Moose::Exception::InvalidTypeConstraint 2.1403 - Moose::Exception::InvalidTypeGivenToCreateParameterizedTypeConstraint 2.1403 - Moose::Exception::InvalidValueForIs 2.1403 - Moose::Exception::IsaDoesNotDoTheRole 2.1403 - Moose::Exception::IsaLacksDoesMethod 2.1403 - Moose::Exception::LazyAttributeNeedsADefault 2.1403 - Moose::Exception::Legacy 2.1403 - Moose::Exception::MOPAttributeNewNeedsAttributeName 2.1403 - Moose::Exception::MatchActionMustBeACodeRef 2.1403 - Moose::Exception::MessageParameterMustBeCodeRef 2.1403 - Moose::Exception::MetaclassIsAClassNotASubclassOfGivenMetaclass 2.1403 - Moose::Exception::MetaclassIsARoleNotASubclassOfGivenMetaclass 2.1403 - Moose::Exception::MetaclassIsNotASubclassOfGivenMetaclass 2.1403 - Moose::Exception::MetaclassMustBeASubclassOfMooseMetaClass 2.1403 - Moose::Exception::MetaclassMustBeASubclassOfMooseMetaRole 2.1403 - Moose::Exception::MetaclassMustBeDerivedFromClassMOPClass 2.1403 - Moose::Exception::MetaclassNotLoaded 2.1403 - Moose::Exception::MetaclassTypeIncompatible 2.1403 - Moose::Exception::MethodExpectedAMetaclassObject 2.1403 - Moose::Exception::MethodExpectsFewerArgs 2.1403 - Moose::Exception::MethodExpectsMoreArgs 2.1403 - Moose::Exception::MethodModifierNeedsMethodName 2.1403 - Moose::Exception::MethodNameConflictInRoles 2.1403 - Moose::Exception::MethodNameNotFoundInInheritanceHierarchy 2.1403 - Moose::Exception::MethodNameNotGiven 2.1403 - Moose::Exception::MustDefineAMethodName 2.1403 - Moose::Exception::MustDefineAnAttributeName 2.1403 - Moose::Exception::MustDefineAnOverloadOperator 2.1403 - Moose::Exception::MustHaveAtLeastOneValueToEnumerate 2.1403 - Moose::Exception::MustPassAHashOfOptions 2.1403 - Moose::Exception::MustPassAMooseMetaRoleInstanceOrSubclass 2.1403 - Moose::Exception::MustPassAPackageNameOrAnExistingClassMOPPackageInstance 2.1403 - Moose::Exception::MustPassEvenNumberOfArguments 2.1403 - Moose::Exception::MustPassEvenNumberOfAttributeOptions 2.1403 - Moose::Exception::MustProvideANameForTheAttribute 2.1403 - Moose::Exception::MustSpecifyAtleastOneMethod 2.1403 - Moose::Exception::MustSpecifyAtleastOneRole 2.1403 - Moose::Exception::MustSpecifyAtleastOneRoleToApplicant 2.1403 - Moose::Exception::MustSupplyAClassMOPAttributeInstance 2.1403 - Moose::Exception::MustSupplyADelegateToMethod 2.1403 - Moose::Exception::MustSupplyAMetaclass 2.1403 - Moose::Exception::MustSupplyAMooseMetaAttributeInstance 2.1403 - Moose::Exception::MustSupplyAnAccessorTypeToConstructWith 2.1403 - Moose::Exception::MustSupplyAnAttributeToConstructWith 2.1403 - Moose::Exception::MustSupplyArrayRefAsCurriedArguments 2.1403 - Moose::Exception::MustSupplyPackageNameAndName 2.1403 - Moose::Exception::NeedsTypeConstraintUnionForTypeCoercionUnion 2.1403 - Moose::Exception::NeitherAttributeNorAttributeNameIsGiven 2.1403 - Moose::Exception::NeitherClassNorClassNameIsGiven 2.1403 - Moose::Exception::NeitherRoleNorRoleNameIsGiven 2.1403 - Moose::Exception::NeitherTypeNorTypeNameIsGiven 2.1403 - Moose::Exception::NoAttributeFoundInSuperClass 2.1403 - Moose::Exception::NoBodyToInitializeInAnAbstractBaseClass 2.1403 - Moose::Exception::NoCasesMatched 2.1403 - Moose::Exception::NoConstraintCheckForTypeConstraint 2.1403 - Moose::Exception::NoDestructorClassSpecified 2.1403 - Moose::Exception::NoImmutableTraitSpecifiedForClass 2.1403 - Moose::Exception::NoParentGivenToSubtype 2.1403 - Moose::Exception::OnlyInstancesCanBeCloned 2.1403 - Moose::Exception::OperatorIsRequired 2.1403 - Moose::Exception::OverloadConflictInSummation 2.1403 - Moose::Exception::OverloadRequiresAMetaClass 2.1403 - Moose::Exception::OverloadRequiresAMetaMethod 2.1403 - Moose::Exception::OverloadRequiresAMetaOverload 2.1403 - Moose::Exception::OverloadRequiresAMethodNameOrCoderef 2.1403 - Moose::Exception::OverloadRequiresAnOperator 2.1403 - Moose::Exception::OverloadRequiresNamesForCoderef 2.1403 - Moose::Exception::OverrideConflictInComposition 2.1403 - Moose::Exception::OverrideConflictInSummation 2.1403 - Moose::Exception::PackageDoesNotUseMooseExporter 2.1403 - Moose::Exception::PackageNameAndNameParamsNotGivenToWrap 2.1403 - Moose::Exception::PackagesAndModulesAreNotCachable 2.1403 - Moose::Exception::ParameterIsNotSubtypeOfParent 2.1403 - Moose::Exception::ReferencesAreNotAllowedAsDefault 2.1403 - Moose::Exception::RequiredAttributeLacksInitialization 2.1403 - Moose::Exception::RequiredAttributeNeedsADefault 2.1403 - Moose::Exception::RequiredMethodsImportedByClass 2.1403 - Moose::Exception::RequiredMethodsNotImplementedByClass 2.1403 - Moose::Exception::Role::Attribute 2.1403 - Moose::Exception::Role::AttributeName 2.1403 - Moose::Exception::Role::Class 2.1403 - Moose::Exception::Role::EitherAttributeOrAttributeName 2.1403 - Moose::Exception::Role::Instance 2.1403 - Moose::Exception::Role::InstanceClass 2.1403 - Moose::Exception::Role::InvalidAttributeOptions 2.1403 - Moose::Exception::Role::Method 2.1403 - Moose::Exception::Role::ParamsHash 2.1403 - Moose::Exception::Role::Role 2.1403 - Moose::Exception::Role::RoleForCreate 2.1403 - Moose::Exception::Role::RoleForCreateMOPClass 2.1403 - Moose::Exception::Role::TypeConstraint 2.1403 - Moose::Exception::RoleDoesTheExcludedRole 2.1403 - Moose::Exception::RoleExclusionConflict 2.1403 - Moose::Exception::RoleNameRequired 2.1403 - Moose::Exception::RoleNameRequiredForMooseMetaRole 2.1403 - Moose::Exception::RolesDoNotSupportAugment 2.1403 - Moose::Exception::RolesDoNotSupportExtends 2.1403 - Moose::Exception::RolesDoNotSupportInner 2.1403 - Moose::Exception::RolesDoNotSupportRegexReferencesForMethodModifiers 2.1403 - Moose::Exception::RolesInCreateTakesAnArrayRef 2.1403 - Moose::Exception::RolesListMustBeInstancesOfMooseMetaRole 2.1403 - Moose::Exception::SingleParamsToNewMustBeHashRef 2.1403 - Moose::Exception::TriggerMustBeACodeRef 2.1403 - Moose::Exception::TypeConstraintCannotBeUsedForAParameterizableType 2.1403 - Moose::Exception::TypeConstraintIsAlreadyCreated 2.1403 - Moose::Exception::TypeParameterMustBeMooseMetaType 2.1403 - Moose::Exception::UnableToCanonicalizeHandles 2.1403 - Moose::Exception::UnableToCanonicalizeNonRolePackage 2.1403 - Moose::Exception::UnableToRecognizeDelegateMetaclass 2.1403 - Moose::Exception::UndefinedHashKeysPassedToMethod 2.1403 - Moose::Exception::UnionCalledWithAnArrayRefAndAdditionalArgs 2.1403 - Moose::Exception::UnionTakesAtleastTwoTypeNames 2.1403 - Moose::Exception::ValidationFailedForInlineTypeConstraint 2.1403 - Moose::Exception::ValidationFailedForTypeConstraint 2.1403 - Moose::Exception::WrapTakesACodeRefToBless 2.1403 - Moose::Exception::WrongTypeConstraintGiven 2.1403 - Moose::Exporter 2.1403 - Moose::Meta::Attribute 2.1403 - Moose::Meta::Attribute::Native 2.1403 + Moose::Exception 2.1604 + Moose::Exception::AccessorMustReadWrite 2.1604 + Moose::Exception::AddParameterizableTypeTakesParameterizableType 2.1604 + Moose::Exception::AddRoleTakesAMooseMetaRoleInstance 2.1604 + Moose::Exception::AddRoleToARoleTakesAMooseMetaRole 2.1604 + Moose::Exception::ApplyTakesABlessedInstance 2.1604 + Moose::Exception::AttachToClassNeedsAClassMOPClassInstanceOrASubclass 2.1604 + Moose::Exception::AttributeConflictInRoles 2.1604 + Moose::Exception::AttributeConflictInSummation 2.1604 + Moose::Exception::AttributeExtensionIsNotSupportedInRoles 2.1604 + Moose::Exception::AttributeIsRequired 2.1604 + Moose::Exception::AttributeMustBeAnClassMOPMixinAttributeCoreOrSubclass 2.1604 + Moose::Exception::AttributeNamesDoNotMatch 2.1604 + Moose::Exception::AttributeValueIsNotAnObject 2.1604 + Moose::Exception::AttributeValueIsNotDefined 2.1604 + Moose::Exception::AutoDeRefNeedsArrayRefOrHashRef 2.1604 + Moose::Exception::BadOptionFormat 2.1604 + Moose::Exception::BothBuilderAndDefaultAreNotAllowed 2.1604 + Moose::Exception::BuilderDoesNotExist 2.1604 + Moose::Exception::BuilderMethodNotSupportedForAttribute 2.1604 + Moose::Exception::BuilderMethodNotSupportedForInlineAttribute 2.1604 + Moose::Exception::BuilderMustBeAMethodName 2.1604 + Moose::Exception::CallingMethodOnAnImmutableInstance 2.1604 + Moose::Exception::CallingReadOnlyMethodOnAnImmutableInstance 2.1604 + Moose::Exception::CanExtendOnlyClasses 2.1604 + Moose::Exception::CanOnlyConsumeRole 2.1604 + Moose::Exception::CanOnlyWrapBlessedCode 2.1604 + Moose::Exception::CanReblessOnlyIntoASubclass 2.1604 + Moose::Exception::CanReblessOnlyIntoASuperclass 2.1604 + Moose::Exception::CannotAddAdditionalTypeCoercionsToUnion 2.1604 + Moose::Exception::CannotAddAsAnAttributeToARole 2.1604 + Moose::Exception::CannotApplyBaseClassRolesToRole 2.1604 + Moose::Exception::CannotAssignValueToReadOnlyAccessor 2.1604 + Moose::Exception::CannotAugmentIfLocalMethodPresent 2.1604 + Moose::Exception::CannotAugmentNoSuperMethod 2.1604 + Moose::Exception::CannotAutoDerefWithoutIsa 2.1604 + Moose::Exception::CannotAutoDereferenceTypeConstraint 2.1604 + Moose::Exception::CannotCalculateNativeType 2.1604 + Moose::Exception::CannotCallAnAbstractBaseMethod 2.1604 + Moose::Exception::CannotCallAnAbstractMethod 2.1604 + Moose::Exception::CannotCoerceAWeakRef 2.1604 + Moose::Exception::CannotCoerceAttributeWhichHasNoCoercion 2.1604 + Moose::Exception::CannotCreateHigherOrderTypeWithoutATypeParameter 2.1604 + Moose::Exception::CannotCreateMethodAliasLocalMethodIsPresent 2.1604 + Moose::Exception::CannotCreateMethodAliasLocalMethodIsPresentInClass 2.1604 + Moose::Exception::CannotDelegateLocalMethodIsPresent 2.1604 + Moose::Exception::CannotDelegateWithoutIsa 2.1604 + Moose::Exception::CannotFindDelegateMetaclass 2.1604 + Moose::Exception::CannotFindType 2.1604 + Moose::Exception::CannotFindTypeGivenToMatchOnType 2.1604 + Moose::Exception::CannotFixMetaclassCompatibility 2.1604 + Moose::Exception::CannotGenerateInlineConstraint 2.1604 + Moose::Exception::CannotInitializeMooseMetaRoleComposite 2.1604 + Moose::Exception::CannotInlineTypeConstraintCheck 2.1604 + Moose::Exception::CannotLocatePackageInINC 2.1604 + Moose::Exception::CannotMakeMetaclassCompatible 2.1604 + Moose::Exception::CannotOverrideALocalMethod 2.1604 + Moose::Exception::CannotOverrideBodyOfMetaMethods 2.1604 + Moose::Exception::CannotOverrideLocalMethodIsPresent 2.1604 + Moose::Exception::CannotOverrideNoSuperMethod 2.1604 + Moose::Exception::CannotRegisterUnnamedTypeConstraint 2.1604 + Moose::Exception::CannotUseLazyBuildAndDefaultSimultaneously 2.1604 + Moose::Exception::CircularReferenceInAlso 2.1604 + Moose::Exception::ClassDoesNotHaveInitMeta 2.1604 + Moose::Exception::ClassDoesTheExcludedRole 2.1604 + Moose::Exception::ClassNamesDoNotMatch 2.1604 + Moose::Exception::CloneObjectExpectsAnInstanceOfMetaclass 2.1604 + Moose::Exception::CodeBlockMustBeACodeRef 2.1604 + Moose::Exception::CoercingWithoutCoercions 2.1604 + Moose::Exception::CoercionAlreadyExists 2.1604 + Moose::Exception::CoercionNeedsTypeConstraint 2.1604 + Moose::Exception::ConflictDetectedInCheckRoleExclusions 2.1604 + Moose::Exception::ConflictDetectedInCheckRoleExclusionsInToClass 2.1604 + Moose::Exception::ConstructClassInstanceTakesPackageName 2.1604 + Moose::Exception::CouldNotCreateMethod 2.1604 + Moose::Exception::CouldNotCreateWriter 2.1604 + Moose::Exception::CouldNotEvalConstructor 2.1604 + Moose::Exception::CouldNotEvalDestructor 2.1604 + Moose::Exception::CouldNotFindTypeConstraintToCoerceFrom 2.1604 + Moose::Exception::CouldNotGenerateInlineAttributeMethod 2.1604 + Moose::Exception::CouldNotLocateTypeConstraintForUnion 2.1604 + Moose::Exception::CouldNotParseType 2.1604 + Moose::Exception::CreateMOPClassTakesArrayRefOfAttributes 2.1604 + Moose::Exception::CreateMOPClassTakesArrayRefOfSuperclasses 2.1604 + Moose::Exception::CreateMOPClassTakesHashRefOfMethods 2.1604 + Moose::Exception::CreateTakesArrayRefOfRoles 2.1604 + Moose::Exception::CreateTakesHashRefOfAttributes 2.1604 + Moose::Exception::CreateTakesHashRefOfMethods 2.1604 + Moose::Exception::DefaultToMatchOnTypeMustBeCodeRef 2.1604 + Moose::Exception::DelegationToAClassWhichIsNotLoaded 2.1604 + Moose::Exception::DelegationToARoleWhichIsNotLoaded 2.1604 + Moose::Exception::DelegationToATypeWhichIsNotAClass 2.1604 + Moose::Exception::DoesRequiresRoleName 2.1604 + Moose::Exception::EnumCalledWithAnArrayRefAndAdditionalArgs 2.1604 + Moose::Exception::EnumValuesMustBeString 2.1604 + Moose::Exception::ExtendsMissingArgs 2.1604 + Moose::Exception::HandlesMustBeAHashRef 2.1604 + Moose::Exception::IllegalInheritedOptions 2.1604 + Moose::Exception::IllegalMethodTypeToAddMethodModifier 2.1604 + Moose::Exception::IncompatibleMetaclassOfSuperclass 2.1604 + Moose::Exception::InitMetaRequiresClass 2.1604 + Moose::Exception::InitializeTakesUnBlessedPackageName 2.1604 + Moose::Exception::InstanceBlessedIntoWrongClass 2.1604 + Moose::Exception::InstanceMustBeABlessedReference 2.1604 + Moose::Exception::InvalidArgPassedToMooseUtilMetaRole 2.1604 + Moose::Exception::InvalidArgumentToMethod 2.1604 + Moose::Exception::InvalidArgumentsToTraitAliases 2.1604 + Moose::Exception::InvalidBaseTypeGivenToCreateParameterizedTypeConstraint 2.1604 + Moose::Exception::InvalidHandleValue 2.1604 + Moose::Exception::InvalidHasProvidedInARole 2.1604 + Moose::Exception::InvalidNameForType 2.1604 + Moose::Exception::InvalidOverloadOperator 2.1604 + Moose::Exception::InvalidRoleApplication 2.1604 + Moose::Exception::InvalidTypeConstraint 2.1604 + Moose::Exception::InvalidTypeGivenToCreateParameterizedTypeConstraint 2.1604 + Moose::Exception::InvalidValueForIs 2.1604 + Moose::Exception::IsaDoesNotDoTheRole 2.1604 + Moose::Exception::IsaLacksDoesMethod 2.1604 + Moose::Exception::LazyAttributeNeedsADefault 2.1604 + Moose::Exception::Legacy 2.1604 + Moose::Exception::MOPAttributeNewNeedsAttributeName 2.1604 + Moose::Exception::MatchActionMustBeACodeRef 2.1604 + Moose::Exception::MessageParameterMustBeCodeRef 2.1604 + Moose::Exception::MetaclassIsAClassNotASubclassOfGivenMetaclass 2.1604 + Moose::Exception::MetaclassIsARoleNotASubclassOfGivenMetaclass 2.1604 + Moose::Exception::MetaclassIsNotASubclassOfGivenMetaclass 2.1604 + Moose::Exception::MetaclassMustBeASubclassOfMooseMetaClass 2.1604 + Moose::Exception::MetaclassMustBeASubclassOfMooseMetaRole 2.1604 + Moose::Exception::MetaclassMustBeDerivedFromClassMOPClass 2.1604 + Moose::Exception::MetaclassNotLoaded 2.1604 + Moose::Exception::MetaclassTypeIncompatible 2.1604 + Moose::Exception::MethodExpectedAMetaclassObject 2.1604 + Moose::Exception::MethodExpectsFewerArgs 2.1604 + Moose::Exception::MethodExpectsMoreArgs 2.1604 + Moose::Exception::MethodModifierNeedsMethodName 2.1604 + Moose::Exception::MethodNameConflictInRoles 2.1604 + Moose::Exception::MethodNameNotFoundInInheritanceHierarchy 2.1604 + Moose::Exception::MethodNameNotGiven 2.1604 + Moose::Exception::MustDefineAMethodName 2.1604 + Moose::Exception::MustDefineAnAttributeName 2.1604 + Moose::Exception::MustDefineAnOverloadOperator 2.1604 + Moose::Exception::MustHaveAtLeastOneValueToEnumerate 2.1604 + Moose::Exception::MustPassAHashOfOptions 2.1604 + Moose::Exception::MustPassAMooseMetaRoleInstanceOrSubclass 2.1604 + Moose::Exception::MustPassAPackageNameOrAnExistingClassMOPPackageInstance 2.1604 + Moose::Exception::MustPassEvenNumberOfArguments 2.1604 + Moose::Exception::MustPassEvenNumberOfAttributeOptions 2.1604 + Moose::Exception::MustProvideANameForTheAttribute 2.1604 + Moose::Exception::MustSpecifyAtleastOneMethod 2.1604 + Moose::Exception::MustSpecifyAtleastOneRole 2.1604 + Moose::Exception::MustSpecifyAtleastOneRoleToApplicant 2.1604 + Moose::Exception::MustSupplyAClassMOPAttributeInstance 2.1604 + Moose::Exception::MustSupplyADelegateToMethod 2.1604 + Moose::Exception::MustSupplyAMetaclass 2.1604 + Moose::Exception::MustSupplyAMooseMetaAttributeInstance 2.1604 + Moose::Exception::MustSupplyAnAccessorTypeToConstructWith 2.1604 + Moose::Exception::MustSupplyAnAttributeToConstructWith 2.1604 + Moose::Exception::MustSupplyArrayRefAsCurriedArguments 2.1604 + Moose::Exception::MustSupplyPackageNameAndName 2.1604 + Moose::Exception::NeedsTypeConstraintUnionForTypeCoercionUnion 2.1604 + Moose::Exception::NeitherAttributeNorAttributeNameIsGiven 2.1604 + Moose::Exception::NeitherClassNorClassNameIsGiven 2.1604 + Moose::Exception::NeitherRoleNorRoleNameIsGiven 2.1604 + Moose::Exception::NeitherTypeNorTypeNameIsGiven 2.1604 + Moose::Exception::NoAttributeFoundInSuperClass 2.1604 + Moose::Exception::NoBodyToInitializeInAnAbstractBaseClass 2.1604 + Moose::Exception::NoCasesMatched 2.1604 + Moose::Exception::NoConstraintCheckForTypeConstraint 2.1604 + Moose::Exception::NoDestructorClassSpecified 2.1604 + Moose::Exception::NoImmutableTraitSpecifiedForClass 2.1604 + Moose::Exception::NoParentGivenToSubtype 2.1604 + Moose::Exception::OnlyInstancesCanBeCloned 2.1604 + Moose::Exception::OperatorIsRequired 2.1604 + Moose::Exception::OverloadConflictInSummation 2.1604 + Moose::Exception::OverloadRequiresAMetaClass 2.1604 + Moose::Exception::OverloadRequiresAMetaMethod 2.1604 + Moose::Exception::OverloadRequiresAMetaOverload 2.1604 + Moose::Exception::OverloadRequiresAMethodNameOrCoderef 2.1604 + Moose::Exception::OverloadRequiresAnOperator 2.1604 + Moose::Exception::OverloadRequiresNamesForCoderef 2.1604 + Moose::Exception::OverrideConflictInComposition 2.1604 + Moose::Exception::OverrideConflictInSummation 2.1604 + Moose::Exception::PackageDoesNotUseMooseExporter 2.1604 + Moose::Exception::PackageNameAndNameParamsNotGivenToWrap 2.1604 + Moose::Exception::PackagesAndModulesAreNotCachable 2.1604 + Moose::Exception::ParameterIsNotSubtypeOfParent 2.1604 + Moose::Exception::ReferencesAreNotAllowedAsDefault 2.1604 + Moose::Exception::RequiredAttributeLacksInitialization 2.1604 + Moose::Exception::RequiredAttributeNeedsADefault 2.1604 + Moose::Exception::RequiredMethodsImportedByClass 2.1604 + Moose::Exception::RequiredMethodsNotImplementedByClass 2.1604 + Moose::Exception::Role::Attribute 2.1604 + Moose::Exception::Role::AttributeName 2.1604 + Moose::Exception::Role::Class 2.1604 + Moose::Exception::Role::EitherAttributeOrAttributeName 2.1604 + Moose::Exception::Role::Instance 2.1604 + Moose::Exception::Role::InstanceClass 2.1604 + Moose::Exception::Role::InvalidAttributeOptions 2.1604 + Moose::Exception::Role::Method 2.1604 + Moose::Exception::Role::ParamsHash 2.1604 + Moose::Exception::Role::Role 2.1604 + Moose::Exception::Role::RoleForCreate 2.1604 + Moose::Exception::Role::RoleForCreateMOPClass 2.1604 + Moose::Exception::Role::TypeConstraint 2.1604 + Moose::Exception::RoleDoesTheExcludedRole 2.1604 + Moose::Exception::RoleExclusionConflict 2.1604 + Moose::Exception::RoleNameRequired 2.1604 + Moose::Exception::RoleNameRequiredForMooseMetaRole 2.1604 + Moose::Exception::RolesDoNotSupportAugment 2.1604 + Moose::Exception::RolesDoNotSupportExtends 2.1604 + Moose::Exception::RolesDoNotSupportInner 2.1604 + Moose::Exception::RolesDoNotSupportRegexReferencesForMethodModifiers 2.1604 + Moose::Exception::RolesInCreateTakesAnArrayRef 2.1604 + Moose::Exception::RolesListMustBeInstancesOfMooseMetaRole 2.1604 + Moose::Exception::SingleParamsToNewMustBeHashRef 2.1604 + Moose::Exception::TriggerMustBeACodeRef 2.1604 + Moose::Exception::TypeConstraintCannotBeUsedForAParameterizableType 2.1604 + Moose::Exception::TypeConstraintIsAlreadyCreated 2.1604 + Moose::Exception::TypeParameterMustBeMooseMetaType 2.1604 + Moose::Exception::UnableToCanonicalizeHandles 2.1604 + Moose::Exception::UnableToCanonicalizeNonRolePackage 2.1604 + Moose::Exception::UnableToRecognizeDelegateMetaclass 2.1604 + Moose::Exception::UndefinedHashKeysPassedToMethod 2.1604 + Moose::Exception::UnionCalledWithAnArrayRefAndAdditionalArgs 2.1604 + Moose::Exception::UnionTakesAtleastTwoTypeNames 2.1604 + Moose::Exception::ValidationFailedForInlineTypeConstraint 2.1604 + Moose::Exception::ValidationFailedForTypeConstraint 2.1604 + Moose::Exception::WrapTakesACodeRefToBless 2.1604 + Moose::Exception::WrongTypeConstraintGiven 2.1604 + Moose::Exporter 2.1604 + Moose::Meta::Attribute 2.1604 + Moose::Meta::Attribute::Native 2.1604 Moose::Meta::Attribute::Native::Trait undef - Moose::Meta::Attribute::Native::Trait::Array 2.1403 - Moose::Meta::Attribute::Native::Trait::Bool 2.1403 - Moose::Meta::Attribute::Native::Trait::Code 2.1403 - Moose::Meta::Attribute::Native::Trait::Counter 2.1403 - Moose::Meta::Attribute::Native::Trait::Hash 2.1403 - Moose::Meta::Attribute::Native::Trait::Number 2.1403 - Moose::Meta::Attribute::Native::Trait::String 2.1403 - Moose::Meta::Class 2.1403 + Moose::Meta::Attribute::Native::Trait::Array 2.1604 + Moose::Meta::Attribute::Native::Trait::Bool 2.1604 + Moose::Meta::Attribute::Native::Trait::Code 2.1604 + Moose::Meta::Attribute::Native::Trait::Counter 2.1604 + Moose::Meta::Attribute::Native::Trait::Hash 2.1604 + Moose::Meta::Attribute::Native::Trait::Number 2.1604 + Moose::Meta::Attribute::Native::Trait::String 2.1604 + Moose::Meta::Class 2.1604 Moose::Meta::Class::Immutable::Trait undef - Moose::Meta::Instance 2.1403 - Moose::Meta::Method 2.1403 - Moose::Meta::Method::Accessor 2.1403 + Moose::Meta::Instance 2.1604 + Moose::Meta::Method 2.1604 + Moose::Meta::Method::Accessor 2.1604 Moose::Meta::Method::Accessor::Native undef Moose::Meta::Method::Accessor::Native::Array undef Moose::Meta::Method::Accessor::Native::Array::Writer undef @@ -5441,52 +4971,52 @@ DISTRIBUTIONS Moose::Meta::Method::Accessor::Native::String::replace undef Moose::Meta::Method::Accessor::Native::String::substr undef Moose::Meta::Method::Accessor::Native::Writer undef - Moose::Meta::Method::Augmented 2.1403 - Moose::Meta::Method::Constructor 2.1403 - Moose::Meta::Method::Delegation 2.1403 - Moose::Meta::Method::Destructor 2.1403 - Moose::Meta::Method::Meta 2.1403 - Moose::Meta::Method::Overridden 2.1403 + Moose::Meta::Method::Augmented 2.1604 + Moose::Meta::Method::Constructor 2.1604 + Moose::Meta::Method::Delegation 2.1604 + Moose::Meta::Method::Destructor 2.1604 + Moose::Meta::Method::Meta 2.1604 + Moose::Meta::Method::Overridden 2.1604 Moose::Meta::Mixin::AttributeCore undef Moose::Meta::Object::Trait undef - Moose::Meta::Role 2.1403 - Moose::Meta::Role::Application 2.1403 - Moose::Meta::Role::Application::RoleSummation 2.1403 - Moose::Meta::Role::Application::ToClass 2.1403 - Moose::Meta::Role::Application::ToInstance 2.1403 - Moose::Meta::Role::Application::ToRole 2.1403 - Moose::Meta::Role::Attribute 2.1403 - Moose::Meta::Role::Composite 2.1403 - Moose::Meta::Role::Method 2.1403 - Moose::Meta::Role::Method::Conflicting 2.1403 - Moose::Meta::Role::Method::Required 2.1403 - Moose::Meta::TypeCoercion 2.1403 - Moose::Meta::TypeCoercion::Union 2.1403 - Moose::Meta::TypeConstraint 2.1403 - Moose::Meta::TypeConstraint::Class 2.1403 - Moose::Meta::TypeConstraint::DuckType 2.1403 - Moose::Meta::TypeConstraint::Enum 2.1403 - Moose::Meta::TypeConstraint::Parameterizable 2.1403 - Moose::Meta::TypeConstraint::Parameterized 2.1403 - Moose::Meta::TypeConstraint::Registry 2.1403 - Moose::Meta::TypeConstraint::Role 2.1403 - Moose::Meta::TypeConstraint::Union 2.1403 - Moose::Object 2.1403 - Moose::Role 2.1403 - Moose::Util 2.1403 - Moose::Util::MetaRole 2.1403 - Moose::Util::TypeConstraints 2.1403 + Moose::Meta::Role 2.1604 + Moose::Meta::Role::Application 2.1604 + Moose::Meta::Role::Application::RoleSummation 2.1604 + Moose::Meta::Role::Application::ToClass 2.1604 + Moose::Meta::Role::Application::ToInstance 2.1604 + Moose::Meta::Role::Application::ToRole 2.1604 + Moose::Meta::Role::Attribute 2.1604 + Moose::Meta::Role::Composite 2.1604 + Moose::Meta::Role::Method 2.1604 + Moose::Meta::Role::Method::Conflicting 2.1604 + Moose::Meta::Role::Method::Required 2.1604 + Moose::Meta::TypeCoercion 2.1604 + Moose::Meta::TypeCoercion::Union 2.1604 + Moose::Meta::TypeConstraint 2.1604 + Moose::Meta::TypeConstraint::Class 2.1604 + Moose::Meta::TypeConstraint::DuckType 2.1604 + Moose::Meta::TypeConstraint::Enum 2.1604 + Moose::Meta::TypeConstraint::Parameterizable 2.1604 + Moose::Meta::TypeConstraint::Parameterized 2.1604 + Moose::Meta::TypeConstraint::Registry 2.1604 + Moose::Meta::TypeConstraint::Role 2.1604 + Moose::Meta::TypeConstraint::Union 2.1604 + Moose::Object 2.1604 + Moose::Role 2.1604 + Moose::Util 2.1604 + Moose::Util::MetaRole 2.1604 + Moose::Util::TypeConstraints 2.1604 Moose::Util::TypeConstraints::Builtins undef - Test::Moose 2.1403 - metaclass 2.1403 - oose 2.1403 + Test::Moose 2.1604 + metaclass 2.1604 + oose 2.1604 requirements: Carp 1.22 Class::Load 0.09 Class::Load::XS 0.01 Data::OptList 0.107 Devel::GlobalDestruction 0 - Devel::OverloadInfo 0.002 + Devel::OverloadInfo 0.004 Devel::StackTrace 1.33 Dist::CheckConflicts 0.02 Eval::Closure 0.04 @@ -5494,20 +5024,22 @@ DISTRIBUTIONS ExtUtils::MakeMaker 0 File::Spec 0 List::MoreUtils 0.28 - List::Util 1.33 + List::Util 1.35 MRO::Compat 0.05 Module::Runtime 0.014 - Module::Runtime::Conflicts 0 + Module::Runtime::Conflicts 0.002 Package::DeprecationManager 0.11 Package::Stash 0.32 Package::Stash::XS 0.24 Params::Util 1.00 Scalar::Util 1.19 Sub::Exporter 0.980 + Sub::Identify 0 Sub::Name 0.05 Task::Weaken 0 Try::Tiny 0.17 parent 0.223 + perl 5.008003 strict 1.03 warnings 1.03 MooseX-Aliases-0.11 @@ -5622,26 +5154,25 @@ DISTRIBUTIONS Test::Exception 0 Test::More 0 namespace::clean 0 - MooseX-Getopt-0.63 - pathname: E/ET/ETHER/MooseX-Getopt-0.63.tar.gz - provides: - MooseX::Getopt 0.63 - MooseX::Getopt::Basic 0.63 - MooseX::Getopt::Dashes 0.63 - MooseX::Getopt::GLD 0.63 - MooseX::Getopt::Meta::Attribute 0.63 - MooseX::Getopt::Meta::Attribute::NoGetopt 0.63 - MooseX::Getopt::Meta::Attribute::Trait 0.63 - MooseX::Getopt::Meta::Attribute::Trait::NoGetopt 0.63 - MooseX::Getopt::OptionTypeMap 0.63 - MooseX::Getopt::ProcessedArgv 0.63 - MooseX::Getopt::Strict 0.63 + MooseX-Getopt-0.68 + pathname: E/ET/ETHER/MooseX-Getopt-0.68.tar.gz + provides: + MooseX::Getopt 0.68 + MooseX::Getopt::Basic 0.68 + MooseX::Getopt::Dashes 0.68 + MooseX::Getopt::GLD 0.68 + MooseX::Getopt::Meta::Attribute 0.68 + MooseX::Getopt::Meta::Attribute::NoGetopt 0.68 + MooseX::Getopt::Meta::Attribute::Trait 0.68 + MooseX::Getopt::Meta::Attribute::Trait::NoGetopt 0.68 + MooseX::Getopt::OptionTypeMap 0.68 + MooseX::Getopt::ProcessedArgv 0.68 + MooseX::Getopt::Strict 0.68 requirements: Carp 0 - ExtUtils::MakeMaker 6.30 Getopt::Long 2.37 - Getopt::Long::Descriptive 0.081 - Module::Build::Tiny 0.035 + Getopt::Long::Descriptive 0.088 + Module::Build::Tiny 0.039 Moose 0 Moose::Meta::Attribute 0 Moose::Role 0.56 @@ -5653,27 +5184,30 @@ DISTRIBUTIONS perl 5.006 strict 0 warnings 0 - MooseX-MethodAttributes-0.29 - pathname: E/ET/ETHER/MooseX-MethodAttributes-0.29.tar.gz - provides: - MooseX::MethodAttributes 0.29 - MooseX::MethodAttributes::Inheritable 0.29 - MooseX::MethodAttributes::Role 0.29 - MooseX::MethodAttributes::Role::AttrContainer 0.29 - MooseX::MethodAttributes::Role::AttrContainer::Inheritable 0.29 - MooseX::MethodAttributes::Role::Meta::Class 0.29 - MooseX::MethodAttributes::Role::Meta::Map 0.29 - MooseX::MethodAttributes::Role::Meta::Method 0.29 - MooseX::MethodAttributes::Role::Meta::Method::MaybeWrapped 0.29 - MooseX::MethodAttributes::Role::Meta::Method::Wrapped 0.29 - MooseX::MethodAttributes::Role::Meta::Role 0.29 - MooseX::MethodAttributes::Role::Meta::Role::Application 0.29 - MooseX::MethodAttributes::Role::Meta::Role::Application::Summation 0.29 + MooseX-MethodAttributes-0.31 + pathname: E/ET/ETHER/MooseX-MethodAttributes-0.31.tar.gz + provides: + MooseX::MethodAttributes 0.31 + MooseX::MethodAttributes::Inheritable 0.31 + MooseX::MethodAttributes::Role 0.31 + MooseX::MethodAttributes::Role::AttrContainer 0.31 + MooseX::MethodAttributes::Role::AttrContainer::Inheritable 0.31 + MooseX::MethodAttributes::Role::Meta::Class 0.31 + MooseX::MethodAttributes::Role::Meta::Map 0.31 + MooseX::MethodAttributes::Role::Meta::Method 0.31 + MooseX::MethodAttributes::Role::Meta::Method::MaybeWrapped 0.31 + MooseX::MethodAttributes::Role::Meta::Method::Wrapped 0.31 + MooseX::MethodAttributes::Role::Meta::Role 0.31 + MooseX::MethodAttributes::Role::Meta::Role::Application 0.31 + MooseX::MethodAttributes::Role::Meta::Role::Application::Summation 0.31 requirements: Carp 0 - ExtUtils::MakeMaker 6.30 - Module::Build::Tiny 0.030 - Moose 0.98 + ExtUtils::MakeMaker 0 + Moose 0 + Moose::Exporter 0 + Moose::Role 0 + Moose::Util 0 + Moose::Util::MetaRole 0 MooseX::Types::Moose 0.21 namespace::autoclean 0.08 perl 5.006 @@ -5686,47 +5220,51 @@ DISTRIBUTIONS ExtUtils::MakeMaker 0 Moose 0.73 MooseX::Role::Parameterized 0.04 - MooseX-Role-Parameterized-1.02 - pathname: S/SA/SARTAK/MooseX-Role-Parameterized-1.02.tar.gz + MooseX-Role-Parameterized-1.08 + pathname: E/ET/ETHER/MooseX-Role-Parameterized-1.08.tar.gz provides: - MooseX::Role::Parameterized 1.02 - MooseX::Role::Parameterized::Meta::Role::Parameterizable 1.02 - MooseX::Role::Parameterized::Meta::Role::Parameterized 1.02 - MooseX::Role::Parameterized::Meta::Trait::Parameterized 1.02 - MooseX::Role::Parameterized::Parameters 1.02 + MooseX::Role::Parameterized 1.08 + MooseX::Role::Parameterized::Meta::Role::Parameterized 1.08 + MooseX::Role::Parameterized::Meta::Trait::Parameterizable 1.08 + MooseX::Role::Parameterized::Meta::Trait::Parameterized 1.08 + MooseX::Role::Parameterized::Parameters 1.08 requirements: - ExtUtils::MakeMaker 6.59 + Carp 0 + ExtUtils::MakeMaker 0 + Module::Build::Tiny 0.037 Module::Runtime 0 Moose 2.0300 - Test::Fatal 0 - Test::Moose 0 - Test::More 0.96 + Moose::Exporter 0 + Moose::Meta::Role 0 + Moose::Role 0 + Moose::Util 0 + namespace::autoclean 0 + namespace::clean 0 perl 5.008001 - MooseX-Role-WithOverloading-0.13 - pathname: E/ET/ETHER/MooseX-Role-WithOverloading-0.13.tar.gz - provides: - MooseX::Role::WithOverloading 0.13 - MooseX::Role::WithOverloading::Meta::Role 0.13 - MooseX::Role::WithOverloading::Meta::Role::Application 0.13 - MooseX::Role::WithOverloading::Meta::Role::Application::Composite 0.13 - MooseX::Role::WithOverloading::Meta::Role::Application::Composite::ToClass 0.13 - MooseX::Role::WithOverloading::Meta::Role::Application::Composite::ToInstance 0.13 - MooseX::Role::WithOverloading::Meta::Role::Application::Composite::ToRole 0.13 - MooseX::Role::WithOverloading::Meta::Role::Application::FixOverloadedRefs 0.13 - MooseX::Role::WithOverloading::Meta::Role::Application::ToClass 0.13 - MooseX::Role::WithOverloading::Meta::Role::Application::ToInstance 0.13 - MooseX::Role::WithOverloading::Meta::Role::Application::ToRole 0.13 - MooseX::Role::WithOverloading::Meta::Role::Composite 0.13 + MooseX-Role-WithOverloading-0.17 + pathname: E/ET/ETHER/MooseX-Role-WithOverloading-0.17.tar.gz + provides: + MooseX::Role::WithOverloading 0.17 + MooseX::Role::WithOverloading::Meta::Role 0.17 + MooseX::Role::WithOverloading::Meta::Role::Application 0.17 + MooseX::Role::WithOverloading::Meta::Role::Application::Composite 0.17 + MooseX::Role::WithOverloading::Meta::Role::Application::Composite::ToClass 0.17 + MooseX::Role::WithOverloading::Meta::Role::Application::Composite::ToInstance 0.17 + MooseX::Role::WithOverloading::Meta::Role::Application::Composite::ToRole 0.17 + MooseX::Role::WithOverloading::Meta::Role::Application::FixOverloadedRefs 0.17 + MooseX::Role::WithOverloading::Meta::Role::Application::ToClass 0.17 + MooseX::Role::WithOverloading::Meta::Role::Application::ToInstance 0.17 + MooseX::Role::WithOverloading::Meta::Role::Application::ToRole 0.17 + MooseX::Role::WithOverloading::Meta::Role::Composite 0.17 requirements: - ExtUtils::MakeMaker 6.30 + ExtUtils::MakeMaker 0 Moose 0.94 + Moose::Exporter 0 Moose::Role 1.15 - Test::CheckDeps 0.002 - Test::More 0.88 - Test::NoWarnings 1.04 aliased 0 - namespace::autoclean 0.12 - namespace::clean 0 + namespace::autoclean 0.16 + namespace::clean 0.19 + perl 5.006 MooseX-StrictConstructor-0.19 pathname: D/DR/DROLSKY/MooseX-StrictConstructor-0.19.tar.gz provides: @@ -5759,24 +5297,23 @@ DISTRIBUTIONS Moose::Util 0 Scalar::Util 0 namespace::autoclean 0 - MooseX-Types-0.44 - pathname: E/ET/ETHER/MooseX-Types-0.44.tar.gz - provides: - MooseX::Types 0.44 - MooseX::Types::Base 0.44 - MooseX::Types::CheckedUtilExports 0.44 - MooseX::Types::Combine 0.44 - MooseX::Types::Moose 0.44 - MooseX::Types::TypeDecorator 0.44 - MooseX::Types::UndefinedType 0.44 - MooseX::Types::Util 0.44 - MooseX::Types::Wrapper 0.44 + MooseX-Types-0.46 + pathname: E/ET/ETHER/MooseX-Types-0.46.tar.gz + provides: + MooseX::Types 0.46 + MooseX::Types::Base 0.46 + MooseX::Types::CheckedUtilExports 0.46 + MooseX::Types::Combine 0.46 + MooseX::Types::Moose 0.46 + MooseX::Types::TypeDecorator 0.46 + MooseX::Types::UndefinedType 0.46 + MooseX::Types::Util 0.46 + MooseX::Types::Wrapper 0.46 requirements: Carp 0 Carp::Clan 6.00 Exporter 0 - ExtUtils::MakeMaker 6.30 - Module::Build::Tiny 0.035 + Module::Build::Tiny 0.007 Module::Runtime 0 Moose 1.06 Moose::Exporter 0 @@ -5784,26 +5321,26 @@ DISTRIBUTIONS Moose::Util::TypeConstraints 0 Scalar::Util 1.19 Sub::Exporter 0 + Sub::Exporter::ForMethods 0.100052 Sub::Name 0 base 0 - namespace::autoclean 0.08 - namespace::clean 0 + namespace::autoclean 0.16 overload 0 perl 5.008 strict 0 warnings 0 - MooseX-Types-Common-0.001012 - pathname: E/ET/ETHER/MooseX-Types-Common-0.001012.tar.gz + MooseX-Types-Common-0.001013 + pathname: E/ET/ETHER/MooseX-Types-Common-0.001013.tar.gz provides: - MooseX::Types::Common 0.001012 - MooseX::Types::Common::Numeric 0.001012 - MooseX::Types::Common::String 0.001012 + MooseX::Types::Common 0.001013 + MooseX::Types::Common::Numeric 0.001013 + MooseX::Types::Common::String 0.001013 requirements: Carp 0 - ExtUtils::MakeMaker 6.30 - Module::Build::Tiny 0.030 + Module::Build::Tiny 0.039 MooseX::Types 0 MooseX::Types::Moose 0 + if 0 perl 5.008 strict 0 warnings 0 @@ -5817,17 +5354,20 @@ DISTRIBUTIONS Module::Build 0.3601 MooseX::Types 0 Search::Elasticsearch 0 - MooseX-Types-Path-Class-0.06 - pathname: T/TH/THEPLER/MooseX-Types-Path-Class-0.06.tar.gz + MooseX-Types-Path-Class-0.08 + pathname: E/ET/ETHER/MooseX-Types-Path-Class-0.08.tar.gz provides: - MooseX::Types::Path::Class 0.06 + MooseX::Types::Path::Class 0.08 requirements: - Class::MOP 0 - ExtUtils::MakeMaker 6.30 - Moose 0.39 - MooseX::Types 0.04 + Module::Build::Tiny 0.007 + MooseX::Getopt 0 + MooseX::Types 0 + MooseX::Types::Moose 0 Path::Class 0.16 - Test::More 0.88 + if 0 + perl 5.006 + strict 0 + warnings 0 MooseX-Types-Path-Class-MoreCoercions-0.003 pathname: D/DA/DAGOLDEN/MooseX-Types-Path-Class-MoreCoercions-0.003.tar.gz provides: @@ -5856,15 +5396,14 @@ DISTRIBUTIONS overload 0 strict 0 warnings 0 - MooseX-Types-Structured-0.30 - pathname: E/ET/ETHER/MooseX-Types-Structured-0.30.tar.gz + MooseX-Types-Structured-0.34 + pathname: E/ET/ETHER/MooseX-Types-Structured-0.34.tar.gz provides: - MooseX::Types::Structured 0.30 + MooseX::Types::Structured 0.34 requirements: Devel::PartialDump 0.13 - ExtUtils::MakeMaker 6.30 - Module::Build::Tiny 0.030 - Moose 1.08 + Module::Build::Tiny 0.007 + Moose 0 Moose::Meta::TypeCoercion 0 Moose::Meta::TypeConstraint 0 Moose::Meta::TypeConstraint::Parameterizable 0 @@ -5872,16 +5411,16 @@ DISTRIBUTIONS MooseX::Types 0.22 Scalar::Util 0 Sub::Exporter 0.982 + if 0 + namespace::clean 0.19 overload 0 perl 5.008 - MooseX-Types-URI-0.07 - pathname: E/ET/ETHER/MooseX-Types-URI-0.07.tar.gz + MooseX-Types-URI-0.08 + pathname: E/ET/ETHER/MooseX-Types-URI-0.08.tar.gz provides: - MooseX::Types::URI 0.07 + MooseX::Types::URI 0.08 requirements: - ExtUtils::MakeMaker 6.30 - Module::Build::Tiny 0.036 - Moose::Util::TypeConstraints 0 + Module::Build::Tiny 0.007 MooseX::Types 0.40 MooseX::Types::Moose 0 MooseX::Types::Path::Class 0 @@ -5897,10 +5436,10 @@ DISTRIBUTIONS perl 5.006 strict 0 warnings 0 - Mouse-2.3.0 - pathname: G/GF/GFUJI/Mouse-2.3.0.tar.gz + Mouse-v2.4.5 + pathname: S/SY/SYOHEX/Mouse-v2.4.5.tar.gz provides: - Mouse 2.003000 + Mouse 2.004005 Mouse::Exporter undef Mouse::Meta::Attribute undef Mouse::Meta::Class undef @@ -5917,10 +5456,10 @@ DISTRIBUTIONS Mouse::Meta::TypeConstraint undef Mouse::Object undef Mouse::PurePerl undef - Mouse::Role 2.003000 - Mouse::Spec 2.003000 + Mouse::Role 2.004005 + Mouse::Spec 2.004005 Mouse::TypeRegistry undef - Mouse::Util 2.003000 + Mouse::Util 2.004005 Mouse::Util::MetaRole undef Mouse::Util::TypeConstraints undef Squirrel undef @@ -5928,20 +5467,17 @@ DISTRIBUTIONS Test::Mouse undef ouse undef requirements: - CPAN::Meta 0 - CPAN::Meta::Prereqs 0 - Devel::PPPort 3.19 - ExtUtils::CBuilder 0 + Devel::PPPort 3.22 ExtUtils::ParseXS 3.22 Module::Build 0.4005 - Module::Build::XSUtil 0.10 + Module::Build::XSUtil 0 Scalar::Util 1.14 XSLoader 0.02 perl 5.008005 - Mozilla-CA-20130114 - pathname: A/AB/ABH/Mozilla-CA-20130114.tar.gz + Mozilla-CA-20150826 + pathname: A/AB/ABH/Mozilla-CA-20150826.tar.gz provides: - Mozilla::CA 20130114 + Mozilla::CA 20150826 requirements: ExtUtils::MakeMaker 0 Test 0 @@ -5953,93 +5489,112 @@ DISTRIBUTIONS Net::CIDR::Lite::Span 0.21 requirements: ExtUtils::MakeMaker 0 - Net-DNS-0.76 - pathname: N/NL/NLNETLABS/Net-DNS-0.76.tar.gz - provides: - Net::DNS 0.76 - Net::DNS::Domain 1195 - Net::DNS::DomainName 1177 - Net::DNS::DomainName1035 1177 - Net::DNS::DomainName2535 1177 - Net::DNS::Header 1101 - Net::DNS::Mailbox 1155 - Net::DNS::Mailbox1035 1155 - Net::DNS::Mailbox2535 1155 - Net::DNS::Nameserver 1186 - Net::DNS::Packet 1204 - Net::DNS::Parameters 1194 - Net::DNS::Question 1098 - Net::DNS::RR 1203 - Net::DNS::RR::A 1188 - Net::DNS::RR::AAAA 1188 - Net::DNS::RR::AFSDB 1188 - Net::DNS::RR::APL 1188 - Net::DNS::RR::APL::Item 1188 - Net::DNS::RR::CAA 1188 - Net::DNS::RR::CERT 1188 - Net::DNS::RR::CNAME 1188 - Net::DNS::RR::DHCID 1188 - Net::DNS::RR::DNAME 1188 - Net::DNS::RR::EUI48 1188 - Net::DNS::RR::EUI64 1188 - Net::DNS::RR::GPOS 1188 - Net::DNS::RR::HINFO 1188 - Net::DNS::RR::HIP 1188 - Net::DNS::RR::IPSECKEY 1188 - Net::DNS::RR::ISDN 1188 - Net::DNS::RR::KX 1188 - Net::DNS::RR::L32 1188 - Net::DNS::RR::L64 1188 - Net::DNS::RR::LOC 1188 - Net::DNS::RR::LP 1188 - Net::DNS::RR::MB 1182 - Net::DNS::RR::MG 1182 - Net::DNS::RR::MINFO 1188 - Net::DNS::RR::MR 1182 - Net::DNS::RR::MX 1188 - Net::DNS::RR::NAPTR 1188 - Net::DNS::RR::NID 1188 - Net::DNS::RR::NS 1188 - Net::DNS::RR::NULL 1188 - Net::DNS::RR::OPT 1203 - Net::DNS::RR::PTR 1188 - Net::DNS::RR::PX 1188 - Net::DNS::RR::RP 1189 - Net::DNS::RR::RT 1188 - Net::DNS::RR::SOA 1188 - Net::DNS::RR::SPF 1188 - Net::DNS::RR::SRV 1188 - Net::DNS::RR::SSHFP 1188 - Net::DNS::RR::TKEY 1188 - Net::DNS::RR::TLSA 1188 - Net::DNS::RR::TSIG 1188 - Net::DNS::RR::TXT 1206 - Net::DNS::RR::X25 1188 - Net::DNS::Resolver 1202 - Net::DNS::Resolver::Base 1204 - Net::DNS::Resolver::MSWin32 1202 - Net::DNS::Resolver::Recurse 1185 - Net::DNS::Resolver::UNIX 1185 - Net::DNS::Resolver::cygwin 1202 - Net::DNS::Resolver::os2 1185 - Net::DNS::Text 1206 - Net::DNS::Update 1171 - Net::DNS::ZoneFile 1197 - Net::DNS::ZoneFile::Generator 1197 - Net::DNS::ZoneFile::Text 1197 - requirements: - Digest::HMAC 1.01 + Net-DNS-1.03 + pathname: N/NL/NLNETLABS/Net-DNS-1.03.tar.gz + provides: + Net::DNS 1.03 + Net::DNS::Domain 1406 + Net::DNS::DomainName 1381 + Net::DNS::DomainName1035 1381 + Net::DNS::DomainName2535 1381 + Net::DNS::Header 1381 + Net::DNS::Mailbox 1406 + Net::DNS::Mailbox1035 1406 + Net::DNS::Mailbox2535 1406 + Net::DNS::Nameserver 1406 + Net::DNS::Packet 1408 + Net::DNS::Parameters 1381 + Net::DNS::Question 1381 + Net::DNS::RR 1408 + Net::DNS::RR::A 1388 + Net::DNS::RR::AAAA 1388 + Net::DNS::RR::AFSDB 1406 + Net::DNS::RR::APL 1390 + Net::DNS::RR::APL::Item 1390 + Net::DNS::RR::CAA 1406 + Net::DNS::RR::CDNSKEY 1339 + Net::DNS::RR::CDS 1339 + Net::DNS::RR::CERT 1390 + Net::DNS::RR::CNAME 1406 + Net::DNS::RR::CSYNC 1390 + Net::DNS::RR::DHCID 1390 + Net::DNS::RR::DLV 1339 + Net::DNS::RR::DNAME 1406 + Net::DNS::RR::DNSKEY 1406 + Net::DNS::RR::DS 1390 + Net::DNS::RR::EUI48 1390 + Net::DNS::RR::EUI64 1390 + Net::DNS::RR::GPOS 1382 + Net::DNS::RR::HINFO 1406 + Net::DNS::RR::HIP 1390 + Net::DNS::RR::IPSECKEY 1390 + Net::DNS::RR::ISDN 1406 + Net::DNS::RR::KEY 1381 + Net::DNS::RR::KX 1406 + Net::DNS::RR::L32 1408 + Net::DNS::RR::L64 1408 + Net::DNS::RR::LOC 1390 + Net::DNS::RR::LP 1406 + Net::DNS::RR::MB 1406 + Net::DNS::RR::MG 1406 + Net::DNS::RR::MINFO 1406 + Net::DNS::RR::MR 1406 + Net::DNS::RR::MX 1406 + Net::DNS::RR::NAPTR 1406 + Net::DNS::RR::NID 1408 + Net::DNS::RR::NS 1406 + Net::DNS::RR::NSEC 1406 + Net::DNS::RR::NSEC3 1389 + Net::DNS::RR::NSEC3PARAM 1390 + Net::DNS::RR::NULL 1348 + Net::DNS::RR::OPENPGPKEY 1390 + Net::DNS::RR::OPT 1388 + Net::DNS::RR::PTR 1406 + Net::DNS::RR::PX 1406 + Net::DNS::RR::RP 1406 + Net::DNS::RR::RRSIG 1425 + Net::DNS::RR::RT 1406 + Net::DNS::RR::SIG 1425 + Net::DNS::RR::SOA 1408 + Net::DNS::RR::SPF 1382 + Net::DNS::RR::SRV 1406 + Net::DNS::RR::SSHFP 1390 + Net::DNS::RR::TKEY 1406 + Net::DNS::RR::TLSA 1390 + Net::DNS::RR::TSIG 1406 + Net::DNS::RR::TXT 1382 + Net::DNS::RR::URI 1406 + Net::DNS::RR::X25 1406 + Net::DNS::Resolver 1425 + Net::DNS::Resolver::Base 1425 + Net::DNS::Resolver::MSWin32 1406 + Net::DNS::Resolver::Recurse 1422 + Net::DNS::Resolver::UNIX 1408 + Net::DNS::Resolver::android 1406 + Net::DNS::Resolver::cygwin 1406 + Net::DNS::Resolver::os2 1406 + Net::DNS::Text 1406 + Net::DNS::Update 1418 + Net::DNS::ZoneFile 1408 + Net::DNS::ZoneFile::Generator 1408 + Net::DNS::ZoneFile::Text 1408 + requirements: + Digest::HMAC 1.03 Digest::MD5 2.13 Digest::SHA 5.23 ExtUtils::MakeMaker 0 - IO::Socket 1.24 + File::Spec 0.86 + IO::Socket 1.16 + IO::Socket::INET 1.25 + IO::Socket::IP 0.29 MIME::Base64 2.11 Test::More 0.52 + Time::Local 1.19 perl 5.00404 - Net-DNS-Paranoid-0.07 - pathname: T/TO/TOKUHIROM/Net-DNS-Paranoid-0.07.tar.gz + Net-DNS-Paranoid-0.08 + pathname: T/TO/TOKUHIROM/Net-DNS-Paranoid-0.08.tar.gz provides: - Net::DNS::Paranoid 0.07 + Net::DNS::Paranoid 0.08 requirements: Class::Accessor::Lite 0.05 Module::Build 0.38 @@ -6047,19 +5602,20 @@ DISTRIBUTIONS Test::More 0.98 parent 0 perl 5.008008 - Net-HTTP-6.06 - pathname: G/GA/GAAS/Net-HTTP-6.06.tar.gz + Net-HTTP-6.09 + pathname: E/ET/ETHER/Net-HTTP-6.09.tar.gz provides: - Net::HTTP 6.06 - Net::HTTP::Methods 6.06 - Net::HTTP::NB 6.04 - Net::HTTPS 6.04 + Net::HTTP 6.09 + Net::HTTP::Methods 6.09 + Net::HTTP::NB 6.09 + Net::HTTPS 6.09 requirements: Compress::Raw::Zlib 0 ExtUtils::MakeMaker 0 - IO::Compress::Gzip 0 IO::Select 0 IO::Socket::INET 0 + IO::Uncompress::Gunzip 0 + URI 0 perl 5.006002 Net-OAuth-0.28 pathname: K/KG/KGRENNAN/Net-OAuth-0.28.tar.gz @@ -6099,27 +5655,28 @@ DISTRIBUTIONS Test::More 0.66 Test::Warn 0.21 URI::Escape 3.28 - Net-OpenID-Common-1.18 - pathname: W/WR/WROG/Net-OpenID-Common-1.18.tar.gz - provides: - Net::OpenID::Common 1.18 - Net::OpenID::Extension 1.18 - Net::OpenID::Extension::SimpleRegistration 1.18 - Net::OpenID::Extension::SimpleRegistration::Request 1.18 - Net::OpenID::Extension::SimpleRegistration::Response 1.18 - Net::OpenID::ExtensionMessage 1.18 - Net::OpenID::IndirectMessage 1.18 - Net::OpenID::URIFetch 1.18 - Net::OpenID::URIFetch::Response 1.18 - Net::OpenID::Yadis 1.18 - Net::OpenID::Yadis::Service 1.18 - OpenID::util 1.18 + Net-OpenID-Common-1.19 + pathname: W/WR/WROG/Net-OpenID-Common-1.19.tar.gz + provides: + Net::OpenID::Common 1.19 + Net::OpenID::Extension 1.19 + Net::OpenID::Extension::SimpleRegistration 1.19 + Net::OpenID::Extension::SimpleRegistration::Request 1.19 + Net::OpenID::Extension::SimpleRegistration::Response 1.19 + Net::OpenID::ExtensionMessage 1.19 + Net::OpenID::IndirectMessage 1.19 + Net::OpenID::URIFetch 1.19 + Net::OpenID::URIFetch::Response 1.19 + Net::OpenID::Yadis 1.19 + Net::OpenID::Yadis::Service 1.19 + OpenID::util 1.19 requirements: Crypt::DH::GMP 0.00011 Encode 0 ExtUtils::MakeMaker 6.30 HTML::Parser 3.40 HTTP::Headers::Util 0 + HTTP::Message 5.814 HTTP::Request 0 HTTP::Status 0 MIME::Base64 0 @@ -6127,14 +5684,14 @@ DISTRIBUTIONS Test::More 0 Time::Local 0 XML::Simple 0 - Net-OpenID-Consumer-1.15 - pathname: W/WR/WROG/Net-OpenID-Consumer-1.15.tar.gz + Net-OpenID-Consumer-1.16 + pathname: W/WR/WROG/Net-OpenID-Consumer-1.16.tar.gz provides: FakeFetch undef - Net::OpenID::Association 1.15 - Net::OpenID::ClaimedIdentity 1.15 - Net::OpenID::Consumer 1.15 - Net::OpenID::VerifiedIdentity 1.15 + Net::OpenID::Association 1.16 + Net::OpenID::ClaimedIdentity 1.16 + Net::OpenID::Consumer 1.16 + Net::OpenID::VerifiedIdentity 1.16 requirements: Digest::SHA 0 ExtUtils::MakeMaker 6.30 @@ -6142,7 +5699,7 @@ DISTRIBUTIONS JSON 0 LWP::UserAgent 0 MIME::Base64 0 - Net::OpenID::Common 1.18 + Net::OpenID::Common 1.19 Storable 0 Test::More 0 Time::Local 0 @@ -6158,10 +5715,10 @@ DISTRIBUTIONS Net::OpenID::Common 1.11 Test::More 0 URI 0 - Net-SSLeay-1.63 - pathname: M/MI/MIKEM/Net-SSLeay-1.63.tar.gz + Net-SSLeay-1.72 + pathname: M/MI/MIKEM/Net-SSLeay-1.72.tar.gz provides: - Net::SSLeay 1.63 + Net::SSLeay 1.72 Net::SSLeay::Handle 0.61 requirements: ExtUtils::MakeMaker 6.36 @@ -6201,32 +5758,34 @@ DISTRIBUTIONS POSIX 0 Socket 0 Time::HiRes 0 - Net-Twitter-4.01004 - pathname: M/MM/MMIMS/Net-Twitter-4.01004.tar.gz - provides: - Net::Identica 4.01004 - Net::Twitter 4.01004 - Net::Twitter::API 4.01004 - Net::Twitter::Core 4.01004 - Net::Twitter::Error 4.01004 - Net::Twitter::Meta::Method 4.01004 - Net::Twitter::OAuth 4.01004 - Net::Twitter::Role::API::Lists 4.01004 - Net::Twitter::Role::API::REST 4.01004 - Net::Twitter::Role::API::RESTv1_1 4.01004 - Net::Twitter::Role::API::Search 4.01004 - Net::Twitter::Role::API::Search::Trends 4.01004 - Net::Twitter::Role::API::TwitterVision 4.01004 - Net::Twitter::Role::API::Upload 4.01004 - Net::Twitter::Role::AutoCursor 4.01004 - Net::Twitter::Role::InflateObjects 4.01004 - Net::Twitter::Role::Legacy 4.01004 - Net::Twitter::Role::OAuth 4.01004 - Net::Twitter::Role::RateLimit 4.01004 - Net::Twitter::Role::RetryOnError 4.01004 - Net::Twitter::Role::SimulateCursors 4.01004 - Net::Twitter::Role::WrapError 4.01004 - Net::Twitter::Search 4.01004 + Net-Twitter-4.01010 + pathname: M/MM/MMIMS/Net-Twitter-4.01010.tar.gz + provides: + Net::Identica 4.01010 + Net::Twitter 4.01010 + Net::Twitter::API 4.01010 + Net::Twitter::Core 4.01010 + Net::Twitter::Error 4.01010 + Net::Twitter::Meta::Method 4.01010 + Net::Twitter::OAuth 4.01010 + Net::Twitter::Role::API::Lists 4.01010 + Net::Twitter::Role::API::REST 4.01010 + Net::Twitter::Role::API::RESTv1_1 4.01010 + Net::Twitter::Role::API::Search 4.01010 + Net::Twitter::Role::API::Search::Trends 4.01010 + Net::Twitter::Role::API::TwitterVision 4.01010 + Net::Twitter::Role::API::Upload 4.01010 + Net::Twitter::Role::API::UploadMedia 4.01010 + Net::Twitter::Role::AppAuth 4.01010 + Net::Twitter::Role::AutoCursor 4.01010 + Net::Twitter::Role::InflateObjects 4.01010 + Net::Twitter::Role::Legacy 4.01010 + Net::Twitter::Role::OAuth 4.01010 + Net::Twitter::Role::RateLimit 4.01010 + Net::Twitter::Role::RetryOnError 4.01010 + Net::Twitter::Role::SimulateCursors 4.01010 + Net::Twitter::Role::WrapError 4.01010 + Net::Twitter::Search 4.01010 requirements: Carp::Clan 0 Class::Load 0 @@ -6238,6 +5797,7 @@ DISTRIBUTIONS Encode 0 HTML::Entities 0 HTTP::Request::Common 0 + IO::Socket::SSL 2.005 JSON 0 LWP::Protocol::https 0 List::Util 0 @@ -6276,10 +5836,10 @@ DISTRIBUTIONS Storable 2.11 Test::More 0.47 perl 5.005 - OrePAN2-0.38 - pathname: O/OA/OALDERS/OrePAN2-0.38.tar.gz + OrePAN2-0.40 + pathname: O/OA/OALDERS/OrePAN2-0.40.tar.gz provides: - OrePAN2 0.38 + OrePAN2 0.40 OrePAN2::Auditor undef OrePAN2::CLI::Indexer undef OrePAN2::CLI::Inject undef @@ -6304,6 +5864,7 @@ DISTRIBUTIONS IO::Uncompress::Gunzip 0 IO::Zlib 0 JSON::PP 0 + LWP::UserAgent 0 List::Compare 0 MetaCPAN::Client 1.006 Module::Build::Tiny 0.035 @@ -6322,133 +5883,125 @@ DISTRIBUTIONS parent 0 perl 5.008005 version 0.9912 - Ouch-0.0408 - pathname: R/RI/RIZEN/Ouch-0.0408.tar.gz + Ouch-0.0409 + pathname: R/RI/RIZEN/Ouch-0.0409.tar.gz provides: - Ouch 0.0408 + Ouch 0.0409 requirements: - Carp 0 - ExtUtils::MakeMaker 6.30 Test::More 0 - Test::Trap 0 - overload 0 - parent 0 - POSIX-strftime-Compiler-0.31 - pathname: K/KA/KAZEBURO/POSIX-strftime-Compiler-0.31.tar.gz + POSIX-strftime-Compiler-0.41 + pathname: K/KA/KAZEBURO/POSIX-strftime-Compiler-0.41.tar.gz provides: - POSIX::strftime::Compiler 0.31 + POSIX::strftime::Compiler 0.41 requirements: - CPAN::Meta 0 - CPAN::Meta::Prereqs 0 Carp 0 Exporter 0 - ExtUtils::CBuilder 0 Module::Build 0.38 POSIX 0 Time::Local 0 - perl 5.008004 - PPI-1.215 - pathname: A/AD/ADAMK/PPI-1.215.tar.gz - provides: - PPI 1.215 - PPI::Cache 1.215 - PPI::Document 1.215 - PPI::Document::File 1.215 - PPI::Document::Fragment 1.215 - PPI::Document::Normalized 1.215 - PPI::Dumper 1.215 - PPI::Element 1.215 - PPI::Exception 1.215 - PPI::Exception::ParserRejection 1.215 - PPI::Exception::ParserTimeout 1.215 - PPI::Find 1.215 - PPI::Lexer 1.215 - PPI::Node 1.215 - PPI::Normal 1.215 - PPI::Normal::Standard 1.215 - PPI::Statement 1.215 - PPI::Statement::Break 1.215 - PPI::Statement::Compound 1.215 - PPI::Statement::Data 1.215 - PPI::Statement::End 1.215 - PPI::Statement::Expression 1.215 - PPI::Statement::Given 1.215 - PPI::Statement::Include 1.215 - PPI::Statement::Include::Perl6 1.215 - PPI::Statement::Null 1.215 - PPI::Statement::Package 1.215 - PPI::Statement::Scheduled 1.215 - PPI::Statement::Sub 1.215 - PPI::Statement::Unknown 1.215 - PPI::Statement::UnmatchedBrace 1.215 - PPI::Statement::Variable 1.215 - PPI::Statement::When 1.215 - PPI::Structure 1.215 - PPI::Structure::Block 1.215 - PPI::Structure::Condition 1.215 - PPI::Structure::Constructor 1.215 - PPI::Structure::For 1.215 - PPI::Structure::Given 1.215 - PPI::Structure::List 1.215 - PPI::Structure::Subscript 1.215 - PPI::Structure::Unknown 1.215 - PPI::Structure::When 1.215 - PPI::Token 1.215 - PPI::Token::ArrayIndex 1.215 - PPI::Token::Attribute 1.215 - PPI::Token::BOM 1.215 - PPI::Token::Cast 1.215 - PPI::Token::Comment 1.215 - PPI::Token::DashedWord 1.215 - PPI::Token::Data 1.215 - PPI::Token::End 1.215 - PPI::Token::HereDoc 1.215 - PPI::Token::Label 1.215 - PPI::Token::Magic 1.215 - PPI::Token::Number 1.215 - PPI::Token::Number::Binary 1.215 - PPI::Token::Number::Exp 1.215 - PPI::Token::Number::Float 1.215 - PPI::Token::Number::Hex 1.215 - PPI::Token::Number::Octal 1.215 - PPI::Token::Number::Version 1.215 - PPI::Token::Operator 1.215 - PPI::Token::Pod 1.215 - PPI::Token::Prototype 1.215 - PPI::Token::Quote 1.215 - PPI::Token::Quote::Double 1.215 - PPI::Token::Quote::Interpolate 1.215 - PPI::Token::Quote::Literal 1.215 - PPI::Token::Quote::Single 1.215 - PPI::Token::QuoteLike 1.215 - PPI::Token::QuoteLike::Backtick 1.215 - PPI::Token::QuoteLike::Command 1.215 - PPI::Token::QuoteLike::Readline 1.215 - PPI::Token::QuoteLike::Regexp 1.215 - PPI::Token::QuoteLike::Words 1.215 - PPI::Token::Regexp 1.215 - PPI::Token::Regexp::Match 1.215 - PPI::Token::Regexp::Substitute 1.215 - PPI::Token::Regexp::Transliterate 1.215 - PPI::Token::Separator 1.215 - PPI::Token::Structure 1.215 - PPI::Token::Symbol 1.215 - PPI::Token::Unknown 1.215 - PPI::Token::Whitespace 1.215 - PPI::Token::Word 1.215 - PPI::Token::_QuoteEngine 1.215 - PPI::Token::_QuoteEngine::Full 1.215 - PPI::Token::_QuoteEngine::Simple 1.215 - PPI::Tokenizer 1.215 - PPI::Transform 1.215 - PPI::Transform::UpdateCopyright 1.215 - PPI::Util 1.215 - PPI::XSAccessor 1.215 + perl 5.008001 + PPI-1.220 + pathname: M/MI/MITHALDU/PPI-1.220.tar.gz + provides: + PPI 1.220 + PPI::Cache 1.220 + PPI::Document 1.220 + PPI::Document::File 1.220 + PPI::Document::Fragment 1.220 + PPI::Document::Normalized 1.220 + PPI::Dumper 1.220 + PPI::Element 1.220 + PPI::Exception 1.220 + PPI::Exception::ParserRejection 1.220 + PPI::Exception::ParserTimeout 1.220 + PPI::Find 1.220 + PPI::Lexer 1.220 + PPI::Node 1.220 + PPI::Normal 1.220 + PPI::Normal::Standard 1.220 + PPI::Statement 1.220 + PPI::Statement::Break 1.220 + PPI::Statement::Compound 1.220 + PPI::Statement::Data 1.220 + PPI::Statement::End 1.220 + PPI::Statement::Expression 1.220 + PPI::Statement::Given 1.220 + PPI::Statement::Include 1.220 + PPI::Statement::Include::Perl6 1.220 + PPI::Statement::Null 1.220 + PPI::Statement::Package 1.220 + PPI::Statement::Scheduled 1.220 + PPI::Statement::Sub 1.220 + PPI::Statement::Unknown 1.220 + PPI::Statement::UnmatchedBrace 1.220 + PPI::Statement::Variable 1.220 + PPI::Statement::When 1.220 + PPI::Structure 1.220 + PPI::Structure::Block 1.220 + PPI::Structure::Condition 1.220 + PPI::Structure::Constructor 1.220 + PPI::Structure::For 1.220 + PPI::Structure::Given 1.220 + PPI::Structure::List 1.220 + PPI::Structure::Subscript 1.220 + PPI::Structure::Unknown 1.220 + PPI::Structure::When 1.220 + PPI::Token 1.220 + PPI::Token::ArrayIndex 1.220 + PPI::Token::Attribute 1.220 + PPI::Token::BOM 1.220 + PPI::Token::Cast 1.220 + PPI::Token::Comment 1.220 + PPI::Token::DashedWord 1.220 + PPI::Token::Data 1.220 + PPI::Token::End 1.220 + PPI::Token::HereDoc 1.220 + PPI::Token::Label 1.220 + PPI::Token::Magic 1.220 + PPI::Token::Number 1.220 + PPI::Token::Number::Binary 1.220 + PPI::Token::Number::Exp 1.220 + PPI::Token::Number::Float 1.220 + PPI::Token::Number::Hex 1.220 + PPI::Token::Number::Octal 1.220 + PPI::Token::Number::Version 1.220 + PPI::Token::Operator 1.220 + PPI::Token::Pod 1.220 + PPI::Token::Prototype 1.220 + PPI::Token::Quote 1.220 + PPI::Token::Quote::Double 1.220 + PPI::Token::Quote::Interpolate 1.220 + PPI::Token::Quote::Literal 1.220 + PPI::Token::Quote::Single 1.220 + PPI::Token::QuoteLike 1.220 + PPI::Token::QuoteLike::Backtick 1.220 + PPI::Token::QuoteLike::Command 1.220 + PPI::Token::QuoteLike::Readline 1.220 + PPI::Token::QuoteLike::Regexp 1.220 + PPI::Token::QuoteLike::Words 1.220 + PPI::Token::Regexp 1.220 + PPI::Token::Regexp::Match 1.220 + PPI::Token::Regexp::Substitute 1.220 + PPI::Token::Regexp::Transliterate 1.220 + PPI::Token::Separator 1.220 + PPI::Token::Structure 1.220 + PPI::Token::Symbol 1.220 + PPI::Token::Unknown 1.220 + PPI::Token::Whitespace 1.220 + PPI::Token::Word 1.220 + PPI::Token::_QuoteEngine 1.220 + PPI::Token::_QuoteEngine::Full 1.220 + PPI::Token::_QuoteEngine::Simple 1.220 + PPI::Tokenizer 1.220 + PPI::Transform 1.220 + PPI::Transform::UpdateCopyright 1.220 + PPI::Util 1.220 + PPI::XSAccessor 1.220 requirements: Class::Inspector 1.22 Clone 0.30 Digest::MD5 2.35 - ExtUtils::MakeMaker 6.42 + ExtUtils::MakeMaker 6.59 File::Remove 1.42 File::Spec 0.84 IO::String 1.07 @@ -6462,68 +6015,68 @@ DISTRIBUTIONS Test::Object 0.07 Test::SubCalls 1.07 perl 5.006 - PPIx-Regexp-0.036 - pathname: W/WY/WYANT/PPIx-Regexp-0.036.tar.gz - provides: - PPIx::Regexp 0.036 - PPIx::Regexp::Constant 0.036 - PPIx::Regexp::Dumper 0.036 - PPIx::Regexp::Element 0.036 - PPIx::Regexp::Lexer 0.036 - PPIx::Regexp::Node 0.036 - PPIx::Regexp::Node::Range 0.036 - PPIx::Regexp::Structure 0.036 - PPIx::Regexp::Structure::Assertion 0.036 - PPIx::Regexp::Structure::BranchReset 0.036 - PPIx::Regexp::Structure::Capture 0.036 - PPIx::Regexp::Structure::CharClass 0.036 - PPIx::Regexp::Structure::Code 0.036 - PPIx::Regexp::Structure::Main 0.036 - PPIx::Regexp::Structure::Modifier 0.036 - PPIx::Regexp::Structure::NamedCapture 0.036 - PPIx::Regexp::Structure::Quantifier 0.036 - PPIx::Regexp::Structure::RegexSet 0.036 - PPIx::Regexp::Structure::Regexp 0.036 - PPIx::Regexp::Structure::Replacement 0.036 - PPIx::Regexp::Structure::Subexpression 0.036 - PPIx::Regexp::Structure::Switch 0.036 - PPIx::Regexp::Structure::Unknown 0.036 - PPIx::Regexp::Support 0.036 - PPIx::Regexp::Token 0.036 - PPIx::Regexp::Token::Assertion 0.036 - PPIx::Regexp::Token::Backreference 0.036 - PPIx::Regexp::Token::Backtrack 0.036 - PPIx::Regexp::Token::CharClass 0.036 - PPIx::Regexp::Token::CharClass::POSIX 0.036 - PPIx::Regexp::Token::CharClass::POSIX::Unknown 0.036 - PPIx::Regexp::Token::CharClass::Simple 0.036 - PPIx::Regexp::Token::Code 0.036 - PPIx::Regexp::Token::Comment 0.036 - PPIx::Regexp::Token::Condition 0.036 - PPIx::Regexp::Token::Control 0.036 - PPIx::Regexp::Token::Delimiter 0.036 - PPIx::Regexp::Token::Greediness 0.036 - PPIx::Regexp::Token::GroupType 0.036 - PPIx::Regexp::Token::GroupType::Assertion 0.036 - PPIx::Regexp::Token::GroupType::BranchReset 0.036 - PPIx::Regexp::Token::GroupType::Code 0.036 - PPIx::Regexp::Token::GroupType::Modifier 0.036 - PPIx::Regexp::Token::GroupType::NamedCapture 0.036 - PPIx::Regexp::Token::GroupType::Subexpression 0.036 - PPIx::Regexp::Token::GroupType::Switch 0.036 - PPIx::Regexp::Token::Interpolation 0.036 - PPIx::Regexp::Token::Literal 0.036 - PPIx::Regexp::Token::Modifier 0.036 - PPIx::Regexp::Token::Operator 0.036 - PPIx::Regexp::Token::Quantifier 0.036 - PPIx::Regexp::Token::Recursion 0.036 - PPIx::Regexp::Token::Reference 0.036 - PPIx::Regexp::Token::Structure 0.036 - PPIx::Regexp::Token::Unknown 0.036 - PPIx::Regexp::Token::Unmatched 0.036 - PPIx::Regexp::Token::Whitespace 0.036 - PPIx::Regexp::Tokenizer 0.036 - PPIx::Regexp::Util 0.036 + PPIx-Regexp-0.042 + pathname: W/WY/WYANT/PPIx-Regexp-0.042.tar.gz + provides: + PPIx::Regexp 0.042 + PPIx::Regexp::Constant 0.042 + PPIx::Regexp::Dumper 0.042 + PPIx::Regexp::Element 0.042 + PPIx::Regexp::Lexer 0.042 + PPIx::Regexp::Node 0.042 + PPIx::Regexp::Node::Range 0.042 + PPIx::Regexp::Structure 0.042 + PPIx::Regexp::Structure::Assertion 0.042 + PPIx::Regexp::Structure::BranchReset 0.042 + PPIx::Regexp::Structure::Capture 0.042 + PPIx::Regexp::Structure::CharClass 0.042 + PPIx::Regexp::Structure::Code 0.042 + PPIx::Regexp::Structure::Main 0.042 + PPIx::Regexp::Structure::Modifier 0.042 + PPIx::Regexp::Structure::NamedCapture 0.042 + PPIx::Regexp::Structure::Quantifier 0.042 + PPIx::Regexp::Structure::RegexSet 0.042 + PPIx::Regexp::Structure::Regexp 0.042 + PPIx::Regexp::Structure::Replacement 0.042 + PPIx::Regexp::Structure::Subexpression 0.042 + PPIx::Regexp::Structure::Switch 0.042 + PPIx::Regexp::Structure::Unknown 0.042 + PPIx::Regexp::Support 0.042 + PPIx::Regexp::Token 0.042 + PPIx::Regexp::Token::Assertion 0.042 + PPIx::Regexp::Token::Backreference 0.042 + PPIx::Regexp::Token::Backtrack 0.042 + PPIx::Regexp::Token::CharClass 0.042 + PPIx::Regexp::Token::CharClass::POSIX 0.042 + PPIx::Regexp::Token::CharClass::POSIX::Unknown 0.042 + PPIx::Regexp::Token::CharClass::Simple 0.042 + PPIx::Regexp::Token::Code 0.042 + PPIx::Regexp::Token::Comment 0.042 + PPIx::Regexp::Token::Condition 0.042 + PPIx::Regexp::Token::Control 0.042 + PPIx::Regexp::Token::Delimiter 0.042 + PPIx::Regexp::Token::Greediness 0.042 + PPIx::Regexp::Token::GroupType 0.042 + PPIx::Regexp::Token::GroupType::Assertion 0.042 + PPIx::Regexp::Token::GroupType::BranchReset 0.042 + PPIx::Regexp::Token::GroupType::Code 0.042 + PPIx::Regexp::Token::GroupType::Modifier 0.042 + PPIx::Regexp::Token::GroupType::NamedCapture 0.042 + PPIx::Regexp::Token::GroupType::Subexpression 0.042 + PPIx::Regexp::Token::GroupType::Switch 0.042 + PPIx::Regexp::Token::Interpolation 0.042 + PPIx::Regexp::Token::Literal 0.042 + PPIx::Regexp::Token::Modifier 0.042 + PPIx::Regexp::Token::Operator 0.042 + PPIx::Regexp::Token::Quantifier 0.042 + PPIx::Regexp::Token::Recursion 0.042 + PPIx::Regexp::Token::Reference 0.042 + PPIx::Regexp::Token::Structure 0.042 + PPIx::Regexp::Token::Unknown 0.042 + PPIx::Regexp::Token::Unmatched 0.042 + PPIx::Regexp::Token::Whitespace 0.042 + PPIx::Regexp::Tokenizer 0.042 + PPIx::Regexp::Util 0.042 requirements: List::MoreUtils 0 List::Util 0 @@ -6555,19 +6108,17 @@ DISTRIBUTIONS base 0 strict 0 warnings 0 - Package-DeprecationManager-0.13 - pathname: D/DR/DROLSKY/Package-DeprecationManager-0.13.tar.gz + Package-DeprecationManager-0.14 + pathname: D/DR/DROLSKY/Package-DeprecationManager-0.14.tar.gz provides: - Package::DeprecationManager 0.13 + Package::DeprecationManager 0.14 requirements: Carp 0 - ExtUtils::MakeMaker 6.30 - List::MoreUtils 0 + ExtUtils::MakeMaker 0 + List::Util 1.33 Params::Util 0 Sub::Install 0 - Test::Fatal 0 - Test::More 0.88 - Test::Requires 0 + perl 5.006 strict 0 warnings 0 Package-Pkg-0.0020 @@ -6584,32 +6135,25 @@ DISTRIBUTIONS Sub::Install 0 Test::Most 0 Try::Tiny 0 - Package-Stash-0.36 - pathname: D/DO/DOY/Package-Stash-0.36.tar.gz + Package-Stash-0.37 + pathname: D/DO/DOY/Package-Stash-0.37.tar.gz provides: - Package::Stash 0.36 - Package::Stash::PP 0.36 + Package::Stash 0.37 + Package::Stash::PP 0.37 requirements: B 0 Carp 0 Config 0 Dist::CheckConflicts 0.02 - ExtUtils::MakeMaker 6.30 - File::Find 0 + ExtUtils::MakeMaker 0 File::Spec 0 - File::Temp 0 Getopt::Long 0 Module::Implementation 0.06 Package::Stash::XS 0.26 Scalar::Util 0 Symbol 0 - Test::Fatal 0 - Test::More 0.88 - Test::Requires 0 Text::ParseWords 0 - base 0 constant 0 - lib 0 strict 0 warnings 0 Package-Stash-XS-0.28 @@ -6622,27 +6166,28 @@ DISTRIBUTIONS XSLoader 0 strict 0 warnings 0 - PadWalker-1.98 - pathname: R/RO/ROBIN/PadWalker-1.98.tar.gz + PadWalker-2.2 + pathname: R/RO/ROBIN/PadWalker-2.2.tar.gz provides: - PadWalker 1.98 + PadWalker 2.2 requirements: ExtUtils::MakeMaker 0 perl 5.008001 - Parallel-Scoreboard-0.05 - pathname: K/KA/KAZUHO/Parallel-Scoreboard-0.05.tar.gz + Parallel-Scoreboard-0.07 + pathname: K/KA/KAZUHO/Parallel-Scoreboard-0.07.tar.gz provides: - Parallel::Scoreboard 0.05 + Parallel::Scoreboard 0.07 Parallel::Scoreboard::PSGI::App undef Parallel::Scoreboard::PSGI::App::JSON undef requirements: Class::Accessor::Lite 0.05 - ExtUtils::MakeMaker 6.42 + ExtUtils::MakeMaker 6.36 File::Temp 0 Filter::Util::Call 0 HTML::Entities 0 JSON 0 Test::More 0 + Test::Warn 0 Params-Util-1.07 pathname: A/AD/ADAMK/Params-Util-1.07.tar.gz provides: @@ -6654,53 +6199,38 @@ DISTRIBUTIONS Scalar::Util 1.18 Test::More 0.42 perl 5.00503 - Params-Validate-1.10 - pathname: D/DR/DROLSKY/Params-Validate-1.10.tar.gz - provides: - Attribute::Params::Validate 1.10 - Bar undef - Baz undef - Foo undef - PVTests undef - PVTests::Callbacks undef - PVTests::Defaults undef - PVTests::Regex undef - PVTests::Standard undef - PVTests::With undef - Params::Validate 1.10 - Params::Validate::Constants 1.10 - Params::Validate::PP 1.10 - Params::Validate::XS 1.10 - Quux undef - Testing::X undef - Yadda undef - inc::MyModuleBuild undef - requirements: - Attribute::Handlers 0.79 + Params-Validate-1.21 + pathname: D/DR/DROLSKY/Params-Validate-1.21.tar.gz + provides: + Params::Validate 1.21 + Params::Validate::Constants 1.21 + Params::Validate::PP 1.21 + Params::Validate::XS 1.21 + requirements: Carp 0 Exporter 0 ExtUtils::CBuilder 0 - Module::Build 0.3601 + Module::Build 0.28 Module::Implementation 0 Scalar::Util 1.10 XSLoader 0 - attributes 0 perl 5.008001 strict 0 vars 0 warnings 0 - Parse-CPAN-Meta-1.4414 - pathname: D/DA/DAGOLDEN/Parse-CPAN-Meta-1.4414.tar.gz + Parse-CPAN-Meta-1.4417 + pathname: D/DA/DAGOLDEN/Parse-CPAN-Meta-1.4417.tar.gz provides: - Parse::CPAN::Meta 1.4414 + Parse::CPAN::Meta 1.4417 requirements: CPAN::Meta::YAML 0.011 Carp 0 Encode 0 Exporter 0 - ExtUtils::MakeMaker 6.30 + ExtUtils::MakeMaker 0 File::Spec 0.80 JSON::PP 2.27200 + perl 5.008001 strict 0 Parse-CPAN-Packages-2.40 pathname: M/MI/MITHALDU/Parse-CPAN-Packages-2.40.tar.gz @@ -6722,29 +6252,30 @@ DISTRIBUTIONS Type::Utils 0 Types::Standard 0 version 0 - Parse-CPAN-Packages-Fast-0.07 - pathname: S/SR/SREZIC/Parse-CPAN-Packages-Fast-0.07.tar.gz + Parse-CPAN-Packages-Fast-0.09 + pathname: S/SR/SREZIC/Parse-CPAN-Packages-Fast-0.09.tar.gz provides: - Parse::CPAN::Packages::Fast 0.07 - Parse::CPAN::Packages::Fast::Distribution 0.07 - Parse::CPAN::Packages::Fast::Package 0.07 + Parse::CPAN::Packages::Fast 0.09 + Parse::CPAN::Packages::Fast::Distribution 0.09 + Parse::CPAN::Packages::Fast::Package 0.09 requirements: CPAN::DistnameInfo 0 CPAN::Version 0 ExtUtils::MakeMaker 0 IO::Uncompress::Gunzip 0 - Parse-CSV-2.00 - pathname: A/AD/ADAMK/Parse-CSV-2.00.tar.gz + Parse-CSV-2.04 + pathname: K/KW/KWILLIAMS/Parse-CSV-2.04.tar.gz provides: - Parse::CSV 2.00 + Parse::CSV 2.04 requirements: - ExtUtils::MakeMaker 6.36 - File::Spec 0.80 + Carp 0 + ExtUtils::MakeMaker 6.30 IO::File 1.13 - Params::Util 0.22 - Test::More 0.47 - Text::CSV_XS 0.42 + Module::Build 0.3601 + Params::Util 1.00 + Text::CSV_XS 0.80 perl 5.005 + strict 0 Parse-LocalDistribution-0.15 pathname: I/IS/ISHIGAKI/Parse-LocalDistribution-0.15.tar.gz provides: @@ -6783,13 +6314,13 @@ DISTRIBUTIONS Safe 0 Test::More 0.88 version 0.83 - Path-Class-0.33 - pathname: K/KW/KWILLIAMS/Path-Class-0.33.tar.gz + Path-Class-0.35 + pathname: K/KW/KWILLIAMS/Path-Class-0.35.tar.gz provides: - Path::Class 0.33 - Path::Class::Dir 0.33 - Path::Class::Entity 0.33 - Path::Class::File 0.33 + Path::Class 0.35 + Path::Class::Dir 0.35 + Path::Class::Entity 0.35 + Path::Class::File 0.35 requirements: Carp 0 Cwd 0 @@ -6808,57 +6339,57 @@ DISTRIBUTIONS overload 0 parent 0 strict 0 - Path-FindDev-0.5.0 - pathname: K/KE/KENTNL/Path-FindDev-0.5.0.tar.gz + Path-FindDev-0.5.2 + pathname: K/KE/KENTNL/Path-FindDev-0.5.2.tar.gz provides: - Path::FindDev 0.005000 - Path::FindDev::Object 0.005000 + Path::FindDev 0.005002 + Path::FindDev::Object 0.005002 requirements: Carp 0 Class::Tiny 0.010 - ExtUtils::MakeMaker 6.30 - Path::IsDev 0 + ExtUtils::MakeMaker 0 + Path::IsDev v0.2.2 Path::IsDev::Object 0 - Path::Tiny 0.038 + Path::Tiny 0.054 Scalar::Util 0 Sub::Exporter 0 strict 0 utf8 0 warnings 0 - Path-IsDev-1.001000 - pathname: K/KE/KENTNL/Path-IsDev-1.001000.tar.gz - provides: - Path::IsDev 1.001000 - Path::IsDev::Heuristic::Changelog 1.001000 - Path::IsDev::Heuristic::DevDirMarker 1.001000 - Path::IsDev::Heuristic::META 1.001000 - Path::IsDev::Heuristic::MYMETA 1.001000 - Path::IsDev::Heuristic::Makefile 1.001000 - Path::IsDev::Heuristic::TestDir 1.001000 - Path::IsDev::Heuristic::Tool::Dzil 1.001000 - Path::IsDev::Heuristic::Tool::MakeMaker 1.001000 - Path::IsDev::Heuristic::Tool::ModuleBuild 1.001000 - Path::IsDev::Heuristic::VCS::Git 1.001000 - Path::IsDev::HeuristicSet::Basic 1.001000 - Path::IsDev::NegativeHeuristic::HomeDir 1.001000 - Path::IsDev::NegativeHeuristic::IsDev::IgnoreFile 1.001000 - Path::IsDev::NegativeHeuristic::PerlINC 1.001000 - Path::IsDev::Object 1.001000 - Path::IsDev::Result 1.001000 - Path::IsDev::Role::Heuristic 1.001000 - Path::IsDev::Role::HeuristicSet 1.001000 - Path::IsDev::Role::HeuristicSet::Simple 1.001000 - Path::IsDev::Role::Matcher::Child::BaseName::MatchRegexp 1.001000 - Path::IsDev::Role::Matcher::Child::BaseName::MatchRegexp::File 1.001000 - Path::IsDev::Role::Matcher::Child::Exists::Any 1.001000 - Path::IsDev::Role::Matcher::Child::Exists::Any::Dir 1.001000 - Path::IsDev::Role::Matcher::Child::Exists::Any::File 1.001000 - Path::IsDev::Role::Matcher::FullPath::Is::Any 1.001000 - Path::IsDev::Role::NegativeHeuristic 1.001000 + Path-IsDev-1.001002 + pathname: K/KE/KENTNL/Path-IsDev-1.001002.tar.gz + provides: + Path::IsDev 1.001002 + Path::IsDev::Heuristic::Changelog 1.001002 + Path::IsDev::Heuristic::DevDirMarker 1.001002 + Path::IsDev::Heuristic::META 1.001002 + Path::IsDev::Heuristic::MYMETA 1.001002 + Path::IsDev::Heuristic::Makefile 1.001002 + Path::IsDev::Heuristic::TestDir 1.001002 + Path::IsDev::Heuristic::Tool::Dzil 1.001002 + Path::IsDev::Heuristic::Tool::MakeMaker 1.001002 + Path::IsDev::Heuristic::Tool::ModuleBuild 1.001002 + Path::IsDev::Heuristic::VCS::Git 1.001002 + Path::IsDev::HeuristicSet::Basic 1.001002 + Path::IsDev::NegativeHeuristic::HomeDir 1.001002 + Path::IsDev::NegativeHeuristic::IsDev::IgnoreFile 1.001002 + Path::IsDev::NegativeHeuristic::PerlINC 1.001002 + Path::IsDev::Object 1.001002 + Path::IsDev::Result 1.001002 + Path::IsDev::Role::Heuristic 1.001002 + Path::IsDev::Role::HeuristicSet 1.001002 + Path::IsDev::Role::HeuristicSet::Simple 1.001002 + Path::IsDev::Role::Matcher::Child::BaseName::MatchRegexp 1.001002 + Path::IsDev::Role::Matcher::Child::BaseName::MatchRegexp::File 1.001002 + Path::IsDev::Role::Matcher::Child::Exists::Any 1.001002 + Path::IsDev::Role::Matcher::Child::Exists::Any::Dir 1.001002 + Path::IsDev::Role::Matcher::Child::Exists::Any::File 1.001002 + Path::IsDev::Role::Matcher::FullPath::Is::Any 1.001002 + Path::IsDev::Role::NegativeHeuristic 1.001002 requirements: Carp 0 Class::Tiny 0.010 - ExtUtils::MakeMaker 6.30 + ExtUtils::MakeMaker 0 File::HomeDir 0 Module::Runtime 0 Path::Tiny 0.004 @@ -6869,10 +6400,10 @@ DISTRIBUTIONS strict 0 utf8 0 warnings 0 - Path-Tiny-0.054 - pathname: D/DA/DAGOLDEN/Path-Tiny-0.054.tar.gz + Path-Tiny-0.072 + pathname: D/DA/DAGOLDEN/Path-Tiny-0.072.tar.gz provides: - Path::Tiny 0.054 + Path::Tiny 0.072 flock undef requirements: Carp 0 @@ -6883,6 +6414,7 @@ DISTRIBUTIONS ExtUtils::MakeMaker 6.17 Fcntl 0 File::Copy 0 + File::Glob 0 File::Path 2.07 File::Spec 3.40 File::Temp 0.19 @@ -6890,203 +6422,207 @@ DISTRIBUTIONS constant 0 if 0 overload 0 + perl 5.008001 strict 0 warnings 0 - Perl-Critic-1.121 - pathname: T/TH/THALJEF/Perl-Critic-1.121.tar.gz - provides: - Perl::Critic 1.121 - Perl::Critic::Annotation 1.121 - Perl::Critic::Command 1.121 - Perl::Critic::Config 1.121 - Perl::Critic::Document 1.121 - Perl::Critic::Exception 1.121 - Perl::Critic::Exception::AggregateConfiguration 1.121 - Perl::Critic::Exception::Configuration 1.121 - Perl::Critic::Exception::Configuration::Generic 1.121 - Perl::Critic::Exception::Configuration::NonExistentPolicy 1.121 - Perl::Critic::Exception::Configuration::Option 1.121 - Perl::Critic::Exception::Configuration::Option::Global 1.121 - Perl::Critic::Exception::Configuration::Option::Global::ExtraParameter 1.121 - Perl::Critic::Exception::Configuration::Option::Global::ParameterValue 1.121 - Perl::Critic::Exception::Configuration::Option::Policy 1.121 - Perl::Critic::Exception::Configuration::Option::Policy::ExtraParameter 1.121 - Perl::Critic::Exception::Configuration::Option::Policy::ParameterValue 1.121 - Perl::Critic::Exception::Fatal 1.121 - Perl::Critic::Exception::Fatal::Generic 1.121 - Perl::Critic::Exception::Fatal::Internal 1.121 - Perl::Critic::Exception::Fatal::PolicyDefinition 1.121 - Perl::Critic::Exception::IO 1.121 - Perl::Critic::Exception::Parse 1.121 - Perl::Critic::OptionsProcessor 1.121 - Perl::Critic::Policy 1.121 - Perl::Critic::Policy::BuiltinFunctions::ProhibitBooleanGrep 1.121 - Perl::Critic::Policy::BuiltinFunctions::ProhibitComplexMappings 1.121 - Perl::Critic::Policy::BuiltinFunctions::ProhibitLvalueSubstr 1.121 - Perl::Critic::Policy::BuiltinFunctions::ProhibitReverseSortBlock 1.121 - Perl::Critic::Policy::BuiltinFunctions::ProhibitSleepViaSelect 1.121 - Perl::Critic::Policy::BuiltinFunctions::ProhibitStringyEval 1.121 - Perl::Critic::Policy::BuiltinFunctions::ProhibitStringySplit 1.121 - Perl::Critic::Policy::BuiltinFunctions::ProhibitUniversalCan 1.121 - Perl::Critic::Policy::BuiltinFunctions::ProhibitUniversalIsa 1.121 - Perl::Critic::Policy::BuiltinFunctions::ProhibitVoidGrep 1.121 - Perl::Critic::Policy::BuiltinFunctions::ProhibitVoidMap 1.121 - Perl::Critic::Policy::BuiltinFunctions::RequireBlockGrep 1.121 - Perl::Critic::Policy::BuiltinFunctions::RequireBlockMap 1.121 - Perl::Critic::Policy::BuiltinFunctions::RequireGlobFunction 1.121 - Perl::Critic::Policy::BuiltinFunctions::RequireSimpleSortBlock 1.121 - Perl::Critic::Policy::ClassHierarchies::ProhibitAutoloading 1.121 - Perl::Critic::Policy::ClassHierarchies::ProhibitExplicitISA 1.121 - Perl::Critic::Policy::ClassHierarchies::ProhibitOneArgBless 1.121 - Perl::Critic::Policy::CodeLayout::ProhibitHardTabs 1.121 - Perl::Critic::Policy::CodeLayout::ProhibitParensWithBuiltins 1.121 - Perl::Critic::Policy::CodeLayout::ProhibitQuotedWordLists 1.121 - Perl::Critic::Policy::CodeLayout::ProhibitTrailingWhitespace 1.121 - Perl::Critic::Policy::CodeLayout::RequireConsistentNewlines 1.121 - Perl::Critic::Policy::CodeLayout::RequireTidyCode 1.121 - Perl::Critic::Policy::CodeLayout::RequireTrailingCommas 1.121 - Perl::Critic::Policy::ControlStructures::ProhibitCStyleForLoops 1.121 - Perl::Critic::Policy::ControlStructures::ProhibitCascadingIfElse 1.121 - Perl::Critic::Policy::ControlStructures::ProhibitDeepNests 1.121 - Perl::Critic::Policy::ControlStructures::ProhibitLabelsWithSpecialBlockNames 1.121 - Perl::Critic::Policy::ControlStructures::ProhibitMutatingListFunctions 1.121 - Perl::Critic::Policy::ControlStructures::ProhibitNegativeExpressionsInUnlessAndUntilConditions 1.121 - Perl::Critic::Policy::ControlStructures::ProhibitPostfixControls 1.121 - Perl::Critic::Policy::ControlStructures::ProhibitUnlessBlocks 1.121 - Perl::Critic::Policy::ControlStructures::ProhibitUnreachableCode 1.121 - Perl::Critic::Policy::ControlStructures::ProhibitUntilBlocks 1.121 - Perl::Critic::Policy::Documentation::PodSpelling 1.121 - Perl::Critic::Policy::Documentation::RequirePackageMatchesPodName 1.121 - Perl::Critic::Policy::Documentation::RequirePodAtEnd 1.121 - Perl::Critic::Policy::Documentation::RequirePodLinksIncludeText 1.121 - Perl::Critic::Policy::Documentation::RequirePodSections 1.121 - Perl::Critic::Policy::ErrorHandling::RequireCarping 1.121 - Perl::Critic::Policy::ErrorHandling::RequireCheckingReturnValueOfEval 1.121 - Perl::Critic::Policy::InputOutput::ProhibitBacktickOperators 1.121 - Perl::Critic::Policy::InputOutput::ProhibitBarewordFileHandles 1.121 - Perl::Critic::Policy::InputOutput::ProhibitExplicitStdin 1.121 - Perl::Critic::Policy::InputOutput::ProhibitInteractiveTest 1.121 - Perl::Critic::Policy::InputOutput::ProhibitJoinedReadline 1.121 - Perl::Critic::Policy::InputOutput::ProhibitOneArgSelect 1.121 - Perl::Critic::Policy::InputOutput::ProhibitReadlineInForLoop 1.121 - Perl::Critic::Policy::InputOutput::ProhibitTwoArgOpen 1.121 - Perl::Critic::Policy::InputOutput::RequireBracedFileHandleWithPrint 1.121 - Perl::Critic::Policy::InputOutput::RequireBriefOpen 1.121 - Perl::Critic::Policy::InputOutput::RequireCheckedClose 1.121 - Perl::Critic::Policy::InputOutput::RequireCheckedOpen 1.121 - Perl::Critic::Policy::InputOutput::RequireCheckedSyscalls 1.121 - Perl::Critic::Policy::InputOutput::RequireEncodingWithUTF8Layer 1.121 - Perl::Critic::Policy::Miscellanea::ProhibitFormats 1.121 - Perl::Critic::Policy::Miscellanea::ProhibitTies 1.121 - Perl::Critic::Policy::Miscellanea::ProhibitUnrestrictedNoCritic 1.121 - Perl::Critic::Policy::Miscellanea::ProhibitUselessNoCritic 1.121 - Perl::Critic::Policy::Modules::ProhibitAutomaticExportation 1.121 - Perl::Critic::Policy::Modules::ProhibitConditionalUseStatements 1.121 - Perl::Critic::Policy::Modules::ProhibitEvilModules 1.121 - Perl::Critic::Policy::Modules::ProhibitExcessMainComplexity 1.121 - Perl::Critic::Policy::Modules::ProhibitMultiplePackages 1.121 - Perl::Critic::Policy::Modules::RequireBarewordIncludes 1.121 - Perl::Critic::Policy::Modules::RequireEndWithOne 1.121 - Perl::Critic::Policy::Modules::RequireExplicitPackage 1.121 - Perl::Critic::Policy::Modules::RequireFilenameMatchesPackage 1.121 - Perl::Critic::Policy::Modules::RequireNoMatchVarsWithUseEnglish 1.121 - Perl::Critic::Policy::Modules::RequireVersionVar 1.121 - Perl::Critic::Policy::NamingConventions::Capitalization 1.121 - Perl::Critic::Policy::NamingConventions::ProhibitAmbiguousNames 1.121 - Perl::Critic::Policy::Objects::ProhibitIndirectSyntax 1.121 - Perl::Critic::Policy::References::ProhibitDoubleSigils 1.121 - Perl::Critic::Policy::RegularExpressions::ProhibitCaptureWithoutTest 1.121 - Perl::Critic::Policy::RegularExpressions::ProhibitComplexRegexes 1.121 - Perl::Critic::Policy::RegularExpressions::ProhibitEnumeratedClasses 1.121 - Perl::Critic::Policy::RegularExpressions::ProhibitEscapedMetacharacters 1.121 - Perl::Critic::Policy::RegularExpressions::ProhibitFixedStringMatches 1.121 - Perl::Critic::Policy::RegularExpressions::ProhibitSingleCharAlternation 1.121 - Perl::Critic::Policy::RegularExpressions::ProhibitUnusedCapture 1.121 - Perl::Critic::Policy::RegularExpressions::ProhibitUnusualDelimiters 1.121 - Perl::Critic::Policy::RegularExpressions::RequireBracesForMultiline 1.121 - Perl::Critic::Policy::RegularExpressions::RequireDotMatchAnything 1.121 - Perl::Critic::Policy::RegularExpressions::RequireExtendedFormatting 1.121 - Perl::Critic::Policy::RegularExpressions::RequireLineBoundaryMatching 1.121 - Perl::Critic::Policy::Subroutines::ProhibitAmpersandSigils 1.121 - Perl::Critic::Policy::Subroutines::ProhibitBuiltinHomonyms 1.121 - Perl::Critic::Policy::Subroutines::ProhibitExcessComplexity 1.121 - Perl::Critic::Policy::Subroutines::ProhibitExplicitReturnUndef 1.121 - Perl::Critic::Policy::Subroutines::ProhibitManyArgs 1.121 - Perl::Critic::Policy::Subroutines::ProhibitNestedSubs 1.121 - Perl::Critic::Policy::Subroutines::ProhibitReturnSort 1.121 - Perl::Critic::Policy::Subroutines::ProhibitSubroutinePrototypes 1.121 - Perl::Critic::Policy::Subroutines::ProhibitUnusedPrivateSubroutines 1.121 - Perl::Critic::Policy::Subroutines::ProtectPrivateSubs 1.121 - Perl::Critic::Policy::Subroutines::RequireArgUnpacking 1.121 - Perl::Critic::Policy::Subroutines::RequireFinalReturn 1.121 - Perl::Critic::Policy::TestingAndDebugging::ProhibitNoStrict 1.121 - Perl::Critic::Policy::TestingAndDebugging::ProhibitNoWarnings 1.121 - Perl::Critic::Policy::TestingAndDebugging::ProhibitProlongedStrictureOverride 1.121 - Perl::Critic::Policy::TestingAndDebugging::RequireTestLabels 1.121 - Perl::Critic::Policy::TestingAndDebugging::RequireUseStrict 1.121 - Perl::Critic::Policy::TestingAndDebugging::RequireUseWarnings 1.121 - Perl::Critic::Policy::ValuesAndExpressions::ProhibitCommaSeparatedStatements 1.121 - Perl::Critic::Policy::ValuesAndExpressions::ProhibitComplexVersion 1.121 - Perl::Critic::Policy::ValuesAndExpressions::ProhibitConstantPragma 1.121 - Perl::Critic::Policy::ValuesAndExpressions::ProhibitEmptyQuotes 1.121 - Perl::Critic::Policy::ValuesAndExpressions::ProhibitEscapedCharacters 1.121 - Perl::Critic::Policy::ValuesAndExpressions::ProhibitImplicitNewlines 1.121 - Perl::Critic::Policy::ValuesAndExpressions::ProhibitInterpolationOfLiterals 1.121 - Perl::Critic::Policy::ValuesAndExpressions::ProhibitLeadingZeros 1.121 - Perl::Critic::Policy::ValuesAndExpressions::ProhibitLongChainsOfMethodCalls 1.121 - Perl::Critic::Policy::ValuesAndExpressions::ProhibitMagicNumbers 1.121 - Perl::Critic::Policy::ValuesAndExpressions::ProhibitMismatchedOperators 1.121 - Perl::Critic::Policy::ValuesAndExpressions::ProhibitMixedBooleanOperators 1.121 - Perl::Critic::Policy::ValuesAndExpressions::ProhibitNoisyQuotes 1.121 - Perl::Critic::Policy::ValuesAndExpressions::ProhibitQuotesAsQuotelikeOperatorDelimiters 1.121 - Perl::Critic::Policy::ValuesAndExpressions::ProhibitSpecialLiteralHeredocTerminator 1.121 - Perl::Critic::Policy::ValuesAndExpressions::ProhibitVersionStrings 1.121 - Perl::Critic::Policy::ValuesAndExpressions::RequireConstantVersion 1.121 - Perl::Critic::Policy::ValuesAndExpressions::RequireInterpolationOfMetachars 1.121 - Perl::Critic::Policy::ValuesAndExpressions::RequireNumberSeparators 1.121 - Perl::Critic::Policy::ValuesAndExpressions::RequireQuotedHeredocTerminator 1.121 - Perl::Critic::Policy::ValuesAndExpressions::RequireUpperCaseHeredocTerminator 1.121 - Perl::Critic::Policy::Variables::ProhibitAugmentedAssignmentInDeclaration 1.121 - Perl::Critic::Policy::Variables::ProhibitConditionalDeclarations 1.121 - Perl::Critic::Policy::Variables::ProhibitEvilVariables 1.121 - Perl::Critic::Policy::Variables::ProhibitLocalVars 1.121 - Perl::Critic::Policy::Variables::ProhibitMatchVars 1.121 - Perl::Critic::Policy::Variables::ProhibitPackageVars 1.121 - Perl::Critic::Policy::Variables::ProhibitPerl4PackageNames 1.121 - Perl::Critic::Policy::Variables::ProhibitPunctuationVars 1.121 - Perl::Critic::Policy::Variables::ProhibitReusedNames 1.121 - Perl::Critic::Policy::Variables::ProhibitUnusedVariables 1.121 - Perl::Critic::Policy::Variables::ProtectPrivateVars 1.121 - Perl::Critic::Policy::Variables::RequireInitializationForLocalVars 1.121 - Perl::Critic::Policy::Variables::RequireLexicalLoopIterators 1.121 - Perl::Critic::Policy::Variables::RequireLocalizedPunctuationVars 1.121 - Perl::Critic::Policy::Variables::RequireNegativeIndices 1.121 - Perl::Critic::PolicyConfig 1.121 - Perl::Critic::PolicyFactory 1.121 - Perl::Critic::PolicyListing 1.121 - Perl::Critic::PolicyParameter 1.121 - Perl::Critic::PolicyParameter::Behavior 1.121 - Perl::Critic::PolicyParameter::Behavior::Boolean 1.121 - Perl::Critic::PolicyParameter::Behavior::Enumeration 1.121 - Perl::Critic::PolicyParameter::Behavior::Integer 1.121 - Perl::Critic::PolicyParameter::Behavior::String 1.121 - Perl::Critic::PolicyParameter::Behavior::StringList 1.121 - Perl::Critic::ProfilePrototype 1.121 - Perl::Critic::Statistics 1.121 - Perl::Critic::TestUtils 1.121 - Perl::Critic::Theme 1.121 - Perl::Critic::ThemeListing 1.121 - Perl::Critic::UserProfile 1.121 - Perl::Critic::Utils 1.121 - Perl::Critic::Utils::Constants 1.121 - Perl::Critic::Utils::DataConversion 1.121 - Perl::Critic::Utils::McCabe 1.121 - Perl::Critic::Utils::POD 1.121 - Perl::Critic::Utils::POD::ParseInteriorSequence 1.121 - Perl::Critic::Utils::PPI 1.121 - Perl::Critic::Utils::Perl 1.121 - Perl::Critic::Violation 1.121 - Test::Perl::Critic::Policy 1.121 + Perl-Critic-1.126 + pathname: T/TH/THALJEF/Perl-Critic-1.126.tar.gz + provides: + Perl::Critic 1.126 + Perl::Critic::Annotation 1.126 + Perl::Critic::Command 1.126 + Perl::Critic::Config 1.126 + Perl::Critic::Document 1.126 + Perl::Critic::Exception 1.126 + Perl::Critic::Exception::AggregateConfiguration 1.126 + Perl::Critic::Exception::Configuration 1.126 + Perl::Critic::Exception::Configuration::Generic 1.126 + Perl::Critic::Exception::Configuration::NonExistentPolicy 1.126 + Perl::Critic::Exception::Configuration::Option 1.126 + Perl::Critic::Exception::Configuration::Option::Global 1.126 + Perl::Critic::Exception::Configuration::Option::Global::ExtraParameter 1.126 + Perl::Critic::Exception::Configuration::Option::Global::ParameterValue 1.126 + Perl::Critic::Exception::Configuration::Option::Policy 1.126 + Perl::Critic::Exception::Configuration::Option::Policy::ExtraParameter 1.126 + Perl::Critic::Exception::Configuration::Option::Policy::ParameterValue 1.126 + Perl::Critic::Exception::Fatal 1.126 + Perl::Critic::Exception::Fatal::Generic 1.126 + Perl::Critic::Exception::Fatal::Internal 1.126 + Perl::Critic::Exception::Fatal::PolicyDefinition 1.126 + Perl::Critic::Exception::IO 1.126 + Perl::Critic::Exception::Parse 1.126 + Perl::Critic::OptionsProcessor 1.126 + Perl::Critic::Policy 1.126 + Perl::Critic::Policy::BuiltinFunctions::ProhibitBooleanGrep 1.126 + Perl::Critic::Policy::BuiltinFunctions::ProhibitComplexMappings 1.126 + Perl::Critic::Policy::BuiltinFunctions::ProhibitLvalueSubstr 1.126 + Perl::Critic::Policy::BuiltinFunctions::ProhibitReverseSortBlock 1.126 + Perl::Critic::Policy::BuiltinFunctions::ProhibitSleepViaSelect 1.126 + Perl::Critic::Policy::BuiltinFunctions::ProhibitStringyEval 1.126 + Perl::Critic::Policy::BuiltinFunctions::ProhibitStringySplit 1.126 + Perl::Critic::Policy::BuiltinFunctions::ProhibitUniversalCan 1.126 + Perl::Critic::Policy::BuiltinFunctions::ProhibitUniversalIsa 1.126 + Perl::Critic::Policy::BuiltinFunctions::ProhibitUselessTopic 1.126 + Perl::Critic::Policy::BuiltinFunctions::ProhibitVoidGrep 1.126 + Perl::Critic::Policy::BuiltinFunctions::ProhibitVoidMap 1.126 + Perl::Critic::Policy::BuiltinFunctions::RequireBlockGrep 1.126 + Perl::Critic::Policy::BuiltinFunctions::RequireBlockMap 1.126 + Perl::Critic::Policy::BuiltinFunctions::RequireGlobFunction 1.126 + Perl::Critic::Policy::BuiltinFunctions::RequireSimpleSortBlock 1.126 + Perl::Critic::Policy::ClassHierarchies::ProhibitAutoloading 1.126 + Perl::Critic::Policy::ClassHierarchies::ProhibitExplicitISA 1.126 + Perl::Critic::Policy::ClassHierarchies::ProhibitOneArgBless 1.126 + Perl::Critic::Policy::CodeLayout::ProhibitHardTabs 1.126 + Perl::Critic::Policy::CodeLayout::ProhibitParensWithBuiltins 1.126 + Perl::Critic::Policy::CodeLayout::ProhibitQuotedWordLists 1.126 + Perl::Critic::Policy::CodeLayout::ProhibitTrailingWhitespace 1.126 + Perl::Critic::Policy::CodeLayout::RequireConsistentNewlines 1.126 + Perl::Critic::Policy::CodeLayout::RequireTidyCode 1.126 + Perl::Critic::Policy::CodeLayout::RequireTrailingCommas 1.126 + Perl::Critic::Policy::ControlStructures::ProhibitCStyleForLoops 1.126 + Perl::Critic::Policy::ControlStructures::ProhibitCascadingIfElse 1.126 + Perl::Critic::Policy::ControlStructures::ProhibitDeepNests 1.126 + Perl::Critic::Policy::ControlStructures::ProhibitLabelsWithSpecialBlockNames 1.126 + Perl::Critic::Policy::ControlStructures::ProhibitMutatingListFunctions 1.126 + Perl::Critic::Policy::ControlStructures::ProhibitNegativeExpressionsInUnlessAndUntilConditions 1.126 + Perl::Critic::Policy::ControlStructures::ProhibitPostfixControls 1.126 + Perl::Critic::Policy::ControlStructures::ProhibitUnlessBlocks 1.126 + Perl::Critic::Policy::ControlStructures::ProhibitUnreachableCode 1.126 + Perl::Critic::Policy::ControlStructures::ProhibitUntilBlocks 1.126 + Perl::Critic::Policy::ControlStructures::ProhibitYadaOperator 1.126 + Perl::Critic::Policy::Documentation::PodSpelling 1.126 + Perl::Critic::Policy::Documentation::RequirePackageMatchesPodName 1.126 + Perl::Critic::Policy::Documentation::RequirePodAtEnd 1.126 + Perl::Critic::Policy::Documentation::RequirePodLinksIncludeText 1.126 + Perl::Critic::Policy::Documentation::RequirePodSections 1.126 + Perl::Critic::Policy::ErrorHandling::RequireCarping 1.126 + Perl::Critic::Policy::ErrorHandling::RequireCheckingReturnValueOfEval 1.126 + Perl::Critic::Policy::InputOutput::ProhibitBacktickOperators 1.126 + Perl::Critic::Policy::InputOutput::ProhibitBarewordFileHandles 1.126 + Perl::Critic::Policy::InputOutput::ProhibitExplicitStdin 1.126 + Perl::Critic::Policy::InputOutput::ProhibitInteractiveTest 1.126 + Perl::Critic::Policy::InputOutput::ProhibitJoinedReadline 1.126 + Perl::Critic::Policy::InputOutput::ProhibitOneArgSelect 1.126 + Perl::Critic::Policy::InputOutput::ProhibitReadlineInForLoop 1.126 + Perl::Critic::Policy::InputOutput::ProhibitTwoArgOpen 1.126 + Perl::Critic::Policy::InputOutput::RequireBracedFileHandleWithPrint 1.126 + Perl::Critic::Policy::InputOutput::RequireBriefOpen 1.126 + Perl::Critic::Policy::InputOutput::RequireCheckedClose 1.126 + Perl::Critic::Policy::InputOutput::RequireCheckedOpen 1.126 + Perl::Critic::Policy::InputOutput::RequireCheckedSyscalls 1.126 + Perl::Critic::Policy::InputOutput::RequireEncodingWithUTF8Layer 1.126 + Perl::Critic::Policy::Miscellanea::ProhibitFormats 1.126 + Perl::Critic::Policy::Miscellanea::ProhibitTies 1.126 + Perl::Critic::Policy::Miscellanea::ProhibitUnrestrictedNoCritic 1.126 + Perl::Critic::Policy::Miscellanea::ProhibitUselessNoCritic 1.126 + Perl::Critic::Policy::Modules::ProhibitAutomaticExportation 1.126 + Perl::Critic::Policy::Modules::ProhibitConditionalUseStatements 1.126 + Perl::Critic::Policy::Modules::ProhibitEvilModules 1.126 + Perl::Critic::Policy::Modules::ProhibitExcessMainComplexity 1.126 + Perl::Critic::Policy::Modules::ProhibitMultiplePackages 1.126 + Perl::Critic::Policy::Modules::RequireBarewordIncludes 1.126 + Perl::Critic::Policy::Modules::RequireEndWithOne 1.126 + Perl::Critic::Policy::Modules::RequireExplicitPackage 1.126 + Perl::Critic::Policy::Modules::RequireFilenameMatchesPackage 1.126 + Perl::Critic::Policy::Modules::RequireNoMatchVarsWithUseEnglish 1.126 + Perl::Critic::Policy::Modules::RequireVersionVar 1.126 + Perl::Critic::Policy::NamingConventions::Capitalization 1.126 + Perl::Critic::Policy::NamingConventions::ProhibitAmbiguousNames 1.126 + Perl::Critic::Policy::Objects::ProhibitIndirectSyntax 1.126 + Perl::Critic::Policy::References::ProhibitDoubleSigils 1.126 + Perl::Critic::Policy::RegularExpressions::ProhibitCaptureWithoutTest 1.126 + Perl::Critic::Policy::RegularExpressions::ProhibitComplexRegexes 1.126 + Perl::Critic::Policy::RegularExpressions::ProhibitEnumeratedClasses 1.126 + Perl::Critic::Policy::RegularExpressions::ProhibitEscapedMetacharacters 1.126 + Perl::Critic::Policy::RegularExpressions::ProhibitFixedStringMatches 1.126 + Perl::Critic::Policy::RegularExpressions::ProhibitSingleCharAlternation 1.126 + Perl::Critic::Policy::RegularExpressions::ProhibitUnusedCapture 1.126 + Perl::Critic::Policy::RegularExpressions::ProhibitUnusualDelimiters 1.126 + Perl::Critic::Policy::RegularExpressions::ProhibitUselessTopic 1.126 + Perl::Critic::Policy::RegularExpressions::RequireBracesForMultiline 1.126 + Perl::Critic::Policy::RegularExpressions::RequireDotMatchAnything 1.126 + Perl::Critic::Policy::RegularExpressions::RequireExtendedFormatting 1.126 + Perl::Critic::Policy::RegularExpressions::RequireLineBoundaryMatching 1.126 + Perl::Critic::Policy::Subroutines::ProhibitAmpersandSigils 1.126 + Perl::Critic::Policy::Subroutines::ProhibitBuiltinHomonyms 1.126 + Perl::Critic::Policy::Subroutines::ProhibitExcessComplexity 1.126 + Perl::Critic::Policy::Subroutines::ProhibitExplicitReturnUndef 1.126 + Perl::Critic::Policy::Subroutines::ProhibitManyArgs 1.126 + Perl::Critic::Policy::Subroutines::ProhibitNestedSubs 1.126 + Perl::Critic::Policy::Subroutines::ProhibitReturnSort 1.126 + Perl::Critic::Policy::Subroutines::ProhibitSubroutinePrototypes 1.126 + Perl::Critic::Policy::Subroutines::ProhibitUnusedPrivateSubroutines 1.126 + Perl::Critic::Policy::Subroutines::ProtectPrivateSubs 1.126 + Perl::Critic::Policy::Subroutines::RequireArgUnpacking 1.126 + Perl::Critic::Policy::Subroutines::RequireFinalReturn 1.126 + Perl::Critic::Policy::TestingAndDebugging::ProhibitNoStrict 1.126 + Perl::Critic::Policy::TestingAndDebugging::ProhibitNoWarnings 1.126 + Perl::Critic::Policy::TestingAndDebugging::ProhibitProlongedStrictureOverride 1.126 + Perl::Critic::Policy::TestingAndDebugging::RequireTestLabels 1.126 + Perl::Critic::Policy::TestingAndDebugging::RequireUseStrict 1.126 + Perl::Critic::Policy::TestingAndDebugging::RequireUseWarnings 1.126 + Perl::Critic::Policy::ValuesAndExpressions::ProhibitCommaSeparatedStatements 1.126 + Perl::Critic::Policy::ValuesAndExpressions::ProhibitComplexVersion 1.126 + Perl::Critic::Policy::ValuesAndExpressions::ProhibitConstantPragma 1.126 + Perl::Critic::Policy::ValuesAndExpressions::ProhibitEmptyQuotes 1.126 + Perl::Critic::Policy::ValuesAndExpressions::ProhibitEscapedCharacters 1.126 + Perl::Critic::Policy::ValuesAndExpressions::ProhibitImplicitNewlines 1.126 + Perl::Critic::Policy::ValuesAndExpressions::ProhibitInterpolationOfLiterals 1.126 + Perl::Critic::Policy::ValuesAndExpressions::ProhibitLeadingZeros 1.126 + Perl::Critic::Policy::ValuesAndExpressions::ProhibitLongChainsOfMethodCalls 1.126 + Perl::Critic::Policy::ValuesAndExpressions::ProhibitMagicNumbers 1.126 + Perl::Critic::Policy::ValuesAndExpressions::ProhibitMismatchedOperators 1.126 + Perl::Critic::Policy::ValuesAndExpressions::ProhibitMixedBooleanOperators 1.126 + Perl::Critic::Policy::ValuesAndExpressions::ProhibitNoisyQuotes 1.126 + Perl::Critic::Policy::ValuesAndExpressions::ProhibitQuotesAsQuotelikeOperatorDelimiters 1.126 + Perl::Critic::Policy::ValuesAndExpressions::ProhibitSpecialLiteralHeredocTerminator 1.126 + Perl::Critic::Policy::ValuesAndExpressions::ProhibitVersionStrings 1.126 + Perl::Critic::Policy::ValuesAndExpressions::RequireConstantVersion 1.126 + Perl::Critic::Policy::ValuesAndExpressions::RequireInterpolationOfMetachars 1.126 + Perl::Critic::Policy::ValuesAndExpressions::RequireNumberSeparators 1.126 + Perl::Critic::Policy::ValuesAndExpressions::RequireQuotedHeredocTerminator 1.126 + Perl::Critic::Policy::ValuesAndExpressions::RequireUpperCaseHeredocTerminator 1.126 + Perl::Critic::Policy::Variables::ProhibitAugmentedAssignmentInDeclaration 1.126 + Perl::Critic::Policy::Variables::ProhibitConditionalDeclarations 1.126 + Perl::Critic::Policy::Variables::ProhibitEvilVariables 1.126 + Perl::Critic::Policy::Variables::ProhibitLocalVars 1.126 + Perl::Critic::Policy::Variables::ProhibitMatchVars 1.126 + Perl::Critic::Policy::Variables::ProhibitPackageVars 1.126 + Perl::Critic::Policy::Variables::ProhibitPerl4PackageNames 1.126 + Perl::Critic::Policy::Variables::ProhibitPunctuationVars 1.126 + Perl::Critic::Policy::Variables::ProhibitReusedNames 1.126 + Perl::Critic::Policy::Variables::ProhibitUnusedVariables 1.126 + Perl::Critic::Policy::Variables::ProtectPrivateVars 1.126 + Perl::Critic::Policy::Variables::RequireInitializationForLocalVars 1.126 + Perl::Critic::Policy::Variables::RequireLexicalLoopIterators 1.126 + Perl::Critic::Policy::Variables::RequireLocalizedPunctuationVars 1.126 + Perl::Critic::Policy::Variables::RequireNegativeIndices 1.126 + Perl::Critic::PolicyConfig 1.126 + Perl::Critic::PolicyFactory 1.126 + Perl::Critic::PolicyListing 1.126 + Perl::Critic::PolicyParameter 1.126 + Perl::Critic::PolicyParameter::Behavior 1.126 + Perl::Critic::PolicyParameter::Behavior::Boolean 1.126 + Perl::Critic::PolicyParameter::Behavior::Enumeration 1.126 + Perl::Critic::PolicyParameter::Behavior::Integer 1.126 + Perl::Critic::PolicyParameter::Behavior::String 1.126 + Perl::Critic::PolicyParameter::Behavior::StringList 1.126 + Perl::Critic::ProfilePrototype 1.126 + Perl::Critic::Statistics 1.126 + Perl::Critic::TestUtils 1.126 + Perl::Critic::Theme 1.126 + Perl::Critic::ThemeListing 1.126 + Perl::Critic::UserProfile 1.126 + Perl::Critic::Utils 1.126 + Perl::Critic::Utils::Constants 1.126 + Perl::Critic::Utils::DataConversion 1.126 + Perl::Critic::Utils::McCabe 1.126 + Perl::Critic::Utils::POD 1.126 + Perl::Critic::Utils::POD::ParseInteriorSequence 1.126 + Perl::Critic::Utils::PPI 1.126 + Perl::Critic::Utils::Perl 1.126 + Perl::Critic::Violation 1.126 + Test::Perl::Critic::Policy 1.126 requirements: B::Keywords 1.05 Carp 0 @@ -7097,23 +6633,25 @@ DISTRIBUTIONS Exporter 5.63 File::Basename 0 File::Find 0 + File::HomeDir 0 File::Path 0 File::Spec 0 File::Spec::Unix 0 File::Temp 0 + File::Which 0 Getopt::Long 0 IO::String 0 IPC::Open2 1 List::MoreUtils 0.19 List::Util 0 - Module::Build 0.34 + Module::Build 0.4024 Module::Pluggable 3.1 - PPI 1.215 - PPI::Document 1.215 - PPI::Document::File 1.215 - PPI::Node 1.215 - PPI::Token::Quote::Single 1.215 - PPI::Token::Whitespace 1.215 + PPI 1.220 + PPI::Document 1.220 + PPI::Document::File 1.220 + PPI::Node 1.220 + PPI::Token::Quote::Single 1.220 + PPI::Token::Whitespace 1.220 PPIx::Regexp 0.027 PPIx::Utilities::Node 1.001 PPIx::Utilities::Statement 1.001 @@ -7123,10 +6661,11 @@ DISTRIBUTIONS Pod::Select 0 Pod::Spell 1 Pod::Usage 0 - Readonly 1.03 + Readonly 2 Scalar::Util 0 String::Format 1.13 Task::Weaken 0 + Term::ANSIColor 2.02 Test::Builder 0.92 Test::Deep 0 Test::More 0 @@ -7147,18 +6686,18 @@ DISTRIBUTIONS ExtUtils::MakeMaker 0 Perl::Critic 1.07 Test::More 0 - Perl-Tidy-20140328 - pathname: S/SH/SHANCOCK/Perl-Tidy-20140328.tar.gz + Perl-Tidy-20150815 + pathname: S/SH/SHANCOCK/Perl-Tidy-20150815.tar.gz provides: - Perl::Tidy 20140328 - Perl::Tidy::DevNull 20140328 - Perl::Tidy::Diagnostics 20140328 - Perl::Tidy::HtmlWriter 20140328 - Perl::Tidy::IOScalar 20140328 - Perl::Tidy::IOScalarArray 20140328 - Perl::Tidy::LineSink 20140328 - Perl::Tidy::LineSource 20140328 - Perl::Tidy::Logger 20140328 + Perl::Tidy 20150815 + Perl::Tidy::DevNull 20150815 + Perl::Tidy::Diagnostics 20150815 + Perl::Tidy::HtmlWriter 20150815 + Perl::Tidy::IOScalar 20150815 + Perl::Tidy::IOScalarArray 20150815 + Perl::Tidy::LineSink 20150815 + Perl::Tidy::LineSource 20150815 + Perl::Tidy::Logger 20150815 requirements: ExtUtils::MakeMaker 0 PerlIO-gzip-0.19 @@ -7167,86 +6706,79 @@ DISTRIBUTIONS PerlIO::gzip 0.19 requirements: ExtUtils::MakeMaker 0 - PerlIO-utf8_strict-0.004 - pathname: L/LE/LEONT/PerlIO-utf8_strict-0.004.tar.gz + PerlIO-utf8_strict-0.006 + pathname: L/LE/LEONT/PerlIO-utf8_strict-0.006.tar.gz provides: - PerlIO::utf8_strict 0.004 - t::Util undef + PerlIO::utf8_strict 0.006 requirements: - Carp 0 - Exporter 0 - ExtUtils::CBuilder 0 - File::Find 0 - File::Spec::Functions 0 - File::Temp 0 - IO::File 0 - Module::Build 0.3601 - Test::Exception 0 - Test::More 0.88 + ExtUtils::MakeMaker 0 XSLoader 0 perl 5.008 strict 0 - utf8 0 warnings 0 - Pithub-0.01025 - pathname: P/PL/PLU/Pithub-0.01025.tar.gz - provides: - Pithub 0.01025 - Pithub::Base 0.01025 - Pithub::Events 0.01025 - Pithub::Gists 0.01025 - Pithub::Gists::Comments 0.01025 - Pithub::GitData 0.01025 - Pithub::GitData::Blobs 0.01025 - Pithub::GitData::Commits 0.01025 - Pithub::GitData::References 0.01025 - Pithub::GitData::Tags 0.01025 - Pithub::GitData::Trees 0.01025 - Pithub::Issues 0.01025 - Pithub::Issues::Assignees 0.01025 - Pithub::Issues::Comments 0.01025 - Pithub::Issues::Events 0.01025 - Pithub::Issues::Labels 0.01025 - Pithub::Issues::Milestones 0.01025 - Pithub::Orgs 0.01025 - Pithub::Orgs::Members 0.01025 - Pithub::Orgs::Teams 0.01025 - Pithub::PullRequests 0.01025 - Pithub::PullRequests::Comments 0.01025 - Pithub::Repos 0.01025 - Pithub::Repos::Collaborators 0.01025 - Pithub::Repos::Commits 0.01025 - Pithub::Repos::Contents 0.01025 - Pithub::Repos::Downloads 0.01025 - Pithub::Repos::Forks 0.01025 - Pithub::Repos::Hooks 0.01025 - Pithub::Repos::Keys 0.01025 - Pithub::Repos::Releases 0.01025 - Pithub::Repos::Releases::Assets 0.01025 - Pithub::Repos::Starring 0.01025 - Pithub::Repos::Stats 0.01025 - Pithub::Repos::Statuses 0.01025 - Pithub::Repos::Watching 0.01025 - Pithub::Result 0.01025 - Pithub::Search 0.01025 - Pithub::Users 0.01025 - Pithub::Users::Emails 0.01025 - Pithub::Users::Followers 0.01025 - Pithub::Users::Keys 0.01025 + Pithub-0.01030 + pathname: O/OA/OALDERS/Pithub-0.01030.tar.gz + provides: + Pithub 0.01030 + Pithub::Base 0.01030 + Pithub::Events 0.01030 + Pithub::Gists 0.01030 + Pithub::Gists::Comments 0.01030 + Pithub::GitData 0.01030 + Pithub::GitData::Blobs 0.01030 + Pithub::GitData::Commits 0.01030 + Pithub::GitData::References 0.01030 + Pithub::GitData::Tags 0.01030 + Pithub::GitData::Trees 0.01030 + Pithub::Issues 0.01030 + Pithub::Issues::Assignees 0.01030 + Pithub::Issues::Comments 0.01030 + Pithub::Issues::Events 0.01030 + Pithub::Issues::Labels 0.01030 + Pithub::Issues::Milestones 0.01030 + Pithub::Orgs 0.01030 + Pithub::Orgs::Members 0.01030 + Pithub::Orgs::Teams 0.01030 + Pithub::PullRequests 0.01030 + Pithub::PullRequests::Comments 0.01030 + Pithub::Repos 0.01030 + Pithub::Repos::Collaborators 0.01030 + Pithub::Repos::Commits 0.01030 + Pithub::Repos::Contents 0.01030 + Pithub::Repos::Downloads 0.01030 + Pithub::Repos::Forks 0.01030 + Pithub::Repos::Hooks 0.01030 + Pithub::Repos::Keys 0.01030 + Pithub::Repos::Releases 0.01030 + Pithub::Repos::Releases::Assets 0.01030 + Pithub::Repos::Starring 0.01030 + Pithub::Repos::Stats 0.01030 + Pithub::Repos::Statuses 0.01030 + Pithub::Repos::Watching 0.01030 + Pithub::Result 0.01030 + Pithub::Result::SharedCache 0.01030 + Pithub::Search 0.01030 + Pithub::SearchV3 0.01030 + Pithub::Test undef + Pithub::Users 0.01030 + Pithub::Users::Emails 0.01030 + Pithub::Users::Followers 0.01030 + Pithub::Users::Keys 0.01030 requirements: Array::Iterator 0 - ExtUtils::MakeMaker 6.30 + Cache::LRU 0.04 + ExtUtils::MakeMaker 0 HTTP::Message 0 - JSON 0 + JSON::MaybeXS 1.002000 LWP::Protocol::https 0 LWP::UserAgent 0 - Moo 0 - Plack-1.0030 - pathname: M/MI/MIYAGAWA/Plack-1.0030.tar.gz + Moo 1.001000 + Plack-1.0037 + pathname: M/MI/MIYAGAWA/Plack-1.0037.tar.gz provides: HTTP::Message::PSGI undef HTTP::Server::PSGI undef - Plack 1.0030 + Plack 1.0037 Plack::App::CGIBin undef Plack::App::Cascade undef Plack::App::Directory undef @@ -7305,9 +6837,9 @@ DISTRIBUTIONS Plack::Middleware::XFramework undef Plack::Middleware::XSendfile undef Plack::Recursive::ForwardRequest undef - Plack::Request 1.0030 + Plack::Request 1.0037 Plack::Request::Upload undef - Plack::Response 1.0030 + Plack::Response 1.0037 Plack::Runner undef Plack::TempBuffer undef Plack::Test undef @@ -7320,13 +6852,15 @@ DISTRIBUTIONS Plack::Util::Prototype undef requirements: Apache::LogFormat::Compiler 0.12 + Cookie::Baker 0.05 Devel::StackTrace 1.23 Devel::StackTrace::AsHTML 0.11 - ExtUtils::MakeMaker 6.30 + ExtUtils::MakeMaker 0 File::ShareDir 1.00 - File::ShareDir::Install 0.03 + File::ShareDir::Install 0.06 Filesys::Notify::Simple 0 HTTP::Body 1.06 + HTTP::Headers::Fast 0.18 HTTP::Message 5.814 HTTP::Tiny 0.034 Hash::MultiValue 0.05 @@ -7336,10 +6870,11 @@ DISTRIBUTIONS Try::Tiny 0 URI 1.59 parent 0 - Plack-Middleware-FixMissingBodyInRedirect-0.11 - pathname: S/SW/SWEETKID/Plack-Middleware-FixMissingBodyInRedirect-0.11.tar.gz + perl 5.008001 + Plack-Middleware-FixMissingBodyInRedirect-0.12 + pathname: S/SW/SWEETKID/Plack-Middleware-FixMissingBodyInRedirect-0.12.tar.gz provides: - Plack::Middleware::FixMissingBodyInRedirect 0.10 + Plack::Middleware::FixMissingBodyInRedirect 0.12 requirements: ExtUtils::MakeMaker 6.30 HTML::Entities 0 @@ -7360,17 +6895,19 @@ DISTRIBUTIONS Test::More 0 parent 0 perl 5.008001 - Plack-Middleware-MethodOverride-0.10 - pathname: D/DW/DWHEELER/Plack-Middleware-MethodOverride-0.10.tar.gz + Plack-Middleware-MethodOverride-0.15 + pathname: D/DW/DWHEELER/Plack-Middleware-MethodOverride-0.15.tar.gz provides: - Plack::Middleware::MethodOverride 0.10 + Plack::Middleware::MethodOverride 0.15 requirements: - Module::Build 0.30 - Plack 0.9929 - Test::Builder 0.70 - Test::More 0.70 - URI 0 + ExtUtils::MakeMaker 0 + Plack::Middleware 0 + Plack::Request 0 + Plack::Util::Accessor 0 + parent 0 perl 5.008001 + strict 0 + warnings 0 Plack-Middleware-RemoveRedundantBody-0.05 pathname: S/SW/SWEETKID/Plack-Middleware-RemoveRedundantBody-0.05.tar.gz provides: @@ -7394,28 +6931,26 @@ DISTRIBUTIONS Test::More 0 parent 0 perl 5.008001 - Plack-Middleware-Rewrite-1.008 - pathname: A/AR/ARISTOTLE/Plack-Middleware-Rewrite-1.008.tar.gz + Plack-Middleware-Rewrite-2.000 + pathname: A/AR/ARISTOTLE/Plack-Middleware-Rewrite-2.000.tar.gz provides: - Plack::Middleware::Rewrite 1.008 + Plack::Middleware::Rewrite 2.000 requirements: - ExtUtils::MakeMaker 6.30 - HTTP::Request::Common 0 + ExtUtils::MakeMaker 0 Plack 0.9942 - Plack::Builder 0 Plack::Middleware 0 Plack::Request 0 - Plack::Test 0 Plack::Util 0 Plack::Util::Accessor 0 - Test::More 0 + overload 0 parent 0 + perl 5.006 strict 0 warnings 0 - Plack-Middleware-ServerStatus-Lite-0.33 - pathname: K/KA/KAZEBURO/Plack-Middleware-ServerStatus-Lite-0.33.tar.gz + Plack-Middleware-ServerStatus-Lite-0.34 + pathname: K/KA/KAZEBURO/Plack-Middleware-ServerStatus-Lite-0.34.tar.gz provides: - Plack::Middleware::ServerStatus::Lite 0.33 + Plack::Middleware::ServerStatus::Lite 0.34 requirements: CPAN::Meta 0 CPAN::Meta::Prereqs 0 @@ -7429,24 +6964,25 @@ DISTRIBUTIONS Pod::Usage 0 Try::Tiny 0.09 parent 0 - Plack-Middleware-Session-0.21 - pathname: M/MI/MIYAGAWA/Plack-Middleware-Session-0.21.tar.gz + Plack-Middleware-Session-0.30 + pathname: M/MI/MIYAGAWA/Plack-Middleware-Session-0.30.tar.gz provides: - Plack::Middleware::Session 0.21 + Plack::Middleware::Session 0.30 Plack::Middleware::Session::Cookie undef - Plack::Session 0.21 - Plack::Session::State 0.21 - Plack::Session::State::Cookie 0.21 - Plack::Session::Store 0.21 - Plack::Session::Store::Cache 0.21 - Plack::Session::Store::DBI 0.10 - Plack::Session::Store::File 0.21 - Plack::Session::Store::Null 0.21 + Plack::Session 0.30 + Plack::Session::Cleanup 0.30 + Plack::Session::State 0.30 + Plack::Session::State::Cookie 0.30 + Plack::Session::Store 0.30 + Plack::Session::Store::Cache 0.30 + Plack::Session::Store::DBI 0.30 + Plack::Session::Store::File 0.30 + Plack::Session::Store::Null 0.30 requirements: Cookie::Baker 0 Digest::HMAC_SHA1 1.03 Digest::SHA1 0 - Module::Build::Tiny 0.030 + Module::Build::Tiny 0.039 Plack 0.9910 Plack-Test-Agent-1.4 pathname: O/OA/OALDERS/Plack-Test-Agent-1.4.tar.gz @@ -7465,19 +7001,18 @@ DISTRIBUTIONS perl 5.008 strict 0 warnings 0 - Plack-Test-ExternalServer-0.01 - pathname: F/FL/FLORA/Plack-Test-ExternalServer-0.01.tar.gz + Plack-Test-ExternalServer-0.02 + pathname: E/ET/ETHER/Plack-Test-ExternalServer-0.02.tar.gz provides: - Plack::Test::ExternalServer 0.01 + Plack::Test::ExternalServer 0.02 requirements: + Carp 0 ExtUtils::MakeMaker 0 - HTTP::Request::Common 0 LWP::UserAgent 0 - Plack::Loader 0 - Plack::Test 0 - Test::More 0.89 - Test::TCP 0 URI 0 + perl 5.006 + strict 0 + warnings 0 Pod-Coverage-0.23 pathname: R/RC/RCLAMP/Pod-Coverage-0.23.tar.gz provides: @@ -7492,95 +7027,111 @@ DISTRIBUTIONS Pod::Find 0.21 Pod::Parser 1.13 Test::More 0 - Pod-Coverage-Moose-0.05 - pathname: E/ET/ETHER/Pod-Coverage-Moose-0.05.tar.gz + Pod-Coverage-Moose-0.07 + pathname: E/ET/ETHER/Pod-Coverage-Moose-0.07.tar.gz provides: - Pod::Coverage::Moose 0.05 + Pod::Coverage::Moose 0.07 requirements: Carp 0 Class::Load 0 - ExtUtils::MakeMaker 6.30 - Module::Build::Tiny 0.030 - Moose 0.24 + Module::Build::Tiny 0.034 + Moose 2.1300 Pod::Coverage 0 namespace::autoclean 0.08 perl 5.006 - Pod-Markdown-2.001 - pathname: R/RW/RWSTAUNER/Pod-Markdown-2.001.tar.gz + Pod-Markdown-3.003 + pathname: R/RW/RWSTAUNER/Pod-Markdown-3.003.tar.gz provides: - Pod::Markdown 2.001 + Pod::Markdown 3.003 + Pod::Perldoc::ToMarkdown 3.003 requirements: - ExtUtils::MakeMaker 6.30 - Pod::Simple 3.14 + Encode 0 + ExtUtils::MakeMaker 0 + Getopt::Long 0 + Pod::Simple 3.27 Pod::Simple::Methody 0 + Pod::Usage 0 parent 0 + perl 5.008 strict 0 warnings 0 - Pod-POM-0.29 - pathname: A/AN/ANDREWF/Pod-POM-0.29.tar.gz - provides: - Pod::POM 0.29 - Pod::POM::Constants 1.01 - Pod::POM::Node 1.05 - Pod::POM::Node::Begin undef - Pod::POM::Node::Code undef - Pod::POM::Node::Content undef - Pod::POM::Node::For undef - Pod::POM::Node::Head1 undef - Pod::POM::Node::Head2 undef - Pod::POM::Node::Head3 undef - Pod::POM::Node::Head4 undef - Pod::POM::Node::Item undef - Pod::POM::Node::Over undef - Pod::POM::Node::Pod undef - Pod::POM::Node::Sequence undef - Pod::POM::Node::Text undef - Pod::POM::Node::Verbatim undef - Pod::POM::Nodes 1.03 - Pod::POM::Test 1.01 - Pod::POM::View 1.04 - Pod::POM::View::HTML 1.06 - Pod::POM::View::Pod 1.03 - Pod::POM::View::Text 1.03 + Pod-POM-2.01 + pathname: N/NE/NEILB/Pod-POM-2.01.tar.gz + provides: + Pod::POM 2.01 + Pod::POM::Constants 2.01 + Pod::POM::Node 2.01 + Pod::POM::Node::Begin 2.01 + Pod::POM::Node::Code 2.01 + Pod::POM::Node::Content 2.01 + Pod::POM::Node::For 2.01 + Pod::POM::Node::Head1 2.01 + Pod::POM::Node::Head2 2.01 + Pod::POM::Node::Head3 2.01 + Pod::POM::Node::Head4 2.01 + Pod::POM::Node::Item 2.01 + Pod::POM::Node::Over 2.01 + Pod::POM::Node::Pod 2.01 + Pod::POM::Node::Sequence 2.01 + Pod::POM::Node::Text 2.01 + Pod::POM::Node::Verbatim 2.01 + Pod::POM::Nodes 2.01 + Pod::POM::Test 2.01 + Pod::POM::View 2.01 + Pod::POM::View::HTML 2.01 + Pod::POM::View::Pod 2.01 + Pod::POM::View::Text 2.01 + PodPOMTestCase undef + PodPOMTestLib undef + YAML::Tiny 1.36 requirements: Encode 0 - ExtUtils::MakeMaker 6.59 - File::Slurp 0 - Test::More 0 - Text::Wrap 2001.0929 + Exporter 0 + ExtUtils::MakeMaker 0 + File::Basename 0 + FindBin 0 + Getopt::Long 0 + Getopt::Std 0 + Text::Wrap 0 + constant 0 + lib 0 + overload 0 parent 0 perl 5.006 - Pod-Simple-3.29 - pathname: D/DW/DWHEELER/Pod-Simple-3.29.tar.gz - provides: - Pod::Simple 3.29 - Pod::Simple::BlackBox 3.29 - Pod::Simple::Checker 3.29 - Pod::Simple::Debug 3.29 - Pod::Simple::DumpAsText 3.29 - Pod::Simple::DumpAsXML 3.29 - Pod::Simple::HTML 3.29 - Pod::Simple::HTMLBatch 3.29 + strict 0 + vars 0 + warnings 0 + Pod-Simple-3.32 + pathname: M/MA/MARCGREEN/Pod-Simple-3.32.tar.gz + provides: + Pod::Simple 3.32 + Pod::Simple::BlackBox 3.32 + Pod::Simple::Checker 3.32 + Pod::Simple::Debug 3.32 + Pod::Simple::DumpAsText 3.32 + Pod::Simple::DumpAsXML 3.32 + Pod::Simple::HTML 3.32 + Pod::Simple::HTMLBatch 3.32 Pod::Simple::HTMLLegacy 5.01 - Pod::Simple::LinkSection 3.29 - Pod::Simple::Methody 3.29 - Pod::Simple::Progress 3.29 - Pod::Simple::PullParser 3.29 - Pod::Simple::PullParserEndToken 3.29 - Pod::Simple::PullParserStartToken 3.29 - Pod::Simple::PullParserTextToken 3.29 - Pod::Simple::PullParserToken 3.29 - Pod::Simple::RTF 3.29 - Pod::Simple::Search 3.29 - Pod::Simple::SimpleTree 3.29 - Pod::Simple::Text 3.29 - Pod::Simple::TextContent 3.29 - Pod::Simple::TiedOutFH 3.29 - Pod::Simple::Transcode 3.29 - Pod::Simple::TranscodeDumb 3.29 - Pod::Simple::TranscodeSmart 3.29 - Pod::Simple::XHTML 3.29 - Pod::Simple::XMLOutStream 3.29 + Pod::Simple::LinkSection 3.32 + Pod::Simple::Methody 3.32 + Pod::Simple::Progress 3.32 + Pod::Simple::PullParser 3.32 + Pod::Simple::PullParserEndToken 3.32 + Pod::Simple::PullParserStartToken 3.32 + Pod::Simple::PullParserTextToken 3.32 + Pod::Simple::PullParserToken 3.32 + Pod::Simple::RTF 3.32 + Pod::Simple::Search 3.32 + Pod::Simple::SimpleTree 3.32 + Pod::Simple::Text 3.32 + Pod::Simple::TextContent 3.32 + Pod::Simple::TiedOutFH 3.32 + Pod::Simple::Transcode 3.32 + Pod::Simple::TranscodeDumb 3.32 + Pod::Simple::TranscodeSmart 3.32 + Pod::Simple::XHTML 3.32 + Pod::Simple::XMLOutStream 3.32 requirements: Carp 0 Config 0 @@ -7597,16 +7148,16 @@ DISTRIBUTIONS integer 0 overload 0 strict 0 - Pod-Spell-1.15 - pathname: X/XE/XENO/Pod-Spell-1.15.tar.gz + Pod-Spell-1.17 + pathname: X/XE/XENO/Pod-Spell-1.17.tar.gz provides: - Pod::Spell 1.15 - Pod::Wordlist 1.15 + Pod::Spell 1.17 + Pod::Wordlist 1.17 requirements: Carp 0 Class::Tiny 0 - ExtUtils::MakeMaker 6.30 - File::ShareDir::Install 0.03 + ExtUtils::MakeMaker 0 + File::ShareDir::Install 0.06 File::ShareDir::ProjectDistDir 1.000 Lingua::EN::Inflect 0 Pod::Escapes 0 @@ -7615,30 +7166,19 @@ DISTRIBUTIONS base 0 constant 0 locale 0 + perl 5.008 strict 0 warnings 0 - Probe-Perl-0.03 - pathname: K/KW/KWILLIAMS/Probe-Perl-0.03.tar.gz - provides: - Probe::Perl 0.03 - requirements: - Config 0 - ExtUtils::MakeMaker 6.30 - File::Spec 0 - strict 0 - Readonly-1.04 - pathname: S/SA/SANKO/Readonly-1.04.tar.gz + Readonly-2.00 + pathname: S/SA/SANKO/Readonly-2.00.tar.gz provides: - Readonly 1.04 - Readonly::Array 1.04 - Readonly::Hash 1.04 - Readonly::Scalar 1.04 + Readonly 2.00 requirements: CPAN::Meta 0 CPAN::Meta::Prereqs 0 ExtUtils::CBuilder 0 Module::Build 0.38 - perl 5.006 + perl v5.6.0 Regexp-Common-2013031301 pathname: A/AB/ABIGAIL/Regexp-Common-2013031301.tar.gz provides: @@ -7681,27 +7221,28 @@ DISTRIBUTIONS perl 5.00473 strict 0 vars 0 - Regexp-Common-time-0.05 - pathname: S/SZ/SZABGAB/Regexp-Common-time-0.05.tar.gz + Regexp-Common-time-0.07 + pathname: S/SZ/SZABGAB/Regexp-Common-time-0.07.tar.gz provides: - Regexp::Common::time 0.05 + Regexp::Common::time 0.07 requirements: + ExtUtils::MakeMaker 0 POSIX 0 Regexp::Common 0 Test::More 0.40 - Role-Tiny-2.000000 - pathname: H/HA/HAARG/Role-Tiny-2.000000.tar.gz + Role-Tiny-2.000001 + pathname: H/HA/HAARG/Role-Tiny-2.000001.tar.gz provides: - Role::Tiny 2.000000 - Role::Tiny::With 2.000000 + Role::Tiny 2.000001 + Role::Tiny::With 2.000001 requirements: Exporter 5.57 perl 5.006 - SQL-Abstract-1.80 - pathname: R/RI/RIBASUSHI/SQL-Abstract-1.80.tar.gz + SQL-Abstract-1.81 + pathname: R/RI/RIBASUSHI/SQL-Abstract-1.81.tar.gz provides: DBIx::Class::Storage::Debug::PrettyPrint undef - SQL::Abstract 1.80 + SQL::Abstract 1.81 SQL::Abstract::Test undef SQL::Abstract::Tree undef requirements: @@ -7717,94 +7258,105 @@ DISTRIBUTIONS Test::Exception 0.31 Test::More 0.88 Test::Warn 0 + Text::Balanced 2.00 perl 5.006 - Safe-Isa-1.000004 - pathname: E/ET/ETHER/Safe-Isa-1.000004.tar.gz + Safe-Isa-1.000005 + pathname: E/ET/ETHER/Safe-Isa-1.000005.tar.gz provides: - Safe::Isa 1.000004 + Safe::Isa 1.000005 requirements: Exporter 5.57 ExtUtils::MakeMaker 0 Scalar::Util 0 - Scalar-List-Utils-1.41 - pathname: P/PE/PEVANS/Scalar-List-Utils-1.41.tar.gz + perl 5.006 + Scalar-List-Utils-1.42 + pathname: P/PE/PEVANS/Scalar-List-Utils-1.42.tar.gz provides: - List::Util 1.41 - List::Util::XS 1.41 - Scalar::Util 1.41 - Sub::Util 1.41 + List::Util 1.42 + List::Util::XS 1.42 + Scalar::Util 1.42 + Sub::Util 1.42 requirements: ExtUtils::MakeMaker 0 Test::More 0 - Scope-Guard-0.20 - pathname: C/CH/CHOCOLATE/Scope-Guard-0.20.tar.gz + Scope-Guard-0.21 + pathname: C/CH/CHOCOLATE/Scope-Guard-0.21.tar.gz provides: - Scope::Guard 0.20 + Scope::Guard 0.21 requirements: ExtUtils::MakeMaker 0 Test::More 0 perl 5.006001 - Search-Elasticsearch-1.19 - pathname: D/DR/DRTECH/Search-Elasticsearch-1.19.tar.gz + Search-Elasticsearch-2.00 + pathname: D/DR/DRTECH/Search-Elasticsearch-2.00.tar.gz provides: MockCxn undef - Search::Elasticsearch 1.19 - Search::Elasticsearch::Bulk 1.19 - Search::Elasticsearch::Client::0_90::Direct 1.19 - Search::Elasticsearch::Client::0_90::Direct::Cluster 1.19 - Search::Elasticsearch::Client::0_90::Direct::Indices 1.19 - Search::Elasticsearch::Client::Direct 1.19 - Search::Elasticsearch::Client::Direct::Cat 1.19 - Search::Elasticsearch::Client::Direct::Cluster 1.19 - Search::Elasticsearch::Client::Direct::Indices 1.19 - Search::Elasticsearch::Client::Direct::Nodes 1.19 - Search::Elasticsearch::Client::Direct::Snapshot 1.19 - Search::Elasticsearch::Cxn::Factory 1.19 - Search::Elasticsearch::Cxn::HTTPTiny 1.19 - Search::Elasticsearch::Cxn::Hijk 1.19 - Search::Elasticsearch::Cxn::LWP 1.19 - Search::Elasticsearch::CxnPool::Sniff 1.19 - Search::Elasticsearch::CxnPool::Static 1.19 - Search::Elasticsearch::CxnPool::Static::NoPing 1.19 - Search::Elasticsearch::Error 1.19 - Search::Elasticsearch::Logger::LogAny 1.19 - Search::Elasticsearch::Role::API 1.19 - Search::Elasticsearch::Role::API::0_90 1.19 - Search::Elasticsearch::Role::Bulk 1.19 - Search::Elasticsearch::Role::Client 1.19 - Search::Elasticsearch::Role::Client::Direct 1.19 - Search::Elasticsearch::Role::Cxn 1.19 - Search::Elasticsearch::Role::Cxn::HTTP 1.19 - Search::Elasticsearch::Role::CxnPool 1.19 - Search::Elasticsearch::Role::CxnPool::Sniff 1.19 - Search::Elasticsearch::Role::CxnPool::Static 1.19 - Search::Elasticsearch::Role::CxnPool::Static::NoPing 1.19 - Search::Elasticsearch::Role::Is_Sync 1.19 - Search::Elasticsearch::Role::Logger 1.19 - Search::Elasticsearch::Role::Scroll 1.19 - Search::Elasticsearch::Role::Serializer 1.19 - Search::Elasticsearch::Role::Serializer::JSON 1.19 - Search::Elasticsearch::Role::Transport 1.19 - Search::Elasticsearch::Scroll 1.19 - Search::Elasticsearch::Serializer::JSON 1.19 - Search::Elasticsearch::Serializer::JSON::Cpanel 1.19 - Search::Elasticsearch::Serializer::JSON::PP 1.19 - Search::Elasticsearch::Serializer::JSON::XS 1.19 - Search::Elasticsearch::TestServer 1.19 - Search::Elasticsearch::Transport 1.19 - Search::Elasticsearch::Util 1.19 - Search::Elasticsearch::Util::API::Path 1.19 - Search::Elasticsearch::Util::API::QS 1.19 + Search::Elasticsearch 2.00 + Search::Elasticsearch::Bulk 2.00 + Search::Elasticsearch::Client::0_90::Direct 2.00 + Search::Elasticsearch::Client::0_90::Direct::Cluster 2.00 + Search::Elasticsearch::Client::0_90::Direct::Indices 2.00 + Search::Elasticsearch::Client::1_0::Direct 2.00 + Search::Elasticsearch::Client::1_0::Direct::Cat 2.00 + Search::Elasticsearch::Client::1_0::Direct::Cluster 2.00 + Search::Elasticsearch::Client::1_0::Direct::Indices 2.00 + Search::Elasticsearch::Client::1_0::Direct::Nodes 2.00 + Search::Elasticsearch::Client::1_0::Direct::Snapshot 2.00 + Search::Elasticsearch::Client::2_0::Direct 2.00 + Search::Elasticsearch::Client::2_0::Direct::Cat 2.00 + Search::Elasticsearch::Client::2_0::Direct::Cluster 2.00 + Search::Elasticsearch::Client::2_0::Direct::Indices 2.00 + Search::Elasticsearch::Client::2_0::Direct::Nodes 2.00 + Search::Elasticsearch::Client::2_0::Direct::Snapshot 2.00 + Search::Elasticsearch::Cxn::Factory 2.00 + Search::Elasticsearch::Cxn::HTTPTiny 2.00 + Search::Elasticsearch::Cxn::Hijk 2.00 + Search::Elasticsearch::Cxn::LWP 2.00 + Search::Elasticsearch::CxnPool::Sniff 2.00 + Search::Elasticsearch::CxnPool::Static 2.00 + Search::Elasticsearch::CxnPool::Static::NoPing 2.00 + Search::Elasticsearch::Error 2.00 + Search::Elasticsearch::Logger::LogAny 2.00 + Search::Elasticsearch::Role::API::0_90 2.00 + Search::Elasticsearch::Role::API::1_0 2.00 + Search::Elasticsearch::Role::API::2_0 2.00 + Search::Elasticsearch::Role::Bulk 2.00 + Search::Elasticsearch::Role::Client 2.00 + Search::Elasticsearch::Role::Client::Direct 2.00 + Search::Elasticsearch::Role::Client::Direct::Main 2.00 + Search::Elasticsearch::Role::Cxn 2.00 + Search::Elasticsearch::Role::Cxn::HTTP 2.00 + Search::Elasticsearch::Role::CxnPool 2.00 + Search::Elasticsearch::Role::CxnPool::Sniff 2.00 + Search::Elasticsearch::Role::CxnPool::Static 2.00 + Search::Elasticsearch::Role::CxnPool::Static::NoPing 2.00 + Search::Elasticsearch::Role::Is_Sync 2.00 + Search::Elasticsearch::Role::Logger 2.00 + Search::Elasticsearch::Role::Scroll 2.00 + Search::Elasticsearch::Role::Serializer 2.00 + Search::Elasticsearch::Role::Serializer::JSON 2.00 + Search::Elasticsearch::Role::Transport 2.00 + Search::Elasticsearch::Scroll 2.00 + Search::Elasticsearch::Serializer::JSON 2.00 + Search::Elasticsearch::Serializer::JSON::Cpanel 2.00 + Search::Elasticsearch::Serializer::JSON::PP 2.00 + Search::Elasticsearch::Serializer::JSON::XS 2.00 + Search::Elasticsearch::TestServer 2.00 + Search::Elasticsearch::Transport 2.00 + Search::Elasticsearch::Util 2.00 + Search::Elasticsearch::Util::API::Path 2.00 + Search::Elasticsearch::Util::API::QS 2.00 requirements: Any::URI::Escape 0 Data::Dumper 0 + Devel::GlobalDestruction 0 Encode 0 ExtUtils::MakeMaker 0 File::Temp 0 HTTP::Headers 0 HTTP::Request 0 HTTP::Tiny 0.043 - Hijk 0.12 + Hijk 0.20 IO::Select 0 IO::Socket 0 IO::Uncompress::Inflate 0 @@ -7820,10 +7372,8 @@ DISTRIBUTIONS Moo::Role 0 POSIX 0 Package::Stash 0.34 - Pod::Simple 3.28 Scalar::Util 0 Sub::Exporter 0 - Test::More 0.98 Time::HiRes 0 Try::Tiny 0 URI 0 @@ -7838,39 +7388,44 @@ DISTRIBUTIONS requirements: ExtUtils::MakeMaker 0 perl 5 - Sort-Versions-1.5 - pathname: E/ED/EDAVIS/Sort-Versions-1.5.tar.gz + Sort-Versions-1.61 + pathname: N/NE/NEILB/Sort-Versions-1.61.tar.gz provides: - Sort::Versions 1.5 + Sort::Versions 1.61 requirements: + Exporter 0 ExtUtils::MakeMaker 0 - Starman-0.4009 - pathname: M/MI/MIYAGAWA/Starman-0.4009.tar.gz + perl 5.006 + strict 0 + warnings 0 + Starman-0.4014 + pathname: M/MI/MIYAGAWA/Starman-0.4014.tar.gz provides: HTTP::Server::PSGI::Net::Server::PreFork undef Plack::Handler::Starman undef - Starman 0.4009 + Starman 0.4014 Starman::Server undef requirements: Data::Dump 0 HTTP::Date 0 HTTP::Parser::XS 0 HTTP::Status 0 - Module::Build::Tiny 0.035 + Module::Build::Tiny 0.039 Net::Server 2.007 Plack 0.9971 Test::TCP 2.00 parent 0 perl 5.008001 - Stream-Buffered-0.02 - pathname: D/DO/DOY/Stream-Buffered-0.02.tar.gz + Stream-Buffered-0.03 + pathname: D/DO/DOY/Stream-Buffered-0.03.tar.gz provides: - Stream::Buffered 0.02 + Stream::Buffered 0.03 Stream::Buffered::Auto undef Stream::Buffered::File undef Stream::Buffered::PerlIO undef requirements: - ExtUtils::MakeMaker 6.36 + ExtUtils::MakeMaker 6.30 + IO::File 1.14 String-Format-1.17 pathname: D/DA/DARREN/String-Format-1.17.tar.gz provides: @@ -7888,6 +7443,18 @@ DISTRIBUTIONS Sub::Exporter 0.972 strict 0 warnings 0 + String-Trim-0.005 + pathname: D/DO/DOHERTY/String-Trim-0.005.tar.gz + provides: + String::Trim 0.005 + requirements: + Data::Dumper 0 + Exporter 5.57 + ExtUtils::MakeMaker 6.31 + File::Find 0 + File::Temp 0 + Test::Builder 0.94 + Test::More 0.94 Sub-Exporter-0.987 pathname: R/RJ/RJBS/Sub-Exporter-0.987.tar.gz provides: @@ -7908,6 +7475,19 @@ DISTRIBUTIONS Sub::Install 0.92 strict 0 warnings 0 + Sub-Exporter-ForMethods-0.100052 + pathname: R/RJ/RJBS/Sub-Exporter-ForMethods-0.100052.tar.gz + provides: + Sub::Exporter::ForMethods 0.100052 + TestDexp undef + TestMexp undef + requirements: + ExtUtils::MakeMaker 0 + Scalar::Util 0 + Sub::Exporter 0.978 + Sub::Name 0 + strict 0 + warnings 0 Sub-Exporter-Progressive-0.001011 pathname: F/FR/FREW/Sub-Exporter-Progressive-0.001011.tar.gz provides: @@ -7915,17 +7495,17 @@ DISTRIBUTIONS requirements: ExtUtils::MakeMaker 0 Test::More 0.88 - Sub-Identify-0.10 - pathname: R/RG/RGARCIA/Sub-Identify-0.10.tar.gz + Sub-Identify-0.12 + pathname: R/RG/RGARCIA/Sub-Identify-0.12.tar.gz provides: - Sub::Identify 0.10 + Sub::Identify 0.12 requirements: ExtUtils::MakeMaker 0 Test::More 0 - Sub-Install-0.927 - pathname: R/RJ/RJBS/Sub-Install-0.927.tar.gz + Sub-Install-0.928 + pathname: R/RJ/RJBS/Sub-Install-0.928.tar.gz provides: - Sub::Install 0.927 + Sub::Install 0.928 requirements: B 0 Carp 0 @@ -7933,12 +7513,17 @@ DISTRIBUTIONS Scalar::Util 0 strict 0 warnings 0 - Sub-Name-0.05 - pathname: F/FL/FLORA/Sub-Name-0.05.tar.gz + Sub-Name-0.14 + pathname: E/ET/ETHER/Sub-Name-0.14.tar.gz provides: - Sub::Name 0.05 + Sub::Name 0.14 requirements: + Exporter 5.57 ExtUtils::MakeMaker 0 + XSLoader 0 + perl 5.006 + strict 0 + warnings 0 Sub-Override-0.09 pathname: O/OV/OVID/Sub-Override-0.09.tar.gz provides: @@ -7947,18 +7532,15 @@ DISTRIBUTIONS ExtUtils::MakeMaker 0 Test::Fatal 0.010 Test::More 0.47 - Sub-Uplevel-0.24 - pathname: D/DA/DAGOLDEN/Sub-Uplevel-0.24.tar.gz + Sub-Uplevel-0.25 + pathname: D/DA/DAGOLDEN/Sub-Uplevel-0.25.tar.gz provides: - Sub::Uplevel 0.24 + Sub::Uplevel 0.25 requirements: Carp 0 - Exporter 0 - ExtUtils::MakeMaker 6.30 - File::Find 0 - File::Temp 0 - Test::More 0 + ExtUtils::MakeMaker 6.17 constant 0 + perl 5.006 strict 0 warnings 0 System-Sub-0.150960 @@ -8007,13 +7589,13 @@ DISTRIBUTIONS ExtUtils::CBuilder 0 ExtUtils::MakeMaker 0 Test::More 0 - Test-Aggregate-0.371 - pathname: R/RW/RWSTAUNER/Test-Aggregate-0.371.tar.gz + Test-Aggregate-0.373 + pathname: R/RW/RWSTAUNER/Test-Aggregate-0.373.tar.gz provides: - Test::Aggregate 0.371 - Test::Aggregate::Base 0.371 - Test::Aggregate::Builder 0.371 - Test::Aggregate::Nested 0.371 + Test::Aggregate 0.373 + Test::Aggregate::Base 0.373 + Test::Aggregate::Builder 0.373 + Test::Aggregate::Nested 0.373 requirements: FindBin 1.47 Test::Harness 3.09 @@ -8021,33 +7603,20 @@ DISTRIBUTIONS Test::NoWarnings 0 Test::Simple 0.94 Test::Trap 0 - Test-CheckDeps-0.010 - pathname: L/LE/LEONT/Test-CheckDeps-0.010.tar.gz + Test-Compile-v1.3.0 + pathname: E/EG/EGILES/Test-Compile-v1.3.0.tar.gz provides: - Test::CheckDeps 0.010 - requirements: - CPAN::Meta 2.120920 - CPAN::Meta::Check 0.007 - Exporter 5.57 - ExtUtils::MakeMaker 6.30 - List::Util 0 - Test::Builder 0 - strict 0 - warnings 0 - Test-Compile-v1.2.0 - pathname: E/EG/EGILES/Test-Compile-v1.2.0.tar.gz - provides: - Test::Compile 1.002000 - Test::Compile::Internal 1.002000 + Test::Compile 1.003000 + Test::Compile::Internal 1.003000 requirements: Module::Build 0.38 UNIVERSAL::require 0 perl v5.6.2 version 0 - Test-Deep-0.112 - pathname: R/RJ/RJBS/Test-Deep-0.112.tar.gz + Test-Deep-0.119 + pathname: R/RJ/RJBS/Test-Deep-0.119.tar.gz provides: - Test::Deep 0.112 + Test::Deep 0.119 Test::Deep::All undef Test::Deep::Any undef Test::Deep::Array undef @@ -8079,6 +7648,7 @@ DISTRIBUTIONS Test::Deep::RefType undef Test::Deep::Regexp undef Test::Deep::RegexpMatches undef + Test::Deep::RegexpOnly undef Test::Deep::RegexpRef undef Test::Deep::RegexpRefOnly undef Test::Deep::RegexpVersion undef @@ -8100,36 +7670,40 @@ DISTRIBUTIONS ExtUtils::MakeMaker 0 List::Util 1.09 Scalar::Util 1.09 - Test::More 0 - Test::NoWarnings 0.02 - Test::Tester 0.04 - Test-Differences-0.61 - pathname: O/OV/OVID/Test-Differences-0.61.tar.gz + Test::Builder 0 + Test-Differences-0.63 + pathname: D/DC/DCANTRELL/Test-Differences-0.63.tar.gz provides: - Test::Differences 0.61 + Test::Differences 0.63 requirements: + Capture::Tiny 0.24 Data::Dumper 2.126 Test::More 0 Text::Diff 0.35 - Test-Exception-0.32 - pathname: A/AD/ADIE/Test-Exception-0.32.tar.gz + Test-Exception-0.40 + pathname: E/EX/EXODIST/Test-Exception-0.40.tar.gz provides: - Test::Exception 0.32 + Test::Exception 0.40 requirements: + Carp 0 + Exporter 0 + ExtUtils::MakeMaker 0 Sub::Uplevel 0.18 Test::Builder 0.7 Test::Builder::Tester 1.07 Test::Harness 2.03 - Test::More 0.7 - Test::Simple 0.7 - Test-Fatal-0.013 - pathname: R/RJ/RJBS/Test-Fatal-0.013.tar.gz + base 0 + perl 5.006001 + strict 0 + warnings 0 + Test-Fatal-0.014 + pathname: R/RJ/RJBS/Test-Fatal-0.014.tar.gz provides: - Test::Fatal 0.013 + Test::Fatal 0.014 requirements: Carp 0 Exporter 5.57 - ExtUtils::MakeMaker 6.30 + ExtUtils::MakeMaker 0 Test::Builder 0 Try::Tiny 0.07 strict 0 @@ -8145,57 +7719,58 @@ DISTRIBUTIONS Test::Builder 0 Test::Builder::Tester 1.04 Test::More 0 - Test-Harness-3.30 - pathname: L/LE/LEONT/Test-Harness-3.30.tar.gz - provides: - App::Prove 3.30 - App::Prove::State 3.30 - App::Prove::State::Result 3.30 - App::Prove::State::Result::Test 3.30 - TAP::Base 3.30 - TAP::Formatter::Base 3.30 - TAP::Formatter::Color 3.30 - TAP::Formatter::Console 3.30 - TAP::Formatter::Console::ParallelSession 3.30 - TAP::Formatter::Console::Session 3.30 - TAP::Formatter::File 3.30 - TAP::Formatter::File::Session 3.30 - TAP::Formatter::Session 3.30 - TAP::Harness 3.30 - TAP::Harness::Env 3.30 - TAP::Object 3.30 - TAP::Parser 3.30 - TAP::Parser::Aggregator 3.30 - TAP::Parser::Grammar 3.30 - TAP::Parser::Iterator 3.30 - TAP::Parser::Iterator::Array 3.30 - TAP::Parser::Iterator::Process 3.30 - TAP::Parser::Iterator::Stream 3.30 - TAP::Parser::IteratorFactory 3.30 - TAP::Parser::Multiplexer 3.30 - TAP::Parser::Result 3.30 - TAP::Parser::Result::Bailout 3.30 - TAP::Parser::Result::Comment 3.30 - TAP::Parser::Result::Plan 3.30 - TAP::Parser::Result::Pragma 3.30 - TAP::Parser::Result::Test 3.30 - TAP::Parser::Result::Unknown 3.30 - TAP::Parser::Result::Version 3.30 - TAP::Parser::Result::YAML 3.30 - TAP::Parser::ResultFactory 3.30 - TAP::Parser::Scheduler 3.30 - TAP::Parser::Scheduler::Job 3.30 - TAP::Parser::Scheduler::Spinner 3.30 - TAP::Parser::Source 3.30 - TAP::Parser::SourceHandler 3.30 - TAP::Parser::SourceHandler::Executable 3.30 - TAP::Parser::SourceHandler::File 3.30 - TAP::Parser::SourceHandler::Handle 3.30 - TAP::Parser::SourceHandler::Perl 3.30 - TAP::Parser::SourceHandler::RawTAP 3.30 - TAP::Parser::YAMLish::Reader 3.30 - TAP::Parser::YAMLish::Writer 3.30 - Test::Harness 3.30 + Test-Harness-3.35 + pathname: L/LE/LEONT/Test-Harness-3.35.tar.gz + provides: + App::Prove 3.35 + App::Prove::State 3.35 + App::Prove::State::Result 3.35 + App::Prove::State::Result::Test 3.35 + Harness::Hook undef + TAP::Base 3.35 + TAP::Formatter::Base 3.35 + TAP::Formatter::Color 3.35 + TAP::Formatter::Console 3.35 + TAP::Formatter::Console::ParallelSession 3.35 + TAP::Formatter::Console::Session 3.35 + TAP::Formatter::File 3.35 + TAP::Formatter::File::Session 3.35 + TAP::Formatter::Session 3.35 + TAP::Harness 3.35 + TAP::Harness::Env 3.35 + TAP::Object 3.35 + TAP::Parser 3.35 + TAP::Parser::Aggregator 3.35 + TAP::Parser::Grammar 3.35 + TAP::Parser::Iterator 3.35 + TAP::Parser::Iterator::Array 3.35 + TAP::Parser::Iterator::Process 3.35 + TAP::Parser::Iterator::Stream 3.35 + TAP::Parser::IteratorFactory 3.35 + TAP::Parser::Multiplexer 3.35 + TAP::Parser::Result 3.35 + TAP::Parser::Result::Bailout 3.35 + TAP::Parser::Result::Comment 3.35 + TAP::Parser::Result::Plan 3.35 + TAP::Parser::Result::Pragma 3.35 + TAP::Parser::Result::Test 3.35 + TAP::Parser::Result::Unknown 3.35 + TAP::Parser::Result::Version 3.35 + TAP::Parser::Result::YAML 3.35 + TAP::Parser::ResultFactory 3.35 + TAP::Parser::Scheduler 3.35 + TAP::Parser::Scheduler::Job 3.35 + TAP::Parser::Scheduler::Spinner 3.35 + TAP::Parser::Source 3.35 + TAP::Parser::SourceHandler 3.35 + TAP::Parser::SourceHandler::Executable 3.35 + TAP::Parser::SourceHandler::File 3.35 + TAP::Parser::SourceHandler::Handle 3.35 + TAP::Parser::SourceHandler::Perl 3.35 + TAP::Parser::SourceHandler::RawTAP 3.35 + TAP::Parser::YAMLish::Reader 3.35 + TAP::Parser::YAMLish::Writer 3.35 + Test::Harness 3.35 requirements: ExtUtils::MakeMaker 0 Test-InDistDir-1.112071 @@ -8220,39 +7795,19 @@ DISTRIBUTIONS Module::Install::AuthorTests 0 Module::Pluggable::Object 0 Test::More 0 - Test-LongString-0.15 - pathname: R/RG/RGARCIA/Test-LongString-0.15.tar.gz + Test-LongString-0.17 + pathname: R/RG/RGARCIA/Test-LongString-0.17.tar.gz provides: - Test::LongString 0.15 + Test::LongString 0.17 requirements: ExtUtils::MakeMaker 0 Test::Builder 0.12 Test::Builder::Tester 1.04 - Test-MockObject-1.20140408 - pathname: C/CH/CHROMATIC/Test-MockObject-1.20140408.tar.gz - provides: - Test::MockObject 1.20140408 - Test::MockObject::Extends 1.20140408 - requirements: - CGI 0 - Carp 0 - Devel::Peek 0 - ExtUtils::MakeMaker 6.30 - Scalar::Util 0 - Test::Builder 0 - Test::Exception 0.31 - Test::More 0.98 - Test::Warn 0.23 - UNIVERSAL::can 1.20110617 - UNIVERSAL::isa 1.20110614 - constant 0 - strict 0 - warnings 0 - Test-Most-0.33 - pathname: O/OV/OVID/Test-Most-0.33.tar.gz + Test-Most-0.34 + pathname: O/OV/OVID/Test-Most-0.34.tar.gz provides: - Test::Most 0.33 - Test::Most::Exception 0.33 + Test::Most 0.34 + Test::Most::Exception 0.34 requirements: Exception::Class 1.14 ExtUtils::MakeMaker 0 @@ -8311,13 +7866,15 @@ DISTRIBUTIONS Test::HTTP::Server::Simple 0 Test::OpenID::Consumer 0 Test::WWW::Mechanize 0 - Test-Perl-Critic-1.02 - pathname: T/TH/THALJEF/Test-Perl-Critic-1.02.tar.gz + Test-Perl-Critic-1.03 + pathname: T/TH/THALJEF/Test-Perl-Critic-1.03.tar.gz provides: - Test::Perl::Critic 1.02 + Test::Perl::Critic 1.03 requirements: Carp 0 English 0 + MCE 1.52 + Module::Build 0.4 Perl::Critic 1.105 Perl::Critic::Utils 1.105 Perl::Critic::Violation 1.105 @@ -8325,69 +7882,41 @@ DISTRIBUTIONS Test::More 0 strict 0 warnings 0 - Test-Pod-1.48 - pathname: D/DW/DWHEELER/Test-Pod-1.48.tar.gz + Test-Requires-0.10 + pathname: T/TO/TOKUHIROM/Test-Requires-0.10.tar.gz provides: - Test::Pod 1.48 + Test::Requires 0.10 requirements: - File::Find 0 - File::Spec 0 - Module::Build 0.30 - Pod::Simple 3.05 - Test::Builder::Tester 1.02 - Test::More 0.62 - Test-Pod-Coverage-1.08 - pathname: P/PE/PETDANCE/Test-Pod-Coverage-1.08.tar.gz - provides: - Nopod undef - Nosymbols undef - PC_Inherited undef - PC_Inherits undef - Privates undef - Simple undef - Test::Pod::Coverage 1.08 - requirements: - ExtUtils::MakeMaker 0 - Pod::Coverage 0 - Test::Builder::Tester 0 - Test::More 0 - Test-Requires-0.07 - pathname: T/TO/TOKUHIROM/Test-Requires-0.07.tar.gz - provides: - Test::Requires 0.07 - requirements: - CPAN::Meta 0 - CPAN::Meta::Prereqs 0 - ExtUtils::MakeMaker 6.59 - Module::Build 0.38 + ExtUtils::MakeMaker 6.64 Test::Builder::Module 0 - Test::More 0.61 - perl 5.008_001 - Test-RequiresInternet-0.04 - pathname: M/MA/MALLEN/Test-RequiresInternet-0.04.tar.gz + Test::More 0.47 + perl 5.006 + Test-RequiresInternet-0.05 + pathname: M/MA/MALLEN/Test-RequiresInternet-0.05.tar.gz provides: - Test::RequiresInternet 0.04 + Test::RequiresInternet 0.05 requirements: ExtUtils::MakeMaker 0 Socket 0 strict 0 warnings 0 - Test-Routine-0.018 - pathname: R/RJ/RJBS/Test-Routine-0.018.tar.gz - provides: - Test::Routine 0.018 - Test::Routine::Common 0.018 - Test::Routine::Compositor 0.018 - Test::Routine::Manual::Demo 0.018 - Test::Routine::Runner 0.018 - Test::Routine::Test 0.018 - Test::Routine::Test::Role 0.018 - Test::Routine::Util 0.018 + Test-Routine-0.020 + pathname: R/RJ/RJBS/Test-Routine-0.020.tar.gz + provides: + Test::Routine 0.020 + Test::Routine::Common 0.020 + Test::Routine::Compositor 0.020 + Test::Routine::Manual::Demo 0.020 + Test::Routine::Runner 0.020 + Test::Routine::Test 0.020 + Test::Routine::Test::Role 0.020 + Test::Routine::Util 0.020 t::lib::NoGood undef + t::lib::NoGood2 undef requirements: Carp 0 Class::Load 0 - ExtUtils::MakeMaker 6.30 + ExtUtils::MakeMaker 0 Moose 0 Moose::Exporter 0 Moose::Meta::Class 0 @@ -8405,44 +7934,37 @@ DISTRIBUTIONS namespace::clean 0 strict 0 warnings 0 - Test-Script-1.07 - pathname: A/AD/ADAMK/Test-Script-1.07.tar.gz + Test-SharedFork-0.34 + pathname: E/EX/EXODIST/Test-SharedFork-0.34.tar.gz provides: - Test::Script 1.07 - requirements: - ExtUtils::MakeMaker 6.42 - File::Spec 0.80 - IPC::Run3 0.034 - Probe::Perl 0.01 - Test::Builder 0.32 - Test::Builder::Tester 1.02 - Test::More 0.62 - blib 0 - Test-SharedFork-0.24 - pathname: T/TO/TOKUHIROM/Test-SharedFork-0.24.tar.gz - provides: - Test::SharedFork 0.24 + Test::SharedFork 0.34 Test::SharedFork::Array undef Test::SharedFork::Scalar undef Test::SharedFork::Store undef requirements: - CPAN::Meta 0 - CPAN::Meta::Prereqs 0 - ExtUtils::CBuilder 0 + ExtUtils::MakeMaker 0 File::Temp 0 - Module::Build 0.38 Test::Builder 0.32 Test::Builder::Module 0 Test::More 0.88 perl 5.008_001 - Test-Simple-1.001003 - pathname: E/EX/EXODIST/Test-Simple-1.001003.tar.gz - provides: - Test::Builder 1.001003 - Test::Builder::IO::Scalar 2.110 - Test::Builder::Module 1.001003 - Test::More 1.001003 - Test::Simple 1.001003 + Test-Simple-1.001014 + pathname: E/EX/EXODIST/Test-Simple-1.001014.tar.gz + provides: + Test::Builder 1.001014 + Test::Builder::IO::Scalar 2.113 + Test::Builder::Module 1.001014 + Test::Builder::Tester 1.28 + Test::Builder::Tester::Color 1.290001 + Test::Builder::Tester::Tie 1.28 + Test::More 1.001014 + Test::Simple 1.001014 + Test::Tester 0.114 + Test::Tester::Capture undef + Test::Tester::CaptureRunner undef + Test::Tester::Delegate undef + Test::use::ok 0.16 + ok 0.16 requirements: ExtUtils::MakeMaker 0 Scalar::Util 1.13 @@ -8458,46 +7980,35 @@ DISTRIBUTIONS Hook::LexWrap 0.20 Test::Builder::Tester 1.02 Test::More 0.42 - Test-TCP-2.02 - pathname: T/TO/TOKUHIROM/Test-TCP-2.02.tar.gz + Test-TCP-2.14 + pathname: T/TO/TOKUHIROM/Test-TCP-2.14.tar.gz provides: Net::EmptyPort undef - Test::TCP 2.02 + Test::TCP 2.14 Test::TCP::CheckPort undef requirements: - CPAN::Meta 0 - CPAN::Meta::Prereqs 0 - ExtUtils::CBuilder 0 + ExtUtils::MakeMaker 0 IO::Socket::INET 0 - Module::Build 0.38 + IO::Socket::IP 0 Test::More 0 - Test::SharedFork 0.19 + Test::SharedFork 0.29 Time::HiRes 0 perl 5.008001 - Test-Tester-0.109 - pathname: F/FD/FDALY/Test-Tester-0.109.tar.gz + Test-Trap-v0.3.2 + pathname: E/EB/EBHANSSEN/Test-Trap-v0.3.2.tar.gz provides: - Test::Tester 0.109 - Test::Tester::Capture undef - Test::Tester::CaptureRunner undef - Test::Tester::Delegate undef - requirements: - ExtUtils::MakeMaker 0 - Test::Builder 0 - Test-Trap-v0.2.4 - pathname: E/EB/EBHANSSEN/Test-Trap-v0.2.4.tar.gz - provides: - Test::Trap 0.002004 - Test::Trap::Builder 0.002004 - Test::Trap::Builder::PerlIO 0.002004 - Test::Trap::Builder::SystemSafe 0.002004 - Test::Trap::Builder::TempFile 0.002004 + Test::Trap 0.003002 + Test::Trap::Builder 0.003002 + Test::Trap::Builder::PerlIO 0.003002 + Test::Trap::Builder::SystemSafe 0.003002 + Test::Trap::Builder::TempFile 0.003002 requirements: Carp 0 Data::Dump 0 Exporter 0 File::Temp 0 IO::Handle 0 + Module::Build 0 Test::Builder 0 Test::More 0 Test::Tester 0.107 @@ -8518,35 +8029,17 @@ DISTRIBUTIONS ExtUtils::Manifest 0 Test::Builder 0.30 Test::More 0.60 - Test-Vars-0.005 - pathname: G/GF/GFUJI/Test-Vars-0.005.tar.gz + Test-Vars-0.008 + pathname: D/DR/DROLSKY/Test-Vars-0.008.tar.gz provides: - Test::Vars 0.005 + Test::Vars 0.008 requirements: B 0 - CPAN::Meta 0 - CPAN::Meta::Prereqs 0 ExtUtils::MakeMaker 6.59 Module::Build 0.38 Test::More 0.88 parent 0 perl 5.010000 - Test-Version-1.002004 - pathname: X/XE/XENO/Test-Version-1.002004.tar.gz - provides: - Test::Version 1.002004 - requirements: - Carp 0 - Exporter 0 - ExtUtils::MakeMaker 6.30 - File::Find::Rule::Perl 0 - Module::Metadata 0 - Test::Builder 0 - Test::More 0.88 - parent 0 - strict 0 - version 0.86 - warnings 0 Test-WWW-Mechanize-1.44 pathname: P/PE/PETDANCE/Test-WWW-Mechanize-1.44.tar.gz provides: @@ -8588,35 +8081,28 @@ DISTRIBUTIONS Test::Builder::Tester 1.02 Test::More 0 perl 5.006 - Test-use-ok-0.11 - pathname: A/AU/AUDREYT/Test-use-ok-0.11.tar.gz + Text-CSV_XS-1.20 + pathname: H/HM/HMBRAND/Text-CSV_XS-1.20.tgz provides: - Test::use::ok 0.11 - ok 0.11 - requirements: - ExtUtils::MakeMaker 6.36 - perl 5.005 - Text-CSV_XS-1.08 - pathname: H/HM/HMBRAND/Text-CSV_XS-1.08.tgz - provides: - Text::CSV_XS 1.08 + Text::CSV_XS 1.20 requirements: Config 0 DynaLoader 0 ExtUtils::MakeMaker 0 IO::Handle 0 Test::More 0 - Text-Diff-1.41 - pathname: O/OV/OVID/Text-Diff-1.41.tar.gz + Text-Diff-1.43 + pathname: N/NE/NEILB/Text-Diff-1.43.tar.gz provides: - Text::Diff 1.41 - Text::Diff::Base 1.41 - Text::Diff::Config 1.41 - Text::Diff::Table 1.41 + Text::Diff 1.43 + Text::Diff::Base 1.43 + Text::Diff::Config 1.43 + Text::Diff::Table 1.43 requirements: Algorithm::Diff 1.19 Exporter 0 ExtUtils::MakeMaker 0 + perl 5.006 Text-Glob-0.09 pathname: R/RC/RCLAMP/Text-Glob-0.09.tar.gz provides: @@ -8648,16 +8134,16 @@ DISTRIBUTIONS Text::Template::Preprocess 1.46 requirements: ExtUtils::MakeMaker 0 - Throwable-0.200011 - pathname: R/RJ/RJBS/Throwable-0.200011.tar.gz + Throwable-0.200013 + pathname: R/RJ/RJBS/Throwable-0.200013.tar.gz provides: - StackTrace::Auto 0.200011 - Throwable 0.200011 - Throwable::Error 0.200011 + StackTrace::Auto 0.200013 + Throwable 0.200013 + Throwable::Error 0.200013 requirements: Carp 0 - Devel::StackTrace 1.21 - ExtUtils::MakeMaker 6.30 + Devel::StackTrace 1.32 + ExtUtils::MakeMaker 0 Module::Runtime 0.002 Moo 1.000001 Moo::Role 0 @@ -8674,22 +8160,26 @@ DISTRIBUTIONS Test::More 0 Test::use::ok 0 Tie::RefHash 0 - Time-Duration-1.1 - pathname: A/AV/AVIF/Time-Duration-1.1.tar.gz + Time-Duration-1.20 + pathname: N/NE/NEILB/Time-Duration-1.20.tar.gz provides: - Time::Duration 1.1 + Time::Duration 1.20 requirements: + Exporter 0 ExtUtils::MakeMaker 0 - Test::Pod 0 - Test::Pod::Coverage 0 - Time-Duration-Parse-0.11 - pathname: N/NE/NEILB/Time-Duration-Parse-0.11.tar.gz + constant 0 + perl 5.006 + strict 0 + warnings 0 + Time-Duration-Parse-0.13 + pathname: N/NE/NEILB/Time-Duration-Parse-0.13.tar.gz provides: - Time::Duration::Parse 0.11 + Time::Duration::Parse 0.13 requirements: Carp 0 Exporter::Lite 0 - ExtUtils::MakeMaker 6.30 + ExtUtils::MakeMaker 0 + perl 5.006 strict 0 warnings 0 TimeDate-2.30 @@ -8735,17 +8225,16 @@ DISTRIBUTIONS Time::Zone 2.24 requirements: ExtUtils::MakeMaker 0 - Tree-Simple-1.23 - pathname: R/RS/RSAVAGE/Tree-Simple-1.23.tgz + Tree-Simple-1.25 + pathname: R/RS/RSAVAGE/Tree-Simple-1.25.tgz provides: - Tree::Simple 1.23 - Tree::Simple::Visitor 1.23 + Tree::Simple 1.25 + Tree::Simple::Visitor 1.25 requirements: Module::Build 0.4 Scalar::Util 1.18 Test::Exception 0.15 Test::More 0.47 - Test::Version 1.002003 constant 0 strict 0 warnings 0 @@ -8792,21 +8281,22 @@ DISTRIBUTIONS constant 0 strict 0 warnings 0 - Twiggy-0.1024 - pathname: M/MI/MIYAGAWA/Twiggy-0.1024.tar.gz + Twiggy-0.1025 + pathname: M/MI/MIYAGAWA/Twiggy-0.1025.tar.gz provides: AnyEvent::Server::PSGI undef Plack::Handler::Twiggy undef - Twiggy 0.1024 + Twiggy 0.1025 Twiggy::Server undef Twiggy::Server::SS undef Twiggy::Writer undef requirements: AnyEvent 0 - ExtUtils::MakeMaker 6.30 + ExtUtils::MakeMaker 0 HTTP::Status 0 Plack 0.99 Try::Tiny 0 + perl 5.008001 Type-Tiny-1.000005 pathname: T/TO/TOBYINK/Type-Tiny-1.000005.tar.gz provides: @@ -8893,124 +8383,102 @@ DISTRIBUTIONS Type::Tiny 1.000000 UUID::Tiny 1.02 perl 5.008 - UNIVERSAL-can-1.20140328 - pathname: C/CH/CHROMATIC/UNIVERSAL-can-1.20140328.tar.gz - provides: - Test::SmallWarn undef - UNIVERSAL::can 1.20140328 - requirements: - ExtUtils::MakeMaker 6.30 - Scalar::Util 0 - strict 0 - vars 0 - warnings 0 - warnings::register 0 - UNIVERSAL-isa-1.20140927 - pathname: E/ET/ETHER/UNIVERSAL-isa-1.20140927.tar.gz - provides: - UNIVERSAL::isa 1.20140927 - requirements: - ExtUtils::MakeMaker 0 - Module::Build::Tiny 0.038 - Scalar::Util 0 - UNIVERSAL 0 - perl v5.6.2 - strict 0 - warnings 0 - warnings::register 0 - UNIVERSAL-require-0.17 - pathname: N/NE/NEILB/UNIVERSAL-require-0.17.tar.gz + UNIVERSAL-require-0.18 + pathname: N/NE/NEILB/UNIVERSAL-require-0.18.tar.gz provides: - UNIVERSAL 0.17 - UNIVERSAL::require 0.17 + UNIVERSAL 0.18 + UNIVERSAL::require 0.18 requirements: Carp 0 ExtUtils::MakeMaker 0 Test::More 0.47 perl 5.006 - URI-1.60 - pathname: G/GA/GAAS/URI-1.60.tar.gz + strict 0 + warnings 0 + URI-1.69 + pathname: E/ET/ETHER/URI-1.69.tar.gz provides: - URI 1.60 + URI 1.69 URI::Escape 3.31 URI::Heuristic 4.20 - URI::IRI undef - URI::QueryParam undef - URI::Split undef + URI::IRI 1.69 + URI::QueryParam 1.69 + URI::Split 1.69 URI::URL 5.04 URI::WithBase 2.20 - URI::_foreign undef - URI::_generic undef - URI::_idna undef - URI::_ldap 1.12 - URI::_login undef - URI::_punycode 0.04 - URI::_query undef - URI::_segment undef - URI::_server undef - URI::_userpass undef - URI::data undef + URI::_foreign 1.69 + URI::_generic 1.69 + URI::_idna 1.69 + URI::_ldap 1.69 + URI::_login 1.69 + URI::_punycode 1.69 + URI::_query 1.69 + URI::_segment 1.69 + URI::_server 1.69 + URI::_userpass 1.69 + URI::data 1.69 URI::file 4.21 - URI::file::Base undef - URI::file::FAT undef - URI::file::Mac undef - URI::file::OS2 undef - URI::file::QNX undef - URI::file::Unix undef - URI::file::Win32 undef - URI::ftp undef - URI::gopher undef - URI::http undef - URI::https undef - URI::ldap 1.12 - URI::ldapi undef - URI::ldaps undef - URI::mailto undef - URI::mms undef - URI::news undef - URI::nntp undef - URI::pop undef - URI::rlogin undef - URI::rsync undef - URI::rtsp undef - URI::rtspu undef - URI::sip 0.11 - URI::sips undef - URI::snews undef - URI::ssh undef - URI::telnet undef - URI::tn3270 undef - URI::urn undef + URI::file::Base 1.69 + URI::file::FAT 1.69 + URI::file::Mac 1.69 + URI::file::OS2 1.69 + URI::file::QNX 1.69 + URI::file::Unix 1.69 + URI::file::Win32 1.69 + URI::ftp 1.69 + URI::gopher 1.69 + URI::http 1.69 + URI::https 1.69 + URI::ldap 1.69 + URI::ldapi 1.69 + URI::ldaps 1.69 + URI::mailto 1.69 + URI::mms 1.69 + URI::news 1.69 + URI::nntp 1.69 + URI::pop 1.69 + URI::rlogin 1.69 + URI::rsync 1.69 + URI::rtsp 1.69 + URI::rtspu 1.69 + URI::sftp 1.69 + URI::sip 1.69 + URI::sips 1.69 + URI::snews 1.69 + URI::ssh 1.69 + URI::telnet 1.69 + URI::tn3270 1.69 + URI::urn 1.69 URI::urn::isbn undef - URI::urn::oid undef + URI::urn::oid 1.69 requirements: + Exporter 5.57 ExtUtils::MakeMaker 0 MIME::Base64 2 - Test 0 - Test::More 0 + Scalar::Util 0 + parent 0 perl 5.008001 - URI-Find-20111103 - pathname: M/MS/MSCHWERN/URI-Find-20111103.tar.gz + utf8 0 + URI-Find-20140709 + pathname: M/MS/MSCHWERN/URI-Find-20140709.tar.gz provides: - URI::Find 20111103 - URI::Find::Schemeless 20111103 + URI::Find 20140709 + URI::Find::Schemeless 20140709 requirements: Module::Build 0.30 Test::More 0.88 - URI 1.00 - URI::URL 5.00 - perl v5.6.0 - URI-FromHash-0.04 - pathname: D/DR/DROLSKY/URI-FromHash-0.04.tar.gz + URI 1.60 + perl v5.8.9 + URI-FromHash-0.05 + pathname: D/DR/DROLSKY/URI-FromHash-0.05.tar.gz provides: - URI::FromHash 0.04 + URI::FromHash 0.05 requirements: Carp 0 Exporter 0 - ExtUtils::MakeMaker 6.30 + ExtUtils::MakeMaker 0 Params::Validate 0 - URI 0 - URI::QueryParam 0 + URI 1.68 strict 0 warnings 0 URI-Query-0.10 @@ -9021,6 +8489,14 @@ DISTRIBUTIONS ExtUtils::MakeMaker 0 Test::More 0.88 URI 1.31 + URI-ws-0.03 + pathname: P/PL/PLICEASE/URI-ws-0.03.tar.gz + provides: + URI::ws 0.03 + URI::wss 0.03 + requirements: + ExtUtils::MakeMaker 6.30 + URI 0 UUID-Tiny-1.04 pathname: C/CA/CAUGUSTIN/UUID-Tiny-1.04.tar.gz provides: @@ -9034,38 +8510,45 @@ DISTRIBUTIONS POSIX 0 Test::More 0 Time::HiRes 0 - Unicode-LineBreak-2014.06 - pathname: N/NE/NEZUMI/Unicode-LineBreak-2014.06.tar.gz + Unicode-LineBreak-2015.11 + pathname: N/NE/NEZUMI/Unicode-LineBreak-2015.11.tar.gz provides: Text::LineFold 2012.04 Unicode::GCString 2013.10 - Unicode::LineBreak 2014.06 + Unicode::LineBreak 2015.11 requirements: Encode 1.98 ExtUtils::MakeMaker 6.26 MIME::Charset v1.6.2 Test::More 0.45 perl 5.008 - Variable-Magic-0.53 - pathname: V/VP/VPIT/Variable-Magic-0.53.tar.gz + Variable-Magic-0.59 + pathname: V/VP/VPIT/Variable-Magic-0.59.tar.gz provides: - Variable::Magic 0.53 + Variable::Magic 0.59 requirements: Carp 0 Config 0 Exporter 0 ExtUtils::MakeMaker 0 + IO::Handle 0 + IO::Select 0 + IPC::Open3 0 + POSIX 0 + Socket 0 Test::More 0 XSLoader 0 base 0 + lib 0 perl 5.008 - WWW-Mechanize-1.73 - pathname: E/ET/ETHER/WWW-Mechanize-1.73.tar.gz + WWW-Mechanize-1.75 + pathname: E/ET/ETHER/WWW-Mechanize-1.75.tar.gz provides: - WWW::Mechanize 1.73 - WWW::Mechanize::Image undef - WWW::Mechanize::Link undef + WWW::Mechanize 1.75 + WWW::Mechanize::Image 1.75 + WWW::Mechanize::Link 1.75 requirements: + CGI 4.08 Carp 0 ExtUtils::MakeMaker 0 File::Temp 0 @@ -9090,20 +8573,24 @@ DISTRIBUTIONS URI::URL 0 URI::file 0 perl 5.008 - WWW-Mechanize-Cached-1.43 - pathname: O/OA/OALDERS/WWW-Mechanize-Cached-1.43.tar.gz + WWW-Mechanize-Cached-1.50 + pathname: O/OA/OALDERS/WWW-Mechanize-Cached-1.50.tar.gz provides: TestCache undef - WWW::Mechanize::Cached 1.43 + WWW::Mechanize::Cached 1.50 requirements: Cache::FileCache 0 Carp 0 + Class::Load 0 Data::Dump 0 - ExtUtils::MakeMaker 6.30 - Module::Build 0.3601 - Moose 0 + ExtUtils::MakeMaker 0 + Module::Build 0.28 + Moo 1.004005 + MooX::Types::MooseLike::Base 0 Storable 2.21 WWW::Mechanize 0 + namespace::clean 0 + perl 5.006 strict 0 warnings 0 WWW-RobotRules-6.02 @@ -9125,11 +8612,11 @@ DISTRIBUTIONS requirements: ExtUtils::MakeMaker 6.42 Test::More 0.47 - XML-Parser-2.41 - pathname: T/TO/TODDR/XML-Parser-2.41.tar.gz + XML-Parser-2.44 + pathname: T/TO/TODDR/XML-Parser-2.44.tar.gz provides: - XML::Parser 2.41 - XML::Parser::Expat 2.41 + XML::Parser 2.44 + XML::Parser::Expat 2.44 XML::Parser::Style::Debug undef XML::Parser::Style::Objects undef XML::Parser::Style::Stream undef @@ -9137,7 +8624,8 @@ DISTRIBUTIONS XML::Parser::Style::Tree undef requirements: ExtUtils::MakeMaker 0 - LWP 0 + LWP::UserAgent 0 + Test::More 0 perl 5.00405 XML-SAX-0.99 pathname: G/GR/GRANTM/XML-SAX-0.99.tar.gz @@ -9188,49 +8676,48 @@ DISTRIBUTIONS XML::NamespaceSupport 1.04 XML::SAX 0.15 XML::SAX::Expat 0 - YAML-0.92 - pathname: I/IN/INGY/YAML-0.92.tar.gz - provides: - Test::YAML 0.92 - Test::YAML::Filter 0.92 - YAML 0.92 - YAML::Any 0.92 - YAML::Dumper 0.92 - YAML::Dumper::Base 0.92 - YAML::Error 0.92 - YAML::Loader 0.92 - YAML::Loader::Base 0.92 - YAML::Marshall 0.92 - YAML::Mo 0.92 - YAML::Node 0.92 - YAML::Tag 0.92 - YAML::Type::blessed 0.92 - YAML::Type::code 0.92 - YAML::Type::glob 0.92 - YAML::Type::ref 0.92 - YAML::Type::regexp 0.92 - YAML::Type::undef 0.92 - YAML::Types 0.92 - YAML::Warning 0.92 - yaml_mapping 0.92 - yaml_scalar 0.92 - yaml_sequence 0.92 + YAML-1.15 + pathname: I/IN/INGY/YAML-1.15.tar.gz + provides: + YAML 1.15 + YAML::Any 1.15 + YAML::Dumper undef + YAML::Dumper::Base undef + YAML::Error undef + YAML::Loader undef + YAML::Loader::Base undef + YAML::Marshall undef + YAML::Mo 0.88 + YAML::Node undef + YAML::Tag undef + YAML::Type::blessed undef + YAML::Type::code undef + YAML::Type::glob undef + YAML::Type::ref undef + YAML::Type::regexp undef + YAML::Type::undef undef + YAML::Types undef + YAML::Warning undef + yaml_mapping undef + yaml_scalar undef + yaml_sequence undef requirements: - ExtUtils::MakeMaker 6.30 - YAML-Syck-1.27 - pathname: T/TO/TODDR/YAML-Syck-1.27.tar.gz + ExtUtils::MakeMaker 0 + perl 5.008001 + YAML-Syck-1.29 + pathname: T/TO/TODDR/YAML-Syck-1.29.tar.gz provides: - JSON::Syck 1.27 + JSON::Syck 1.29 YAML::Dumper::Syck undef YAML::Loader::Syck undef - YAML::Syck 1.27 + YAML::Syck 1.29 requirements: ExtUtils::MakeMaker 6.59 perl 5.006 - YAML-Tiny-1.66 - pathname: E/ET/ETHER/YAML-Tiny-1.66.tar.gz + YAML-Tiny-1.69 + pathname: E/ET/ETHER/YAML-Tiny-1.69.tar.gz provides: - YAML::Tiny 1.66 + YAML::Tiny 1.69 requirements: B 0 Carp 0 @@ -9241,12 +8728,17 @@ DISTRIBUTIONS perl 5.008001 strict 0 warnings 0 - aliased-0.31 - pathname: O/OV/OVID/aliased-0.31.tar.gz + aliased-0.34 + pathname: E/ET/ETHER/aliased-0.34.tar.gz provides: - aliased 0.31 + aliased 0.34 requirements: - Test::More 0 + Carp 0 + Exporter 0 + Module::Build::Tiny 0.039 + perl 5.006 + strict 0 + warnings 0 bareword-filehandles-0.003 pathname: I/IL/ILMARI/bareword-filehandles-0.003.tar.gz provides: @@ -9259,35 +8751,199 @@ DISTRIBUTIONS Lexical::SealRequireHints 0 Test::More 0.88 XSLoader 0 - common-sense-3.73 - pathname: M/ML/MLEHMANN/common-sense-3.73.tar.gz + common-sense-3.74 + pathname: M/ML/MLEHMANN/common-sense-3.74.tar.gz provides: - common::sense 3.73 + common::sense 3.74 requirements: ExtUtils::MakeMaker 0 - indirect-0.31 - pathname: V/VP/VPIT/indirect-0.31.tar.gz + indirect-0.36 + pathname: V/VP/VPIT/indirect-0.36.tar.gz provides: - indirect 0.31 + indirect 0.36 requirements: Carp 0 Config 0 ExtUtils::MakeMaker 0 + IO::Handle 0 + IO::Select 0 + IPC::Open3 0 + POSIX 0 + Socket 0 Test::More 0 XSLoader 0 + lib 0 perl 5.008001 - libwww-perl-6.06 - pathname: M/MS/MSCHILLI/libwww-perl-6.06.tar.gz + libintl-perl-1.24 + pathname: G/GU/GUIDO/libintl-perl-1.24.tar.gz + provides: + Locale::Messages 1.24 + Locale::Recode undef + Locale::Recode::_Aliases undef + Locale::Recode::_Conversions undef + Locale::RecodeData undef + Locale::RecodeData::ASMO_449 undef + Locale::RecodeData::ATARI_ST undef + Locale::RecodeData::ATARI_ST_EURO undef + Locale::RecodeData::CP10007 undef + Locale::RecodeData::CP1250 undef + Locale::RecodeData::CP1251 undef + Locale::RecodeData::CP1252 undef + Locale::RecodeData::CP1253 undef + Locale::RecodeData::CP1254 undef + Locale::RecodeData::CP1256 undef + Locale::RecodeData::CP1257 undef + Locale::RecodeData::CSN_369103 undef + Locale::RecodeData::CWI undef + Locale::RecodeData::DEC_MCS undef + Locale::RecodeData::EBCDIC_AT_DE undef + Locale::RecodeData::EBCDIC_AT_DE_A undef + Locale::RecodeData::EBCDIC_CA_FR undef + Locale::RecodeData::EBCDIC_DK_NO undef + Locale::RecodeData::EBCDIC_DK_NO_A undef + Locale::RecodeData::EBCDIC_ES undef + Locale::RecodeData::EBCDIC_ES_A undef + Locale::RecodeData::EBCDIC_ES_S undef + Locale::RecodeData::EBCDIC_FI_SE undef + Locale::RecodeData::EBCDIC_FI_SE_A undef + Locale::RecodeData::EBCDIC_FR undef + Locale::RecodeData::EBCDIC_IS_FRISS undef + Locale::RecodeData::EBCDIC_IT undef + Locale::RecodeData::EBCDIC_PT undef + Locale::RecodeData::EBCDIC_UK undef + Locale::RecodeData::EBCDIC_US undef + Locale::RecodeData::ECMA_CYRILLIC undef + Locale::RecodeData::GEORGIAN_ACADEMY undef + Locale::RecodeData::GEORGIAN_PS undef + Locale::RecodeData::GOST_19768_74 undef + Locale::RecodeData::GREEK7 undef + Locale::RecodeData::GREEK7_OLD undef + Locale::RecodeData::GREEK_CCITT undef + Locale::RecodeData::HP_ROMAN8 undef + Locale::RecodeData::IBM037 undef + Locale::RecodeData::IBM038 undef + Locale::RecodeData::IBM1004 undef + Locale::RecodeData::IBM1026 undef + Locale::RecodeData::IBM1047 undef + Locale::RecodeData::IBM256 undef + Locale::RecodeData::IBM273 undef + Locale::RecodeData::IBM274 undef + Locale::RecodeData::IBM275 undef + Locale::RecodeData::IBM277 undef + Locale::RecodeData::IBM278 undef + Locale::RecodeData::IBM280 undef + Locale::RecodeData::IBM281 undef + Locale::RecodeData::IBM284 undef + Locale::RecodeData::IBM285 undef + Locale::RecodeData::IBM290 undef + Locale::RecodeData::IBM297 undef + Locale::RecodeData::IBM420 undef + Locale::RecodeData::IBM423 undef + Locale::RecodeData::IBM424 undef + Locale::RecodeData::IBM437 undef + Locale::RecodeData::IBM500 undef + Locale::RecodeData::IBM850 undef + Locale::RecodeData::IBM851 undef + Locale::RecodeData::IBM852 undef + Locale::RecodeData::IBM855 undef + Locale::RecodeData::IBM857 undef + Locale::RecodeData::IBM860 undef + Locale::RecodeData::IBM861 undef + Locale::RecodeData::IBM862 undef + Locale::RecodeData::IBM863 undef + Locale::RecodeData::IBM864 undef + Locale::RecodeData::IBM865 undef + Locale::RecodeData::IBM866 undef + Locale::RecodeData::IBM868 undef + Locale::RecodeData::IBM869 undef + Locale::RecodeData::IBM870 undef + Locale::RecodeData::IBM871 undef + Locale::RecodeData::IBM874 undef + Locale::RecodeData::IBM875 undef + Locale::RecodeData::IBM880 undef + Locale::RecodeData::IBM891 undef + Locale::RecodeData::IBM903 undef + Locale::RecodeData::IBM904 undef + Locale::RecodeData::IBM905 undef + Locale::RecodeData::IBM918 undef + Locale::RecodeData::IEC_P27_1 undef + Locale::RecodeData::INIS undef + Locale::RecodeData::INIS_8 undef + Locale::RecodeData::INIS_CYRILLIC undef + Locale::RecodeData::ISO_10367_BOX undef + Locale::RecodeData::ISO_2033_1983 undef + Locale::RecodeData::ISO_5427 undef + Locale::RecodeData::ISO_5427_EXT undef + Locale::RecodeData::ISO_5428 undef + Locale::RecodeData::ISO_8859_1 undef + Locale::RecodeData::ISO_8859_10 undef + Locale::RecodeData::ISO_8859_11 undef + Locale::RecodeData::ISO_8859_13 undef + Locale::RecodeData::ISO_8859_14 undef + Locale::RecodeData::ISO_8859_15 undef + Locale::RecodeData::ISO_8859_16 undef + Locale::RecodeData::ISO_8859_2 undef + Locale::RecodeData::ISO_8859_3 undef + Locale::RecodeData::ISO_8859_4 undef + Locale::RecodeData::ISO_8859_5 undef + Locale::RecodeData::ISO_8859_6 undef + Locale::RecodeData::ISO_8859_7 undef + Locale::RecodeData::ISO_8859_8 undef + Locale::RecodeData::ISO_8859_9 undef + Locale::RecodeData::KOI8_R undef + Locale::RecodeData::KOI8_RU undef + Locale::RecodeData::KOI8_T undef + Locale::RecodeData::KOI8_U undef + Locale::RecodeData::KOI_8 undef + Locale::RecodeData::LATIN_GREEK undef + Locale::RecodeData::LATIN_GREEK_1 undef + Locale::RecodeData::MACARABIC undef + Locale::RecodeData::MACCROATIAN undef + Locale::RecodeData::MACCYRILLIC undef + Locale::RecodeData::MACGREEK undef + Locale::RecodeData::MACHEBREW undef + Locale::RecodeData::MACICELAND undef + Locale::RecodeData::MACINTOSH undef + Locale::RecodeData::MACROMANIA undef + Locale::RecodeData::MACTHAI undef + Locale::RecodeData::MACTURKISH undef + Locale::RecodeData::MACUKRAINE undef + Locale::RecodeData::MAC_IS undef + Locale::RecodeData::MAC_SAMI undef + Locale::RecodeData::MAC_UK undef + Locale::RecodeData::NATS_DANO undef + Locale::RecodeData::NATS_SEFI undef + Locale::RecodeData::NEXTSTEP undef + Locale::RecodeData::SAMI_WS2 undef + Locale::RecodeData::TIS_620 undef + Locale::RecodeData::US_ASCII undef + Locale::RecodeData::UTF_8 undef + Locale::RecodeData::VISCII undef + Locale::RecodeData::_Encode undef + Locale::TextDomain 1.24 + Locale::Util undef + Locale::gettext_dumb undef + Locale::gettext_pp undef + Locale::gettext_xs undef + MyInstall undef + SimpleCal undef + libintl::perl undef + requirements: + ExtUtils::MakeMaker 0 + File::Spec 0 + version 0.77 + libwww-perl-6.13 + pathname: E/ET/ETHER/libwww-perl-6.13.tar.gz provides: - LWP 6.06 + LWP 6.13 LWP::Authen::Basic undef LWP::Authen::Digest undef - LWP::Authen::Ntlm 6.00 - LWP::ConnCache 6.02 + LWP::Authen::Ntlm 6.13 + LWP::ConnCache 6.13 LWP::Debug undef LWP::DebugFile undef LWP::MemberMixin undef - LWP::Protocol 6.06 + LWP::Protocol 6.13 LWP::Protocol::GHTTP undef LWP::Protocol::MyFTP undef LWP::Protocol::cpan undef @@ -9302,11 +8958,10 @@ DISTRIBUTIONS LWP::Protocol::mailto undef LWP::Protocol::nntp undef LWP::Protocol::nogo undef - LWP::RobotUA 6.06 - LWP::Simple 6.00 - LWP::UserAgent 6.06 + LWP::RobotUA 6.13 + LWP::Simple 6.13 + LWP::UserAgent 6.13 requirements: - Data::Dump 0 Digest::MD5 0 Encode 2.12 Encode::Locale 0 @@ -9327,7 +8982,7 @@ DISTRIBUTIONS LWP::MediaTypes 6 MIME::Base64 2.1 Net::FTP 2.58 - Net::HTTP 6.04 + Net::HTTP 6.07 URI 1.10 URI::Escape 0 WWW::RobotRules 6 @@ -9348,37 +9003,40 @@ DISTRIBUTIONS XSLoader 0 strict 0 warnings 0 - namespace-autoclean-0.15 - pathname: E/ET/ETHER/namespace-autoclean-0.15.tar.gz + namespace-autoclean-0.28 + pathname: E/ET/ETHER/namespace-autoclean-0.28.tar.gz provides: - namespace::autoclean 0.15 + namespace::autoclean 0.28 requirements: B::Hooks::EndOfScope 0.12 - Class::MOP 0.80 - ExtUtils::MakeMaker 6.30 + ExtUtils::MakeMaker 0 List::Util 0 - Module::Build::Tiny 0.030 + Sub::Identify 0 namespace::clean 0.20 perl 5.006 strict 0 warnings 0 - namespace-clean-0.25 - pathname: R/RI/RIBASUSHI/namespace-clean-0.25.tar.gz + namespace-clean-0.26 + pathname: R/RI/RIBASUSHI/namespace-clean-0.26.tar.gz provides: - namespace::clean 0.25 + namespace::clean 0.26 requirements: B::Hooks::EndOfScope 0.12 ExtUtils::CBuilder 0.27 + ExtUtils::MakeMaker 0 Package::Stash 0.23 - Test::More 0.88 - strictures-1.005004 - pathname: H/HA/HAARG/strictures-1.005004.tar.gz + perl 5.008001 + strictures-2.000002 + pathname: H/HA/HAARG/strictures-2.000002.tar.gz provides: - strictures 1.005004 + ExtUtils::HasCompiler 0.012 + strictures 2.000002 + strictures::extra undef requirements: bareword::filehandles 0 indirect 0 multidimensional 0 + perl 5.006 version-0.9912 pathname: J/JP/JPEACOCK/version-0.9912.tar.gz provides: From 84829577556c0f68e401502b8d5fa2843688ba26 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Tue, 10 Nov 2015 22:26:38 -0500 Subject: [PATCH 114/329] Update es_client's isa in MetaCPAN::TestServer. --- t/lib/MetaCPAN/TestServer.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/t/lib/MetaCPAN/TestServer.pm b/t/lib/MetaCPAN/TestServer.pm index 7452aef89..0afa031b7 100644 --- a/t/lib/MetaCPAN/TestServer.pm +++ b/t/lib/MetaCPAN/TestServer.pm @@ -17,7 +17,7 @@ use Test::More; has es_client => ( is => 'ro', - isa => 'Search::Elasticsearch::Client::Direct', + isa => 'Search::Elasticsearch::Client::2_0::Direct', lazy => 1, builder => '_build_es_client', ); From aab1b7581febe0a8098c7906a4f7bd62f027d667 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Tue, 10 Nov 2015 22:27:44 -0500 Subject: [PATCH 115/329] Fix rebase error in release/badpod.t --- t/release/badpod.t | 8 -------- 1 file changed, 8 deletions(-) diff --git a/t/release/badpod.t b/t/release/badpod.t index 095b87e03..2f35ced04 100644 --- a/t/release/badpod.t +++ b/t/release/badpod.t @@ -36,15 +36,7 @@ sub test_bad_pod { is $file->sloc, 3, 'sloc'; is $file->slop, 4, 'slop'; -<<<<<<< HEAD - is_deeply @{ $file->pod_lines }, [ [ 5, 7 ], ], 'no pod_lines'; -||||||| parent of 55fb395... chaotic behaviour when testing for pod_lines-debug in all releases - p $file->pod_lines; is_deeply $file->pod_lines, [ [ 5, 7 ], ], 'no pod_lines'; -======= - p $file->{pod_lines}; - is_deeply $file->{pod_lines}, [ [ 5, 7 ], ], 'no pod_lines'; ->>>>>>> 55fb395... chaotic behaviour when testing for pod_lines-debug in all releases is ${ $file->pod }, From 9b8fb0efe5063695a8c53e0211f1fc5b70dae189 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Tue, 10 Nov 2015 22:45:41 -0500 Subject: [PATCH 116/329] Temporarily comment out some stash interactions. --- app.psgi | 1 + lib/MetaCPAN/Server.pm | 5 +++-- lib/MetaCPAN/Server/Controller/Root.pm | 12 +++++++++--- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/app.psgi b/app.psgi index 244646ab4..6dbf8e913 100644 --- a/app.psgi +++ b/app.psgi @@ -3,6 +3,7 @@ use warnings; use FindBin; use lib "$FindBin::RealBin/lib"; +use Catalyst::Middleware::Stash 'stash'; if ( $ENV{PLACK_ENV} eq 'development' ) { diff --git a/lib/MetaCPAN/Server.pm b/lib/MetaCPAN/Server.pm index c79e21d0f..c8852d6cc 100755 --- a/lib/MetaCPAN/Server.pm +++ b/lib/MetaCPAN/Server.pm @@ -13,8 +13,9 @@ use Plack::Middleware::ServerStatus::Lite; extends 'Catalyst'; -has api => ( is => 'ro' ); -has '+stash' => ( clearer => 'clear_stash' ); +has api => ( is => 'ro' ); + +#has '+stash' => ( clearer => 'clear_stash' ); __PACKAGE__->apply_request_class_roles( qw( diff --git a/lib/MetaCPAN/Server/Controller/Root.pm b/lib/MetaCPAN/Server/Controller/Root.pm index ce9ebd225..95985baac 100644 --- a/lib/MetaCPAN/Server/Controller/Root.pm +++ b/lib/MetaCPAN/Server/Controller/Root.pm @@ -25,7 +25,9 @@ sub get : Path('') : Args(1) { sub not_found : Private { my ( $self, $c, @params ) = @_; my $message = join( '/', @params ); - $c->clear_stash; + + # XXX fix me + # $c->clear_stash; $c->stash( { code => 404, message => $message || "Not found" } ); $c->response->status(404); $c->forward( $c->view('JSON') ); @@ -33,7 +35,9 @@ sub not_found : Private { sub not_allowed : Private { my ( $self, $c, $message ) = @_; - $c->clear_stash; + + # XXX fix me + # $c->clear_stash; $c->stash( { message => $message || 'Not allowed' } ); $c->response->status(403); $c->forward( $c->view('JSON') ); @@ -41,7 +45,9 @@ sub not_allowed : Private { sub bad_request : Private { my ( $self, $c, $message, $code ) = @_; - $c->clear_stash; + + # XXX fix me + # $c->clear_stash; $c->stash( { message => $message || 'Bad request' } ); $c->response->status( $code || 400 ); $c->forward( $c->view('JSON') ); From 9e0145d78a5c9d3fcc7b9d8dfe216aaafbee2941 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Tue, 10 Nov 2015 22:55:12 -0500 Subject: [PATCH 117/329] s/JSON::XS/Cpanel::JSON::XS/ --- bin/check_json.pl | 2 +- bin/get_fields.pl | 2 +- cpanfile | 2 +- elasticsearch/cpanratings.pl | 4 ++-- lib/MetaCPAN/Script/Author.pm | 4 ++-- lib/MetaCPAN/Script/Backup.pm | 2 +- lib/MetaCPAN/Script/Mirrors.pm | 2 +- lib/MetaCPAN/Script/Query.pm | 5 +++-- lib/MetaCPAN/Script/Release.pm | 2 +- lib/MetaCPAN/Script/Watcher.pm | 2 +- lib/MetaCPAN/Server/View/JSON.pm | 6 +++--- 11 files changed, 17 insertions(+), 16 deletions(-) diff --git a/bin/check_json.pl b/bin/check_json.pl index 9eee4effa..b8caa68bb 100755 --- a/bin/check_json.pl +++ b/bin/check_json.pl @@ -3,7 +3,7 @@ use 5.010; use Data::Dumper; -use JSON::XS; +use Cpanel::JSON::XS; foreach my $file ( @ARGV ) { say "Processing $file"; diff --git a/bin/get_fields.pl b/bin/get_fields.pl index 34c77ac58..67884ea1b 100644 --- a/bin/get_fields.pl +++ b/bin/get_fields.pl @@ -1,7 +1,7 @@ #!/usr/bin/env perl # PODNAME: get_fields.pl use Data::Dumper; -use JSON::XS; +use Cpanel::JSON::XS; use File::Find::Rule; use File::Basename; use Path::Class; diff --git a/cpanfile b/cpanfile index 109897f95..559fb6720 100644 --- a/cpanfile +++ b/cpanfile @@ -73,7 +73,7 @@ requires 'IO::String'; requires 'IO::Uncompress::Bunzip2'; requires 'IO::Zlib'; requires 'IPC::Run3'; -requires 'JSON::XS', '3.01'; +requires 'Cpanel::JSON::XS', '3.0115'; requires 'JSON', '2.90'; requires 'LWP::Protocol::https'; requires 'LWP::UserAgent'; diff --git a/elasticsearch/cpanratings.pl b/elasticsearch/cpanratings.pl index 03683bc67..0a4da31b1 100644 --- a/elasticsearch/cpanratings.pl +++ b/elasticsearch/cpanratings.pl @@ -31,7 +31,7 @@ use List::Util qw(sum); use WWW::Mechanize::Cached; use HTML::TokeParser::Simple; -use JSON::XS; +use Cpanel::JSON::XS; use Parse::CSV; use Path::Class::File; use feature 'say'; @@ -212,7 +212,7 @@ sub mean { sub dump_json { my $hash_data = shift; - my $coder = JSON::XS->new->ascii->pretty->allow_nonref; + my $coder = Cpanel::JSON::XS->new->ascii->pretty->allow_nonref; my $json = $coder->utf8->encode ($hash_data); #binmode(STDOUT, ":utf8"); return $json; diff --git a/lib/MetaCPAN/Script/Author.pm b/lib/MetaCPAN/Script/Author.pm index c3d8b7eff..57b84e2ee 100644 --- a/lib/MetaCPAN/Script/Author.pm +++ b/lib/MetaCPAN/Script/Author.pm @@ -10,7 +10,7 @@ use DateTime::Format::ISO8601 (); use Email::Valid (); use Encode (); use File::stat (); -use JSON::XS (); +use Cpanel::JSON::XS (); use Log::Contextual qw( :log ); use MetaCPAN::Document::Author; use URI (); @@ -113,7 +113,7 @@ sub author_config { return undef; } my $json = $file->slurp; - my $author = eval { JSON::XS->new->utf8->relaxed->decode($json) }; + my $author = eval { Cpanel::JSON::XS->new->utf8->relaxed->decode($json) }; if ($@) { log_warn {"$file is broken: $@"}; diff --git a/lib/MetaCPAN/Script/Backup.pm b/lib/MetaCPAN/Script/Backup.pm index 4cc1b7556..3b3e89dda 100644 --- a/lib/MetaCPAN/Script/Backup.pm +++ b/lib/MetaCPAN/Script/Backup.pm @@ -7,7 +7,7 @@ use feature qw( state ); use Data::Printer; use DateTime; use IO::Zlib (); -use JSON::XS; +use Cpanel::JSON::XS; use Log::Contextual qw( :log :dlog ); use MetaCPAN::Types qw( Bool Int Str File ); use Moose; diff --git a/lib/MetaCPAN/Script/Mirrors.pm b/lib/MetaCPAN/Script/Mirrors.pm index aeb199dbc..a8954f3c2 100644 --- a/lib/MetaCPAN/Script/Mirrors.pm +++ b/lib/MetaCPAN/Script/Mirrors.pm @@ -24,7 +24,7 @@ sub index_mirrors { my $json = $self->cpan->file( 'indices', 'mirrors.json' )->slurp; my $type = $self->index->type('mirror'); - my $mirrors = JSON::XS::decode_json($json); + my $mirrors = Cpanel::JSON::XS::decode_json($json); foreach my $mirror (@$mirrors) { $mirror->{location} = { lon => $mirror->{longitude}, lat => $mirror->{latitude} }; diff --git a/lib/MetaCPAN/Script/Query.pm b/lib/MetaCPAN/Script/Query.pm index bc355a288..ac30d59b5 100644 --- a/lib/MetaCPAN/Script/Query.pm +++ b/lib/MetaCPAN/Script/Query.pm @@ -4,7 +4,7 @@ use strict; use warnings; use Data::DPath qw(dpath); -use JSON::XS; +use Cpanel::JSON::XS; use Moose; use MooseX::Aliases; use YAML::Syck qw(Dump); @@ -40,7 +40,8 @@ sub run { } ); my @results = dpath($path)->match( decode_json($json) ); - ( my $dump = Dump(@results) ) =~ s/\!\!perl\/scalar:JSON::XS::Boolean //g; + ( my $dump = Dump(@results) ) + =~ s/\!\!perl\/scalar:Cpanel::JSON::XS::Boolean //g; print $dump; } diff --git a/lib/MetaCPAN/Script/Release.pm b/lib/MetaCPAN/Script/Release.pm index c340c1ecb..84d7ff40c 100644 --- a/lib/MetaCPAN/Script/Release.pm +++ b/lib/MetaCPAN/Script/Release.pm @@ -4,7 +4,7 @@ use strict; use warnings; BEGIN { - $ENV{PERL_JSON_BACKEND} = 'JSON::XS'; + $ENV{PERL_JSON_BACKEND} = 'Cpanel::JSON::XS'; } use CPAN::DistnameInfo (); diff --git a/lib/MetaCPAN/Script/Watcher.pm b/lib/MetaCPAN/Script/Watcher.pm index b8a1a96bf..d4c23d2ef 100644 --- a/lib/MetaCPAN/Script/Watcher.pm +++ b/lib/MetaCPAN/Script/Watcher.pm @@ -4,7 +4,7 @@ use strict; use warnings; use CPAN::DistnameInfo; -use JSON::XS; +use Cpanel::JSON::XS; use Log::Contextual qw( :log ); use MetaCPAN::Util; use Moose; diff --git a/lib/MetaCPAN/Server/View/JSON.pm b/lib/MetaCPAN/Server/View/JSON.pm index d5434cc91..5f6010a07 100644 --- a/lib/MetaCPAN/Server/View/JSON.pm +++ b/lib/MetaCPAN/Server/View/JSON.pm @@ -3,7 +3,7 @@ package MetaCPAN::Server::View::JSON; use strict; use warnings; -use JSON::XS; +use Cpanel::JSON::XS; use Moose; extends 'Catalyst::View::JSON'; @@ -14,8 +14,8 @@ sub encode_json($) { my ( $self, $c, $data ) = @_; my $encoder = $c->req->looks_like_browser - ? JSON::XS->new->utf8->pretty - : JSON::XS->new->utf8; + ? Cpanel::JSON::XS->new->utf8->pretty + : Cpanel::JSON::XS->new->utf8; $encoder->encode( exists $data->{rest} ? $data->{rest} : $data ); } From 3e358f6d9edf6755ce40e8870dbb1c45624585f6 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Tue, 10 Nov 2015 23:05:47 -0500 Subject: [PATCH 118/329] Tidy --- t/release/oops-locallib.t | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/t/release/oops-locallib.t b/t/release/oops-locallib.t index 597919a64..fb9f8e826 100644 --- a/t/release/oops-locallib.t +++ b/t/release/oops-locallib.t @@ -47,8 +47,7 @@ test_release( is $file->sloc, 2, 'sloc'; is $file->slop, 2, 'slop'; - is_deeply $file->{pod_lines}, - [ [ 4, 3 ] ], 'pod_lines'; + is_deeply $file->{pod_lines}, [ [ 4, 3 ] ], 'pod_lines'; is $file->abstract, q[should not have been included], 'abstract'; From 590a01fc24106f4bc65e39651303df992f7ad63c Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Tue, 10 Nov 2015 23:26:22 -0500 Subject: [PATCH 119/329] Revert "s/JSON::XS/Cpanel::JSON::XS/" This reverts commit 9e0145d78a5c9d3fcc7b9d8dfe216aaafbee2941. --- bin/check_json.pl | 2 +- bin/get_fields.pl | 2 +- cpanfile | 2 +- elasticsearch/cpanratings.pl | 4 ++-- lib/MetaCPAN/Script/Author.pm | 4 ++-- lib/MetaCPAN/Script/Backup.pm | 2 +- lib/MetaCPAN/Script/Mirrors.pm | 2 +- lib/MetaCPAN/Script/Query.pm | 5 ++--- lib/MetaCPAN/Script/Release.pm | 2 +- lib/MetaCPAN/Script/Watcher.pm | 2 +- lib/MetaCPAN/Server/View/JSON.pm | 6 +++--- 11 files changed, 16 insertions(+), 17 deletions(-) diff --git a/bin/check_json.pl b/bin/check_json.pl index b8caa68bb..9eee4effa 100755 --- a/bin/check_json.pl +++ b/bin/check_json.pl @@ -3,7 +3,7 @@ use 5.010; use Data::Dumper; -use Cpanel::JSON::XS; +use JSON::XS; foreach my $file ( @ARGV ) { say "Processing $file"; diff --git a/bin/get_fields.pl b/bin/get_fields.pl index 67884ea1b..34c77ac58 100644 --- a/bin/get_fields.pl +++ b/bin/get_fields.pl @@ -1,7 +1,7 @@ #!/usr/bin/env perl # PODNAME: get_fields.pl use Data::Dumper; -use Cpanel::JSON::XS; +use JSON::XS; use File::Find::Rule; use File::Basename; use Path::Class; diff --git a/cpanfile b/cpanfile index 559fb6720..109897f95 100644 --- a/cpanfile +++ b/cpanfile @@ -73,7 +73,7 @@ requires 'IO::String'; requires 'IO::Uncompress::Bunzip2'; requires 'IO::Zlib'; requires 'IPC::Run3'; -requires 'Cpanel::JSON::XS', '3.0115'; +requires 'JSON::XS', '3.01'; requires 'JSON', '2.90'; requires 'LWP::Protocol::https'; requires 'LWP::UserAgent'; diff --git a/elasticsearch/cpanratings.pl b/elasticsearch/cpanratings.pl index 0a4da31b1..03683bc67 100644 --- a/elasticsearch/cpanratings.pl +++ b/elasticsearch/cpanratings.pl @@ -31,7 +31,7 @@ use List::Util qw(sum); use WWW::Mechanize::Cached; use HTML::TokeParser::Simple; -use Cpanel::JSON::XS; +use JSON::XS; use Parse::CSV; use Path::Class::File; use feature 'say'; @@ -212,7 +212,7 @@ sub mean { sub dump_json { my $hash_data = shift; - my $coder = Cpanel::JSON::XS->new->ascii->pretty->allow_nonref; + my $coder = JSON::XS->new->ascii->pretty->allow_nonref; my $json = $coder->utf8->encode ($hash_data); #binmode(STDOUT, ":utf8"); return $json; diff --git a/lib/MetaCPAN/Script/Author.pm b/lib/MetaCPAN/Script/Author.pm index 57b84e2ee..c3d8b7eff 100644 --- a/lib/MetaCPAN/Script/Author.pm +++ b/lib/MetaCPAN/Script/Author.pm @@ -10,7 +10,7 @@ use DateTime::Format::ISO8601 (); use Email::Valid (); use Encode (); use File::stat (); -use Cpanel::JSON::XS (); +use JSON::XS (); use Log::Contextual qw( :log ); use MetaCPAN::Document::Author; use URI (); @@ -113,7 +113,7 @@ sub author_config { return undef; } my $json = $file->slurp; - my $author = eval { Cpanel::JSON::XS->new->utf8->relaxed->decode($json) }; + my $author = eval { JSON::XS->new->utf8->relaxed->decode($json) }; if ($@) { log_warn {"$file is broken: $@"}; diff --git a/lib/MetaCPAN/Script/Backup.pm b/lib/MetaCPAN/Script/Backup.pm index 3b3e89dda..4cc1b7556 100644 --- a/lib/MetaCPAN/Script/Backup.pm +++ b/lib/MetaCPAN/Script/Backup.pm @@ -7,7 +7,7 @@ use feature qw( state ); use Data::Printer; use DateTime; use IO::Zlib (); -use Cpanel::JSON::XS; +use JSON::XS; use Log::Contextual qw( :log :dlog ); use MetaCPAN::Types qw( Bool Int Str File ); use Moose; diff --git a/lib/MetaCPAN/Script/Mirrors.pm b/lib/MetaCPAN/Script/Mirrors.pm index a8954f3c2..aeb199dbc 100644 --- a/lib/MetaCPAN/Script/Mirrors.pm +++ b/lib/MetaCPAN/Script/Mirrors.pm @@ -24,7 +24,7 @@ sub index_mirrors { my $json = $self->cpan->file( 'indices', 'mirrors.json' )->slurp; my $type = $self->index->type('mirror'); - my $mirrors = Cpanel::JSON::XS::decode_json($json); + my $mirrors = JSON::XS::decode_json($json); foreach my $mirror (@$mirrors) { $mirror->{location} = { lon => $mirror->{longitude}, lat => $mirror->{latitude} }; diff --git a/lib/MetaCPAN/Script/Query.pm b/lib/MetaCPAN/Script/Query.pm index ac30d59b5..bc355a288 100644 --- a/lib/MetaCPAN/Script/Query.pm +++ b/lib/MetaCPAN/Script/Query.pm @@ -4,7 +4,7 @@ use strict; use warnings; use Data::DPath qw(dpath); -use Cpanel::JSON::XS; +use JSON::XS; use Moose; use MooseX::Aliases; use YAML::Syck qw(Dump); @@ -40,8 +40,7 @@ sub run { } ); my @results = dpath($path)->match( decode_json($json) ); - ( my $dump = Dump(@results) ) - =~ s/\!\!perl\/scalar:Cpanel::JSON::XS::Boolean //g; + ( my $dump = Dump(@results) ) =~ s/\!\!perl\/scalar:JSON::XS::Boolean //g; print $dump; } diff --git a/lib/MetaCPAN/Script/Release.pm b/lib/MetaCPAN/Script/Release.pm index 84d7ff40c..c340c1ecb 100644 --- a/lib/MetaCPAN/Script/Release.pm +++ b/lib/MetaCPAN/Script/Release.pm @@ -4,7 +4,7 @@ use strict; use warnings; BEGIN { - $ENV{PERL_JSON_BACKEND} = 'Cpanel::JSON::XS'; + $ENV{PERL_JSON_BACKEND} = 'JSON::XS'; } use CPAN::DistnameInfo (); diff --git a/lib/MetaCPAN/Script/Watcher.pm b/lib/MetaCPAN/Script/Watcher.pm index d4c23d2ef..b8a1a96bf 100644 --- a/lib/MetaCPAN/Script/Watcher.pm +++ b/lib/MetaCPAN/Script/Watcher.pm @@ -4,7 +4,7 @@ use strict; use warnings; use CPAN::DistnameInfo; -use Cpanel::JSON::XS; +use JSON::XS; use Log::Contextual qw( :log ); use MetaCPAN::Util; use Moose; diff --git a/lib/MetaCPAN/Server/View/JSON.pm b/lib/MetaCPAN/Server/View/JSON.pm index 5f6010a07..d5434cc91 100644 --- a/lib/MetaCPAN/Server/View/JSON.pm +++ b/lib/MetaCPAN/Server/View/JSON.pm @@ -3,7 +3,7 @@ package MetaCPAN::Server::View::JSON; use strict; use warnings; -use Cpanel::JSON::XS; +use JSON::XS; use Moose; extends 'Catalyst::View::JSON'; @@ -14,8 +14,8 @@ sub encode_json($) { my ( $self, $c, $data ) = @_; my $encoder = $c->req->looks_like_browser - ? Cpanel::JSON::XS->new->utf8->pretty - : Cpanel::JSON::XS->new->utf8; + ? JSON::XS->new->utf8->pretty + : JSON::XS->new->utf8; $encoder->encode( exists $data->{rest} ? $data->{rest} : $data ); } From 60ba726739c877b2ebeefe2c7ad463bc1f03b174 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Tue, 10 Nov 2015 23:32:26 -0500 Subject: [PATCH 120/329] s/JSON::XS/Cpanel::JSON::XS/ in View::JSON --- cpanfile | 1 + lib/MetaCPAN/Server/View/JSON.pm | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/cpanfile b/cpanfile index 109897f95..05cabaac5 100644 --- a/cpanfile +++ b/cpanfile @@ -29,6 +29,7 @@ requires 'CatalystX::Component::Traits'; requires 'CatalystX::InjectComponent'; requires 'CatalystX::RoleApplicator'; requires 'Config::JFDI'; +requires 'Cpanel::JSON::XS', '3.0115'; requires 'Cwd'; requires 'Data::Printer', '0.36'; requires 'DBD::SQLite', '>=1.44'; diff --git a/lib/MetaCPAN/Server/View/JSON.pm b/lib/MetaCPAN/Server/View/JSON.pm index d5434cc91..5f6010a07 100644 --- a/lib/MetaCPAN/Server/View/JSON.pm +++ b/lib/MetaCPAN/Server/View/JSON.pm @@ -3,7 +3,7 @@ package MetaCPAN::Server::View::JSON; use strict; use warnings; -use JSON::XS; +use Cpanel::JSON::XS; use Moose; extends 'Catalyst::View::JSON'; @@ -14,8 +14,8 @@ sub encode_json($) { my ( $self, $c, $data ) = @_; my $encoder = $c->req->looks_like_browser - ? JSON::XS->new->utf8->pretty - : JSON::XS->new->utf8; + ? Cpanel::JSON::XS->new->utf8->pretty + : Cpanel::JSON::XS->new->utf8; $encoder->encode( exists $data->{rest} ? $data->{rest} : $data ); } From 720b9c2ae666ee79ec6d47f0bf387714b5d4aa1f Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Wed, 11 Nov 2015 00:05:05 -0500 Subject: [PATCH 121/329] Try to install ES 2.0 on Travis. --- .travis.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.travis.yml b/.travis.yml index d93fd7238..0ebbe60f7 100644 --- a/.travis.yml +++ b/.travis.yml @@ -28,6 +28,11 @@ env: before_install: + # https://www.elastic.co/guide/en/elasticsearch/reference/current/setup-repositories.html + - wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add - + - echo "deb http://packages.elastic.co/elasticsearch/2.x/debian stable main" | sudo tee -a /etc/apt/sources.list.d/elasticsearch-2.x.list + - sudo apt-get update && sudo apt-get install elasticsearch + - sudo service elasticsearch restart - pwd From 709777790a573bf8517801122c3781b6f41babf1 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Wed, 17 Feb 2016 21:46:04 -0500 Subject: [PATCH 122/329] Updates cpanfile.snapshot --- cpanfile.snapshot | 90 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) diff --git a/cpanfile.snapshot b/cpanfile.snapshot index a5976c0c0..cb1d7045d 100644 --- a/cpanfile.snapshot +++ b/cpanfile.snapshot @@ -1167,6 +1167,21 @@ DISTRIBUTIONS strict 0 vars 0 warnings 0 + Code-TidyAll-Plugin-Test-Vars-0.02 + pathname: M/MA/MAXMIND/Code-TidyAll-Plugin-Test-Vars-0.02.tar.gz + provides: + Code::TidyAll::Plugin::Test::Vars 0.02 + requirements: + Code::TidyAll::Plugin 0 + ExtUtils::MakeMaker 0 + Moo 0 + PPI::Document 0 + Path::Class 0 + Test::Vars 0.008 + autodie 0 + perl 5.010 + strict 0 + warnings 0 Compress-Bzip2-2.22 pathname: R/RU/RURBAN/Compress-Bzip2-2.22.tar.gz provides: @@ -2447,6 +2462,62 @@ DISTRIBUTIONS Canary::Stability 0 ExtUtils::MakeMaker 6.52 common::sense 0 + ElasticSearch-0.68 + pathname: D/DR/DRTECH/ElasticSearch-0.68.tar.gz + provides: + ElasticSearch 0.68 + ElasticSearch::Error 0.68 + ElasticSearch::QueryParser 0.68 + ElasticSearch::ScrolledSearch 0.68 + ElasticSearch::TestServer 0.68 + ElasticSearch::Transport 0.68 + ElasticSearch::Transport::HTTP 0.68 + ElasticSearch::Transport::HTTPLite 0.68 + ElasticSearch::Transport::HTTPTiny 0.68 + ElasticSearch::Util 0.68 + requirements: + Any::URI::Escape 0 + Carp 0 + Data::Dumper 0 + ElasticSearch::SearchBuilder 0.18 + Encode 0 + Exporter 0 + ExtUtils::MakeMaker 6.30 + File::Path 0 + File::Spec::Functions 0 + File::Temp 0.22 + HTTP::Lite 0 + HTTP::Request 0 + HTTP::Tiny 0 + IO::Handle 0 + IO::Socket 0 + IO::Uncompress::Inflate 0 + JSON 0 + LWP::ConnCache 0 + LWP::UserAgent 0 + List::Util 0 + POSIX 0 + Scalar::Util 1.07 + Task::Weaken 0 + Test::More 0.96 + URI 0 + YAML 0 + constant 0 + overload 0 + parent 0 + strict 0 + warnings 0 + ElasticSearch-SearchBuilder-0.19 + pathname: D/DR/DRTECH/ElasticSearch-SearchBuilder-0.19.tar.gz + provides: + ElasticSearch::SearchBuilder 0.19 + requirements: + Carp 0 + ExtUtils::MakeMaker 6.30 + Scalar::Util 0 + Test::More 0.96 + strict 0 + warnings 0 ElasticSearchX-Model-0.2.2 pathname: O/OA/OALDERS/ElasticSearchX-Model-0.2.2.tar.gz provides: @@ -3395,6 +3466,13 @@ DISTRIBUTIONS HTTP::Date 0 Module::Build 0.38 perl 5.008001 + HTTP-Lite-2.43 + pathname: N/NE/NEILB/HTTP-Lite-2.43.tar.gz + provides: + HTTP::Lite 2.43 + requirements: + ExtUtils::MakeMaker 6.42 + perl 5.005 HTTP-Message-6.11 pathname: E/ET/ETHER/HTTP-Message-6.11.tar.gz provides: @@ -3854,6 +3932,18 @@ DISTRIBUTIONS Lingua::EN::Inflect 1.899 requirements: Test::More 0 + List-AllUtils-0.09 + pathname: D/DR/DROLSKY/List-AllUtils-0.09.tar.gz + provides: + List::AllUtils 0.09 + requirements: + Exporter 0 + ExtUtils::MakeMaker 0 + List::MoreUtils 0.28 + List::Util 1.31 + base 0 + strict 0 + warnings 0 List-Compare-0.53 pathname: J/JK/JKEENAN/List-Compare-0.53.tar.gz provides: From ff0b211ba6f21d8158d9b924658d36b1491ab423 Mon Sep 17 00:00:00 2001 From: Micha Nasriachi Date: Tue, 15 Mar 2016 10:13:11 +0100 Subject: [PATCH 123/329] cleanup MetaCPAN::Script::Author --- lib/MetaCPAN/Script/Author.pm | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/lib/MetaCPAN/Script/Author.pm b/lib/MetaCPAN/Script/Author.pm index c3d8b7eff..bfd717330 100644 --- a/lib/MetaCPAN/Script/Author.pm +++ b/lib/MetaCPAN/Script/Author.pm @@ -112,21 +112,21 @@ sub author_config { log_debug {"Skipping $pauseid (newer version in index)"}; return undef; } - my $json = $file->slurp; - my $author = eval { JSON::XS->new->utf8->relaxed->decode($json) }; - if ($@) { + my $author; + eval { + $author = JSON::XS->new->utf8->relaxed->decode( $file->slurp ); + 1; + } or do { log_warn {"$file is broken: $@"}; return $fallback; - } - else { - $author - = { map { $_ => $author->{$_} } - qw(name asciiname profile blog perlmongers donation email website city region country location extra) - }; - $author->{updated} = $mtime; - return $author; - } + }; + $author + = { map { $_ => $author->{$_} } + qw(name asciiname profile blog perlmongers donation email website city region country location extra) + }; + $author->{updated} = $mtime; + return $author; } __PACKAGE__->meta->make_immutable; From b93d272366b0b6e9ec3d7dd26746c279cd227c30 Mon Sep 17 00:00:00 2001 From: Micha Nasriachi Date: Tue, 15 Mar 2016 16:41:25 +0100 Subject: [PATCH 124/329] cleanup unused method --- lib/MetaCPAN/Role/Script.pm | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/lib/MetaCPAN/Role/Script.pm b/lib/MetaCPAN/Role/Script.pm index d5488def2..a1dccfe6e 100644 --- a/lib/MetaCPAN/Role/Script.pm +++ b/lib/MetaCPAN/Role/Script.pm @@ -80,17 +80,6 @@ sub _build_model { return MetaCPAN::Model->new( es => $self->es ); } -sub file2mod { - my $self = shift; - my $name = shift; - - $name =~ s{\Alib\/}{}; - $name =~ s{\.(pod|pm)\z}{}; - $name =~ s{\/}{::}gxms; - - return $name; -} - sub _build_cpan { my $self = shift; my @dirs = ( From 18b2e15e087d36a8a5e4c6f33d235313e8778903 Mon Sep 17 00:00:00 2001 From: Micha Nasriachi Date: Tue, 15 Mar 2016 16:41:42 +0100 Subject: [PATCH 125/329] fix warning --- lib/MetaCPAN/Util.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/MetaCPAN/Util.pm b/lib/MetaCPAN/Util.pm index 019e1fccb..1e954be94 100644 --- a/lib/MetaCPAN/Util.pm +++ b/lib/MetaCPAN/Util.pm @@ -28,7 +28,7 @@ sub generate_sid { } sub numify_version { - my $version = shift; + my $version = shift || return 0; $version = fix_version($version); $version =~ s/_//g; if ( $version =~ s/^v//i || $version =~ tr/.// > 1 ) { From 0d65dc7cf7569892226a4ce74de9b8d3955e7c7c Mon Sep 17 00:00:00 2001 From: Micha Nasriachi Date: Thu, 17 Mar 2016 17:21:39 +0100 Subject: [PATCH 126/329] cpanfile: matching versions with 'master' --- cpanfile | 78 ++-- cpanfile.snapshot | 949 ++++++++++++++++++++++------------------------ 2 files changed, 480 insertions(+), 547 deletions(-) diff --git a/cpanfile b/cpanfile index 05cabaac5..fa007b2bc 100644 --- a/cpanfile +++ b/cpanfile @@ -1,17 +1,15 @@ requires 'perl', '5.010'; -requires 'Archive::Any', 0.0941; -requires 'Archive::Any::Plugin'; -requires 'Archive::Tar'; -requires 'BackPAN::Index'; -requires 'CHI'; -requires 'CPAN::DistnameInfo'; -requires 'CPAN::Meta', '2.141170'; # Avoid issues with List::Util dep under carton install. -requires 'CPAN::Meta::Requirements'; +requires 'Archive::Any', 0.0942; +requires 'Archive::Tar', '2.04'; +requires 'BackPAN::Index', '0.42'; +requires 'CHI', '0.60'; +requires 'CPAN::DistnameInfo', '0.12'; +requires 'CPAN::Meta', '2.115005'; # Avoid issues with List::Util dep under carton install. +requires 'CPAN::Meta::Requirements', '2.140'; requires 'Captcha::reCAPTCHA', '0.94'; -requires 'Catalyst', '5.90102'; +requires 'Catalyst', '5.90103'; requires 'Catalyst::Action::RenderView'; -requires 'Catalyst::Authentication::User'; requires 'Catalyst::Controller'; requires 'Catalyst::Controller::REST', '0.94'; requires 'Catalyst::Model'; @@ -24,27 +22,26 @@ requires 'Catalyst::Plugin::Static::Simple'; requires 'Catalyst::Plugin::Unicode::Encoding'; requires 'Catalyst::Utils'; requires 'Catalyst::View'; -requires 'Catalyst::View::JSON'; +requires 'Catalyst::View::JSON', '0.36'; requires 'CatalystX::Component::Traits'; requires 'CatalystX::InjectComponent'; requires 'CatalystX::RoleApplicator'; requires 'Config::JFDI'; requires 'Cpanel::JSON::XS', '3.0115'; requires 'Cwd'; -requires 'Data::Printer', '0.36'; -requires 'DBD::SQLite', '>=1.44'; +requires 'Data::Printer', '0.38'; +requires 'DBD::SQLite', '>=1.50'; requires 'DBI', '1.616'; requires 'Data::DPath'; requires 'Data::Dump'; requires 'Data::Dumper'; -requires 'DateTime'; +requires 'DateTime', '1.24'; requires 'DateTime::Format::ISO8601'; requires 'Devel::ArgNames'; -requires 'Devel::Confess'; requires 'Digest::MD5'; requires 'Digest::SHA1'; requires 'EV'; -requires 'ElasticSearchX::Model', '0.2.1'; +requires 'ElasticSearchX::Model', '0.2.2'; requires 'Email::Address'; requires 'Email::Sender::Simple'; requires 'Email::Simple'; @@ -77,10 +74,11 @@ requires 'IPC::Run3'; requires 'JSON::XS', '3.01'; requires 'JSON', '2.90'; requires 'LWP::Protocol::https'; -requires 'LWP::UserAgent'; +requires 'LWP::UserAgent', '6.15'; requires 'LWP::UserAgent::Paranoid'; -requires 'List::MoreUtils'; -requires 'List::Util'; +requires 'List::AllUtils', '0.09'; +requires 'List::MoreUtils', '0.413'; +requires 'List::Util', '1.43'; requires 'Log::Contextual'; requires 'Log::Log4perl'; requires 'Log::Log4perl::Appender::ScreenColoredLevels'; @@ -107,15 +105,18 @@ requires 'MooseX::Types::Structured'; requires 'MooseX::Types::URI'; requires 'Mozilla::CA'; requires 'Net::DNS::Paranoid'; +requires 'Net::Fastly', '1.03'; requires 'Net::OpenID::Consumer'; -requires 'Net::Twitter'; -requires 'Parse::CPAN::Packages::Fast', '0.04'; -requires 'Parse::CSV'; +requires 'Net::Twitter', '4.01010'; +requires 'PAUSE::Permissions'; +requires 'Parse::CPAN::Packages::Fast', '0.09'; +requires 'Parse::CSV', '2.04'; requires 'Parse::PMFile', '0.29'; -requires 'Path::Class'; +requires 'Path::Class', '0.36'; requires 'Path::Class::File'; -requires 'PerlIO::gzip', '0.19'; -requires 'Pithub'; +requires 'PerlIO::gzip'; +requires 'Pithub', '0.01033'; +requires 'Plack', '1.0039'; requires 'Plack::App::Directory'; requires 'Plack::Handler::Twiggy'; requires 'Plack::MIME'; @@ -128,7 +129,7 @@ requires 'Plack::Session::Store'; requires 'Plack::Test'; requires 'Plack::Util::Accessor'; requires 'Pod::Coverage::Moose', '0.02'; -requires 'Pod::Markdown', '2.000'; +requires 'Pod::Markdown', '3.002'; requires 'Pod::POM'; requires 'Pod::Simple', '3.29'; requires 'Pod::Simple::XHTML', '3.24'; @@ -140,14 +141,14 @@ requires 'Search::Elasticsearch', '2.00'; requires 'Starman'; requires 'Time::Local'; requires 'Throwable::Error'; -requires 'Try::Tiny'; -requires 'URI'; +requires 'Try::Tiny', '0.24'; +requires 'URI', '1.71'; requires 'URI::Escape'; -requires 'WWW::Mechanize'; -requires 'WWW::Mechanize::Cached'; +requires 'WWW::Mechanize', '1.75'; +requires 'WWW::Mechanize::Cached', '1.50'; requires 'XML::Simple'; -requires 'YAML'; -requires 'YAML::Syck'; +requires 'YAML', '1.15'; +requires 'YAML::Syck', '1.29'; requires 'base'; requires 'feature'; requires 'namespace::autoclean'; @@ -159,18 +160,12 @@ requires 'warnings'; test_requires 'App::Prove'; test_requires 'CPAN::Faker', '0.010'; +test_requires 'Devel::Confess'; +test_requires 'Module::Faker', '0.015'; +test_requires 'Module::Faker::Dist', '0.010'; test_requires 'Config::General'; -test_requires 'CPAN::Repository'; test_requires 'File::Copy'; -test_requires 'Git::Helpers'; test_requires 'HTTP::Cookies'; -test_requires 'LWP::ConsoleLogger'; -test_requires 'Module::Faker', '0.015'; -test_requires 'Module::Faker::Dist', '0.010'; -test_requires 'OrePAN2', '0.38'; -test_requires 'Perl::Critic::Nits'; -test_requires 'Plack::Handler::HTTP::Server::Simple'; -test_requires 'Plack::Test::Agent'; test_requires 'Test::Aggregate::Nested', '0.371'; test_requires 'Test::Code::TidyAll'; test_requires 'Test::More', '0.99'; @@ -180,7 +175,6 @@ test_requires 'Test::Perl::Critic'; test_requires 'Test::RequiresInternet'; test_requires 'Test::Routine', '0.012'; test_requires 'Test::Routine::Util', '0'; -test_requires 'Test::Vars'; author_requires 'Code::TidyAll'; author_requires 'Plack::Middleware::Rewrite'; diff --git a/cpanfile.snapshot b/cpanfile.snapshot index cb1d7045d..083d6a450 100644 --- a/cpanfile.snapshot +++ b/cpanfile.snapshot @@ -174,6 +174,23 @@ DISTRIBUTIONS Moose 0 MooseX::Types::Path::Class 0 Test::More 0 + Archive-Tar-2.04 + pathname: B/BI/BINGOS/Archive-Tar-2.04.tar.gz + provides: + Archive::Tar 2.04 + Archive::Tar::Constant 2.04 + Archive::Tar::File 2.04 + requirements: + Compress::Zlib 2.015 + ExtUtils::MakeMaker 0 + File::Spec 0.82 + IO::Compress::Base 2.015 + IO::Compress::Bzip2 2.015 + IO::Compress::Gzip 2.015 + IO::Zlib 1.01 + Test::Harness 2.26 + Test::More 0 + perl 5.00503 Archive-Zip-1.53 pathname: P/PH/PHRED/Archive-Zip-1.53.tar.gz provides: @@ -443,6 +460,18 @@ DISTRIBUTIONS strict 0 version 0.88 warnings 0 + CPAN-Meta-Requirements-2.140 + pathname: D/DA/DAGOLDEN/CPAN-Meta-Requirements-2.140.tar.gz + provides: + CPAN::Meta::Requirements 2.140 + requirements: + B 0 + Carp 0 + ExtUtils::MakeMaker 6.17 + perl 5.006 + strict 0 + version 0.88 + warnings 0 CPAN-Meta-YAML-0.016 pathname: D/DA/DAGOLDEN/CPAN-Meta-YAML-0.016.tar.gz provides: @@ -507,6 +536,7 @@ DISTRIBUTIONS Error 0.15 ExtUtils::MakeMaker 0 File::Spec 0.82 + IPC::ShareLite 0.09 Storable 1.014 Cache-LRU-0.04 pathname: K/KA/KAZUHO/Cache-LRU-0.04.tar.gz @@ -608,30 +638,11 @@ DISTRIBUTIONS Catalyst::Action::Serialize::YAML 1.20 Catalyst::Action::Serialize::YAML::HTML 1.20 Catalyst::Action::SerializeBase 1.20 - Catalyst::Action::Serializer::Broken undef Catalyst::Controller::REST 1.20 Catalyst::Request::REST 1.20 Catalyst::Request::REST::ForBrowsers 1.20 Catalyst::TraitFor::Request::REST 1.20 Catalyst::TraitFor::Request::REST::ForBrowsers 1.20 - Test::Action::Class undef - Test::Action::Class::Sub undef - Test::Catalyst::Action::REST undef - Test::Catalyst::Action::REST::Controller::Actions undef - Test::Catalyst::Action::REST::Controller::ActionsForBrowsers undef - Test::Catalyst::Action::REST::Controller::Deserialize undef - Test::Catalyst::Action::REST::Controller::DeserializeMultiPart undef - Test::Catalyst::Action::REST::Controller::Override undef - Test::Catalyst::Action::REST::Controller::REST undef - Test::Catalyst::Action::REST::Controller::Root undef - Test::Catalyst::Action::REST::Controller::Serialize undef - Test::Catalyst::Log undef - Test::Rest undef - Test::Serialize undef - Test::Serialize::Controller::JSON undef - Test::Serialize::Controller::REST undef - Test::Serialize::View::Awful undef - Test::Serialize::View::Simple undef requirements: Catalyst::Runtime 5.80030 Class::Inspector 1.13 @@ -750,10 +761,10 @@ DISTRIBUTIONS MooseX::Types 0 Test::More 0 namespace::autoclean 0 - Catalyst-Runtime-5.90102 - pathname: J/JJ/JJNAPIORK/Catalyst-Runtime-5.90102.tar.gz + Catalyst-Runtime-5.90103 + pathname: M/MS/MSTROUT/Catalyst-Runtime-5.90103.tar.gz provides: - Catalyst 5.90102 + Catalyst 5.90103 Catalyst::Action undef Catalyst::ActionChain undef Catalyst::ActionContainer undef @@ -790,7 +801,7 @@ DISTRIBUTIONS Catalyst::Request::Upload undef Catalyst::Response undef Catalyst::Response::Writer undef - Catalyst::Runtime 5.90102 + Catalyst::Runtime 5.90103 Catalyst::Script::CGI undef Catalyst::Script::Create undef Catalyst::Script::FastCGI undef @@ -799,7 +810,7 @@ DISTRIBUTIONS Catalyst::ScriptRole undef Catalyst::ScriptRunner undef Catalyst::Stats undef - Catalyst::Test 3.4 + Catalyst::Test undef Catalyst::Utils undef Catalyst::View undef requirements: @@ -866,14 +877,14 @@ DISTRIBUTIONS Try::Tiny 0.17 URI 1.65 URI::ws 0.03 - namespace::autoclean 0.09 + namespace::autoclean 0.28 namespace::clean 0.23 perl 5.008003 - Catalyst-View-JSON-0.35 - pathname: J/JJ/JJNAPIORK/Catalyst-View-JSON-0.35.tar.gz + Catalyst-View-JSON-0.36 + pathname: J/JJ/JJNAPIORK/Catalyst-View-JSON-0.36.tar.gz provides: Catalyst::Helper::View::JSON undef - Catalyst::View::JSON 0.35 + Catalyst::View::JSON 0.36 requirements: Catalyst 5.6 ExtUtils::MakeMaker 6.59 @@ -900,7 +911,6 @@ DISTRIBUTIONS pathname: R/RO/ROKR/CatalystX-InjectComponent-0.025.tar.gz provides: CatalystX::InjectComponent 0.025 - t::Test::Apple undef requirements: Catalyst::Runtime 5.8 Class::Inspector 0 @@ -1064,6 +1074,7 @@ DISTRIBUTIONS pathname: D/DA/DAGOLDEN/Class-Tiny-1.004.tar.gz provides: Class::Tiny 1.004 + Class::Tiny::Object 1.004 requirements: Carp 0 ExtUtils::MakeMaker 6.17 @@ -1167,21 +1178,6 @@ DISTRIBUTIONS strict 0 vars 0 warnings 0 - Code-TidyAll-Plugin-Test-Vars-0.02 - pathname: M/MA/MAXMIND/Code-TidyAll-Plugin-Test-Vars-0.02.tar.gz - provides: - Code::TidyAll::Plugin::Test::Vars 0.02 - requirements: - Code::TidyAll::Plugin 0 - ExtUtils::MakeMaker 0 - Moo 0 - PPI::Document 0 - Path::Class 0 - Test::Vars 0.008 - autodie 0 - perl 5.010 - strict 0 - warnings 0 Compress-Bzip2-2.22 pathname: R/RU/RURBAN/Compress-Bzip2-2.22.tar.gz provides: @@ -1243,8 +1239,6 @@ DISTRIBUTIONS Config::JFDI 0.065 Config::JFDI::Carp undef Config::JFDI::Source::Loader undef - eq 0.065 - t::Test undef requirements: Any::Moose 0 Carp::Clan::Share 0 @@ -1333,20 +1327,20 @@ DISTRIBUTIONS Path::Class 0.26 Try::Tiny 0.19 perl 5.006 - DBD-SQLite-1.48 - pathname: I/IS/ISHIGAKI/DBD-SQLite-1.48.tar.gz + DBD-SQLite-1.50 + pathname: I/IS/ISHIGAKI/DBD-SQLite-1.50.tar.gz provides: - DBD::SQLite 1.48 + DBD::SQLite 1.50 DBD::SQLite::Constants undef - DBD::SQLite::VirtualTable 1.48 - DBD::SQLite::VirtualTable::Cursor 1.48 + DBD::SQLite::VirtualTable 1.50 + DBD::SQLite::VirtualTable::Cursor 1.50 DBD::SQLite::VirtualTable::FileContent undef DBD::SQLite::VirtualTable::FileContent::Cursor undef DBD::SQLite::VirtualTable::PerlData undef DBD::SQLite::VirtualTable::PerlData::Cursor undef requirements: DBI 1.57 - ExtUtils::MakeMaker 6.48 + ExtUtils::MakeMaker 0 File::Spec 0.82 Test::Builder 0.86 Test::More 0.47 @@ -1648,11 +1642,11 @@ DISTRIBUTIONS Class::Accessor::Chained::Fast 0 Test::Exception 0 Test::More 0 - Data-Printer-0.36 - pathname: G/GA/GARU/Data-Printer-0.36.tar.gz + Data-Printer-0.38 + pathname: G/GA/GARU/Data-Printer-0.38.tar.gz provides: DDP undef - Data::Printer 0.36 + Data::Printer 0.38 Data::Printer::Filter undef Data::Printer::Filter::DB undef Data::Printer::Filter::DateTime undef @@ -1682,23 +1676,7 @@ DISTRIBUTIONS Data-Section-0.200006 pathname: R/RJ/RJBS/Data-Section-0.200006.tar.gz provides: - Child undef Data::Section 0.200006 - End undef - Godfather undef - Grandchild undef - Header undef - I::Child undef - I::Grandchild undef - I::Parent undef - Latin1 undef - NoData undef - NoName undef - Parent undef - Relaxed undef - Unicode_nopragma undef - Unicode_pragma undef - WindowsNewlines undef requirements: Encode 0 ExtUtils::MakeMaker 6.30 @@ -1725,16 +1703,18 @@ DISTRIBUTIONS Task::Weaken 0 Tie::ToObject 0.01 namespace::clean 0.19 - DateTime-1.21 - pathname: D/DR/DROLSKY/DateTime-1.21.tar.gz - provides: - DateTime 1.21 - DateTime::Duration 1.21 - DateTime::Helpers 1.21 - DateTime::Infinite 1.21 - DateTime::LeapSecond 1.21 - DateTime::PP 1.21 - DateTime::PPExtra 1.21 + DateTime-1.25 + pathname: D/DR/DROLSKY/DateTime-1.25.tar.gz + provides: + DateTime 1.25 + DateTime::Duration 1.25 + DateTime::Helpers 1.25 + DateTime::Infinite 1.25 + DateTime::Infinite::Future 1.25 + DateTime::Infinite::Past 1.25 + DateTime::LeapSecond 1.25 + DateTime::PP 1.25 + DateTime::PPExtra 1.25 requirements: Carp 0 DateTime::Locale 0.41 @@ -1812,9 +1792,13 @@ DISTRIBUTIONS DateTime-Format-RFC3339-v1.2.0 pathname: I/IK/IKEGAMI/DateTime-Format-RFC3339-v1.2.0.tar.gz provides: - DateTime::Format::RFC3339 undef + DateTime::Format::RFC3339 1.002000 requirements: - ExtUtils::MakeMaker 6.52 + DateTime 0 + ExtUtils::MakeMaker 0 + strict 0 + version 0 + warnings 0 DateTime-Format-Strptime-1.60 pathname: D/DR/DROLSKY/DateTime-Format-Strptime-1.60.tar.gz provides: @@ -2462,88 +2446,32 @@ DISTRIBUTIONS Canary::Stability 0 ExtUtils::MakeMaker 6.52 common::sense 0 - ElasticSearch-0.68 - pathname: D/DR/DRTECH/ElasticSearch-0.68.tar.gz - provides: - ElasticSearch 0.68 - ElasticSearch::Error 0.68 - ElasticSearch::QueryParser 0.68 - ElasticSearch::ScrolledSearch 0.68 - ElasticSearch::TestServer 0.68 - ElasticSearch::Transport 0.68 - ElasticSearch::Transport::HTTP 0.68 - ElasticSearch::Transport::HTTPLite 0.68 - ElasticSearch::Transport::HTTPTiny 0.68 - ElasticSearch::Util 0.68 - requirements: - Any::URI::Escape 0 - Carp 0 - Data::Dumper 0 - ElasticSearch::SearchBuilder 0.18 - Encode 0 - Exporter 0 - ExtUtils::MakeMaker 6.30 - File::Path 0 - File::Spec::Functions 0 - File::Temp 0.22 - HTTP::Lite 0 - HTTP::Request 0 - HTTP::Tiny 0 - IO::Handle 0 - IO::Socket 0 - IO::Uncompress::Inflate 0 - JSON 0 - LWP::ConnCache 0 - LWP::UserAgent 0 - List::Util 0 - POSIX 0 - Scalar::Util 1.07 - Task::Weaken 0 - Test::More 0.96 - URI 0 - YAML 0 - constant 0 - overload 0 - parent 0 - strict 0 - warnings 0 - ElasticSearch-SearchBuilder-0.19 - pathname: D/DR/DRTECH/ElasticSearch-SearchBuilder-0.19.tar.gz - provides: - ElasticSearch::SearchBuilder 0.19 - requirements: - Carp 0 - ExtUtils::MakeMaker 6.30 - Scalar::Util 0 - Test::More 0.96 - strict 0 - warnings 0 ElasticSearchX-Model-0.2.2 pathname: O/OA/OALDERS/ElasticSearchX-Model-0.2.2.tar.gz provides: - ElasticSearchX::Model 0.002002 - ElasticSearchX::Model::Bulk 0.002002 - ElasticSearchX::Model::Document 0.002002 - ElasticSearchX::Model::Document::EmbeddedRole 0.002002 - ElasticSearchX::Model::Document::Mapping 0.002002 - ElasticSearchX::Model::Document::Role 0.002002 - ElasticSearchX::Model::Document::Set 0.002002 - ElasticSearchX::Model::Document::Trait::Attribute 0.002002 - ElasticSearchX::Model::Document::Trait::Class 0.002002 - ElasticSearchX::Model::Document::Trait::Class::ID 0.002002 - ElasticSearchX::Model::Document::Trait::Class::Timestamp 0.002002 - ElasticSearchX::Model::Document::Trait::Class::Version 0.002002 - ElasticSearchX::Model::Document::Trait::Field::ID 0.002002 - ElasticSearchX::Model::Document::Trait::Field::TTL 0.002002 - ElasticSearchX::Model::Document::Trait::Field::Timestamp 0.002002 - ElasticSearchX::Model::Document::Trait::Field::Version 0.002002 - ElasticSearchX::Model::Document::Types 0.002002 - ElasticSearchX::Model::Index 0.002002 - ElasticSearchX::Model::Role 0.002002 - ElasticSearchX::Model::Scroll 0.002002 - ElasticSearchX::Model::Trait::Class 0.002002 - ElasticSearchX::Model::Tutorial 0.002002 - ElasticSearchX::Model::Util 0.002002 + ElasticSearchX::Model v0.2.2 + ElasticSearchX::Model::Bulk v0.2.2 + ElasticSearchX::Model::Document v0.2.2 + ElasticSearchX::Model::Document::EmbeddedRole v0.2.2 + ElasticSearchX::Model::Document::Mapping v0.2.2 + ElasticSearchX::Model::Document::Role v0.2.2 + ElasticSearchX::Model::Document::Set v0.2.2 + ElasticSearchX::Model::Document::Trait::Attribute v0.2.2 + ElasticSearchX::Model::Document::Trait::Class v0.2.2 + ElasticSearchX::Model::Document::Trait::Class::ID v0.2.2 + ElasticSearchX::Model::Document::Trait::Class::Timestamp v0.2.2 + ElasticSearchX::Model::Document::Trait::Class::Version v0.2.2 + ElasticSearchX::Model::Document::Trait::Field::ID v0.2.2 + ElasticSearchX::Model::Document::Trait::Field::TTL v0.2.2 + ElasticSearchX::Model::Document::Trait::Field::Timestamp v0.2.2 + ElasticSearchX::Model::Document::Trait::Field::Version v0.2.2 + ElasticSearchX::Model::Document::Types v0.2.2 + ElasticSearchX::Model::Index v0.2.2 + ElasticSearchX::Model::Role v0.2.2 + ElasticSearchX::Model::Scroll v0.2.2 + ElasticSearchX::Model::Trait::Class v0.2.2 + ElasticSearchX::Model::Tutorial v0.2.2 + ElasticSearchX::Model::Util v0.2.2 requirements: Carp 0 Class::Load 0 @@ -2575,7 +2503,6 @@ DISTRIBUTIONS Email::Abstract::MailInternet 3.008 Email::Abstract::MailMessage 3.008 Email::Abstract::Plugin 3.008 - Test::EmailAbstract undef requirements: Carp 0 Email::Simple 1.998 @@ -2632,9 +2559,6 @@ DISTRIBUTIONS Email::Sender::Transport::Test 1.300021 Email::Sender::Transport::Wrapper 1.300021 Email::Sender::Util 1.300021 - Test::Email::SMTPRig undef - Test::Email::Sender::Transport::FailEvery undef - Test::Email::Sender::Util undef requirements: Carp 0 Email::Abstract 3.006 @@ -2687,6 +2611,15 @@ DISTRIBUTIONS Scalar::Util 0 Test::More 0 perl 5.006 + Encode-HanExtra-0.23 + pathname: A/AU/AUDREYT/Encode-HanExtra-0.23.tar.gz + provides: + Encode::HanExtra 0.23 + Encode::TW::Unisys::SOSI1 1.01 + Encode::TW::Unisys::SOSI2 1.01 + requirements: + Encode 1.41 + ExtUtils::MakeMaker 0 Encode-Locale-1.05 pathname: G/GA/GAAS/Encode-Locale-1.05.tar.gz provides: @@ -2707,6 +2640,9 @@ DISTRIBUTIONS pathname: S/SH/SHLOMIF/Error-0.17024.tar.gz provides: Error 0.17024 + Error::Simple 0.17024 + Error::WarnDie undef + Error::subs undef requirements: Module::Build 0.280801 Scalar::Util 0 @@ -2925,10 +2861,12 @@ DISTRIBUTIONS File-Find-Object-v0.2.13 pathname: S/SH/SHLOMIF/File-Find-Object-v0.2.13.tar.gz provides: - File::Find::Object 0.002013 - File::Find::Object::Base 0.002013 - File::Find::Object::PathComp 0.002013 - File::Find::Object::Result 0.002013 + File::Find::Object v0.2.13 + File::Find::Object::Base v0.2.13 + File::Find::Object::DeepPath v0.2.13 + File::Find::Object::PathComp v0.2.13 + File::Find::Object::Result v0.2.13 + File::Find::Object::TopPath v0.2.13 requirements: Carp 0 Class::XSAccessor 0 @@ -3072,6 +3010,7 @@ DISTRIBUTIONS ExtUtils::MakeMaker 0 Fcntl 0 POSIX 0 + perl 5.004 File-Slurp-Tiny-0.004 pathname: L/LE/LEONT/File-Slurp-Tiny-0.004.tar.gz provides: @@ -3397,7 +3336,6 @@ DISTRIBUTIONS HTTP::Body::UrlEncoded 1.22 HTTP::Body::XForms 1.22 HTTP::Body::XFormsMultipart 1.22 - PAML undef requirements: Carp 0 Digest::MD5 0 @@ -3466,13 +3404,6 @@ DISTRIBUTIONS HTTP::Date 0 Module::Build 0.38 perl 5.008001 - HTTP-Lite-2.43 - pathname: N/NE/NEILB/HTTP-Lite-2.43.tar.gz - provides: - HTTP::Lite 2.43 - requirements: - ExtUtils::MakeMaker 6.42 - perl 5.005 HTTP-Message-6.11 pathname: E/ET/ETHER/HTTP-Message-6.11.tar.gz provides: @@ -3613,6 +3544,7 @@ DISTRIBUTIONS pathname: E/ET/ETHER/Hook-LexWrap-0.25.tar.gz provides: Hook::LexWrap 0.25 + Hook::LexWrap::Cleanup 0.25 requirements: Carp 0 ExtUtils::MakeMaker 0 @@ -3683,7 +3615,7 @@ DISTRIBUTIONS IO-Interactive-0.0.6 pathname: B/BD/BDFOY/IO-Interactive-0.0.6.tar.gz provides: - IO::Interactive 0.000006 + IO::Interactive v0.0.6 requirements: ExtUtils::MakeMaker 0 Test::More 0 @@ -3710,7 +3642,6 @@ DISTRIBUTIONS IO::Socket::SSL::Utils 2.014 requirements: ExtUtils::MakeMaker 0 - Mozilla::CA 0 Net::SSLeay 1.46 Scalar::Util 0 IO-String-1.08 @@ -3719,6 +3650,15 @@ DISTRIBUTIONS IO::String 1.08 requirements: ExtUtils::MakeMaker 0 + IO-Tty-1.12 + pathname: T/TO/TODDR/IO-Tty-1.12.tar.gz + provides: + IO::Pty 1.12 + IO::Tty 1.12 + IO::Tty::Constant undef + requirements: + ExtUtils::MakeMaker 0 + Test::More 0 IO-stringy-2.111 pathname: D/DS/DSKOLL/IO-stringy-2.111.tar.gz provides: @@ -3747,6 +3687,7 @@ DISTRIBUTIONS IPC::Run::Win32Pump 0.90 requirements: ExtUtils::MakeMaker 0 + IO::Pty 1.08 Test::More 0.47 IPC-Run3-0.048 pathname: R/RJ/RJBS/IPC-Run3-0.048.tar.gz @@ -3756,6 +3697,14 @@ DISTRIBUTIONS ExtUtils::MakeMaker 0 Test::More 0.31 Time::HiRes 0 + IPC-ShareLite-0.17 + pathname: A/AN/ANDYA/IPC-ShareLite-0.17.tar.gz + provides: + IPC::ShareLite undef + requirements: + ExtUtils::MakeMaker 0 + File::Spec 0 + Test::More 0 IPC-System-Simple-1.25 pathname: P/PJ/PJF/IPC-System-Simple-1.25.tar.gz provides: @@ -3803,7 +3752,6 @@ DISTRIBUTIONS JSON::MaybeXS 1.003005 requirements: Carp 0 - Cpanel::JSON::XS 2.3310 ExtUtils::CBuilder 0.27 ExtUtils::MakeMaker 0 File::Spec 0 @@ -4006,9 +3954,6 @@ DISTRIBUTIONS Log-Contextual-0.006005 pathname: F/FR/FREW/Log-Contextual-0.006005.tar.gz provides: - BaseLogger undef - DefaultImportLogger undef - DumbLogger2 undef Log::Contextual 0.006005 Log::Contextual::Easy::Default 0.006005 Log::Contextual::Easy::Package 0.006005 @@ -4019,10 +3964,6 @@ DISTRIBUTIONS Log::Contextual::SimpleLogger 0.006005 Log::Contextual::TeeLogger 0.006005 Log::Contextual::WarnLogger 0.006005 - My::Module undef - My::Module2 undef - TestExporter undef - TestRouter undef requirements: Carp 0 Data::Dumper::Concise 0 @@ -4071,13 +4012,16 @@ DISTRIBUTIONS L4pResurrectable 0.01 Log::Log4perl 1.46 Log::Log4perl::Appender undef + Log::Log4perl::Appender::Buffer undef Log::Log4perl::Appender::DBI undef Log::Log4perl::Appender::File undef + Log::Log4perl::Appender::Limit undef Log::Log4perl::Appender::RRDs undef Log::Log4perl::Appender::Screen undef Log::Log4perl::Appender::ScreenColoredLevels undef Log::Log4perl::Appender::Socket undef Log::Log4perl::Appender::String undef + Log::Log4perl::Appender::Synchronized undef Log::Log4perl::Appender::TestArrayBuffer undef Log::Log4perl::Appender::TestBuffer undef Log::Log4perl::Appender::TestFileCreeper undef @@ -4175,6 +4119,7 @@ DISTRIBUTIONS requirements: CPAN 0 Encode 1.98 + Encode::HanExtra 0.20 ExtUtils::MakeMaker 6.42 Test::More 0 perl 5.005 @@ -4276,7 +4221,6 @@ DISTRIBUTIONS Mixin-Linewise-0.108 pathname: R/RJ/RJBS/Mixin-Linewise-0.108.tar.gz provides: - MLTests undef Mixin::Linewise 0.108 Mixin::Linewise::Readers 0.108 Mixin::Linewise::Writers 0.108 @@ -4572,7 +4516,6 @@ DISTRIBUTIONS pathname: R/RS/RSCHUPP/Module-ScanDeps-1.20.tar.gz provides: Module::ScanDeps 1.20 - Module::ScanDeps::Cache undef requirements: ExtUtils::MakeMaker 6.59 File::Spec 0 @@ -4646,12 +4589,6 @@ DISTRIBUTIONS MooX::Options::Descriptive 4.020 MooX::Options::Descriptive::Usage 4.020 MooX::Options::Role 4.020 - TestNamespaceClean undef - t::Test undef - t::lib::MooXCmdTest undef - t::lib::MooXCmdTest::Cmd::test1 undef - t::lib::MooXCmdTest::Cmd::test1::Cmd::test2 undef - t::lib::MooXCmdTest::Cmd::test3 undef requirements: Carp 0 Data::Record 0 @@ -4718,8 +4655,6 @@ DISTRIBUTIONS Class::MOP 2.1604 Class::MOP::Attribute 2.1604 Class::MOP::Class 2.1604 - Class::MOP::Class::Immutable::Trait undef - Class::MOP::Deprecated undef Class::MOP::Instance 2.1604 Class::MOP::Method 2.1604 Class::MOP::Method::Accessor 2.1604 @@ -4728,18 +4663,40 @@ DISTRIBUTIONS Class::MOP::Method::Inlined 2.1604 Class::MOP::Method::Meta 2.1604 Class::MOP::Method::Wrapped 2.1604 - Class::MOP::MiniTrait undef - Class::MOP::Mixin undef - Class::MOP::Mixin::AttributeCore undef - Class::MOP::Mixin::HasAttributes undef - Class::MOP::Mixin::HasMethods undef - Class::MOP::Mixin::HasOverloads undef Class::MOP::Module 2.1604 Class::MOP::Object 2.1604 Class::MOP::Overload 2.1604 Class::MOP::Package 2.1604 Moose 2.1604 - Moose::Deprecated undef + Moose::Cookbook 2.1604 + Moose::Cookbook::Basics::BankAccount_MethodModifiersAndSubclassing 2.1604 + Moose::Cookbook::Basics::BinaryTree_AttributeFeatures 2.1604 + Moose::Cookbook::Basics::BinaryTree_BuilderAndLazyBuild 2.1604 + Moose::Cookbook::Basics::Company_Subtypes 2.1604 + Moose::Cookbook::Basics::DateTime_ExtendingNonMooseParent 2.1604 + Moose::Cookbook::Basics::Document_AugmentAndInner 2.1604 + Moose::Cookbook::Basics::Genome_OverloadingSubtypesAndCoercion 2.1604 + Moose::Cookbook::Basics::HTTP_SubtypesAndCoercion 2.1604 + Moose::Cookbook::Basics::Immutable 2.1604 + Moose::Cookbook::Basics::Person_BUILDARGSAndBUILD 2.1604 + Moose::Cookbook::Basics::Point_AttributesAndSubclassing 2.1604 + Moose::Cookbook::Extending::Debugging_BaseClassRole 2.1604 + Moose::Cookbook::Extending::ExtensionOverview 2.1604 + Moose::Cookbook::Extending::Mooseish_MooseSugar 2.1604 + Moose::Cookbook::Legacy::Debugging_BaseClassReplacement 2.1604 + Moose::Cookbook::Legacy::Labeled_AttributeMetaclass 2.1604 + Moose::Cookbook::Legacy::Table_ClassMetaclass 2.1604 + Moose::Cookbook::Meta::GlobRef_InstanceMetaclass 2.1604 + Moose::Cookbook::Meta::Labeled_AttributeTrait 2.1604 + Moose::Cookbook::Meta::PrivateOrPublic_MethodMetaclass 2.1604 + Moose::Cookbook::Meta::Table_MetaclassTrait 2.1604 + Moose::Cookbook::Meta::WhyMeta 2.1604 + Moose::Cookbook::Roles::ApplicationToInstance 2.1604 + Moose::Cookbook::Roles::Comparable_CodeReuse 2.1604 + Moose::Cookbook::Roles::Restartable_AdvancedComposition 2.1604 + Moose::Cookbook::Snack::Keywords 2.1604 + Moose::Cookbook::Snack::Types 2.1604 + Moose::Cookbook::Style 2.1604 Moose::Exception 2.1604 Moose::Exception::AccessorMustReadWrite 2.1604 Moose::Exception::AddParameterizableTypeTakesParameterizableType 2.1604 @@ -4970,9 +4927,30 @@ DISTRIBUTIONS Moose::Exception::WrapTakesACodeRefToBless 2.1604 Moose::Exception::WrongTypeConstraintGiven 2.1604 Moose::Exporter 2.1604 + Moose::Intro 2.1604 + Moose::Manual 2.1604 + Moose::Manual::Attributes 2.1604 + Moose::Manual::BestPractices 2.1604 + Moose::Manual::Classes 2.1604 + Moose::Manual::Concepts 2.1604 + Moose::Manual::Construction 2.1604 + Moose::Manual::Contributing 2.1604 + Moose::Manual::Delegation 2.1604 + Moose::Manual::Delta 2.1604 + Moose::Manual::Exceptions 2.1604 + Moose::Manual::Exceptions::Manifest 2.1604 + Moose::Manual::FAQ 2.1604 + Moose::Manual::MOP 2.1604 + Moose::Manual::MethodModifiers 2.1604 + Moose::Manual::MooseX 2.1604 + Moose::Manual::Resources 2.1604 + Moose::Manual::Roles 2.1604 + Moose::Manual::Support 2.1604 + Moose::Manual::Types 2.1604 + Moose::Manual::Unsweetened 2.1604 Moose::Meta::Attribute 2.1604 + Moose::Meta::Attribute::Custom::Moose 2.1604 Moose::Meta::Attribute::Native 2.1604 - Moose::Meta::Attribute::Native::Trait undef Moose::Meta::Attribute::Native::Trait::Array 2.1604 Moose::Meta::Attribute::Native::Trait::Bool 2.1604 Moose::Meta::Attribute::Native::Trait::Code 2.1604 @@ -4981,94 +4959,15 @@ DISTRIBUTIONS Moose::Meta::Attribute::Native::Trait::Number 2.1604 Moose::Meta::Attribute::Native::Trait::String 2.1604 Moose::Meta::Class 2.1604 - Moose::Meta::Class::Immutable::Trait undef Moose::Meta::Instance 2.1604 Moose::Meta::Method 2.1604 Moose::Meta::Method::Accessor 2.1604 - Moose::Meta::Method::Accessor::Native undef - Moose::Meta::Method::Accessor::Native::Array undef - Moose::Meta::Method::Accessor::Native::Array::Writer undef - Moose::Meta::Method::Accessor::Native::Array::accessor undef - Moose::Meta::Method::Accessor::Native::Array::clear undef - Moose::Meta::Method::Accessor::Native::Array::count undef - Moose::Meta::Method::Accessor::Native::Array::delete undef - Moose::Meta::Method::Accessor::Native::Array::elements undef - Moose::Meta::Method::Accessor::Native::Array::first undef - Moose::Meta::Method::Accessor::Native::Array::first_index undef - Moose::Meta::Method::Accessor::Native::Array::get undef - Moose::Meta::Method::Accessor::Native::Array::grep undef - Moose::Meta::Method::Accessor::Native::Array::insert undef - Moose::Meta::Method::Accessor::Native::Array::is_empty undef - Moose::Meta::Method::Accessor::Native::Array::join undef - Moose::Meta::Method::Accessor::Native::Array::map undef - Moose::Meta::Method::Accessor::Native::Array::natatime undef - Moose::Meta::Method::Accessor::Native::Array::pop undef - Moose::Meta::Method::Accessor::Native::Array::push undef - Moose::Meta::Method::Accessor::Native::Array::reduce undef - Moose::Meta::Method::Accessor::Native::Array::set undef - Moose::Meta::Method::Accessor::Native::Array::shallow_clone undef - Moose::Meta::Method::Accessor::Native::Array::shift undef - Moose::Meta::Method::Accessor::Native::Array::shuffle undef - Moose::Meta::Method::Accessor::Native::Array::sort undef - Moose::Meta::Method::Accessor::Native::Array::sort_in_place undef - Moose::Meta::Method::Accessor::Native::Array::splice undef - Moose::Meta::Method::Accessor::Native::Array::uniq undef - Moose::Meta::Method::Accessor::Native::Array::unshift undef - Moose::Meta::Method::Accessor::Native::Bool::not undef - Moose::Meta::Method::Accessor::Native::Bool::set undef - Moose::Meta::Method::Accessor::Native::Bool::toggle undef - Moose::Meta::Method::Accessor::Native::Bool::unset undef - Moose::Meta::Method::Accessor::Native::Code::execute undef - Moose::Meta::Method::Accessor::Native::Code::execute_method undef - Moose::Meta::Method::Accessor::Native::Collection undef - Moose::Meta::Method::Accessor::Native::Counter::Writer undef - Moose::Meta::Method::Accessor::Native::Counter::dec undef - Moose::Meta::Method::Accessor::Native::Counter::inc undef - Moose::Meta::Method::Accessor::Native::Counter::reset undef - Moose::Meta::Method::Accessor::Native::Counter::set undef - Moose::Meta::Method::Accessor::Native::Hash undef - Moose::Meta::Method::Accessor::Native::Hash::Writer undef - Moose::Meta::Method::Accessor::Native::Hash::accessor undef - Moose::Meta::Method::Accessor::Native::Hash::clear undef - Moose::Meta::Method::Accessor::Native::Hash::count undef - Moose::Meta::Method::Accessor::Native::Hash::defined undef - Moose::Meta::Method::Accessor::Native::Hash::delete undef - Moose::Meta::Method::Accessor::Native::Hash::elements undef - Moose::Meta::Method::Accessor::Native::Hash::exists undef - Moose::Meta::Method::Accessor::Native::Hash::get undef - Moose::Meta::Method::Accessor::Native::Hash::is_empty undef - Moose::Meta::Method::Accessor::Native::Hash::keys undef - Moose::Meta::Method::Accessor::Native::Hash::kv undef - Moose::Meta::Method::Accessor::Native::Hash::set undef - Moose::Meta::Method::Accessor::Native::Hash::shallow_clone undef - Moose::Meta::Method::Accessor::Native::Hash::values undef - Moose::Meta::Method::Accessor::Native::Number::abs undef - Moose::Meta::Method::Accessor::Native::Number::add undef - Moose::Meta::Method::Accessor::Native::Number::div undef - Moose::Meta::Method::Accessor::Native::Number::mod undef - Moose::Meta::Method::Accessor::Native::Number::mul undef - Moose::Meta::Method::Accessor::Native::Number::set undef - Moose::Meta::Method::Accessor::Native::Number::sub undef - Moose::Meta::Method::Accessor::Native::Reader undef - Moose::Meta::Method::Accessor::Native::String::append undef - Moose::Meta::Method::Accessor::Native::String::chomp undef - Moose::Meta::Method::Accessor::Native::String::chop undef - Moose::Meta::Method::Accessor::Native::String::clear undef - Moose::Meta::Method::Accessor::Native::String::inc undef - Moose::Meta::Method::Accessor::Native::String::length undef - Moose::Meta::Method::Accessor::Native::String::match undef - Moose::Meta::Method::Accessor::Native::String::prepend undef - Moose::Meta::Method::Accessor::Native::String::replace undef - Moose::Meta::Method::Accessor::Native::String::substr undef - Moose::Meta::Method::Accessor::Native::Writer undef Moose::Meta::Method::Augmented 2.1604 Moose::Meta::Method::Constructor 2.1604 Moose::Meta::Method::Delegation 2.1604 Moose::Meta::Method::Destructor 2.1604 Moose::Meta::Method::Meta 2.1604 Moose::Meta::Method::Overridden 2.1604 - Moose::Meta::Mixin::AttributeCore undef - Moose::Meta::Object::Trait undef Moose::Meta::Role 2.1604 Moose::Meta::Role::Application 2.1604 Moose::Meta::Role::Application::RoleSummation 2.1604 @@ -5093,10 +4992,11 @@ DISTRIBUTIONS Moose::Meta::TypeConstraint::Union 2.1604 Moose::Object 2.1604 Moose::Role 2.1604 + Moose::Spec::Role 2.1604 + Moose::Unsweetened 2.1604 Moose::Util 2.1604 Moose::Util::MetaRole 2.1604 Moose::Util::TypeConstraints 2.1604 - Moose::Util::TypeConstraints::Builtins undef Test::Moose 2.1604 metaclass 2.1604 oose 2.1604 @@ -5129,20 +5029,12 @@ DISTRIBUTIONS Task::Weaken 0 Try::Tiny 0.17 parent 0.223 - perl 5.008003 strict 1.03 warnings 1.03 MooseX-Aliases-0.11 pathname: D/DO/DOY/MooseX-Aliases-0.11.tar.gz provides: MooseX::Aliases 0.11 - MooseX::Aliases::Meta::Trait::Attribute 0.11 - MooseX::Aliases::Meta::Trait::Class 0.11 - MooseX::Aliases::Meta::Trait::Method 0.11 - MooseX::Aliases::Meta::Trait::Role 0.11 - MooseX::Aliases::Meta::Trait::Role::ApplicationToClass 0.11 - MooseX::Aliases::Meta::Trait::Role::ApplicationToRole 0.11 - MooseX::Aliases::Meta::Trait::Role::Composite 0.11 requirements: ExtUtils::MakeMaker 6.30 Moose 2.0000 @@ -5153,13 +5045,15 @@ DISTRIBUTIONS MooseX-Attribute-Chained-1.0.1 pathname: P/PE/PERLER/MooseX-Attribute-Chained-1.0.1.tar.gz provides: - Moose::Meta::Attribute::Custom::Trait::Chained 1.000001 - MooseX::Attribute::Chained 1.000001 - MooseX::Attribute::ChainedClone 1.000001 - MooseX::ChainedAccessors 1.000001 - MooseX::ChainedAccessors::Accessor 1.000001 - MooseX::Traits::Attribute::Chained 1.000001 - MooseX::Traits::Attribute::ChainedClone 1.000001 + Moose::Meta::Attribute::Custom::Trait::Chained v1.0.1 + MooseX::Attribute::Chained v1.0.1 + MooseX::Attribute::Chained::Method::Accessor v1.0.1 + MooseX::Attribute::ChainedClone v1.0.1 + MooseX::Attribute::ChainedClone::Method::Accessor v1.0.1 + MooseX::ChainedAccessors v1.0.1 + MooseX::ChainedAccessors::Accessor v1.0.1 + MooseX::Traits::Attribute::Chained v1.0.1 + MooseX::Traits::Attribute::ChainedClone v1.0.1 requirements: Module::Build 0.3601 Moose 0 @@ -5168,20 +5062,20 @@ DISTRIBUTIONS MooseX-Attribute-Deflator-2.2.2 pathname: P/PE/PERLER/MooseX-Attribute-Deflator-2.2.2.tar.gz provides: - MooseX::Attribute::Deflator 2.002002 - MooseX::Attribute::Deflator::Meta::Role::Attribute 2.002002 - MooseX::Attribute::Deflator::Moose 2.002002 - MooseX::Attribute::Deflator::Registry 2.002002 - MooseX::Attribute::Deflator::Structured 2.002002 - MooseX::Attribute::LazyInflator 2.002002 - MooseX::Attribute::LazyInflator::Meta::Role::ApplicationToClass 2.002002 - MooseX::Attribute::LazyInflator::Meta::Role::ApplicationToRole 2.002002 - MooseX::Attribute::LazyInflator::Meta::Role::Attribute 2.002002 - MooseX::Attribute::LazyInflator::Meta::Role::Composite 2.002002 - MooseX::Attribute::LazyInflator::Meta::Role::Method::Accessor 2.002002 - MooseX::Attribute::LazyInflator::Meta::Role::Method::Constructor 2.002002 - MooseX::Attribute::LazyInflator::Meta::Role::Role 2.002002 - MooseX::Attribute::LazyInflator::Role::Class 2.002002 + MooseX::Attribute::Deflator v2.2.2 + MooseX::Attribute::Deflator::Meta::Role::Attribute v2.2.2 + MooseX::Attribute::Deflator::Moose v2.2.2 + MooseX::Attribute::Deflator::Registry v2.2.2 + MooseX::Attribute::Deflator::Structured v2.2.2 + MooseX::Attribute::LazyInflator v2.2.2 + MooseX::Attribute::LazyInflator::Meta::Role::ApplicationToClass v2.2.2 + MooseX::Attribute::LazyInflator::Meta::Role::ApplicationToRole v2.2.2 + MooseX::Attribute::LazyInflator::Meta::Role::Attribute v2.2.2 + MooseX::Attribute::LazyInflator::Meta::Role::Composite v2.2.2 + MooseX::Attribute::LazyInflator::Meta::Role::Method::Accessor v2.2.2 + MooseX::Attribute::LazyInflator::Meta::Role::Method::Constructor v2.2.2 + MooseX::Attribute::LazyInflator::Meta::Role::Role v2.2.2 + MooseX::Attribute::LazyInflator::Role::Class v2.2.2 requirements: DateTime 0 Devel::PartialDump 0 @@ -5199,9 +5093,6 @@ DISTRIBUTIONS MooseX-ClassAttribute-0.27 pathname: D/DR/DROLSKY/MooseX-ClassAttribute-0.27.tar.gz provides: - Child undef - Delegatee undef - HasClassAttribute undef MooseX::ClassAttribute 0.27 MooseX::ClassAttribute::Meta::Role::Attribute 0.27 MooseX::ClassAttribute::Trait::Application 0.27 @@ -5212,7 +5103,6 @@ DISTRIBUTIONS MooseX::ClassAttribute::Trait::Mixin::HasClassAttributes 0.27 MooseX::ClassAttribute::Trait::Role 0.27 MooseX::ClassAttribute::Trait::Role::Composite 0.27 - SharedTests undef requirements: ExtUtils::MakeMaker 6.30 List::MoreUtils 0 @@ -5437,7 +5327,7 @@ DISTRIBUTIONS MooseX-Types-ElasticSearch-0.0.4 pathname: P/PE/PERLER/MooseX-Types-ElasticSearch-0.0.4.tar.gz provides: - MooseX::Types::ElasticSearch 0.000004 + MooseX::Types::ElasticSearch v0.0.4 requirements: DateTime::Format::Epoch::Unix 0 DateTime::Format::ISO8601 0 @@ -5529,7 +5419,7 @@ DISTRIBUTIONS Mouse-v2.4.5 pathname: S/SY/SYOHEX/Mouse-v2.4.5.tar.gz provides: - Mouse 2.004005 + Mouse v2.4.5 Mouse::Exporter undef Mouse::Meta::Attribute undef Mouse::Meta::Class undef @@ -5541,15 +5431,17 @@ DISTRIBUTIONS Mouse::Meta::Module undef Mouse::Meta::Role undef Mouse::Meta::Role::Application undef + Mouse::Meta::Role::Application::RoleSummation undef Mouse::Meta::Role::Composite undef Mouse::Meta::Role::Method undef Mouse::Meta::TypeConstraint undef Mouse::Object undef Mouse::PurePerl undef - Mouse::Role 2.004005 - Mouse::Spec 2.004005 + Mouse::Role v2.4.5 + Mouse::Spec v2.4.5 + Mouse::Tiny v2.4.5 Mouse::TypeRegistry undef - Mouse::Util 2.004005 + Mouse::Util v2.4.5 Mouse::Util::MetaRole undef Mouse::Util::TypeConstraints undef Squirrel undef @@ -5678,6 +5570,7 @@ DISTRIBUTIONS IO::Socket::INET 1.25 IO::Socket::IP 0.29 MIME::Base64 2.11 + Net::LibIDN 0.12 Test::More 0.52 Time::Local 1.19 perl 5.00404 @@ -5692,6 +5585,45 @@ DISTRIBUTIONS Test::More 0.98 parent 0 perl 5.008008 + Net-Fastly-1.03 + pathname: F/FA/FASTLY/Net-Fastly-1.03.tar.gz + provides: + Net::Fastly 1.03 + Net::Fastly::Backend undef + Net::Fastly::BelongsToServiceAndVersion undef + Net::Fastly::Client undef + Net::Fastly::Client::UserAgent undef + Net::Fastly::Condition undef + Net::Fastly::Customer undef + Net::Fastly::Director undef + Net::Fastly::Domain undef + Net::Fastly::Healthcheck undef + Net::Fastly::Invoice undef + Net::Fastly::Match undef + Net::Fastly::Model undef + Net::Fastly::Origin undef + Net::Fastly::Service undef + Net::Fastly::Settings undef + Net::Fastly::Stats undef + Net::Fastly::Syslog undef + Net::Fastly::UA undef + Net::Fastly::User undef + Net::Fastly::VCL undef + Net::Fastly::Version undef + requirements: + Class::Accessor::Fast 0 + File::Basename 0 + File::Spec 0 + File::Temp 0 + IO::Socket::SSL != 1.38 + JSON::XS 0 + LWP::Protocol::https 0 + LWP::UserAgent 5.813 + Module::Build 0.38 + Test::More 0 + URI 0 + URI::Escape 0 + YAML 0 Net-HTTP-6.09 pathname: E/ET/ETHER/Net-HTTP-6.09.tar.gz provides: @@ -5707,6 +5639,12 @@ DISTRIBUTIONS IO::Uncompress::Gunzip 0 URI 0 perl 5.006002 + Net-LibIDN-0.12 + pathname: T/TH/THOR/Net-LibIDN-0.12.tar.gz + provides: + Net::LibIDN 0.12 + requirements: + ExtUtils::MakeMaker 0 Net-OAuth-0.28 pathname: K/KG/KGRENNAN/Net-OAuth-0.28.tar.gz provides: @@ -5777,7 +5715,6 @@ DISTRIBUTIONS Net-OpenID-Consumer-1.16 pathname: W/WR/WROG/Net-OpenID-Consumer-1.16.tar.gz provides: - FakeFetch undef Net::OpenID::Association 1.16 Net::OpenID::ClaimedIdentity 1.16 Net::OpenID::Consumer 1.16 @@ -5979,6 +5916,30 @@ DISTRIBUTIONS Ouch 0.0409 requirements: Test::More 0 + PAUSE-Permissions-0.16 + pathname: N/NE/NEILB/PAUSE-Permissions-0.16.tar.gz + provides: + PAUSE::Permissions 0.16 + PAUSE::Permissions::Entry 0.16 + PAUSE::Permissions::EntryIterator 0.16 + PAUSE::Permissions::Module 0.16 + PAUSE::Permissions::ModuleIterator 0.16 + requirements: + Carp 0 + ExtUtils::MakeMaker 0 + File::HomeDir 0 + File::Spec::Functions 0 + HTTP::Date 0 + HTTP::Tiny 0 + List::Util 1.33 + Moo 0 + MooX::Options 0 + Time::Duration::Parse 0 + autodie 0 + feature 0 + perl 5.010000 + strict 0 + warnings 0 POSIX-strftime-Compiler-0.41 pathname: K/KA/KAZEBURO/POSIX-strftime-Compiler-0.41.tar.gz provides: @@ -6249,7 +6210,6 @@ DISTRIBUTIONS Package-Stash-XS-0.28 pathname: D/DO/DOY/Package-Stash-XS-0.28.tar.gz provides: - CompileTime undef Package::Stash::XS 0.28 requirements: ExtUtils::MakeMaker 6.30 @@ -6371,16 +6331,13 @@ DISTRIBUTIONS provides: Parse::LocalDistribution 0.15 requirements: + ExtUtils::MakeMaker 0 ExtUtils::MakeMaker::CPANfile 0.06 File::Find 0 - File::Path 0 File::Spec 0 - File::Temp 0 List::Util 0 Parse::CPAN::Meta 0 Parse::PMFile 0.35 - Test::More 0.88 - Test::UseAllModules 0.10 Parse-MIME-1.003 pathname: A/AR/ARISTOTLE/Parse-MIME-1.003.tar.gz provides: @@ -6397,20 +6354,19 @@ DISTRIBUTIONS Parse::PMFile 0.36 requirements: Dumpvalue 0 + ExtUtils::MakeMaker 0 ExtUtils::MakeMaker::CPANfile 0.06 File::Spec 0 - File::Temp 0.19 JSON::PP 2.00 Safe 0 - Test::More 0.88 version 0.83 - Path-Class-0.35 - pathname: K/KW/KWILLIAMS/Path-Class-0.35.tar.gz + Path-Class-0.36 + pathname: K/KW/KWILLIAMS/Path-Class-0.36.tar.gz provides: - Path::Class 0.35 - Path::Class::Dir 0.35 - Path::Class::Entity 0.35 - Path::Class::File 0.35 + Path::Class 0.36 + Path::Class::Dir 0.36 + Path::Class::Entity 0.36 + Path::Class::File 0.36 requirements: Carp 0 Cwd 0 @@ -6432,8 +6388,8 @@ DISTRIBUTIONS Path-FindDev-0.5.2 pathname: K/KE/KENTNL/Path-FindDev-0.5.2.tar.gz provides: - Path::FindDev 0.005002 - Path::FindDev::Object 0.005002 + Path::FindDev v0.5.2 + Path::FindDev::Object v0.5.2 requirements: Carp 0 Class::Tiny 0.010 @@ -6494,7 +6450,7 @@ DISTRIBUTIONS pathname: D/DA/DAGOLDEN/Path-Tiny-0.072.tar.gz provides: Path::Tiny 0.072 - flock undef + Path::Tiny::Error 0.072 requirements: Carp 0 Cwd 0 @@ -6770,8 +6726,8 @@ DISTRIBUTIONS Perl-Critic-Nits-v1.0.0 pathname: K/KC/KCOWGILL/Perl-Critic-Nits-v1.0.0.tar.gz provides: - Perl::Critic::Nits undef - Perl::Critic::Policy::ValuesAndExpressions::ProhibitAccessOfPrivateData undef + Perl::Critic::Nits 1.000000 + Perl::Critic::Policy::ValuesAndExpressions::ProhibitAccessOfPrivateData 1.000000 requirements: ExtUtils::MakeMaker 0 Perl::Critic 1.07 @@ -6780,14 +6736,23 @@ DISTRIBUTIONS pathname: S/SH/SHANCOCK/Perl-Tidy-20150815.tar.gz provides: Perl::Tidy 20150815 + Perl::Tidy::Debugger 20150815 Perl::Tidy::DevNull 20150815 Perl::Tidy::Diagnostics 20150815 + Perl::Tidy::FileWriter 20150815 + Perl::Tidy::Formatter 20150815 Perl::Tidy::HtmlWriter 20150815 Perl::Tidy::IOScalar 20150815 Perl::Tidy::IOScalarArray 20150815 + Perl::Tidy::IndentationItem 20150815 + Perl::Tidy::LineBuffer 20150815 Perl::Tidy::LineSink 20150815 Perl::Tidy::LineSource 20150815 Perl::Tidy::Logger 20150815 + Perl::Tidy::Tokenizer 20150815 + Perl::Tidy::VerticalAligner 20150815 + Perl::Tidy::VerticalAligner::Alignment 20150815 + Perl::Tidy::VerticalAligner::Line 20150815 requirements: ExtUtils::MakeMaker 0 PerlIO-gzip-0.19 @@ -6806,69 +6771,68 @@ DISTRIBUTIONS perl 5.008 strict 0 warnings 0 - Pithub-0.01030 - pathname: O/OA/OALDERS/Pithub-0.01030.tar.gz - provides: - Pithub 0.01030 - Pithub::Base 0.01030 - Pithub::Events 0.01030 - Pithub::Gists 0.01030 - Pithub::Gists::Comments 0.01030 - Pithub::GitData 0.01030 - Pithub::GitData::Blobs 0.01030 - Pithub::GitData::Commits 0.01030 - Pithub::GitData::References 0.01030 - Pithub::GitData::Tags 0.01030 - Pithub::GitData::Trees 0.01030 - Pithub::Issues 0.01030 - Pithub::Issues::Assignees 0.01030 - Pithub::Issues::Comments 0.01030 - Pithub::Issues::Events 0.01030 - Pithub::Issues::Labels 0.01030 - Pithub::Issues::Milestones 0.01030 - Pithub::Orgs 0.01030 - Pithub::Orgs::Members 0.01030 - Pithub::Orgs::Teams 0.01030 - Pithub::PullRequests 0.01030 - Pithub::PullRequests::Comments 0.01030 - Pithub::Repos 0.01030 - Pithub::Repos::Collaborators 0.01030 - Pithub::Repos::Commits 0.01030 - Pithub::Repos::Contents 0.01030 - Pithub::Repos::Downloads 0.01030 - Pithub::Repos::Forks 0.01030 - Pithub::Repos::Hooks 0.01030 - Pithub::Repos::Keys 0.01030 - Pithub::Repos::Releases 0.01030 - Pithub::Repos::Releases::Assets 0.01030 - Pithub::Repos::Starring 0.01030 - Pithub::Repos::Stats 0.01030 - Pithub::Repos::Statuses 0.01030 - Pithub::Repos::Watching 0.01030 - Pithub::Result 0.01030 - Pithub::Result::SharedCache 0.01030 - Pithub::Search 0.01030 - Pithub::SearchV3 0.01030 - Pithub::Test undef - Pithub::Users 0.01030 - Pithub::Users::Emails 0.01030 - Pithub::Users::Followers 0.01030 - Pithub::Users::Keys 0.01030 + Pithub-0.01033 + pathname: O/OA/OALDERS/Pithub-0.01033.tar.gz + provides: + Pithub 0.01033 + Pithub::Base 0.01033 + Pithub::Events 0.01033 + Pithub::Gists 0.01033 + Pithub::Gists::Comments 0.01033 + Pithub::GitData 0.01033 + Pithub::GitData::Blobs 0.01033 + Pithub::GitData::Commits 0.01033 + Pithub::GitData::References 0.01033 + Pithub::GitData::Tags 0.01033 + Pithub::GitData::Trees 0.01033 + Pithub::Issues 0.01033 + Pithub::Issues::Assignees 0.01033 + Pithub::Issues::Comments 0.01033 + Pithub::Issues::Events 0.01033 + Pithub::Issues::Labels 0.01033 + Pithub::Issues::Milestones 0.01033 + Pithub::Orgs 0.01033 + Pithub::Orgs::Members 0.01033 + Pithub::Orgs::Teams 0.01033 + Pithub::PullRequests 0.01033 + Pithub::PullRequests::Comments 0.01033 + Pithub::Repos 0.01033 + Pithub::Repos::Collaborators 0.01033 + Pithub::Repos::Commits 0.01033 + Pithub::Repos::Contents 0.01033 + Pithub::Repos::Downloads 0.01033 + Pithub::Repos::Forks 0.01033 + Pithub::Repos::Hooks 0.01033 + Pithub::Repos::Keys 0.01033 + Pithub::Repos::Releases 0.01033 + Pithub::Repos::Releases::Assets 0.01033 + Pithub::Repos::Starring 0.01033 + Pithub::Repos::Stats 0.01033 + Pithub::Repos::Statuses 0.01033 + Pithub::Repos::Watching 0.01033 + Pithub::Result 0.01033 + Pithub::Result::SharedCache 0.01033 + Pithub::Search 0.01033 + Pithub::SearchV3 0.01033 + Pithub::Users 0.01033 + Pithub::Users::Emails 0.01033 + Pithub::Users::Followers 0.01033 + Pithub::Users::Keys 0.01033 requirements: Array::Iterator 0 Cache::LRU 0.04 ExtUtils::MakeMaker 0 HTTP::Message 0 - JSON::MaybeXS 1.002000 + JSON::MaybeXS 1.003003 LWP::Protocol::https 0 LWP::UserAgent 0 Moo 1.001000 - Plack-1.0037 - pathname: M/MI/MIYAGAWA/Plack-1.0037.tar.gz + Plack-1.0039 + pathname: M/MI/MIYAGAWA/Plack-1.0039.tar.gz provides: HTTP::Message::PSGI undef HTTP::Server::PSGI undef - Plack 1.0037 + Plack 1.0039 Plack::App::CGIBin undef Plack::App::Cascade undef Plack::App::Directory undef @@ -6927,9 +6891,9 @@ DISTRIBUTIONS Plack::Middleware::XFramework undef Plack::Middleware::XSendfile undef Plack::Recursive::ForwardRequest undef - Plack::Request 1.0037 + Plack::Request 1.0039 Plack::Request::Upload undef - Plack::Response 1.0037 + Plack::Response 1.0039 Plack::Runner undef Plack::TempBuffer undef Plack::Test undef @@ -7171,9 +7135,6 @@ DISTRIBUTIONS Pod::POM::View::HTML 2.01 Pod::POM::View::Pod 2.01 Pod::POM::View::Text 2.01 - PodPOMTestCase undef - PodPOMTestLib undef - YAML::Tiny 1.36 requirements: Encode 0 Exporter 0 @@ -7263,6 +7224,9 @@ DISTRIBUTIONS pathname: S/SA/SANKO/Readonly-2.00.tar.gz provides: Readonly 2.00 + Readonly::Array undef + Readonly::Hash undef + Readonly::Scalar undef requirements: CPAN::Meta 0 CPAN::Meta::Prereqs 0 @@ -7331,7 +7295,6 @@ DISTRIBUTIONS SQL-Abstract-1.81 pathname: R/RI/RIBASUSHI/SQL-Abstract-1.81.tar.gz provides: - DBIx::Class::Storage::Debug::PrettyPrint undef SQL::Abstract 1.81 SQL::Abstract::Test undef SQL::Abstract::Tree undef @@ -7359,16 +7322,17 @@ DISTRIBUTIONS ExtUtils::MakeMaker 0 Scalar::Util 0 perl 5.006 - Scalar-List-Utils-1.42 - pathname: P/PE/PEVANS/Scalar-List-Utils-1.42.tar.gz + Scalar-List-Utils-1.43 + pathname: P/PE/PEVANS/Scalar-List-Utils-1.43.tar.gz provides: - List::Util 1.42 - List::Util::XS 1.42 - Scalar::Util 1.42 - Sub::Util 1.42 + List::Util 1.43 + List::Util::XS 1.43 + Scalar::Util 1.43 + Sub::Util 1.43 requirements: ExtUtils::MakeMaker 0 Test::More 0 + perl 5.006 Scope-Guard-0.21 pathname: C/CH/CHOCOLATE/Scope-Guard-0.21.tar.gz provides: @@ -7380,7 +7344,6 @@ DISTRIBUTIONS Search-Elasticsearch-2.00 pathname: D/DR/DRTECH/Search-Elasticsearch-2.00.tar.gz provides: - MockCxn undef Search::Elasticsearch 2.00 Search::Elasticsearch::Bulk 2.00 Search::Elasticsearch::Client::0_90::Direct 2.00 @@ -7550,13 +7513,6 @@ DISTRIBUTIONS provides: Sub::Exporter 0.987 Sub::Exporter::Util 0.987 - Test::SubExporter::DashSetup undef - Test::SubExporter::Faux undef - Test::SubExporter::GroupGen undef - Test::SubExporter::GroupGenSubclass undef - Test::SubExporter::ObjGen undef - Test::SubExporter::ObjGen::Obj undef - Test::SubExporter::s_e undef requirements: Carp 0 Data::OptList 0.100 @@ -7569,8 +7525,6 @@ DISTRIBUTIONS pathname: R/RJ/RJBS/Sub-Exporter-ForMethods-0.100052.tar.gz provides: Sub::Exporter::ForMethods 0.100052 - TestDexp undef - TestMexp undef requirements: ExtUtils::MakeMaker 0 Scalar::Util 0 @@ -7696,8 +7650,8 @@ DISTRIBUTIONS Test-Compile-v1.3.0 pathname: E/EG/EGILES/Test-Compile-v1.3.0.tar.gz provides: - Test::Compile 1.003000 - Test::Compile::Internal 1.003000 + Test::Compile v1.3.0 + Test::Compile::Internal v1.3.0 requirements: Module::Build 0.38 UNIVERSAL::require 0 @@ -8001,8 +7955,6 @@ DISTRIBUTIONS Test::Routine::Test 0.020 Test::Routine::Test::Role 0.020 Test::Routine::Util 0.020 - t::lib::NoGood undef - t::lib::NoGood2 undef requirements: Carp 0 Class::Load 0 @@ -8087,11 +8039,11 @@ DISTRIBUTIONS Test-Trap-v0.3.2 pathname: E/EB/EBHANSSEN/Test-Trap-v0.3.2.tar.gz provides: - Test::Trap 0.003002 - Test::Trap::Builder 0.003002 - Test::Trap::Builder::PerlIO 0.003002 - Test::Trap::Builder::SystemSafe 0.003002 - Test::Trap::Builder::TempFile 0.003002 + Test::Trap v0.3.2 + Test::Trap::Builder v0.3.2 + Test::Trap::Builder::PerlIO v0.3.2 + Test::Trap::Builder::SystemSafe v0.3.2 + Test::Trap::Builder::TempFile v0.3.2 requirements: Carp 0 Data::Dump 0 @@ -8109,16 +8061,6 @@ DISTRIBUTIONS strict 0 version 0 warnings 0 - Test-UseAllModules-0.17 - pathname: I/IS/ISHIGAKI/Test-UseAllModules-0.17.tar.gz - provides: - Test::UseAllModules 0.17 - requirements: - Exporter 0 - ExtUtils::MakeMaker 0 - ExtUtils::Manifest 0 - Test::Builder 0.30 - Test::More 0.60 Test-Vars-0.008 pathname: D/DR/DROLSKY/Test-Vars-0.008.tar.gz provides: @@ -8206,6 +8148,7 @@ DISTRIBUTIONS requirements: ExtUtils::MakeMaker 0 Test::More 0 + perl 5.008001 Text-SimpleTable-AutoWidth-0.09 pathname: C/CU/CUB/Text-SimpleTable-AutoWidth-0.09.tar.gz provides: @@ -8360,15 +8303,16 @@ DISTRIBUTIONS base 2.16 strict 0 warnings 0 - Try-Tiny-0.22 - pathname: D/DO/DOY/Try-Tiny-0.22.tar.gz + Try-Tiny-0.24 + pathname: E/ET/ETHER/Try-Tiny-0.24.tar.gz provides: - Try::Tiny 0.22 + Try::Tiny 0.24 requirements: Carp 0 Exporter 5.57 - ExtUtils::MakeMaker 6.30 + ExtUtils::MakeMaker 0 constant 0 + perl 5.006 strict 0 warnings 0 Twiggy-0.1025 @@ -8476,7 +8420,6 @@ DISTRIBUTIONS UNIVERSAL-require-0.18 pathname: N/NE/NEILB/UNIVERSAL-require-0.18.tar.gz provides: - UNIVERSAL 0.18 UNIVERSAL::require 0.18 requirements: Carp 0 @@ -8485,62 +8428,62 @@ DISTRIBUTIONS perl 5.006 strict 0 warnings 0 - URI-1.69 - pathname: E/ET/ETHER/URI-1.69.tar.gz + URI-1.71 + pathname: E/ET/ETHER/URI-1.71.tar.gz provides: - URI 1.69 + URI 1.71 URI::Escape 3.31 URI::Heuristic 4.20 - URI::IRI 1.69 - URI::QueryParam 1.69 - URI::Split 1.69 + URI::IRI 1.71 + URI::QueryParam 1.71 + URI::Split 1.71 URI::URL 5.04 URI::WithBase 2.20 - URI::_foreign 1.69 - URI::_generic 1.69 - URI::_idna 1.69 - URI::_ldap 1.69 - URI::_login 1.69 - URI::_punycode 1.69 - URI::_query 1.69 - URI::_segment 1.69 - URI::_server 1.69 - URI::_userpass 1.69 - URI::data 1.69 + URI::_foreign 1.71 + URI::_generic 1.71 + URI::_idna 1.71 + URI::_ldap 1.71 + URI::_login 1.71 + URI::_punycode 1.71 + URI::_query 1.71 + URI::_segment 1.71 + URI::_server 1.71 + URI::_userpass 1.71 + URI::data 1.71 URI::file 4.21 - URI::file::Base 1.69 - URI::file::FAT 1.69 - URI::file::Mac 1.69 - URI::file::OS2 1.69 - URI::file::QNX 1.69 - URI::file::Unix 1.69 - URI::file::Win32 1.69 - URI::ftp 1.69 - URI::gopher 1.69 - URI::http 1.69 - URI::https 1.69 - URI::ldap 1.69 - URI::ldapi 1.69 - URI::ldaps 1.69 - URI::mailto 1.69 - URI::mms 1.69 - URI::news 1.69 - URI::nntp 1.69 - URI::pop 1.69 - URI::rlogin 1.69 - URI::rsync 1.69 - URI::rtsp 1.69 - URI::rtspu 1.69 - URI::sftp 1.69 - URI::sip 1.69 - URI::sips 1.69 - URI::snews 1.69 - URI::ssh 1.69 - URI::telnet 1.69 - URI::tn3270 1.69 - URI::urn 1.69 + URI::file::Base 1.71 + URI::file::FAT 1.71 + URI::file::Mac 1.71 + URI::file::OS2 1.71 + URI::file::QNX 1.71 + URI::file::Unix 1.71 + URI::file::Win32 1.71 + URI::ftp 1.71 + URI::gopher 1.71 + URI::http 1.71 + URI::https 1.71 + URI::ldap 1.71 + URI::ldapi 1.71 + URI::ldaps 1.71 + URI::mailto 1.71 + URI::mms 1.71 + URI::news 1.71 + URI::nntp 1.71 + URI::pop 1.71 + URI::rlogin 1.71 + URI::rsync 1.71 + URI::rtsp 1.71 + URI::rtspu 1.71 + URI::sftp 1.71 + URI::sip 1.71 + URI::sips 1.71 + URI::snews 1.71 + URI::ssh 1.71 + URI::telnet 1.71 + URI::tn3270 1.71 + URI::urn 1.71 URI::urn::isbn undef - URI::urn::oid 1.69 + URI::urn::oid 1.71 requirements: Exporter 5.57 ExtUtils::MakeMaker 0 @@ -8666,7 +8609,6 @@ DISTRIBUTIONS WWW-Mechanize-Cached-1.50 pathname: O/OA/OALDERS/WWW-Mechanize-Cached-1.50.tar.gz provides: - TestCache undef WWW::Mechanize::Cached 1.50 requirements: Cache::FileCache 0 @@ -8758,7 +8700,6 @@ DISTRIBUTIONS XML-Simple-2.20 pathname: G/GR/GRANTM/XML-Simple-2.20.tar.gz provides: - TagsToUpper undef XML::Simple 2.20 requirements: ExtUtils::MakeMaker 6.31 @@ -8833,7 +8774,6 @@ DISTRIBUTIONS pathname: I/IL/ILMARI/bareword-filehandles-0.003.tar.gz provides: bareword::filehandles 0.003 - inc::BarewordFilehandlesMakeMaker undef requirements: B::Hooks::OP::Check 0 ExtUtils::Depends 0 @@ -9022,18 +8962,18 @@ DISTRIBUTIONS ExtUtils::MakeMaker 0 File::Spec 0 version 0.77 - libwww-perl-6.13 - pathname: E/ET/ETHER/libwww-perl-6.13.tar.gz + libwww-perl-6.15 + pathname: E/ET/ETHER/libwww-perl-6.15.tar.gz provides: - LWP 6.13 + LWP 6.15 LWP::Authen::Basic undef LWP::Authen::Digest undef - LWP::Authen::Ntlm 6.13 - LWP::ConnCache 6.13 + LWP::Authen::Ntlm 6.15 + LWP::ConnCache 6.15 LWP::Debug undef LWP::DebugFile undef LWP::MemberMixin undef - LWP::Protocol 6.13 + LWP::Protocol 6.15 LWP::Protocol::GHTTP undef LWP::Protocol::MyFTP undef LWP::Protocol::cpan undef @@ -9048,15 +8988,17 @@ DISTRIBUTIONS LWP::Protocol::mailto undef LWP::Protocol::nntp undef LWP::Protocol::nogo undef - LWP::RobotUA 6.13 - LWP::Simple 6.13 - LWP::UserAgent 6.13 + LWP::RobotUA 6.15 + LWP::Simple 6.15 + LWP::UserAgent 6.15 requirements: Digest::MD5 0 Encode 2.12 Encode::Locale 0 ExtUtils::MakeMaker 0 + File::Copy 0 File::Listing 6 + Getopt::Long 0 HTML::Entities 0 HTML::HeadParser 0 HTTP::Cookies 6 @@ -9080,8 +9022,6 @@ DISTRIBUTIONS multidimensional-0.011 pathname: I/IL/ILMARI/multidimensional-0.011.tar.gz provides: - MyTest undef - inc::MultidimensionalMakeMaker undef multidimensional 0.011 requirements: B::Hooks::OP::Check 0.19 @@ -9119,7 +9059,6 @@ DISTRIBUTIONS strictures-2.000002 pathname: H/HA/HAARG/strictures-2.000002.tar.gz provides: - ExtUtils::HasCompiler 0.012 strictures 2.000002 strictures::extra undef requirements: From 7cb391c51c3c82cecbdf2f4894218580666fdb14 Mon Sep 17 00:00:00 2001 From: Micha Nasriachi Date: Wed, 30 Mar 2016 11:20:20 +0200 Subject: [PATCH 127/329] ua: allow proxy use if set in env --- lib/MetaCPAN/Script/Ratings.pm | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/MetaCPAN/Script/Ratings.pm b/lib/MetaCPAN/Script/Ratings.pm index 5e5dfcccd..11e59c530 100644 --- a/lib/MetaCPAN/Script/Ratings.pm +++ b/lib/MetaCPAN/Script/Ratings.pm @@ -21,6 +21,10 @@ sub run { my $self = shift; my $ua = LWP::UserAgent->new; + if ( my $proxy = $ENV{http_proxy} || $ENV{HTTP_PROXY} ) { + $ua->proxy(['http'], $proxy); + } + log_info { 'Downloading ' . $self->ratings }; my @path = qw( var tmp ratings.csv ); From d05523b213b94c573aead7e98f86c32dcaf4f5b9 Mon Sep 17 00:00:00 2001 From: Micha Nasriachi Date: Thu, 31 Mar 2016 10:14:49 +0200 Subject: [PATCH 128/329] Adapt PUT info for compatability. Later versions of ElasticSearchX::Model and Search::Elasticsearch have some mismatches (the first adjusted to ES1.X and the later to ES2.X) --- lib/MetaCPAN/Script/Ratings.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/MetaCPAN/Script/Ratings.pm b/lib/MetaCPAN/Script/Ratings.pm index 11e59c530..618089a29 100644 --- a/lib/MetaCPAN/Script/Ratings.pm +++ b/lib/MetaCPAN/Script/Ratings.pm @@ -64,7 +64,7 @@ sub run { { index => $index, type => 'rating', - data => Dlog_trace {$_} $data, + body => Dlog_trace {$_} $data, } ); } From f95d1f6db8c0e065e6234a8b598ef23cd6b99a56 Mon Sep 17 00:00:00 2001 From: Micha Nasriachi Date: Mon, 4 Apr 2016 19:53:37 +0200 Subject: [PATCH 129/329] ES2.3 updates --- lib/MetaCPAN/Document/Favorite.pm | 2 +- lib/MetaCPAN/Model/User/Account.pm | 2 +- lib/MetaCPAN/Model/User/Session.pm | 2 +- lib/MetaCPAN/Script/Author.pm | 2 +- lib/MetaCPAN/Script/Latest.pm | 7 ++++--- lib/MetaCPAN/Server/QuerySanitizer.pm | 12 ++++++++---- 6 files changed, 16 insertions(+), 11 deletions(-) diff --git a/lib/MetaCPAN/Document/Favorite.pm b/lib/MetaCPAN/Document/Favorite.pm index 013692a56..6a8d048f4 100644 --- a/lib/MetaCPAN/Document/Favorite.pm +++ b/lib/MetaCPAN/Document/Favorite.pm @@ -41,7 +41,7 @@ Sets the C<_timestamp> field to the value of L. has timestamp => ( is => 'ro', - timestamp => { path => 'date', store => 1 }, + timestamp => {}, # { path => 'date', store => 1 }, ); __PACKAGE__->meta->make_immutable; diff --git a/lib/MetaCPAN/Model/User/Account.pm b/lib/MetaCPAN/Model/User/Account.pm index 46e9b27db..b42dc4c2d 100644 --- a/lib/MetaCPAN/Model/User/Account.pm +++ b/lib/MetaCPAN/Model/User/Account.pm @@ -110,7 +110,7 @@ Sets the C<_timestamp> field. has timestamp => ( is => 'ro', - timestamp => { store => 1 }, + timestamp => {}, # { store => 1 }, ); =head1 METHODS diff --git a/lib/MetaCPAN/Model/User/Session.pm b/lib/MetaCPAN/Model/User/Session.pm index 968d2d140..0f5be5732 100644 --- a/lib/MetaCPAN/Model/User/Session.pm +++ b/lib/MetaCPAN/Model/User/Session.pm @@ -14,7 +14,7 @@ Sets the C<_timestamp> field. has timestamp => ( is => 'ro', - timestamp => { store => 1 }, + timestamp => {}, # { store => 1 }, ); __PACKAGE__->meta->make_immutable; diff --git a/lib/MetaCPAN/Script/Author.pm b/lib/MetaCPAN/Script/Author.pm index bfd717330..364ae59a0 100644 --- a/lib/MetaCPAN/Script/Author.pm +++ b/lib/MetaCPAN/Script/Author.pm @@ -46,7 +46,7 @@ sub index_authors { log_debug {"Getting last update dates"}; my $dates = $type->inflate(0)->filter( { exists => { field => 'updated' } } ) - ->size(99999)->all; + ->size(10000)->all; $dates = { map { $_->{pauseid} => diff --git a/lib/MetaCPAN/Script/Latest.pm b/lib/MetaCPAN/Script/Latest.pm index f76afdf5f..635fd1325 100644 --- a/lib/MetaCPAN/Script/Latest.pm +++ b/lib/MetaCPAN/Script/Latest.pm @@ -75,7 +75,8 @@ sub run { filter => { bool => { must => \@module_filters } } } }, - { term => { 'file.maturity' => 'released' } }, + # { term => { 'file.maturity' => 'released' } }, + { term => { 'maturity' => 'released' } }, ], must_not => [ { term => { status => 'backpan' } }, @@ -83,12 +84,12 @@ sub run { ] } } - )->source( + )->source( [ 'module.name', 'author', 'release', 'distribution', 'date', 'status', ] - )->size(100)->raw->scroll; + )->size(100)->raw->scroll; my ( %downgrade, %upgrade ); log_debug { 'Found ' . $scroll->total . ' modules' }; diff --git a/lib/MetaCPAN/Server/QuerySanitizer.pm b/lib/MetaCPAN/Server/QuerySanitizer.pm index c3224dc4f..c300b3b03 100644 --- a/lib/MetaCPAN/Server/QuerySanitizer.pm +++ b/lib/MetaCPAN/Server/QuerySanitizer.pm @@ -50,10 +50,13 @@ sub _scan_hash_tree { my $ref = ref($struct); if ( $ref eq 'HASH' ) { while ( my ( $k, $v ) = each %$struct ) { - if ( $k eq $key ) { - MetaCPAN::Server::QuerySanitizer::Error->throw( - message => qq[Parameter "$key" not allowed], ); - } + # Mickey: disabling this check for 'script' key since + # for ES 1.7 I need to use it in the + # function_score syntax + # if ( $k eq $key ) { + # MetaCPAN::Server::QuerySanitizer::Error->throw( + # message => qq[Parameter "$key" not allowed], ); + # } _scan_hash_tree($v) if ref $v; } if ( my $mscript = delete $struct->{metacpan_script} ) { @@ -65,6 +68,7 @@ sub _scan_hash_tree { _scan_hash_tree($item) if ref($item); } } + # Mickey: what about $ref eq 'JSON::PP::Boolean' ? } __PACKAGE__->meta->make_immutable; From 2eb7a77b63df82fbeed856aaad7b59a88e91dfef Mon Sep 17 00:00:00 2001 From: Micha Nasriachi Date: Fri, 8 Apr 2016 10:47:12 +0200 Subject: [PATCH 130/329] `scroll_helper`: wrap `query` in `body` --- lib/MetaCPAN/Script/Backpan.pm | 14 +++++---- lib/MetaCPAN/Script/Pagerank.pm | 46 ++++++++++++++------------- lib/MetaCPAN/Script/Session.pm | 2 +- lib/MetaCPAN/Script/Watcher.pm | 56 ++++++++++++++++++--------------- 4 files changed, 64 insertions(+), 54 deletions(-) diff --git a/lib/MetaCPAN/Script/Backpan.pm b/lib/MetaCPAN/Script/Backpan.pm index 606ef2335..b0e51d119 100644 --- a/lib/MetaCPAN/Script/Backpan.pm +++ b/lib/MetaCPAN/Script/Backpan.pm @@ -45,14 +45,16 @@ sub update_status { index => 'cpan_v1', type => 'release', fields => [ 'author', 'name' ], - query => { - filtered => { - query => { match_all => {} }, - filter => { - or => \@search, + body => { + query => { + filtered => { + query => { match_all => {} }, + filter => { + or => \@search, + }, }, }, - }, + } ); while ( my $release = $scroll->next ) { diff --git a/lib/MetaCPAN/Script/Pagerank.pm b/lib/MetaCPAN/Script/Pagerank.pm index a7e838367..b829f9fc5 100644 --- a/lib/MetaCPAN/Script/Pagerank.pm +++ b/lib/MetaCPAN/Script/Pagerank.pm @@ -21,19 +21,21 @@ sub run { my $scroll = $es->scroll_helper( index => $self->index->name, type => 'release', - query => { - filtered => { - query => { match_all => {} }, - filter => { - and => [ - { - term => - { 'release.dependency.phase' => 'runtime' } - }, - { term => { status => 'latest' } }, - ] + body => { + query => { + filtered => { + query => { match_all => {} }, + filter => { + and => [ + { + term => + { 'release.dependency.phase' => 'runtime' } + }, + { term => { status => 'latest' } }, + ] + } } - } + }, }, scroll => '5m', size => 1000, @@ -68,15 +70,17 @@ sub get_recent_modules { my $scroll = $self->es->scroll_helper( index => $self->index->name, type => 'file', - query => { - filtered => { - query => { match_all => {} }, - filter => { - and => [ - { term => { 'file.status' => 'latest' } }, - { term => { 'file.module.indexed' => \1 } }, - { term => { 'file.module.authorized' => \1 } }, - ] + body => { + query => { + filtered => { + query => { match_all => {} }, + filter => { + and => [ + { term => { 'file.status' => 'latest' } }, + { term => { 'file.module.indexed' => \1 } }, + { term => { 'file.module.authorized' => \1 } }, + ] + } } } }, diff --git a/lib/MetaCPAN/Script/Session.pm b/lib/MetaCPAN/Script/Session.pm index 434afffaa..6a3e841da 100644 --- a/lib/MetaCPAN/Script/Session.pm +++ b/lib/MetaCPAN/Script/Session.pm @@ -16,7 +16,7 @@ sub run { scroll => '1m', index => 'user', type => 'session', - query => { filtered => { query => { match_all => {} }, }, }, + body => { query => { filtered => { query => { match_all => {} }, }, }, }, ); my @delete; diff --git a/lib/MetaCPAN/Script/Watcher.pm b/lib/MetaCPAN/Script/Watcher.pm index b8a1a96bf..131bf4687 100644 --- a/lib/MetaCPAN/Script/Watcher.pm +++ b/lib/MetaCPAN/Script/Watcher.pm @@ -94,22 +94,24 @@ sub changes { sub backpan_changes { my $self = shift; - my $scroll = $self->es->scrolled_search( + my $scroll = $self->es->scroll_helper( { size => 1000, scroll => '1m', index => $self->index->name, type => 'release', fields => [qw(author archive)], - query => { - filtered => { - query => { match_all => {} }, - filter => { - not => - { filter => { term => { status => 'backpan' } } } - }, + body => { + query => { + filtered => { + query => { match_all => {} }, + filter => { + not => + { filter => { term => { status => 'backpan' } } } + }, + } } - }, + } } ); my @changes; @@ -193,24 +195,26 @@ sub reindex_release { size => 1000, search_type => 'scan', fields => [ '_parent', '_source' ], - query => { - filtered => { - query => { match_all => {} }, - filter => { - and => [ - { - term => { - 'file.release' => - $release->{_source}->{name} - } - }, - { - term => { - 'file.author' => - $release->{_source}->{author} + body => { + query => { + filtered => { + query => { match_all => {} }, + filter => { + and => [ + { + term => { + 'file.release' => + $release->{_source}->{name} + } + }, + { + term => { + 'file.author' => + $release->{_source}->{author} + } } - } - ] + ] + } } } } From 97c61e0e398d21227b2ae695bba0b728c08b5624 Mon Sep 17 00:00:00 2001 From: Micha Nasriachi Date: Mon, 11 Apr 2016 11:02:04 +0200 Subject: [PATCH 131/329] fix scripts injection --- lib/MetaCPAN/Server/QuerySanitizer.pm | 30 +++++++++------------------ 1 file changed, 10 insertions(+), 20 deletions(-) diff --git a/lib/MetaCPAN/Server/QuerySanitizer.pm b/lib/MetaCPAN/Server/QuerySanitizer.pm index c300b3b03..01f68031c 100644 --- a/lib/MetaCPAN/Server/QuerySanitizer.pm +++ b/lib/MetaCPAN/Server/QuerySanitizer.pm @@ -12,23 +12,16 @@ has query => ( ); our %metacpan_scripts = ( - prefer_shorter_module_names_100 => q{ - _score - doc['documentation'].value.length()/100 - }, - prefer_shorter_module_names_400 => q{ - documentation = doc['documentation'].value; - if(documentation == empty) { - documentation = 'xxxxxxxxxxxxxxxxxxxxxxxxx' - } - return _score - documentation.length()/400 - }, + prefer_shorter_module_names_100 => qq{_score - doc.documentation.value.length().toDouble()/100}, + prefer_shorter_module_names_400 => + qq{len = (doc.documentation.empty ? 26 : doc.documentation.value.length()); _score - len.toDouble()/400}, # NOTE: after upgrading to 0.90+ we should be able to sort # on nested version numbers directly and not need this script # (but we'll need to keep it for a while until clients have updated). - score_version_numified => q{doc['module.version_numified'].value}, + score_version_numified => q{doc.module.version_numified.value}, - status_is_latest => q{doc['status'].value == 'latest'}, + status_is_latest => q{doc.status.value == 'latest'}, ); sub _build_clean_query { @@ -50,17 +43,14 @@ sub _scan_hash_tree { my $ref = ref($struct); if ( $ref eq 'HASH' ) { while ( my ( $k, $v ) = each %$struct ) { - # Mickey: disabling this check for 'script' key since - # for ES 1.7 I need to use it in the - # function_score syntax - # if ( $k eq $key ) { - # MetaCPAN::Server::QuerySanitizer::Error->throw( - # message => qq[Parameter "$key" not allowed], ); - # } + if ( $k eq $key ) { + MetaCPAN::Server::QuerySanitizer::Error->throw( + message => qq[Parameter "$key" not allowed], ); + } _scan_hash_tree($v) if ref $v; } if ( my $mscript = delete $struct->{metacpan_script} ) { - $struct->{script} = $metacpan_scripts{$mscript}; + $struct->{script_score} = { script => $metacpan_scripts{$mscript} }; } } elsif ( $ref eq 'ARRAY' ) { From 992cb302eea7603557ebaba49f35cb522f9e5a0f Mon Sep 17 00:00:00 2001 From: Micha Nasriachi Date: Wed, 13 Apr 2016 13:30:34 +0200 Subject: [PATCH 132/329] move scripts to server-side files --- lib/MetaCPAN/Server/QuerySanitizer.pm | 20 ++++++-------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/lib/MetaCPAN/Server/QuerySanitizer.pm b/lib/MetaCPAN/Server/QuerySanitizer.pm index 01f68031c..15921c456 100644 --- a/lib/MetaCPAN/Server/QuerySanitizer.pm +++ b/lib/MetaCPAN/Server/QuerySanitizer.pm @@ -11,19 +11,6 @@ has query => ( trigger => \&_build_clean_query, ); -our %metacpan_scripts = ( - prefer_shorter_module_names_100 => qq{_score - doc.documentation.value.length().toDouble()/100}, - prefer_shorter_module_names_400 => - qq{len = (doc.documentation.empty ? 26 : doc.documentation.value.length()); _score - len.toDouble()/400}, - - # NOTE: after upgrading to 0.90+ we should be able to sort - # on nested version numbers directly and not need this script - # (but we'll need to keep it for a while until clients have updated). - score_version_numified => q{doc.module.version_numified.value}, - - status_is_latest => q{doc.status.value == 'latest'}, -); - sub _build_clean_query { my ($self) = @_; my $search = $self->query @@ -50,7 +37,12 @@ sub _scan_hash_tree { _scan_hash_tree($v) if ref $v; } if ( my $mscript = delete $struct->{metacpan_script} ) { - $struct->{script_score} = { script => $metacpan_scripts{$mscript} }; + $struct->{script_score} = { + script => { + lang => 'groovy', + file => $mscript + }, + }; } } elsif ( $ref eq 'ARRAY' ) { From a91bf5883e39c26c65bc02db7ca2ef457e92532b Mon Sep 17 00:00:00 2001 From: Micha Nasriachi Date: Wed, 13 Apr 2016 16:20:27 +0200 Subject: [PATCH 133/329] point cpanfile to latest ElasticSearchX::Model version --- cpanfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpanfile b/cpanfile index fa007b2bc..5248e4db7 100644 --- a/cpanfile +++ b/cpanfile @@ -41,7 +41,7 @@ requires 'Devel::ArgNames'; requires 'Digest::MD5'; requires 'Digest::SHA1'; requires 'EV'; -requires 'ElasticSearchX::Model', '0.2.2'; +requires 'ElasticSearchX::Model', '1.0.0'; requires 'Email::Address'; requires 'Email::Sender::Simple'; requires 'Email::Simple'; From 40c68439a67fe83f83dcf90a9a8e3809fabe7a7a Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Sat, 16 Apr 2016 00:19:18 -0400 Subject: [PATCH 134/329] Adds t/lib to path in bin/prove. --- bin/prove | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/prove b/bin/prove index 6d5fb7fe0..d50129d93 100755 --- a/bin/prove +++ b/bin/prove @@ -1,3 +1,3 @@ #!/bin/sh -`dirname "$0"`/run prove -lv "$@" +`dirname "$0"`/run prove -It/lib -lv "$@" From 99e49ecebc9cd0eed59610c0e541f55d1799e31e Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Sat, 16 Apr 2016 00:41:48 -0400 Subject: [PATCH 135/329] Updates deps. --- cpanfile | 5 + cpanfile.snapshot | 4022 ++++++++++++++++++++++++--------------------- 2 files changed, 2187 insertions(+), 1840 deletions(-) diff --git a/cpanfile b/cpanfile index 9b163185d..82b618165 100644 --- a/cpanfile +++ b/cpanfile @@ -26,6 +26,7 @@ requires 'Catalyst::View::JSON', '0.36'; requires 'CatalystX::Component::Traits'; requires 'CatalystX::InjectComponent'; requires 'CatalystX::RoleApplicator'; +requires 'CPAN::Repository::Perms'; requires 'Config::JFDI'; requires 'Cpanel::JSON::XS', '3.0115'; requires 'Cwd'; @@ -60,6 +61,7 @@ requires 'File::Temp'; requires 'File::stat'; requires 'Find::Lib'; requires 'FindBin'; +requires 'Git::Helpers'; requires 'Graph::Centrality::Pagerank'; requires 'Gravatar::URL'; requires 'HTML::TokeParser::Simple'; @@ -112,6 +114,7 @@ requires 'Net::DNS::Paranoid'; requires 'Net::Fastly', '1.03'; requires 'Net::OpenID::Consumer'; requires 'Net::Twitter', '4.01010'; +requires 'OrePAN2'; requires 'PAUSE::Permissions'; requires 'Parse::CPAN::Packages::Fast', '0.09'; requires 'Parse::CSV', '2.04'; @@ -171,6 +174,8 @@ test_requires 'Module::Faker::Dist', '0.010'; test_requires 'Config::General'; test_requires 'File::Copy'; test_requires 'HTTP::Cookies'; +test_requires 'LWP::ConsoleLogger::Easy'; +test_requires 'Plack::Test::Agent'; test_requires 'Test::Aggregate::Nested', '0.371'; test_requires 'Test::Code::TidyAll'; test_requires 'Test::More', '0.99'; diff --git a/cpanfile.snapshot b/cpanfile.snapshot index 083d6a450..4b96c40b1 100644 --- a/cpanfile.snapshot +++ b/cpanfile.snapshot @@ -23,7 +23,7 @@ DISTRIBUTIONS requirements: Carp 0 ExtUtils::MakeMaker 0 - Moose 0 + Mouse 0.40 perl 5.006_002 strict 0 warnings 0 @@ -34,17 +34,17 @@ DISTRIBUTIONS requirements: ExtUtils::MakeMaker 0 URI::Escape 0 - AnyEvent-7.11 - pathname: M/ML/MLEHMANN/AnyEvent-7.11.tar.gz + AnyEvent-7.12 + pathname: M/ML/MLEHMANN/AnyEvent-7.12.tar.gz provides: AE undef AE::Log::COLLECT undef AE::Log::FILTER undef AE::Log::LOG undef - AnyEvent 7.11 - AnyEvent::Base 7.11 - AnyEvent::CondVar 7.11 - AnyEvent::CondVar::Base 7.11 + AnyEvent 7.12 + AnyEvent::Base 7.12 + AnyEvent::CondVar 7.12 + AnyEvent::CondVar::Base 7.12 AnyEvent::DNS undef AnyEvent::Debug undef AnyEvent::Debug::Backtrace undef @@ -83,14 +83,11 @@ DISTRIBUTIONS requirements: Canary::Stability 0 ExtUtils::MakeMaker 6.52 - Apache-LogFormat-Compiler-0.32 - pathname: K/KA/KAZEBURO/Apache-LogFormat-Compiler-0.32.tar.gz + Apache-LogFormat-Compiler-0.33 + pathname: K/KA/KAZEBURO/Apache-LogFormat-Compiler-0.33.tar.gz provides: - Apache::LogFormat::Compiler 0.32 + Apache::LogFormat::Compiler 0.33 requirements: - CPAN::Meta 0 - CPAN::Meta::Prereqs 0 - ExtUtils::CBuilder 0 Module::Build 0.38 POSIX 0 POSIX::strftime::Compiler 0.30 @@ -111,15 +108,15 @@ DISTRIBUTIONS Path::Class 0 Storable 0 Test::More 0 - Archive-Any-0.0942 - pathname: O/OA/OALDERS/Archive-Any-0.0942.tar.gz + Archive-Any-0.0944 + pathname: O/OA/OALDERS/Archive-Any-0.0944.tar.gz provides: - Archive::Any 0.0942 - Archive::Any::Plugin 0.0942 - Archive::Any::Plugin::Tar 0.0942 - Archive::Any::Plugin::Zip 0.0942 - Archive::Any::Tar 0.0942 - Archive::Any::Zip 0.0942 + Archive::Any 0.0944 + Archive::Any::Plugin 0.0944 + Archive::Any::Plugin::Tar 0.0944 + Archive::Any::Plugin::Zip 0.0944 + Archive::Any::Tar 0.0944 + Archive::Any::Zip 0.0944 requirements: Archive::Tar 0 Archive::Zip 0 @@ -191,21 +188,21 @@ DISTRIBUTIONS Test::Harness 2.26 Test::More 0 perl 5.00503 - Archive-Zip-1.53 - pathname: P/PH/PHRED/Archive-Zip-1.53.tar.gz - provides: - Archive::Zip 1.53 - Archive::Zip::Archive 1.53 - Archive::Zip::BufferedFileHandle 1.53 - Archive::Zip::DirectoryMember 1.53 - Archive::Zip::FileMember 1.53 - Archive::Zip::Member 1.53 - Archive::Zip::MemberRead 1.53 - Archive::Zip::MockFileHandle 1.53 - Archive::Zip::NewFileMember 1.53 - Archive::Zip::StringMember 1.53 - Archive::Zip::Tree 1.53 - Archive::Zip::ZipFileMember 1.53 + Archive-Zip-1.57 + pathname: P/PH/PHRED/Archive-Zip-1.57.tar.gz + provides: + Archive::Zip 1.57 + Archive::Zip::Archive 1.57 + Archive::Zip::BufferedFileHandle 1.57 + Archive::Zip::DirectoryMember 1.57 + Archive::Zip::FileMember 1.57 + Archive::Zip::Member 1.57 + Archive::Zip::MemberRead 1.57 + Archive::Zip::MockFileHandle 1.57 + Archive::Zip::NewFileMember 1.57 + Archive::Zip::StringMember 1.57 + Archive::Zip::Tree 1.57 + Archive::Zip::ZipFileMember 1.57 requirements: Compress::Raw::Zlib 2.017 ExtUtils::MakeMaker 0 @@ -218,6 +215,7 @@ DISTRIBUTIONS IO::File 0 IO::Handle 0 IO::Seekable 0 + Test::MockModule 0 Test::More 0.88 Time::Local 0 perl 5.006 @@ -256,10 +254,10 @@ DISTRIBUTIONS Test::More 0 parent 0 perl 5.008001 - B-Keywords-1.14 - pathname: R/RU/RURBAN/B-Keywords-1.14.tar.gz + B-Keywords-1.15 + pathname: R/RU/RURBAN/B-Keywords-1.15.tar.gz provides: - B::Keywords 1.14 + B::Keywords 1.15 requirements: B 0 ExtUtils::MakeMaker 0 @@ -295,19 +293,19 @@ DISTRIBUTIONS autodie 0 parent 0 perl 5.008001 - CGI-4.22 - pathname: L/LE/LEEJO/CGI-4.22.tar.gz + CGI-4.28 + pathname: L/LE/LEEJO/CGI-4.28.tar.gz provides: - CGI 4.22 - CGI::Carp 4.22 - CGI::Cookie 4.22 - CGI::File::Temp 4.22 + CGI 4.28 + CGI::Carp 4.28 + CGI::Cookie 4.28 + CGI::File::Temp 4.28 CGI::HTML::Functions undef - CGI::Pretty 4.22 - CGI::Push 4.22 - CGI::Util 4.22 - Fh 4.22 - MultipartBuffer 4.22 + CGI::Pretty 4.28 + CGI::Push 4.28 + CGI::Util 4.28 + Fh 4.28 + MultipartBuffer 4.28 requirements: Carp 0 Config 0 @@ -392,10 +390,10 @@ DISTRIBUTIONS requirements: ExtUtils::MakeMaker 0 Test::More 0.07 - CPAN-Checksums-2.10 - pathname: A/AN/ANDK/CPAN-Checksums-2.10.tar.gz + CPAN-Checksums-2.11 + pathname: A/AN/ANDK/CPAN-Checksums-2.11.tar.gz provides: - CPAN::Checksums 2.10 + CPAN::Checksums 2.11 requirements: Compress::Bzip2 0 Compress::Zlib 0 @@ -472,10 +470,10 @@ DISTRIBUTIONS strict 0 version 0.88 warnings 0 - CPAN-Meta-YAML-0.016 - pathname: D/DA/DAGOLDEN/CPAN-Meta-YAML-0.016.tar.gz + CPAN-Meta-YAML-0.018 + pathname: D/DA/DAGOLDEN/CPAN-Meta-YAML-0.018.tar.gz provides: - CPAN::Meta::YAML 0.016 + CPAN::Meta::YAML 0.018 requirements: B 0 Carp 0 @@ -486,28 +484,25 @@ DISTRIBUTIONS perl 5.008001 strict 0 warnings 0 - CPAN-Repository-0.008 - pathname: G/GE/GETTY/CPAN-Repository-0.008.tar.gz + CPAN-Repository-0.010 + pathname: O/OA/OALDERS/CPAN-Repository-0.010.tar.gz provides: - CPAN::Repository 0.008 - CPAN::Repository::Mailrc 0.008 - CPAN::Repository::Packages 0.008 - CPAN::Repository::Perms 0.008 - CPAN::Repository::Role::File 0.008 + CPAN::Repository 0.010 + CPAN::Repository::Mailrc 0.010 + CPAN::Repository::Packages 0.010 + CPAN::Repository::Perms 0.010 + CPAN::Repository::Role::File 0.010 requirements: DateTime 0.72 DateTime::Format::Epoch 0.13 DateTime::Format::RFC3339 0 Dist::Data 0.002 - ExtUtils::MakeMaker 6.30 + ExtUtils::MakeMaker 0 File::Path 2.08 File::Spec::Functions 3.33 - File::Temp 0.22 IO::File 1.14 IO::Zlib 1.10 Moo 0.009013 - Test::LoadAllModules 0.021 - Test::More 0.96 Cache-Cache-1.08 pathname: R/RJ/RJBS/Cache-Cache-1.08.tar.gz provides: @@ -536,7 +531,6 @@ DISTRIBUTIONS Error 0.15 ExtUtils::MakeMaker 0 File::Spec 0.82 - IPC::ShareLite 0.09 Storable 1.014 Cache-LRU-0.04 pathname: K/KA/KAZUHO/Cache-LRU-0.04.tar.gz @@ -547,10 +541,10 @@ DISTRIBUTIONS Test::More 0.88 Test::Requires 0 perl 5.008001 - Canary-Stability-2006 - pathname: M/ML/MLEHMANN/Canary-Stability-2006.tar.gz + Canary-Stability-2011 + pathname: M/ML/MLEHMANN/Canary-Stability-2011.tar.gz provides: - Canary::Stability 2006 + Canary::Stability 2011 requirements: ExtUtils::MakeMaker 0 Captcha-reCAPTCHA-0.97 @@ -562,10 +556,10 @@ DISTRIBUTIONS HTML::Tiny 0.904 LWP::UserAgent 0 Test::More 0 - Capture-Tiny-0.30 - pathname: D/DA/DAGOLDEN/Capture-Tiny-0.30.tar.gz + Capture-Tiny-0.36 + pathname: D/DA/DAGOLDEN/Capture-Tiny-0.36.tar.gz provides: - Capture::Tiny 0.30 + Capture::Tiny 0.36 requirements: Carp 0 Exporter 0 @@ -638,11 +632,30 @@ DISTRIBUTIONS Catalyst::Action::Serialize::YAML 1.20 Catalyst::Action::Serialize::YAML::HTML 1.20 Catalyst::Action::SerializeBase 1.20 + Catalyst::Action::Serializer::Broken undef Catalyst::Controller::REST 1.20 Catalyst::Request::REST 1.20 Catalyst::Request::REST::ForBrowsers 1.20 Catalyst::TraitFor::Request::REST 1.20 Catalyst::TraitFor::Request::REST::ForBrowsers 1.20 + Test::Action::Class undef + Test::Action::Class::Sub undef + Test::Catalyst::Action::REST undef + Test::Catalyst::Action::REST::Controller::Actions undef + Test::Catalyst::Action::REST::Controller::ActionsForBrowsers undef + Test::Catalyst::Action::REST::Controller::Deserialize undef + Test::Catalyst::Action::REST::Controller::DeserializeMultiPart undef + Test::Catalyst::Action::REST::Controller::Override undef + Test::Catalyst::Action::REST::Controller::REST undef + Test::Catalyst::Action::REST::Controller::Root undef + Test::Catalyst::Action::REST::Controller::Serialize undef + Test::Catalyst::Log undef + Test::Rest undef + Test::Serialize undef + Test::Serialize::Controller::JSON undef + Test::Serialize::Controller::REST undef + Test::Serialize::View::Awful undef + Test::Serialize::View::Simple undef requirements: Catalyst::Runtime 5.80030 Class::Inspector 1.13 @@ -761,10 +774,10 @@ DISTRIBUTIONS MooseX::Types 0 Test::More 0 namespace::autoclean 0 - Catalyst-Runtime-5.90103 - pathname: M/MS/MSTROUT/Catalyst-Runtime-5.90103.tar.gz + Catalyst-Runtime-5.90104 + pathname: J/JJ/JJNAPIORK/Catalyst-Runtime-5.90104.tar.gz provides: - Catalyst 5.90103 + Catalyst 5.90104 Catalyst::Action undef Catalyst::ActionChain undef Catalyst::ActionContainer undef @@ -801,7 +814,7 @@ DISTRIBUTIONS Catalyst::Request::Upload undef Catalyst::Response undef Catalyst::Response::Writer undef - Catalyst::Runtime 5.90103 + Catalyst::Runtime 5.90104 Catalyst::Script::CGI undef Catalyst::Script::Create undef Catalyst::Script::FastCGI undef @@ -810,7 +823,7 @@ DISTRIBUTIONS Catalyst::ScriptRole undef Catalyst::ScriptRunner undef Catalyst::Stats undef - Catalyst::Test undef + Catalyst::Test 3.4 Catalyst::Utils undef Catalyst::View undef requirements: @@ -911,6 +924,7 @@ DISTRIBUTIONS pathname: R/RO/ROKR/CatalystX-InjectComponent-0.025.tar.gz provides: CatalystX::InjectComponent 0.025 + t::Test::Apple undef requirements: Catalyst::Runtime 5.8 Class::Inspector 0 @@ -1052,16 +1066,17 @@ DISTRIBUTIONS perl 5.006 strict 0 warnings 0 - Class-Method-Modifiers-2.11 - pathname: E/ET/ETHER/Class-Method-Modifiers-2.11.tar.gz + Class-Method-Modifiers-2.12 + pathname: E/ET/ETHER/Class-Method-Modifiers-2.12.tar.gz provides: - Class::Method::Modifiers 2.11 + Class::Method::Modifiers 2.12 requirements: B 0 Carp 0 Exporter 0 ExtUtils::MakeMaker 0 base 0 + perl 5.006 strict 0 warnings 0 Class-Singleton-1.5 @@ -1074,7 +1089,6 @@ DISTRIBUTIONS pathname: D/DA/DAGOLDEN/Class-Tiny-1.004.tar.gz provides: Class::Tiny 1.004 - Class::Tiny::Object 1.004 requirements: Carp 0 ExtUtils::MakeMaker 6.17 @@ -1110,38 +1124,38 @@ DISTRIBUTIONS strict 0 vars 0 warnings 0 - Code-TidyAll-0.30 - pathname: D/DR/DROLSKY/Code-TidyAll-0.30.tar.gz - provides: - Code::TidyAll 0.30 - Code::TidyAll::Cache 0.30 - Code::TidyAll::CacheModel 0.30 - Code::TidyAll::CacheModel::Shared 0.30 - Code::TidyAll::Config::INI::Reader 0.30 - Code::TidyAll::Git::Precommit 0.30 - Code::TidyAll::Git::Prereceive 0.30 - Code::TidyAll::Git::Util 0.30 - Code::TidyAll::Plugin 0.30 - Code::TidyAll::Plugin::CSSUnminifier 0.30 - Code::TidyAll::Plugin::JSBeautify 0.30 - Code::TidyAll::Plugin::JSHint 0.30 - Code::TidyAll::Plugin::JSLint 0.30 - Code::TidyAll::Plugin::JSON 0.30 - Code::TidyAll::Plugin::MasonTidy 0.30 - Code::TidyAll::Plugin::PHPCodeSniffer 0.30 - Code::TidyAll::Plugin::PerlCritic 0.30 - Code::TidyAll::Plugin::PerlTidy 0.30 - Code::TidyAll::Plugin::PerlTidySweet 0.30 - Code::TidyAll::Plugin::PodChecker 0.30 - Code::TidyAll::Plugin::PodSpell 0.30 - Code::TidyAll::Plugin::PodTidy 0.30 - Code::TidyAll::Plugin::SortLines 0.30 - Code::TidyAll::Result 0.30 - Code::TidyAll::Role::Tempdir 0.30 - Code::TidyAll::SVN::Precommit 0.30 - Code::TidyAll::SVN::Util 0.30 - Code::TidyAll::Util::Zglob 0.30 - Test::Code::TidyAll 0.30 + Code-TidyAll-0.45 + pathname: D/DR/DROLSKY/Code-TidyAll-0.45.tar.gz + provides: + Code::TidyAll 0.45 + Code::TidyAll::Cache 0.45 + Code::TidyAll::CacheModel 0.45 + Code::TidyAll::CacheModel::Shared 0.45 + Code::TidyAll::Config::INI::Reader 0.45 + Code::TidyAll::Git::Precommit 0.45 + Code::TidyAll::Git::Prereceive 0.45 + Code::TidyAll::Git::Util 0.45 + Code::TidyAll::Plugin 0.45 + Code::TidyAll::Plugin::CSSUnminifier 0.45 + Code::TidyAll::Plugin::JSBeautify 0.45 + Code::TidyAll::Plugin::JSHint 0.45 + Code::TidyAll::Plugin::JSLint 0.45 + Code::TidyAll::Plugin::JSON 0.45 + Code::TidyAll::Plugin::MasonTidy 0.45 + Code::TidyAll::Plugin::PHPCodeSniffer 0.45 + Code::TidyAll::Plugin::PerlCritic 0.45 + Code::TidyAll::Plugin::PerlTidy 0.45 + Code::TidyAll::Plugin::PerlTidySweet 0.45 + Code::TidyAll::Plugin::PodChecker 0.45 + Code::TidyAll::Plugin::PodSpell 0.45 + Code::TidyAll::Plugin::PodTidy 0.45 + Code::TidyAll::Plugin::SortLines 0.45 + Code::TidyAll::Result 0.45 + Code::TidyAll::Role::Tempdir 0.45 + Code::TidyAll::SVN::Precommit 0.45 + Code::TidyAll::SVN::Util 0.45 + Code::TidyAll::Util::Zglob 0.45 + Test::Code::TidyAll 0.45 requirements: Capture::Tiny 0 Config::INI::Reader 0 @@ -1157,12 +1171,14 @@ DISTRIBUTIONS File::Slurp::Tiny 0 File::Spec::Functions 0 File::Temp 0 + File::Which 0 File::Zglob 0 Getopt::Long 0 Guard 0 IPC::Run3 0 IPC::System::Simple 0 - List::MoreUtils 0 + List::Compare 0 + List::SomeUtils 0 Log::Any 0 Moo 0 Moo::Role 0 @@ -1178,10 +1194,10 @@ DISTRIBUTIONS strict 0 vars 0 warnings 0 - Compress-Bzip2-2.22 - pathname: R/RU/RURBAN/Compress-Bzip2-2.22.tar.gz + Compress-Bzip2-2.24 + pathname: R/RU/RURBAN/Compress-Bzip2-2.24.tar.gz provides: - Compress::Bzip2 2.22 + Compress::Bzip2 2.24 requirements: Carp 0 Config 0 @@ -1192,10 +1208,10 @@ DISTRIBUTIONS Getopt::Std 0 Test::More 0 constant 1.04 - Config-Any-0.26 - pathname: B/BR/BRICAS/Config-Any-0.26.tar.gz + Config-Any-0.27 + pathname: B/BR/BRICAS/Config-Any-0.27.tar.gz provides: - Config::Any 0.26 + Config::Any 0.27 Config::Any::Base undef Config::Any::General undef Config::Any::INI undef @@ -1205,7 +1221,7 @@ DISTRIBUTIONS Config::Any::YAML undef requirements: ExtUtils::MakeMaker 6.59 - Module::Pluggable 3.01 + Module::Pluggable::Object 3.6 Test::More 0 perl 5.006 Config-General-2.60 @@ -1239,6 +1255,8 @@ DISTRIBUTIONS Config::JFDI 0.065 Config::JFDI::Carp undef Config::JFDI::Source::Loader undef + eq 0.065 + t::Test undef requirements: Any::Moose 0 Carp::Clan::Share 0 @@ -1285,10 +1303,10 @@ DISTRIBUTIONS Module::Build 0.38 URI::Escape 0 perl 5.008001 - Cpanel-JSON-XS-3.0115 - pathname: R/RU/RURBAN/Cpanel-JSON-XS-3.0115.tar.gz + Cpanel-JSON-XS-3.0213 + pathname: R/RU/RURBAN/Cpanel-JSON-XS-3.0213.tar.gz provides: - Cpanel::JSON::XS 3.0115 + Cpanel::JSON::XS 3.0213 requirements: ExtUtils::MakeMaker 0 Pod::Text 2.08 @@ -1327,6 +1345,17 @@ DISTRIBUTIONS Path::Class 0.26 Try::Tiny 0.19 perl 5.006 + DBD-Pg-3.5.3 + pathname: T/TU/TURNSTEP/DBD-Pg-3.5.3.tar.gz + provides: + Bundle::DBD::Pg 3.005003 + DBD::Pg 3.005003 + requirements: + DBI 1.614 + ExtUtils::MakeMaker 6.11 + Test::More 0.88 + Time::HiRes 0 + version 0 DBD-SQLite-1.50 pathname: I/IS/ISHIGAKI/DBD-SQLite-1.50.tar.gz provides: @@ -1340,7 +1369,7 @@ DISTRIBUTIONS DBD::SQLite::VirtualTable::PerlData::Cursor undef requirements: DBI 1.57 - ExtUtils::MakeMaker 0 + ExtUtils::MakeMaker 6.48 File::Spec 0.82 Test::Builder 0.86 Test::More 0.47 @@ -1442,10 +1471,10 @@ DISTRIBUTIONS ExtUtils::MakeMaker 6.48 Test::Simple 0.90 perl 5.008 - DBIx-Class-0.082820 - pathname: R/RI/RIBASUSHI/DBIx-Class-0.082820.tar.gz + DBIx-Class-0.082821 + pathname: R/RI/RIBASUSHI/DBIx-Class-0.082821.tar.gz provides: - DBIx::Class 0.082820 + DBIx::Class 0.082821 DBIx::Class::AccessorGroup undef DBIx::Class::Admin undef DBIx::Class::CDBICompat undef @@ -1623,12 +1652,12 @@ DISTRIBUTIONS requirements: ExtUtils::MakeMaker 6.59 perl 5.006 - Data-OptList-0.109 - pathname: R/RJ/RJBS/Data-OptList-0.109.tar.gz + Data-OptList-0.110 + pathname: R/RJ/RJBS/Data-OptList-0.110.tar.gz provides: - Data::OptList 0.109 + Data::OptList 0.110 requirements: - ExtUtils::MakeMaker 6.30 + ExtUtils::MakeMaker 0 List::Util 0 Params::Util 0 Sub::Install 0.921 @@ -1676,7 +1705,23 @@ DISTRIBUTIONS Data-Section-0.200006 pathname: R/RJ/RJBS/Data-Section-0.200006.tar.gz provides: + Child undef Data::Section 0.200006 + End undef + Godfather undef + Grandchild undef + Header undef + I::Child undef + I::Grandchild undef + I::Parent undef + Latin1 undef + NoData undef + NoName undef + Parent undef + Relaxed undef + Unicode_nopragma undef + Unicode_pragma undef + WindowsNewlines undef requirements: Encode 0 ExtUtils::MakeMaker 6.30 @@ -1703,24 +1748,21 @@ DISTRIBUTIONS Task::Weaken 0 Tie::ToObject 0.01 namespace::clean 0.19 - DateTime-1.25 - pathname: D/DR/DROLSKY/DateTime-1.25.tar.gz - provides: - DateTime 1.25 - DateTime::Duration 1.25 - DateTime::Helpers 1.25 - DateTime::Infinite 1.25 - DateTime::Infinite::Future 1.25 - DateTime::Infinite::Past 1.25 - DateTime::LeapSecond 1.25 - DateTime::PP 1.25 - DateTime::PPExtra 1.25 + DateTime-1.26 + pathname: D/DR/DROLSKY/DateTime-1.26.tar.gz + provides: + DateTime 1.26 + DateTime::Duration 1.26 + DateTime::Helpers 1.26 + DateTime::Infinite 1.26 + DateTime::LeapSecond 1.26 + DateTime::PP 1.26 + DateTime::PPExtra 1.26 requirements: Carp 0 DateTime::Locale 0.41 DateTime::TimeZone 1.74 - ExtUtils::CBuilder 0 - Module::Build 0.28 + ExtUtils::MakeMaker 0 POSIX 0 Params::Validate 1.03 Scalar::Util 0 @@ -1792,17 +1834,13 @@ DISTRIBUTIONS DateTime-Format-RFC3339-v1.2.0 pathname: I/IK/IKEGAMI/DateTime-Format-RFC3339-v1.2.0.tar.gz provides: - DateTime::Format::RFC3339 1.002000 + DateTime::Format::RFC3339 undef requirements: - DateTime 0 - ExtUtils::MakeMaker 0 - strict 0 - version 0 - warnings 0 - DateTime-Format-Strptime-1.60 - pathname: D/DR/DROLSKY/DateTime-Format-Strptime-1.60.tar.gz + ExtUtils::MakeMaker 6.52 + DateTime-Format-Strptime-1.67 + pathname: D/DR/DROLSKY/DateTime-Format-Strptime-1.67.tar.gz provides: - DateTime::Format::Strptime 1.60 + DateTime::Format::Strptime 1.67 requirements: Carp 0 DateTime 1.00 @@ -1810,21 +1848,21 @@ DISTRIBUTIONS DateTime::TimeZone 0.79 Exporter 0 ExtUtils::MakeMaker 0 - Package::DeprecationManager 0 + Package::DeprecationManager 0.15 Params::Validate 1.20 Try::Tiny 0 constant 0 strict 0 warnings 0 - DateTime-Locale-1.01 - pathname: D/DR/DROLSKY/DateTime-Locale-1.01.tar.gz + DateTime-Locale-1.03 + pathname: D/DR/DROLSKY/DateTime-Locale-1.03.tar.gz provides: - DateTime::Locale 1.01 - DateTime::Locale::Base 1.01 - DateTime::Locale::Catalog 1.01 - DateTime::Locale::Data 1.01 - DateTime::Locale::FromData 1.01 - DateTime::Locale::Util 1.01 + DateTime::Locale 1.03 + DateTime::Locale::Base 1.03 + DateTime::Locale::Catalog 1.03 + DateTime::Locale::Data 1.03 + DateTime::Locale::FromData 1.03 + DateTime::Locale::Util 1.03 requirements: Carp 0 Dist::CheckConflicts 0.02 @@ -1835,372 +1873,373 @@ DISTRIBUTIONS perl 5.008001 strict 0 warnings 0 - DateTime-TimeZone-1.94 - pathname: D/DR/DROLSKY/DateTime-TimeZone-1.94.tar.gz - provides: - DateTime::TimeZone 1.94 - DateTime::TimeZone::Africa::Abidjan 1.94 - DateTime::TimeZone::Africa::Accra 1.94 - DateTime::TimeZone::Africa::Algiers 1.94 - DateTime::TimeZone::Africa::Bissau 1.94 - DateTime::TimeZone::Africa::Cairo 1.94 - DateTime::TimeZone::Africa::Casablanca 1.94 - DateTime::TimeZone::Africa::Ceuta 1.94 - DateTime::TimeZone::Africa::El_Aaiun 1.94 - DateTime::TimeZone::Africa::Johannesburg 1.94 - DateTime::TimeZone::Africa::Khartoum 1.94 - DateTime::TimeZone::Africa::Lagos 1.94 - DateTime::TimeZone::Africa::Maputo 1.94 - DateTime::TimeZone::Africa::Monrovia 1.94 - DateTime::TimeZone::Africa::Nairobi 1.94 - DateTime::TimeZone::Africa::Ndjamena 1.94 - DateTime::TimeZone::Africa::Tripoli 1.94 - DateTime::TimeZone::Africa::Tunis 1.94 - DateTime::TimeZone::Africa::Windhoek 1.94 - DateTime::TimeZone::America::Adak 1.94 - DateTime::TimeZone::America::Anchorage 1.94 - DateTime::TimeZone::America::Araguaina 1.94 - DateTime::TimeZone::America::Argentina::Buenos_Aires 1.94 - DateTime::TimeZone::America::Argentina::Catamarca 1.94 - DateTime::TimeZone::America::Argentina::Cordoba 1.94 - DateTime::TimeZone::America::Argentina::Jujuy 1.94 - DateTime::TimeZone::America::Argentina::La_Rioja 1.94 - DateTime::TimeZone::America::Argentina::Mendoza 1.94 - DateTime::TimeZone::America::Argentina::Rio_Gallegos 1.94 - DateTime::TimeZone::America::Argentina::Salta 1.94 - DateTime::TimeZone::America::Argentina::San_Juan 1.94 - DateTime::TimeZone::America::Argentina::San_Luis 1.94 - DateTime::TimeZone::America::Argentina::Tucuman 1.94 - DateTime::TimeZone::America::Argentina::Ushuaia 1.94 - DateTime::TimeZone::America::Asuncion 1.94 - DateTime::TimeZone::America::Atikokan 1.94 - DateTime::TimeZone::America::Bahia 1.94 - DateTime::TimeZone::America::Bahia_Banderas 1.94 - DateTime::TimeZone::America::Barbados 1.94 - DateTime::TimeZone::America::Belem 1.94 - DateTime::TimeZone::America::Belize 1.94 - DateTime::TimeZone::America::Blanc_Sablon 1.94 - DateTime::TimeZone::America::Boa_Vista 1.94 - DateTime::TimeZone::America::Bogota 1.94 - DateTime::TimeZone::America::Boise 1.94 - DateTime::TimeZone::America::Cambridge_Bay 1.94 - DateTime::TimeZone::America::Campo_Grande 1.94 - DateTime::TimeZone::America::Cancun 1.94 - DateTime::TimeZone::America::Caracas 1.94 - DateTime::TimeZone::America::Cayenne 1.94 - DateTime::TimeZone::America::Cayman 1.94 - DateTime::TimeZone::America::Chicago 1.94 - DateTime::TimeZone::America::Chihuahua 1.94 - DateTime::TimeZone::America::Costa_Rica 1.94 - DateTime::TimeZone::America::Creston 1.94 - DateTime::TimeZone::America::Cuiaba 1.94 - DateTime::TimeZone::America::Curacao 1.94 - DateTime::TimeZone::America::Danmarkshavn 1.94 - DateTime::TimeZone::America::Dawson 1.94 - DateTime::TimeZone::America::Dawson_Creek 1.94 - DateTime::TimeZone::America::Denver 1.94 - DateTime::TimeZone::America::Detroit 1.94 - DateTime::TimeZone::America::Edmonton 1.94 - DateTime::TimeZone::America::Eirunepe 1.94 - DateTime::TimeZone::America::El_Salvador 1.94 - DateTime::TimeZone::America::Fort_Nelson 1.94 - DateTime::TimeZone::America::Fortaleza 1.94 - DateTime::TimeZone::America::Glace_Bay 1.94 - DateTime::TimeZone::America::Godthab 1.94 - DateTime::TimeZone::America::Goose_Bay 1.94 - DateTime::TimeZone::America::Grand_Turk 1.94 - DateTime::TimeZone::America::Guatemala 1.94 - DateTime::TimeZone::America::Guayaquil 1.94 - DateTime::TimeZone::America::Guyana 1.94 - DateTime::TimeZone::America::Halifax 1.94 - DateTime::TimeZone::America::Havana 1.94 - DateTime::TimeZone::America::Hermosillo 1.94 - DateTime::TimeZone::America::Indiana::Indianapolis 1.94 - DateTime::TimeZone::America::Indiana::Knox 1.94 - DateTime::TimeZone::America::Indiana::Marengo 1.94 - DateTime::TimeZone::America::Indiana::Petersburg 1.94 - DateTime::TimeZone::America::Indiana::Tell_City 1.94 - DateTime::TimeZone::America::Indiana::Vevay 1.94 - DateTime::TimeZone::America::Indiana::Vincennes 1.94 - DateTime::TimeZone::America::Indiana::Winamac 1.94 - DateTime::TimeZone::America::Inuvik 1.94 - DateTime::TimeZone::America::Iqaluit 1.94 - DateTime::TimeZone::America::Jamaica 1.94 - DateTime::TimeZone::America::Juneau 1.94 - DateTime::TimeZone::America::Kentucky::Louisville 1.94 - DateTime::TimeZone::America::Kentucky::Monticello 1.94 - DateTime::TimeZone::America::La_Paz 1.94 - DateTime::TimeZone::America::Lima 1.94 - DateTime::TimeZone::America::Los_Angeles 1.94 - DateTime::TimeZone::America::Maceio 1.94 - DateTime::TimeZone::America::Managua 1.94 - DateTime::TimeZone::America::Manaus 1.94 - DateTime::TimeZone::America::Martinique 1.94 - DateTime::TimeZone::America::Matamoros 1.94 - DateTime::TimeZone::America::Mazatlan 1.94 - DateTime::TimeZone::America::Menominee 1.94 - DateTime::TimeZone::America::Merida 1.94 - DateTime::TimeZone::America::Metlakatla 1.94 - DateTime::TimeZone::America::Mexico_City 1.94 - DateTime::TimeZone::America::Miquelon 1.94 - DateTime::TimeZone::America::Moncton 1.94 - DateTime::TimeZone::America::Monterrey 1.94 - DateTime::TimeZone::America::Montevideo 1.94 - DateTime::TimeZone::America::Nassau 1.94 - DateTime::TimeZone::America::New_York 1.94 - DateTime::TimeZone::America::Nipigon 1.94 - DateTime::TimeZone::America::Nome 1.94 - DateTime::TimeZone::America::Noronha 1.94 - DateTime::TimeZone::America::North_Dakota::Beulah 1.94 - DateTime::TimeZone::America::North_Dakota::Center 1.94 - DateTime::TimeZone::America::North_Dakota::New_Salem 1.94 - DateTime::TimeZone::America::Ojinaga 1.94 - DateTime::TimeZone::America::Panama 1.94 - DateTime::TimeZone::America::Pangnirtung 1.94 - DateTime::TimeZone::America::Paramaribo 1.94 - DateTime::TimeZone::America::Phoenix 1.94 - DateTime::TimeZone::America::Port_au_Prince 1.94 - DateTime::TimeZone::America::Port_of_Spain 1.94 - DateTime::TimeZone::America::Porto_Velho 1.94 - DateTime::TimeZone::America::Puerto_Rico 1.94 - DateTime::TimeZone::America::Rainy_River 1.94 - DateTime::TimeZone::America::Rankin_Inlet 1.94 - DateTime::TimeZone::America::Recife 1.94 - DateTime::TimeZone::America::Regina 1.94 - DateTime::TimeZone::America::Resolute 1.94 - DateTime::TimeZone::America::Rio_Branco 1.94 - DateTime::TimeZone::America::Santa_Isabel 1.94 - DateTime::TimeZone::America::Santarem 1.94 - DateTime::TimeZone::America::Santiago 1.94 - DateTime::TimeZone::America::Santo_Domingo 1.94 - DateTime::TimeZone::America::Sao_Paulo 1.94 - DateTime::TimeZone::America::Scoresbysund 1.94 - DateTime::TimeZone::America::Sitka 1.94 - DateTime::TimeZone::America::St_Johns 1.94 - DateTime::TimeZone::America::Swift_Current 1.94 - DateTime::TimeZone::America::Tegucigalpa 1.94 - DateTime::TimeZone::America::Thule 1.94 - DateTime::TimeZone::America::Thunder_Bay 1.94 - DateTime::TimeZone::America::Tijuana 1.94 - DateTime::TimeZone::America::Toronto 1.94 - DateTime::TimeZone::America::Vancouver 1.94 - DateTime::TimeZone::America::Whitehorse 1.94 - DateTime::TimeZone::America::Winnipeg 1.94 - DateTime::TimeZone::America::Yakutat 1.94 - DateTime::TimeZone::America::Yellowknife 1.94 - DateTime::TimeZone::Antarctica::Casey 1.94 - DateTime::TimeZone::Antarctica::Davis 1.94 - DateTime::TimeZone::Antarctica::DumontDUrville 1.94 - DateTime::TimeZone::Antarctica::Macquarie 1.94 - DateTime::TimeZone::Antarctica::Mawson 1.94 - DateTime::TimeZone::Antarctica::Palmer 1.94 - DateTime::TimeZone::Antarctica::Rothera 1.94 - DateTime::TimeZone::Antarctica::Syowa 1.94 - DateTime::TimeZone::Antarctica::Troll 1.94 - DateTime::TimeZone::Antarctica::Vostok 1.94 - DateTime::TimeZone::Asia::Almaty 1.94 - DateTime::TimeZone::Asia::Amman 1.94 - DateTime::TimeZone::Asia::Anadyr 1.94 - DateTime::TimeZone::Asia::Aqtau 1.94 - DateTime::TimeZone::Asia::Aqtobe 1.94 - DateTime::TimeZone::Asia::Ashgabat 1.94 - DateTime::TimeZone::Asia::Baghdad 1.94 - DateTime::TimeZone::Asia::Baku 1.94 - DateTime::TimeZone::Asia::Bangkok 1.94 - DateTime::TimeZone::Asia::Beirut 1.94 - DateTime::TimeZone::Asia::Bishkek 1.94 - DateTime::TimeZone::Asia::Brunei 1.94 - DateTime::TimeZone::Asia::Chita 1.94 - DateTime::TimeZone::Asia::Choibalsan 1.94 - DateTime::TimeZone::Asia::Colombo 1.94 - DateTime::TimeZone::Asia::Damascus 1.94 - DateTime::TimeZone::Asia::Dhaka 1.94 - DateTime::TimeZone::Asia::Dili 1.94 - DateTime::TimeZone::Asia::Dubai 1.94 - DateTime::TimeZone::Asia::Dushanbe 1.94 - DateTime::TimeZone::Asia::Gaza 1.94 - DateTime::TimeZone::Asia::Hebron 1.94 - DateTime::TimeZone::Asia::Ho_Chi_Minh 1.94 - DateTime::TimeZone::Asia::Hong_Kong 1.94 - DateTime::TimeZone::Asia::Hovd 1.94 - DateTime::TimeZone::Asia::Irkutsk 1.94 - DateTime::TimeZone::Asia::Jakarta 1.94 - DateTime::TimeZone::Asia::Jayapura 1.94 - DateTime::TimeZone::Asia::Jerusalem 1.94 - DateTime::TimeZone::Asia::Kabul 1.94 - DateTime::TimeZone::Asia::Kamchatka 1.94 - DateTime::TimeZone::Asia::Karachi 1.94 - DateTime::TimeZone::Asia::Kathmandu 1.94 - DateTime::TimeZone::Asia::Khandyga 1.94 - DateTime::TimeZone::Asia::Kolkata 1.94 - DateTime::TimeZone::Asia::Krasnoyarsk 1.94 - DateTime::TimeZone::Asia::Kuala_Lumpur 1.94 - DateTime::TimeZone::Asia::Kuching 1.94 - DateTime::TimeZone::Asia::Macau 1.94 - DateTime::TimeZone::Asia::Magadan 1.94 - DateTime::TimeZone::Asia::Makassar 1.94 - DateTime::TimeZone::Asia::Manila 1.94 - DateTime::TimeZone::Asia::Nicosia 1.94 - DateTime::TimeZone::Asia::Novokuznetsk 1.94 - DateTime::TimeZone::Asia::Novosibirsk 1.94 - DateTime::TimeZone::Asia::Omsk 1.94 - DateTime::TimeZone::Asia::Oral 1.94 - DateTime::TimeZone::Asia::Pontianak 1.94 - DateTime::TimeZone::Asia::Pyongyang 1.94 - DateTime::TimeZone::Asia::Qatar 1.94 - DateTime::TimeZone::Asia::Qyzylorda 1.94 - DateTime::TimeZone::Asia::Rangoon 1.94 - DateTime::TimeZone::Asia::Riyadh 1.94 - DateTime::TimeZone::Asia::Sakhalin 1.94 - DateTime::TimeZone::Asia::Samarkand 1.94 - DateTime::TimeZone::Asia::Seoul 1.94 - DateTime::TimeZone::Asia::Shanghai 1.94 - DateTime::TimeZone::Asia::Singapore 1.94 - DateTime::TimeZone::Asia::Srednekolymsk 1.94 - DateTime::TimeZone::Asia::Taipei 1.94 - DateTime::TimeZone::Asia::Tashkent 1.94 - DateTime::TimeZone::Asia::Tbilisi 1.94 - DateTime::TimeZone::Asia::Tehran 1.94 - DateTime::TimeZone::Asia::Thimphu 1.94 - DateTime::TimeZone::Asia::Tokyo 1.94 - DateTime::TimeZone::Asia::Ulaanbaatar 1.94 - DateTime::TimeZone::Asia::Urumqi 1.94 - DateTime::TimeZone::Asia::Ust_Nera 1.94 - DateTime::TimeZone::Asia::Vladivostok 1.94 - DateTime::TimeZone::Asia::Yakutsk 1.94 - DateTime::TimeZone::Asia::Yekaterinburg 1.94 - DateTime::TimeZone::Asia::Yerevan 1.94 - DateTime::TimeZone::Atlantic::Azores 1.94 - DateTime::TimeZone::Atlantic::Bermuda 1.94 - DateTime::TimeZone::Atlantic::Canary 1.94 - DateTime::TimeZone::Atlantic::Cape_Verde 1.94 - DateTime::TimeZone::Atlantic::Faroe 1.94 - DateTime::TimeZone::Atlantic::Madeira 1.94 - DateTime::TimeZone::Atlantic::Reykjavik 1.94 - DateTime::TimeZone::Atlantic::South_Georgia 1.94 - DateTime::TimeZone::Atlantic::Stanley 1.94 - DateTime::TimeZone::Australia::Adelaide 1.94 - DateTime::TimeZone::Australia::Brisbane 1.94 - DateTime::TimeZone::Australia::Broken_Hill 1.94 - DateTime::TimeZone::Australia::Currie 1.94 - DateTime::TimeZone::Australia::Darwin 1.94 - DateTime::TimeZone::Australia::Eucla 1.94 - DateTime::TimeZone::Australia::Hobart 1.94 - DateTime::TimeZone::Australia::Lindeman 1.94 - DateTime::TimeZone::Australia::Lord_Howe 1.94 - DateTime::TimeZone::Australia::Melbourne 1.94 - DateTime::TimeZone::Australia::Perth 1.94 - DateTime::TimeZone::Australia::Sydney 1.94 - DateTime::TimeZone::CET 1.94 - DateTime::TimeZone::CST6CDT 1.94 - DateTime::TimeZone::Catalog 1.94 - DateTime::TimeZone::EET 1.94 - DateTime::TimeZone::EST 1.94 - DateTime::TimeZone::EST5EDT 1.94 - DateTime::TimeZone::Europe::Amsterdam 1.94 - DateTime::TimeZone::Europe::Andorra 1.94 - DateTime::TimeZone::Europe::Athens 1.94 - DateTime::TimeZone::Europe::Belgrade 1.94 - DateTime::TimeZone::Europe::Berlin 1.94 - DateTime::TimeZone::Europe::Brussels 1.94 - DateTime::TimeZone::Europe::Bucharest 1.94 - DateTime::TimeZone::Europe::Budapest 1.94 - DateTime::TimeZone::Europe::Chisinau 1.94 - DateTime::TimeZone::Europe::Copenhagen 1.94 - DateTime::TimeZone::Europe::Dublin 1.94 - DateTime::TimeZone::Europe::Gibraltar 1.94 - DateTime::TimeZone::Europe::Helsinki 1.94 - DateTime::TimeZone::Europe::Istanbul 1.94 - DateTime::TimeZone::Europe::Kaliningrad 1.94 - DateTime::TimeZone::Europe::Kiev 1.94 - DateTime::TimeZone::Europe::Lisbon 1.94 - DateTime::TimeZone::Europe::London 1.94 - DateTime::TimeZone::Europe::Luxembourg 1.94 - DateTime::TimeZone::Europe::Madrid 1.94 - DateTime::TimeZone::Europe::Malta 1.94 - DateTime::TimeZone::Europe::Minsk 1.94 - DateTime::TimeZone::Europe::Monaco 1.94 - DateTime::TimeZone::Europe::Moscow 1.94 - DateTime::TimeZone::Europe::Oslo 1.94 - DateTime::TimeZone::Europe::Paris 1.94 - DateTime::TimeZone::Europe::Prague 1.94 - DateTime::TimeZone::Europe::Riga 1.94 - DateTime::TimeZone::Europe::Rome 1.94 - DateTime::TimeZone::Europe::Samara 1.94 - DateTime::TimeZone::Europe::Simferopol 1.94 - DateTime::TimeZone::Europe::Sofia 1.94 - DateTime::TimeZone::Europe::Stockholm 1.94 - DateTime::TimeZone::Europe::Tallinn 1.94 - DateTime::TimeZone::Europe::Tirane 1.94 - DateTime::TimeZone::Europe::Uzhgorod 1.94 - DateTime::TimeZone::Europe::Vienna 1.94 - DateTime::TimeZone::Europe::Vilnius 1.94 - DateTime::TimeZone::Europe::Volgograd 1.94 - DateTime::TimeZone::Europe::Warsaw 1.94 - DateTime::TimeZone::Europe::Zaporozhye 1.94 - DateTime::TimeZone::Europe::Zurich 1.94 - DateTime::TimeZone::Floating 1.94 - DateTime::TimeZone::HST 1.94 - DateTime::TimeZone::Indian::Chagos 1.94 - DateTime::TimeZone::Indian::Christmas 1.94 - DateTime::TimeZone::Indian::Cocos 1.94 - DateTime::TimeZone::Indian::Kerguelen 1.94 - DateTime::TimeZone::Indian::Mahe 1.94 - DateTime::TimeZone::Indian::Maldives 1.94 - DateTime::TimeZone::Indian::Mauritius 1.94 - DateTime::TimeZone::Indian::Reunion 1.94 - DateTime::TimeZone::Local 1.94 - DateTime::TimeZone::Local::Android 1.94 - DateTime::TimeZone::Local::Unix 1.94 - DateTime::TimeZone::Local::VMS 1.94 - DateTime::TimeZone::MET 1.94 - DateTime::TimeZone::MST 1.94 - DateTime::TimeZone::MST7MDT 1.94 - DateTime::TimeZone::OffsetOnly 1.94 - DateTime::TimeZone::OlsonDB 1.94 - DateTime::TimeZone::OlsonDB::Change 1.94 - DateTime::TimeZone::OlsonDB::Observance 1.94 - DateTime::TimeZone::OlsonDB::Rule 1.94 - DateTime::TimeZone::OlsonDB::Zone 1.94 - DateTime::TimeZone::PST8PDT 1.94 - DateTime::TimeZone::Pacific::Apia 1.94 - DateTime::TimeZone::Pacific::Auckland 1.94 - DateTime::TimeZone::Pacific::Bougainville 1.94 - DateTime::TimeZone::Pacific::Chatham 1.94 - DateTime::TimeZone::Pacific::Chuuk 1.94 - DateTime::TimeZone::Pacific::Easter 1.94 - DateTime::TimeZone::Pacific::Efate 1.94 - DateTime::TimeZone::Pacific::Enderbury 1.94 - DateTime::TimeZone::Pacific::Fakaofo 1.94 - DateTime::TimeZone::Pacific::Fiji 1.94 - DateTime::TimeZone::Pacific::Funafuti 1.94 - DateTime::TimeZone::Pacific::Galapagos 1.94 - DateTime::TimeZone::Pacific::Gambier 1.94 - DateTime::TimeZone::Pacific::Guadalcanal 1.94 - DateTime::TimeZone::Pacific::Guam 1.94 - DateTime::TimeZone::Pacific::Honolulu 1.94 - DateTime::TimeZone::Pacific::Kiritimati 1.94 - DateTime::TimeZone::Pacific::Kosrae 1.94 - DateTime::TimeZone::Pacific::Kwajalein 1.94 - DateTime::TimeZone::Pacific::Majuro 1.94 - DateTime::TimeZone::Pacific::Marquesas 1.94 - DateTime::TimeZone::Pacific::Nauru 1.94 - DateTime::TimeZone::Pacific::Niue 1.94 - DateTime::TimeZone::Pacific::Norfolk 1.94 - DateTime::TimeZone::Pacific::Noumea 1.94 - DateTime::TimeZone::Pacific::Pago_Pago 1.94 - DateTime::TimeZone::Pacific::Palau 1.94 - DateTime::TimeZone::Pacific::Pitcairn 1.94 - DateTime::TimeZone::Pacific::Pohnpei 1.94 - DateTime::TimeZone::Pacific::Port_Moresby 1.94 - DateTime::TimeZone::Pacific::Rarotonga 1.94 - DateTime::TimeZone::Pacific::Tahiti 1.94 - DateTime::TimeZone::Pacific::Tarawa 1.94 - DateTime::TimeZone::Pacific::Tongatapu 1.94 - DateTime::TimeZone::Pacific::Wake 1.94 - DateTime::TimeZone::Pacific::Wallis 1.94 - DateTime::TimeZone::UTC 1.94 - DateTime::TimeZone::WET 1.94 + DateTime-TimeZone-1.97 + pathname: D/DR/DROLSKY/DateTime-TimeZone-1.97.tar.gz + provides: + DateTime::TimeZone 1.97 + DateTime::TimeZone::Africa::Abidjan 1.97 + DateTime::TimeZone::Africa::Accra 1.97 + DateTime::TimeZone::Africa::Algiers 1.97 + DateTime::TimeZone::Africa::Bissau 1.97 + DateTime::TimeZone::Africa::Cairo 1.97 + DateTime::TimeZone::Africa::Casablanca 1.97 + DateTime::TimeZone::Africa::Ceuta 1.97 + DateTime::TimeZone::Africa::El_Aaiun 1.97 + DateTime::TimeZone::Africa::Johannesburg 1.97 + DateTime::TimeZone::Africa::Khartoum 1.97 + DateTime::TimeZone::Africa::Lagos 1.97 + DateTime::TimeZone::Africa::Maputo 1.97 + DateTime::TimeZone::Africa::Monrovia 1.97 + DateTime::TimeZone::Africa::Nairobi 1.97 + DateTime::TimeZone::Africa::Ndjamena 1.97 + DateTime::TimeZone::Africa::Tripoli 1.97 + DateTime::TimeZone::Africa::Tunis 1.97 + DateTime::TimeZone::Africa::Windhoek 1.97 + DateTime::TimeZone::America::Adak 1.97 + DateTime::TimeZone::America::Anchorage 1.97 + DateTime::TimeZone::America::Araguaina 1.97 + DateTime::TimeZone::America::Argentina::Buenos_Aires 1.97 + DateTime::TimeZone::America::Argentina::Catamarca 1.97 + DateTime::TimeZone::America::Argentina::Cordoba 1.97 + DateTime::TimeZone::America::Argentina::Jujuy 1.97 + DateTime::TimeZone::America::Argentina::La_Rioja 1.97 + DateTime::TimeZone::America::Argentina::Mendoza 1.97 + DateTime::TimeZone::America::Argentina::Rio_Gallegos 1.97 + DateTime::TimeZone::America::Argentina::Salta 1.97 + DateTime::TimeZone::America::Argentina::San_Juan 1.97 + DateTime::TimeZone::America::Argentina::San_Luis 1.97 + DateTime::TimeZone::America::Argentina::Tucuman 1.97 + DateTime::TimeZone::America::Argentina::Ushuaia 1.97 + DateTime::TimeZone::America::Asuncion 1.97 + DateTime::TimeZone::America::Atikokan 1.97 + DateTime::TimeZone::America::Bahia 1.97 + DateTime::TimeZone::America::Bahia_Banderas 1.97 + DateTime::TimeZone::America::Barbados 1.97 + DateTime::TimeZone::America::Belem 1.97 + DateTime::TimeZone::America::Belize 1.97 + DateTime::TimeZone::America::Blanc_Sablon 1.97 + DateTime::TimeZone::America::Boa_Vista 1.97 + DateTime::TimeZone::America::Bogota 1.97 + DateTime::TimeZone::America::Boise 1.97 + DateTime::TimeZone::America::Cambridge_Bay 1.97 + DateTime::TimeZone::America::Campo_Grande 1.97 + DateTime::TimeZone::America::Cancun 1.97 + DateTime::TimeZone::America::Caracas 1.97 + DateTime::TimeZone::America::Cayenne 1.97 + DateTime::TimeZone::America::Chicago 1.97 + DateTime::TimeZone::America::Chihuahua 1.97 + DateTime::TimeZone::America::Costa_Rica 1.97 + DateTime::TimeZone::America::Creston 1.97 + DateTime::TimeZone::America::Cuiaba 1.97 + DateTime::TimeZone::America::Curacao 1.97 + DateTime::TimeZone::America::Danmarkshavn 1.97 + DateTime::TimeZone::America::Dawson 1.97 + DateTime::TimeZone::America::Dawson_Creek 1.97 + DateTime::TimeZone::America::Denver 1.97 + DateTime::TimeZone::America::Detroit 1.97 + DateTime::TimeZone::America::Edmonton 1.97 + DateTime::TimeZone::America::Eirunepe 1.97 + DateTime::TimeZone::America::El_Salvador 1.97 + DateTime::TimeZone::America::Fort_Nelson 1.97 + DateTime::TimeZone::America::Fortaleza 1.97 + DateTime::TimeZone::America::Glace_Bay 1.97 + DateTime::TimeZone::America::Godthab 1.97 + DateTime::TimeZone::America::Goose_Bay 1.97 + DateTime::TimeZone::America::Grand_Turk 1.97 + DateTime::TimeZone::America::Guatemala 1.97 + DateTime::TimeZone::America::Guayaquil 1.97 + DateTime::TimeZone::America::Guyana 1.97 + DateTime::TimeZone::America::Halifax 1.97 + DateTime::TimeZone::America::Havana 1.97 + DateTime::TimeZone::America::Hermosillo 1.97 + DateTime::TimeZone::America::Indiana::Indianapolis 1.97 + DateTime::TimeZone::America::Indiana::Knox 1.97 + DateTime::TimeZone::America::Indiana::Marengo 1.97 + DateTime::TimeZone::America::Indiana::Petersburg 1.97 + DateTime::TimeZone::America::Indiana::Tell_City 1.97 + DateTime::TimeZone::America::Indiana::Vevay 1.97 + DateTime::TimeZone::America::Indiana::Vincennes 1.97 + DateTime::TimeZone::America::Indiana::Winamac 1.97 + DateTime::TimeZone::America::Inuvik 1.97 + DateTime::TimeZone::America::Iqaluit 1.97 + DateTime::TimeZone::America::Jamaica 1.97 + DateTime::TimeZone::America::Juneau 1.97 + DateTime::TimeZone::America::Kentucky::Louisville 1.97 + DateTime::TimeZone::America::Kentucky::Monticello 1.97 + DateTime::TimeZone::America::La_Paz 1.97 + DateTime::TimeZone::America::Lima 1.97 + DateTime::TimeZone::America::Los_Angeles 1.97 + DateTime::TimeZone::America::Maceio 1.97 + DateTime::TimeZone::America::Managua 1.97 + DateTime::TimeZone::America::Manaus 1.97 + DateTime::TimeZone::America::Martinique 1.97 + DateTime::TimeZone::America::Matamoros 1.97 + DateTime::TimeZone::America::Mazatlan 1.97 + DateTime::TimeZone::America::Menominee 1.97 + DateTime::TimeZone::America::Merida 1.97 + DateTime::TimeZone::America::Metlakatla 1.97 + DateTime::TimeZone::America::Mexico_City 1.97 + DateTime::TimeZone::America::Miquelon 1.97 + DateTime::TimeZone::America::Moncton 1.97 + DateTime::TimeZone::America::Monterrey 1.97 + DateTime::TimeZone::America::Montevideo 1.97 + DateTime::TimeZone::America::Nassau 1.97 + DateTime::TimeZone::America::New_York 1.97 + DateTime::TimeZone::America::Nipigon 1.97 + DateTime::TimeZone::America::Nome 1.97 + DateTime::TimeZone::America::Noronha 1.97 + DateTime::TimeZone::America::North_Dakota::Beulah 1.97 + DateTime::TimeZone::America::North_Dakota::Center 1.97 + DateTime::TimeZone::America::North_Dakota::New_Salem 1.97 + DateTime::TimeZone::America::Ojinaga 1.97 + DateTime::TimeZone::America::Panama 1.97 + DateTime::TimeZone::America::Pangnirtung 1.97 + DateTime::TimeZone::America::Paramaribo 1.97 + DateTime::TimeZone::America::Phoenix 1.97 + DateTime::TimeZone::America::Port_au_Prince 1.97 + DateTime::TimeZone::America::Port_of_Spain 1.97 + DateTime::TimeZone::America::Porto_Velho 1.97 + DateTime::TimeZone::America::Puerto_Rico 1.97 + DateTime::TimeZone::America::Rainy_River 1.97 + DateTime::TimeZone::America::Rankin_Inlet 1.97 + DateTime::TimeZone::America::Recife 1.97 + DateTime::TimeZone::America::Regina 1.97 + DateTime::TimeZone::America::Resolute 1.97 + DateTime::TimeZone::America::Rio_Branco 1.97 + DateTime::TimeZone::America::Santarem 1.97 + DateTime::TimeZone::America::Santiago 1.97 + DateTime::TimeZone::America::Santo_Domingo 1.97 + DateTime::TimeZone::America::Sao_Paulo 1.97 + DateTime::TimeZone::America::Scoresbysund 1.97 + DateTime::TimeZone::America::Sitka 1.97 + DateTime::TimeZone::America::St_Johns 1.97 + DateTime::TimeZone::America::Swift_Current 1.97 + DateTime::TimeZone::America::Tegucigalpa 1.97 + DateTime::TimeZone::America::Thule 1.97 + DateTime::TimeZone::America::Thunder_Bay 1.97 + DateTime::TimeZone::America::Tijuana 1.97 + DateTime::TimeZone::America::Toronto 1.97 + DateTime::TimeZone::America::Vancouver 1.97 + DateTime::TimeZone::America::Whitehorse 1.97 + DateTime::TimeZone::America::Winnipeg 1.97 + DateTime::TimeZone::America::Yakutat 1.97 + DateTime::TimeZone::America::Yellowknife 1.97 + DateTime::TimeZone::Antarctica::Casey 1.97 + DateTime::TimeZone::Antarctica::Davis 1.97 + DateTime::TimeZone::Antarctica::DumontDUrville 1.97 + DateTime::TimeZone::Antarctica::Macquarie 1.97 + DateTime::TimeZone::Antarctica::Mawson 1.97 + DateTime::TimeZone::Antarctica::Palmer 1.97 + DateTime::TimeZone::Antarctica::Rothera 1.97 + DateTime::TimeZone::Antarctica::Syowa 1.97 + DateTime::TimeZone::Antarctica::Troll 1.97 + DateTime::TimeZone::Antarctica::Vostok 1.97 + DateTime::TimeZone::Asia::Almaty 1.97 + DateTime::TimeZone::Asia::Amman 1.97 + DateTime::TimeZone::Asia::Anadyr 1.97 + DateTime::TimeZone::Asia::Aqtau 1.97 + DateTime::TimeZone::Asia::Aqtobe 1.97 + DateTime::TimeZone::Asia::Ashgabat 1.97 + DateTime::TimeZone::Asia::Baghdad 1.97 + DateTime::TimeZone::Asia::Baku 1.97 + DateTime::TimeZone::Asia::Bangkok 1.97 + DateTime::TimeZone::Asia::Barnaul 1.97 + DateTime::TimeZone::Asia::Beirut 1.97 + DateTime::TimeZone::Asia::Bishkek 1.97 + DateTime::TimeZone::Asia::Brunei 1.97 + DateTime::TimeZone::Asia::Chita 1.97 + DateTime::TimeZone::Asia::Choibalsan 1.97 + DateTime::TimeZone::Asia::Colombo 1.97 + DateTime::TimeZone::Asia::Damascus 1.97 + DateTime::TimeZone::Asia::Dhaka 1.97 + DateTime::TimeZone::Asia::Dili 1.97 + DateTime::TimeZone::Asia::Dubai 1.97 + DateTime::TimeZone::Asia::Dushanbe 1.97 + DateTime::TimeZone::Asia::Gaza 1.97 + DateTime::TimeZone::Asia::Hebron 1.97 + DateTime::TimeZone::Asia::Ho_Chi_Minh 1.97 + DateTime::TimeZone::Asia::Hong_Kong 1.97 + DateTime::TimeZone::Asia::Hovd 1.97 + DateTime::TimeZone::Asia::Irkutsk 1.97 + DateTime::TimeZone::Asia::Jakarta 1.97 + DateTime::TimeZone::Asia::Jayapura 1.97 + DateTime::TimeZone::Asia::Jerusalem 1.97 + DateTime::TimeZone::Asia::Kabul 1.97 + DateTime::TimeZone::Asia::Kamchatka 1.97 + DateTime::TimeZone::Asia::Karachi 1.97 + DateTime::TimeZone::Asia::Kathmandu 1.97 + DateTime::TimeZone::Asia::Khandyga 1.97 + DateTime::TimeZone::Asia::Kolkata 1.97 + DateTime::TimeZone::Asia::Krasnoyarsk 1.97 + DateTime::TimeZone::Asia::Kuala_Lumpur 1.97 + DateTime::TimeZone::Asia::Kuching 1.97 + DateTime::TimeZone::Asia::Macau 1.97 + DateTime::TimeZone::Asia::Magadan 1.97 + DateTime::TimeZone::Asia::Makassar 1.97 + DateTime::TimeZone::Asia::Manila 1.97 + DateTime::TimeZone::Asia::Nicosia 1.97 + DateTime::TimeZone::Asia::Novokuznetsk 1.97 + DateTime::TimeZone::Asia::Novosibirsk 1.97 + DateTime::TimeZone::Asia::Omsk 1.97 + DateTime::TimeZone::Asia::Oral 1.97 + DateTime::TimeZone::Asia::Pontianak 1.97 + DateTime::TimeZone::Asia::Pyongyang 1.97 + DateTime::TimeZone::Asia::Qatar 1.97 + DateTime::TimeZone::Asia::Qyzylorda 1.97 + DateTime::TimeZone::Asia::Rangoon 1.97 + DateTime::TimeZone::Asia::Riyadh 1.97 + DateTime::TimeZone::Asia::Sakhalin 1.97 + DateTime::TimeZone::Asia::Samarkand 1.97 + DateTime::TimeZone::Asia::Seoul 1.97 + DateTime::TimeZone::Asia::Shanghai 1.97 + DateTime::TimeZone::Asia::Singapore 1.97 + DateTime::TimeZone::Asia::Srednekolymsk 1.97 + DateTime::TimeZone::Asia::Taipei 1.97 + DateTime::TimeZone::Asia::Tashkent 1.97 + DateTime::TimeZone::Asia::Tbilisi 1.97 + DateTime::TimeZone::Asia::Tehran 1.97 + DateTime::TimeZone::Asia::Thimphu 1.97 + DateTime::TimeZone::Asia::Tokyo 1.97 + DateTime::TimeZone::Asia::Ulaanbaatar 1.97 + DateTime::TimeZone::Asia::Urumqi 1.97 + DateTime::TimeZone::Asia::Ust_Nera 1.97 + DateTime::TimeZone::Asia::Vladivostok 1.97 + DateTime::TimeZone::Asia::Yakutsk 1.97 + DateTime::TimeZone::Asia::Yekaterinburg 1.97 + DateTime::TimeZone::Asia::Yerevan 1.97 + DateTime::TimeZone::Atlantic::Azores 1.97 + DateTime::TimeZone::Atlantic::Bermuda 1.97 + DateTime::TimeZone::Atlantic::Canary 1.97 + DateTime::TimeZone::Atlantic::Cape_Verde 1.97 + DateTime::TimeZone::Atlantic::Faroe 1.97 + DateTime::TimeZone::Atlantic::Madeira 1.97 + DateTime::TimeZone::Atlantic::Reykjavik 1.97 + DateTime::TimeZone::Atlantic::South_Georgia 1.97 + DateTime::TimeZone::Atlantic::Stanley 1.97 + DateTime::TimeZone::Australia::Adelaide 1.97 + DateTime::TimeZone::Australia::Brisbane 1.97 + DateTime::TimeZone::Australia::Broken_Hill 1.97 + DateTime::TimeZone::Australia::Currie 1.97 + DateTime::TimeZone::Australia::Darwin 1.97 + DateTime::TimeZone::Australia::Eucla 1.97 + DateTime::TimeZone::Australia::Hobart 1.97 + DateTime::TimeZone::Australia::Lindeman 1.97 + DateTime::TimeZone::Australia::Lord_Howe 1.97 + DateTime::TimeZone::Australia::Melbourne 1.97 + DateTime::TimeZone::Australia::Perth 1.97 + DateTime::TimeZone::Australia::Sydney 1.97 + DateTime::TimeZone::CET 1.97 + DateTime::TimeZone::CST6CDT 1.97 + DateTime::TimeZone::Catalog 1.97 + DateTime::TimeZone::EET 1.97 + DateTime::TimeZone::EST 1.97 + DateTime::TimeZone::EST5EDT 1.97 + DateTime::TimeZone::Europe::Amsterdam 1.97 + DateTime::TimeZone::Europe::Andorra 1.97 + DateTime::TimeZone::Europe::Astrakhan 1.97 + DateTime::TimeZone::Europe::Athens 1.97 + DateTime::TimeZone::Europe::Belgrade 1.97 + DateTime::TimeZone::Europe::Berlin 1.97 + DateTime::TimeZone::Europe::Brussels 1.97 + DateTime::TimeZone::Europe::Bucharest 1.97 + DateTime::TimeZone::Europe::Budapest 1.97 + DateTime::TimeZone::Europe::Chisinau 1.97 + DateTime::TimeZone::Europe::Copenhagen 1.97 + DateTime::TimeZone::Europe::Dublin 1.97 + DateTime::TimeZone::Europe::Gibraltar 1.97 + DateTime::TimeZone::Europe::Helsinki 1.97 + DateTime::TimeZone::Europe::Istanbul 1.97 + DateTime::TimeZone::Europe::Kaliningrad 1.97 + DateTime::TimeZone::Europe::Kiev 1.97 + DateTime::TimeZone::Europe::Lisbon 1.97 + DateTime::TimeZone::Europe::London 1.97 + DateTime::TimeZone::Europe::Luxembourg 1.97 + DateTime::TimeZone::Europe::Madrid 1.97 + DateTime::TimeZone::Europe::Malta 1.97 + DateTime::TimeZone::Europe::Minsk 1.97 + DateTime::TimeZone::Europe::Monaco 1.97 + DateTime::TimeZone::Europe::Moscow 1.97 + DateTime::TimeZone::Europe::Oslo 1.97 + DateTime::TimeZone::Europe::Paris 1.97 + DateTime::TimeZone::Europe::Prague 1.97 + DateTime::TimeZone::Europe::Riga 1.97 + DateTime::TimeZone::Europe::Rome 1.97 + DateTime::TimeZone::Europe::Samara 1.97 + DateTime::TimeZone::Europe::Simferopol 1.97 + DateTime::TimeZone::Europe::Sofia 1.97 + DateTime::TimeZone::Europe::Stockholm 1.97 + DateTime::TimeZone::Europe::Tallinn 1.97 + DateTime::TimeZone::Europe::Tirane 1.97 + DateTime::TimeZone::Europe::Ulyanovsk 1.97 + DateTime::TimeZone::Europe::Uzhgorod 1.97 + DateTime::TimeZone::Europe::Vienna 1.97 + DateTime::TimeZone::Europe::Vilnius 1.97 + DateTime::TimeZone::Europe::Volgograd 1.97 + DateTime::TimeZone::Europe::Warsaw 1.97 + DateTime::TimeZone::Europe::Zaporozhye 1.97 + DateTime::TimeZone::Europe::Zurich 1.97 + DateTime::TimeZone::Floating 1.97 + DateTime::TimeZone::HST 1.97 + DateTime::TimeZone::Indian::Chagos 1.97 + DateTime::TimeZone::Indian::Christmas 1.97 + DateTime::TimeZone::Indian::Cocos 1.97 + DateTime::TimeZone::Indian::Kerguelen 1.97 + DateTime::TimeZone::Indian::Mahe 1.97 + DateTime::TimeZone::Indian::Maldives 1.97 + DateTime::TimeZone::Indian::Mauritius 1.97 + DateTime::TimeZone::Indian::Reunion 1.97 + DateTime::TimeZone::Local 1.97 + DateTime::TimeZone::Local::Android 1.97 + DateTime::TimeZone::Local::Unix 1.97 + DateTime::TimeZone::Local::VMS 1.97 + DateTime::TimeZone::MET 1.97 + DateTime::TimeZone::MST 1.97 + DateTime::TimeZone::MST7MDT 1.97 + DateTime::TimeZone::OffsetOnly 1.97 + DateTime::TimeZone::OlsonDB 1.97 + DateTime::TimeZone::OlsonDB::Change 1.97 + DateTime::TimeZone::OlsonDB::Observance 1.97 + DateTime::TimeZone::OlsonDB::Rule 1.97 + DateTime::TimeZone::OlsonDB::Zone 1.97 + DateTime::TimeZone::PST8PDT 1.97 + DateTime::TimeZone::Pacific::Apia 1.97 + DateTime::TimeZone::Pacific::Auckland 1.97 + DateTime::TimeZone::Pacific::Bougainville 1.97 + DateTime::TimeZone::Pacific::Chatham 1.97 + DateTime::TimeZone::Pacific::Chuuk 1.97 + DateTime::TimeZone::Pacific::Easter 1.97 + DateTime::TimeZone::Pacific::Efate 1.97 + DateTime::TimeZone::Pacific::Enderbury 1.97 + DateTime::TimeZone::Pacific::Fakaofo 1.97 + DateTime::TimeZone::Pacific::Fiji 1.97 + DateTime::TimeZone::Pacific::Funafuti 1.97 + DateTime::TimeZone::Pacific::Galapagos 1.97 + DateTime::TimeZone::Pacific::Gambier 1.97 + DateTime::TimeZone::Pacific::Guadalcanal 1.97 + DateTime::TimeZone::Pacific::Guam 1.97 + DateTime::TimeZone::Pacific::Honolulu 1.97 + DateTime::TimeZone::Pacific::Kiritimati 1.97 + DateTime::TimeZone::Pacific::Kosrae 1.97 + DateTime::TimeZone::Pacific::Kwajalein 1.97 + DateTime::TimeZone::Pacific::Majuro 1.97 + DateTime::TimeZone::Pacific::Marquesas 1.97 + DateTime::TimeZone::Pacific::Nauru 1.97 + DateTime::TimeZone::Pacific::Niue 1.97 + DateTime::TimeZone::Pacific::Norfolk 1.97 + DateTime::TimeZone::Pacific::Noumea 1.97 + DateTime::TimeZone::Pacific::Pago_Pago 1.97 + DateTime::TimeZone::Pacific::Palau 1.97 + DateTime::TimeZone::Pacific::Pitcairn 1.97 + DateTime::TimeZone::Pacific::Pohnpei 1.97 + DateTime::TimeZone::Pacific::Port_Moresby 1.97 + DateTime::TimeZone::Pacific::Rarotonga 1.97 + DateTime::TimeZone::Pacific::Tahiti 1.97 + DateTime::TimeZone::Pacific::Tarawa 1.97 + DateTime::TimeZone::Pacific::Tongatapu 1.97 + DateTime::TimeZone::Pacific::Wake 1.97 + DateTime::TimeZone::Pacific::Wallis 1.97 + DateTime::TimeZone::UTC 1.97 + DateTime::TimeZone::WET 1.97 requirements: Class::Singleton 1.03 Cwd 3 @@ -2241,10 +2280,10 @@ DISTRIBUTIONS Test::Requires 0 parent 0 perl 5.008001 - Devel-CheckLib-1.05 - pathname: M/MA/MATTN/Devel-CheckLib-1.05.tar.gz + Devel-CheckLib-1.07 + pathname: M/MA/MATTN/Devel-CheckLib-1.07.tar.gz provides: - Devel::CheckLib 1.05 + Devel::CheckLib 1.07 requirements: Exporter 0 ExtUtils::MakeMaker 0 @@ -2316,11 +2355,11 @@ DISTRIBUTIONS perl 5.006001 strict 0 warnings 0 - Devel-StackTrace-2.00 - pathname: D/DR/DROLSKY/Devel-StackTrace-2.00.tar.gz + Devel-StackTrace-2.01 + pathname: D/DR/DROLSKY/Devel-StackTrace-2.01.tar.gz provides: - Devel::StackTrace 2.00 - Devel::StackTrace::Frame 2.00 + Devel::StackTrace 2.01 + Devel::StackTrace::Frame 2.01 requirements: ExtUtils::MakeMaker 0 File::Spec 0 @@ -2329,20 +2368,17 @@ DISTRIBUTIONS perl 5.006 strict 0 warnings 0 - Devel-StackTrace-AsHTML-0.14 - pathname: M/MI/MIYAGAWA/Devel-StackTrace-AsHTML-0.14.tar.gz + Devel-StackTrace-AsHTML-0.15 + pathname: M/MI/MIYAGAWA/Devel-StackTrace-AsHTML-0.15.tar.gz provides: - Devel::StackTrace::AsHTML 0.14 + Devel::StackTrace::AsHTML 0.15 requirements: Devel::StackTrace 0 - ExtUtils::MakeMaker 6.59 - Filter::Util::Call 0 - Test::More 0 - perl 5.008001 - Devel-Symdump-2.15 - pathname: A/AN/ANDK/Devel-Symdump-2.15.tar.gz + ExtUtils::MakeMaker 0 + Devel-Symdump-2.16 + pathname: A/AN/ANDK/Devel-Symdump-2.16.tar.gz provides: - Devel::Symdump 2.15 + Devel::Symdump 2.16 Devel::Symdump::Export undef requirements: Compress::Zlib 0 @@ -2437,41 +2473,41 @@ DISTRIBUTIONS perl 5.006 strict 0 warnings 0 - EV-4.21 - pathname: M/ML/MLEHMANN/EV-4.21.tar.gz + EV-4.22 + pathname: M/ML/MLEHMANN/EV-4.22.tar.gz provides: - EV 4.21 + EV 4.22 EV::MakeMaker undef requirements: Canary::Stability 0 ExtUtils::MakeMaker 6.52 common::sense 0 - ElasticSearchX-Model-0.2.2 - pathname: O/OA/OALDERS/ElasticSearchX-Model-0.2.2.tar.gz - provides: - ElasticSearchX::Model v0.2.2 - ElasticSearchX::Model::Bulk v0.2.2 - ElasticSearchX::Model::Document v0.2.2 - ElasticSearchX::Model::Document::EmbeddedRole v0.2.2 - ElasticSearchX::Model::Document::Mapping v0.2.2 - ElasticSearchX::Model::Document::Role v0.2.2 - ElasticSearchX::Model::Document::Set v0.2.2 - ElasticSearchX::Model::Document::Trait::Attribute v0.2.2 - ElasticSearchX::Model::Document::Trait::Class v0.2.2 - ElasticSearchX::Model::Document::Trait::Class::ID v0.2.2 - ElasticSearchX::Model::Document::Trait::Class::Timestamp v0.2.2 - ElasticSearchX::Model::Document::Trait::Class::Version v0.2.2 - ElasticSearchX::Model::Document::Trait::Field::ID v0.2.2 - ElasticSearchX::Model::Document::Trait::Field::TTL v0.2.2 - ElasticSearchX::Model::Document::Trait::Field::Timestamp v0.2.2 - ElasticSearchX::Model::Document::Trait::Field::Version v0.2.2 - ElasticSearchX::Model::Document::Types v0.2.2 - ElasticSearchX::Model::Index v0.2.2 - ElasticSearchX::Model::Role v0.2.2 - ElasticSearchX::Model::Scroll v0.2.2 - ElasticSearchX::Model::Trait::Class v0.2.2 - ElasticSearchX::Model::Tutorial v0.2.2 - ElasticSearchX::Model::Util v0.2.2 + ElasticSearchX-Model-1.0.0 + pathname: O/OA/OALDERS/ElasticSearchX-Model-1.0.0.tar.gz + provides: + ElasticSearchX::Model 1.000000 + ElasticSearchX::Model::Bulk 1.000000 + ElasticSearchX::Model::Document 1.000000 + ElasticSearchX::Model::Document::EmbeddedRole 1.000000 + ElasticSearchX::Model::Document::Mapping 1.000000 + ElasticSearchX::Model::Document::Role 1.000000 + ElasticSearchX::Model::Document::Set 1.000000 + ElasticSearchX::Model::Document::Trait::Attribute 1.000000 + ElasticSearchX::Model::Document::Trait::Class 1.000000 + ElasticSearchX::Model::Document::Trait::Class::ID 1.000000 + ElasticSearchX::Model::Document::Trait::Class::Timestamp 1.000000 + ElasticSearchX::Model::Document::Trait::Class::Version 1.000000 + ElasticSearchX::Model::Document::Trait::Field::ID 1.000000 + ElasticSearchX::Model::Document::Trait::Field::TTL 1.000000 + ElasticSearchX::Model::Document::Trait::Field::Timestamp 1.000000 + ElasticSearchX::Model::Document::Trait::Field::Version 1.000000 + ElasticSearchX::Model::Document::Types 1.000000 + ElasticSearchX::Model::Index 1.000000 + ElasticSearchX::Model::Role 1.000000 + ElasticSearchX::Model::Scroll 1.000000 + ElasticSearchX::Model::Trait::Class 1.000000 + ElasticSearchX::Model::Tutorial 1.000000 + ElasticSearchX::Model::Util 1.000000 requirements: Carp 0 Class::Load 0 @@ -2503,6 +2539,7 @@ DISTRIBUTIONS Email::Abstract::MailInternet 3.008 Email::Abstract::MailMessage 3.008 Email::Abstract::Plugin 3.008 + Test::EmailAbstract undef requirements: Carp 0 Email::Simple 1.998 @@ -2532,33 +2569,36 @@ DISTRIBUTIONS Time::Local 0 strict 0 warnings 0 - Email-Sender-1.300021 - pathname: R/RJ/RJBS/Email-Sender-1.300021.tar.gz - provides: - Email::Sender 1.300021 - Email::Sender::Failure 1.300021 - Email::Sender::Failure::Multi 1.300021 - Email::Sender::Failure::Permanent 1.300021 - Email::Sender::Failure::Temporary 1.300021 - Email::Sender::Manual 1.300021 - Email::Sender::Manual::QuickStart 1.300021 - Email::Sender::Role::CommonSending 1.300021 - Email::Sender::Role::HasMessage 1.300021 - Email::Sender::Simple 1.300021 - Email::Sender::Success 1.300021 - Email::Sender::Success::Partial 1.300021 - Email::Sender::Transport 1.300021 - Email::Sender::Transport::DevNull 1.300021 - Email::Sender::Transport::Failable 1.300021 - Email::Sender::Transport::Maildir 1.300021 - Email::Sender::Transport::Mbox 1.300021 - Email::Sender::Transport::Print 1.300021 - Email::Sender::Transport::SMTP 1.300021 - Email::Sender::Transport::SMTP::Persistent 1.300021 - Email::Sender::Transport::Sendmail 1.300021 - Email::Sender::Transport::Test 1.300021 - Email::Sender::Transport::Wrapper 1.300021 - Email::Sender::Util 1.300021 + Email-Sender-1.300027 + pathname: R/RJ/RJBS/Email-Sender-1.300027.tar.gz + provides: + Email::Sender 1.300027 + Email::Sender::Failure 1.300027 + Email::Sender::Failure::Multi 1.300027 + Email::Sender::Failure::Permanent 1.300027 + Email::Sender::Failure::Temporary 1.300027 + Email::Sender::Manual 1.300027 + Email::Sender::Manual::QuickStart 1.300027 + Email::Sender::Role::CommonSending 1.300027 + Email::Sender::Role::HasMessage 1.300027 + Email::Sender::Simple 1.300027 + Email::Sender::Success 1.300027 + Email::Sender::Success::Partial 1.300027 + Email::Sender::Transport 1.300027 + Email::Sender::Transport::DevNull 1.300027 + Email::Sender::Transport::Failable 1.300027 + Email::Sender::Transport::Maildir 1.300027 + Email::Sender::Transport::Mbox 1.300027 + Email::Sender::Transport::Print 1.300027 + Email::Sender::Transport::SMTP 1.300027 + Email::Sender::Transport::SMTP::Persistent 1.300027 + Email::Sender::Transport::Sendmail 1.300027 + Email::Sender::Transport::Test 1.300027 + Email::Sender::Transport::Wrapper 1.300027 + Email::Sender::Util 1.300027 + Test::Email::SMTPRig undef + Test::Email::Sender::Transport::FailEvery undef + Test::Email::Sender::Util undef requirements: Carp 0 Email::Abstract 3.006 @@ -2573,11 +2613,11 @@ DISTRIBUTIONS IO::Handle 0 List::MoreUtils 0 Module::Runtime 0 - Moo 1.000008 + Moo 2.000000 Moo::Role 0 MooX::Types::MooseLike 0.15 MooX::Types::MooseLike::Base 0 - Net::SMTP 0 + Net::SMTP 3.07 Scalar::Util 0 Sub::Exporter 0 Sub::Exporter::Util 0 @@ -2587,12 +2627,12 @@ DISTRIBUTIONS strict 0 utf8 0 warnings 0 - Email-Simple-2.208 - pathname: R/RJ/RJBS/Email-Simple-2.208.tar.gz + Email-Simple-2.210 + pathname: R/RJ/RJBS/Email-Simple-2.210.tar.gz provides: - Email::Simple 2.208 - Email::Simple::Creator 2.208 - Email::Simple::Header 2.208 + Email::Simple 2.210 + Email::Simple::Creator 2.210 + Email::Simple::Header 2.210 requirements: Carp 0 Email::Date::Format 0 @@ -2600,10 +2640,10 @@ DISTRIBUTIONS perl 5.008 strict 0 warnings 0 - Email-Valid-1.198 - pathname: R/RJ/RJBS/Email-Valid-1.198.tar.gz + Email-Valid-1.200 + pathname: R/RJ/RJBS/Email-Valid-1.200.tar.gz provides: - Email::Valid 1.198 + Email::Valid 1.200 requirements: ExtUtils::MakeMaker 0 Mail::Address 0 @@ -2611,15 +2651,6 @@ DISTRIBUTIONS Scalar::Util 0 Test::More 0 perl 5.006 - Encode-HanExtra-0.23 - pathname: A/AU/AUDREYT/Encode-HanExtra-0.23.tar.gz - provides: - Encode::HanExtra 0.23 - Encode::TW::Unisys::SOSI1 1.01 - Encode::TW::Unisys::SOSI2 1.01 - requirements: - Encode 1.41 - ExtUtils::MakeMaker 0 Encode-Locale-1.05 pathname: G/GA/GAAS/Encode-Locale-1.05.tar.gz provides: @@ -2640,9 +2671,6 @@ DISTRIBUTIONS pathname: S/SH/SHLOMIF/Error-0.17024.tar.gz provides: Error 0.17024 - Error::Simple 0.17024 - Error::WarnDie undef - Error::subs undef requirements: Module::Build 0.280801 Scalar::Util 0 @@ -2663,11 +2691,11 @@ DISTRIBUTIONS overload 0 strict 0 warnings 0 - Exception-Class-1.39 - pathname: D/DR/DROLSKY/Exception-Class-1.39.tar.gz + Exception-Class-1.40 + pathname: D/DR/DROLSKY/Exception-Class-1.40.tar.gz provides: - Exception::Class 1.39 - Exception::Class::Base 1.39 + Exception::Class 1.40 + Exception::Class::Base 1.40 requirements: Class::Data::Inheritable 0.02 Devel::StackTrace 2.00 @@ -2698,11 +2726,12 @@ DISTRIBUTIONS Test::Simple 0.88 aliased 0 perl v5.8.0 - Exporter-Lite-0.07 - pathname: N/NE/NEILB/Exporter-Lite-0.07.tar.gz + Exporter-Lite-0.08 + pathname: N/NE/NEILB/Exporter-Lite-0.08.tar.gz provides: - Exporter::Lite 0.07 + Exporter::Lite 0.08 requirements: + Carp 0 ExtUtils::MakeMaker 6.3 perl 5.006 strict 0 @@ -2724,16 +2753,33 @@ DISTRIBUTIONS ExtUtils::MakeMaker 6.30 strict 0 warnings 0 - ExtUtils-Depends-0.404 - pathname: X/XA/XAOC/ExtUtils-Depends-0.404.tar.gz + ExtUtils-Depends-0.405 + pathname: X/XA/XAOC/ExtUtils-Depends-0.405.tar.gz provides: - ExtUtils::Depends 0.404 + ExtUtils::Depends 0.405 requirements: Data::Dumper 0 ExtUtils::MakeMaker 0 File::Spec 0 IO::File 0 perl 5.006 + ExtUtils-HasCompiler-0.013 + pathname: L/LE/LEONT/ExtUtils-HasCompiler-0.013.tar.gz + provides: + ExtUtils::HasCompiler 0.013 + requirements: + Carp 0 + DynaLoader 0 + Exporter 0 + ExtUtils::MakeMaker 0 + ExtUtils::Mksymlists 0 + File::Basename 0 + File::Spec::Functions 0 + File::Temp 0 + base 0 + perl 5.006 + strict 0 + warnings 0 ExtUtils-Helpers-0.022 pathname: L/LE/LEONT/ExtUtils-Helpers-0.022.tar.gz provides: @@ -2764,10 +2810,10 @@ DISTRIBUTIONS perl 5.006 strict 0 warnings 0 - ExtUtils-MakeMaker-CPANfile-0.06 - pathname: I/IS/ISHIGAKI/ExtUtils-MakeMaker-CPANfile-0.06.tar.gz + ExtUtils-MakeMaker-CPANfile-0.07 + pathname: I/IS/ISHIGAKI/ExtUtils-MakeMaker-CPANfile-0.07.tar.gz provides: - ExtUtils::MakeMaker::CPANfile 0.06 + ExtUtils::MakeMaker::CPANfile 0.07 requirements: Cwd 0 ExtUtils::MakeMaker 6.17 @@ -2799,32 +2845,32 @@ DISTRIBUTIONS File::Spec 0 Symbol 0 Test::More 0.47 - Facebook-Graph-1.1100 - pathname: R/RI/RIZEN/Facebook-Graph-1.1100.tar.gz - provides: - Facebook::Graph 1.1100 - Facebook::Graph::AccessToken 1.1100 - Facebook::Graph::AccessToken::Response 1.1100 - Facebook::Graph::Authorize 1.1100 - Facebook::Graph::BatchRequests 1.1100 - Facebook::Graph::Page::Feed 1.1100 - Facebook::Graph::Picture 1.1100 - Facebook::Graph::Publish 1.1100 - Facebook::Graph::Publish::Checkin 1.1100 - Facebook::Graph::Publish::Comment 1.1100 - Facebook::Graph::Publish::Like 1.1100 - Facebook::Graph::Publish::Link 1.1100 - Facebook::Graph::Publish::PageTab 1.1100 - Facebook::Graph::Publish::Photo 1.1100 - Facebook::Graph::Publish::Post 1.1100 - Facebook::Graph::Publish::RSVPAttending 1.1100 - Facebook::Graph::Publish::RSVPDeclined 1.1100 - Facebook::Graph::Publish::RSVPMaybe 1.1100 - Facebook::Graph::Query 1.1100 - Facebook::Graph::Request 1.1100 - Facebook::Graph::Response 1.1100 - Facebook::Graph::Role::Uri 1.1100 - Facebook::Graph::Session 1.1100 + Facebook-Graph-1.1101 + pathname: R/RI/RIZEN/Facebook-Graph-1.1101.tar.gz + provides: + Facebook::Graph 1.1101 + Facebook::Graph::AccessToken 1.1101 + Facebook::Graph::AccessToken::Response 1.1101 + Facebook::Graph::Authorize 1.1101 + Facebook::Graph::BatchRequests 1.1101 + Facebook::Graph::Page::Feed 1.1101 + Facebook::Graph::Picture 1.1101 + Facebook::Graph::Publish 1.1101 + Facebook::Graph::Publish::Checkin 1.1101 + Facebook::Graph::Publish::Comment 1.1101 + Facebook::Graph::Publish::Like 1.1101 + Facebook::Graph::Publish::Link 1.1101 + Facebook::Graph::Publish::PageTab 1.1101 + Facebook::Graph::Publish::Photo 1.1101 + Facebook::Graph::Publish::Post 1.1101 + Facebook::Graph::Publish::RSVPAttending 1.1101 + Facebook::Graph::Publish::RSVPDeclined 1.1101 + Facebook::Graph::Publish::RSVPMaybe 1.1101 + Facebook::Graph::Query 1.1101 + Facebook::Graph::Request 1.1101 + Facebook::Graph::Response 1.1101 + Facebook::Graph::Role::Uri 1.1101 + Facebook::Graph::Session 1.1101 requirements: DateTime 0.61 DateTime::Format::Strptime 1.4000 @@ -2861,12 +2907,10 @@ DISTRIBUTIONS File-Find-Object-v0.2.13 pathname: S/SH/SHLOMIF/File-Find-Object-v0.2.13.tar.gz provides: - File::Find::Object v0.2.13 - File::Find::Object::Base v0.2.13 - File::Find::Object::DeepPath v0.2.13 - File::Find::Object::PathComp v0.2.13 - File::Find::Object::Result v0.2.13 - File::Find::Object::TopPath v0.2.13 + File::Find::Object 0.002013 + File::Find::Object::Base 0.002013 + File::Find::Object::PathComp 0.002013 + File::Find::Object::Result 0.002013 requirements: Carp 0 Class::XSAccessor 0 @@ -2880,10 +2924,10 @@ DISTRIBUTIONS perl 5.008 strict 0 warnings 0 - File-Find-Rule-0.33 - pathname: R/RC/RCLAMP/File-Find-Rule-0.33.tar.gz + File-Find-Rule-0.34 + pathname: R/RC/RCLAMP/File-Find-Rule-0.34.tar.gz provides: - File::Find::Rule 0.33 + File::Find::Rule 0.34 File::Find::Rule::Test::ATeam undef requirements: ExtUtils::MakeMaker 0 @@ -2954,16 +2998,20 @@ DISTRIBUTIONS ExtUtils::MakeMaker 0 File::Spec 0 Test::More 0.88 - File-Remove-1.52 - pathname: A/AD/ADAMK/File-Remove-1.52.tar.gz + File-Remove-1.56 + pathname: S/SH/SHLOMIF/File-Remove-1.56.tar.gz provides: - File::Remove 1.52 + File::Remove 1.56 requirements: Cwd 3.29 - ExtUtils::MakeMaker 6.36 + ExtUtils::MakeMaker 0 + File::Glob 0 + File::Path 0 File::Spec 3.29 - Test::More 0.42 - perl 5.00503 + constant 0 + perl 5.006 + strict 0 + vars 0 File-ShareDir-1.102 pathname: R/RE/REHSACK/File-ShareDir-1.102.tar.gz provides: @@ -3010,7 +3058,6 @@ DISTRIBUTIONS ExtUtils::MakeMaker 0 Fcntl 0 POSIX 0 - perl 5.004 File-Slurp-Tiny-0.004 pathname: L/LE/LEONT/File-Slurp-Tiny-0.004.tar.gz provides: @@ -3040,10 +3087,10 @@ DISTRIBUTIONS File::Sync 0.11 requirements: ExtUtils::MakeMaker 0 - File-Which-1.19 - pathname: P/PL/PLICEASE/File-Which-1.19.tar.gz + File-Which-1.21 + pathname: P/PL/PLICEASE/File-Which-1.21.tar.gz provides: - File::Which 1.19 + File::Which 1.21 requirements: ExtUtils::MakeMaker 0 perl 5.006 @@ -3122,10 +3169,10 @@ DISTRIBUTIONS IPC::Open3 0 Package::Pkg 0.0014 Test::Most 0 - Git-Helpers-0.000003 - pathname: O/OA/OALDERS/Git-Helpers-0.000003.tar.gz + Git-Helpers-0.000004 + pathname: O/OA/OALDERS/Git-Helpers-0.000004.tar.gz provides: - Git::Helpers 0.000003 + Git::Helpers 0.000004 requirements: Carp 0 ExtUtils::MakeMaker 0 @@ -3237,14 +3284,14 @@ DISTRIBUTIONS HTTP::Request::Common 6.03 URI 1.10 perl 5.008001 - HTML-Parser-3.71 - pathname: G/GA/GAAS/HTML-Parser-3.71.tar.gz + HTML-Parser-3.72 + pathname: G/GA/GAAS/HTML-Parser-3.72.tar.gz provides: HTML::Entities 3.69 - HTML::Filter 3.57 + HTML::Filter 3.72 HTML::HeadParser 3.71 HTML::LinkExtor 3.69 - HTML::Parser 3.71 + HTML::Parser 3.72 HTML::PullParser 3.57 HTML::TokeParser 3.69 requirements: @@ -3336,6 +3383,7 @@ DISTRIBUTIONS HTTP::Body::UrlEncoded 1.22 HTTP::Body::XForms 1.22 HTTP::Body::XFormsMultipart 1.22 + PAML undef requirements: Carp 0 Digest::MD5 0 @@ -3396,10 +3444,10 @@ DISTRIBUTIONS ExtUtils::MakeMaker 0 Time::Local 0 perl 5.006002 - HTTP-Headers-Fast-0.19 - pathname: T/TO/TOKUHIROM/HTTP-Headers-Fast-0.19.tar.gz + HTTP-Headers-Fast-0.20 + pathname: T/TO/TOKUHIROM/HTTP-Headers-Fast-0.20.tar.gz provides: - HTTP::Headers::Fast 0.19 + HTTP::Headers::Fast 0.20 requirements: HTTP::Date 0 Module::Build 0.38 @@ -3477,16 +3525,6 @@ DISTRIBUTIONS ExtUtils::MakeMaker 6.36 Socket 1.94 Test::More 0 - HTTP-Server-Simple-PSGI-0.16 - pathname: M/MI/MIYAGAWA/HTTP-Server-Simple-PSGI-0.16.tar.gz - provides: - HTTP::Server::Simple::PSGI 0.16 - HTTP::Server::Simple::PSGI::Writer 0.16 - Plack::Handler::HTTP::Server::Simple 0.16 - Plack::Handler::HTTP::Server::Simple::PSGIServer 0.16 - requirements: - ExtUtils::MakeMaker 6.30 - HTTP::Server::Simple 0.42 HTTP-Tiny-0.056 pathname: D/DA/DAGOLDEN/HTTP-Tiny-0.056.tar.gz provides: @@ -3532,19 +3570,10 @@ DISTRIBUTIONS requirements: ExtUtils::MakeMaker 0 perl 5.008001 - Hijk-0.24 - pathname: A/AV/AVAR/Hijk-0.24.tar.gz - provides: - Hijk 0.24 - requirements: - CPAN::Meta 0 - ExtUtils::MakeMaker 6.36 - Time::HiRes 0 Hook-LexWrap-0.25 pathname: E/ET/ETHER/Hook-LexWrap-0.25.tar.gz provides: Hook::LexWrap 0.25 - Hook::LexWrap::Cleanup 0.25 requirements: Carp 0 ExtUtils::MakeMaker 0 @@ -3612,14 +3641,15 @@ DISTRIBUTIONS Encode 2.10 Exporter 5.57 ExtUtils::MakeMaker 6.30 - IO-Interactive-0.0.6 - pathname: B/BD/BDFOY/IO-Interactive-0.0.6.tar.gz + IO-Interactive-1.021 + pathname: B/BD/BDFOY/IO-Interactive-1.021.tar.gz provides: - IO::Interactive v0.0.6 + IO::Interactive 1.021 requirements: - ExtUtils::MakeMaker 0 - Test::More 0 - version 0 + ExtUtils::MakeMaker 6.64 + File::Spec::Functions 0 + perl 5.008 + version 0.78 IO-Socket-IP-0.37 pathname: P/PE/PEVANS/IO-Socket-IP-0.37.tar.gz provides: @@ -3628,20 +3658,21 @@ DISTRIBUTIONS IO::Socket 0 Socket 1.97 Test::More 0.88 - IO-Socket-SSL-2.020 - pathname: S/SU/SULLR/IO-Socket-SSL-2.020.tar.gz + IO-Socket-SSL-2.025 + pathname: S/SU/SULLR/IO-Socket-SSL-2.025.tar.gz provides: - IO::Socket::SSL 2.020 + IO::Socket::SSL 2.025 IO::Socket::SSL::Intercept 2.014 - IO::Socket::SSL::OCSP_Cache 2.020 - IO::Socket::SSL::OCSP_Resolver 2.020 + IO::Socket::SSL::OCSP_Cache 2.025 + IO::Socket::SSL::OCSP_Resolver 2.025 IO::Socket::SSL::PublicSuffix undef - IO::Socket::SSL::SSL_Context 2.020 - IO::Socket::SSL::SSL_HANDLE 2.020 - IO::Socket::SSL::Session_Cache 2.020 + IO::Socket::SSL::SSL_Context 2.025 + IO::Socket::SSL::SSL_HANDLE 2.025 + IO::Socket::SSL::Session_Cache 2.025 IO::Socket::SSL::Utils 2.014 requirements: ExtUtils::MakeMaker 0 + Mozilla::CA 0 Net::SSLeay 1.46 Scalar::Util 0 IO-String-1.08 @@ -3650,15 +3681,6 @@ DISTRIBUTIONS IO::String 1.08 requirements: ExtUtils::MakeMaker 0 - IO-Tty-1.12 - pathname: T/TO/TODDR/IO-Tty-1.12.tar.gz - provides: - IO::Pty 1.12 - IO::Tty 1.12 - IO::Tty::Constant undef - requirements: - ExtUtils::MakeMaker 0 - Test::More 0 IO-stringy-2.111 pathname: D/DS/DSKOLL/IO-stringy-2.111.tar.gz provides: @@ -3687,7 +3709,6 @@ DISTRIBUTIONS IPC::Run::Win32Pump 0.90 requirements: ExtUtils::MakeMaker 0 - IO::Pty 1.08 Test::More 0.47 IPC-Run3-0.048 pathname: R/RJ/RJBS/IPC-Run3-0.048.tar.gz @@ -3697,14 +3718,6 @@ DISTRIBUTIONS ExtUtils::MakeMaker 0 Test::More 0.31 Time::HiRes 0 - IPC-ShareLite-0.17 - pathname: A/AN/ANDYA/IPC-ShareLite-0.17.tar.gz - provides: - IPC::ShareLite undef - requirements: - ExtUtils::MakeMaker 0 - File::Spec 0 - Test::More 0 IPC-System-Simple-1.25 pathname: P/PJ/PJF/IPC-System-Simple-1.25.tar.gz provides: @@ -3752,6 +3765,7 @@ DISTRIBUTIONS JSON::MaybeXS 1.003005 requirements: Carp 0 + Cpanel::JSON::XS 2.3310 ExtUtils::CBuilder 0.27 ExtUtils::MakeMaker 0 File::Spec 0 @@ -3759,27 +3773,37 @@ DISTRIBUTIONS JSON::PP 2.27202 Scalar::Util 0 perl 5.006 - JSON-XS-3.01 - pathname: M/ML/MLEHMANN/JSON-XS-3.01.tar.gz + JSON-PP-2.27300 + pathname: M/MA/MAKAMAKA/JSON-PP-2.27300.tar.gz provides: - JSON::XS 3.01 + JSON::PP 2.27300 + JSON::PP::Boolean 2.27300 + JSON::PP::IncrParser 2.27300 requirements: ExtUtils::MakeMaker 0 + Test::More 0 + JSON-XS-3.02 + pathname: M/ML/MLEHMANN/JSON-XS-3.02.tar.gz + provides: + JSON::XS 3.02 + requirements: + Canary::Stability 0 + ExtUtils::MakeMaker 6.52 Types::Serialiser 0 common::sense 0 - LWP-ConsoleLogger-0.000020 - pathname: O/OA/OALDERS/LWP-ConsoleLogger-0.000020.tar.gz + LWP-ConsoleLogger-0.000023 + pathname: O/OA/OALDERS/LWP-ConsoleLogger-0.000023.tar.gz provides: - LWP::ConsoleLogger 0.000020 - LWP::ConsoleLogger::Easy 0.000020 + LWP::ConsoleLogger 0.000023 + LWP::ConsoleLogger::Easy 0.000023 requirements: - Data::Printer 0 + Data::Printer 0.36 DateTime 0 ExtUtils::MakeMaker 0 HTML::Restrict 0 HTTP::Body 0 HTTP::CookieMonster 0 - JSON::MaybeXS 0 + JSON::MaybeXS 1.003005 Log::Dispatch 0 Module::Build 0.28 Module::Load::Conditional 0 @@ -3864,10 +3888,10 @@ DISTRIBUTIONS Net::DNS::Paranoid 0.07 parent 0 perl 5.008008 - Lexical-SealRequireHints-0.009 - pathname: Z/ZE/ZEFRAM/Lexical-SealRequireHints-0.009.tar.gz + Lexical-SealRequireHints-0.010 + pathname: Z/ZE/ZEFRAM/Lexical-SealRequireHints-0.010.tar.gz provides: - Lexical::SealRequireHints 0.009 + Lexical::SealRequireHints 0.010 requirements: Module::Build 0 Test::More 0.41 @@ -3921,22 +3945,49 @@ DISTRIBUTIONS IPC::Cmd 0 XSLoader 0 base 0 - Log-Any-1.032 - pathname: D/DA/DAGOLDEN/Log-Any-1.032.tar.gz - provides: - Log::Any 1.032 - Log::Any::Adapter 1.032 - Log::Any::Adapter::Base 1.032 - Log::Any::Adapter::File 1.032 - Log::Any::Adapter::Null 1.032 - Log::Any::Adapter::Stderr 1.032 - Log::Any::Adapter::Stdout 1.032 - Log::Any::Adapter::Test 1.032 - Log::Any::Adapter::Util 1.032 - Log::Any::Manager 1.032 - Log::Any::Proxy 1.032 - Log::Any::Proxy::Test 1.032 - Log::Any::Test 1.032 + List-SomeUtils-0.51 + pathname: D/DR/DROLSKY/List-SomeUtils-0.51.tar.gz + provides: + List::SomeUtils 0.51 + List::SomeUtils::PP 0.51 + requirements: + Carp 0 + Exporter::Tiny 0 + ExtUtils::HasCompiler 0 + ExtUtils::MakeMaker 0 + List::SomeUtils::XS 0 + Module::Implementation 0 + Scalar::Util 0 + perl 5.006 + strict 0 + vars 0 + warnings 0 + List-SomeUtils-XS-0.51 + pathname: D/DR/DROLSKY/List-SomeUtils-XS-0.51.tar.gz + provides: + List::SomeUtils::XS 0.51 + requirements: + ExtUtils::MakeMaker 0 + XSLoader 0 + perl 5.006 + strict 0 + warnings 0 + Log-Any-1.040 + pathname: D/DA/DAGOLDEN/Log-Any-1.040.tar.gz + provides: + Log::Any 1.040 + Log::Any::Adapter 1.040 + Log::Any::Adapter::Base 1.040 + Log::Any::Adapter::File 1.040 + Log::Any::Adapter::Null 1.040 + Log::Any::Adapter::Stderr 1.040 + Log::Any::Adapter::Stdout 1.040 + Log::Any::Adapter::Test 1.040 + Log::Any::Adapter::Util 1.040 + Log::Any::Manager 1.040 + Log::Any::Proxy 1.040 + Log::Any::Proxy::Test 1.040 + Log::Any::Test 1.040 requirements: B 0 Carp 0 @@ -3946,24 +3997,31 @@ DISTRIBUTIONS Fcntl 0 IO::File 0 Test::Builder 0 - base 0 constant 0 perl 5.008001 strict 0 warnings 0 - Log-Contextual-0.006005 - pathname: F/FR/FREW/Log-Contextual-0.006005.tar.gz - provides: - Log::Contextual 0.006005 - Log::Contextual::Easy::Default 0.006005 - Log::Contextual::Easy::Package 0.006005 - Log::Contextual::Role::Router 0.006005 - Log::Contextual::Role::Router::SetLogger 0.006005 - Log::Contextual::Role::Router::WithLogger 0.006005 - Log::Contextual::Router 0.006005 - Log::Contextual::SimpleLogger 0.006005 - Log::Contextual::TeeLogger 0.006005 - Log::Contextual::WarnLogger 0.006005 + Log-Contextual-0.007000 + pathname: F/FR/FREW/Log-Contextual-0.007000.tar.gz + provides: + BaseLogger undef + DefaultImportLogger undef + DumbLogger2 undef + Log::Contextual 0.007000 + Log::Contextual::Easy::Default 0.007000 + Log::Contextual::Easy::Package 0.007000 + Log::Contextual::Role::Router 0.007000 + Log::Contextual::Role::Router::HasLogger 0.007000 + Log::Contextual::Role::Router::SetLogger 0.007000 + Log::Contextual::Role::Router::WithLogger 0.007000 + Log::Contextual::Router 0.007000 + Log::Contextual::SimpleLogger 0.007000 + Log::Contextual::TeeLogger 0.007000 + Log::Contextual::WarnLogger 0.007000 + My::Module undef + My::Module2 undef + TestExporter undef + TestRouter undef requirements: Carp 0 Data::Dumper::Concise 0 @@ -3971,33 +4029,36 @@ DISTRIBUTIONS ExtUtils::MakeMaker 0 Moo 1.003 Scalar::Util 0 - Log-Dispatch-2.51 - pathname: D/DR/DROLSKY/Log-Dispatch-2.51.tar.gz - provides: - Log::Dispatch 2.51 - Log::Dispatch::ApacheLog 2.51 - Log::Dispatch::Base 2.51 - Log::Dispatch::Code 2.51 - Log::Dispatch::Email 2.51 - Log::Dispatch::Email::MIMELite 2.51 - Log::Dispatch::Email::MailSend 2.51 - Log::Dispatch::Email::MailSender 2.51 - Log::Dispatch::Email::MailSendmail 2.51 - Log::Dispatch::File 2.51 - Log::Dispatch::File::Locked 2.51 - Log::Dispatch::Handle 2.51 - Log::Dispatch::Null 2.51 - Log::Dispatch::Output 2.51 - Log::Dispatch::Screen 2.51 - Log::Dispatch::Syslog 2.51 + Log-Dispatch-2.54 + pathname: D/DR/DROLSKY/Log-Dispatch-2.54.tar.gz + provides: + Log::Dispatch 2.54 + Log::Dispatch::ApacheLog 2.54 + Log::Dispatch::Base 2.54 + Log::Dispatch::Code 2.54 + Log::Dispatch::Email 2.54 + Log::Dispatch::Email::MIMELite 2.54 + Log::Dispatch::Email::MailSend 2.54 + Log::Dispatch::Email::MailSender 2.54 + Log::Dispatch::Email::MailSendmail 2.54 + Log::Dispatch::File 2.54 + Log::Dispatch::File::Locked 2.54 + Log::Dispatch::Handle 2.54 + Log::Dispatch::Null 2.54 + Log::Dispatch::Output 2.54 + Log::Dispatch::Screen 2.54 + Log::Dispatch::Syslog 2.54 + Log::Dispatch::Vars 2.54 requirements: Carp 0 Devel::GlobalDestruction 0 Dist::CheckConflicts 0.02 Encode 0 + Exporter 0 ExtUtils::MakeMaker 0 Fcntl 0 IO::Handle 0 + JSON::PP 2.27300 Module::Runtime 0 Params::Validate 1.03 Scalar::Util 0 @@ -4006,22 +4067,19 @@ DISTRIBUTIONS perl 5.006 strict 0 warnings 0 - Log-Log4perl-1.46 - pathname: M/MS/MSCHILLI/Log-Log4perl-1.46.tar.gz + Log-Log4perl-1.47 + pathname: M/MS/MSCHILLI/Log-Log4perl-1.47.tar.gz provides: L4pResurrectable 0.01 - Log::Log4perl 1.46 + Log::Log4perl 1.47 Log::Log4perl::Appender undef - Log::Log4perl::Appender::Buffer undef Log::Log4perl::Appender::DBI undef Log::Log4perl::Appender::File undef - Log::Log4perl::Appender::Limit undef Log::Log4perl::Appender::RRDs undef Log::Log4perl::Appender::Screen undef Log::Log4perl::Appender::ScreenColoredLevels undef Log::Log4perl::Appender::Socket undef Log::Log4perl::Appender::String undef - Log::Log4perl::Appender::Synchronized undef Log::Log4perl::Appender::TestArrayBuffer undef Log::Log4perl::Appender::TestBuffer undef Log::Log4perl::Appender::TestFileCreeper undef @@ -4065,31 +4123,31 @@ DISTRIBUTIONS File::Path 2.0606 File::Spec 0.82 Test::More 0.45 - MCE-1.608 - pathname: M/MA/MARIOROY/MCE-1.608.tar.gz - provides: - MCE 1.608 - MCE::Candy 1.608 - MCE::Core::Input::Generator 1.608 - MCE::Core::Input::Handle 1.608 - MCE::Core::Input::Iterator 1.608 - MCE::Core::Input::Request 1.608 - MCE::Core::Input::Sequence 1.608 - MCE::Core::Manager 1.608 - MCE::Core::Validation 1.608 - MCE::Core::Worker 1.608 - MCE::Flow 1.608 - MCE::Grep 1.608 - MCE::Loop 1.608 - MCE::Map 1.608 - MCE::Mutex 1.608 - MCE::Queue 1.608 - MCE::Relay 1.608 - MCE::Signal 1.608 - MCE::Step 1.608 - MCE::Stream 1.608 - MCE::Subs 1.608 - MCE::Util 1.608 + MCE-1.705 + pathname: M/MA/MARIOROY/MCE-1.705.tar.gz + provides: + MCE 1.705 + MCE::Candy 1.705 + MCE::Core::Input::Generator 1.705 + MCE::Core::Input::Handle 1.705 + MCE::Core::Input::Iterator 1.705 + MCE::Core::Input::Request 1.705 + MCE::Core::Input::Sequence 1.705 + MCE::Core::Manager 1.705 + MCE::Core::Validation 1.705 + MCE::Core::Worker 1.705 + MCE::Flow 1.705 + MCE::Grep 1.705 + MCE::Loop 1.705 + MCE::Map 1.705 + MCE::Mutex 1.705 + MCE::Queue 1.705 + MCE::Relay 1.705 + MCE::Signal 1.705 + MCE::Step 1.705 + MCE::Stream 1.705 + MCE::Subs 1.705 + MCE::Util 1.705 requirements: Carp 0 ExtUtils::MakeMaker 0 @@ -4097,14 +4155,18 @@ DISTRIBUTIONS File::Path 0 Getopt::Long 0 IO::Handle 0 + POSIX 0 Scalar::Util 0 Socket 0 Storable 2.04 Symbol 0 Time::HiRes 0 + base 0 bytes 0 constant 0 perl 5.008 + strict 0 + warnings 0 MIME-Base64-URLSafe-0.01 pathname: K/KA/KAZUHO/MIME-Base64-URLSafe-0.01.tar.gz provides: @@ -4119,16 +4181,15 @@ DISTRIBUTIONS requirements: CPAN 0 Encode 1.98 - Encode::HanExtra 0.20 ExtUtils::MakeMaker 6.42 Test::More 0 perl 5.005 - MIME-Types-2.11 - pathname: M/MA/MARKOV/MIME-Types-2.11.tar.gz + MIME-Types-2.13 + pathname: M/MA/MARKOV/MIME-Types-2.13.tar.gz provides: - MIME::Type 2.11 - MIME::Types 2.11 - MojoX::MIME::Types 2.11 + MIME::Type 2.13 + MIME::Types 2.13 + MojoX::MIME::Types 2.13 requirements: ExtUtils::MakeMaker 0 File::Basename 0 @@ -4218,9 +4279,36 @@ DISTRIBUTIONS perl 5.008 strict 0 warnings 0 + Minion-5.03 + pathname: S/SR/SRI/Minion-5.03.tar.gz + provides: + Minion 5.03 + Minion::Backend undef + Minion::Backend::Pg undef + Minion::Command::minion undef + Minion::Command::minion::job undef + Minion::Command::minion::worker undef + Minion::Job undef + Minion::Worker undef + Mojolicious::Plugin::Minion undef + requirements: + ExtUtils::MakeMaker 0 + Mojolicious 6.0 + Minion-Backend-SQLite-0.004 + pathname: D/DB/DBOOK/Minion-Backend-SQLite-0.004.tar.gz + provides: + Minion::Backend::SQLite 0.004 + requirements: + Minion 4.0 + Module::Build::Tiny 0.034 + Mojo::SQLite 0.020 + Sys::Hostname 0 + Time::HiRes 0 + perl 5.010001 Mixin-Linewise-0.108 pathname: R/RJ/RJBS/Mixin-Linewise-0.108.tar.gz provides: + MLTests undef Mixin::Linewise 0.108 Mixin::Linewise::Readers 0.108 Mixin::Linewise::Writers 0.108 @@ -4233,28 +4321,28 @@ DISTRIBUTIONS perl 5.008001 strict 0 warnings 0 - Module-Build-0.4214 - pathname: L/LE/LEONT/Module-Build-0.4214.tar.gz - provides: - Module::Build 0.4214 - Module::Build::Base 0.4214 - Module::Build::Compat 0.4214 - Module::Build::Config 0.4214 - Module::Build::Cookbook 0.4214 - Module::Build::Dumper 0.4214 - Module::Build::Notes 0.4214 - Module::Build::PPMMaker 0.4214 - Module::Build::Platform::Default 0.4214 - Module::Build::Platform::MacOS 0.4214 - Module::Build::Platform::Unix 0.4214 - Module::Build::Platform::VMS 0.4214 - Module::Build::Platform::VOS 0.4214 - Module::Build::Platform::Windows 0.4214 - Module::Build::Platform::aix 0.4214 - Module::Build::Platform::cygwin 0.4214 - Module::Build::Platform::darwin 0.4214 - Module::Build::Platform::os2 0.4214 - Module::Build::PodParser 0.4214 + Module-Build-0.4216 + pathname: L/LE/LEONT/Module-Build-0.4216.tar.gz + provides: + Module::Build 0.4216 + Module::Build::Base 0.4216 + Module::Build::Compat 0.4216 + Module::Build::Config 0.4216 + Module::Build::Cookbook 0.4216 + Module::Build::Dumper 0.4216 + Module::Build::Notes 0.4216 + Module::Build::PPMMaker 0.4216 + Module::Build::Platform::Default 0.4216 + Module::Build::Platform::MacOS 0.4216 + Module::Build::Platform::Unix 0.4216 + Module::Build::Platform::VMS 0.4216 + Module::Build::Platform::VOS 0.4216 + Module::Build::Platform::Windows 0.4216 + Module::Build::Platform::aix 0.4216 + Module::Build::Platform::cygwin 0.4216 + Module::Build::Platform::darwin 0.4216 + Module::Build::Platform::os2 0.4216 + Module::Build::PodParser 0.4216 requirements: CPAN::Meta 2.142060 CPAN::Meta::YAML 0.003 @@ -4277,11 +4365,11 @@ DISTRIBUTIONS Parse::CPAN::Meta 1.4401 Perl::OSType 1 Pod::Man 2.17 - Test::Harness 3.16 + TAP::Harness 3.29 Test::More 0.49 Text::Abbrev 0 Text::ParseWords 0 - perl 5.008000 + perl 5.006001 version 0.87 Module-Build-Tiny-0.039 pathname: L/LE/LEONT/Module-Build-Tiny-0.039.tar.gz @@ -4323,10 +4411,10 @@ DISTRIBUTIONS XSLoader 0 parent 0 perl 5.008005 - Module-CPANfile-1.1001 - pathname: M/MI/MIYAGAWA/Module-CPANfile-1.1001.tar.gz + Module-CPANfile-1.1002 + pathname: M/MI/MIYAGAWA/Module-CPANfile-1.1002.tar.gz provides: - Module::CPANfile 1.1001 + Module::CPANfile 1.1002 Module::CPANfile::Environment undef Module::CPANfile::Prereq undef Module::CPANfile::Prereqs undef @@ -4335,6 +4423,7 @@ DISTRIBUTIONS CPAN::Meta 2.12091 CPAN::Meta::Prereqs 2.12091 ExtUtils::MakeMaker 0 + JSON::PP 2.27300 parent 0 Module-Extract-Namespaces-1.02 pathname: B/BD/BDFOY/Module-Extract-Namespaces-1.02.tar.gz @@ -4398,69 +4487,6 @@ DISTRIBUTIONS Try::Tiny 0 strict 0 warnings 0 - Module-Install-1.16 - pathname: E/ET/ETHER/Module-Install-1.16.tar.gz - provides: - Module::AutoInstall 1.16 - Module::Install 1.16 - Module::Install::Admin 1.16 - Module::Install::Admin::Bundle 1.16 - Module::Install::Admin::Compiler 1.16 - Module::Install::Admin::Find 1.16 - Module::Install::Admin::Include 1.16 - Module::Install::Admin::Makefile 1.16 - Module::Install::Admin::Manifest 1.16 - Module::Install::Admin::Metadata 1.16 - Module::Install::Admin::ScanDeps 1.16 - Module::Install::Admin::WriteAll 1.16 - Module::Install::AutoInstall 1.16 - Module::Install::Base 1.16 - Module::Install::Base::FakeAdmin 1.16 - Module::Install::Bundle 1.16 - Module::Install::Can 1.16 - Module::Install::Compiler 1.16 - Module::Install::DSL 1.16 - Module::Install::Deprecated 1.16 - Module::Install::External 1.16 - Module::Install::Fetch 1.16 - Module::Install::Include 1.16 - Module::Install::Inline 1.16 - Module::Install::MakeMaker 1.16 - Module::Install::Makefile 1.16 - Module::Install::Metadata 1.16 - Module::Install::PAR 1.16 - Module::Install::Run 1.16 - Module::Install::Scripts 1.16 - Module::Install::Share 1.16 - Module::Install::Win32 1.16 - Module::Install::With 1.16 - Module::Install::WriteAll 1.16 - inc::Module::Install 1.16 - inc::Module::Install::DSL 1.16 - requirements: - Devel::PPPort 3.16 - ExtUtils::Install 1.52 - ExtUtils::MakeMaker 6.59 - ExtUtils::ParseXS 2.19 - File::Path 0 - File::Remove 1.42 - File::Spec 3.28 - Module::Build 0.29 - Module::CoreList 2.17 - Module::ScanDeps 1.09 - Parse::CPAN::Meta 1.4413 - Test::Harness 3.13 - Test::More 0.86 - YAML::Tiny 1.38 - autodie 0 - perl 5.006 - Module-Install-AuthorTests-0.002 - pathname: R/RJ/RJBS/Module-Install-AuthorTests-0.002.tar.gz - provides: - Module::Install::AuthorTests 0.002 - requirements: - ExtUtils::MakeMaker 0 - Module::Install 0 Module-Metadata-1.000027 pathname: E/ET/ETHER/Module-Metadata-1.000027.tar.gz provides: @@ -4512,42 +4538,178 @@ DISTRIBUTIONS perl 5.006 strict 0 warnings 0 - Module-ScanDeps-1.20 - pathname: R/RS/RSCHUPP/Module-ScanDeps-1.20.tar.gz + Mojo-Pg-2.25 + pathname: S/SR/SRI/Mojo-Pg-2.25.tar.gz provides: - Module::ScanDeps 1.20 + Mojo::Pg 2.25 + Mojo::Pg::Database undef + Mojo::Pg::Migrations undef + Mojo::Pg::PubSub undef + Mojo::Pg::Results undef + Mojo::Pg::Transaction undef requirements: - ExtUtils::MakeMaker 6.59 - File::Spec 0 + DBD::Pg 3.005001 + ExtUtils::MakeMaker 0 + Mojolicious 6.0 + Mojo-SQLite-0.021 + pathname: D/DB/DBOOK/Mojo-SQLite-0.021.tar.gz + provides: + Mojo::SQLite 0.021 + Mojo::SQLite::Database 0.021 + Mojo::SQLite::Migrations 0.021 + Mojo::SQLite::PubSub 0.021 + Mojo::SQLite::Results 0.021 + Mojo::SQLite::Transaction 0.021 + requirements: + Carp 0 + DBD::SQLite 1.50 + DBI 1.627 + File::Spec::Functions 0 File::Temp 0 - Getopt::Long 0 - Module::Metadata 0 - Test::More 0 - Test::Requires 0 - Text::ParseWords 0 - perl 5.008001 - version 0 - Moo-2.000002 - pathname: H/HA/HAARG/Moo-2.000002.tar.gz + Module::Build::Tiny 0.034 + Mojolicious 6.14 + Scalar::Util 0 + URI 1.69 + URI::db 0.15 + URI::file 4.21 + perl 5.010001 + Mojolicious-6.58 + pathname: S/SR/SRI/Mojolicious-6.58.tar.gz + provides: + Mojo undef + Mojo::Asset undef + Mojo::Asset::File undef + Mojo::Asset::Memory undef + Mojo::Base undef + Mojo::ByteStream undef + Mojo::Cache undef + Mojo::Collection undef + Mojo::Content undef + Mojo::Content::MultiPart undef + Mojo::Content::Single undef + Mojo::Cookie undef + Mojo::Cookie::Request undef + Mojo::Cookie::Response undef + Mojo::DOM undef + Mojo::DOM::CSS undef + Mojo::DOM::HTML undef + Mojo::Date undef + Mojo::EventEmitter undef + Mojo::Exception undef + Mojo::Headers undef + Mojo::HelloWorld undef + Mojo::Home undef + Mojo::IOLoop undef + Mojo::IOLoop::Client undef + Mojo::IOLoop::Delay undef + Mojo::IOLoop::Server undef + Mojo::IOLoop::Stream undef + Mojo::JSON undef + Mojo::JSON::Pointer undef + Mojo::Loader undef + Mojo::Log undef + Mojo::Message undef + Mojo::Message::Request undef + Mojo::Message::Response undef + Mojo::Parameters undef + Mojo::Path undef + Mojo::Reactor undef + Mojo::Reactor::EV undef + Mojo::Reactor::Poll undef + Mojo::Server undef + Mojo::Server::CGI undef + Mojo::Server::Daemon undef + Mojo::Server::Hypnotoad undef + Mojo::Server::Morbo undef + Mojo::Server::PSGI undef + Mojo::Server::PSGI::_IO undef + Mojo::Server::Prefork undef + Mojo::Template undef + Mojo::Transaction undef + Mojo::Transaction::HTTP undef + Mojo::Transaction::WebSocket undef + Mojo::URL undef + Mojo::Upload undef + Mojo::UserAgent undef + Mojo::UserAgent::CookieJar undef + Mojo::UserAgent::Proxy undef + Mojo::UserAgent::Server undef + Mojo::UserAgent::Transactor undef + Mojo::Util undef + Mojo::WebSocket undef + Mojolicious 6.58 + Mojolicious::Command undef + Mojolicious::Command::cgi undef + Mojolicious::Command::cpanify undef + Mojolicious::Command::daemon undef + Mojolicious::Command::eval undef + Mojolicious::Command::generate undef + Mojolicious::Command::generate::app undef + Mojolicious::Command::generate::lite_app undef + Mojolicious::Command::generate::makefile undef + Mojolicious::Command::generate::plugin 0.01 + Mojolicious::Command::get undef + Mojolicious::Command::inflate undef + Mojolicious::Command::prefork undef + Mojolicious::Command::psgi undef + Mojolicious::Command::routes undef + Mojolicious::Command::test undef + Mojolicious::Command::version undef + Mojolicious::Commands undef + Mojolicious::Controller undef + Mojolicious::Lite undef + Mojolicious::Plugin undef + Mojolicious::Plugin::Charset undef + Mojolicious::Plugin::Config undef + Mojolicious::Plugin::Config::Sandbox undef + Mojolicious::Plugin::DefaultHelpers undef + Mojolicious::Plugin::EPLRenderer undef + Mojolicious::Plugin::EPRenderer undef + Mojolicious::Plugin::HeaderCondition undef + Mojolicious::Plugin::JSONConfig undef + Mojolicious::Plugin::Mount undef + Mojolicious::Plugin::PODRenderer undef + Mojolicious::Plugin::TagHelpers undef + Mojolicious::Plugins undef + Mojolicious::Renderer undef + Mojolicious::Routes undef + Mojolicious::Routes::Match undef + Mojolicious::Routes::Pattern undef + Mojolicious::Routes::Route undef + Mojolicious::Sessions undef + Mojolicious::Static undef + Mojolicious::Types undef + Mojolicious::Validator undef + Mojolicious::Validator::Validation undef + Test::Mojo undef + ojo undef + requirements: + ExtUtils::MakeMaker 0 + IO::Socket::IP 0.37 + JSON::PP 2.27103 + Pod::Simple 3.09 + Time::Local 1.2 + Moo-2.001001 + pathname: H/HA/HAARG/Moo-2.001001.tar.gz provides: Method::Generate::Accessor undef Method::Generate::BuildAll undef Method::Generate::Constructor undef Method::Generate::DemolishAll undef Method::Inliner undef - Moo 2.000002 + Moo 2.001001 Moo::HandleMoose undef Moo::HandleMoose::FakeConstructor undef Moo::HandleMoose::FakeMetaClass undef Moo::HandleMoose::_TypeMap undef Moo::Object undef - Moo::Role 2.000002 + Moo::Role 2.001001 Moo::_Utils undef Moo::_mro undef Moo::_strictures undef Moo::sification undef - Sub::Defer 2.000002 - Sub::Quote 2.000002 + Sub::Defer 2.001001 + Sub::Quote 2.001001 oo undef requirements: Class::Method::Modifiers 1.1 @@ -4582,13 +4744,19 @@ DISTRIBUTIONS Moo::Role 1.003000 namespace::clean 0 perl 5.008001 - MooX-Options-4.020 - pathname: C/CE/CELOGEEK/MooX-Options-4.020.tar.gz - provides: - MooX::Options 4.020 - MooX::Options::Descriptive 4.020 - MooX::Options::Descriptive::Usage 4.020 - MooX::Options::Role 4.020 + MooX-Options-4.022 + pathname: C/CE/CELOGEEK/MooX-Options-4.022.tar.gz + provides: + MooX::Options 4.022 + MooX::Options::Descriptive 4.022 + MooX::Options::Descriptive::Usage 4.022 + MooX::Options::Role 4.022 + TestNamespaceClean undef + t::Test undef + t::lib::MooXCmdTest undef + t::lib::MooXCmdTest::Cmd::test1 undef + t::lib::MooXCmdTest::Cmd::test1::Cmd::test2 undef + t::lib::MooXCmdTest::Cmd::test3 undef requirements: Carp 0 Data::Record 0 @@ -4649,357 +4817,394 @@ DISTRIBUTIONS MooX::Types::MooseLike 0.23 Test::Fatal 0.003 Test::More 0.96 - Moose-2.1604 - pathname: E/ET/ETHER/Moose-2.1604.tar.gz - provides: - Class::MOP 2.1604 - Class::MOP::Attribute 2.1604 - Class::MOP::Class 2.1604 - Class::MOP::Instance 2.1604 - Class::MOP::Method 2.1604 - Class::MOP::Method::Accessor 2.1604 - Class::MOP::Method::Constructor 2.1604 - Class::MOP::Method::Generated 2.1604 - Class::MOP::Method::Inlined 2.1604 - Class::MOP::Method::Meta 2.1604 - Class::MOP::Method::Wrapped 2.1604 - Class::MOP::Module 2.1604 - Class::MOP::Object 2.1604 - Class::MOP::Overload 2.1604 - Class::MOP::Package 2.1604 - Moose 2.1604 - Moose::Cookbook 2.1604 - Moose::Cookbook::Basics::BankAccount_MethodModifiersAndSubclassing 2.1604 - Moose::Cookbook::Basics::BinaryTree_AttributeFeatures 2.1604 - Moose::Cookbook::Basics::BinaryTree_BuilderAndLazyBuild 2.1604 - Moose::Cookbook::Basics::Company_Subtypes 2.1604 - Moose::Cookbook::Basics::DateTime_ExtendingNonMooseParent 2.1604 - Moose::Cookbook::Basics::Document_AugmentAndInner 2.1604 - Moose::Cookbook::Basics::Genome_OverloadingSubtypesAndCoercion 2.1604 - Moose::Cookbook::Basics::HTTP_SubtypesAndCoercion 2.1604 - Moose::Cookbook::Basics::Immutable 2.1604 - Moose::Cookbook::Basics::Person_BUILDARGSAndBUILD 2.1604 - Moose::Cookbook::Basics::Point_AttributesAndSubclassing 2.1604 - Moose::Cookbook::Extending::Debugging_BaseClassRole 2.1604 - Moose::Cookbook::Extending::ExtensionOverview 2.1604 - Moose::Cookbook::Extending::Mooseish_MooseSugar 2.1604 - Moose::Cookbook::Legacy::Debugging_BaseClassReplacement 2.1604 - Moose::Cookbook::Legacy::Labeled_AttributeMetaclass 2.1604 - Moose::Cookbook::Legacy::Table_ClassMetaclass 2.1604 - Moose::Cookbook::Meta::GlobRef_InstanceMetaclass 2.1604 - Moose::Cookbook::Meta::Labeled_AttributeTrait 2.1604 - Moose::Cookbook::Meta::PrivateOrPublic_MethodMetaclass 2.1604 - Moose::Cookbook::Meta::Table_MetaclassTrait 2.1604 - Moose::Cookbook::Meta::WhyMeta 2.1604 - Moose::Cookbook::Roles::ApplicationToInstance 2.1604 - Moose::Cookbook::Roles::Comparable_CodeReuse 2.1604 - Moose::Cookbook::Roles::Restartable_AdvancedComposition 2.1604 - Moose::Cookbook::Snack::Keywords 2.1604 - Moose::Cookbook::Snack::Types 2.1604 - Moose::Cookbook::Style 2.1604 - Moose::Exception 2.1604 - Moose::Exception::AccessorMustReadWrite 2.1604 - Moose::Exception::AddParameterizableTypeTakesParameterizableType 2.1604 - Moose::Exception::AddRoleTakesAMooseMetaRoleInstance 2.1604 - Moose::Exception::AddRoleToARoleTakesAMooseMetaRole 2.1604 - Moose::Exception::ApplyTakesABlessedInstance 2.1604 - Moose::Exception::AttachToClassNeedsAClassMOPClassInstanceOrASubclass 2.1604 - Moose::Exception::AttributeConflictInRoles 2.1604 - Moose::Exception::AttributeConflictInSummation 2.1604 - Moose::Exception::AttributeExtensionIsNotSupportedInRoles 2.1604 - Moose::Exception::AttributeIsRequired 2.1604 - Moose::Exception::AttributeMustBeAnClassMOPMixinAttributeCoreOrSubclass 2.1604 - Moose::Exception::AttributeNamesDoNotMatch 2.1604 - Moose::Exception::AttributeValueIsNotAnObject 2.1604 - Moose::Exception::AttributeValueIsNotDefined 2.1604 - Moose::Exception::AutoDeRefNeedsArrayRefOrHashRef 2.1604 - Moose::Exception::BadOptionFormat 2.1604 - Moose::Exception::BothBuilderAndDefaultAreNotAllowed 2.1604 - Moose::Exception::BuilderDoesNotExist 2.1604 - Moose::Exception::BuilderMethodNotSupportedForAttribute 2.1604 - Moose::Exception::BuilderMethodNotSupportedForInlineAttribute 2.1604 - Moose::Exception::BuilderMustBeAMethodName 2.1604 - Moose::Exception::CallingMethodOnAnImmutableInstance 2.1604 - Moose::Exception::CallingReadOnlyMethodOnAnImmutableInstance 2.1604 - Moose::Exception::CanExtendOnlyClasses 2.1604 - Moose::Exception::CanOnlyConsumeRole 2.1604 - Moose::Exception::CanOnlyWrapBlessedCode 2.1604 - Moose::Exception::CanReblessOnlyIntoASubclass 2.1604 - Moose::Exception::CanReblessOnlyIntoASuperclass 2.1604 - Moose::Exception::CannotAddAdditionalTypeCoercionsToUnion 2.1604 - Moose::Exception::CannotAddAsAnAttributeToARole 2.1604 - Moose::Exception::CannotApplyBaseClassRolesToRole 2.1604 - Moose::Exception::CannotAssignValueToReadOnlyAccessor 2.1604 - Moose::Exception::CannotAugmentIfLocalMethodPresent 2.1604 - Moose::Exception::CannotAugmentNoSuperMethod 2.1604 - Moose::Exception::CannotAutoDerefWithoutIsa 2.1604 - Moose::Exception::CannotAutoDereferenceTypeConstraint 2.1604 - Moose::Exception::CannotCalculateNativeType 2.1604 - Moose::Exception::CannotCallAnAbstractBaseMethod 2.1604 - Moose::Exception::CannotCallAnAbstractMethod 2.1604 - Moose::Exception::CannotCoerceAWeakRef 2.1604 - Moose::Exception::CannotCoerceAttributeWhichHasNoCoercion 2.1604 - Moose::Exception::CannotCreateHigherOrderTypeWithoutATypeParameter 2.1604 - Moose::Exception::CannotCreateMethodAliasLocalMethodIsPresent 2.1604 - Moose::Exception::CannotCreateMethodAliasLocalMethodIsPresentInClass 2.1604 - Moose::Exception::CannotDelegateLocalMethodIsPresent 2.1604 - Moose::Exception::CannotDelegateWithoutIsa 2.1604 - Moose::Exception::CannotFindDelegateMetaclass 2.1604 - Moose::Exception::CannotFindType 2.1604 - Moose::Exception::CannotFindTypeGivenToMatchOnType 2.1604 - Moose::Exception::CannotFixMetaclassCompatibility 2.1604 - Moose::Exception::CannotGenerateInlineConstraint 2.1604 - Moose::Exception::CannotInitializeMooseMetaRoleComposite 2.1604 - Moose::Exception::CannotInlineTypeConstraintCheck 2.1604 - Moose::Exception::CannotLocatePackageInINC 2.1604 - Moose::Exception::CannotMakeMetaclassCompatible 2.1604 - Moose::Exception::CannotOverrideALocalMethod 2.1604 - Moose::Exception::CannotOverrideBodyOfMetaMethods 2.1604 - Moose::Exception::CannotOverrideLocalMethodIsPresent 2.1604 - Moose::Exception::CannotOverrideNoSuperMethod 2.1604 - Moose::Exception::CannotRegisterUnnamedTypeConstraint 2.1604 - Moose::Exception::CannotUseLazyBuildAndDefaultSimultaneously 2.1604 - Moose::Exception::CircularReferenceInAlso 2.1604 - Moose::Exception::ClassDoesNotHaveInitMeta 2.1604 - Moose::Exception::ClassDoesTheExcludedRole 2.1604 - Moose::Exception::ClassNamesDoNotMatch 2.1604 - Moose::Exception::CloneObjectExpectsAnInstanceOfMetaclass 2.1604 - Moose::Exception::CodeBlockMustBeACodeRef 2.1604 - Moose::Exception::CoercingWithoutCoercions 2.1604 - Moose::Exception::CoercionAlreadyExists 2.1604 - Moose::Exception::CoercionNeedsTypeConstraint 2.1604 - Moose::Exception::ConflictDetectedInCheckRoleExclusions 2.1604 - Moose::Exception::ConflictDetectedInCheckRoleExclusionsInToClass 2.1604 - Moose::Exception::ConstructClassInstanceTakesPackageName 2.1604 - Moose::Exception::CouldNotCreateMethod 2.1604 - Moose::Exception::CouldNotCreateWriter 2.1604 - Moose::Exception::CouldNotEvalConstructor 2.1604 - Moose::Exception::CouldNotEvalDestructor 2.1604 - Moose::Exception::CouldNotFindTypeConstraintToCoerceFrom 2.1604 - Moose::Exception::CouldNotGenerateInlineAttributeMethod 2.1604 - Moose::Exception::CouldNotLocateTypeConstraintForUnion 2.1604 - Moose::Exception::CouldNotParseType 2.1604 - Moose::Exception::CreateMOPClassTakesArrayRefOfAttributes 2.1604 - Moose::Exception::CreateMOPClassTakesArrayRefOfSuperclasses 2.1604 - Moose::Exception::CreateMOPClassTakesHashRefOfMethods 2.1604 - Moose::Exception::CreateTakesArrayRefOfRoles 2.1604 - Moose::Exception::CreateTakesHashRefOfAttributes 2.1604 - Moose::Exception::CreateTakesHashRefOfMethods 2.1604 - Moose::Exception::DefaultToMatchOnTypeMustBeCodeRef 2.1604 - Moose::Exception::DelegationToAClassWhichIsNotLoaded 2.1604 - Moose::Exception::DelegationToARoleWhichIsNotLoaded 2.1604 - Moose::Exception::DelegationToATypeWhichIsNotAClass 2.1604 - Moose::Exception::DoesRequiresRoleName 2.1604 - Moose::Exception::EnumCalledWithAnArrayRefAndAdditionalArgs 2.1604 - Moose::Exception::EnumValuesMustBeString 2.1604 - Moose::Exception::ExtendsMissingArgs 2.1604 - Moose::Exception::HandlesMustBeAHashRef 2.1604 - Moose::Exception::IllegalInheritedOptions 2.1604 - Moose::Exception::IllegalMethodTypeToAddMethodModifier 2.1604 - Moose::Exception::IncompatibleMetaclassOfSuperclass 2.1604 - Moose::Exception::InitMetaRequiresClass 2.1604 - Moose::Exception::InitializeTakesUnBlessedPackageName 2.1604 - Moose::Exception::InstanceBlessedIntoWrongClass 2.1604 - Moose::Exception::InstanceMustBeABlessedReference 2.1604 - Moose::Exception::InvalidArgPassedToMooseUtilMetaRole 2.1604 - Moose::Exception::InvalidArgumentToMethod 2.1604 - Moose::Exception::InvalidArgumentsToTraitAliases 2.1604 - Moose::Exception::InvalidBaseTypeGivenToCreateParameterizedTypeConstraint 2.1604 - Moose::Exception::InvalidHandleValue 2.1604 - Moose::Exception::InvalidHasProvidedInARole 2.1604 - Moose::Exception::InvalidNameForType 2.1604 - Moose::Exception::InvalidOverloadOperator 2.1604 - Moose::Exception::InvalidRoleApplication 2.1604 - Moose::Exception::InvalidTypeConstraint 2.1604 - Moose::Exception::InvalidTypeGivenToCreateParameterizedTypeConstraint 2.1604 - Moose::Exception::InvalidValueForIs 2.1604 - Moose::Exception::IsaDoesNotDoTheRole 2.1604 - Moose::Exception::IsaLacksDoesMethod 2.1604 - Moose::Exception::LazyAttributeNeedsADefault 2.1604 - Moose::Exception::Legacy 2.1604 - Moose::Exception::MOPAttributeNewNeedsAttributeName 2.1604 - Moose::Exception::MatchActionMustBeACodeRef 2.1604 - Moose::Exception::MessageParameterMustBeCodeRef 2.1604 - Moose::Exception::MetaclassIsAClassNotASubclassOfGivenMetaclass 2.1604 - Moose::Exception::MetaclassIsARoleNotASubclassOfGivenMetaclass 2.1604 - Moose::Exception::MetaclassIsNotASubclassOfGivenMetaclass 2.1604 - Moose::Exception::MetaclassMustBeASubclassOfMooseMetaClass 2.1604 - Moose::Exception::MetaclassMustBeASubclassOfMooseMetaRole 2.1604 - Moose::Exception::MetaclassMustBeDerivedFromClassMOPClass 2.1604 - Moose::Exception::MetaclassNotLoaded 2.1604 - Moose::Exception::MetaclassTypeIncompatible 2.1604 - Moose::Exception::MethodExpectedAMetaclassObject 2.1604 - Moose::Exception::MethodExpectsFewerArgs 2.1604 - Moose::Exception::MethodExpectsMoreArgs 2.1604 - Moose::Exception::MethodModifierNeedsMethodName 2.1604 - Moose::Exception::MethodNameConflictInRoles 2.1604 - Moose::Exception::MethodNameNotFoundInInheritanceHierarchy 2.1604 - Moose::Exception::MethodNameNotGiven 2.1604 - Moose::Exception::MustDefineAMethodName 2.1604 - Moose::Exception::MustDefineAnAttributeName 2.1604 - Moose::Exception::MustDefineAnOverloadOperator 2.1604 - Moose::Exception::MustHaveAtLeastOneValueToEnumerate 2.1604 - Moose::Exception::MustPassAHashOfOptions 2.1604 - Moose::Exception::MustPassAMooseMetaRoleInstanceOrSubclass 2.1604 - Moose::Exception::MustPassAPackageNameOrAnExistingClassMOPPackageInstance 2.1604 - Moose::Exception::MustPassEvenNumberOfArguments 2.1604 - Moose::Exception::MustPassEvenNumberOfAttributeOptions 2.1604 - Moose::Exception::MustProvideANameForTheAttribute 2.1604 - Moose::Exception::MustSpecifyAtleastOneMethod 2.1604 - Moose::Exception::MustSpecifyAtleastOneRole 2.1604 - Moose::Exception::MustSpecifyAtleastOneRoleToApplicant 2.1604 - Moose::Exception::MustSupplyAClassMOPAttributeInstance 2.1604 - Moose::Exception::MustSupplyADelegateToMethod 2.1604 - Moose::Exception::MustSupplyAMetaclass 2.1604 - Moose::Exception::MustSupplyAMooseMetaAttributeInstance 2.1604 - Moose::Exception::MustSupplyAnAccessorTypeToConstructWith 2.1604 - Moose::Exception::MustSupplyAnAttributeToConstructWith 2.1604 - Moose::Exception::MustSupplyArrayRefAsCurriedArguments 2.1604 - Moose::Exception::MustSupplyPackageNameAndName 2.1604 - Moose::Exception::NeedsTypeConstraintUnionForTypeCoercionUnion 2.1604 - Moose::Exception::NeitherAttributeNorAttributeNameIsGiven 2.1604 - Moose::Exception::NeitherClassNorClassNameIsGiven 2.1604 - Moose::Exception::NeitherRoleNorRoleNameIsGiven 2.1604 - Moose::Exception::NeitherTypeNorTypeNameIsGiven 2.1604 - Moose::Exception::NoAttributeFoundInSuperClass 2.1604 - Moose::Exception::NoBodyToInitializeInAnAbstractBaseClass 2.1604 - Moose::Exception::NoCasesMatched 2.1604 - Moose::Exception::NoConstraintCheckForTypeConstraint 2.1604 - Moose::Exception::NoDestructorClassSpecified 2.1604 - Moose::Exception::NoImmutableTraitSpecifiedForClass 2.1604 - Moose::Exception::NoParentGivenToSubtype 2.1604 - Moose::Exception::OnlyInstancesCanBeCloned 2.1604 - Moose::Exception::OperatorIsRequired 2.1604 - Moose::Exception::OverloadConflictInSummation 2.1604 - Moose::Exception::OverloadRequiresAMetaClass 2.1604 - Moose::Exception::OverloadRequiresAMetaMethod 2.1604 - Moose::Exception::OverloadRequiresAMetaOverload 2.1604 - Moose::Exception::OverloadRequiresAMethodNameOrCoderef 2.1604 - Moose::Exception::OverloadRequiresAnOperator 2.1604 - Moose::Exception::OverloadRequiresNamesForCoderef 2.1604 - Moose::Exception::OverrideConflictInComposition 2.1604 - Moose::Exception::OverrideConflictInSummation 2.1604 - Moose::Exception::PackageDoesNotUseMooseExporter 2.1604 - Moose::Exception::PackageNameAndNameParamsNotGivenToWrap 2.1604 - Moose::Exception::PackagesAndModulesAreNotCachable 2.1604 - Moose::Exception::ParameterIsNotSubtypeOfParent 2.1604 - Moose::Exception::ReferencesAreNotAllowedAsDefault 2.1604 - Moose::Exception::RequiredAttributeLacksInitialization 2.1604 - Moose::Exception::RequiredAttributeNeedsADefault 2.1604 - Moose::Exception::RequiredMethodsImportedByClass 2.1604 - Moose::Exception::RequiredMethodsNotImplementedByClass 2.1604 - Moose::Exception::Role::Attribute 2.1604 - Moose::Exception::Role::AttributeName 2.1604 - Moose::Exception::Role::Class 2.1604 - Moose::Exception::Role::EitherAttributeOrAttributeName 2.1604 - Moose::Exception::Role::Instance 2.1604 - Moose::Exception::Role::InstanceClass 2.1604 - Moose::Exception::Role::InvalidAttributeOptions 2.1604 - Moose::Exception::Role::Method 2.1604 - Moose::Exception::Role::ParamsHash 2.1604 - Moose::Exception::Role::Role 2.1604 - Moose::Exception::Role::RoleForCreate 2.1604 - Moose::Exception::Role::RoleForCreateMOPClass 2.1604 - Moose::Exception::Role::TypeConstraint 2.1604 - Moose::Exception::RoleDoesTheExcludedRole 2.1604 - Moose::Exception::RoleExclusionConflict 2.1604 - Moose::Exception::RoleNameRequired 2.1604 - Moose::Exception::RoleNameRequiredForMooseMetaRole 2.1604 - Moose::Exception::RolesDoNotSupportAugment 2.1604 - Moose::Exception::RolesDoNotSupportExtends 2.1604 - Moose::Exception::RolesDoNotSupportInner 2.1604 - Moose::Exception::RolesDoNotSupportRegexReferencesForMethodModifiers 2.1604 - Moose::Exception::RolesInCreateTakesAnArrayRef 2.1604 - Moose::Exception::RolesListMustBeInstancesOfMooseMetaRole 2.1604 - Moose::Exception::SingleParamsToNewMustBeHashRef 2.1604 - Moose::Exception::TriggerMustBeACodeRef 2.1604 - Moose::Exception::TypeConstraintCannotBeUsedForAParameterizableType 2.1604 - Moose::Exception::TypeConstraintIsAlreadyCreated 2.1604 - Moose::Exception::TypeParameterMustBeMooseMetaType 2.1604 - Moose::Exception::UnableToCanonicalizeHandles 2.1604 - Moose::Exception::UnableToCanonicalizeNonRolePackage 2.1604 - Moose::Exception::UnableToRecognizeDelegateMetaclass 2.1604 - Moose::Exception::UndefinedHashKeysPassedToMethod 2.1604 - Moose::Exception::UnionCalledWithAnArrayRefAndAdditionalArgs 2.1604 - Moose::Exception::UnionTakesAtleastTwoTypeNames 2.1604 - Moose::Exception::ValidationFailedForInlineTypeConstraint 2.1604 - Moose::Exception::ValidationFailedForTypeConstraint 2.1604 - Moose::Exception::WrapTakesACodeRefToBless 2.1604 - Moose::Exception::WrongTypeConstraintGiven 2.1604 - Moose::Exporter 2.1604 - Moose::Intro 2.1604 - Moose::Manual 2.1604 - Moose::Manual::Attributes 2.1604 - Moose::Manual::BestPractices 2.1604 - Moose::Manual::Classes 2.1604 - Moose::Manual::Concepts 2.1604 - Moose::Manual::Construction 2.1604 - Moose::Manual::Contributing 2.1604 - Moose::Manual::Delegation 2.1604 - Moose::Manual::Delta 2.1604 - Moose::Manual::Exceptions 2.1604 - Moose::Manual::Exceptions::Manifest 2.1604 - Moose::Manual::FAQ 2.1604 - Moose::Manual::MOP 2.1604 - Moose::Manual::MethodModifiers 2.1604 - Moose::Manual::MooseX 2.1604 - Moose::Manual::Resources 2.1604 - Moose::Manual::Roles 2.1604 - Moose::Manual::Support 2.1604 - Moose::Manual::Types 2.1604 - Moose::Manual::Unsweetened 2.1604 - Moose::Meta::Attribute 2.1604 - Moose::Meta::Attribute::Custom::Moose 2.1604 - Moose::Meta::Attribute::Native 2.1604 - Moose::Meta::Attribute::Native::Trait::Array 2.1604 - Moose::Meta::Attribute::Native::Trait::Bool 2.1604 - Moose::Meta::Attribute::Native::Trait::Code 2.1604 - Moose::Meta::Attribute::Native::Trait::Counter 2.1604 - Moose::Meta::Attribute::Native::Trait::Hash 2.1604 - Moose::Meta::Attribute::Native::Trait::Number 2.1604 - Moose::Meta::Attribute::Native::Trait::String 2.1604 - Moose::Meta::Class 2.1604 - Moose::Meta::Instance 2.1604 - Moose::Meta::Method 2.1604 - Moose::Meta::Method::Accessor 2.1604 - Moose::Meta::Method::Augmented 2.1604 - Moose::Meta::Method::Constructor 2.1604 - Moose::Meta::Method::Delegation 2.1604 - Moose::Meta::Method::Destructor 2.1604 - Moose::Meta::Method::Meta 2.1604 - Moose::Meta::Method::Overridden 2.1604 - Moose::Meta::Role 2.1604 - Moose::Meta::Role::Application 2.1604 - Moose::Meta::Role::Application::RoleSummation 2.1604 - Moose::Meta::Role::Application::ToClass 2.1604 - Moose::Meta::Role::Application::ToInstance 2.1604 - Moose::Meta::Role::Application::ToRole 2.1604 - Moose::Meta::Role::Attribute 2.1604 - Moose::Meta::Role::Composite 2.1604 - Moose::Meta::Role::Method 2.1604 - Moose::Meta::Role::Method::Conflicting 2.1604 - Moose::Meta::Role::Method::Required 2.1604 - Moose::Meta::TypeCoercion 2.1604 - Moose::Meta::TypeCoercion::Union 2.1604 - Moose::Meta::TypeConstraint 2.1604 - Moose::Meta::TypeConstraint::Class 2.1604 - Moose::Meta::TypeConstraint::DuckType 2.1604 - Moose::Meta::TypeConstraint::Enum 2.1604 - Moose::Meta::TypeConstraint::Parameterizable 2.1604 - Moose::Meta::TypeConstraint::Parameterized 2.1604 - Moose::Meta::TypeConstraint::Registry 2.1604 - Moose::Meta::TypeConstraint::Role 2.1604 - Moose::Meta::TypeConstraint::Union 2.1604 - Moose::Object 2.1604 - Moose::Role 2.1604 - Moose::Spec::Role 2.1604 - Moose::Unsweetened 2.1604 - Moose::Util 2.1604 - Moose::Util::MetaRole 2.1604 - Moose::Util::TypeConstraints 2.1604 - Test::Moose 2.1604 - metaclass 2.1604 - oose 2.1604 + Moose-2.1605 + pathname: E/ET/ETHER/Moose-2.1605.tar.gz + provides: + Class::MOP 2.1605 + Class::MOP::Attribute 2.1605 + Class::MOP::Class 2.1605 + Class::MOP::Class::Immutable::Trait undef + Class::MOP::Deprecated undef + Class::MOP::Instance 2.1605 + Class::MOP::Method 2.1605 + Class::MOP::Method::Accessor 2.1605 + Class::MOP::Method::Constructor 2.1605 + Class::MOP::Method::Generated 2.1605 + Class::MOP::Method::Inlined 2.1605 + Class::MOP::Method::Meta 2.1605 + Class::MOP::Method::Wrapped 2.1605 + Class::MOP::MiniTrait undef + Class::MOP::Mixin undef + Class::MOP::Mixin::AttributeCore undef + Class::MOP::Mixin::HasAttributes undef + Class::MOP::Mixin::HasMethods undef + Class::MOP::Mixin::HasOverloads undef + Class::MOP::Module 2.1605 + Class::MOP::Object 2.1605 + Class::MOP::Overload 2.1605 + Class::MOP::Package 2.1605 + Moose 2.1605 + Moose::Deprecated undef + Moose::Exception 2.1605 + Moose::Exception::AccessorMustReadWrite 2.1605 + Moose::Exception::AddParameterizableTypeTakesParameterizableType 2.1605 + Moose::Exception::AddRoleTakesAMooseMetaRoleInstance 2.1605 + Moose::Exception::AddRoleToARoleTakesAMooseMetaRole 2.1605 + Moose::Exception::ApplyTakesABlessedInstance 2.1605 + Moose::Exception::AttachToClassNeedsAClassMOPClassInstanceOrASubclass 2.1605 + Moose::Exception::AttributeConflictInRoles 2.1605 + Moose::Exception::AttributeConflictInSummation 2.1605 + Moose::Exception::AttributeExtensionIsNotSupportedInRoles 2.1605 + Moose::Exception::AttributeIsRequired 2.1605 + Moose::Exception::AttributeMustBeAnClassMOPMixinAttributeCoreOrSubclass 2.1605 + Moose::Exception::AttributeNamesDoNotMatch 2.1605 + Moose::Exception::AttributeValueIsNotAnObject 2.1605 + Moose::Exception::AttributeValueIsNotDefined 2.1605 + Moose::Exception::AutoDeRefNeedsArrayRefOrHashRef 2.1605 + Moose::Exception::BadOptionFormat 2.1605 + Moose::Exception::BothBuilderAndDefaultAreNotAllowed 2.1605 + Moose::Exception::BuilderDoesNotExist 2.1605 + Moose::Exception::BuilderMethodNotSupportedForAttribute 2.1605 + Moose::Exception::BuilderMethodNotSupportedForInlineAttribute 2.1605 + Moose::Exception::BuilderMustBeAMethodName 2.1605 + Moose::Exception::CallingMethodOnAnImmutableInstance 2.1605 + Moose::Exception::CallingReadOnlyMethodOnAnImmutableInstance 2.1605 + Moose::Exception::CanExtendOnlyClasses 2.1605 + Moose::Exception::CanOnlyConsumeRole 2.1605 + Moose::Exception::CanOnlyWrapBlessedCode 2.1605 + Moose::Exception::CanReblessOnlyIntoASubclass 2.1605 + Moose::Exception::CanReblessOnlyIntoASuperclass 2.1605 + Moose::Exception::CannotAddAdditionalTypeCoercionsToUnion 2.1605 + Moose::Exception::CannotAddAsAnAttributeToARole 2.1605 + Moose::Exception::CannotApplyBaseClassRolesToRole 2.1605 + Moose::Exception::CannotAssignValueToReadOnlyAccessor 2.1605 + Moose::Exception::CannotAugmentIfLocalMethodPresent 2.1605 + Moose::Exception::CannotAugmentNoSuperMethod 2.1605 + Moose::Exception::CannotAutoDerefWithoutIsa 2.1605 + Moose::Exception::CannotAutoDereferenceTypeConstraint 2.1605 + Moose::Exception::CannotCalculateNativeType 2.1605 + Moose::Exception::CannotCallAnAbstractBaseMethod 2.1605 + Moose::Exception::CannotCallAnAbstractMethod 2.1605 + Moose::Exception::CannotCoerceAWeakRef 2.1605 + Moose::Exception::CannotCoerceAttributeWhichHasNoCoercion 2.1605 + Moose::Exception::CannotCreateHigherOrderTypeWithoutATypeParameter 2.1605 + Moose::Exception::CannotCreateMethodAliasLocalMethodIsPresent 2.1605 + Moose::Exception::CannotCreateMethodAliasLocalMethodIsPresentInClass 2.1605 + Moose::Exception::CannotDelegateLocalMethodIsPresent 2.1605 + Moose::Exception::CannotDelegateWithoutIsa 2.1605 + Moose::Exception::CannotFindDelegateMetaclass 2.1605 + Moose::Exception::CannotFindType 2.1605 + Moose::Exception::CannotFindTypeGivenToMatchOnType 2.1605 + Moose::Exception::CannotFixMetaclassCompatibility 2.1605 + Moose::Exception::CannotGenerateInlineConstraint 2.1605 + Moose::Exception::CannotInitializeMooseMetaRoleComposite 2.1605 + Moose::Exception::CannotInlineTypeConstraintCheck 2.1605 + Moose::Exception::CannotLocatePackageInINC 2.1605 + Moose::Exception::CannotMakeMetaclassCompatible 2.1605 + Moose::Exception::CannotOverrideALocalMethod 2.1605 + Moose::Exception::CannotOverrideBodyOfMetaMethods 2.1605 + Moose::Exception::CannotOverrideLocalMethodIsPresent 2.1605 + Moose::Exception::CannotOverrideNoSuperMethod 2.1605 + Moose::Exception::CannotRegisterUnnamedTypeConstraint 2.1605 + Moose::Exception::CannotUseLazyBuildAndDefaultSimultaneously 2.1605 + Moose::Exception::CircularReferenceInAlso 2.1605 + Moose::Exception::ClassDoesNotHaveInitMeta 2.1605 + Moose::Exception::ClassDoesTheExcludedRole 2.1605 + Moose::Exception::ClassNamesDoNotMatch 2.1605 + Moose::Exception::CloneObjectExpectsAnInstanceOfMetaclass 2.1605 + Moose::Exception::CodeBlockMustBeACodeRef 2.1605 + Moose::Exception::CoercingWithoutCoercions 2.1605 + Moose::Exception::CoercionAlreadyExists 2.1605 + Moose::Exception::CoercionNeedsTypeConstraint 2.1605 + Moose::Exception::ConflictDetectedInCheckRoleExclusions 2.1605 + Moose::Exception::ConflictDetectedInCheckRoleExclusionsInToClass 2.1605 + Moose::Exception::ConstructClassInstanceTakesPackageName 2.1605 + Moose::Exception::CouldNotCreateMethod 2.1605 + Moose::Exception::CouldNotCreateWriter 2.1605 + Moose::Exception::CouldNotEvalConstructor 2.1605 + Moose::Exception::CouldNotEvalDestructor 2.1605 + Moose::Exception::CouldNotFindTypeConstraintToCoerceFrom 2.1605 + Moose::Exception::CouldNotGenerateInlineAttributeMethod 2.1605 + Moose::Exception::CouldNotLocateTypeConstraintForUnion 2.1605 + Moose::Exception::CouldNotParseType 2.1605 + Moose::Exception::CreateMOPClassTakesArrayRefOfAttributes 2.1605 + Moose::Exception::CreateMOPClassTakesArrayRefOfSuperclasses 2.1605 + Moose::Exception::CreateMOPClassTakesHashRefOfMethods 2.1605 + Moose::Exception::CreateTakesArrayRefOfRoles 2.1605 + Moose::Exception::CreateTakesHashRefOfAttributes 2.1605 + Moose::Exception::CreateTakesHashRefOfMethods 2.1605 + Moose::Exception::DefaultToMatchOnTypeMustBeCodeRef 2.1605 + Moose::Exception::DelegationToAClassWhichIsNotLoaded 2.1605 + Moose::Exception::DelegationToARoleWhichIsNotLoaded 2.1605 + Moose::Exception::DelegationToATypeWhichIsNotAClass 2.1605 + Moose::Exception::DoesRequiresRoleName 2.1605 + Moose::Exception::EnumCalledWithAnArrayRefAndAdditionalArgs 2.1605 + Moose::Exception::EnumValuesMustBeString 2.1605 + Moose::Exception::ExtendsMissingArgs 2.1605 + Moose::Exception::HandlesMustBeAHashRef 2.1605 + Moose::Exception::IllegalInheritedOptions 2.1605 + Moose::Exception::IllegalMethodTypeToAddMethodModifier 2.1605 + Moose::Exception::IncompatibleMetaclassOfSuperclass 2.1605 + Moose::Exception::InitMetaRequiresClass 2.1605 + Moose::Exception::InitializeTakesUnBlessedPackageName 2.1605 + Moose::Exception::InstanceBlessedIntoWrongClass 2.1605 + Moose::Exception::InstanceMustBeABlessedReference 2.1605 + Moose::Exception::InvalidArgPassedToMooseUtilMetaRole 2.1605 + Moose::Exception::InvalidArgumentToMethod 2.1605 + Moose::Exception::InvalidArgumentsToTraitAliases 2.1605 + Moose::Exception::InvalidBaseTypeGivenToCreateParameterizedTypeConstraint 2.1605 + Moose::Exception::InvalidHandleValue 2.1605 + Moose::Exception::InvalidHasProvidedInARole 2.1605 + Moose::Exception::InvalidNameForType 2.1605 + Moose::Exception::InvalidOverloadOperator 2.1605 + Moose::Exception::InvalidRoleApplication 2.1605 + Moose::Exception::InvalidTypeConstraint 2.1605 + Moose::Exception::InvalidTypeGivenToCreateParameterizedTypeConstraint 2.1605 + Moose::Exception::InvalidValueForIs 2.1605 + Moose::Exception::IsaDoesNotDoTheRole 2.1605 + Moose::Exception::IsaLacksDoesMethod 2.1605 + Moose::Exception::LazyAttributeNeedsADefault 2.1605 + Moose::Exception::Legacy 2.1605 + Moose::Exception::MOPAttributeNewNeedsAttributeName 2.1605 + Moose::Exception::MatchActionMustBeACodeRef 2.1605 + Moose::Exception::MessageParameterMustBeCodeRef 2.1605 + Moose::Exception::MetaclassIsAClassNotASubclassOfGivenMetaclass 2.1605 + Moose::Exception::MetaclassIsARoleNotASubclassOfGivenMetaclass 2.1605 + Moose::Exception::MetaclassIsNotASubclassOfGivenMetaclass 2.1605 + Moose::Exception::MetaclassMustBeASubclassOfMooseMetaClass 2.1605 + Moose::Exception::MetaclassMustBeASubclassOfMooseMetaRole 2.1605 + Moose::Exception::MetaclassMustBeDerivedFromClassMOPClass 2.1605 + Moose::Exception::MetaclassNotLoaded 2.1605 + Moose::Exception::MetaclassTypeIncompatible 2.1605 + Moose::Exception::MethodExpectedAMetaclassObject 2.1605 + Moose::Exception::MethodExpectsFewerArgs 2.1605 + Moose::Exception::MethodExpectsMoreArgs 2.1605 + Moose::Exception::MethodModifierNeedsMethodName 2.1605 + Moose::Exception::MethodNameConflictInRoles 2.1605 + Moose::Exception::MethodNameNotFoundInInheritanceHierarchy 2.1605 + Moose::Exception::MethodNameNotGiven 2.1605 + Moose::Exception::MustDefineAMethodName 2.1605 + Moose::Exception::MustDefineAnAttributeName 2.1605 + Moose::Exception::MustDefineAnOverloadOperator 2.1605 + Moose::Exception::MustHaveAtLeastOneValueToEnumerate 2.1605 + Moose::Exception::MustPassAHashOfOptions 2.1605 + Moose::Exception::MustPassAMooseMetaRoleInstanceOrSubclass 2.1605 + Moose::Exception::MustPassAPackageNameOrAnExistingClassMOPPackageInstance 2.1605 + Moose::Exception::MustPassEvenNumberOfArguments 2.1605 + Moose::Exception::MustPassEvenNumberOfAttributeOptions 2.1605 + Moose::Exception::MustProvideANameForTheAttribute 2.1605 + Moose::Exception::MustSpecifyAtleastOneMethod 2.1605 + Moose::Exception::MustSpecifyAtleastOneRole 2.1605 + Moose::Exception::MustSpecifyAtleastOneRoleToApplicant 2.1605 + Moose::Exception::MustSupplyAClassMOPAttributeInstance 2.1605 + Moose::Exception::MustSupplyADelegateToMethod 2.1605 + Moose::Exception::MustSupplyAMetaclass 2.1605 + Moose::Exception::MustSupplyAMooseMetaAttributeInstance 2.1605 + Moose::Exception::MustSupplyAnAccessorTypeToConstructWith 2.1605 + Moose::Exception::MustSupplyAnAttributeToConstructWith 2.1605 + Moose::Exception::MustSupplyArrayRefAsCurriedArguments 2.1605 + Moose::Exception::MustSupplyPackageNameAndName 2.1605 + Moose::Exception::NeedsTypeConstraintUnionForTypeCoercionUnion 2.1605 + Moose::Exception::NeitherAttributeNorAttributeNameIsGiven 2.1605 + Moose::Exception::NeitherClassNorClassNameIsGiven 2.1605 + Moose::Exception::NeitherRoleNorRoleNameIsGiven 2.1605 + Moose::Exception::NeitherTypeNorTypeNameIsGiven 2.1605 + Moose::Exception::NoAttributeFoundInSuperClass 2.1605 + Moose::Exception::NoBodyToInitializeInAnAbstractBaseClass 2.1605 + Moose::Exception::NoCasesMatched 2.1605 + Moose::Exception::NoConstraintCheckForTypeConstraint 2.1605 + Moose::Exception::NoDestructorClassSpecified 2.1605 + Moose::Exception::NoImmutableTraitSpecifiedForClass 2.1605 + Moose::Exception::NoParentGivenToSubtype 2.1605 + Moose::Exception::OnlyInstancesCanBeCloned 2.1605 + Moose::Exception::OperatorIsRequired 2.1605 + Moose::Exception::OverloadConflictInSummation 2.1605 + Moose::Exception::OverloadRequiresAMetaClass 2.1605 + Moose::Exception::OverloadRequiresAMetaMethod 2.1605 + Moose::Exception::OverloadRequiresAMetaOverload 2.1605 + Moose::Exception::OverloadRequiresAMethodNameOrCoderef 2.1605 + Moose::Exception::OverloadRequiresAnOperator 2.1605 + Moose::Exception::OverloadRequiresNamesForCoderef 2.1605 + Moose::Exception::OverrideConflictInComposition 2.1605 + Moose::Exception::OverrideConflictInSummation 2.1605 + Moose::Exception::PackageDoesNotUseMooseExporter 2.1605 + Moose::Exception::PackageNameAndNameParamsNotGivenToWrap 2.1605 + Moose::Exception::PackagesAndModulesAreNotCachable 2.1605 + Moose::Exception::ParameterIsNotSubtypeOfParent 2.1605 + Moose::Exception::ReferencesAreNotAllowedAsDefault 2.1605 + Moose::Exception::RequiredAttributeLacksInitialization 2.1605 + Moose::Exception::RequiredAttributeNeedsADefault 2.1605 + Moose::Exception::RequiredMethodsImportedByClass 2.1605 + Moose::Exception::RequiredMethodsNotImplementedByClass 2.1605 + Moose::Exception::Role::Attribute 2.1605 + Moose::Exception::Role::AttributeName 2.1605 + Moose::Exception::Role::Class 2.1605 + Moose::Exception::Role::EitherAttributeOrAttributeName 2.1605 + Moose::Exception::Role::Instance 2.1605 + Moose::Exception::Role::InstanceClass 2.1605 + Moose::Exception::Role::InvalidAttributeOptions 2.1605 + Moose::Exception::Role::Method 2.1605 + Moose::Exception::Role::ParamsHash 2.1605 + Moose::Exception::Role::Role 2.1605 + Moose::Exception::Role::RoleForCreate 2.1605 + Moose::Exception::Role::RoleForCreateMOPClass 2.1605 + Moose::Exception::Role::TypeConstraint 2.1605 + Moose::Exception::RoleDoesTheExcludedRole 2.1605 + Moose::Exception::RoleExclusionConflict 2.1605 + Moose::Exception::RoleNameRequired 2.1605 + Moose::Exception::RoleNameRequiredForMooseMetaRole 2.1605 + Moose::Exception::RolesDoNotSupportAugment 2.1605 + Moose::Exception::RolesDoNotSupportExtends 2.1605 + Moose::Exception::RolesDoNotSupportInner 2.1605 + Moose::Exception::RolesDoNotSupportRegexReferencesForMethodModifiers 2.1605 + Moose::Exception::RolesInCreateTakesAnArrayRef 2.1605 + Moose::Exception::RolesListMustBeInstancesOfMooseMetaRole 2.1605 + Moose::Exception::SingleParamsToNewMustBeHashRef 2.1605 + Moose::Exception::TriggerMustBeACodeRef 2.1605 + Moose::Exception::TypeConstraintCannotBeUsedForAParameterizableType 2.1605 + Moose::Exception::TypeConstraintIsAlreadyCreated 2.1605 + Moose::Exception::TypeParameterMustBeMooseMetaType 2.1605 + Moose::Exception::UnableToCanonicalizeHandles 2.1605 + Moose::Exception::UnableToCanonicalizeNonRolePackage 2.1605 + Moose::Exception::UnableToRecognizeDelegateMetaclass 2.1605 + Moose::Exception::UndefinedHashKeysPassedToMethod 2.1605 + Moose::Exception::UnionCalledWithAnArrayRefAndAdditionalArgs 2.1605 + Moose::Exception::UnionTakesAtleastTwoTypeNames 2.1605 + Moose::Exception::ValidationFailedForInlineTypeConstraint 2.1605 + Moose::Exception::ValidationFailedForTypeConstraint 2.1605 + Moose::Exception::WrapTakesACodeRefToBless 2.1605 + Moose::Exception::WrongTypeConstraintGiven 2.1605 + Moose::Exporter 2.1605 + Moose::Meta::Attribute 2.1605 + Moose::Meta::Attribute::Native 2.1605 + Moose::Meta::Attribute::Native::Trait undef + Moose::Meta::Attribute::Native::Trait::Array 2.1605 + Moose::Meta::Attribute::Native::Trait::Bool 2.1605 + Moose::Meta::Attribute::Native::Trait::Code 2.1605 + Moose::Meta::Attribute::Native::Trait::Counter 2.1605 + Moose::Meta::Attribute::Native::Trait::Hash 2.1605 + Moose::Meta::Attribute::Native::Trait::Number 2.1605 + Moose::Meta::Attribute::Native::Trait::String 2.1605 + Moose::Meta::Class 2.1605 + Moose::Meta::Class::Immutable::Trait undef + Moose::Meta::Instance 2.1605 + Moose::Meta::Method 2.1605 + Moose::Meta::Method::Accessor 2.1605 + Moose::Meta::Method::Accessor::Native undef + Moose::Meta::Method::Accessor::Native::Array undef + Moose::Meta::Method::Accessor::Native::Array::Writer undef + Moose::Meta::Method::Accessor::Native::Array::accessor undef + Moose::Meta::Method::Accessor::Native::Array::clear undef + Moose::Meta::Method::Accessor::Native::Array::count undef + Moose::Meta::Method::Accessor::Native::Array::delete undef + Moose::Meta::Method::Accessor::Native::Array::elements undef + Moose::Meta::Method::Accessor::Native::Array::first undef + Moose::Meta::Method::Accessor::Native::Array::first_index undef + Moose::Meta::Method::Accessor::Native::Array::get undef + Moose::Meta::Method::Accessor::Native::Array::grep undef + Moose::Meta::Method::Accessor::Native::Array::insert undef + Moose::Meta::Method::Accessor::Native::Array::is_empty undef + Moose::Meta::Method::Accessor::Native::Array::join undef + Moose::Meta::Method::Accessor::Native::Array::map undef + Moose::Meta::Method::Accessor::Native::Array::natatime undef + Moose::Meta::Method::Accessor::Native::Array::pop undef + Moose::Meta::Method::Accessor::Native::Array::push undef + Moose::Meta::Method::Accessor::Native::Array::reduce undef + Moose::Meta::Method::Accessor::Native::Array::set undef + Moose::Meta::Method::Accessor::Native::Array::shallow_clone undef + Moose::Meta::Method::Accessor::Native::Array::shift undef + Moose::Meta::Method::Accessor::Native::Array::shuffle undef + Moose::Meta::Method::Accessor::Native::Array::sort undef + Moose::Meta::Method::Accessor::Native::Array::sort_in_place undef + Moose::Meta::Method::Accessor::Native::Array::splice undef + Moose::Meta::Method::Accessor::Native::Array::uniq undef + Moose::Meta::Method::Accessor::Native::Array::unshift undef + Moose::Meta::Method::Accessor::Native::Bool::not undef + Moose::Meta::Method::Accessor::Native::Bool::set undef + Moose::Meta::Method::Accessor::Native::Bool::toggle undef + Moose::Meta::Method::Accessor::Native::Bool::unset undef + Moose::Meta::Method::Accessor::Native::Code::execute undef + Moose::Meta::Method::Accessor::Native::Code::execute_method undef + Moose::Meta::Method::Accessor::Native::Collection undef + Moose::Meta::Method::Accessor::Native::Counter::Writer undef + Moose::Meta::Method::Accessor::Native::Counter::dec undef + Moose::Meta::Method::Accessor::Native::Counter::inc undef + Moose::Meta::Method::Accessor::Native::Counter::reset undef + Moose::Meta::Method::Accessor::Native::Counter::set undef + Moose::Meta::Method::Accessor::Native::Hash undef + Moose::Meta::Method::Accessor::Native::Hash::Writer undef + Moose::Meta::Method::Accessor::Native::Hash::accessor undef + Moose::Meta::Method::Accessor::Native::Hash::clear undef + Moose::Meta::Method::Accessor::Native::Hash::count undef + Moose::Meta::Method::Accessor::Native::Hash::defined undef + Moose::Meta::Method::Accessor::Native::Hash::delete undef + Moose::Meta::Method::Accessor::Native::Hash::elements undef + Moose::Meta::Method::Accessor::Native::Hash::exists undef + Moose::Meta::Method::Accessor::Native::Hash::get undef + Moose::Meta::Method::Accessor::Native::Hash::is_empty undef + Moose::Meta::Method::Accessor::Native::Hash::keys undef + Moose::Meta::Method::Accessor::Native::Hash::kv undef + Moose::Meta::Method::Accessor::Native::Hash::set undef + Moose::Meta::Method::Accessor::Native::Hash::shallow_clone undef + Moose::Meta::Method::Accessor::Native::Hash::values undef + Moose::Meta::Method::Accessor::Native::Number::abs undef + Moose::Meta::Method::Accessor::Native::Number::add undef + Moose::Meta::Method::Accessor::Native::Number::div undef + Moose::Meta::Method::Accessor::Native::Number::mod undef + Moose::Meta::Method::Accessor::Native::Number::mul undef + Moose::Meta::Method::Accessor::Native::Number::set undef + Moose::Meta::Method::Accessor::Native::Number::sub undef + Moose::Meta::Method::Accessor::Native::Reader undef + Moose::Meta::Method::Accessor::Native::String::append undef + Moose::Meta::Method::Accessor::Native::String::chomp undef + Moose::Meta::Method::Accessor::Native::String::chop undef + Moose::Meta::Method::Accessor::Native::String::clear undef + Moose::Meta::Method::Accessor::Native::String::inc undef + Moose::Meta::Method::Accessor::Native::String::length undef + Moose::Meta::Method::Accessor::Native::String::match undef + Moose::Meta::Method::Accessor::Native::String::prepend undef + Moose::Meta::Method::Accessor::Native::String::replace undef + Moose::Meta::Method::Accessor::Native::String::substr undef + Moose::Meta::Method::Accessor::Native::Writer undef + Moose::Meta::Method::Augmented 2.1605 + Moose::Meta::Method::Constructor 2.1605 + Moose::Meta::Method::Delegation 2.1605 + Moose::Meta::Method::Destructor 2.1605 + Moose::Meta::Method::Meta 2.1605 + Moose::Meta::Method::Overridden 2.1605 + Moose::Meta::Mixin::AttributeCore undef + Moose::Meta::Object::Trait undef + Moose::Meta::Role 2.1605 + Moose::Meta::Role::Application 2.1605 + Moose::Meta::Role::Application::RoleSummation 2.1605 + Moose::Meta::Role::Application::ToClass 2.1605 + Moose::Meta::Role::Application::ToInstance 2.1605 + Moose::Meta::Role::Application::ToRole 2.1605 + Moose::Meta::Role::Attribute 2.1605 + Moose::Meta::Role::Composite 2.1605 + Moose::Meta::Role::Method 2.1605 + Moose::Meta::Role::Method::Conflicting 2.1605 + Moose::Meta::Role::Method::Required 2.1605 + Moose::Meta::TypeCoercion 2.1605 + Moose::Meta::TypeCoercion::Union 2.1605 + Moose::Meta::TypeConstraint 2.1605 + Moose::Meta::TypeConstraint::Class 2.1605 + Moose::Meta::TypeConstraint::DuckType 2.1605 + Moose::Meta::TypeConstraint::Enum 2.1605 + Moose::Meta::TypeConstraint::Parameterizable 2.1605 + Moose::Meta::TypeConstraint::Parameterized 2.1605 + Moose::Meta::TypeConstraint::Registry 2.1605 + Moose::Meta::TypeConstraint::Role 2.1605 + Moose::Meta::TypeConstraint::Union 2.1605 + Moose::Object 2.1605 + Moose::Role 2.1605 + Moose::Util 2.1605 + Moose::Util::MetaRole 2.1605 + Moose::Util::TypeConstraints 2.1605 + Moose::Util::TypeConstraints::Builtins undef + Test::Moose 2.1605 + metaclass 2.1605 + oose 2.1605 requirements: Carp 1.22 Class::Load 0.09 @@ -5013,6 +5218,7 @@ DISTRIBUTIONS ExtUtils::CBuilder 0.27 ExtUtils::MakeMaker 0 File::Spec 0 + JSON::PP 2.27300 List::MoreUtils 0.28 List::Util 1.35 MRO::Compat 0.05 @@ -5029,12 +5235,20 @@ DISTRIBUTIONS Task::Weaken 0 Try::Tiny 0.17 parent 0.223 + perl 5.008003 strict 1.03 warnings 1.03 MooseX-Aliases-0.11 pathname: D/DO/DOY/MooseX-Aliases-0.11.tar.gz provides: MooseX::Aliases 0.11 + MooseX::Aliases::Meta::Trait::Attribute 0.11 + MooseX::Aliases::Meta::Trait::Class 0.11 + MooseX::Aliases::Meta::Trait::Method 0.11 + MooseX::Aliases::Meta::Trait::Role 0.11 + MooseX::Aliases::Meta::Trait::Role::ApplicationToClass 0.11 + MooseX::Aliases::Meta::Trait::Role::ApplicationToRole 0.11 + MooseX::Aliases::Meta::Trait::Role::Composite 0.11 requirements: ExtUtils::MakeMaker 6.30 Moose 2.0000 @@ -5042,40 +5256,38 @@ DISTRIBUTIONS Moose::Role 0 Moose::Util::TypeConstraints 0 Scalar::Util 0 - MooseX-Attribute-Chained-1.0.1 - pathname: P/PE/PERLER/MooseX-Attribute-Chained-1.0.1.tar.gz + MooseX-Attribute-Chained-1.0.2 + pathname: T/TO/TOMHUKINS/MooseX-Attribute-Chained-1.0.2.tar.gz provides: - Moose::Meta::Attribute::Custom::Trait::Chained v1.0.1 - MooseX::Attribute::Chained v1.0.1 - MooseX::Attribute::Chained::Method::Accessor v1.0.1 - MooseX::Attribute::ChainedClone v1.0.1 - MooseX::Attribute::ChainedClone::Method::Accessor v1.0.1 - MooseX::ChainedAccessors v1.0.1 - MooseX::ChainedAccessors::Accessor v1.0.1 - MooseX::Traits::Attribute::Chained v1.0.1 - MooseX::Traits::Attribute::ChainedClone v1.0.1 + Moose::Meta::Attribute::Custom::Trait::Chained 1.000002 + MooseX::Attribute::Chained 1.000002 + MooseX::Attribute::ChainedClone 1.000002 + MooseX::ChainedAccessors 1.000002 + MooseX::ChainedAccessors::Accessor 1.000002 + MooseX::Traits::Attribute::Chained 1.000002 + MooseX::Traits::Attribute::ChainedClone 1.000002 requirements: - Module::Build 0.3601 + Module::Build 0.28 Moose 0 Test::More 0.88 Try::Tiny 0 MooseX-Attribute-Deflator-2.2.2 pathname: P/PE/PERLER/MooseX-Attribute-Deflator-2.2.2.tar.gz provides: - MooseX::Attribute::Deflator v2.2.2 - MooseX::Attribute::Deflator::Meta::Role::Attribute v2.2.2 - MooseX::Attribute::Deflator::Moose v2.2.2 - MooseX::Attribute::Deflator::Registry v2.2.2 - MooseX::Attribute::Deflator::Structured v2.2.2 - MooseX::Attribute::LazyInflator v2.2.2 - MooseX::Attribute::LazyInflator::Meta::Role::ApplicationToClass v2.2.2 - MooseX::Attribute::LazyInflator::Meta::Role::ApplicationToRole v2.2.2 - MooseX::Attribute::LazyInflator::Meta::Role::Attribute v2.2.2 - MooseX::Attribute::LazyInflator::Meta::Role::Composite v2.2.2 - MooseX::Attribute::LazyInflator::Meta::Role::Method::Accessor v2.2.2 - MooseX::Attribute::LazyInflator::Meta::Role::Method::Constructor v2.2.2 - MooseX::Attribute::LazyInflator::Meta::Role::Role v2.2.2 - MooseX::Attribute::LazyInflator::Role::Class v2.2.2 + MooseX::Attribute::Deflator 2.002002 + MooseX::Attribute::Deflator::Meta::Role::Attribute 2.002002 + MooseX::Attribute::Deflator::Moose 2.002002 + MooseX::Attribute::Deflator::Registry 2.002002 + MooseX::Attribute::Deflator::Structured 2.002002 + MooseX::Attribute::LazyInflator 2.002002 + MooseX::Attribute::LazyInflator::Meta::Role::ApplicationToClass 2.002002 + MooseX::Attribute::LazyInflator::Meta::Role::ApplicationToRole 2.002002 + MooseX::Attribute::LazyInflator::Meta::Role::Attribute 2.002002 + MooseX::Attribute::LazyInflator::Meta::Role::Composite 2.002002 + MooseX::Attribute::LazyInflator::Meta::Role::Method::Accessor 2.002002 + MooseX::Attribute::LazyInflator::Meta::Role::Method::Constructor 2.002002 + MooseX::Attribute::LazyInflator::Meta::Role::Role 2.002002 + MooseX::Attribute::LazyInflator::Role::Class 2.002002 requirements: DateTime 0 Devel::PartialDump 0 @@ -5093,6 +5305,9 @@ DISTRIBUTIONS MooseX-ClassAttribute-0.27 pathname: D/DR/DROLSKY/MooseX-ClassAttribute-0.27.tar.gz provides: + Child undef + Delegatee undef + HasClassAttribute undef MooseX::ClassAttribute 0.27 MooseX::ClassAttribute::Meta::Role::Attribute 0.27 MooseX::ClassAttribute::Trait::Application 0.27 @@ -5103,6 +5318,7 @@ DISTRIBUTIONS MooseX::ClassAttribute::Trait::Mixin::HasClassAttributes 0.27 MooseX::ClassAttribute::Trait::Role 0.27 MooseX::ClassAttribute::Trait::Role::Composite 0.27 + SharedTests undef requirements: ExtUtils::MakeMaker 6.30 List::MoreUtils 0 @@ -5327,7 +5543,7 @@ DISTRIBUTIONS MooseX-Types-ElasticSearch-0.0.4 pathname: P/PE/PERLER/MooseX-Types-ElasticSearch-0.0.4.tar.gz provides: - MooseX::Types::ElasticSearch v0.0.4 + MooseX::Types::ElasticSearch 0.000004 requirements: DateTime::Format::Epoch::Unix 0 DateTime::Format::ISO8601 0 @@ -5376,13 +5592,14 @@ DISTRIBUTIONS overload 0 strict 0 warnings 0 - MooseX-Types-Structured-0.34 - pathname: E/ET/ETHER/MooseX-Types-Structured-0.34.tar.gz + MooseX-Types-Structured-0.35 + pathname: E/ET/ETHER/MooseX-Types-Structured-0.35.tar.gz provides: - MooseX::Types::Structured 0.34 + MooseX::Types::Structured 0.35 requirements: Devel::PartialDump 0.13 - Module::Build::Tiny 0.007 + JSON::PP 2.27300 + Module::Build::Tiny 0.034 Moose 0 Moose::Meta::TypeCoercion 0 Moose::Meta::TypeConstraint 0 @@ -5419,7 +5636,7 @@ DISTRIBUTIONS Mouse-v2.4.5 pathname: S/SY/SYOHEX/Mouse-v2.4.5.tar.gz provides: - Mouse v2.4.5 + Mouse 2.004005 Mouse::Exporter undef Mouse::Meta::Attribute undef Mouse::Meta::Class undef @@ -5431,17 +5648,15 @@ DISTRIBUTIONS Mouse::Meta::Module undef Mouse::Meta::Role undef Mouse::Meta::Role::Application undef - Mouse::Meta::Role::Application::RoleSummation undef Mouse::Meta::Role::Composite undef Mouse::Meta::Role::Method undef Mouse::Meta::TypeConstraint undef Mouse::Object undef Mouse::PurePerl undef - Mouse::Role v2.4.5 - Mouse::Spec v2.4.5 - Mouse::Tiny v2.4.5 + Mouse::Role 2.004005 + Mouse::Spec 2.004005 Mouse::TypeRegistry undef - Mouse::Util v2.4.5 + Mouse::Util 2.004005 Mouse::Util::MetaRole undef Mouse::Util::TypeConstraints undef Squirrel undef @@ -5456,10 +5671,10 @@ DISTRIBUTIONS Scalar::Util 1.14 XSLoader 0.02 perl 5.008005 - Mozilla-CA-20150826 - pathname: A/AB/ABH/Mozilla-CA-20150826.tar.gz + Mozilla-CA-20160104 + pathname: A/AB/ABH/Mozilla-CA-20160104.tar.gz provides: - Mozilla::CA 20150826 + Mozilla::CA 20160104 requirements: ExtUtils::MakeMaker 0 Test 0 @@ -5471,25 +5686,25 @@ DISTRIBUTIONS Net::CIDR::Lite::Span 0.21 requirements: ExtUtils::MakeMaker 0 - Net-DNS-1.03 - pathname: N/NL/NLNETLABS/Net-DNS-1.03.tar.gz + Net-DNS-1.05 + pathname: N/NL/NLNETLABS/Net-DNS-1.05.tar.gz provides: - Net::DNS 1.03 - Net::DNS::Domain 1406 - Net::DNS::DomainName 1381 - Net::DNS::DomainName1035 1381 - Net::DNS::DomainName2535 1381 + Net::DNS 1.05 + Net::DNS::Domain 1456 + Net::DNS::DomainName 1456 + Net::DNS::DomainName1035 1456 + Net::DNS::DomainName2535 1456 Net::DNS::Header 1381 Net::DNS::Mailbox 1406 Net::DNS::Mailbox1035 1406 Net::DNS::Mailbox2535 1406 Net::DNS::Nameserver 1406 - Net::DNS::Packet 1408 - Net::DNS::Parameters 1381 + Net::DNS::Packet 1446 + Net::DNS::Parameters 1464 Net::DNS::Question 1381 - Net::DNS::RR 1408 + Net::DNS::RR 1464 Net::DNS::RR::A 1388 - Net::DNS::RR::AAAA 1388 + Net::DNS::RR::AAAA 1441 Net::DNS::RR::AFSDB 1406 Net::DNS::RR::APL 1390 Net::DNS::RR::APL::Item 1390 @@ -5501,9 +5716,9 @@ DISTRIBUTIONS Net::DNS::RR::CSYNC 1390 Net::DNS::RR::DHCID 1390 Net::DNS::RR::DLV 1339 - Net::DNS::RR::DNAME 1406 - Net::DNS::RR::DNSKEY 1406 - Net::DNS::RR::DS 1390 + Net::DNS::RR::DNAME 1456 + Net::DNS::RR::DNSKEY 1456 + Net::DNS::RR::DS 1456 Net::DNS::RR::EUI48 1390 Net::DNS::RR::EUI64 1390 Net::DNS::RR::GPOS 1382 @@ -5526,7 +5741,7 @@ DISTRIBUTIONS Net::DNS::RR::NID 1408 Net::DNS::RR::NS 1406 Net::DNS::RR::NSEC 1406 - Net::DNS::RR::NSEC3 1389 + Net::DNS::RR::NSEC3 1456 Net::DNS::RR::NSEC3PARAM 1390 Net::DNS::RR::NULL 1348 Net::DNS::RR::OPENPGPKEY 1390 @@ -5534,32 +5749,33 @@ DISTRIBUTIONS Net::DNS::RR::PTR 1406 Net::DNS::RR::PX 1406 Net::DNS::RR::RP 1406 - Net::DNS::RR::RRSIG 1425 + Net::DNS::RR::RRSIG 1456 Net::DNS::RR::RT 1406 - Net::DNS::RR::SIG 1425 + Net::DNS::RR::SIG 1456 + Net::DNS::RR::SMIMEA 1456 Net::DNS::RR::SOA 1408 Net::DNS::RR::SPF 1382 Net::DNS::RR::SRV 1406 - Net::DNS::RR::SSHFP 1390 + Net::DNS::RR::SSHFP 1456 Net::DNS::RR::TKEY 1406 - Net::DNS::RR::TLSA 1390 - Net::DNS::RR::TSIG 1406 + Net::DNS::RR::TLSA 1456 + Net::DNS::RR::TSIG 1456 Net::DNS::RR::TXT 1382 Net::DNS::RR::URI 1406 Net::DNS::RR::X25 1406 - Net::DNS::Resolver 1425 - Net::DNS::Resolver::Base 1425 - Net::DNS::Resolver::MSWin32 1406 + Net::DNS::Resolver 1456 + Net::DNS::Resolver::Base 1458 + Net::DNS::Resolver::MSWin32 1456 Net::DNS::Resolver::Recurse 1422 Net::DNS::Resolver::UNIX 1408 Net::DNS::Resolver::android 1406 Net::DNS::Resolver::cygwin 1406 Net::DNS::Resolver::os2 1406 Net::DNS::Text 1406 - Net::DNS::Update 1418 - Net::DNS::ZoneFile 1408 - Net::DNS::ZoneFile::Generator 1408 - Net::DNS::ZoneFile::Text 1408 + Net::DNS::Update 1455 + Net::DNS::ZoneFile 1464 + Net::DNS::ZoneFile::Generator 1464 + Net::DNS::ZoneFile::Text 1464 requirements: Digest::HMAC 1.03 Digest::MD5 2.13 @@ -5568,9 +5784,8 @@ DISTRIBUTIONS File::Spec 0.86 IO::Socket 1.16 IO::Socket::INET 1.25 - IO::Socket::IP 0.29 + IO::Socket::IP 0.32 MIME::Base64 2.11 - Net::LibIDN 0.12 Test::More 0.52 Time::Local 1.19 perl 5.00404 @@ -5585,14 +5800,13 @@ DISTRIBUTIONS Test::More 0.98 parent 0 perl 5.008008 - Net-Fastly-1.03 - pathname: F/FA/FASTLY/Net-Fastly-1.03.tar.gz + Net-Fastly-1.04 + pathname: F/FA/FASTLY/Net-Fastly-1.04.tar.gz provides: - Net::Fastly 1.03 + Net::Fastly 1.04 Net::Fastly::Backend undef Net::Fastly::BelongsToServiceAndVersion undef Net::Fastly::Client undef - Net::Fastly::Client::UserAgent undef Net::Fastly::Condition undef Net::Fastly::Customer undef Net::Fastly::Director undef @@ -5606,7 +5820,6 @@ DISTRIBUTIONS Net::Fastly::Settings undef Net::Fastly::Stats undef Net::Fastly::Syslog undef - Net::Fastly::UA undef Net::Fastly::User undef Net::Fastly::VCL undef Net::Fastly::Version undef @@ -5639,12 +5852,6 @@ DISTRIBUTIONS IO::Uncompress::Gunzip 0 URI 0 perl 5.006002 - Net-LibIDN-0.12 - pathname: T/TH/THOR/Net-LibIDN-0.12.tar.gz - provides: - Net::LibIDN 0.12 - requirements: - ExtUtils::MakeMaker 0 Net-OAuth-0.28 pathname: K/KG/KGRENNAN/Net-OAuth-0.28.tar.gz provides: @@ -5683,25 +5890,25 @@ DISTRIBUTIONS Test::More 0.66 Test::Warn 0.21 URI::Escape 3.28 - Net-OpenID-Common-1.19 - pathname: W/WR/WROG/Net-OpenID-Common-1.19.tar.gz - provides: - Net::OpenID::Common 1.19 - Net::OpenID::Extension 1.19 - Net::OpenID::Extension::SimpleRegistration 1.19 - Net::OpenID::Extension::SimpleRegistration::Request 1.19 - Net::OpenID::Extension::SimpleRegistration::Response 1.19 - Net::OpenID::ExtensionMessage 1.19 - Net::OpenID::IndirectMessage 1.19 - Net::OpenID::URIFetch 1.19 - Net::OpenID::URIFetch::Response 1.19 - Net::OpenID::Yadis 1.19 - Net::OpenID::Yadis::Service 1.19 - OpenID::util 1.19 + Net-OpenID-Common-1.20 + pathname: W/WR/WROG/Net-OpenID-Common-1.20.tar.gz + provides: + Net::OpenID::Common 1.20 + Net::OpenID::Extension 1.20 + Net::OpenID::Extension::SimpleRegistration 1.20 + Net::OpenID::Extension::SimpleRegistration::Request 1.20 + Net::OpenID::Extension::SimpleRegistration::Response 1.20 + Net::OpenID::ExtensionMessage 1.20 + Net::OpenID::IndirectMessage 1.20 + Net::OpenID::URIFetch 1.20 + Net::OpenID::URIFetch::Response 1.20 + Net::OpenID::Yadis 1.20 + Net::OpenID::Yadis::Service 1.20 + OpenID::util 1.20 requirements: Crypt::DH::GMP 0.00011 Encode 0 - ExtUtils::MakeMaker 6.30 + ExtUtils::MakeMaker 0 HTML::Parser 3.40 HTTP::Headers::Util 0 HTTP::Message 5.814 @@ -5709,26 +5916,25 @@ DISTRIBUTIONS HTTP::Status 0 MIME::Base64 0 Math::BigInt 0 - Test::More 0 Time::Local 0 XML::Simple 0 - Net-OpenID-Consumer-1.16 - pathname: W/WR/WROG/Net-OpenID-Consumer-1.16.tar.gz + Net-OpenID-Consumer-1.18 + pathname: W/WR/WROG/Net-OpenID-Consumer-1.18.tar.gz provides: - Net::OpenID::Association 1.16 - Net::OpenID::ClaimedIdentity 1.16 - Net::OpenID::Consumer 1.16 - Net::OpenID::VerifiedIdentity 1.16 + FakeFetch undef + Net::OpenID::Association 1.18 + Net::OpenID::ClaimedIdentity 1.18 + Net::OpenID::Consumer 1.18 + Net::OpenID::VerifiedIdentity 1.18 requirements: Digest::SHA 0 - ExtUtils::MakeMaker 6.30 + ExtUtils::MakeMaker 0 HTTP::Request 0 JSON 0 LWP::UserAgent 0 MIME::Base64 0 Net::OpenID::Common 1.19 Storable 0 - Test::More 0 Time::Local 0 URI 0 Net-OpenID-Server-1.09 @@ -5742,10 +5948,10 @@ DISTRIBUTIONS Net::OpenID::Common 1.11 Test::More 0 URI 0 - Net-SSLeay-1.72 - pathname: M/MI/MIKEM/Net-SSLeay-1.72.tar.gz + Net-SSLeay-1.74 + pathname: M/MI/MIKEM/Net-SSLeay-1.74.tar.gz provides: - Net::SSLeay 1.72 + Net::SSLeay 1.74 Net::SSLeay::Handle 0.61 requirements: ExtUtils::MakeMaker 6.36 @@ -5785,34 +5991,34 @@ DISTRIBUTIONS POSIX 0 Socket 0 Time::HiRes 0 - Net-Twitter-4.01010 - pathname: M/MM/MMIMS/Net-Twitter-4.01010.tar.gz - provides: - Net::Identica 4.01010 - Net::Twitter 4.01010 - Net::Twitter::API 4.01010 - Net::Twitter::Core 4.01010 - Net::Twitter::Error 4.01010 - Net::Twitter::Meta::Method 4.01010 - Net::Twitter::OAuth 4.01010 - Net::Twitter::Role::API::Lists 4.01010 - Net::Twitter::Role::API::REST 4.01010 - Net::Twitter::Role::API::RESTv1_1 4.01010 - Net::Twitter::Role::API::Search 4.01010 - Net::Twitter::Role::API::Search::Trends 4.01010 - Net::Twitter::Role::API::TwitterVision 4.01010 - Net::Twitter::Role::API::Upload 4.01010 - Net::Twitter::Role::API::UploadMedia 4.01010 - Net::Twitter::Role::AppAuth 4.01010 - Net::Twitter::Role::AutoCursor 4.01010 - Net::Twitter::Role::InflateObjects 4.01010 - Net::Twitter::Role::Legacy 4.01010 - Net::Twitter::Role::OAuth 4.01010 - Net::Twitter::Role::RateLimit 4.01010 - Net::Twitter::Role::RetryOnError 4.01010 - Net::Twitter::Role::SimulateCursors 4.01010 - Net::Twitter::Role::WrapError 4.01010 - Net::Twitter::Search 4.01010 + Net-Twitter-4.01020 + pathname: M/MM/MMIMS/Net-Twitter-4.01020.tar.gz + provides: + Net::Identica 4.01020 + Net::Twitter 4.01020 + Net::Twitter::API 4.01020 + Net::Twitter::Core 4.01020 + Net::Twitter::Error 4.01020 + Net::Twitter::Meta::Method 4.01020 + Net::Twitter::OAuth 4.01020 + Net::Twitter::Role::API::Lists 4.01020 + Net::Twitter::Role::API::REST 4.01020 + Net::Twitter::Role::API::RESTv1_1 4.01020 + Net::Twitter::Role::API::Search 4.01020 + Net::Twitter::Role::API::Search::Trends 4.01020 + Net::Twitter::Role::API::TwitterVision 4.01020 + Net::Twitter::Role::API::Upload 4.01020 + Net::Twitter::Role::API::UploadMedia 4.01020 + Net::Twitter::Role::AppAuth 4.01020 + Net::Twitter::Role::AutoCursor 4.01020 + Net::Twitter::Role::InflateObjects 4.01020 + Net::Twitter::Role::Legacy 4.01020 + Net::Twitter::Role::OAuth 4.01020 + Net::Twitter::Role::RateLimit 4.01020 + Net::Twitter::Role::RetryOnError 4.01020 + Net::Twitter::Role::SimulateCursors 4.01020 + Net::Twitter::Role::WrapError 4.01020 + Net::Twitter::Search 4.01020 requirements: Carp::Clan 0 Class::Load 0 @@ -5825,10 +6031,10 @@ DISTRIBUTIONS HTML::Entities 0 HTTP::Request::Common 0 IO::Socket::SSL 2.005 - JSON 0 + JSON::MaybeXS 0 LWP::Protocol::https 0 List::Util 0 - Module::Build 0.3601 + Module::Build 0.28 Moose 0 Moose::Exporter 0 Moose::Meta::Method 0 @@ -6066,68 +6272,71 @@ DISTRIBUTIONS Test::Object 0.07 Test::SubCalls 1.07 perl 5.006 - PPIx-Regexp-0.042 - pathname: W/WY/WYANT/PPIx-Regexp-0.042.tar.gz - provides: - PPIx::Regexp 0.042 - PPIx::Regexp::Constant 0.042 - PPIx::Regexp::Dumper 0.042 - PPIx::Regexp::Element 0.042 - PPIx::Regexp::Lexer 0.042 - PPIx::Regexp::Node 0.042 - PPIx::Regexp::Node::Range 0.042 - PPIx::Regexp::Structure 0.042 - PPIx::Regexp::Structure::Assertion 0.042 - PPIx::Regexp::Structure::BranchReset 0.042 - PPIx::Regexp::Structure::Capture 0.042 - PPIx::Regexp::Structure::CharClass 0.042 - PPIx::Regexp::Structure::Code 0.042 - PPIx::Regexp::Structure::Main 0.042 - PPIx::Regexp::Structure::Modifier 0.042 - PPIx::Regexp::Structure::NamedCapture 0.042 - PPIx::Regexp::Structure::Quantifier 0.042 - PPIx::Regexp::Structure::RegexSet 0.042 - PPIx::Regexp::Structure::Regexp 0.042 - PPIx::Regexp::Structure::Replacement 0.042 - PPIx::Regexp::Structure::Subexpression 0.042 - PPIx::Regexp::Structure::Switch 0.042 - PPIx::Regexp::Structure::Unknown 0.042 - PPIx::Regexp::Support 0.042 - PPIx::Regexp::Token 0.042 - PPIx::Regexp::Token::Assertion 0.042 - PPIx::Regexp::Token::Backreference 0.042 - PPIx::Regexp::Token::Backtrack 0.042 - PPIx::Regexp::Token::CharClass 0.042 - PPIx::Regexp::Token::CharClass::POSIX 0.042 - PPIx::Regexp::Token::CharClass::POSIX::Unknown 0.042 - PPIx::Regexp::Token::CharClass::Simple 0.042 - PPIx::Regexp::Token::Code 0.042 - PPIx::Regexp::Token::Comment 0.042 - PPIx::Regexp::Token::Condition 0.042 - PPIx::Regexp::Token::Control 0.042 - PPIx::Regexp::Token::Delimiter 0.042 - PPIx::Regexp::Token::Greediness 0.042 - PPIx::Regexp::Token::GroupType 0.042 - PPIx::Regexp::Token::GroupType::Assertion 0.042 - PPIx::Regexp::Token::GroupType::BranchReset 0.042 - PPIx::Regexp::Token::GroupType::Code 0.042 - PPIx::Regexp::Token::GroupType::Modifier 0.042 - PPIx::Regexp::Token::GroupType::NamedCapture 0.042 - PPIx::Regexp::Token::GroupType::Subexpression 0.042 - PPIx::Regexp::Token::GroupType::Switch 0.042 - PPIx::Regexp::Token::Interpolation 0.042 - PPIx::Regexp::Token::Literal 0.042 - PPIx::Regexp::Token::Modifier 0.042 - PPIx::Regexp::Token::Operator 0.042 - PPIx::Regexp::Token::Quantifier 0.042 - PPIx::Regexp::Token::Recursion 0.042 - PPIx::Regexp::Token::Reference 0.042 - PPIx::Regexp::Token::Structure 0.042 - PPIx::Regexp::Token::Unknown 0.042 - PPIx::Regexp::Token::Unmatched 0.042 - PPIx::Regexp::Token::Whitespace 0.042 - PPIx::Regexp::Tokenizer 0.042 - PPIx::Regexp::Util 0.042 + PPIx-Regexp-0.048 + pathname: W/WY/WYANT/PPIx-Regexp-0.048.tar.gz + provides: + PPIx::Regexp 0.048 + PPIx::Regexp::Constant 0.048 + PPIx::Regexp::Dumper 0.048 + PPIx::Regexp::Element 0.048 + PPIx::Regexp::Lexer 0.048 + PPIx::Regexp::Node 0.048 + PPIx::Regexp::Node::Range 0.048 + PPIx::Regexp::Node::Unknown 0.048 + PPIx::Regexp::StringTokenizer 0.048 + PPIx::Regexp::Structure 0.048 + PPIx::Regexp::Structure::Assertion 0.048 + PPIx::Regexp::Structure::BranchReset 0.048 + PPIx::Regexp::Structure::Capture 0.048 + PPIx::Regexp::Structure::CharClass 0.048 + PPIx::Regexp::Structure::Code 0.048 + PPIx::Regexp::Structure::Main 0.048 + PPIx::Regexp::Structure::Modifier 0.048 + PPIx::Regexp::Structure::NamedCapture 0.048 + PPIx::Regexp::Structure::Quantifier 0.048 + PPIx::Regexp::Structure::RegexSet 0.048 + PPIx::Regexp::Structure::Regexp 0.048 + PPIx::Regexp::Structure::Replacement 0.048 + PPIx::Regexp::Structure::Subexpression 0.048 + PPIx::Regexp::Structure::Switch 0.048 + PPIx::Regexp::Structure::Unknown 0.048 + PPIx::Regexp::Support 0.048 + PPIx::Regexp::Token 0.048 + PPIx::Regexp::Token::Assertion 0.048 + PPIx::Regexp::Token::Backreference 0.048 + PPIx::Regexp::Token::Backtrack 0.048 + PPIx::Regexp::Token::CharClass 0.048 + PPIx::Regexp::Token::CharClass::POSIX 0.048 + PPIx::Regexp::Token::CharClass::POSIX::Unknown 0.048 + PPIx::Regexp::Token::CharClass::Simple 0.048 + PPIx::Regexp::Token::Code 0.048 + PPIx::Regexp::Token::Comment 0.048 + PPIx::Regexp::Token::Condition 0.048 + PPIx::Regexp::Token::Control 0.048 + PPIx::Regexp::Token::Delimiter 0.048 + PPIx::Regexp::Token::Greediness 0.048 + PPIx::Regexp::Token::GroupType 0.048 + PPIx::Regexp::Token::GroupType::Assertion 0.048 + PPIx::Regexp::Token::GroupType::BranchReset 0.048 + PPIx::Regexp::Token::GroupType::Code 0.048 + PPIx::Regexp::Token::GroupType::Modifier 0.048 + PPIx::Regexp::Token::GroupType::NamedCapture 0.048 + PPIx::Regexp::Token::GroupType::Subexpression 0.048 + PPIx::Regexp::Token::GroupType::Switch 0.048 + PPIx::Regexp::Token::Interpolation 0.048 + PPIx::Regexp::Token::Literal 0.048 + PPIx::Regexp::Token::Modifier 0.048 + PPIx::Regexp::Token::NoOp 0.048 + PPIx::Regexp::Token::Operator 0.048 + PPIx::Regexp::Token::Quantifier 0.048 + PPIx::Regexp::Token::Recursion 0.048 + PPIx::Regexp::Token::Reference 0.048 + PPIx::Regexp::Token::Structure 0.048 + PPIx::Regexp::Token::Unknown 0.048 + PPIx::Regexp::Token::Unmatched 0.048 + PPIx::Regexp::Token::Whitespace 0.048 + PPIx::Regexp::Tokenizer 0.048 + PPIx::Regexp::Util 0.048 requirements: List::MoreUtils 0 List::Util 0 @@ -6159,17 +6368,19 @@ DISTRIBUTIONS base 0 strict 0 warnings 0 - Package-DeprecationManager-0.14 - pathname: D/DR/DROLSKY/Package-DeprecationManager-0.14.tar.gz + Package-DeprecationManager-0.16 + pathname: D/DR/DROLSKY/Package-DeprecationManager-0.16.tar.gz provides: - Package::DeprecationManager 0.14 + Package::DeprecationManager 0.16 requirements: Carp 0 ExtUtils::MakeMaker 0 List::Util 1.33 + Package::Stash 0 Params::Util 0 Sub::Install 0 - perl 5.006 + Sub::Name 0 + namespace::autoclean 0 strict 0 warnings 0 Package-Pkg-0.0020 @@ -6210,6 +6421,7 @@ DISTRIBUTIONS Package-Stash-XS-0.28 pathname: D/DO/DOY/Package-Stash-XS-0.28.tar.gz provides: + CompileTime undef Package::Stash::XS 0.28 requirements: ExtUtils::MakeMaker 6.30 @@ -6249,13 +6461,13 @@ DISTRIBUTIONS Scalar::Util 1.18 Test::More 0.42 perl 5.00503 - Params-Validate-1.21 - pathname: D/DR/DROLSKY/Params-Validate-1.21.tar.gz + Params-Validate-1.23 + pathname: D/DR/DROLSKY/Params-Validate-1.23.tar.gz provides: - Params::Validate 1.21 - Params::Validate::Constants 1.21 - Params::Validate::PP 1.21 - Params::Validate::XS 1.21 + Params::Validate 1.23 + Params::Validate::Constants 1.23 + Params::Validate::PP 1.23 + Params::Validate::XS 1.23 requirements: Carp 0 Exporter 0 @@ -6326,18 +6538,21 @@ DISTRIBUTIONS Text::CSV_XS 0.80 perl 5.005 strict 0 - Parse-LocalDistribution-0.15 - pathname: I/IS/ISHIGAKI/Parse-LocalDistribution-0.15.tar.gz + Parse-LocalDistribution-0.16 + pathname: I/IS/ISHIGAKI/Parse-LocalDistribution-0.16.tar.gz provides: - Parse::LocalDistribution 0.15 + Parse::LocalDistribution 0.16 requirements: - ExtUtils::MakeMaker 0 - ExtUtils::MakeMaker::CPANfile 0.06 + ExtUtils::MakeMaker::CPANfile 0.07 File::Find 0 + File::Path 0 File::Spec 0 + File::Temp 0 List::Util 0 Parse::CPAN::Meta 0 - Parse::PMFile 0.35 + Parse::PMFile 0.37 + Test::More 0.88 + Test::UseAllModules 0.10 Parse-MIME-1.003 pathname: A/AR/ARISTOTLE/Parse-MIME-1.003.tar.gz provides: @@ -6348,17 +6563,18 @@ DISTRIBUTIONS perl 5.006 strict 0 warnings 0 - Parse-PMFile-0.36 - pathname: I/IS/ISHIGAKI/Parse-PMFile-0.36.tar.gz + Parse-PMFile-0.40 + pathname: I/IS/ISHIGAKI/Parse-PMFile-0.40.tar.gz provides: - Parse::PMFile 0.36 + Parse::PMFile 0.40 requirements: Dumpvalue 0 - ExtUtils::MakeMaker 0 - ExtUtils::MakeMaker::CPANfile 0.06 + ExtUtils::MakeMaker::CPANfile 0.07 File::Spec 0 + File::Temp 0.19 JSON::PP 2.00 Safe 0 + Test::More 0.88 version 0.83 Path-Class-0.36 pathname: K/KW/KWILLIAMS/Path-Class-0.36.tar.gz @@ -6388,8 +6604,8 @@ DISTRIBUTIONS Path-FindDev-0.5.2 pathname: K/KE/KENTNL/Path-FindDev-0.5.2.tar.gz provides: - Path::FindDev v0.5.2 - Path::FindDev::Object v0.5.2 + Path::FindDev 0.005002 + Path::FindDev::Object 0.005002 requirements: Carp 0 Class::Tiny 0.010 @@ -6446,11 +6662,31 @@ DISTRIBUTIONS strict 0 utf8 0 warnings 0 - Path-Tiny-0.072 - pathname: D/DA/DAGOLDEN/Path-Tiny-0.072.tar.gz + Path-Iterator-Rule-1.012 + pathname: D/DA/DAGOLDEN/Path-Iterator-Rule-1.012.tar.gz + provides: + PIR 1.012 + Path::Iterator::Rule 1.012 + requirements: + Carp 0 + ExtUtils::MakeMaker 6.17 + File::Basename 0 + File::Spec 0 + List::Util 0 + Number::Compare 0.02 + Scalar::Util 0 + Text::Glob 0 + Try::Tiny 0 + if 0 + perl 5.008001 + strict 0 + warnings 0 + warnings::register 0 + Path-Tiny-0.088 + pathname: D/DA/DAGOLDEN/Path-Tiny-0.088.tar.gz provides: - Path::Tiny 0.072 - Path::Tiny::Error 0.072 + Path::Tiny 0.088 + flock undef requirements: Carp 0 Cwd 0 @@ -6462,7 +6698,7 @@ DISTRIBUTIONS File::Copy 0 File::Glob 0 File::Path 2.07 - File::Spec 3.40 + File::Spec 0.86 File::Temp 0.19 File::stat 0 constant 0 @@ -6723,36 +6959,18 @@ DISTRIBUTIONS strict 0 version 0.77 warnings 0 - Perl-Critic-Nits-v1.0.0 - pathname: K/KC/KCOWGILL/Perl-Critic-Nits-v1.0.0.tar.gz + Perl-Tidy-20160302 + pathname: S/SH/SHANCOCK/Perl-Tidy-20160302.tar.gz provides: - Perl::Critic::Nits 1.000000 - Perl::Critic::Policy::ValuesAndExpressions::ProhibitAccessOfPrivateData 1.000000 - requirements: - ExtUtils::MakeMaker 0 - Perl::Critic 1.07 - Test::More 0 - Perl-Tidy-20150815 - pathname: S/SH/SHANCOCK/Perl-Tidy-20150815.tar.gz - provides: - Perl::Tidy 20150815 - Perl::Tidy::Debugger 20150815 - Perl::Tidy::DevNull 20150815 - Perl::Tidy::Diagnostics 20150815 - Perl::Tidy::FileWriter 20150815 - Perl::Tidy::Formatter 20150815 - Perl::Tidy::HtmlWriter 20150815 - Perl::Tidy::IOScalar 20150815 - Perl::Tidy::IOScalarArray 20150815 - Perl::Tidy::IndentationItem 20150815 - Perl::Tidy::LineBuffer 20150815 - Perl::Tidy::LineSink 20150815 - Perl::Tidy::LineSource 20150815 - Perl::Tidy::Logger 20150815 - Perl::Tidy::Tokenizer 20150815 - Perl::Tidy::VerticalAligner 20150815 - Perl::Tidy::VerticalAligner::Alignment 20150815 - Perl::Tidy::VerticalAligner::Line 20150815 + Perl::Tidy 20160302 + Perl::Tidy::DevNull 20160302 + Perl::Tidy::Diagnostics 20160302 + Perl::Tidy::HtmlWriter 20160302 + Perl::Tidy::IOScalar 20160302 + Perl::Tidy::IOScalarArray 20160302 + Perl::Tidy::LineSink 20160302 + Perl::Tidy::LineSource 20160302 + Perl::Tidy::Logger 20160302 requirements: ExtUtils::MakeMaker 0 PerlIO-gzip-0.19 @@ -6814,6 +7032,7 @@ DISTRIBUTIONS Pithub::Result::SharedCache 0.01033 Pithub::Search 0.01033 Pithub::SearchV3 0.01033 + Pithub::Test undef Pithub::Users 0.01033 Pithub::Users::Emails 0.01033 Pithub::Users::Followers 0.01033 @@ -7093,11 +7312,11 @@ DISTRIBUTIONS Pod::Coverage 0 namespace::autoclean 0.08 perl 5.006 - Pod-Markdown-3.003 - pathname: R/RW/RWSTAUNER/Pod-Markdown-3.003.tar.gz + Pod-Markdown-3.005 + pathname: R/RW/RWSTAUNER/Pod-Markdown-3.005.tar.gz provides: - Pod::Markdown 3.003 - Pod::Perldoc::ToMarkdown 3.003 + Pod::Markdown 3.005 + Pod::Perldoc::ToMarkdown 3.005 requirements: Encode 0 ExtUtils::MakeMaker 0 @@ -7135,6 +7354,9 @@ DISTRIBUTIONS Pod::POM::View::HTML 2.01 Pod::POM::View::Pod 2.01 Pod::POM::View::Text 2.01 + PodPOMTestCase undef + PodPOMTestLib undef + YAML::Tiny 1.36 requirements: Encode 0 Exporter 0 @@ -7199,11 +7421,11 @@ DISTRIBUTIONS integer 0 overload 0 strict 0 - Pod-Spell-1.17 - pathname: X/XE/XENO/Pod-Spell-1.17.tar.gz + Pod-Spell-1.19 + pathname: D/DO/DOLMEN/Pod-Spell-1.19.tar.gz provides: - Pod::Spell 1.17 - Pod::Wordlist 1.17 + Pod::Spell 1.19 + Pod::Wordlist 1.19 requirements: Carp 0 Class::Tiny 0 @@ -7211,65 +7433,60 @@ DISTRIBUTIONS File::ShareDir::Install 0.06 File::ShareDir::ProjectDistDir 1.000 Lingua::EN::Inflect 0 + POSIX 0 Pod::Escapes 0 Pod::Parser 0 Text::Wrap 0 - base 0 constant 0 locale 0 + parent 0 perl 5.008 strict 0 warnings 0 - Readonly-2.00 - pathname: S/SA/SANKO/Readonly-2.00.tar.gz + Readonly-2.01 + pathname: S/SA/SANKO/Readonly-2.01.tar.gz provides: - Readonly 2.00 - Readonly::Array undef - Readonly::Hash undef - Readonly::Scalar undef + Readonly 2.01 requirements: - CPAN::Meta 0 - CPAN::Meta::Prereqs 0 - ExtUtils::CBuilder 0 - Module::Build 0.38 + Module::Build::Tiny 0.035 perl v5.6.0 - Regexp-Common-2013031301 - pathname: A/AB/ABIGAIL/Regexp-Common-2013031301.tar.gz - provides: - Regexp::Common 2013031301 - Regexp::Common::CC 2010010201 - Regexp::Common::Entry 2013031301 - Regexp::Common::SEN 2010010201 - Regexp::Common::URI 2010010201 - Regexp::Common::URI::RFC1035 2010010201 - Regexp::Common::URI::RFC1738 2010010201 - Regexp::Common::URI::RFC1808 2010010201 - Regexp::Common::URI::RFC2384 2010010201 - Regexp::Common::URI::RFC2396 2010010201 - Regexp::Common::URI::RFC2806 2010010201 - Regexp::Common::URI::fax 2010010201 - Regexp::Common::URI::file 2010010201 - Regexp::Common::URI::ftp 2010010201 - Regexp::Common::URI::gopher 2010010201 - Regexp::Common::URI::http 2010010201 - Regexp::Common::URI::news 2010010201 - Regexp::Common::URI::pop 2010010201 - Regexp::Common::URI::prospero 2010010201 - Regexp::Common::URI::tel 2010010201 - Regexp::Common::URI::telnet 2010010201 - Regexp::Common::URI::tv 2010010201 - Regexp::Common::URI::wais 2010010201 - Regexp::Common::_support 2010010201 - Regexp::Common::balanced 2013030901 - Regexp::Common::comment 2010010201 - Regexp::Common::delimited 2010010201 - Regexp::Common::lingua 2010010201 - Regexp::Common::list 2010010201 - Regexp::Common::net 2013031301 - Regexp::Common::number 2013031101 - Regexp::Common::profanity 2010010201 - Regexp::Common::whitespace 2010010201 - Regexp::Common::zip 2010010201 + Regexp-Common-2016020301 + pathname: A/AB/ABIGAIL/Regexp-Common-2016020301.tar.gz + provides: + Regexp::Common 2016020301 + Regexp::Common::CC 2016020301 + Regexp::Common::Entry 2016020301 + Regexp::Common::SEN 2016020301 + Regexp::Common::URI 2016020301 + Regexp::Common::URI::RFC1035 2016020301 + Regexp::Common::URI::RFC1738 2016020301 + Regexp::Common::URI::RFC1808 2016020301 + Regexp::Common::URI::RFC2384 2016020301 + Regexp::Common::URI::RFC2396 2016020301 + Regexp::Common::URI::RFC2806 2016020301 + Regexp::Common::URI::fax 2016020301 + Regexp::Common::URI::file 2016020301 + Regexp::Common::URI::ftp 2016020301 + Regexp::Common::URI::gopher 2016020301 + Regexp::Common::URI::http 2016020301 + Regexp::Common::URI::news 2016020301 + Regexp::Common::URI::pop 2016020301 + Regexp::Common::URI::prospero 2016020301 + Regexp::Common::URI::tel 2016020301 + Regexp::Common::URI::telnet 2016020301 + Regexp::Common::URI::tv 2016020301 + Regexp::Common::URI::wais 2016020301 + Regexp::Common::_support 2016020301 + Regexp::Common::balanced 2016020301 + Regexp::Common::comment 2016020301 + Regexp::Common::delimited 2016020301 + Regexp::Common::lingua 2016020301 + Regexp::Common::list 2016020301 + Regexp::Common::net 2016020301 + Regexp::Common::number 2016020301 + Regexp::Common::profanity 2016020301 + Regexp::Common::whitespace 2016020301 + Regexp::Common::zip 2016020301 requirements: ExtUtils::MakeMaker 0 perl 5.00473 @@ -7295,6 +7512,7 @@ DISTRIBUTIONS SQL-Abstract-1.81 pathname: R/RI/RIBASUSHI/SQL-Abstract-1.81.tar.gz provides: + DBIx::Class::Storage::Debug::PrettyPrint undef SQL::Abstract 1.81 SQL::Abstract::Test undef SQL::Abstract::Tree undef @@ -7313,6 +7531,15 @@ DISTRIBUTIONS Test::Warn 0 Text::Balanced 2.00 perl 5.006 + SUPER-1.20141117 + pathname: C/CH/CHROMATIC/SUPER-1.20141117.tar.gz + provides: + SUPER 1.20141117 + requirements: + Scalar::Util 1.20 + Sub::Identify 0.03 + Test::Simple 0.61 + perl v5.6.2 Safe-Isa-1.000005 pathname: E/ET/ETHER/Safe-Isa-1.000005.tar.gz provides: @@ -7322,13 +7549,13 @@ DISTRIBUTIONS ExtUtils::MakeMaker 0 Scalar::Util 0 perl 5.006 - Scalar-List-Utils-1.43 - pathname: P/PE/PEVANS/Scalar-List-Utils-1.43.tar.gz + Scalar-List-Utils-1.45 + pathname: P/PE/PEVANS/Scalar-List-Utils-1.45.tar.gz provides: - List::Util 1.43 - List::Util::XS 1.43 - Scalar::Util 1.43 - Sub::Util 1.43 + List::Util 1.45 + List::Util::XS 1.45 + Scalar::Util 1.45 + Sub::Util 1.45 requirements: ExtUtils::MakeMaker 0 Test::More 0 @@ -7341,64 +7568,66 @@ DISTRIBUTIONS ExtUtils::MakeMaker 0 Test::More 0 perl 5.006001 - Search-Elasticsearch-2.00 - pathname: D/DR/DRTECH/Search-Elasticsearch-2.00.tar.gz - provides: - Search::Elasticsearch 2.00 - Search::Elasticsearch::Bulk 2.00 - Search::Elasticsearch::Client::0_90::Direct 2.00 - Search::Elasticsearch::Client::0_90::Direct::Cluster 2.00 - Search::Elasticsearch::Client::0_90::Direct::Indices 2.00 - Search::Elasticsearch::Client::1_0::Direct 2.00 - Search::Elasticsearch::Client::1_0::Direct::Cat 2.00 - Search::Elasticsearch::Client::1_0::Direct::Cluster 2.00 - Search::Elasticsearch::Client::1_0::Direct::Indices 2.00 - Search::Elasticsearch::Client::1_0::Direct::Nodes 2.00 - Search::Elasticsearch::Client::1_0::Direct::Snapshot 2.00 - Search::Elasticsearch::Client::2_0::Direct 2.00 - Search::Elasticsearch::Client::2_0::Direct::Cat 2.00 - Search::Elasticsearch::Client::2_0::Direct::Cluster 2.00 - Search::Elasticsearch::Client::2_0::Direct::Indices 2.00 - Search::Elasticsearch::Client::2_0::Direct::Nodes 2.00 - Search::Elasticsearch::Client::2_0::Direct::Snapshot 2.00 - Search::Elasticsearch::Cxn::Factory 2.00 - Search::Elasticsearch::Cxn::HTTPTiny 2.00 - Search::Elasticsearch::Cxn::Hijk 2.00 - Search::Elasticsearch::Cxn::LWP 2.00 - Search::Elasticsearch::CxnPool::Sniff 2.00 - Search::Elasticsearch::CxnPool::Static 2.00 - Search::Elasticsearch::CxnPool::Static::NoPing 2.00 - Search::Elasticsearch::Error 2.00 - Search::Elasticsearch::Logger::LogAny 2.00 - Search::Elasticsearch::Role::API::0_90 2.00 - Search::Elasticsearch::Role::API::1_0 2.00 - Search::Elasticsearch::Role::API::2_0 2.00 - Search::Elasticsearch::Role::Bulk 2.00 - Search::Elasticsearch::Role::Client 2.00 - Search::Elasticsearch::Role::Client::Direct 2.00 - Search::Elasticsearch::Role::Client::Direct::Main 2.00 - Search::Elasticsearch::Role::Cxn 2.00 - Search::Elasticsearch::Role::Cxn::HTTP 2.00 - Search::Elasticsearch::Role::CxnPool 2.00 - Search::Elasticsearch::Role::CxnPool::Sniff 2.00 - Search::Elasticsearch::Role::CxnPool::Static 2.00 - Search::Elasticsearch::Role::CxnPool::Static::NoPing 2.00 - Search::Elasticsearch::Role::Is_Sync 2.00 - Search::Elasticsearch::Role::Logger 2.00 - Search::Elasticsearch::Role::Scroll 2.00 - Search::Elasticsearch::Role::Serializer 2.00 - Search::Elasticsearch::Role::Serializer::JSON 2.00 - Search::Elasticsearch::Role::Transport 2.00 - Search::Elasticsearch::Scroll 2.00 - Search::Elasticsearch::Serializer::JSON 2.00 - Search::Elasticsearch::Serializer::JSON::Cpanel 2.00 - Search::Elasticsearch::Serializer::JSON::PP 2.00 - Search::Elasticsearch::Serializer::JSON::XS 2.00 - Search::Elasticsearch::TestServer 2.00 - Search::Elasticsearch::Transport 2.00 - Search::Elasticsearch::Util 2.00 - Search::Elasticsearch::Util::API::Path 2.00 - Search::Elasticsearch::Util::API::QS 2.00 + Search-Elasticsearch-2.01 + pathname: D/DR/DRTECH/Search-Elasticsearch-2.01.tar.gz + provides: + MockCxn undef + Search::Elasticsearch 2.01 + Search::Elasticsearch::Bulk 2.01 + Search::Elasticsearch::Client::0_90::Direct 2.01 + Search::Elasticsearch::Client::0_90::Direct::Cluster 2.01 + Search::Elasticsearch::Client::0_90::Direct::Indices 2.01 + Search::Elasticsearch::Client::1_0::Direct 2.01 + Search::Elasticsearch::Client::1_0::Direct::Cat 2.01 + Search::Elasticsearch::Client::1_0::Direct::Cluster 2.01 + Search::Elasticsearch::Client::1_0::Direct::Indices 2.01 + Search::Elasticsearch::Client::1_0::Direct::Nodes 2.01 + Search::Elasticsearch::Client::1_0::Direct::Snapshot 2.01 + Search::Elasticsearch::Client::2_0::Direct 2.01 + Search::Elasticsearch::Client::2_0::Direct::Cat 2.01 + Search::Elasticsearch::Client::2_0::Direct::Cluster 2.01 + Search::Elasticsearch::Client::2_0::Direct::Indices 2.01 + Search::Elasticsearch::Client::2_0::Direct::Nodes 2.01 + Search::Elasticsearch::Client::2_0::Direct::Snapshot 2.01 + Search::Elasticsearch::Client::2_0::Direct::Tasks 2.01 + Search::Elasticsearch::Cxn::Factory 2.01 + Search::Elasticsearch::Cxn::HTTPTiny 2.01 + Search::Elasticsearch::Cxn::Hijk 2.01 + Search::Elasticsearch::Cxn::LWP 2.01 + Search::Elasticsearch::CxnPool::Sniff 2.01 + Search::Elasticsearch::CxnPool::Static 2.01 + Search::Elasticsearch::CxnPool::Static::NoPing 2.01 + Search::Elasticsearch::Error 2.01 + Search::Elasticsearch::Logger::LogAny 2.01 + Search::Elasticsearch::Role::API::0_90 2.01 + Search::Elasticsearch::Role::API::1_0 2.01 + Search::Elasticsearch::Role::API::2_0 2.01 + Search::Elasticsearch::Role::Bulk 2.01 + Search::Elasticsearch::Role::Client 2.01 + Search::Elasticsearch::Role::Client::Direct 2.01 + Search::Elasticsearch::Role::Client::Direct::Main 2.01 + Search::Elasticsearch::Role::Cxn 2.01 + Search::Elasticsearch::Role::Cxn::HTTP 2.01 + Search::Elasticsearch::Role::CxnPool 2.01 + Search::Elasticsearch::Role::CxnPool::Sniff 2.01 + Search::Elasticsearch::Role::CxnPool::Static 2.01 + Search::Elasticsearch::Role::CxnPool::Static::NoPing 2.01 + Search::Elasticsearch::Role::Is_Sync 2.01 + Search::Elasticsearch::Role::Logger 2.01 + Search::Elasticsearch::Role::Scroll 2.01 + Search::Elasticsearch::Role::Serializer 2.01 + Search::Elasticsearch::Role::Serializer::JSON 2.01 + Search::Elasticsearch::Role::Transport 2.01 + Search::Elasticsearch::Scroll 2.01 + Search::Elasticsearch::Serializer::JSON 2.01 + Search::Elasticsearch::Serializer::JSON::Cpanel 2.01 + Search::Elasticsearch::Serializer::JSON::PP 2.01 + Search::Elasticsearch::Serializer::JSON::XS 2.01 + Search::Elasticsearch::TestServer 2.01 + Search::Elasticsearch::Transport 2.01 + Search::Elasticsearch::Util 2.01 + Search::Elasticsearch::Util::API::Path 2.01 + Search::Elasticsearch::Util::API::QS 2.01 requirements: Any::URI::Escape 0 Data::Dumper 0 @@ -7409,7 +7638,6 @@ DISTRIBUTIONS HTTP::Headers 0 HTTP::Request 0 HTTP::Tiny 0.043 - Hijk 0.20 IO::Select 0 IO::Socket 0 IO::Uncompress::Inflate 0 @@ -7434,6 +7662,15 @@ DISTRIBUTIONS overload 0 strict 0 warnings 0 + Socket-2.021 + pathname: P/PE/PEVANS/Socket-2.021.tar.gz + provides: + Socket 2.021 + requirements: + ExtUtils::CBuilder 0 + ExtUtils::Constant 0.23 + ExtUtils::MakeMaker 0 + perl 5.006001 Sort-Naturally-1.03 pathname: B/BI/BINGOS/Sort-Naturally-1.03.tar.gz provides: @@ -7441,10 +7678,10 @@ DISTRIBUTIONS requirements: ExtUtils::MakeMaker 0 perl 5 - Sort-Versions-1.61 - pathname: N/NE/NEILB/Sort-Versions-1.61.tar.gz + Sort-Versions-1.62 + pathname: N/NE/NEILB/Sort-Versions-1.62.tar.gz provides: - Sort::Versions 1.61 + Sort::Versions 1.62 requirements: Exporter 0 ExtUtils::MakeMaker 0 @@ -7513,6 +7750,13 @@ DISTRIBUTIONS provides: Sub::Exporter 0.987 Sub::Exporter::Util 0.987 + Test::SubExporter::DashSetup undef + Test::SubExporter::Faux undef + Test::SubExporter::GroupGen undef + Test::SubExporter::GroupGenSubclass undef + Test::SubExporter::ObjGen undef + Test::SubExporter::ObjGen::Obj undef + Test::SubExporter::s_e undef requirements: Carp 0 Data::OptList 0.100 @@ -7525,6 +7769,8 @@ DISTRIBUTIONS pathname: R/RJ/RJBS/Sub-Exporter-ForMethods-0.100052.tar.gz provides: Sub::Exporter::ForMethods 0.100052 + TestDexp undef + TestMexp undef requirements: ExtUtils::MakeMaker 0 Scalar::Util 0 @@ -7557,10 +7803,10 @@ DISTRIBUTIONS Scalar::Util 0 strict 0 warnings 0 - Sub-Name-0.14 - pathname: E/ET/ETHER/Sub-Name-0.14.tar.gz + Sub-Name-0.15 + pathname: E/ET/ETHER/Sub-Name-0.15.tar.gz provides: - Sub::Name 0.14 + Sub::Name 0.15 requirements: Exporter 5.57 ExtUtils::MakeMaker 0 @@ -7650,17 +7896,17 @@ DISTRIBUTIONS Test-Compile-v1.3.0 pathname: E/EG/EGILES/Test-Compile-v1.3.0.tar.gz provides: - Test::Compile v1.3.0 - Test::Compile::Internal v1.3.0 + Test::Compile 1.003000 + Test::Compile::Internal 1.003000 requirements: Module::Build 0.38 UNIVERSAL::require 0 perl v5.6.2 version 0 - Test-Deep-0.119 - pathname: R/RJ/RJBS/Test-Deep-0.119.tar.gz + Test-Deep-1.120 + pathname: R/RJ/RJBS/Test-Deep-1.120.tar.gz provides: - Test::Deep 0.119 + Test::Deep 1.120 Test::Deep::All undef Test::Deep::Any undef Test::Deep::Array undef @@ -7686,6 +7932,7 @@ DISTRIBUTIONS Test::Deep::MM undef Test::Deep::Methods undef Test::Deep::NoTest undef + Test::Deep::None undef Test::Deep::Number undef Test::Deep::Obj undef Test::Deep::Ref undef @@ -7715,19 +7962,19 @@ DISTRIBUTIONS List::Util 1.09 Scalar::Util 1.09 Test::Builder 0 - Test-Differences-0.63 - pathname: D/DC/DCANTRELL/Test-Differences-0.63.tar.gz + Test-Differences-0.64 + pathname: D/DC/DCANTRELL/Test-Differences-0.64.tar.gz provides: - Test::Differences 0.63 + Test::Differences 0.64 requirements: Capture::Tiny 0.24 Data::Dumper 2.126 - Test::More 0 + Test::More 0.88 Text::Diff 0.35 - Test-Exception-0.40 - pathname: E/EX/EXODIST/Test-Exception-0.40.tar.gz + Test-Exception-0.43 + pathname: E/EX/EXODIST/Test-Exception-0.43.tar.gz provides: - Test::Exception 0.40 + Test::Exception 0.43 requirements: Carp 0 Exporter 0 @@ -7763,58 +8010,58 @@ DISTRIBUTIONS Test::Builder 0 Test::Builder::Tester 1.04 Test::More 0 - Test-Harness-3.35 - pathname: L/LE/LEONT/Test-Harness-3.35.tar.gz + Test-Harness-3.36 + pathname: L/LE/LEONT/Test-Harness-3.36.tar.gz provides: - App::Prove 3.35 - App::Prove::State 3.35 - App::Prove::State::Result 3.35 - App::Prove::State::Result::Test 3.35 + App::Prove 3.36 + App::Prove::State 3.36 + App::Prove::State::Result 3.36 + App::Prove::State::Result::Test 3.36 Harness::Hook undef - TAP::Base 3.35 - TAP::Formatter::Base 3.35 - TAP::Formatter::Color 3.35 - TAP::Formatter::Console 3.35 - TAP::Formatter::Console::ParallelSession 3.35 - TAP::Formatter::Console::Session 3.35 - TAP::Formatter::File 3.35 - TAP::Formatter::File::Session 3.35 - TAP::Formatter::Session 3.35 - TAP::Harness 3.35 - TAP::Harness::Env 3.35 - TAP::Object 3.35 - TAP::Parser 3.35 - TAP::Parser::Aggregator 3.35 - TAP::Parser::Grammar 3.35 - TAP::Parser::Iterator 3.35 - TAP::Parser::Iterator::Array 3.35 - TAP::Parser::Iterator::Process 3.35 - TAP::Parser::Iterator::Stream 3.35 - TAP::Parser::IteratorFactory 3.35 - TAP::Parser::Multiplexer 3.35 - TAP::Parser::Result 3.35 - TAP::Parser::Result::Bailout 3.35 - TAP::Parser::Result::Comment 3.35 - TAP::Parser::Result::Plan 3.35 - TAP::Parser::Result::Pragma 3.35 - TAP::Parser::Result::Test 3.35 - TAP::Parser::Result::Unknown 3.35 - TAP::Parser::Result::Version 3.35 - TAP::Parser::Result::YAML 3.35 - TAP::Parser::ResultFactory 3.35 - TAP::Parser::Scheduler 3.35 - TAP::Parser::Scheduler::Job 3.35 - TAP::Parser::Scheduler::Spinner 3.35 - TAP::Parser::Source 3.35 - TAP::Parser::SourceHandler 3.35 - TAP::Parser::SourceHandler::Executable 3.35 - TAP::Parser::SourceHandler::File 3.35 - TAP::Parser::SourceHandler::Handle 3.35 - TAP::Parser::SourceHandler::Perl 3.35 - TAP::Parser::SourceHandler::RawTAP 3.35 - TAP::Parser::YAMLish::Reader 3.35 - TAP::Parser::YAMLish::Writer 3.35 - Test::Harness 3.35 + TAP::Base 3.36 + TAP::Formatter::Base 3.36 + TAP::Formatter::Color 3.36 + TAP::Formatter::Console 3.36 + TAP::Formatter::Console::ParallelSession 3.36 + TAP::Formatter::Console::Session 3.36 + TAP::Formatter::File 3.36 + TAP::Formatter::File::Session 3.36 + TAP::Formatter::Session 3.36 + TAP::Harness 3.36 + TAP::Harness::Env 3.36 + TAP::Object 3.36 + TAP::Parser 3.36 + TAP::Parser::Aggregator 3.36 + TAP::Parser::Grammar 3.36 + TAP::Parser::Iterator 3.36 + TAP::Parser::Iterator::Array 3.36 + TAP::Parser::Iterator::Process 3.36 + TAP::Parser::Iterator::Stream 3.36 + TAP::Parser::IteratorFactory 3.36 + TAP::Parser::Multiplexer 3.36 + TAP::Parser::Result 3.36 + TAP::Parser::Result::Bailout 3.36 + TAP::Parser::Result::Comment 3.36 + TAP::Parser::Result::Plan 3.36 + TAP::Parser::Result::Pragma 3.36 + TAP::Parser::Result::Test 3.36 + TAP::Parser::Result::Unknown 3.36 + TAP::Parser::Result::Version 3.36 + TAP::Parser::Result::YAML 3.36 + TAP::Parser::ResultFactory 3.36 + TAP::Parser::Scheduler 3.36 + TAP::Parser::Scheduler::Job 3.36 + TAP::Parser::Scheduler::Spinner 3.36 + TAP::Parser::Source 3.36 + TAP::Parser::SourceHandler 3.36 + TAP::Parser::SourceHandler::Executable 3.36 + TAP::Parser::SourceHandler::File 3.36 + TAP::Parser::SourceHandler::Handle 3.36 + TAP::Parser::SourceHandler::Perl 3.36 + TAP::Parser::SourceHandler::RawTAP 3.36 + TAP::Parser::YAMLish::Reader 3.36 + TAP::Parser::YAMLish::Writer 3.36 + Test::Harness 3.36 requirements: ExtUtils::MakeMaker 0 Test-InDistDir-1.112071 @@ -7827,18 +8074,6 @@ DISTRIBUTIONS File::Spec 0 File::Temp 0 Test::More 0 - Test-LoadAllModules-0.022 - pathname: K/KI/KITANO/Test-LoadAllModules-0.022.tar.gz - provides: - Test::LoadAllModules 0.022 - requirements: - ExtUtils::MakeMaker 6.36 - File::Spec 0 - Filter::Util::Call 0 - List::MoreUtils 0 - Module::Install::AuthorTests 0 - Module::Pluggable::Object 0 - Test::More 0 Test-LongString-0.17 pathname: R/RG/RGARCIA/Test-LongString-0.17.tar.gz provides: @@ -7847,6 +8082,17 @@ DISTRIBUTIONS ExtUtils::MakeMaker 0 Test::Builder 0.12 Test::Builder::Tester 1.04 + Test-MockModule-0.11 + pathname: G/GF/GFRANKS/Test-MockModule-0.11.tar.gz + provides: + Test::MockModule 0.11 + requirements: + Carp 0 + Module::Build 0.38 + SUPER 0 + Scalar::Util 0 + Test::More 0.45 + perl 5.006 Test-Most-0.34 pathname: O/OV/OVID/Test-Most-0.34.tar.gz provides: @@ -7955,6 +8201,8 @@ DISTRIBUTIONS Test::Routine::Test 0.020 Test::Routine::Test::Role 0.020 Test::Routine::Util 0.020 + t::lib::NoGood undef + t::lib::NoGood2 undef requirements: Carp 0 Class::Load 0 @@ -7976,15 +8224,15 @@ DISTRIBUTIONS namespace::clean 0 strict 0 warnings 0 - Test-SharedFork-0.34 - pathname: E/EX/EXODIST/Test-SharedFork-0.34.tar.gz + Test-SharedFork-0.35 + pathname: E/EX/EXODIST/Test-SharedFork-0.35.tar.gz provides: - Test::SharedFork 0.34 + Test::SharedFork 0.35 Test::SharedFork::Array undef Test::SharedFork::Scalar undef Test::SharedFork::Store undef requirements: - ExtUtils::MakeMaker 0 + ExtUtils::MakeMaker 6.64 File::Temp 0 Test::Builder 0.32 Test::Builder::Module 0 @@ -8022,14 +8270,14 @@ DISTRIBUTIONS Hook::LexWrap 0.20 Test::Builder::Tester 1.02 Test::More 0.42 - Test-TCP-2.14 - pathname: T/TO/TOKUHIROM/Test-TCP-2.14.tar.gz + Test-TCP-2.16 + pathname: T/TO/TOKUHIROM/Test-TCP-2.16.tar.gz provides: Net::EmptyPort undef - Test::TCP 2.14 + Test::TCP 2.16 Test::TCP::CheckPort undef requirements: - ExtUtils::MakeMaker 0 + ExtUtils::MakeMaker 6.64 IO::Socket::INET 0 IO::Socket::IP 0 Test::More 0 @@ -8039,11 +8287,11 @@ DISTRIBUTIONS Test-Trap-v0.3.2 pathname: E/EB/EBHANSSEN/Test-Trap-v0.3.2.tar.gz provides: - Test::Trap v0.3.2 - Test::Trap::Builder v0.3.2 - Test::Trap::Builder::PerlIO v0.3.2 - Test::Trap::Builder::SystemSafe v0.3.2 - Test::Trap::Builder::TempFile v0.3.2 + Test::Trap 0.003002 + Test::Trap::Builder 0.003002 + Test::Trap::Builder::PerlIO 0.003002 + Test::Trap::Builder::SystemSafe 0.003002 + Test::Trap::Builder::TempFile 0.003002 requirements: Carp 0 Data::Dump 0 @@ -8061,17 +8309,16 @@ DISTRIBUTIONS strict 0 version 0 warnings 0 - Test-Vars-0.008 - pathname: D/DR/DROLSKY/Test-Vars-0.008.tar.gz + Test-UseAllModules-0.17 + pathname: I/IS/ISHIGAKI/Test-UseAllModules-0.17.tar.gz provides: - Test::Vars 0.008 + Test::UseAllModules 0.17 requirements: - B 0 - ExtUtils::MakeMaker 6.59 - Module::Build 0.38 - Test::More 0.88 - parent 0 - perl 5.010000 + Exporter 0 + ExtUtils::MakeMaker 0 + ExtUtils::Manifest 0 + Test::Builder 0.30 + Test::More 0.60 Test-WWW-Mechanize-1.44 pathname: P/PE/PETDANCE/Test-WWW-Mechanize-1.44.tar.gz provides: @@ -8113,23 +8360,23 @@ DISTRIBUTIONS Test::Builder::Tester 1.02 Test::More 0 perl 5.006 - Text-CSV_XS-1.20 - pathname: H/HM/HMBRAND/Text-CSV_XS-1.20.tgz + Text-CSV_XS-1.23 + pathname: H/HM/HMBRAND/Text-CSV_XS-1.23.tgz provides: - Text::CSV_XS 1.20 + Text::CSV_XS 1.23 requirements: Config 0 DynaLoader 0 ExtUtils::MakeMaker 0 IO::Handle 0 Test::More 0 - Text-Diff-1.43 - pathname: N/NE/NEILB/Text-Diff-1.43.tar.gz + Text-Diff-1.44 + pathname: N/NE/NEILB/Text-Diff-1.44.tar.gz provides: - Text::Diff 1.43 - Text::Diff::Base 1.43 - Text::Diff::Config 1.43 - Text::Diff::Table 1.43 + Text::Diff 1.44 + Text::Diff::Base 1.44 + Text::Diff::Config 1.44 + Text::Diff::Table 1.44 requirements: Algorithm::Diff 1.19 Exporter 0 @@ -8148,7 +8395,6 @@ DISTRIBUTIONS requirements: ExtUtils::MakeMaker 0 Test::More 0 - perl 5.008001 Text-SimpleTable-AutoWidth-0.09 pathname: C/CU/CUB/Text-SimpleTable-AutoWidth-0.09.tar.gz provides: @@ -8258,16 +8504,16 @@ DISTRIBUTIONS Time::Zone 2.24 requirements: ExtUtils::MakeMaker 0 - Tree-Simple-1.25 - pathname: R/RS/RSAVAGE/Tree-Simple-1.25.tgz + Tree-Simple-1.26 + pathname: R/RS/RSAVAGE/Tree-Simple-1.26.tgz provides: - Tree::Simple 1.25 - Tree::Simple::Visitor 1.25 + Tree::Simple 1.26 + Tree::Simple::Visitor 1.26 requirements: - Module::Build 0.4 + ExtUtils::MakeMaker 0 Scalar::Util 1.18 Test::Exception 0.15 - Test::More 0.47 + Test::More 1.001014 constant 0 strict 0 warnings 0 @@ -8420,6 +8666,7 @@ DISTRIBUTIONS UNIVERSAL-require-0.18 pathname: N/NE/NEILB/UNIVERSAL-require-0.18.tar.gz provides: + UNIVERSAL 0.18 UNIVERSAL::require 0.18 requirements: Carp 0 @@ -8514,14 +8761,73 @@ DISTRIBUTIONS URI 1.68 strict 0 warnings 0 - URI-Query-0.10 - pathname: G/GA/GAVINC/URI-Query-0.10.tar.gz + URI-Nested-0.10 + pathname: D/DW/DWHEELER/URI-Nested-0.10.tar.gz provides: - URI::Query 0.10 + URI::Nested 0.10 requirements: + Module::Build 0.30 + Test::More 0.88 + URI 1.40 + perl 5.008001 + URI-Query-0.15 + pathname: G/GA/GAVINC/URI-Query-0.15.tar.gz + provides: + URI::Query 0.11 + requirements: + Carp 0 ExtUtils::MakeMaker 0 + URI::Escape 0 + overload 0 + strict 0 + vars 0 + URI-db-0.17 + pathname: D/DW/DWHEELER/URI-db-0.17.tar.gz + provides: + URI::cassandra 0.17 + URI::couch 0.17 + URI::couchdb 0.17 + URI::cubrid 0.17 + URI::db 0.17 + URI::db2 0.17 + URI::derby 0.17 + URI::firebird 0.17 + URI::hive 0.17 + URI::impala 0.17 + URI::informix 0.17 + URI::ingres 0.17 + URI::interbase 0.17 + URI::ldapdb 0.17 + URI::maria 0.17 + URI::mariadb 0.17 + URI::max 0.17 + URI::maxdb 0.17 + URI::monet 0.17 + URI::monetdb 0.17 + URI::mongo 0.17 + URI::mongodb 0.17 + URI::mssql 0.17 + URI::mysql 0.17 + URI::oracle 0.17 + URI::pg 0.17 + URI::pgsql 0.17 + URI::pgxc 0.17 + URI::postgres 0.17 + URI::postgresql 0.17 + URI::postgresxc 0.17 + URI::sqlite 0.17 + URI::sqlite3 0.17 + URI::sqlserver 0.17 + URI::sybase 0.17 + URI::teradata 0.17 + URI::unify 0.17 + URI::vertica 0.17 + requirements: + Module::Build 0.30 Test::More 0.88 - URI 1.31 + URI 1.40 + URI::Nested 0.10 + perl 5.008001 URI-ws-0.03 pathname: P/PL/PLICEASE/URI-ws-0.03.tar.gz provides: @@ -8543,12 +8849,12 @@ DISTRIBUTIONS POSIX 0 Test::More 0 Time::HiRes 0 - Unicode-LineBreak-2015.11 - pathname: N/NE/NEZUMI/Unicode-LineBreak-2015.11.tar.gz + Unicode-LineBreak-2016.003 + pathname: N/NE/NEZUMI/Unicode-LineBreak-2016.003.tar.gz provides: Text::LineFold 2012.04 Unicode::GCString 2013.10 - Unicode::LineBreak 2015.11 + Unicode::LineBreak 2016.003 requirements: Encode 1.98 ExtUtils::MakeMaker 6.26 @@ -8609,6 +8915,7 @@ DISTRIBUTIONS WWW-Mechanize-Cached-1.50 pathname: O/OA/OALDERS/WWW-Mechanize-Cached-1.50.tar.gz provides: + TestCache undef WWW::Mechanize::Cached 1.50 requirements: Cache::FileCache 0 @@ -8697,16 +9004,17 @@ DISTRIBUTIONS XML::Parser 2.27 XML::SAX 0.03 XML::SAX::Base 1.00 - XML-Simple-2.20 - pathname: G/GR/GRANTM/XML-Simple-2.20.tar.gz + XML-Simple-2.22 + pathname: G/GR/GRANTM/XML-Simple-2.22.tar.gz provides: - XML::Simple 2.20 + TagsToUpper undef + XML::Simple 2.22 requirements: - ExtUtils::MakeMaker 6.31 - Test::More 0.88 + ExtUtils::MakeMaker 0 XML::NamespaceSupport 1.04 XML::SAX 0.15 XML::SAX::Expat 0 + perl 5.008 YAML-1.15 pathname: I/IN/INGY/YAML-1.15.tar.gz provides: @@ -8745,20 +9053,6 @@ DISTRIBUTIONS requirements: ExtUtils::MakeMaker 6.59 perl 5.006 - YAML-Tiny-1.69 - pathname: E/ET/ETHER/YAML-Tiny-1.69.tar.gz - provides: - YAML::Tiny 1.69 - requirements: - B 0 - Carp 0 - Exporter 0 - ExtUtils::MakeMaker 0 - Fcntl 0 - Scalar::Util 0 - perl 5.008001 - strict 0 - warnings 0 aliased-0.34 pathname: E/ET/ETHER/aliased-0.34.tar.gz provides: @@ -8774,6 +9068,7 @@ DISTRIBUTIONS pathname: I/IL/ILMARI/bareword-filehandles-0.003.tar.gz provides: bareword::filehandles 0.003 + inc::BarewordFilehandlesMakeMaker undef requirements: B::Hooks::OP::Check 0 ExtUtils::Depends 0 @@ -8962,6 +9257,50 @@ DISTRIBUTIONS ExtUtils::MakeMaker 0 File::Spec 0 version 0.77 + libnet-3.08 + pathname: S/SH/SHAY/libnet-3.08.tar.gz + provides: + Net undef + Net::Cmd 3.08 + Net::Config 3.08 + Net::Domain 3.08 + Net::FTP 3.08 + Net::FTP::A 3.08 + Net::FTP::E 3.08 + Net::FTP::I 3.08 + Net::FTP::L 3.08 + Net::FTP::_SSL_SingleSessionCache 3.08 + Net::FTP::dataconn 3.08 + Net::NNTP 3.08 + Net::NNTP::_SSL 3.08 + Net::Netrc 3.08 + Net::POP3 3.08 + Net::POP3::_SSL 3.08 + Net::SMTP 3.08 + Net::SMTP::_SSL 3.08 + Net::Time 3.08 + requirements: + Carp 0 + Errno 0 + Exporter 0 + ExtUtils::MakeMaker 6.64 + Fcntl 0 + File::Basename 0 + FileHandle 0 + Getopt::Std 0 + IO::File 0 + IO::Select 0 + IO::Socket 1.05 + POSIX 0 + Socket 2.016 + Symbol 0 + Time::Local 0 + constant 0 + perl 5.008001 + strict 0 + utf8 0 + vars 0 + warnings 0 libwww-perl-6.15 pathname: E/ET/ETHER/libwww-perl-6.15.tar.gz provides: @@ -9022,6 +9361,8 @@ DISTRIBUTIONS multidimensional-0.011 pathname: I/IL/ILMARI/multidimensional-0.011.tar.gz provides: + MyTest undef + inc::MultidimensionalMakeMaker undef multidimensional 0.011 requirements: B::Hooks::OP::Check 0.19 @@ -9059,6 +9400,7 @@ DISTRIBUTIONS strictures-2.000002 pathname: H/HA/HAARG/strictures-2.000002.tar.gz provides: + ExtUtils::HasCompiler 0.012 strictures 2.000002 strictures::extra undef requirements: @@ -9066,14 +9408,14 @@ DISTRIBUTIONS indirect 0 multidimensional 0 perl 5.006 - version-0.9912 - pathname: J/JP/JPEACOCK/version-0.9912.tar.gz - provides: - charstar 0.9912 - version 0.9912 - version::regex 0.9912 - version::vpp 0.9912 - version::vxs 0.9912 + version-0.9916 + pathname: J/JP/JPEACOCK/version-0.9916.tar.gz + provides: + charstar 0.9916 + version 0.9916 + version::regex 0.9916 + version::vpp 0.9916 + version::vxs 0.9916 requirements: ExtUtils::MakeMaker 6.17 File::Temp 0.13 From eaf2ebaa647e6f767375cee50fe0e0443109fbbc Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Sat, 16 Apr 2016 23:14:41 -0400 Subject: [PATCH 136/329] Replace lazy_build in release model. --- lib/MetaCPAN/Model/Release.pm | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/lib/MetaCPAN/Model/Release.pm b/lib/MetaCPAN/Model/Release.pm index d7fab59b7..24eec39d3 100644 --- a/lib/MetaCPAN/Model/Release.pm +++ b/lib/MetaCPAN/Model/Release.pm @@ -26,9 +26,10 @@ has archive => ( ); has dependencies => ( - is => 'ro', - isa => ArrayRef, - lazy_build => 1, + is => 'ro', + isa => ArrayRef, + lazy => 1, + builder => '_build_dependencies', ); has distinfo => ( @@ -41,6 +42,7 @@ has distinfo => ( distribution => 'dist', filename => 'filename', }, + lazy => 1, default => sub { my $self = shift; return CPAN::DistnameInfo->new( $self->file ); @@ -48,9 +50,10 @@ has distinfo => ( ); has document => ( - is => 'ro', - isa => 'MetaCPAN::Document::Release', - lazy_build => 1, + is => 'ro', + isa => 'MetaCPAN::Document::Release', + lazy => 1, + builder => '_build_document', ); has file => ( @@ -61,10 +64,11 @@ has file => ( ); has files => ( - is => 'ro', - isa => ArrayRef, - init_arg => undef, - lazy_build => 1, + is => 'ro', + isa => ArrayRef, + init_arg => undef, + lazy => 1, + builder => '_build_files', ); has date => ( From 6ab3be4af21cf75a6d0f520a90fb54cba891767c Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Sat, 16 Apr 2016 23:15:09 -0400 Subject: [PATCH 137/329] Fix some ordering issues (deep recursion) in Release model. --- lib/MetaCPAN/Model/Release.pm | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/lib/MetaCPAN/Model/Release.pm b/lib/MetaCPAN/Model/Release.pm index 24eec39d3..d90621e6b 100644 --- a/lib/MetaCPAN/Model/Release.pm +++ b/lib/MetaCPAN/Model/Release.pm @@ -122,6 +122,20 @@ has status => ( has bulk => ( is => 'rw', ); +=head2 run + +Try to fix some ordering issues, which are causing deep recursion. There's +probably a much cleaner way to do this. + +=cut + +sub run { + my $self = shift; + $self->document; + $self->document->changes_file( $self->get_changes_file( $self->files ) ); + $self->_set_main_module( $self->modules, $self->document ); +} + sub _build_archive { my $self = shift; @@ -210,10 +224,6 @@ sub _build_document { ->put( { name => $self->distribution }, { create => 1 } ); }; - $self->_set_main_module( $self->modules, $document ); - - $document->changes_file( $self->get_changes_file( $self->files ) ); - return $document; } From 3dd4d7bfc6775b1299aa1dfa73eede145bd87c03 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Sat, 16 Apr 2016 23:15:21 -0400 Subject: [PATCH 138/329] Tidy. --- lib/MetaCPAN/Script/Release.pm | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/MetaCPAN/Script/Release.pm b/lib/MetaCPAN/Script/Release.pm index 64dae6036..dc0fa32f6 100644 --- a/lib/MetaCPAN/Script/Release.pm +++ b/lib/MetaCPAN/Script/Release.pm @@ -17,7 +17,7 @@ use MetaCPAN::Model::Release; use MetaCPAN::Types qw( Bool Dir HashRef Int Str ); use Moose; use PerlIO::gzip; -use Try::Tiny; +use Try::Tiny qw( catch try ); with 'MetaCPAN::Role::Script', 'MooseX::Getopt'; @@ -212,9 +212,11 @@ sub import_archive { log_debug {'Gathering modules'}; + $model->run; + # build module -> pod file mapping # $file->clear_documentation to force a rebuild - my $files = $model->files(); + my $files = $model->files; my %associated_pod; for ( grep { $_->indexed && $_->documentation } @$files ) { my $documentation = $_->clear_documentation; From afa6dd4db94f2e0ae66d01f455ea8f1acbfd5322 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Sat, 16 Apr 2016 23:16:39 -0400 Subject: [PATCH 139/329] Debug Travis module installs. --- .travis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 99ee7850b..6a79e177a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -63,8 +63,8 @@ script: after_success: - cover -report coveralls -#after_script: -# - cat ~/.cpanm/build.log +after_script: + - cat ~/.cpanm/build.log services: - elasticsearch From 8d17d46fe71a0e3406a7002d787203f2fae6915f Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Sat, 16 Apr 2016 23:54:17 -0400 Subject: [PATCH 140/329] Downgrades ExtUtils::HasCompiler to 0.012 --- cpanfile | 1 + cpanfile.snapshot | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/cpanfile b/cpanfile index 82b618165..b7de6db2e 100644 --- a/cpanfile +++ b/cpanfile @@ -50,6 +50,7 @@ requires 'Email::Valid', '1.198'; requires 'Encode'; requires 'Encoding::FixLatin'; requires 'Exporter'; +requires 'ExtUtils::HasCompiler', '<= 0.012'; # 0.013 is buggy on Travis requires 'Facebook::Graph'; requires 'File::Basename'; requires 'File::Find'; diff --git a/cpanfile.snapshot b/cpanfile.snapshot index 4b96c40b1..e1eb15ea6 100644 --- a/cpanfile.snapshot +++ b/cpanfile.snapshot @@ -2763,10 +2763,10 @@ DISTRIBUTIONS File::Spec 0 IO::File 0 perl 5.006 - ExtUtils-HasCompiler-0.013 - pathname: L/LE/LEONT/ExtUtils-HasCompiler-0.013.tar.gz + ExtUtils-HasCompiler-0.012 + pathname: L/LE/LEONT/ExtUtils-HasCompiler-0.012.tar.gz provides: - ExtUtils::HasCompiler 0.013 + ExtUtils::HasCompiler 0.012 requirements: Carp 0 DynaLoader 0 From 258989c21d24cae5a5300943ed004668746ae0de Mon Sep 17 00:00:00 2001 From: Mickey Nasriachi Date: Fri, 15 Apr 2016 17:44:39 +0100 Subject: [PATCH 141/329] attribute not used since #d9d9bdb6 --- lib/MetaCPAN/Document/Author.pm | 11 ----------- lib/MetaCPAN/Document/Release.pm | 3 +-- lib/MetaCPAN/Script/Release.pm | 4 ++-- 3 files changed, 3 insertions(+), 15 deletions(-) diff --git a/lib/MetaCPAN/Document/Author.pm b/lib/MetaCPAN/Document/Author.pm index 8cf6351f6..f973ac7f1 100644 --- a/lib/MetaCPAN/Document/Author.pm +++ b/lib/MetaCPAN/Document/Author.pm @@ -42,12 +42,6 @@ has pauseid => ( has user => ( is => 'rw' ); -has dir => ( - is => 'ro', - required => 1, - lazy_build => 1, -); - has gravatar_url => ( is => 'ro', lazy_build => 1, @@ -105,11 +99,6 @@ has updated => ( required => 0, ); -sub _build_dir { - my $pauseid = ref $_[0] ? shift->pauseid : shift; - return MetaCPAN::Util::author_dir($pauseid); -} - sub _build_gravatar_url { my $self = shift; diff --git a/lib/MetaCPAN/Document/Release.pm b/lib/MetaCPAN/Document/Release.pm index 3ead076dc..cf4633743 100644 --- a/lib/MetaCPAN/Document/Release.pm +++ b/lib/MetaCPAN/Document/Release.pm @@ -6,7 +6,6 @@ use warnings; use Moose; use ElasticSearchX::Model::Document; -use MetaCPAN::Document::Author; use MetaCPAN::Types qw(:all); use MetaCPAN::Util; @@ -243,7 +242,7 @@ sub _build_download_url { my $self = shift; return 'https://cpan.metacpan.org/authors/' - . MetaCPAN::Document::Author::_build_dir( $self->author ) . '/' + . MetaCPAN::Util::author_dir( $self->author ) . '/' . $self->archive; } diff --git a/lib/MetaCPAN/Script/Release.pm b/lib/MetaCPAN/Script/Release.pm index dc0fa32f6..78b3e3e97 100644 --- a/lib/MetaCPAN/Script/Release.pm +++ b/lib/MetaCPAN/Script/Release.pm @@ -12,7 +12,7 @@ use File::Find::Rule; use File::stat (); use LWP::UserAgent; use Log::Contextual qw( :log :dlog ); -use MetaCPAN::Document::Author; +use MetaCPAN::Util; use MetaCPAN::Model::Release; use MetaCPAN::Types qw( Bool Dir HashRef Int Str ); use Moose; @@ -108,7 +108,7 @@ sub run { my $d = CPAN::DistnameInfo->new($_); my $file = $self->home->file( qw(var tmp http authors), - MetaCPAN::Document::Author::_build_dir( $d->cpanid ), + MetaCPAN::Util::author_dir( $d->cpanid ), $d->filename, ); my $ua = LWP::UserAgent->new( From 46edaeaa79e806aad08ed3f83003934bc2727e41 Mon Sep 17 00:00:00 2001 From: Mickey Nasriachi Date: Fri, 15 Apr 2016 18:11:49 +0100 Subject: [PATCH 142/329] esx_model is used in BUILD... can be default --- lib/MetaCPAN/Server/Model/CPAN.pm | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/lib/MetaCPAN/Server/Model/CPAN.pm b/lib/MetaCPAN/Server/Model/CPAN.pm index 393835664..5f4bcbffb 100644 --- a/lib/MetaCPAN/Server/Model/CPAN.pm +++ b/lib/MetaCPAN/Server/Model/CPAN.pm @@ -11,9 +11,9 @@ extends 'Catalyst::Model'; with 'CatalystX::Component::Traits'; has esx_model => ( - is => 'ro', - lazy_build => 1, - handles => ['es'], + is => 'ro', + handles => ['es'], + default => sub { MetaCPAN::Model->new( es => $_[0]->servers ) }, ); has index => ( @@ -26,10 +26,6 @@ has servers => ( default => ':9200', ); -sub _build_esx_model { - MetaCPAN::Model->new( es => shift->servers ); -} - sub type { my $self = shift; return $self->esx_model->index( $self->index )->type(shift); From 3ddea80ed4862492d0c343b20633b5e928cb1457 Mon Sep 17 00:00:00 2001 From: Mickey Nasriachi Date: Fri, 15 Apr 2016 17:52:17 +0100 Subject: [PATCH 143/329] lazy_build --> lazy + builder (+ tidy) --- lib/MetaCPAN/Document/Author.pm | 9 +-- lib/MetaCPAN/Document/File.pm | 101 +++++++++++++++-------------- lib/MetaCPAN/Document/Release.pm | 16 ++--- lib/MetaCPAN/Model/User/Account.pm | 12 ++-- lib/MetaCPAN/Role/Fastly.pm | 7 +- lib/MetaCPAN/Role/Script.pm | 16 +++-- lib/MetaCPAN/Script/Latest.pm | 9 ++- lib/MetaCPAN/Script/ReindexDist.pm | 21 +++--- lib/MetaCPAN/Script/Release.pm | 14 ++-- lib/MetaCPAN/Server/Diff.pm | 12 ++-- 10 files changed, 116 insertions(+), 101 deletions(-) diff --git a/lib/MetaCPAN/Document/Author.pm b/lib/MetaCPAN/Document/Author.pm index f973ac7f1..78de7b713 100644 --- a/lib/MetaCPAN/Document/Author.pm +++ b/lib/MetaCPAN/Document/Author.pm @@ -43,9 +43,10 @@ has pauseid => ( has user => ( is => 'rw' ); has gravatar_url => ( - is => 'ro', - lazy_build => 1, - isa => NonEmptySimpleStr, + is => 'ro', + isa => NonEmptySimpleStr, + lazy => 1, + builder => '_build_gravatar_url', ); has profile => ( @@ -110,7 +111,7 @@ sub _build_gravatar_url { # (by assigning an image to his author@cpan.org) # and now by changing this URL from metacpa.org return Gravatar::URL::gravatar_url( - email => $self->{pauseid} . '@cpan.org', + email => $self->pauseid . '@cpan.org', size => 130, https => 1, diff --git a/lib/MetaCPAN/Document/File.pm b/lib/MetaCPAN/Document/File.pm index 171463a86..1d6a04028 100644 --- a/lib/MetaCPAN/Document/File.pm +++ b/lib/MetaCPAN/Document/File.pm @@ -34,10 +34,10 @@ C section. It also sets L if it succeeds. =cut has abstract => ( - is => 'ro', - required => 1, - lazy_build => 1, - index => 'analyzed', + is => 'ro', + lazy => 1, + builder => '_build_abstract', + index => 'analyzed', ); sub _build_abstract { @@ -147,10 +147,10 @@ whitespaces and POD commands. =cut has description => ( - is => 'ro', - required => 1, - lazy_build => 1, - index => 'analyzed', + is => 'ro', + lazy => 1, + builder => '_build_description', + index => 'analyzed', ); sub _build_description { @@ -267,13 +267,13 @@ set to C. =cut has documentation => ( - required => 1, - is => 'rw', - lazy_build => 1, - index => 'analyzed', - predicate => 'has_documentation', - analyzer => [qw(standard camelcase lowercase edge edge_camelcase)], - clearer => 'clear_documentation', + is => 'rw', + lazy => 1, + builder => '_build_documentation', + index => 'analyzed', + predicate => 'has_documentation', + analyzer => [qw(standard camelcase lowercase edge edge_camelcase)], + clearer => 'clear_documentation', ); sub _build_documentation { @@ -330,10 +330,10 @@ has a level of C<0>). =cut has level => ( - is => 'ro', - required => 1, - isa => 'Int', - lazy_build => 1, + is => 'ro', + isa => 'Int', + lazy => 1, + builder => '_build_level', ); sub _build_level { @@ -351,9 +351,9 @@ are removed to save space and for better snippet previews. has pod => ( is => 'ro', - required => 1, isa => 'ScalarRef', - lazy_build => 1, + lazy => 1, + builder => '_build_pod', index => 'analyzed', not_analyzed => 0, store => 'no', @@ -427,12 +427,12 @@ ArrayRef of ArrayRefs of offset and length of pod blocks. Example: =cut has pod_lines => ( - is => 'ro', - required => 1, - isa => 'ArrayRef', - type => 'integer', - lazy_build => 1, - index => 'no', + is => 'ro', + isa => 'ArrayRef', + type => 'integer', + lazy => 1, + builder => '_build_pod_lines', + index => 'no', ); sub _build_pod_lines { @@ -451,10 +451,10 @@ L and returns the number of lines. =cut has sloc => ( - is => 'ro', - required => 1, - isa => 'Int', - lazy_build => 1, + is => 'ro', + isa => 'Int', + lazy => 1, + builder => '_build_sloc', ); # Metrics from Perl::Metrics2::Plugin::Core. @@ -527,7 +527,7 @@ has version => ( =head2 version_numified -B, B +B Numeric representation of L. Contains 0 if there is no version or the version could not be parsed. @@ -535,16 +535,16 @@ version could not be parsed. =cut has version_numified => ( - is => 'ro', - isa => 'Str', - lazy_build => 1, - required => 1, + is => 'ro', + isa => 'Num', + lazy => 1, + builder => '_build_version_numified', ); sub _build_version_numified { my $self = shift; return 0 unless ( $self->version ); - return MetaCPAN::Util::numify_version( $self->version ) . ''; + return MetaCPAN::Util::numify_version( $self->version ); } =head2 mime @@ -554,9 +554,9 @@ MIME type of file. Derived using L (for speed). =cut has mime => ( - is => 'ro', - required => 1, - lazy_build => 1, + is => 'ro', + lazy => 1, + builder => '_build_mime', ); sub _build_mime { @@ -581,11 +581,11 @@ sub _build_path { } has dir => ( - is => 'ro', - lazy_build => 1, - isa => 'Str', - required => 1, - index => 'not_analyzed' + is => 'ro', + isa => 'Str', + lazy => 1, + builder => '_build_dir', + index => 'not_analyzed' ); sub _build_dir { @@ -614,11 +614,12 @@ Built by calling L. =cut has content => ( - is => 'ro', - isa => 'ScalarRef', - lazy_build => 1, - property => 0, - required => 0, + is => 'ro', + isa => 'ScalarRef', + lazy => 1, + builder => '_build_content', + property => 0, + required => 0, ); sub _build_content { diff --git a/lib/MetaCPAN/Document/Release.pm b/lib/MetaCPAN/Document/Release.pm index cf4633743..fd0405a8d 100644 --- a/lib/MetaCPAN/Document/Release.pm +++ b/lib/MetaCPAN/Document/Release.pm @@ -130,9 +130,9 @@ has date => ( ); has download_url => ( - is => 'ro', - required => 1, - lazy_build => 1, + is => 'ro', + lazy => 1, + builder => '_build_download_url', ); has [qw(distribution name)] => ( @@ -142,10 +142,10 @@ has [qw(distribution name)] => ( ); has version_numified => ( - is => 'ro', - required => 1, - isa => 'Str', - lazy_build => 1, + is => 'ro', + isa => 'Num', + lazy => 1, + builder => '_build_version_numified', ); has resources => ( @@ -235,7 +235,7 @@ has changes_file => ( ); sub _build_version_numified { - return MetaCPAN::Util::numify_version( shift->version ) . ''; + return MetaCPAN::Util::numify_version( shift->version ); } sub _build_download_url { diff --git a/lib/MetaCPAN/Model/User/Account.pm b/lib/MetaCPAN/Model/User/Account.pm index b42dc4c2d..899296f90 100644 --- a/lib/MetaCPAN/Model/User/Account.pm +++ b/lib/MetaCPAN/Model/User/Account.pm @@ -90,11 +90,11 @@ is true if the user is connected to a PAUSE account or he L. =cut has looks_human => ( - is => 'ro', - isa => 'Bool', - required => 1, - lazy_build => 1, - clearer => 'clear_looks_human', + is => 'ro', + isa => 'Bool', + lazy => 1, + builder => '_build_looks_human', + clearer => 'clear_looks_human', ); sub _build_looks_human { @@ -110,7 +110,7 @@ Sets the C<_timestamp> field. has timestamp => ( is => 'ro', - timestamp => {}, # { store => 1 }, + timestamp => {}, ); =head1 METHODS diff --git a/lib/MetaCPAN/Role/Fastly.pm b/lib/MetaCPAN/Role/Fastly.pm index 2aa4d3327..6a099a219 100644 --- a/lib/MetaCPAN/Role/Fastly.pm +++ b/lib/MetaCPAN/Role/Fastly.pm @@ -92,9 +92,10 @@ has browser_max_age => ( ); has cdn_times => ( - is => 'ro', - isa => HashRef, - lazy_build => 1, + is => 'ro', + isa => HashRef, + lazy => 1, + builder => '_build_cdn_times', ); sub _build_cdn_times { diff --git a/lib/MetaCPAN/Role/Script.pm b/lib/MetaCPAN/Role/Script.pm index af3436552..4230fe950 100644 --- a/lib/MetaCPAN/Role/Script.pm +++ b/lib/MetaCPAN/Role/Script.pm @@ -14,10 +14,11 @@ with 'MetaCPAN::Role::Logger'; with 'MetaCPAN::Role::Fastly'; has 'cpan' => ( - is => 'rw', - isa => Dir, - lazy_build => 1, - coerce => 1, + is => 'ro', + isa => Dir, + lazy => 1, + builder => '_build_cpan', + coerce => 1, documentation => 'Location of a local CPAN mirror, looks for $ENV{MINICPAN} and ~/CPAN', ); @@ -37,7 +38,12 @@ has es => ( documentation => 'Elasticsearch http connection string', ); -has model => ( lazy_build => 1, is => 'ro', traits => ['NoGetopt'] ); +has model => ( + is => 'ro', + lazy => 1, + builder => '_build_model', + traits => ['NoGetopt'], +); has index => ( reader => '_index', diff --git a/lib/MetaCPAN/Script/Latest.pm b/lib/MetaCPAN/Script/Latest.pm index 49432b7f9..f93f8ec89 100644 --- a/lib/MetaCPAN/Script/Latest.pm +++ b/lib/MetaCPAN/Script/Latest.pm @@ -24,9 +24,10 @@ has distribution => ( ); has packages => ( - is => 'ro', - lazy_build => 1, - traits => ['NoGetopt'], + is => 'ro', + lazy => 1, + builder => '_build_packages', + traits => ['NoGetopt'], ); sub _build_packages { @@ -75,8 +76,6 @@ sub run { filter => { bool => { must => \@module_filters } } } }, - - # { term => { 'file.maturity' => 'released' } }, { term => { 'maturity' => 'released' } }, ], must_not => [ diff --git a/lib/MetaCPAN/Script/ReindexDist.pm b/lib/MetaCPAN/Script/ReindexDist.pm index c42f9939e..7d646ed81 100644 --- a/lib/MetaCPAN/Script/ReindexDist.pm +++ b/lib/MetaCPAN/Script/ReindexDist.pm @@ -10,9 +10,10 @@ use Moose; with 'MetaCPAN::Role::Script', 'MooseX::Getopt'; has distribution => ( - is => 'ro', - isa => 'Str', - lazy_build => 1, + is => 'ro', + isa => 'Str', + lazy => 1, + builder => '_build_distribution', ); sub _build_distribution { @@ -24,9 +25,10 @@ sub _build_distribution { } has releases => ( - is => 'ro', - isa => 'ArrayRef', - lazy_build => 1, + is => 'ro', + isa => 'ArrayRef', + lazy => 1, + builder => '_build_releases', ); sub _build_releases { @@ -40,9 +42,10 @@ sub _build_releases { } has sources => ( - is => 'ro', - isa => 'ArrayRef', - lazy_build => 1, + is => 'ro', + isa => 'ArrayRef', + lazy => 1, + builder => '_build_sources', ); has prompt => ( diff --git a/lib/MetaCPAN/Script/Release.pm b/lib/MetaCPAN/Script/Release.pm index 78b3e3e97..20431a724 100644 --- a/lib/MetaCPAN/Script/Release.pm +++ b/lib/MetaCPAN/Script/Release.pm @@ -63,15 +63,17 @@ has detect_backpan => ( ); has backpan_index => ( - is => 'ro', - lazy_build => 1, + is => 'ro', + lazy => 1, + builder => '_build_backpan_index', ); has perms => ( - is => 'ro', - isa => HashRef, - lazy_build => 1, - traits => ['NoGetopt'], + is => 'ro', + isa => HashRef, + lazy => 1, + builder => '_build_perms', + traits => ['NoGetopt'], ); has _bulk_size => ( diff --git a/lib/MetaCPAN/Server/Diff.pm b/lib/MetaCPAN/Server/Diff.pm index c185fb542..db4c781e1 100644 --- a/lib/MetaCPAN/Server/Diff.pm +++ b/lib/MetaCPAN/Server/Diff.pm @@ -18,14 +18,16 @@ has [qw(source target)] => ( ); has raw => ( - is => 'ro', - lazy_build => 1, + is => 'ro', + lazy => 1, + builder => '_build_raw', ); has structured => ( - is => 'ro', - isa => 'ArrayRef', - lazy_build => 1, + is => 'ro', + isa => 'ArrayRef', + lazy => 1, + builder => '_build_structured', ); has numstat => ( is => 'rw' ); From d4499c2d21f41f6f6670f5119ea66727b8882159 Mon Sep 17 00:00:00 2001 From: Mickey Nasriachi Date: Fri, 15 Apr 2016 20:13:13 +0100 Subject: [PATCH 144/329] slop: a WIP solution --- lib/MetaCPAN/Document/File.pm | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/lib/MetaCPAN/Document/File.pm b/lib/MetaCPAN/Document/File.pm index 1d6a04028..f27bb4310 100644 --- a/lib/MetaCPAN/Document/File.pm +++ b/lib/MetaCPAN/Document/File.pm @@ -439,7 +439,7 @@ sub _build_pod_lines { my $self = shift; return [] unless ( $self->is_perl_file ); my ( $lines, $slop ) = MetaCPAN::Util::pod_lines( ${ $self->content } ); - $self->slop( $slop || 0 ); + $self->_set_slop( $slop || 0 ); return $lines; } @@ -486,17 +486,20 @@ Source Lines of Pod. Returns the number of pod lines using L. =cut has slop => ( - is => 'ro', - required => 1, - isa => 'Int', - is => 'rw', - lazy_build => 1, + is => 'ro', + isa => 'Int', + lazy => 1, + default => '_build_slop', + writer => '_set_slop', ); sub _build_slop { my $self = shift; return 0 unless ( $self->is_perl_file ); $self->_build_pod_lines; + + # danger! infinite recursion if not set by `_build_pod_lines` + # we should probably find a better solution -- Mickey return $self->slop; } From c6bdefa3d64d86d040aa4f0d2e9b9b69f22c96ba Mon Sep 17 00:00:00 2001 From: Mickey Nasriachi Date: Sat, 16 Apr 2016 07:50:34 +0100 Subject: [PATCH 145/329] don't seem to be used --- lib/MetaCPAN/Document/Dependency.pm | 11 ----------- lib/MetaCPAN/Document/Module.pm | 17 +++++------------ 2 files changed, 5 insertions(+), 23 deletions(-) diff --git a/lib/MetaCPAN/Document/Dependency.pm b/lib/MetaCPAN/Document/Dependency.pm index 6fa71ec34..e54f85fd9 100644 --- a/lib/MetaCPAN/Document/Dependency.pm +++ b/lib/MetaCPAN/Document/Dependency.pm @@ -12,16 +12,5 @@ use MetaCPAN::Util; has [qw(phase relationship module version)] => ( is => 'ro', required => 1 ); -has version_numified => ( - is => 'ro', - required => 1, - isa => 'Str', - lazy_build => 1, -); - -sub _build_version_numified { - return MetaCPAN::Util::numify_version( shift->version ) . q{}; -} - __PACKAGE__->meta->make_immutable; 1; diff --git a/lib/MetaCPAN/Document/Module.pm b/lib/MetaCPAN/Document/Module.pm index 9893cd788..a2d657f71 100644 --- a/lib/MetaCPAN/Document/Module.pm +++ b/lib/MetaCPAN/Document/Module.pm @@ -76,13 +76,6 @@ has name => ( has version => ( is => 'ro' ); -has version_numified => ( - is => 'ro', - isa => 'Str', - lazy_build => 1, - required => 1, -); - has indexed => ( is => 'rw', required => 1, @@ -104,11 +97,11 @@ has associated_pod => ( is => 'rw', ); -sub _build_version_numified { - my $self = shift; - return 0 unless ( $self->version ); - return MetaCPAN::Util::numify_version( $self->version ) . q{}; -} +# sub _build_version_numified { +# my $self = shift; +# return 0 unless ( $self->version ); +# return MetaCPAN::Util::numify_version( $self->version ) . q{}; +# } my $bom = qr/(?:\x00\x00\xfe\xff|\xff\xfe\x00\x00|\xfe\xff|\xff\xfe|\xef\xbb\xbf)/; From bb2971e4774fc3c47e7531bdb7822921f68060d7 Mon Sep 17 00:00:00 2001 From: Mickey Nasriachi Date: Sun, 17 Apr 2016 11:38:07 +0100 Subject: [PATCH 146/329] cleanup --- lib/MetaCPAN/Document/Module.pm | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/lib/MetaCPAN/Document/Module.pm b/lib/MetaCPAN/Document/Module.pm index a2d657f71..f4fb31986 100644 --- a/lib/MetaCPAN/Document/Module.pm +++ b/lib/MetaCPAN/Document/Module.pm @@ -38,13 +38,6 @@ the C and the C property. Contains the raw version string. -=head2 version_numified - -B, B - -Numified version of L. Contains 0 if there is no version or the -version could not be parsed. - =head2 indexed B @@ -97,12 +90,6 @@ has associated_pod => ( is => 'rw', ); -# sub _build_version_numified { -# my $self = shift; -# return 0 unless ( $self->version ); -# return MetaCPAN::Util::numify_version( $self->version ) . q{}; -# } - my $bom = qr/(?:\x00\x00\xfe\xff|\xff\xfe\x00\x00|\xfe\xff|\xff\xfe|\xef\xbb\xbf)/; From 1a7a6897b42728a46e390e0536289644f648d268 Mon Sep 17 00:00:00 2001 From: Mickey Nasriachi Date: Sun, 17 Apr 2016 17:09:19 +0100 Subject: [PATCH 147/329] Revert "esx_model is used in BUILD... can be default" This reverts commit 46edaeaa79e806aad08ed3f83003934bc2727e41. --- lib/MetaCPAN/Server/Model/CPAN.pm | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/lib/MetaCPAN/Server/Model/CPAN.pm b/lib/MetaCPAN/Server/Model/CPAN.pm index 5f4bcbffb..393835664 100644 --- a/lib/MetaCPAN/Server/Model/CPAN.pm +++ b/lib/MetaCPAN/Server/Model/CPAN.pm @@ -11,9 +11,9 @@ extends 'Catalyst::Model'; with 'CatalystX::Component::Traits'; has esx_model => ( - is => 'ro', - handles => ['es'], - default => sub { MetaCPAN::Model->new( es => $_[0]->servers ) }, + is => 'ro', + lazy_build => 1, + handles => ['es'], ); has index => ( @@ -26,6 +26,10 @@ has servers => ( default => ':9200', ); +sub _build_esx_model { + MetaCPAN::Model->new( es => shift->servers ); +} + sub type { my $self = shift; return $self->esx_model->index( $self->index )->type(shift); From 259f6ef1ac25685a6abbc6bb100fb51be62b7751 Mon Sep 17 00:00:00 2001 From: Mickey Nasriachi Date: Sun, 17 Apr 2016 17:10:55 +0100 Subject: [PATCH 148/329] esx_model: lazy + builder --- lib/MetaCPAN/Server/Model/CPAN.pm | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lib/MetaCPAN/Server/Model/CPAN.pm b/lib/MetaCPAN/Server/Model/CPAN.pm index 393835664..ae547e23f 100644 --- a/lib/MetaCPAN/Server/Model/CPAN.pm +++ b/lib/MetaCPAN/Server/Model/CPAN.pm @@ -11,9 +11,10 @@ extends 'Catalyst::Model'; with 'CatalystX::Component::Traits'; has esx_model => ( - is => 'ro', - lazy_build => 1, - handles => ['es'], + is => 'ro', + lazy => 1, + builder => '_build_esx_model', + handles => ['es'], ); has index => ( From 9e491b800aa854a3d1f9f908155a07c6c6b1371c Mon Sep 17 00:00:00 2001 From: Mickey Nasriachi Date: Mon, 18 Apr 2016 09:58:19 +0100 Subject: [PATCH 149/329] use MetaCPAN::Types --- lib/Catalyst/Authentication/Store/Proxy.pm | 7 +++--- lib/MetaCPAN/Document/Author.pm | 2 +- lib/MetaCPAN/Document/Author/Profile.pm | 5 ++-- lib/MetaCPAN/Document/Dependency.pm | 1 + lib/MetaCPAN/Document/File.pm | 24 +++++++++---------- lib/MetaCPAN/Document/Module.pm | 6 ++--- lib/MetaCPAN/Document/Release.pm | 18 +++++++------- lib/MetaCPAN/Model/Archive.pm | 4 ++-- lib/MetaCPAN/Model/User/Account.pm | 2 +- lib/MetaCPAN/Model/User/Identity.pm | 3 ++- lib/MetaCPAN/Role/Logger.pm | 2 +- lib/MetaCPAN/Role/Script.pm | 6 ++--- lib/MetaCPAN/Script/Check.pm | 11 +++++---- lib/MetaCPAN/Script/First.pm | 3 ++- lib/MetaCPAN/Script/Latest.pm | 5 ++-- lib/MetaCPAN/Script/Mapping.pm | 3 ++- lib/MetaCPAN/Script/Query.pm | 3 ++- lib/MetaCPAN/Script/ReindexDist.pm | 9 +++---- lib/MetaCPAN/Script/Tickets.pm | 3 ++- lib/MetaCPAN/Script/Watcher.pm | 16 +++++++------ lib/MetaCPAN/Server/Controller.pm | 3 ++- .../Server/Controller/Login/OpenID.pm | 3 ++- lib/MetaCPAN/Server/Diff.pm | 5 ++-- lib/MetaCPAN/Server/QuerySanitizer.pm | 3 ++- t/lib/MetaCPAN/Tests/Distribution.pm | 3 ++- t/lib/MetaCPAN/Tests/Model.pm | 9 +++---- t/lib/MetaCPAN/Tests/Release.pm | 17 ++++++------- 27 files changed, 98 insertions(+), 78 deletions(-) diff --git a/lib/Catalyst/Authentication/Store/Proxy.pm b/lib/Catalyst/Authentication/Store/Proxy.pm index ba4484e1f..a97673f75 100644 --- a/lib/Catalyst/Authentication/Store/Proxy.pm +++ b/lib/Catalyst/Authentication/Store/Proxy.pm @@ -3,16 +3,17 @@ package Catalyst::Authentication::Store::Proxy; # ABSTRACT: Delegates authentication logic to the user object use Moose; use Catalyst::Utils; +use MetaCPAN::Types qw( HashRef Str ); has user_class => ( is => 'ro', required => 1, - isa => 'Str', + isa => Str, lazy => 1, builder => '_build_user_class' ); -has handles => ( is => 'ro', isa => 'HashRef' ); -has config => ( is => 'ro', isa => 'HashRef' ); +has handles => ( is => 'ro', isa => HashRef ); +has config => ( is => 'ro', isa => HashRef ); has app => ( is => 'ro', isa => 'ClassName' ); has realm => ( is => 'ro' ); diff --git a/lib/MetaCPAN/Document/Author.pm b/lib/MetaCPAN/Document/Author.pm index 78de7b713..5e0cb6839 100644 --- a/lib/MetaCPAN/Document/Author.pm +++ b/lib/MetaCPAN/Document/Author.pm @@ -88,7 +88,7 @@ has location => ( is => 'ro', isa => Location, coerce => 1, required => 0 ); has extra => ( is => 'ro', - isa => 'HashRef', + isa => HashRef, source_only => 1, dynamic => 1, required => 0, diff --git a/lib/MetaCPAN/Document/Author/Profile.pm b/lib/MetaCPAN/Document/Author/Profile.pm index e85cd464d..eec7416a5 100644 --- a/lib/MetaCPAN/Document/Author/Profile.pm +++ b/lib/MetaCPAN/Document/Author/Profile.pm @@ -9,16 +9,17 @@ use ElasticSearchX::Model::Document; with 'ElasticSearchX::Model::Document::EmbeddedRole'; use MetaCPAN::Util; +use MetaCPAN::Types qw( Str ); has name => ( is => 'ro', - isa => 'Str', + isa => Str, required => 1, ); has id => ( is => 'ro', - isa => 'Str', + isa => Str, analyzer => ['simple'], ); diff --git a/lib/MetaCPAN/Document/Dependency.pm b/lib/MetaCPAN/Document/Dependency.pm index e54f85fd9..123953d28 100644 --- a/lib/MetaCPAN/Document/Dependency.pm +++ b/lib/MetaCPAN/Document/Dependency.pm @@ -9,6 +9,7 @@ use ElasticSearchX::Model::Document; with 'ElasticSearchX::Model::Document::EmbeddedRole'; use MetaCPAN::Util; +use MetaCPAN::Types qw( Str ); has [qw(phase relationship module version)] => ( is => 'ro', required => 1 ); diff --git a/lib/MetaCPAN/Document/File.pm b/lib/MetaCPAN/Document/File.pm index f27bb4310..8d5c2f181 100644 --- a/lib/MetaCPAN/Document/File.pm +++ b/lib/MetaCPAN/Document/File.pm @@ -209,7 +209,7 @@ File is binary or not. has binary => ( is => 'ro', - isa => 'Bool', + isa => Bool, required => 1, default => 0, ); @@ -223,7 +223,7 @@ See L. has authorized => ( required => 1, is => 'rw', - isa => 'Bool', + isa => Bool, default => 1, ); @@ -249,7 +249,7 @@ Return true if this object represents a directory. has directory => ( is => 'ro', required => 1, - isa => 'Bool', + isa => Bool, default => 0, ); @@ -312,7 +312,7 @@ not. See L for a more verbose explanation. has indexed => ( required => 1, is => 'rw', - isa => 'Bool', + isa => Bool, lazy => 1, default => sub { my ($self) = @_; @@ -331,7 +331,7 @@ has a level of C<0>). has level => ( is => 'ro', - isa => 'Int', + isa => Int, lazy => 1, builder => '_build_level', ); @@ -351,7 +351,7 @@ are removed to save space and for better snippet previews. has pod => ( is => 'ro', - isa => 'ScalarRef', + isa => ScalarRef, lazy => 1, builder => '_build_pod', index => 'analyzed', @@ -428,7 +428,7 @@ ArrayRef of ArrayRefs of offset and length of pod blocks. Example: has pod_lines => ( is => 'ro', - isa => 'ArrayRef', + isa => ArrayRef, type => 'integer', lazy => 1, builder => '_build_pod_lines', @@ -452,7 +452,7 @@ L and returns the number of lines. has sloc => ( is => 'ro', - isa => 'Int', + isa => Int, lazy => 1, builder => '_build_sloc', ); @@ -487,7 +487,7 @@ Source Lines of Pod. Returns the number of pod lines using L. has slop => ( is => 'ro', - isa => 'Int', + isa => Int, lazy => 1, default => '_build_slop', writer => '_set_slop', @@ -539,7 +539,7 @@ version could not be parsed. has version_numified => ( is => 'ro', - isa => 'Num', + isa => Num, lazy => 1, builder => '_build_version_numified', ); @@ -585,7 +585,7 @@ sub _build_path { has dir => ( is => 'ro', - isa => 'Str', + isa => Str, lazy => 1, builder => '_build_dir', index => 'not_analyzed' @@ -618,7 +618,7 @@ Built by calling L. has content => ( is => 'ro', - isa => 'ScalarRef', + isa => ScalarRef, lazy => 1, builder => '_build_content', property => 0, diff --git a/lib/MetaCPAN/Document/Module.pm b/lib/MetaCPAN/Document/Module.pm index f4fb31986..5df9647f1 100644 --- a/lib/MetaCPAN/Document/Module.pm +++ b/lib/MetaCPAN/Document/Module.pm @@ -8,7 +8,7 @@ use ElasticSearchX::Model::Document; with 'ElasticSearchX::Model::Document::EmbeddedRole'; -use MetaCPAN::Types qw(AssociatedPod); +use MetaCPAN::Types qw( AssociatedPod Bool Str ); use MetaCPAN::Util; =head1 SYNOPSIS @@ -72,14 +72,14 @@ has version => ( is => 'ro' ); has indexed => ( is => 'rw', required => 1, - isa => 'Bool', + isa => Bool, default => 0, ); has authorized => ( is => 'rw', required => 1, - isa => 'Bool', + isa => Bool, default => 1, ); diff --git a/lib/MetaCPAN/Document/Release.pm b/lib/MetaCPAN/Document/Release.pm index fd0405a8d..be2818555 100644 --- a/lib/MetaCPAN/Document/Release.pm +++ b/lib/MetaCPAN/Document/Release.pm @@ -103,8 +103,8 @@ This is an ArrayRef of modules that are included in this release. =cut has provides => ( - isa => 'ArrayRef[Str]', - is => 'rw', + isa => ArrayRef [Str], + is => 'rw', ); has id => ( @@ -119,7 +119,7 @@ has [qw(version author archive)] => ( has license => ( is => 'ro', - isa => 'ArrayRef', + isa => ArrayRef, required => 1, ); @@ -143,7 +143,7 @@ has [qw(distribution name)] => ( has version_numified => ( is => 'ro', - isa => 'Num', + isa => Num, lazy => 1, builder => '_build_version_numified', ); @@ -202,14 +202,14 @@ has tests => ( has authorized => ( is => 'rw', required => 1, - isa => 'Bool', + isa => Bool, default => 1, ); has first => ( is => 'rw', required => 1, - isa => 'Bool', + isa => Bool, lazy => 1, builder => '_build_first', ); @@ -217,20 +217,20 @@ has first => ( has metadata => ( coerce => 1, is => 'ro', - isa => 'HashRef', + isa => HashRef, dynamic => 1, source_only => 1, ); has main_module => ( is => 'rw', - isa => 'Str', + isa => Str, required => 0, ); has changes_file => ( is => 'rw', - isa => 'Str', + isa => Str, required => 0, ); diff --git a/lib/MetaCPAN/Model/Archive.pm b/lib/MetaCPAN/Model/Archive.pm index 4205665bd..af74b209e 100644 --- a/lib/MetaCPAN/Model/Archive.pm +++ b/lib/MetaCPAN/Model/Archive.pm @@ -3,7 +3,7 @@ package MetaCPAN::Model::Archive; use v5.10; use Moose; use MooseX::StrictConstructor; -use MetaCPAN::Types qw(AbsFile AbsDir Bool); +use MetaCPAN::Types qw(AbsFile AbsDir ArrayRef Bool); use Archive::Any; use Carp; @@ -112,7 +112,7 @@ A list of the files in the archive as an array ref. # A cheap way to cache the result. has files => ( is => 'ro', - isa => 'ArrayRef', + isa => ArrayRef, init_arg => undef, lazy => 1, default => sub { diff --git a/lib/MetaCPAN/Model/User/Account.pm b/lib/MetaCPAN/Model/User/Account.pm index 899296f90..37158eee0 100644 --- a/lib/MetaCPAN/Model/User/Account.pm +++ b/lib/MetaCPAN/Model/User/Account.pm @@ -91,7 +91,7 @@ is true if the user is connected to a PAUSE account or he L. has looks_human => ( is => 'ro', - isa => 'Bool', + isa => Bool, lazy => 1, builder => '_build_looks_human', clearer => 'clear_looks_human', diff --git a/lib/MetaCPAN/Model/User/Identity.pm b/lib/MetaCPAN/Model/User/Identity.pm index 71ff59415..8ed4598bb 100644 --- a/lib/MetaCPAN/Model/User/Identity.pm +++ b/lib/MetaCPAN/Model/User/Identity.pm @@ -5,6 +5,7 @@ use warnings; use Moose; use ElasticSearchX::Model::Document; +use MetaCPAN::Types qw( HashRef ); has name => ( is => 'ro', @@ -15,7 +16,7 @@ has key => ( is => 'ro' ); has extra => ( is => 'ro', - isa => 'HashRef', + isa => HashRef, source_only => 1, dynamic => 1, ); diff --git a/lib/MetaCPAN/Role/Logger.pm b/lib/MetaCPAN/Role/Logger.pm index b3acc6365..fae31c5fe 100644 --- a/lib/MetaCPAN/Role/Logger.pm +++ b/lib/MetaCPAN/Role/Logger.pm @@ -9,7 +9,7 @@ use Path::Class (); has level => ( is => 'ro', - isa => 'Str', + isa => Str, required => 1, trigger => \&set_level, documentation => 'Log level', diff --git a/lib/MetaCPAN/Role/Script.pm b/lib/MetaCPAN/Role/Script.pm index 4230fe950..c520dbcb7 100644 --- a/lib/MetaCPAN/Role/Script.pm +++ b/lib/MetaCPAN/Role/Script.pm @@ -48,13 +48,13 @@ has model => ( has index => ( reader => '_index', is => 'ro', - isa => 'Str', + isa => Str, default => 'cpan', documentation => 'Index to use, defaults to "cpan"', ); has port => ( - isa => 'Int', + isa => Int, is => 'ro', required => 1, documentation => 'Port for the proxy, defaults to 5000', @@ -69,7 +69,7 @@ has home => ( has config => ( is => 'ro', - isa => 'HashRef', + isa => HashRef, lazy => 1, builder => '_build_config', ); diff --git a/lib/MetaCPAN/Script/Check.pm b/lib/MetaCPAN/Script/Check.pm index fea6c9ba1..69d179fdc 100644 --- a/lib/MetaCPAN/Script/Check.pm +++ b/lib/MetaCPAN/Script/Check.pm @@ -6,26 +6,27 @@ use warnings; use File::Spec::Functions qw(catfile); use Log::Contextual qw( :log ); use Moose; +use MetaCPAN::Types qw( Bool Int Str ); with 'MetaCPAN::Role::Script', 'MooseX::Getopt'; has modules => ( is => 'ro', - isa => 'Bool', + isa => Bool, default => 0, documentation => 'check CPAN packages against MetaCPAN', ); has module => ( is => 'ro', - isa => 'Str', + isa => Str, default => '', documentation => 'the name of the module you are checking', ); has max_errors => ( is => 'ro', - isa => 'Int', + isa => Int, default => 0, documentation => 'the maximum number of errors to encounter before stopping', @@ -33,14 +34,14 @@ has max_errors => ( has errors_only => ( is => 'ro', - isa => 'Bool', + isa => Bool, default => 0, documentation => 'just show errors', ); has error_count => ( is => 'rw', - isa => 'Int', + isa => Int, default => 0, traits => ['NoGetopt'] ); diff --git a/lib/MetaCPAN/Script/First.pm b/lib/MetaCPAN/Script/First.pm index e380dfe2c..fb59875ef 100644 --- a/lib/MetaCPAN/Script/First.pm +++ b/lib/MetaCPAN/Script/First.pm @@ -5,12 +5,13 @@ use warnings; use Log::Contextual qw( :log ); use Moose; +use MetaCPAN::Types qw( Str ); with 'MetaCPAN::Role::Script', 'MooseX::Getopt'; has distribution => ( is => 'rw', - isa => 'Str', + isa => Str, documentation => q{set the 'first' for only this distribution}, ); diff --git a/lib/MetaCPAN/Script/Latest.pm b/lib/MetaCPAN/Script/Latest.pm index f93f8ec89..58f0de15b 100644 --- a/lib/MetaCPAN/Script/Latest.pm +++ b/lib/MetaCPAN/Script/Latest.pm @@ -9,18 +9,19 @@ use MooseX::Aliases; use Parse::CPAN::Packages::Fast; use Regexp::Common qw(time); use Time::Local; +use MetaCPAN::Types qw( Bool Str ); with 'MetaCPAN::Role::Script', 'MooseX::Getopt'; has dry_run => ( is => 'ro', - isa => 'Bool', + isa => Bool, default => 0, ); has distribution => ( is => 'ro', - isa => 'Str', + isa => Str, ); has packages => ( diff --git a/lib/MetaCPAN/Script/Mapping.pm b/lib/MetaCPAN/Script/Mapping.pm index c87935300..d367bd4ff 100644 --- a/lib/MetaCPAN/Script/Mapping.pm +++ b/lib/MetaCPAN/Script/Mapping.pm @@ -5,12 +5,13 @@ use warnings; use Log::Contextual qw( :log ); use Moose; +use MetaCPAN::Types qw( Bool ); with 'MetaCPAN::Role::Script', 'MooseX::Getopt'; has delete => ( is => 'ro', - isa => 'Bool', + isa => Bool, default => 0, documentation => 'delete index if it exists already', ); diff --git a/lib/MetaCPAN/Script/Query.pm b/lib/MetaCPAN/Script/Query.pm index bc355a288..908b8e01b 100644 --- a/lib/MetaCPAN/Script/Query.pm +++ b/lib/MetaCPAN/Script/Query.pm @@ -8,6 +8,7 @@ use JSON::XS; use Moose; use MooseX::Aliases; use YAML::Syck qw(Dump); +use MetaCPAN::Types qw( Str ); with 'MetaCPAN::Role::Script', 'MooseX::Getopt'; @@ -22,7 +23,7 @@ has X => ( has d => ( is => 'ro', - isa => 'Str', + isa => Str, documentation => 'request body', ); diff --git a/lib/MetaCPAN/Script/ReindexDist.pm b/lib/MetaCPAN/Script/ReindexDist.pm index 7d646ed81..f542ccc18 100644 --- a/lib/MetaCPAN/Script/ReindexDist.pm +++ b/lib/MetaCPAN/Script/ReindexDist.pm @@ -6,12 +6,13 @@ use strict; use warnings; use Moose; +use MetaCPAN::Types qw( ArrayRef Bool Str ); with 'MetaCPAN::Role::Script', 'MooseX::Getopt'; has distribution => ( is => 'ro', - isa => 'Str', + isa => Str, lazy => 1, builder => '_build_distribution', ); @@ -26,7 +27,7 @@ sub _build_distribution { has releases => ( is => 'ro', - isa => 'ArrayRef', + isa => ArrayRef, lazy => 1, builder => '_build_releases', ); @@ -43,14 +44,14 @@ sub _build_releases { has sources => ( is => 'ro', - isa => 'ArrayRef', + isa => ArrayRef, lazy => 1, builder => '_build_sources', ); has prompt => ( is => 'ro', - isa => 'Bool', + isa => Bool, default => 1, documentation => q{Prompt for confirmation (default true)}, ); diff --git a/lib/MetaCPAN/Script/Tickets.pm b/lib/MetaCPAN/Script/Tickets.pm index b58979752..bdde602ed 100644 --- a/lib/MetaCPAN/Script/Tickets.pm +++ b/lib/MetaCPAN/Script/Tickets.pm @@ -14,6 +14,7 @@ use Moose; use Parse::CSV; use Pithub; use URI::Escape qw(uri_escape); +use MetaCPAN::Types qw( ArrayRef Str ); with 'MetaCPAN::Role::Script', 'MooseX::Getopt'; @@ -39,7 +40,7 @@ has github_token => ( has source => ( is => 'ro', required => 1, - isa => 'ArrayRef[Str]', + isa => ArrayRef [Str], default => sub { [qw(rt github)] }, ); diff --git a/lib/MetaCPAN/Script/Watcher.pm b/lib/MetaCPAN/Script/Watcher.pm index 131bf4687..935bda396 100644 --- a/lib/MetaCPAN/Script/Watcher.pm +++ b/lib/MetaCPAN/Script/Watcher.pm @@ -2,24 +2,25 @@ package MetaCPAN::Script::Watcher; use strict; use warnings; +use Moose; use CPAN::DistnameInfo; use JSON::XS; use Log::Contextual qw( :log ); use MetaCPAN::Util; -use Moose; +use MetaCPAN::Types qw( Bool ); with 'MetaCPAN::Role::Script', 'MooseX::Getopt'; has backpan => ( is => 'ro', - isa => 'Bool', + isa => Bool, documentation => 'update deleted archives only', ); has dry_run => ( is => 'ro', - isa => 'Bool', + isa => Bool, default => 0, ); @@ -102,12 +103,13 @@ sub backpan_changes { type => 'release', fields => [qw(author archive)], body => { - query => { + query => { filtered => { query => { match_all => {} }, filter => { - not => - { filter => { term => { status => 'backpan' } } } + not => { + filter => { term => { status => 'backpan' } } + } }, } } @@ -196,7 +198,7 @@ sub reindex_release { search_type => 'scan', fields => [ '_parent', '_source' ], body => { - query => { + query => { filtered => { query => { match_all => {} }, filter => { diff --git a/lib/MetaCPAN/Server/Controller.pm b/lib/MetaCPAN/Server/Controller.pm index 03f241cb1..72a7a291d 100644 --- a/lib/MetaCPAN/Server/Controller.pm +++ b/lib/MetaCPAN/Server/Controller.pm @@ -8,6 +8,7 @@ use JSON; use List::MoreUtils (); use Moose::Util (); use Moose; +use MetaCPAN::Types qw( HashRef ); BEGIN { extends 'Catalyst::Controller'; } @@ -28,7 +29,7 @@ has type => ( has relationships => ( is => 'ro', - isa => 'HashRef', + isa => HashRef, default => sub { {} }, traits => ['Hash'], handles => { has_relationships => 'count' }, diff --git a/lib/MetaCPAN/Server/Controller/Login/OpenID.pm b/lib/MetaCPAN/Server/Controller/Login/OpenID.pm index 3644a0d4c..aff8175c6 100644 --- a/lib/MetaCPAN/Server/Controller/Login/OpenID.pm +++ b/lib/MetaCPAN/Server/Controller/Login/OpenID.pm @@ -7,6 +7,7 @@ use Moose; use Net::OpenID::Consumer; use LWP::UserAgent::Paranoid; use MooseX::ClassAttribute; +use MetaCPAN::Types qw( Str ); BEGIN { extends 'MetaCPAN::Server::Controller::Login' } @@ -27,7 +28,7 @@ sub _build_ua { has 'sreg' => ( is => 'rw', - isa => 'Str', + isa => Str, default => 'http://openid.net/extensions/sreg/1.1', ); diff --git a/lib/MetaCPAN/Server/Diff.pm b/lib/MetaCPAN/Server/Diff.pm index db4c781e1..ba6203219 100644 --- a/lib/MetaCPAN/Server/Diff.pm +++ b/lib/MetaCPAN/Server/Diff.pm @@ -2,10 +2,11 @@ package MetaCPAN::Server::Diff; use strict; use warnings; +use Moose; use Encoding::FixLatin (); use IPC::Run3; -use Moose; +use MetaCPAN::Types qw( ArrayRef ); has git => ( is => 'ro', @@ -25,7 +26,7 @@ has raw => ( has structured => ( is => 'ro', - isa => 'ArrayRef', + isa => ArrayRef, lazy => 1, builder => '_build_structured', ); diff --git a/lib/MetaCPAN/Server/QuerySanitizer.pm b/lib/MetaCPAN/Server/QuerySanitizer.pm index 15921c456..d3319c4a6 100644 --- a/lib/MetaCPAN/Server/QuerySanitizer.pm +++ b/lib/MetaCPAN/Server/QuerySanitizer.pm @@ -4,10 +4,11 @@ use strict; use warnings; use Moose; +use MetaCPAN::Types qw( HashRef Maybe ); has query => ( is => 'ro', - isa => 'Maybe[HashRef]', + isa => Maybe [HashRef], trigger => \&_build_clean_query, ); diff --git a/t/lib/MetaCPAN/Tests/Distribution.pm b/t/lib/MetaCPAN/Tests/Distribution.pm index 29cae07a5..80a57c8bd 100644 --- a/t/lib/MetaCPAN/Tests/Distribution.pm +++ b/t/lib/MetaCPAN/Tests/Distribution.pm @@ -2,6 +2,7 @@ package MetaCPAN::Tests::Distribution; use Test::Routine; use Test::More; use version; +use MetaCPAN::Types qw( Str ); with qw( MetaCPAN::Tests::Model @@ -19,7 +20,7 @@ my @attrs = qw( has [@attrs] => ( is => 'ro', - isa => 'Str', + isa => Str, ); test 'distribution attributes' => sub { diff --git a/t/lib/MetaCPAN/Tests/Model.pm b/t/lib/MetaCPAN/Tests/Model.pm index 651572f8b..8ed13037d 100644 --- a/t/lib/MetaCPAN/Tests/Model.pm +++ b/t/lib/MetaCPAN/Tests/Model.pm @@ -4,6 +4,7 @@ use Test::More; use Try::Tiny; use MetaCPAN::Server::Test (); +use MetaCPAN::Types qw( ArrayRef HashRef Str ); with qw( MetaCPAN::Tests::Extra @@ -34,7 +35,7 @@ around BUILDARGS => sub { has _type => ( is => 'ro', - isa => 'Str', + isa => Str, builder => '_build_type', ); @@ -50,7 +51,7 @@ sub _build__model { has index => ( reader => '_index', - isa => 'Str', + isa => Str, default => 'cpan', ); @@ -61,7 +62,7 @@ sub index { has search => ( is => 'ro', - isa => 'ArrayRef', + isa => ArrayRef, lazy => 1, builder => '_build_search', ); @@ -81,7 +82,7 @@ has data => ( has _expectations => ( is => 'ro', - isa => 'HashRef', + isa => HashRef, predicate => 'has_expectations', init_arg => '_expect', ); diff --git a/t/lib/MetaCPAN/Tests/Release.pm b/t/lib/MetaCPAN/Tests/Release.pm index 9999c0f4a..0598cdc78 100644 --- a/t/lib/MetaCPAN/Tests/Release.pm +++ b/t/lib/MetaCPAN/Tests/Release.pm @@ -8,6 +8,7 @@ use HTTP::Request::Common; use List::Util (); use MetaCPAN::TestApp; use Test::More; +use MetaCPAN::Types qw( ArrayRef HashRef Str ); with( 'MetaCPAN::Tests::Model', 'MetaCPAN::Tests::Role::HasApp' ); @@ -47,12 +48,12 @@ my @attrs = qw( has [@attrs] => ( is => 'ro', - isa => 'Str', + isa => Str, ); has version_numified => ( is => 'ro', - isa => 'Str', + isa => Str, lazy => 1, default => sub { @@ -66,7 +67,7 @@ has version_numified => ( has files => ( is => 'ro', - isa => 'ArrayRef', + isa => ArrayRef, lazy => 1, builder => '_build_files', ); @@ -98,7 +99,7 @@ sub file_by_path { has module_files => ( is => 'ro', - isa => 'ArrayRef', + isa => ArrayRef, lazy => 1, builder => '_build_module_files', ); @@ -131,7 +132,7 @@ sub filter_files { has modules => ( is => 'ro', - isa => 'HashRef', + isa => HashRef, default => sub { +{} }, ); @@ -151,20 +152,20 @@ sub pod { # but many test dists only have one version so 'latest' is more likely. has status => ( is => 'ro', - isa => 'Str', + isa => Str, default => 'latest', ); has archive => ( is => 'ro', - isa => 'Str', + isa => Str, lazy => 1, default => sub { shift->name . '.tar.gz' }, ); has name => ( is => 'ro', - isa => 'Str', + isa => Str, lazy => 1, default => sub { my ($self) = @_; From 1309584c90fc2728211fa077ec8cc65b8f6fe806 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Sun, 17 Apr 2016 12:17:08 -0400 Subject: [PATCH 150/329] s/after_script/after_failure/ --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 6a79e177a..a23fd45a8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -63,7 +63,7 @@ script: after_success: - cover -report coveralls -after_script: +after_failure: - cat ~/.cpanm/build.log services: From ba80a8028d951d1a5e63ae00e851b3a51fdff2b8 Mon Sep 17 00:00:00 2001 From: Graham Knop Date: Mon, 18 Apr 2016 12:42:27 -0400 Subject: [PATCH 151/329] fix provides data in snapshot --- cpanfile.snapshot | 404 +++++++++++++++++----------------------------- 1 file changed, 151 insertions(+), 253 deletions(-) diff --git a/cpanfile.snapshot b/cpanfile.snapshot index e1eb15ea6..f4722b5db 100644 --- a/cpanfile.snapshot +++ b/cpanfile.snapshot @@ -632,30 +632,11 @@ DISTRIBUTIONS Catalyst::Action::Serialize::YAML 1.20 Catalyst::Action::Serialize::YAML::HTML 1.20 Catalyst::Action::SerializeBase 1.20 - Catalyst::Action::Serializer::Broken undef Catalyst::Controller::REST 1.20 Catalyst::Request::REST 1.20 Catalyst::Request::REST::ForBrowsers 1.20 Catalyst::TraitFor::Request::REST 1.20 Catalyst::TraitFor::Request::REST::ForBrowsers 1.20 - Test::Action::Class undef - Test::Action::Class::Sub undef - Test::Catalyst::Action::REST undef - Test::Catalyst::Action::REST::Controller::Actions undef - Test::Catalyst::Action::REST::Controller::ActionsForBrowsers undef - Test::Catalyst::Action::REST::Controller::Deserialize undef - Test::Catalyst::Action::REST::Controller::DeserializeMultiPart undef - Test::Catalyst::Action::REST::Controller::Override undef - Test::Catalyst::Action::REST::Controller::REST undef - Test::Catalyst::Action::REST::Controller::Root undef - Test::Catalyst::Action::REST::Controller::Serialize undef - Test::Catalyst::Log undef - Test::Rest undef - Test::Serialize undef - Test::Serialize::Controller::JSON undef - Test::Serialize::Controller::REST undef - Test::Serialize::View::Awful undef - Test::Serialize::View::Simple undef requirements: Catalyst::Runtime 5.80030 Class::Inspector 1.13 @@ -823,7 +804,7 @@ DISTRIBUTIONS Catalyst::ScriptRole undef Catalyst::ScriptRunner undef Catalyst::Stats undef - Catalyst::Test 3.4 + Catalyst::Test undef Catalyst::Utils undef Catalyst::View undef requirements: @@ -924,7 +905,6 @@ DISTRIBUTIONS pathname: R/RO/ROKR/CatalystX-InjectComponent-0.025.tar.gz provides: CatalystX::InjectComponent 0.025 - t::Test::Apple undef requirements: Catalyst::Runtime 5.8 Class::Inspector 0 @@ -1089,6 +1069,7 @@ DISTRIBUTIONS pathname: D/DA/DAGOLDEN/Class-Tiny-1.004.tar.gz provides: Class::Tiny 1.004 + Class::Tiny::Object 1.004 requirements: Carp 0 ExtUtils::MakeMaker 6.17 @@ -1255,8 +1236,6 @@ DISTRIBUTIONS Config::JFDI 0.065 Config::JFDI::Carp undef Config::JFDI::Source::Loader undef - eq 0.065 - t::Test undef requirements: Any::Moose 0 Carp::Clan::Share 0 @@ -1348,8 +1327,8 @@ DISTRIBUTIONS DBD-Pg-3.5.3 pathname: T/TU/TURNSTEP/DBD-Pg-3.5.3.tar.gz provides: - Bundle::DBD::Pg 3.005003 - DBD::Pg 3.005003 + Bundle::DBD::Pg v3.5.3 + DBD::Pg v3.5.3 requirements: DBI 1.614 ExtUtils::MakeMaker 6.11 @@ -1705,23 +1684,7 @@ DISTRIBUTIONS Data-Section-0.200006 pathname: R/RJ/RJBS/Data-Section-0.200006.tar.gz provides: - Child undef Data::Section 0.200006 - End undef - Godfather undef - Grandchild undef - Header undef - I::Child undef - I::Grandchild undef - I::Parent undef - Latin1 undef - NoData undef - NoName undef - Parent undef - Relaxed undef - Unicode_nopragma undef - Unicode_pragma undef - WindowsNewlines undef requirements: Encode 0 ExtUtils::MakeMaker 6.30 @@ -1755,6 +1718,8 @@ DISTRIBUTIONS DateTime::Duration 1.26 DateTime::Helpers 1.26 DateTime::Infinite 1.26 + DateTime::Infinite::Future 1.26 + DateTime::Infinite::Past 1.26 DateTime::LeapSecond 1.26 DateTime::PP 1.26 DateTime::PPExtra 1.26 @@ -1834,7 +1799,7 @@ DISTRIBUTIONS DateTime-Format-RFC3339-v1.2.0 pathname: I/IK/IKEGAMI/DateTime-Format-RFC3339-v1.2.0.tar.gz provides: - DateTime::Format::RFC3339 undef + DateTime::Format::RFC3339 1.002000 requirements: ExtUtils::MakeMaker 6.52 DateTime-Format-Strptime-1.67 @@ -2485,29 +2450,29 @@ DISTRIBUTIONS ElasticSearchX-Model-1.0.0 pathname: O/OA/OALDERS/ElasticSearchX-Model-1.0.0.tar.gz provides: - ElasticSearchX::Model 1.000000 - ElasticSearchX::Model::Bulk 1.000000 - ElasticSearchX::Model::Document 1.000000 - ElasticSearchX::Model::Document::EmbeddedRole 1.000000 - ElasticSearchX::Model::Document::Mapping 1.000000 - ElasticSearchX::Model::Document::Role 1.000000 - ElasticSearchX::Model::Document::Set 1.000000 - ElasticSearchX::Model::Document::Trait::Attribute 1.000000 - ElasticSearchX::Model::Document::Trait::Class 1.000000 - ElasticSearchX::Model::Document::Trait::Class::ID 1.000000 - ElasticSearchX::Model::Document::Trait::Class::Timestamp 1.000000 - ElasticSearchX::Model::Document::Trait::Class::Version 1.000000 - ElasticSearchX::Model::Document::Trait::Field::ID 1.000000 - ElasticSearchX::Model::Document::Trait::Field::TTL 1.000000 - ElasticSearchX::Model::Document::Trait::Field::Timestamp 1.000000 - ElasticSearchX::Model::Document::Trait::Field::Version 1.000000 - ElasticSearchX::Model::Document::Types 1.000000 - ElasticSearchX::Model::Index 1.000000 - ElasticSearchX::Model::Role 1.000000 - ElasticSearchX::Model::Scroll 1.000000 - ElasticSearchX::Model::Trait::Class 1.000000 - ElasticSearchX::Model::Tutorial 1.000000 - ElasticSearchX::Model::Util 1.000000 + ElasticSearchX::Model v1.0.0 + ElasticSearchX::Model::Bulk v1.0.0 + ElasticSearchX::Model::Document v1.0.0 + ElasticSearchX::Model::Document::EmbeddedRole v1.0.0 + ElasticSearchX::Model::Document::Mapping v1.0.0 + ElasticSearchX::Model::Document::Role v1.0.0 + ElasticSearchX::Model::Document::Set v1.0.0 + ElasticSearchX::Model::Document::Trait::Attribute v1.0.0 + ElasticSearchX::Model::Document::Trait::Class v1.0.0 + ElasticSearchX::Model::Document::Trait::Class::ID v1.0.0 + ElasticSearchX::Model::Document::Trait::Class::Timestamp v1.0.0 + ElasticSearchX::Model::Document::Trait::Class::Version v1.0.0 + ElasticSearchX::Model::Document::Trait::Field::ID v1.0.0 + ElasticSearchX::Model::Document::Trait::Field::TTL v1.0.0 + ElasticSearchX::Model::Document::Trait::Field::Timestamp v1.0.0 + ElasticSearchX::Model::Document::Trait::Field::Version v1.0.0 + ElasticSearchX::Model::Document::Types v1.0.0 + ElasticSearchX::Model::Index v1.0.0 + ElasticSearchX::Model::Role v1.0.0 + ElasticSearchX::Model::Scroll v1.0.0 + ElasticSearchX::Model::Trait::Class v1.0.0 + ElasticSearchX::Model::Tutorial v1.0.0 + ElasticSearchX::Model::Util v1.0.0 requirements: Carp 0 Class::Load 0 @@ -2539,7 +2504,6 @@ DISTRIBUTIONS Email::Abstract::MailInternet 3.008 Email::Abstract::MailMessage 3.008 Email::Abstract::Plugin 3.008 - Test::EmailAbstract undef requirements: Carp 0 Email::Simple 1.998 @@ -2596,9 +2560,6 @@ DISTRIBUTIONS Email::Sender::Transport::Test 1.300027 Email::Sender::Transport::Wrapper 1.300027 Email::Sender::Util 1.300027 - Test::Email::SMTPRig undef - Test::Email::Sender::Transport::FailEvery undef - Test::Email::Sender::Util undef requirements: Carp 0 Email::Abstract 3.006 @@ -2671,6 +2632,9 @@ DISTRIBUTIONS pathname: S/SH/SHLOMIF/Error-0.17024.tar.gz provides: Error 0.17024 + Error::Simple 0.17024 + Error::WarnDie undef + Error::subs undef requirements: Module::Build 0.280801 Scalar::Util 0 @@ -2907,10 +2871,12 @@ DISTRIBUTIONS File-Find-Object-v0.2.13 pathname: S/SH/SHLOMIF/File-Find-Object-v0.2.13.tar.gz provides: - File::Find::Object 0.002013 - File::Find::Object::Base 0.002013 - File::Find::Object::PathComp 0.002013 - File::Find::Object::Result 0.002013 + File::Find::Object v0.2.13 + File::Find::Object::Base v0.2.13 + File::Find::Object::DeepPath v0.2.13 + File::Find::Object::PathComp v0.2.13 + File::Find::Object::Result v0.2.13 + File::Find::Object::TopPath v0.2.13 requirements: Carp 0 Class::XSAccessor 0 @@ -3383,7 +3349,6 @@ DISTRIBUTIONS HTTP::Body::UrlEncoded 1.22 HTTP::Body::XForms 1.22 HTTP::Body::XFormsMultipart 1.22 - PAML undef requirements: Carp 0 Digest::MD5 0 @@ -3574,6 +3539,7 @@ DISTRIBUTIONS pathname: E/ET/ETHER/Hook-LexWrap-0.25.tar.gz provides: Hook::LexWrap 0.25 + Hook::LexWrap::Cleanup 0.25 requirements: Carp 0 ExtUtils::MakeMaker 0 @@ -4004,9 +3970,6 @@ DISTRIBUTIONS Log-Contextual-0.007000 pathname: F/FR/FREW/Log-Contextual-0.007000.tar.gz provides: - BaseLogger undef - DefaultImportLogger undef - DumbLogger2 undef Log::Contextual 0.007000 Log::Contextual::Easy::Default 0.007000 Log::Contextual::Easy::Package 0.007000 @@ -4018,10 +3981,6 @@ DISTRIBUTIONS Log::Contextual::SimpleLogger 0.007000 Log::Contextual::TeeLogger 0.007000 Log::Contextual::WarnLogger 0.007000 - My::Module undef - My::Module2 undef - TestExporter undef - TestRouter undef requirements: Carp 0 Data::Dumper::Concise 0 @@ -4073,13 +4032,16 @@ DISTRIBUTIONS L4pResurrectable 0.01 Log::Log4perl 1.47 Log::Log4perl::Appender undef + Log::Log4perl::Appender::Buffer undef Log::Log4perl::Appender::DBI undef Log::Log4perl::Appender::File undef + Log::Log4perl::Appender::Limit undef Log::Log4perl::Appender::RRDs undef Log::Log4perl::Appender::Screen undef Log::Log4perl::Appender::ScreenColoredLevels undef Log::Log4perl::Appender::Socket undef Log::Log4perl::Appender::String undef + Log::Log4perl::Appender::Synchronized undef Log::Log4perl::Appender::TestArrayBuffer undef Log::Log4perl::Appender::TestBuffer undef Log::Log4perl::Appender::TestFileCreeper undef @@ -4308,7 +4270,6 @@ DISTRIBUTIONS Mixin-Linewise-0.108 pathname: R/RJ/RJBS/Mixin-Linewise-0.108.tar.gz provides: - MLTests undef Mixin::Linewise 0.108 Mixin::Linewise::Readers 0.108 Mixin::Linewise::Writers 0.108 @@ -4647,7 +4608,7 @@ DISTRIBUTIONS Mojolicious::Command::generate::app undef Mojolicious::Command::generate::lite_app undef Mojolicious::Command::generate::makefile undef - Mojolicious::Command::generate::plugin 0.01 + Mojolicious::Command::generate::plugin undef Mojolicious::Command::get undef Mojolicious::Command::inflate undef Mojolicious::Command::prefork undef @@ -4751,12 +4712,6 @@ DISTRIBUTIONS MooX::Options::Descriptive 4.022 MooX::Options::Descriptive::Usage 4.022 MooX::Options::Role 4.022 - TestNamespaceClean undef - t::Test undef - t::lib::MooXCmdTest undef - t::lib::MooXCmdTest::Cmd::test1 undef - t::lib::MooXCmdTest::Cmd::test1::Cmd::test2 undef - t::lib::MooXCmdTest::Cmd::test3 undef requirements: Carp 0 Data::Record 0 @@ -4823,8 +4778,6 @@ DISTRIBUTIONS Class::MOP 2.1605 Class::MOP::Attribute 2.1605 Class::MOP::Class 2.1605 - Class::MOP::Class::Immutable::Trait undef - Class::MOP::Deprecated undef Class::MOP::Instance 2.1605 Class::MOP::Method 2.1605 Class::MOP::Method::Accessor 2.1605 @@ -4833,18 +4786,40 @@ DISTRIBUTIONS Class::MOP::Method::Inlined 2.1605 Class::MOP::Method::Meta 2.1605 Class::MOP::Method::Wrapped 2.1605 - Class::MOP::MiniTrait undef - Class::MOP::Mixin undef - Class::MOP::Mixin::AttributeCore undef - Class::MOP::Mixin::HasAttributes undef - Class::MOP::Mixin::HasMethods undef - Class::MOP::Mixin::HasOverloads undef Class::MOP::Module 2.1605 Class::MOP::Object 2.1605 Class::MOP::Overload 2.1605 Class::MOP::Package 2.1605 Moose 2.1605 - Moose::Deprecated undef + Moose::Cookbook 2.1605 + Moose::Cookbook::Basics::BankAccount_MethodModifiersAndSubclassing 2.1605 + Moose::Cookbook::Basics::BinaryTree_AttributeFeatures 2.1605 + Moose::Cookbook::Basics::BinaryTree_BuilderAndLazyBuild 2.1605 + Moose::Cookbook::Basics::Company_Subtypes 2.1605 + Moose::Cookbook::Basics::DateTime_ExtendingNonMooseParent 2.1605 + Moose::Cookbook::Basics::Document_AugmentAndInner 2.1605 + Moose::Cookbook::Basics::Genome_OverloadingSubtypesAndCoercion 2.1605 + Moose::Cookbook::Basics::HTTP_SubtypesAndCoercion 2.1605 + Moose::Cookbook::Basics::Immutable 2.1605 + Moose::Cookbook::Basics::Person_BUILDARGSAndBUILD 2.1605 + Moose::Cookbook::Basics::Point_AttributesAndSubclassing 2.1605 + Moose::Cookbook::Extending::Debugging_BaseClassRole 2.1605 + Moose::Cookbook::Extending::ExtensionOverview 2.1605 + Moose::Cookbook::Extending::Mooseish_MooseSugar 2.1605 + Moose::Cookbook::Legacy::Debugging_BaseClassReplacement 2.1605 + Moose::Cookbook::Legacy::Labeled_AttributeMetaclass 2.1605 + Moose::Cookbook::Legacy::Table_ClassMetaclass 2.1605 + Moose::Cookbook::Meta::GlobRef_InstanceMetaclass 2.1605 + Moose::Cookbook::Meta::Labeled_AttributeTrait 2.1605 + Moose::Cookbook::Meta::PrivateOrPublic_MethodMetaclass 2.1605 + Moose::Cookbook::Meta::Table_MetaclassTrait 2.1605 + Moose::Cookbook::Meta::WhyMeta 2.1605 + Moose::Cookbook::Roles::ApplicationToInstance 2.1605 + Moose::Cookbook::Roles::Comparable_CodeReuse 2.1605 + Moose::Cookbook::Roles::Restartable_AdvancedComposition 2.1605 + Moose::Cookbook::Snack::Keywords 2.1605 + Moose::Cookbook::Snack::Types 2.1605 + Moose::Cookbook::Style 2.1605 Moose::Exception 2.1605 Moose::Exception::AccessorMustReadWrite 2.1605 Moose::Exception::AddParameterizableTypeTakesParameterizableType 2.1605 @@ -5075,9 +5050,30 @@ DISTRIBUTIONS Moose::Exception::WrapTakesACodeRefToBless 2.1605 Moose::Exception::WrongTypeConstraintGiven 2.1605 Moose::Exporter 2.1605 + Moose::Intro 2.1605 + Moose::Manual 2.1605 + Moose::Manual::Attributes 2.1605 + Moose::Manual::BestPractices 2.1605 + Moose::Manual::Classes 2.1605 + Moose::Manual::Concepts 2.1605 + Moose::Manual::Construction 2.1605 + Moose::Manual::Contributing 2.1605 + Moose::Manual::Delegation 2.1605 + Moose::Manual::Delta 2.1605 + Moose::Manual::Exceptions 2.1605 + Moose::Manual::Exceptions::Manifest 2.1605 + Moose::Manual::FAQ 2.1605 + Moose::Manual::MOP 2.1605 + Moose::Manual::MethodModifiers 2.1605 + Moose::Manual::MooseX 2.1605 + Moose::Manual::Resources 2.1605 + Moose::Manual::Roles 2.1605 + Moose::Manual::Support 2.1605 + Moose::Manual::Types 2.1605 + Moose::Manual::Unsweetened 2.1605 Moose::Meta::Attribute 2.1605 + Moose::Meta::Attribute::Custom::Moose 2.1605 Moose::Meta::Attribute::Native 2.1605 - Moose::Meta::Attribute::Native::Trait undef Moose::Meta::Attribute::Native::Trait::Array 2.1605 Moose::Meta::Attribute::Native::Trait::Bool 2.1605 Moose::Meta::Attribute::Native::Trait::Code 2.1605 @@ -5086,94 +5082,15 @@ DISTRIBUTIONS Moose::Meta::Attribute::Native::Trait::Number 2.1605 Moose::Meta::Attribute::Native::Trait::String 2.1605 Moose::Meta::Class 2.1605 - Moose::Meta::Class::Immutable::Trait undef Moose::Meta::Instance 2.1605 Moose::Meta::Method 2.1605 Moose::Meta::Method::Accessor 2.1605 - Moose::Meta::Method::Accessor::Native undef - Moose::Meta::Method::Accessor::Native::Array undef - Moose::Meta::Method::Accessor::Native::Array::Writer undef - Moose::Meta::Method::Accessor::Native::Array::accessor undef - Moose::Meta::Method::Accessor::Native::Array::clear undef - Moose::Meta::Method::Accessor::Native::Array::count undef - Moose::Meta::Method::Accessor::Native::Array::delete undef - Moose::Meta::Method::Accessor::Native::Array::elements undef - Moose::Meta::Method::Accessor::Native::Array::first undef - Moose::Meta::Method::Accessor::Native::Array::first_index undef - Moose::Meta::Method::Accessor::Native::Array::get undef - Moose::Meta::Method::Accessor::Native::Array::grep undef - Moose::Meta::Method::Accessor::Native::Array::insert undef - Moose::Meta::Method::Accessor::Native::Array::is_empty undef - Moose::Meta::Method::Accessor::Native::Array::join undef - Moose::Meta::Method::Accessor::Native::Array::map undef - Moose::Meta::Method::Accessor::Native::Array::natatime undef - Moose::Meta::Method::Accessor::Native::Array::pop undef - Moose::Meta::Method::Accessor::Native::Array::push undef - Moose::Meta::Method::Accessor::Native::Array::reduce undef - Moose::Meta::Method::Accessor::Native::Array::set undef - Moose::Meta::Method::Accessor::Native::Array::shallow_clone undef - Moose::Meta::Method::Accessor::Native::Array::shift undef - Moose::Meta::Method::Accessor::Native::Array::shuffle undef - Moose::Meta::Method::Accessor::Native::Array::sort undef - Moose::Meta::Method::Accessor::Native::Array::sort_in_place undef - Moose::Meta::Method::Accessor::Native::Array::splice undef - Moose::Meta::Method::Accessor::Native::Array::uniq undef - Moose::Meta::Method::Accessor::Native::Array::unshift undef - Moose::Meta::Method::Accessor::Native::Bool::not undef - Moose::Meta::Method::Accessor::Native::Bool::set undef - Moose::Meta::Method::Accessor::Native::Bool::toggle undef - Moose::Meta::Method::Accessor::Native::Bool::unset undef - Moose::Meta::Method::Accessor::Native::Code::execute undef - Moose::Meta::Method::Accessor::Native::Code::execute_method undef - Moose::Meta::Method::Accessor::Native::Collection undef - Moose::Meta::Method::Accessor::Native::Counter::Writer undef - Moose::Meta::Method::Accessor::Native::Counter::dec undef - Moose::Meta::Method::Accessor::Native::Counter::inc undef - Moose::Meta::Method::Accessor::Native::Counter::reset undef - Moose::Meta::Method::Accessor::Native::Counter::set undef - Moose::Meta::Method::Accessor::Native::Hash undef - Moose::Meta::Method::Accessor::Native::Hash::Writer undef - Moose::Meta::Method::Accessor::Native::Hash::accessor undef - Moose::Meta::Method::Accessor::Native::Hash::clear undef - Moose::Meta::Method::Accessor::Native::Hash::count undef - Moose::Meta::Method::Accessor::Native::Hash::defined undef - Moose::Meta::Method::Accessor::Native::Hash::delete undef - Moose::Meta::Method::Accessor::Native::Hash::elements undef - Moose::Meta::Method::Accessor::Native::Hash::exists undef - Moose::Meta::Method::Accessor::Native::Hash::get undef - Moose::Meta::Method::Accessor::Native::Hash::is_empty undef - Moose::Meta::Method::Accessor::Native::Hash::keys undef - Moose::Meta::Method::Accessor::Native::Hash::kv undef - Moose::Meta::Method::Accessor::Native::Hash::set undef - Moose::Meta::Method::Accessor::Native::Hash::shallow_clone undef - Moose::Meta::Method::Accessor::Native::Hash::values undef - Moose::Meta::Method::Accessor::Native::Number::abs undef - Moose::Meta::Method::Accessor::Native::Number::add undef - Moose::Meta::Method::Accessor::Native::Number::div undef - Moose::Meta::Method::Accessor::Native::Number::mod undef - Moose::Meta::Method::Accessor::Native::Number::mul undef - Moose::Meta::Method::Accessor::Native::Number::set undef - Moose::Meta::Method::Accessor::Native::Number::sub undef - Moose::Meta::Method::Accessor::Native::Reader undef - Moose::Meta::Method::Accessor::Native::String::append undef - Moose::Meta::Method::Accessor::Native::String::chomp undef - Moose::Meta::Method::Accessor::Native::String::chop undef - Moose::Meta::Method::Accessor::Native::String::clear undef - Moose::Meta::Method::Accessor::Native::String::inc undef - Moose::Meta::Method::Accessor::Native::String::length undef - Moose::Meta::Method::Accessor::Native::String::match undef - Moose::Meta::Method::Accessor::Native::String::prepend undef - Moose::Meta::Method::Accessor::Native::String::replace undef - Moose::Meta::Method::Accessor::Native::String::substr undef - Moose::Meta::Method::Accessor::Native::Writer undef Moose::Meta::Method::Augmented 2.1605 Moose::Meta::Method::Constructor 2.1605 Moose::Meta::Method::Delegation 2.1605 Moose::Meta::Method::Destructor 2.1605 Moose::Meta::Method::Meta 2.1605 Moose::Meta::Method::Overridden 2.1605 - Moose::Meta::Mixin::AttributeCore undef - Moose::Meta::Object::Trait undef Moose::Meta::Role 2.1605 Moose::Meta::Role::Application 2.1605 Moose::Meta::Role::Application::RoleSummation 2.1605 @@ -5198,10 +5115,11 @@ DISTRIBUTIONS Moose::Meta::TypeConstraint::Union 2.1605 Moose::Object 2.1605 Moose::Role 2.1605 + Moose::Spec::Role 2.1605 + Moose::Unsweetened 2.1605 Moose::Util 2.1605 Moose::Util::MetaRole 2.1605 Moose::Util::TypeConstraints 2.1605 - Moose::Util::TypeConstraints::Builtins undef Test::Moose 2.1605 metaclass 2.1605 oose 2.1605 @@ -5242,13 +5160,6 @@ DISTRIBUTIONS pathname: D/DO/DOY/MooseX-Aliases-0.11.tar.gz provides: MooseX::Aliases 0.11 - MooseX::Aliases::Meta::Trait::Attribute 0.11 - MooseX::Aliases::Meta::Trait::Class 0.11 - MooseX::Aliases::Meta::Trait::Method 0.11 - MooseX::Aliases::Meta::Trait::Role 0.11 - MooseX::Aliases::Meta::Trait::Role::ApplicationToClass 0.11 - MooseX::Aliases::Meta::Trait::Role::ApplicationToRole 0.11 - MooseX::Aliases::Meta::Trait::Role::Composite 0.11 requirements: ExtUtils::MakeMaker 6.30 Moose 2.0000 @@ -5259,13 +5170,15 @@ DISTRIBUTIONS MooseX-Attribute-Chained-1.0.2 pathname: T/TO/TOMHUKINS/MooseX-Attribute-Chained-1.0.2.tar.gz provides: - Moose::Meta::Attribute::Custom::Trait::Chained 1.000002 - MooseX::Attribute::Chained 1.000002 - MooseX::Attribute::ChainedClone 1.000002 - MooseX::ChainedAccessors 1.000002 - MooseX::ChainedAccessors::Accessor 1.000002 - MooseX::Traits::Attribute::Chained 1.000002 - MooseX::Traits::Attribute::ChainedClone 1.000002 + Moose::Meta::Attribute::Custom::Trait::Chained v1.0.2 + MooseX::Attribute::Chained v1.0.2 + MooseX::Attribute::Chained::Method::Accessor v1.0.2 + MooseX::Attribute::ChainedClone v1.0.2 + MooseX::Attribute::ChainedClone::Method::Accessor v1.0.2 + MooseX::ChainedAccessors v1.0.2 + MooseX::ChainedAccessors::Accessor v1.0.2 + MooseX::Traits::Attribute::Chained v1.0.2 + MooseX::Traits::Attribute::ChainedClone v1.0.2 requirements: Module::Build 0.28 Moose 0 @@ -5274,20 +5187,20 @@ DISTRIBUTIONS MooseX-Attribute-Deflator-2.2.2 pathname: P/PE/PERLER/MooseX-Attribute-Deflator-2.2.2.tar.gz provides: - MooseX::Attribute::Deflator 2.002002 - MooseX::Attribute::Deflator::Meta::Role::Attribute 2.002002 - MooseX::Attribute::Deflator::Moose 2.002002 - MooseX::Attribute::Deflator::Registry 2.002002 - MooseX::Attribute::Deflator::Structured 2.002002 - MooseX::Attribute::LazyInflator 2.002002 - MooseX::Attribute::LazyInflator::Meta::Role::ApplicationToClass 2.002002 - MooseX::Attribute::LazyInflator::Meta::Role::ApplicationToRole 2.002002 - MooseX::Attribute::LazyInflator::Meta::Role::Attribute 2.002002 - MooseX::Attribute::LazyInflator::Meta::Role::Composite 2.002002 - MooseX::Attribute::LazyInflator::Meta::Role::Method::Accessor 2.002002 - MooseX::Attribute::LazyInflator::Meta::Role::Method::Constructor 2.002002 - MooseX::Attribute::LazyInflator::Meta::Role::Role 2.002002 - MooseX::Attribute::LazyInflator::Role::Class 2.002002 + MooseX::Attribute::Deflator v2.2.2 + MooseX::Attribute::Deflator::Meta::Role::Attribute v2.2.2 + MooseX::Attribute::Deflator::Moose v2.2.2 + MooseX::Attribute::Deflator::Registry v2.2.2 + MooseX::Attribute::Deflator::Structured v2.2.2 + MooseX::Attribute::LazyInflator v2.2.2 + MooseX::Attribute::LazyInflator::Meta::Role::ApplicationToClass v2.2.2 + MooseX::Attribute::LazyInflator::Meta::Role::ApplicationToRole v2.2.2 + MooseX::Attribute::LazyInflator::Meta::Role::Attribute v2.2.2 + MooseX::Attribute::LazyInflator::Meta::Role::Composite v2.2.2 + MooseX::Attribute::LazyInflator::Meta::Role::Method::Accessor v2.2.2 + MooseX::Attribute::LazyInflator::Meta::Role::Method::Constructor v2.2.2 + MooseX::Attribute::LazyInflator::Meta::Role::Role v2.2.2 + MooseX::Attribute::LazyInflator::Role::Class v2.2.2 requirements: DateTime 0 Devel::PartialDump 0 @@ -5305,9 +5218,6 @@ DISTRIBUTIONS MooseX-ClassAttribute-0.27 pathname: D/DR/DROLSKY/MooseX-ClassAttribute-0.27.tar.gz provides: - Child undef - Delegatee undef - HasClassAttribute undef MooseX::ClassAttribute 0.27 MooseX::ClassAttribute::Meta::Role::Attribute 0.27 MooseX::ClassAttribute::Trait::Application 0.27 @@ -5318,7 +5228,6 @@ DISTRIBUTIONS MooseX::ClassAttribute::Trait::Mixin::HasClassAttributes 0.27 MooseX::ClassAttribute::Trait::Role 0.27 MooseX::ClassAttribute::Trait::Role::Composite 0.27 - SharedTests undef requirements: ExtUtils::MakeMaker 6.30 List::MoreUtils 0 @@ -5543,7 +5452,7 @@ DISTRIBUTIONS MooseX-Types-ElasticSearch-0.0.4 pathname: P/PE/PERLER/MooseX-Types-ElasticSearch-0.0.4.tar.gz provides: - MooseX::Types::ElasticSearch 0.000004 + MooseX::Types::ElasticSearch v0.0.4 requirements: DateTime::Format::Epoch::Unix 0 DateTime::Format::ISO8601 0 @@ -5636,7 +5545,7 @@ DISTRIBUTIONS Mouse-v2.4.5 pathname: S/SY/SYOHEX/Mouse-v2.4.5.tar.gz provides: - Mouse 2.004005 + Mouse v2.4.5 Mouse::Exporter undef Mouse::Meta::Attribute undef Mouse::Meta::Class undef @@ -5648,15 +5557,17 @@ DISTRIBUTIONS Mouse::Meta::Module undef Mouse::Meta::Role undef Mouse::Meta::Role::Application undef + Mouse::Meta::Role::Application::RoleSummation undef Mouse::Meta::Role::Composite undef Mouse::Meta::Role::Method undef Mouse::Meta::TypeConstraint undef Mouse::Object undef Mouse::PurePerl undef - Mouse::Role 2.004005 - Mouse::Spec 2.004005 + Mouse::Role v2.4.5 + Mouse::Spec v2.4.5 + Mouse::Tiny v2.4.5 Mouse::TypeRegistry undef - Mouse::Util 2.004005 + Mouse::Util v2.4.5 Mouse::Util::MetaRole undef Mouse::Util::TypeConstraints undef Squirrel undef @@ -5807,6 +5718,7 @@ DISTRIBUTIONS Net::Fastly::Backend undef Net::Fastly::BelongsToServiceAndVersion undef Net::Fastly::Client undef + Net::Fastly::Client::UserAgent undef Net::Fastly::Condition undef Net::Fastly::Customer undef Net::Fastly::Director undef @@ -5820,6 +5732,7 @@ DISTRIBUTIONS Net::Fastly::Settings undef Net::Fastly::Stats undef Net::Fastly::Syslog undef + Net::Fastly::UA undef Net::Fastly::User undef Net::Fastly::VCL undef Net::Fastly::Version undef @@ -5921,7 +5834,6 @@ DISTRIBUTIONS Net-OpenID-Consumer-1.18 pathname: W/WR/WROG/Net-OpenID-Consumer-1.18.tar.gz provides: - FakeFetch undef Net::OpenID::Association 1.18 Net::OpenID::ClaimedIdentity 1.18 Net::OpenID::Consumer 1.18 @@ -6421,7 +6333,6 @@ DISTRIBUTIONS Package-Stash-XS-0.28 pathname: D/DO/DOY/Package-Stash-XS-0.28.tar.gz provides: - CompileTime undef Package::Stash::XS 0.28 requirements: ExtUtils::MakeMaker 6.30 @@ -6604,8 +6515,8 @@ DISTRIBUTIONS Path-FindDev-0.5.2 pathname: K/KE/KENTNL/Path-FindDev-0.5.2.tar.gz provides: - Path::FindDev 0.005002 - Path::FindDev::Object 0.005002 + Path::FindDev v0.5.2 + Path::FindDev::Object v0.5.2 requirements: Carp 0 Class::Tiny 0.010 @@ -6686,7 +6597,7 @@ DISTRIBUTIONS pathname: D/DA/DAGOLDEN/Path-Tiny-0.088.tar.gz provides: Path::Tiny 0.088 - flock undef + Path::Tiny::Error 0.088 requirements: Carp 0 Cwd 0 @@ -6963,14 +6874,23 @@ DISTRIBUTIONS pathname: S/SH/SHANCOCK/Perl-Tidy-20160302.tar.gz provides: Perl::Tidy 20160302 + Perl::Tidy::Debugger 20160302 Perl::Tidy::DevNull 20160302 Perl::Tidy::Diagnostics 20160302 + Perl::Tidy::FileWriter 20160302 + Perl::Tidy::Formatter 20160302 Perl::Tidy::HtmlWriter 20160302 Perl::Tidy::IOScalar 20160302 Perl::Tidy::IOScalarArray 20160302 + Perl::Tidy::IndentationItem 20160302 + Perl::Tidy::LineBuffer 20160302 Perl::Tidy::LineSink 20160302 Perl::Tidy::LineSource 20160302 Perl::Tidy::Logger 20160302 + Perl::Tidy::Tokenizer 20160302 + Perl::Tidy::VerticalAligner 20160302 + Perl::Tidy::VerticalAligner::Alignment 20160302 + Perl::Tidy::VerticalAligner::Line 20160302 requirements: ExtUtils::MakeMaker 0 PerlIO-gzip-0.19 @@ -7032,7 +6952,6 @@ DISTRIBUTIONS Pithub::Result::SharedCache 0.01033 Pithub::Search 0.01033 Pithub::SearchV3 0.01033 - Pithub::Test undef Pithub::Users 0.01033 Pithub::Users::Emails 0.01033 Pithub::Users::Followers 0.01033 @@ -7354,9 +7273,6 @@ DISTRIBUTIONS Pod::POM::View::HTML 2.01 Pod::POM::View::Pod 2.01 Pod::POM::View::Text 2.01 - PodPOMTestCase undef - PodPOMTestLib undef - YAML::Tiny 1.36 requirements: Encode 0 Exporter 0 @@ -7447,6 +7363,9 @@ DISTRIBUTIONS pathname: S/SA/SANKO/Readonly-2.01.tar.gz provides: Readonly 2.01 + Readonly::Array undef + Readonly::Hash undef + Readonly::Scalar undef requirements: Module::Build::Tiny 0.035 perl v5.6.0 @@ -7512,7 +7431,6 @@ DISTRIBUTIONS SQL-Abstract-1.81 pathname: R/RI/RIBASUSHI/SQL-Abstract-1.81.tar.gz provides: - DBIx::Class::Storage::Debug::PrettyPrint undef SQL::Abstract 1.81 SQL::Abstract::Test undef SQL::Abstract::Tree undef @@ -7571,7 +7489,6 @@ DISTRIBUTIONS Search-Elasticsearch-2.01 pathname: D/DR/DRTECH/Search-Elasticsearch-2.01.tar.gz provides: - MockCxn undef Search::Elasticsearch 2.01 Search::Elasticsearch::Bulk 2.01 Search::Elasticsearch::Client::0_90::Direct 2.01 @@ -7750,13 +7667,6 @@ DISTRIBUTIONS provides: Sub::Exporter 0.987 Sub::Exporter::Util 0.987 - Test::SubExporter::DashSetup undef - Test::SubExporter::Faux undef - Test::SubExporter::GroupGen undef - Test::SubExporter::GroupGenSubclass undef - Test::SubExporter::ObjGen undef - Test::SubExporter::ObjGen::Obj undef - Test::SubExporter::s_e undef requirements: Carp 0 Data::OptList 0.100 @@ -7769,8 +7679,6 @@ DISTRIBUTIONS pathname: R/RJ/RJBS/Sub-Exporter-ForMethods-0.100052.tar.gz provides: Sub::Exporter::ForMethods 0.100052 - TestDexp undef - TestMexp undef requirements: ExtUtils::MakeMaker 0 Scalar::Util 0 @@ -7896,8 +7804,8 @@ DISTRIBUTIONS Test-Compile-v1.3.0 pathname: E/EG/EGILES/Test-Compile-v1.3.0.tar.gz provides: - Test::Compile 1.003000 - Test::Compile::Internal 1.003000 + Test::Compile v1.3.0 + Test::Compile::Internal v1.3.0 requirements: Module::Build 0.38 UNIVERSAL::require 0 @@ -8201,8 +8109,6 @@ DISTRIBUTIONS Test::Routine::Test 0.020 Test::Routine::Test::Role 0.020 Test::Routine::Util 0.020 - t::lib::NoGood undef - t::lib::NoGood2 undef requirements: Carp 0 Class::Load 0 @@ -8287,11 +8193,11 @@ DISTRIBUTIONS Test-Trap-v0.3.2 pathname: E/EB/EBHANSSEN/Test-Trap-v0.3.2.tar.gz provides: - Test::Trap 0.003002 - Test::Trap::Builder 0.003002 - Test::Trap::Builder::PerlIO 0.003002 - Test::Trap::Builder::SystemSafe 0.003002 - Test::Trap::Builder::TempFile 0.003002 + Test::Trap v0.3.2 + Test::Trap::Builder v0.3.2 + Test::Trap::Builder::PerlIO v0.3.2 + Test::Trap::Builder::SystemSafe v0.3.2 + Test::Trap::Builder::TempFile v0.3.2 requirements: Carp 0 Data::Dump 0 @@ -8666,7 +8572,6 @@ DISTRIBUTIONS UNIVERSAL-require-0.18 pathname: N/NE/NEILB/UNIVERSAL-require-0.18.tar.gz provides: - UNIVERSAL 0.18 UNIVERSAL::require 0.18 requirements: Carp 0 @@ -8915,7 +8820,6 @@ DISTRIBUTIONS WWW-Mechanize-Cached-1.50 pathname: O/OA/OALDERS/WWW-Mechanize-Cached-1.50.tar.gz provides: - TestCache undef WWW::Mechanize::Cached 1.50 requirements: Cache::FileCache 0 @@ -9007,7 +8911,6 @@ DISTRIBUTIONS XML-Simple-2.22 pathname: G/GR/GRANTM/XML-Simple-2.22.tar.gz provides: - TagsToUpper undef XML::Simple 2.22 requirements: ExtUtils::MakeMaker 0 @@ -9068,7 +8971,6 @@ DISTRIBUTIONS pathname: I/IL/ILMARI/bareword-filehandles-0.003.tar.gz provides: bareword::filehandles 0.003 - inc::BarewordFilehandlesMakeMaker undef requirements: B::Hooks::OP::Check 0 ExtUtils::Depends 0 @@ -9361,8 +9263,6 @@ DISTRIBUTIONS multidimensional-0.011 pathname: I/IL/ILMARI/multidimensional-0.011.tar.gz provides: - MyTest undef - inc::MultidimensionalMakeMaker undef multidimensional 0.011 requirements: B::Hooks::OP::Check 0.19 @@ -9400,7 +9300,6 @@ DISTRIBUTIONS strictures-2.000002 pathname: H/HA/HAARG/strictures-2.000002.tar.gz provides: - ExtUtils::HasCompiler 0.012 strictures 2.000002 strictures::extra undef requirements: @@ -9411,7 +9310,6 @@ DISTRIBUTIONS version-0.9916 pathname: J/JP/JPEACOCK/version-0.9916.tar.gz provides: - charstar 0.9916 version 0.9916 version::regex 0.9916 version::vpp 0.9916 From deb2ee39a471aaffeb9735ed9c56043f34ccb27c Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Thu, 31 Mar 2016 22:35:02 -0400 Subject: [PATCH 152/329] Adds basic docs on logger config. --- docs/logging.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 docs/logging.md diff --git a/docs/logging.md b/docs/logging.md new file mode 100644 index 000000000..da725fbf5 --- /dev/null +++ b/docs/logging.md @@ -0,0 +1,16 @@ +# Logging + +Logging is done via Log::Contextual. There are three logger configs. These +can be found in the etc folder in this repository. + +## etc/metacpan.pl + +This is the default logger config + +## etc/metacpan_interactive.pl + +This logger config is used when scripts are run at the command line + +## etc/metacpan_testing.pl + +This logger config is used by the test suite. From 1fde2f727054d355ed06c4709d55212e01428503 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Mon, 18 Apr 2016 18:15:41 -0400 Subject: [PATCH 153/329] Adds a role for building a config. --- lib/MetaCPAN/Role/HasConfig.pm | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 lib/MetaCPAN/Role/HasConfig.pm diff --git a/lib/MetaCPAN/Role/HasConfig.pm b/lib/MetaCPAN/Role/HasConfig.pm new file mode 100644 index 000000000..c4067f761 --- /dev/null +++ b/lib/MetaCPAN/Role/HasConfig.pm @@ -0,0 +1,22 @@ +package MetaCPAN::Role::HasConfig; + +use Moose::Role; + +use MetaCPAN::Types qw(HashRef); + +has config => ( + is => 'ro', + isa => HashRef, + lazy => 1, + builder => '_build_config', +); + +sub _build_config { + my $self = shift; + return Config::JFDI->new( + name => 'metacpan_server', + path => "$FindBin::RealBin/..", + )->get; +} + +1; From 6d610051d25d3a516d2a0bc7e14f95ebde22b5a0 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Mon, 18 Apr 2016 18:17:31 -0400 Subject: [PATCH 154/329] Get minion DSN from config file. --- lib/MetaCPAN/Queue/Helper.pm | 4 +++- metacpan_server.conf | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/MetaCPAN/Queue/Helper.pm b/lib/MetaCPAN/Queue/Helper.pm index 9b0e82027..975356d8c 100644 --- a/lib/MetaCPAN/Queue/Helper.pm +++ b/lib/MetaCPAN/Queue/Helper.pm @@ -13,6 +13,8 @@ has backend => ( builder => '_build_backend', ); +with 'MetaCPAN::Role::HasConfig'; + # We could also use an in-memory SQLite db, but this gives us the option of not # unlinking in order to debug the contents of the db, if we need to. @@ -26,7 +28,7 @@ sub _build_backend { } load(Minion::Backend::Pg); - return { Pg => "postgresql:///minion_queue" }; + return { Pg => $self->config->{minion_dsn} }; } __PACKAGE__->meta->make_immutable; diff --git a/metacpan_server.conf b/metacpan_server.conf index ef78e34c6..42c798b9a 100644 --- a/metacpan_server.conf +++ b/metacpan_server.conf @@ -1,5 +1,6 @@ git /usr/bin/git +minion_dsn = postgresql:///minion_queue pod_html_x_codes = 0 From 57dc4f2de30f20b62bf8e08d1eebfdc33825d4b8 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Mon, 18 Apr 2016 18:18:54 -0400 Subject: [PATCH 155/329] Use HasConfig role in Script role. --- lib/MetaCPAN/Role/Script.pm | 19 ++----------------- 1 file changed, 2 insertions(+), 17 deletions(-) diff --git a/lib/MetaCPAN/Role/Script.pm b/lib/MetaCPAN/Role/Script.pm index c520dbcb7..0cd064c55 100644 --- a/lib/MetaCPAN/Role/Script.pm +++ b/lib/MetaCPAN/Role/Script.pm @@ -10,9 +10,6 @@ use MetaCPAN::Model; use MetaCPAN::Types qw(:all); use Moose::Role; -with 'MetaCPAN::Role::Logger'; -with 'MetaCPAN::Role::Fastly'; - has 'cpan' => ( is => 'ro', isa => Dir, @@ -67,20 +64,8 @@ has home => ( default => "$FindBin::RealBin/..", ); -has config => ( - is => 'ro', - isa => HashRef, - lazy => 1, - builder => '_build_config', -); - -sub _build_config { - my $self = shift; - return Config::JFDI->new( - name => 'metacpan_server', - path => "$FindBin::RealBin/..", - )->get; -} +with 'MetaCPAN::Role::Fastly', 'MetaCPAN::Role::HasConfig', + 'MetaCPAN::Role::Logger'; sub handle_error { my ( $self, $error ) = @_; From a451b95f9c35c0c5a0d7e9c285f7b5c6bb025eff Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Thu, 21 Apr 2016 10:15:39 +0100 Subject: [PATCH 156/329] Tidy --- lib/MetaCPAN/Document/Favorite.pm | 2 +- lib/MetaCPAN/Model/User/Session.pm | 2 +- lib/MetaCPAN/Script/Backpan.pm | 2 +- lib/MetaCPAN/Script/Latest.pm | 8 ++------ lib/MetaCPAN/Script/Pagerank.pm | 11 ++++++----- lib/MetaCPAN/Script/Session.pm | 3 ++- lib/MetaCPAN/Server/QuerySanitizer.pm | 1 + 7 files changed, 14 insertions(+), 15 deletions(-) diff --git a/lib/MetaCPAN/Document/Favorite.pm b/lib/MetaCPAN/Document/Favorite.pm index 6a8d048f4..30a45bbd6 100644 --- a/lib/MetaCPAN/Document/Favorite.pm +++ b/lib/MetaCPAN/Document/Favorite.pm @@ -41,7 +41,7 @@ Sets the C<_timestamp> field to the value of L. has timestamp => ( is => 'ro', - timestamp => {}, # { path => 'date', store => 1 }, + timestamp => {}, # { path => 'date', store => 1 }, ); __PACKAGE__->meta->make_immutable; diff --git a/lib/MetaCPAN/Model/User/Session.pm b/lib/MetaCPAN/Model/User/Session.pm index 0f5be5732..e2b63d552 100644 --- a/lib/MetaCPAN/Model/User/Session.pm +++ b/lib/MetaCPAN/Model/User/Session.pm @@ -14,7 +14,7 @@ Sets the C<_timestamp> field. has timestamp => ( is => 'ro', - timestamp => {}, # { store => 1 }, + timestamp => {}, # { store => 1 }, ); __PACKAGE__->meta->make_immutable; diff --git a/lib/MetaCPAN/Script/Backpan.pm b/lib/MetaCPAN/Script/Backpan.pm index b0e51d119..527af3b92 100644 --- a/lib/MetaCPAN/Script/Backpan.pm +++ b/lib/MetaCPAN/Script/Backpan.pm @@ -46,7 +46,7 @@ sub update_status { type => 'release', fields => [ 'author', 'name' ], body => { - query => { + query => { filtered => { query => { match_all => {} }, filter => { diff --git a/lib/MetaCPAN/Script/Latest.pm b/lib/MetaCPAN/Script/Latest.pm index 58f0de15b..3a3749e2f 100644 --- a/lib/MetaCPAN/Script/Latest.pm +++ b/lib/MetaCPAN/Script/Latest.pm @@ -87,12 +87,8 @@ sub run { } )->source( [ - 'module.name', - 'author', - 'release', - 'distribution', - 'date', - 'status', + 'module.name', 'author', 'release', 'distribution', + 'date', 'status', ] )->size(100)->raw->scroll; diff --git a/lib/MetaCPAN/Script/Pagerank.pm b/lib/MetaCPAN/Script/Pagerank.pm index b829f9fc5..7bd8ac11d 100644 --- a/lib/MetaCPAN/Script/Pagerank.pm +++ b/lib/MetaCPAN/Script/Pagerank.pm @@ -28,8 +28,9 @@ sub run { filter => { and => [ { - term => - { 'release.dependency.phase' => 'runtime' } + term => { + 'release.dependency.phase' => 'runtime' + } }, { term => { status => 'latest' } }, ] @@ -70,14 +71,14 @@ sub get_recent_modules { my $scroll = $self->es->scroll_helper( index => $self->index->name, type => 'file', - body => { + body => { query => { filtered => { query => { match_all => {} }, filter => { and => [ - { term => { 'file.status' => 'latest' } }, - { term => { 'file.module.indexed' => \1 } }, + { term => { 'file.status' => 'latest' } }, + { term => { 'file.module.indexed' => \1 } }, { term => { 'file.module.authorized' => \1 } }, ] } diff --git a/lib/MetaCPAN/Script/Session.pm b/lib/MetaCPAN/Script/Session.pm index 6a3e841da..7ecee1393 100644 --- a/lib/MetaCPAN/Script/Session.pm +++ b/lib/MetaCPAN/Script/Session.pm @@ -16,7 +16,8 @@ sub run { scroll => '1m', index => 'user', type => 'session', - body => { query => { filtered => { query => { match_all => {} }, }, }, }, + body => + { query => { filtered => { query => { match_all => {} }, }, }, }, ); my @delete; diff --git a/lib/MetaCPAN/Server/QuerySanitizer.pm b/lib/MetaCPAN/Server/QuerySanitizer.pm index d3319c4a6..c431eeb3f 100644 --- a/lib/MetaCPAN/Server/QuerySanitizer.pm +++ b/lib/MetaCPAN/Server/QuerySanitizer.pm @@ -51,6 +51,7 @@ sub _scan_hash_tree { _scan_hash_tree($item) if ref($item); } } + # Mickey: what about $ref eq 'JSON::PP::Boolean' ? } From 1661592d72ac9094973b23fefba62ccec18e1f69 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Thu, 21 Apr 2016 10:27:20 +0100 Subject: [PATCH 157/329] Adds Test::Vars to cpanfile. --- cpanfile | 1 + cpanfile.snapshot | 11 +++++++++++ 2 files changed, 12 insertions(+) diff --git a/cpanfile b/cpanfile index b7de6db2e..b1606e97b 100644 --- a/cpanfile +++ b/cpanfile @@ -186,6 +186,7 @@ test_requires 'Test::Perl::Critic'; test_requires 'Test::RequiresInternet'; test_requires 'Test::Routine', '0.012'; test_requires 'Test::Routine::Util', '0'; +test_requires 'Test::Vars'; author_requires 'Code::TidyAll'; author_requires 'Plack::Middleware::Rewrite'; diff --git a/cpanfile.snapshot b/cpanfile.snapshot index f4722b5db..8b209e7fc 100644 --- a/cpanfile.snapshot +++ b/cpanfile.snapshot @@ -8225,6 +8225,17 @@ DISTRIBUTIONS ExtUtils::Manifest 0 Test::Builder 0.30 Test::More 0.60 + Test-Vars-0.008 + pathname: D/DR/DROLSKY/Test-Vars-0.008.tar.gz + provides: + Test::Vars 0.008 + requirements: + B 0 + ExtUtils::MakeMaker 6.59 + Module::Build 0.38 + Test::More 0.88 + parent 0 + perl 5.010000 Test-WWW-Mechanize-1.44 pathname: P/PE/PETDANCE/Test-WWW-Mechanize-1.44.tar.gz provides: From c22ac05059ad9bf2b8a6b5f9416c9fd3786f0db6 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Thu, 21 Apr 2016 10:53:16 +0100 Subject: [PATCH 158/329] Upgrades Search::Elasticsearch to 2.02 --- cpanfile | 2 +- cpanfile.snapshot | 521 +++++++++++++++++++++++++++------------------- 2 files changed, 312 insertions(+), 211 deletions(-) diff --git a/cpanfile b/cpanfile index b1606e97b..ed76afd82 100644 --- a/cpanfile +++ b/cpanfile @@ -146,7 +146,7 @@ requires 'Pod::Text'; requires 'Regexp::Common'; requires 'Regexp::Common::time'; requires 'Safe', '2.35'; # bug fixes (used by Parse::PMFile) -requires 'Search::Elasticsearch', '2.00'; +requires 'Search::Elasticsearch', '>= 2.02'; requires 'Starman'; requires 'Time::Local'; requires 'Throwable::Error'; diff --git a/cpanfile.snapshot b/cpanfile.snapshot index 8b209e7fc..4130f2959 100644 --- a/cpanfile.snapshot +++ b/cpanfile.snapshot @@ -632,11 +632,30 @@ DISTRIBUTIONS Catalyst::Action::Serialize::YAML 1.20 Catalyst::Action::Serialize::YAML::HTML 1.20 Catalyst::Action::SerializeBase 1.20 + Catalyst::Action::Serializer::Broken undef Catalyst::Controller::REST 1.20 Catalyst::Request::REST 1.20 Catalyst::Request::REST::ForBrowsers 1.20 Catalyst::TraitFor::Request::REST 1.20 Catalyst::TraitFor::Request::REST::ForBrowsers 1.20 + Test::Action::Class undef + Test::Action::Class::Sub undef + Test::Catalyst::Action::REST undef + Test::Catalyst::Action::REST::Controller::Actions undef + Test::Catalyst::Action::REST::Controller::ActionsForBrowsers undef + Test::Catalyst::Action::REST::Controller::Deserialize undef + Test::Catalyst::Action::REST::Controller::DeserializeMultiPart undef + Test::Catalyst::Action::REST::Controller::Override undef + Test::Catalyst::Action::REST::Controller::REST undef + Test::Catalyst::Action::REST::Controller::Root undef + Test::Catalyst::Action::REST::Controller::Serialize undef + Test::Catalyst::Log undef + Test::Rest undef + Test::Serialize undef + Test::Serialize::Controller::JSON undef + Test::Serialize::Controller::REST undef + Test::Serialize::View::Awful undef + Test::Serialize::View::Simple undef requirements: Catalyst::Runtime 5.80030 Class::Inspector 1.13 @@ -804,7 +823,7 @@ DISTRIBUTIONS Catalyst::ScriptRole undef Catalyst::ScriptRunner undef Catalyst::Stats undef - Catalyst::Test undef + Catalyst::Test 3.4 Catalyst::Utils undef Catalyst::View undef requirements: @@ -905,6 +924,7 @@ DISTRIBUTIONS pathname: R/RO/ROKR/CatalystX-InjectComponent-0.025.tar.gz provides: CatalystX::InjectComponent 0.025 + t::Test::Apple undef requirements: Catalyst::Runtime 5.8 Class::Inspector 0 @@ -1069,7 +1089,6 @@ DISTRIBUTIONS pathname: D/DA/DAGOLDEN/Class-Tiny-1.004.tar.gz provides: Class::Tiny 1.004 - Class::Tiny::Object 1.004 requirements: Carp 0 ExtUtils::MakeMaker 6.17 @@ -1236,6 +1255,8 @@ DISTRIBUTIONS Config::JFDI 0.065 Config::JFDI::Carp undef Config::JFDI::Source::Loader undef + eq 0.065 + t::Test undef requirements: Any::Moose 0 Carp::Clan::Share 0 @@ -1327,8 +1348,8 @@ DISTRIBUTIONS DBD-Pg-3.5.3 pathname: T/TU/TURNSTEP/DBD-Pg-3.5.3.tar.gz provides: - Bundle::DBD::Pg v3.5.3 - DBD::Pg v3.5.3 + Bundle::DBD::Pg 3.005003 + DBD::Pg 3.005003 requirements: DBI 1.614 ExtUtils::MakeMaker 6.11 @@ -1684,7 +1705,23 @@ DISTRIBUTIONS Data-Section-0.200006 pathname: R/RJ/RJBS/Data-Section-0.200006.tar.gz provides: + Child undef Data::Section 0.200006 + End undef + Godfather undef + Grandchild undef + Header undef + I::Child undef + I::Grandchild undef + I::Parent undef + Latin1 undef + NoData undef + NoName undef + Parent undef + Relaxed undef + Unicode_nopragma undef + Unicode_pragma undef + WindowsNewlines undef requirements: Encode 0 ExtUtils::MakeMaker 6.30 @@ -1718,8 +1755,6 @@ DISTRIBUTIONS DateTime::Duration 1.26 DateTime::Helpers 1.26 DateTime::Infinite 1.26 - DateTime::Infinite::Future 1.26 - DateTime::Infinite::Past 1.26 DateTime::LeapSecond 1.26 DateTime::PP 1.26 DateTime::PPExtra 1.26 @@ -1799,7 +1834,7 @@ DISTRIBUTIONS DateTime-Format-RFC3339-v1.2.0 pathname: I/IK/IKEGAMI/DateTime-Format-RFC3339-v1.2.0.tar.gz provides: - DateTime::Format::RFC3339 1.002000 + DateTime::Format::RFC3339 undef requirements: ExtUtils::MakeMaker 6.52 DateTime-Format-Strptime-1.67 @@ -2450,29 +2485,29 @@ DISTRIBUTIONS ElasticSearchX-Model-1.0.0 pathname: O/OA/OALDERS/ElasticSearchX-Model-1.0.0.tar.gz provides: - ElasticSearchX::Model v1.0.0 - ElasticSearchX::Model::Bulk v1.0.0 - ElasticSearchX::Model::Document v1.0.0 - ElasticSearchX::Model::Document::EmbeddedRole v1.0.0 - ElasticSearchX::Model::Document::Mapping v1.0.0 - ElasticSearchX::Model::Document::Role v1.0.0 - ElasticSearchX::Model::Document::Set v1.0.0 - ElasticSearchX::Model::Document::Trait::Attribute v1.0.0 - ElasticSearchX::Model::Document::Trait::Class v1.0.0 - ElasticSearchX::Model::Document::Trait::Class::ID v1.0.0 - ElasticSearchX::Model::Document::Trait::Class::Timestamp v1.0.0 - ElasticSearchX::Model::Document::Trait::Class::Version v1.0.0 - ElasticSearchX::Model::Document::Trait::Field::ID v1.0.0 - ElasticSearchX::Model::Document::Trait::Field::TTL v1.0.0 - ElasticSearchX::Model::Document::Trait::Field::Timestamp v1.0.0 - ElasticSearchX::Model::Document::Trait::Field::Version v1.0.0 - ElasticSearchX::Model::Document::Types v1.0.0 - ElasticSearchX::Model::Index v1.0.0 - ElasticSearchX::Model::Role v1.0.0 - ElasticSearchX::Model::Scroll v1.0.0 - ElasticSearchX::Model::Trait::Class v1.0.0 - ElasticSearchX::Model::Tutorial v1.0.0 - ElasticSearchX::Model::Util v1.0.0 + ElasticSearchX::Model 1.000000 + ElasticSearchX::Model::Bulk 1.000000 + ElasticSearchX::Model::Document 1.000000 + ElasticSearchX::Model::Document::EmbeddedRole 1.000000 + ElasticSearchX::Model::Document::Mapping 1.000000 + ElasticSearchX::Model::Document::Role 1.000000 + ElasticSearchX::Model::Document::Set 1.000000 + ElasticSearchX::Model::Document::Trait::Attribute 1.000000 + ElasticSearchX::Model::Document::Trait::Class 1.000000 + ElasticSearchX::Model::Document::Trait::Class::ID 1.000000 + ElasticSearchX::Model::Document::Trait::Class::Timestamp 1.000000 + ElasticSearchX::Model::Document::Trait::Class::Version 1.000000 + ElasticSearchX::Model::Document::Trait::Field::ID 1.000000 + ElasticSearchX::Model::Document::Trait::Field::TTL 1.000000 + ElasticSearchX::Model::Document::Trait::Field::Timestamp 1.000000 + ElasticSearchX::Model::Document::Trait::Field::Version 1.000000 + ElasticSearchX::Model::Document::Types 1.000000 + ElasticSearchX::Model::Index 1.000000 + ElasticSearchX::Model::Role 1.000000 + ElasticSearchX::Model::Scroll 1.000000 + ElasticSearchX::Model::Trait::Class 1.000000 + ElasticSearchX::Model::Tutorial 1.000000 + ElasticSearchX::Model::Util 1.000000 requirements: Carp 0 Class::Load 0 @@ -2504,6 +2539,7 @@ DISTRIBUTIONS Email::Abstract::MailInternet 3.008 Email::Abstract::MailMessage 3.008 Email::Abstract::Plugin 3.008 + Test::EmailAbstract undef requirements: Carp 0 Email::Simple 1.998 @@ -2560,6 +2596,9 @@ DISTRIBUTIONS Email::Sender::Transport::Test 1.300027 Email::Sender::Transport::Wrapper 1.300027 Email::Sender::Util 1.300027 + Test::Email::SMTPRig undef + Test::Email::Sender::Transport::FailEvery undef + Test::Email::Sender::Util undef requirements: Carp 0 Email::Abstract 3.006 @@ -2632,9 +2671,6 @@ DISTRIBUTIONS pathname: S/SH/SHLOMIF/Error-0.17024.tar.gz provides: Error 0.17024 - Error::Simple 0.17024 - Error::WarnDie undef - Error::subs undef requirements: Module::Build 0.280801 Scalar::Util 0 @@ -2871,12 +2907,10 @@ DISTRIBUTIONS File-Find-Object-v0.2.13 pathname: S/SH/SHLOMIF/File-Find-Object-v0.2.13.tar.gz provides: - File::Find::Object v0.2.13 - File::Find::Object::Base v0.2.13 - File::Find::Object::DeepPath v0.2.13 - File::Find::Object::PathComp v0.2.13 - File::Find::Object::Result v0.2.13 - File::Find::Object::TopPath v0.2.13 + File::Find::Object 0.002013 + File::Find::Object::Base 0.002013 + File::Find::Object::PathComp 0.002013 + File::Find::Object::Result 0.002013 requirements: Carp 0 Class::XSAccessor 0 @@ -3349,6 +3383,7 @@ DISTRIBUTIONS HTTP::Body::UrlEncoded 1.22 HTTP::Body::XForms 1.22 HTTP::Body::XFormsMultipart 1.22 + PAML undef requirements: Carp 0 Digest::MD5 0 @@ -3539,7 +3574,6 @@ DISTRIBUTIONS pathname: E/ET/ETHER/Hook-LexWrap-0.25.tar.gz provides: Hook::LexWrap 0.25 - Hook::LexWrap::Cleanup 0.25 requirements: Carp 0 ExtUtils::MakeMaker 0 @@ -3970,6 +4004,9 @@ DISTRIBUTIONS Log-Contextual-0.007000 pathname: F/FR/FREW/Log-Contextual-0.007000.tar.gz provides: + BaseLogger undef + DefaultImportLogger undef + DumbLogger2 undef Log::Contextual 0.007000 Log::Contextual::Easy::Default 0.007000 Log::Contextual::Easy::Package 0.007000 @@ -3981,6 +4018,10 @@ DISTRIBUTIONS Log::Contextual::SimpleLogger 0.007000 Log::Contextual::TeeLogger 0.007000 Log::Contextual::WarnLogger 0.007000 + My::Module undef + My::Module2 undef + TestExporter undef + TestRouter undef requirements: Carp 0 Data::Dumper::Concise 0 @@ -4032,16 +4073,13 @@ DISTRIBUTIONS L4pResurrectable 0.01 Log::Log4perl 1.47 Log::Log4perl::Appender undef - Log::Log4perl::Appender::Buffer undef Log::Log4perl::Appender::DBI undef Log::Log4perl::Appender::File undef - Log::Log4perl::Appender::Limit undef Log::Log4perl::Appender::RRDs undef Log::Log4perl::Appender::Screen undef Log::Log4perl::Appender::ScreenColoredLevels undef Log::Log4perl::Appender::Socket undef Log::Log4perl::Appender::String undef - Log::Log4perl::Appender::Synchronized undef Log::Log4perl::Appender::TestArrayBuffer undef Log::Log4perl::Appender::TestBuffer undef Log::Log4perl::Appender::TestFileCreeper undef @@ -4270,6 +4308,7 @@ DISTRIBUTIONS Mixin-Linewise-0.108 pathname: R/RJ/RJBS/Mixin-Linewise-0.108.tar.gz provides: + MLTests undef Mixin::Linewise 0.108 Mixin::Linewise::Readers 0.108 Mixin::Linewise::Writers 0.108 @@ -4608,7 +4647,7 @@ DISTRIBUTIONS Mojolicious::Command::generate::app undef Mojolicious::Command::generate::lite_app undef Mojolicious::Command::generate::makefile undef - Mojolicious::Command::generate::plugin undef + Mojolicious::Command::generate::plugin 0.01 Mojolicious::Command::get undef Mojolicious::Command::inflate undef Mojolicious::Command::prefork undef @@ -4712,6 +4751,12 @@ DISTRIBUTIONS MooX::Options::Descriptive 4.022 MooX::Options::Descriptive::Usage 4.022 MooX::Options::Role 4.022 + TestNamespaceClean undef + t::Test undef + t::lib::MooXCmdTest undef + t::lib::MooXCmdTest::Cmd::test1 undef + t::lib::MooXCmdTest::Cmd::test1::Cmd::test2 undef + t::lib::MooXCmdTest::Cmd::test3 undef requirements: Carp 0 Data::Record 0 @@ -4778,6 +4823,8 @@ DISTRIBUTIONS Class::MOP 2.1605 Class::MOP::Attribute 2.1605 Class::MOP::Class 2.1605 + Class::MOP::Class::Immutable::Trait undef + Class::MOP::Deprecated undef Class::MOP::Instance 2.1605 Class::MOP::Method 2.1605 Class::MOP::Method::Accessor 2.1605 @@ -4786,40 +4833,18 @@ DISTRIBUTIONS Class::MOP::Method::Inlined 2.1605 Class::MOP::Method::Meta 2.1605 Class::MOP::Method::Wrapped 2.1605 + Class::MOP::MiniTrait undef + Class::MOP::Mixin undef + Class::MOP::Mixin::AttributeCore undef + Class::MOP::Mixin::HasAttributes undef + Class::MOP::Mixin::HasMethods undef + Class::MOP::Mixin::HasOverloads undef Class::MOP::Module 2.1605 Class::MOP::Object 2.1605 Class::MOP::Overload 2.1605 Class::MOP::Package 2.1605 Moose 2.1605 - Moose::Cookbook 2.1605 - Moose::Cookbook::Basics::BankAccount_MethodModifiersAndSubclassing 2.1605 - Moose::Cookbook::Basics::BinaryTree_AttributeFeatures 2.1605 - Moose::Cookbook::Basics::BinaryTree_BuilderAndLazyBuild 2.1605 - Moose::Cookbook::Basics::Company_Subtypes 2.1605 - Moose::Cookbook::Basics::DateTime_ExtendingNonMooseParent 2.1605 - Moose::Cookbook::Basics::Document_AugmentAndInner 2.1605 - Moose::Cookbook::Basics::Genome_OverloadingSubtypesAndCoercion 2.1605 - Moose::Cookbook::Basics::HTTP_SubtypesAndCoercion 2.1605 - Moose::Cookbook::Basics::Immutable 2.1605 - Moose::Cookbook::Basics::Person_BUILDARGSAndBUILD 2.1605 - Moose::Cookbook::Basics::Point_AttributesAndSubclassing 2.1605 - Moose::Cookbook::Extending::Debugging_BaseClassRole 2.1605 - Moose::Cookbook::Extending::ExtensionOverview 2.1605 - Moose::Cookbook::Extending::Mooseish_MooseSugar 2.1605 - Moose::Cookbook::Legacy::Debugging_BaseClassReplacement 2.1605 - Moose::Cookbook::Legacy::Labeled_AttributeMetaclass 2.1605 - Moose::Cookbook::Legacy::Table_ClassMetaclass 2.1605 - Moose::Cookbook::Meta::GlobRef_InstanceMetaclass 2.1605 - Moose::Cookbook::Meta::Labeled_AttributeTrait 2.1605 - Moose::Cookbook::Meta::PrivateOrPublic_MethodMetaclass 2.1605 - Moose::Cookbook::Meta::Table_MetaclassTrait 2.1605 - Moose::Cookbook::Meta::WhyMeta 2.1605 - Moose::Cookbook::Roles::ApplicationToInstance 2.1605 - Moose::Cookbook::Roles::Comparable_CodeReuse 2.1605 - Moose::Cookbook::Roles::Restartable_AdvancedComposition 2.1605 - Moose::Cookbook::Snack::Keywords 2.1605 - Moose::Cookbook::Snack::Types 2.1605 - Moose::Cookbook::Style 2.1605 + Moose::Deprecated undef Moose::Exception 2.1605 Moose::Exception::AccessorMustReadWrite 2.1605 Moose::Exception::AddParameterizableTypeTakesParameterizableType 2.1605 @@ -5050,30 +5075,9 @@ DISTRIBUTIONS Moose::Exception::WrapTakesACodeRefToBless 2.1605 Moose::Exception::WrongTypeConstraintGiven 2.1605 Moose::Exporter 2.1605 - Moose::Intro 2.1605 - Moose::Manual 2.1605 - Moose::Manual::Attributes 2.1605 - Moose::Manual::BestPractices 2.1605 - Moose::Manual::Classes 2.1605 - Moose::Manual::Concepts 2.1605 - Moose::Manual::Construction 2.1605 - Moose::Manual::Contributing 2.1605 - Moose::Manual::Delegation 2.1605 - Moose::Manual::Delta 2.1605 - Moose::Manual::Exceptions 2.1605 - Moose::Manual::Exceptions::Manifest 2.1605 - Moose::Manual::FAQ 2.1605 - Moose::Manual::MOP 2.1605 - Moose::Manual::MethodModifiers 2.1605 - Moose::Manual::MooseX 2.1605 - Moose::Manual::Resources 2.1605 - Moose::Manual::Roles 2.1605 - Moose::Manual::Support 2.1605 - Moose::Manual::Types 2.1605 - Moose::Manual::Unsweetened 2.1605 Moose::Meta::Attribute 2.1605 - Moose::Meta::Attribute::Custom::Moose 2.1605 Moose::Meta::Attribute::Native 2.1605 + Moose::Meta::Attribute::Native::Trait undef Moose::Meta::Attribute::Native::Trait::Array 2.1605 Moose::Meta::Attribute::Native::Trait::Bool 2.1605 Moose::Meta::Attribute::Native::Trait::Code 2.1605 @@ -5082,15 +5086,94 @@ DISTRIBUTIONS Moose::Meta::Attribute::Native::Trait::Number 2.1605 Moose::Meta::Attribute::Native::Trait::String 2.1605 Moose::Meta::Class 2.1605 + Moose::Meta::Class::Immutable::Trait undef Moose::Meta::Instance 2.1605 Moose::Meta::Method 2.1605 Moose::Meta::Method::Accessor 2.1605 + Moose::Meta::Method::Accessor::Native undef + Moose::Meta::Method::Accessor::Native::Array undef + Moose::Meta::Method::Accessor::Native::Array::Writer undef + Moose::Meta::Method::Accessor::Native::Array::accessor undef + Moose::Meta::Method::Accessor::Native::Array::clear undef + Moose::Meta::Method::Accessor::Native::Array::count undef + Moose::Meta::Method::Accessor::Native::Array::delete undef + Moose::Meta::Method::Accessor::Native::Array::elements undef + Moose::Meta::Method::Accessor::Native::Array::first undef + Moose::Meta::Method::Accessor::Native::Array::first_index undef + Moose::Meta::Method::Accessor::Native::Array::get undef + Moose::Meta::Method::Accessor::Native::Array::grep undef + Moose::Meta::Method::Accessor::Native::Array::insert undef + Moose::Meta::Method::Accessor::Native::Array::is_empty undef + Moose::Meta::Method::Accessor::Native::Array::join undef + Moose::Meta::Method::Accessor::Native::Array::map undef + Moose::Meta::Method::Accessor::Native::Array::natatime undef + Moose::Meta::Method::Accessor::Native::Array::pop undef + Moose::Meta::Method::Accessor::Native::Array::push undef + Moose::Meta::Method::Accessor::Native::Array::reduce undef + Moose::Meta::Method::Accessor::Native::Array::set undef + Moose::Meta::Method::Accessor::Native::Array::shallow_clone undef + Moose::Meta::Method::Accessor::Native::Array::shift undef + Moose::Meta::Method::Accessor::Native::Array::shuffle undef + Moose::Meta::Method::Accessor::Native::Array::sort undef + Moose::Meta::Method::Accessor::Native::Array::sort_in_place undef + Moose::Meta::Method::Accessor::Native::Array::splice undef + Moose::Meta::Method::Accessor::Native::Array::uniq undef + Moose::Meta::Method::Accessor::Native::Array::unshift undef + Moose::Meta::Method::Accessor::Native::Bool::not undef + Moose::Meta::Method::Accessor::Native::Bool::set undef + Moose::Meta::Method::Accessor::Native::Bool::toggle undef + Moose::Meta::Method::Accessor::Native::Bool::unset undef + Moose::Meta::Method::Accessor::Native::Code::execute undef + Moose::Meta::Method::Accessor::Native::Code::execute_method undef + Moose::Meta::Method::Accessor::Native::Collection undef + Moose::Meta::Method::Accessor::Native::Counter::Writer undef + Moose::Meta::Method::Accessor::Native::Counter::dec undef + Moose::Meta::Method::Accessor::Native::Counter::inc undef + Moose::Meta::Method::Accessor::Native::Counter::reset undef + Moose::Meta::Method::Accessor::Native::Counter::set undef + Moose::Meta::Method::Accessor::Native::Hash undef + Moose::Meta::Method::Accessor::Native::Hash::Writer undef + Moose::Meta::Method::Accessor::Native::Hash::accessor undef + Moose::Meta::Method::Accessor::Native::Hash::clear undef + Moose::Meta::Method::Accessor::Native::Hash::count undef + Moose::Meta::Method::Accessor::Native::Hash::defined undef + Moose::Meta::Method::Accessor::Native::Hash::delete undef + Moose::Meta::Method::Accessor::Native::Hash::elements undef + Moose::Meta::Method::Accessor::Native::Hash::exists undef + Moose::Meta::Method::Accessor::Native::Hash::get undef + Moose::Meta::Method::Accessor::Native::Hash::is_empty undef + Moose::Meta::Method::Accessor::Native::Hash::keys undef + Moose::Meta::Method::Accessor::Native::Hash::kv undef + Moose::Meta::Method::Accessor::Native::Hash::set undef + Moose::Meta::Method::Accessor::Native::Hash::shallow_clone undef + Moose::Meta::Method::Accessor::Native::Hash::values undef + Moose::Meta::Method::Accessor::Native::Number::abs undef + Moose::Meta::Method::Accessor::Native::Number::add undef + Moose::Meta::Method::Accessor::Native::Number::div undef + Moose::Meta::Method::Accessor::Native::Number::mod undef + Moose::Meta::Method::Accessor::Native::Number::mul undef + Moose::Meta::Method::Accessor::Native::Number::set undef + Moose::Meta::Method::Accessor::Native::Number::sub undef + Moose::Meta::Method::Accessor::Native::Reader undef + Moose::Meta::Method::Accessor::Native::String::append undef + Moose::Meta::Method::Accessor::Native::String::chomp undef + Moose::Meta::Method::Accessor::Native::String::chop undef + Moose::Meta::Method::Accessor::Native::String::clear undef + Moose::Meta::Method::Accessor::Native::String::inc undef + Moose::Meta::Method::Accessor::Native::String::length undef + Moose::Meta::Method::Accessor::Native::String::match undef + Moose::Meta::Method::Accessor::Native::String::prepend undef + Moose::Meta::Method::Accessor::Native::String::replace undef + Moose::Meta::Method::Accessor::Native::String::substr undef + Moose::Meta::Method::Accessor::Native::Writer undef Moose::Meta::Method::Augmented 2.1605 Moose::Meta::Method::Constructor 2.1605 Moose::Meta::Method::Delegation 2.1605 Moose::Meta::Method::Destructor 2.1605 Moose::Meta::Method::Meta 2.1605 Moose::Meta::Method::Overridden 2.1605 + Moose::Meta::Mixin::AttributeCore undef + Moose::Meta::Object::Trait undef Moose::Meta::Role 2.1605 Moose::Meta::Role::Application 2.1605 Moose::Meta::Role::Application::RoleSummation 2.1605 @@ -5115,11 +5198,10 @@ DISTRIBUTIONS Moose::Meta::TypeConstraint::Union 2.1605 Moose::Object 2.1605 Moose::Role 2.1605 - Moose::Spec::Role 2.1605 - Moose::Unsweetened 2.1605 Moose::Util 2.1605 Moose::Util::MetaRole 2.1605 Moose::Util::TypeConstraints 2.1605 + Moose::Util::TypeConstraints::Builtins undef Test::Moose 2.1605 metaclass 2.1605 oose 2.1605 @@ -5160,6 +5242,13 @@ DISTRIBUTIONS pathname: D/DO/DOY/MooseX-Aliases-0.11.tar.gz provides: MooseX::Aliases 0.11 + MooseX::Aliases::Meta::Trait::Attribute 0.11 + MooseX::Aliases::Meta::Trait::Class 0.11 + MooseX::Aliases::Meta::Trait::Method 0.11 + MooseX::Aliases::Meta::Trait::Role 0.11 + MooseX::Aliases::Meta::Trait::Role::ApplicationToClass 0.11 + MooseX::Aliases::Meta::Trait::Role::ApplicationToRole 0.11 + MooseX::Aliases::Meta::Trait::Role::Composite 0.11 requirements: ExtUtils::MakeMaker 6.30 Moose 2.0000 @@ -5170,15 +5259,13 @@ DISTRIBUTIONS MooseX-Attribute-Chained-1.0.2 pathname: T/TO/TOMHUKINS/MooseX-Attribute-Chained-1.0.2.tar.gz provides: - Moose::Meta::Attribute::Custom::Trait::Chained v1.0.2 - MooseX::Attribute::Chained v1.0.2 - MooseX::Attribute::Chained::Method::Accessor v1.0.2 - MooseX::Attribute::ChainedClone v1.0.2 - MooseX::Attribute::ChainedClone::Method::Accessor v1.0.2 - MooseX::ChainedAccessors v1.0.2 - MooseX::ChainedAccessors::Accessor v1.0.2 - MooseX::Traits::Attribute::Chained v1.0.2 - MooseX::Traits::Attribute::ChainedClone v1.0.2 + Moose::Meta::Attribute::Custom::Trait::Chained 1.000002 + MooseX::Attribute::Chained 1.000002 + MooseX::Attribute::ChainedClone 1.000002 + MooseX::ChainedAccessors 1.000002 + MooseX::ChainedAccessors::Accessor 1.000002 + MooseX::Traits::Attribute::Chained 1.000002 + MooseX::Traits::Attribute::ChainedClone 1.000002 requirements: Module::Build 0.28 Moose 0 @@ -5187,20 +5274,20 @@ DISTRIBUTIONS MooseX-Attribute-Deflator-2.2.2 pathname: P/PE/PERLER/MooseX-Attribute-Deflator-2.2.2.tar.gz provides: - MooseX::Attribute::Deflator v2.2.2 - MooseX::Attribute::Deflator::Meta::Role::Attribute v2.2.2 - MooseX::Attribute::Deflator::Moose v2.2.2 - MooseX::Attribute::Deflator::Registry v2.2.2 - MooseX::Attribute::Deflator::Structured v2.2.2 - MooseX::Attribute::LazyInflator v2.2.2 - MooseX::Attribute::LazyInflator::Meta::Role::ApplicationToClass v2.2.2 - MooseX::Attribute::LazyInflator::Meta::Role::ApplicationToRole v2.2.2 - MooseX::Attribute::LazyInflator::Meta::Role::Attribute v2.2.2 - MooseX::Attribute::LazyInflator::Meta::Role::Composite v2.2.2 - MooseX::Attribute::LazyInflator::Meta::Role::Method::Accessor v2.2.2 - MooseX::Attribute::LazyInflator::Meta::Role::Method::Constructor v2.2.2 - MooseX::Attribute::LazyInflator::Meta::Role::Role v2.2.2 - MooseX::Attribute::LazyInflator::Role::Class v2.2.2 + MooseX::Attribute::Deflator 2.002002 + MooseX::Attribute::Deflator::Meta::Role::Attribute 2.002002 + MooseX::Attribute::Deflator::Moose 2.002002 + MooseX::Attribute::Deflator::Registry 2.002002 + MooseX::Attribute::Deflator::Structured 2.002002 + MooseX::Attribute::LazyInflator 2.002002 + MooseX::Attribute::LazyInflator::Meta::Role::ApplicationToClass 2.002002 + MooseX::Attribute::LazyInflator::Meta::Role::ApplicationToRole 2.002002 + MooseX::Attribute::LazyInflator::Meta::Role::Attribute 2.002002 + MooseX::Attribute::LazyInflator::Meta::Role::Composite 2.002002 + MooseX::Attribute::LazyInflator::Meta::Role::Method::Accessor 2.002002 + MooseX::Attribute::LazyInflator::Meta::Role::Method::Constructor 2.002002 + MooseX::Attribute::LazyInflator::Meta::Role::Role 2.002002 + MooseX::Attribute::LazyInflator::Role::Class 2.002002 requirements: DateTime 0 Devel::PartialDump 0 @@ -5218,6 +5305,9 @@ DISTRIBUTIONS MooseX-ClassAttribute-0.27 pathname: D/DR/DROLSKY/MooseX-ClassAttribute-0.27.tar.gz provides: + Child undef + Delegatee undef + HasClassAttribute undef MooseX::ClassAttribute 0.27 MooseX::ClassAttribute::Meta::Role::Attribute 0.27 MooseX::ClassAttribute::Trait::Application 0.27 @@ -5228,6 +5318,7 @@ DISTRIBUTIONS MooseX::ClassAttribute::Trait::Mixin::HasClassAttributes 0.27 MooseX::ClassAttribute::Trait::Role 0.27 MooseX::ClassAttribute::Trait::Role::Composite 0.27 + SharedTests undef requirements: ExtUtils::MakeMaker 6.30 List::MoreUtils 0 @@ -5452,7 +5543,7 @@ DISTRIBUTIONS MooseX-Types-ElasticSearch-0.0.4 pathname: P/PE/PERLER/MooseX-Types-ElasticSearch-0.0.4.tar.gz provides: - MooseX::Types::ElasticSearch v0.0.4 + MooseX::Types::ElasticSearch 0.000004 requirements: DateTime::Format::Epoch::Unix 0 DateTime::Format::ISO8601 0 @@ -5545,7 +5636,7 @@ DISTRIBUTIONS Mouse-v2.4.5 pathname: S/SY/SYOHEX/Mouse-v2.4.5.tar.gz provides: - Mouse v2.4.5 + Mouse 2.004005 Mouse::Exporter undef Mouse::Meta::Attribute undef Mouse::Meta::Class undef @@ -5557,17 +5648,15 @@ DISTRIBUTIONS Mouse::Meta::Module undef Mouse::Meta::Role undef Mouse::Meta::Role::Application undef - Mouse::Meta::Role::Application::RoleSummation undef Mouse::Meta::Role::Composite undef Mouse::Meta::Role::Method undef Mouse::Meta::TypeConstraint undef Mouse::Object undef Mouse::PurePerl undef - Mouse::Role v2.4.5 - Mouse::Spec v2.4.5 - Mouse::Tiny v2.4.5 + Mouse::Role 2.004005 + Mouse::Spec 2.004005 Mouse::TypeRegistry undef - Mouse::Util v2.4.5 + Mouse::Util 2.004005 Mouse::Util::MetaRole undef Mouse::Util::TypeConstraints undef Squirrel undef @@ -5718,7 +5807,6 @@ DISTRIBUTIONS Net::Fastly::Backend undef Net::Fastly::BelongsToServiceAndVersion undef Net::Fastly::Client undef - Net::Fastly::Client::UserAgent undef Net::Fastly::Condition undef Net::Fastly::Customer undef Net::Fastly::Director undef @@ -5732,7 +5820,6 @@ DISTRIBUTIONS Net::Fastly::Settings undef Net::Fastly::Stats undef Net::Fastly::Syslog undef - Net::Fastly::UA undef Net::Fastly::User undef Net::Fastly::VCL undef Net::Fastly::Version undef @@ -5834,6 +5921,7 @@ DISTRIBUTIONS Net-OpenID-Consumer-1.18 pathname: W/WR/WROG/Net-OpenID-Consumer-1.18.tar.gz provides: + FakeFetch undef Net::OpenID::Association 1.18 Net::OpenID::ClaimedIdentity 1.18 Net::OpenID::Consumer 1.18 @@ -6333,6 +6421,7 @@ DISTRIBUTIONS Package-Stash-XS-0.28 pathname: D/DO/DOY/Package-Stash-XS-0.28.tar.gz provides: + CompileTime undef Package::Stash::XS 0.28 requirements: ExtUtils::MakeMaker 6.30 @@ -6515,8 +6604,8 @@ DISTRIBUTIONS Path-FindDev-0.5.2 pathname: K/KE/KENTNL/Path-FindDev-0.5.2.tar.gz provides: - Path::FindDev v0.5.2 - Path::FindDev::Object v0.5.2 + Path::FindDev 0.005002 + Path::FindDev::Object 0.005002 requirements: Carp 0 Class::Tiny 0.010 @@ -6597,7 +6686,7 @@ DISTRIBUTIONS pathname: D/DA/DAGOLDEN/Path-Tiny-0.088.tar.gz provides: Path::Tiny 0.088 - Path::Tiny::Error 0.088 + flock undef requirements: Carp 0 Cwd 0 @@ -6874,23 +6963,14 @@ DISTRIBUTIONS pathname: S/SH/SHANCOCK/Perl-Tidy-20160302.tar.gz provides: Perl::Tidy 20160302 - Perl::Tidy::Debugger 20160302 Perl::Tidy::DevNull 20160302 Perl::Tidy::Diagnostics 20160302 - Perl::Tidy::FileWriter 20160302 - Perl::Tidy::Formatter 20160302 Perl::Tidy::HtmlWriter 20160302 Perl::Tidy::IOScalar 20160302 Perl::Tidy::IOScalarArray 20160302 - Perl::Tidy::IndentationItem 20160302 - Perl::Tidy::LineBuffer 20160302 Perl::Tidy::LineSink 20160302 Perl::Tidy::LineSource 20160302 Perl::Tidy::Logger 20160302 - Perl::Tidy::Tokenizer 20160302 - Perl::Tidy::VerticalAligner 20160302 - Perl::Tidy::VerticalAligner::Alignment 20160302 - Perl::Tidy::VerticalAligner::Line 20160302 requirements: ExtUtils::MakeMaker 0 PerlIO-gzip-0.19 @@ -6952,6 +7032,7 @@ DISTRIBUTIONS Pithub::Result::SharedCache 0.01033 Pithub::Search 0.01033 Pithub::SearchV3 0.01033 + Pithub::Test undef Pithub::Users 0.01033 Pithub::Users::Emails 0.01033 Pithub::Users::Followers 0.01033 @@ -7273,6 +7354,9 @@ DISTRIBUTIONS Pod::POM::View::HTML 2.01 Pod::POM::View::Pod 2.01 Pod::POM::View::Text 2.01 + PodPOMTestCase undef + PodPOMTestLib undef + YAML::Tiny 1.36 requirements: Encode 0 Exporter 0 @@ -7363,9 +7447,6 @@ DISTRIBUTIONS pathname: S/SA/SANKO/Readonly-2.01.tar.gz provides: Readonly 2.01 - Readonly::Array undef - Readonly::Hash undef - Readonly::Scalar undef requirements: Module::Build::Tiny 0.035 perl v5.6.0 @@ -7431,6 +7512,7 @@ DISTRIBUTIONS SQL-Abstract-1.81 pathname: R/RI/RIBASUSHI/SQL-Abstract-1.81.tar.gz provides: + DBIx::Class::Storage::Debug::PrettyPrint undef SQL::Abstract 1.81 SQL::Abstract::Test undef SQL::Abstract::Tree undef @@ -7486,65 +7568,65 @@ DISTRIBUTIONS ExtUtils::MakeMaker 0 Test::More 0 perl 5.006001 - Search-Elasticsearch-2.01 - pathname: D/DR/DRTECH/Search-Elasticsearch-2.01.tar.gz - provides: - Search::Elasticsearch 2.01 - Search::Elasticsearch::Bulk 2.01 - Search::Elasticsearch::Client::0_90::Direct 2.01 - Search::Elasticsearch::Client::0_90::Direct::Cluster 2.01 - Search::Elasticsearch::Client::0_90::Direct::Indices 2.01 - Search::Elasticsearch::Client::1_0::Direct 2.01 - Search::Elasticsearch::Client::1_0::Direct::Cat 2.01 - Search::Elasticsearch::Client::1_0::Direct::Cluster 2.01 - Search::Elasticsearch::Client::1_0::Direct::Indices 2.01 - Search::Elasticsearch::Client::1_0::Direct::Nodes 2.01 - Search::Elasticsearch::Client::1_0::Direct::Snapshot 2.01 - Search::Elasticsearch::Client::2_0::Direct 2.01 - Search::Elasticsearch::Client::2_0::Direct::Cat 2.01 - Search::Elasticsearch::Client::2_0::Direct::Cluster 2.01 - Search::Elasticsearch::Client::2_0::Direct::Indices 2.01 - Search::Elasticsearch::Client::2_0::Direct::Nodes 2.01 - Search::Elasticsearch::Client::2_0::Direct::Snapshot 2.01 - Search::Elasticsearch::Client::2_0::Direct::Tasks 2.01 - Search::Elasticsearch::Cxn::Factory 2.01 - Search::Elasticsearch::Cxn::HTTPTiny 2.01 - Search::Elasticsearch::Cxn::Hijk 2.01 - Search::Elasticsearch::Cxn::LWP 2.01 - Search::Elasticsearch::CxnPool::Sniff 2.01 - Search::Elasticsearch::CxnPool::Static 2.01 - Search::Elasticsearch::CxnPool::Static::NoPing 2.01 - Search::Elasticsearch::Error 2.01 - Search::Elasticsearch::Logger::LogAny 2.01 - Search::Elasticsearch::Role::API::0_90 2.01 - Search::Elasticsearch::Role::API::1_0 2.01 - Search::Elasticsearch::Role::API::2_0 2.01 - Search::Elasticsearch::Role::Bulk 2.01 - Search::Elasticsearch::Role::Client 2.01 - Search::Elasticsearch::Role::Client::Direct 2.01 - Search::Elasticsearch::Role::Client::Direct::Main 2.01 - Search::Elasticsearch::Role::Cxn 2.01 - Search::Elasticsearch::Role::Cxn::HTTP 2.01 - Search::Elasticsearch::Role::CxnPool 2.01 - Search::Elasticsearch::Role::CxnPool::Sniff 2.01 - Search::Elasticsearch::Role::CxnPool::Static 2.01 - Search::Elasticsearch::Role::CxnPool::Static::NoPing 2.01 - Search::Elasticsearch::Role::Is_Sync 2.01 - Search::Elasticsearch::Role::Logger 2.01 - Search::Elasticsearch::Role::Scroll 2.01 - Search::Elasticsearch::Role::Serializer 2.01 - Search::Elasticsearch::Role::Serializer::JSON 2.01 - Search::Elasticsearch::Role::Transport 2.01 - Search::Elasticsearch::Scroll 2.01 - Search::Elasticsearch::Serializer::JSON 2.01 - Search::Elasticsearch::Serializer::JSON::Cpanel 2.01 - Search::Elasticsearch::Serializer::JSON::PP 2.01 - Search::Elasticsearch::Serializer::JSON::XS 2.01 - Search::Elasticsearch::TestServer 2.01 - Search::Elasticsearch::Transport 2.01 - Search::Elasticsearch::Util 2.01 - Search::Elasticsearch::Util::API::Path 2.01 - Search::Elasticsearch::Util::API::QS 2.01 + Search-Elasticsearch-2.02 + pathname: D/DR/DRTECH/Search-Elasticsearch-2.02.tar.gz + provides: + Search::Elasticsearch 2.02 + Search::Elasticsearch::Bulk 2.02 + Search::Elasticsearch::Client::0_90::Direct 2.02 + Search::Elasticsearch::Client::0_90::Direct::Cluster 2.02 + Search::Elasticsearch::Client::0_90::Direct::Indices 2.02 + Search::Elasticsearch::Client::1_0::Direct 2.02 + Search::Elasticsearch::Client::1_0::Direct::Cat 2.02 + Search::Elasticsearch::Client::1_0::Direct::Cluster 2.02 + Search::Elasticsearch::Client::1_0::Direct::Indices 2.02 + Search::Elasticsearch::Client::1_0::Direct::Nodes 2.02 + Search::Elasticsearch::Client::1_0::Direct::Snapshot 2.02 + Search::Elasticsearch::Client::2_0::Direct 2.02 + Search::Elasticsearch::Client::2_0::Direct::Cat 2.02 + Search::Elasticsearch::Client::2_0::Direct::Cluster 2.02 + Search::Elasticsearch::Client::2_0::Direct::Indices 2.02 + Search::Elasticsearch::Client::2_0::Direct::Nodes 2.02 + Search::Elasticsearch::Client::2_0::Direct::Snapshot 2.02 + Search::Elasticsearch::Client::2_0::Direct::Tasks 2.02 + Search::Elasticsearch::Cxn::Factory 2.02 + Search::Elasticsearch::Cxn::HTTPTiny 2.02 + Search::Elasticsearch::Cxn::Hijk 2.02 + Search::Elasticsearch::Cxn::LWP 2.02 + Search::Elasticsearch::CxnPool::Sniff 2.02 + Search::Elasticsearch::CxnPool::Static 2.02 + Search::Elasticsearch::CxnPool::Static::NoPing 2.02 + Search::Elasticsearch::Error 2.02 + Search::Elasticsearch::Logger::LogAny 2.02 + Search::Elasticsearch::Role::API::0_90 2.02 + Search::Elasticsearch::Role::API::1_0 2.02 + Search::Elasticsearch::Role::API::2_0 2.02 + Search::Elasticsearch::Role::Bulk 2.02 + Search::Elasticsearch::Role::Client 2.02 + Search::Elasticsearch::Role::Client::Direct 2.02 + Search::Elasticsearch::Role::Client::Direct::Main 2.02 + Search::Elasticsearch::Role::Cxn 2.02 + Search::Elasticsearch::Role::Cxn::HTTP 2.02 + Search::Elasticsearch::Role::CxnPool 2.02 + Search::Elasticsearch::Role::CxnPool::Sniff 2.02 + Search::Elasticsearch::Role::CxnPool::Static 2.02 + Search::Elasticsearch::Role::CxnPool::Static::NoPing 2.02 + Search::Elasticsearch::Role::Is_Sync 2.02 + Search::Elasticsearch::Role::Logger 2.02 + Search::Elasticsearch::Role::Scroll 2.02 + Search::Elasticsearch::Role::Serializer 2.02 + Search::Elasticsearch::Role::Serializer::JSON 2.02 + Search::Elasticsearch::Role::Transport 2.02 + Search::Elasticsearch::Scroll 2.02 + Search::Elasticsearch::Serializer::JSON 2.02 + Search::Elasticsearch::Serializer::JSON::Cpanel 2.02 + Search::Elasticsearch::Serializer::JSON::PP 2.02 + Search::Elasticsearch::Serializer::JSON::XS 2.02 + Search::Elasticsearch::TestServer 2.02 + Search::Elasticsearch::Transport 2.02 + Search::Elasticsearch::Util 2.02 + Search::Elasticsearch::Util::API::Path 2.02 + Search::Elasticsearch::Util::API::QS 2.02 requirements: Any::URI::Escape 0 Data::Dumper 0 @@ -7667,6 +7749,13 @@ DISTRIBUTIONS provides: Sub::Exporter 0.987 Sub::Exporter::Util 0.987 + Test::SubExporter::DashSetup undef + Test::SubExporter::Faux undef + Test::SubExporter::GroupGen undef + Test::SubExporter::GroupGenSubclass undef + Test::SubExporter::ObjGen undef + Test::SubExporter::ObjGen::Obj undef + Test::SubExporter::s_e undef requirements: Carp 0 Data::OptList 0.100 @@ -7679,6 +7768,8 @@ DISTRIBUTIONS pathname: R/RJ/RJBS/Sub-Exporter-ForMethods-0.100052.tar.gz provides: Sub::Exporter::ForMethods 0.100052 + TestDexp undef + TestMexp undef requirements: ExtUtils::MakeMaker 0 Scalar::Util 0 @@ -7804,8 +7895,8 @@ DISTRIBUTIONS Test-Compile-v1.3.0 pathname: E/EG/EGILES/Test-Compile-v1.3.0.tar.gz provides: - Test::Compile v1.3.0 - Test::Compile::Internal v1.3.0 + Test::Compile 1.003000 + Test::Compile::Internal 1.003000 requirements: Module::Build 0.38 UNIVERSAL::require 0 @@ -8109,6 +8200,8 @@ DISTRIBUTIONS Test::Routine::Test 0.020 Test::Routine::Test::Role 0.020 Test::Routine::Util 0.020 + t::lib::NoGood undef + t::lib::NoGood2 undef requirements: Carp 0 Class::Load 0 @@ -8193,11 +8286,11 @@ DISTRIBUTIONS Test-Trap-v0.3.2 pathname: E/EB/EBHANSSEN/Test-Trap-v0.3.2.tar.gz provides: - Test::Trap v0.3.2 - Test::Trap::Builder v0.3.2 - Test::Trap::Builder::PerlIO v0.3.2 - Test::Trap::Builder::SystemSafe v0.3.2 - Test::Trap::Builder::TempFile v0.3.2 + Test::Trap 0.003002 + Test::Trap::Builder 0.003002 + Test::Trap::Builder::PerlIO 0.003002 + Test::Trap::Builder::SystemSafe 0.003002 + Test::Trap::Builder::TempFile 0.003002 requirements: Carp 0 Data::Dump 0 @@ -8583,6 +8676,7 @@ DISTRIBUTIONS UNIVERSAL-require-0.18 pathname: N/NE/NEILB/UNIVERSAL-require-0.18.tar.gz provides: + UNIVERSAL 0.18 UNIVERSAL::require 0.18 requirements: Carp 0 @@ -8831,6 +8925,7 @@ DISTRIBUTIONS WWW-Mechanize-Cached-1.50 pathname: O/OA/OALDERS/WWW-Mechanize-Cached-1.50.tar.gz provides: + TestCache undef WWW::Mechanize::Cached 1.50 requirements: Cache::FileCache 0 @@ -8922,6 +9017,7 @@ DISTRIBUTIONS XML-Simple-2.22 pathname: G/GR/GRANTM/XML-Simple-2.22.tar.gz provides: + TagsToUpper undef XML::Simple 2.22 requirements: ExtUtils::MakeMaker 0 @@ -8982,6 +9078,7 @@ DISTRIBUTIONS pathname: I/IL/ILMARI/bareword-filehandles-0.003.tar.gz provides: bareword::filehandles 0.003 + inc::BarewordFilehandlesMakeMaker undef requirements: B::Hooks::OP::Check 0 ExtUtils::Depends 0 @@ -9274,6 +9371,8 @@ DISTRIBUTIONS multidimensional-0.011 pathname: I/IL/ILMARI/multidimensional-0.011.tar.gz provides: + MyTest undef + inc::MultidimensionalMakeMaker undef multidimensional 0.011 requirements: B::Hooks::OP::Check 0.19 @@ -9311,6 +9410,7 @@ DISTRIBUTIONS strictures-2.000002 pathname: H/HA/HAARG/strictures-2.000002.tar.gz provides: + ExtUtils::HasCompiler 0.012 strictures 2.000002 strictures::extra undef requirements: @@ -9321,6 +9421,7 @@ DISTRIBUTIONS version-0.9916 pathname: J/JP/JPEACOCK/version-0.9916.tar.gz provides: + charstar 0.9916 version 0.9916 version::regex 0.9916 version::vpp 0.9916 From 615af9757bcc1ade6eda119f020ff891bf91eea9 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Thu, 21 Apr 2016 11:12:55 +0100 Subject: [PATCH 159/329] Wrap call to _es_home with try/catch block. --- t/lib/MetaCPAN/TestServer.pm | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/t/lib/MetaCPAN/TestServer.pm b/t/lib/MetaCPAN/TestServer.pm index 0afa031b7..0cf476444 100644 --- a/t/lib/MetaCPAN/TestServer.pm +++ b/t/lib/MetaCPAN/TestServer.pm @@ -14,6 +14,7 @@ use Moose; use Search::Elasticsearch; use Search::Elasticsearch::TestServer; use Test::More; +use Try::Tiny qw( catch try ); has es_client => ( is => 'ro', @@ -104,19 +105,22 @@ sub _build_es_client { ok( $es, 'got ElasticSearch object' ); - my $host = $self->_es_home; - - ok( !$@, "Connected to the Elasticsearch test instance on $host" ) - or do { - diag(<_es_home; + } + catch { + diag(<<"EOF"); +Failed to connect to the Elasticsearch test instance on ${\$self->es_home}. Did you start one up? See https://github.com/CPAN-API/cpan-api/wiki/Installation for more information. +Error: $_ EOF BAIL_OUT('Test environment not set up properly'); - }; + }; + diag("Connected to the Elasticsearch test instance on $host"); note( Test::More::explain( { 'Elasticsearch info' => $es->info } ) ); return $es; From 51327c60a4808aaf9fd2aa51dc259c485d862021 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Thu, 21 Apr 2016 12:35:33 +0100 Subject: [PATCH 160/329] Tweak es_client building in test suite. --- docs/testing.md | 2 +- t/lib/MetaCPAN/TestServer.pm | 58 +++++++++++++++++++++--------------- 2 files changed, 35 insertions(+), 25 deletions(-) diff --git a/docs/testing.md b/docs/testing.md index 8cebbb40e..dd608f9be 100644 --- a/docs/testing.md +++ b/docs/testing.md @@ -9,6 +9,6 @@ When debugging the release indexing, try setting the bulk_size param to a low nu You can enable Elasticsearch tracing when running tests at the command line: - ES_TRACE=1 ES=localhost:9200 ./bin/prove t/darkpan.t + ES_TRACE=1 ./bin/prove t/darkpan.t You'll then find extensive logging information in `es.log`, at the top level of your Git checkout. diff --git a/t/lib/MetaCPAN/TestServer.pm b/t/lib/MetaCPAN/TestServer.pm index 0cf476444..b852ef591 100644 --- a/t/lib/MetaCPAN/TestServer.pm +++ b/t/lib/MetaCPAN/TestServer.pm @@ -79,50 +79,60 @@ USAGE return $es_home; } -sub _build_es_server { - my $self = shift; - - my $server = Search::Elasticsearch::TestServer->new( - es_home => $self->_es_home, - http_port => 9900, - es_port => 9700, - instances => 1, - 'cluster.name' => 'metacpan-test', - ); +=head2 _build_es_server - $ENV{ES} = $server->start->[0]; +This starts an Elastisearch server on the fly. It should only be called if the +ES env var contains a path to Elasticsearch. If the variable contains a port +number then we'll assume the server has already been started on this port. - diag 'Connecting to Elasticsearch on ' . $self->_es_home; -} +=cut -sub _build_es_client { +sub _build_es_server { my $self = shift; - my $es = Search::Elasticsearch->new( - nodes => $self->_es_home, - ( $ENV{ES_TRACE} ? ( trace_to => [ 'File', 'es.log' ] ) : () ) + my $server = Search::Elasticsearch::TestServer->new( + conf => [ 'cluster.name' => 'metacpan-test' ], + es_home => $self->_es_home, + es_port => 9700, + http_port => 9900, + instances => 1, ); - ok( $es, 'got ElasticSearch object' ); + diag 'Connecting to Elasticsearch on ' . $self->_es_home; - my $host; try { - $host = $self->_es_home; + $ENV{ES} = $server->start->[0]; } catch { diag(<<"EOF"); -Failed to connect to the Elasticsearch test instance on ${\$self->es_home}. +Failed to connect to the Elasticsearch test instance on ${\$self->_es_home}. Did you start one up? See https://github.com/CPAN-API/cpan-api/wiki/Installation for more information. Error: $_ EOF - BAIL_OUT('Test environment not set up properly'); }; - diag("Connected to the Elasticsearch test instance on $host"); - note( Test::More::explain( { 'Elasticsearch info' => $es->info } ) ); + diag( 'Connected to the Elasticsearch test instance on ' + . $self->_es_home ); +} + +sub _build_es_client { + my $self = shift; + + # Don't try to start a test server if we've been passed the port number of + # a running instance. + $self->es_server unless $self->_es_home =~ m{:}; + + my $es = Search::Elasticsearch->new( + nodes => $self->_es_home, + ( $ENV{ES_TRACE} ? ( trace_to => [ 'File', 'es.log' ] ) : () ) + ); + + ok( $es, 'got ElasticSearch object' ); + + note( Test::More::explain( { 'Elasticsearch info' => $es->info } ) ); return $es; } From e431f053626f96831cf618b92063fbcc5941d8ca Mon Sep 17 00:00:00 2001 From: Mickey Nasriachi Date: Tue, 19 Apr 2016 10:43:50 +0100 Subject: [PATCH 161/329] WIP: Types cleanup --- lib/MetaCPAN/Document/Author.pm | 4 +--- lib/MetaCPAN/Document/Distribution.pm | 3 +-- lib/MetaCPAN/Document/File.pm | 1 - lib/MetaCPAN/Document/Rating.pm | 4 ++-- lib/MetaCPAN/Model/User/Account.pm | 3 +-- lib/MetaCPAN/Types/Internal.pm | 4 ++-- 6 files changed, 7 insertions(+), 12 deletions(-) diff --git a/lib/MetaCPAN/Document/Author.pm b/lib/MetaCPAN/Document/Author.pm index 5e0cb6839..8c21bf0f0 100644 --- a/lib/MetaCPAN/Document/Author.pm +++ b/lib/MetaCPAN/Document/Author.pm @@ -11,10 +11,8 @@ use ElasticSearchX::Model::Document; # load order not important use Gravatar::URL (); use MetaCPAN::Types qw(:all); -use MetaCPAN::Util; -use MooseX::Types::Common::String qw(NonEmptySimpleStr); -use MooseX::Types::Moose qw( Int Num Str ArrayRef HashRef Undef); use MooseX::Types::Structured qw(Dict Tuple Optional); +use MetaCPAN::Util; has name => ( is => 'ro', diff --git a/lib/MetaCPAN/Document/Distribution.pm b/lib/MetaCPAN/Document/Distribution.pm index 19baa4e81..b4935d0cf 100644 --- a/lib/MetaCPAN/Document/Distribution.pm +++ b/lib/MetaCPAN/Document/Distribution.pm @@ -7,8 +7,7 @@ use namespace::autoclean; use Moose; use ElasticSearchX::Model::Document; -use MetaCPAN::Types qw(BugSummary); -use MooseX::Types::Moose qw(ArrayRef); +use MetaCPAN::Types qw( ArrayRef BugSummary ); has name => ( is => 'ro', diff --git a/lib/MetaCPAN/Document/File.pm b/lib/MetaCPAN/Document/File.pm index 8d5c2f181..983d3be9d 100644 --- a/lib/MetaCPAN/Document/File.pm +++ b/lib/MetaCPAN/Document/File.pm @@ -12,7 +12,6 @@ use List::AllUtils qw( any ); use MetaCPAN::Document::Module; use MetaCPAN::Types qw(:all); use MetaCPAN::Util; -use MooseX::Types::Moose qw(ArrayRef); use Plack::MIME; use Pod::Text; use Try::Tiny; diff --git a/lib/MetaCPAN/Document/Rating.pm b/lib/MetaCPAN/Document/Rating.pm index f30ac22e1..f182ff5cf 100644 --- a/lib/MetaCPAN/Document/Rating.pm +++ b/lib/MetaCPAN/Document/Rating.pm @@ -7,8 +7,8 @@ use Moose; use ElasticSearchX::Model::Document::Types qw(:all); use ElasticSearchX::Model::Document; -use MooseX::Types::Moose qw(Int Num Bool Str ArrayRef HashRef Undef); -use MooseX::Types::Structured qw(Dict Tuple Optional); +use MetaCPAN::Types qw( ArrayRef Bool Num Str ); +use MooseX::Types::Structured qw( Dict ); has details => ( is => 'ro', diff --git a/lib/MetaCPAN/Model/User/Account.pm b/lib/MetaCPAN/Model/User/Account.pm index 37158eee0..2a3040736 100644 --- a/lib/MetaCPAN/Model/User/Account.pm +++ b/lib/MetaCPAN/Model/User/Account.pm @@ -8,9 +8,8 @@ use ElasticSearchX::Model::Document; use MetaCPAN::Model::User::Identity; use MetaCPAN::Types qw(:all); -use MetaCPAN::Util; -use MooseX::Types::Moose qw(Str ArrayRef); use MooseX::Types::Structured qw(Dict); +use MetaCPAN::Util; =head1 PROPERTIES diff --git a/lib/MetaCPAN/Types/Internal.pm b/lib/MetaCPAN/Types/Internal.pm index 91281b035..75676b926 100644 --- a/lib/MetaCPAN/Types/Internal.pm +++ b/lib/MetaCPAN/Types/Internal.pm @@ -8,8 +8,8 @@ use ElasticSearchX::Model::Document::Types qw(:all); use JSON; use MooseX::Getopt::OptionTypeMap; use MooseX::Types::Common::String qw(NonEmptySimpleStr); -use MooseX::Types::Moose qw( ArrayRef Bool HashRef Item Int Num Str Undef ); -use MooseX::Types::Structured qw(Dict Tuple Optional); +use MooseX::Types::Moose qw( ArrayRef HashRef Item Int Str ); +use MooseX::Types::Structured qw(Dict Optional); use MooseX::Types -declare => [ qw( From 3869113e1e4a6b6cfcfc86659b45a22ddbc8514f Mon Sep 17 00:00:00 2001 From: Mickey Nasriachi Date: Tue, 19 Apr 2016 11:57:56 +0100 Subject: [PATCH 162/329] removed redundant `required => 0` --- lib/MetaCPAN/Document/Author.pm | 11 ++--------- lib/MetaCPAN/Document/File.pm | 7 +------ lib/MetaCPAN/Document/Module.pm | 1 - lib/MetaCPAN/Document/Release.pm | 3 --- lib/MetaCPAN/Model/User/Account.pm | 5 ++--- lib/MetaCPAN/Script/Tickets.pm | 1 - 6 files changed, 5 insertions(+), 23 deletions(-) diff --git a/lib/MetaCPAN/Document/Author.pm b/lib/MetaCPAN/Document/Author.pm index 8c21bf0f0..3995efada 100644 --- a/lib/MetaCPAN/Document/Author.pm +++ b/lib/MetaCPAN/Document/Author.pm @@ -26,7 +26,6 @@ has asciiname => ( required => 1, index => 'analyzed', isa => NonEmptySimpleStr, - required => 0, ); has [qw(website email)] => @@ -52,7 +51,6 @@ has profile => ( isa => Profile, coerce => 1, type => 'nested', - required => 0, include_in_root => 1, ); @@ -60,7 +58,6 @@ has blog => ( is => 'ro', isa => Blog, coerce => 1, - required => 0, dynamic => 1, ); @@ -68,34 +65,30 @@ has perlmongers => ( is => 'ro', isa => PerlMongers, coerce => 1, - required => 0, dynamic => 1, ); has donation => ( is => 'ro', isa => ArrayRef [ Dict [ name => NonEmptySimpleStr, id => Str ] ], - required => 0, dynamic => 1, ); has [qw(city region country)] => - ( is => 'ro', required => 0, isa => NonEmptySimpleStr ); + ( is => 'ro', isa => NonEmptySimpleStr ); -has location => ( is => 'ro', isa => Location, coerce => 1, required => 0 ); +has location => ( is => 'ro', isa => Location, coerce => 1 ); has extra => ( is => 'ro', isa => HashRef, source_only => 1, dynamic => 1, - required => 0, ); has updated => ( is => 'ro', isa => 'DateTime', - required => 0, ); sub _build_gravatar_url { diff --git a/lib/MetaCPAN/Document/File.pm b/lib/MetaCPAN/Document/File.pm index 983d3be9d..8fd7accd0 100644 --- a/lib/MetaCPAN/Document/File.pm +++ b/lib/MetaCPAN/Document/File.pm @@ -100,7 +100,6 @@ modules defined in that class (i.e. package declarations). =cut has module => ( - required => 0, is => 'rw', isa => Module, type => 'nested', @@ -512,7 +511,6 @@ C, C and C. has stat => ( is => 'ro', isa => Stat, - required => 0, dynamic => 1, ); @@ -523,8 +521,7 @@ Contains the raw version string. =cut has version => ( - is => 'ro', - required => 0, + is => 'ro', ); =head2 version_numified @@ -621,7 +618,6 @@ has content => ( lazy => 1, builder => '_build_content', property => 0, - required => 0, ); sub _build_content { @@ -641,7 +637,6 @@ Callback that returns the content of the file as a ScalarRef. has content_cb => ( is => 'ro', property => 0, - required => 0, default => sub { sub { \'' } }, diff --git a/lib/MetaCPAN/Document/Module.pm b/lib/MetaCPAN/Document/Module.pm index 5df9647f1..ccfabf9a8 100644 --- a/lib/MetaCPAN/Document/Module.pm +++ b/lib/MetaCPAN/Document/Module.pm @@ -86,7 +86,6 @@ has authorized => ( # REINDEX: make 'ro' once a full reindex has been done has associated_pod => ( isa => AssociatedPod, - required => 0, is => 'rw', ); diff --git a/lib/MetaCPAN/Document/Release.pm b/lib/MetaCPAN/Document/Release.pm index be2818555..57301f3ed 100644 --- a/lib/MetaCPAN/Document/Release.pm +++ b/lib/MetaCPAN/Document/Release.pm @@ -164,7 +164,6 @@ has abstract => ( ); has dependency => ( - required => 0, is => 'rw', isa => Dependency, coerce => 1, @@ -225,13 +224,11 @@ has metadata => ( has main_module => ( is => 'rw', isa => Str, - required => 0, ); has changes_file => ( is => 'rw', isa => Str, - required => 0, ); sub _build_version_numified { diff --git a/lib/MetaCPAN/Model/User/Account.pm b/lib/MetaCPAN/Model/User/Account.pm index 2a3040736..1308814c3 100644 --- a/lib/MetaCPAN/Model/User/Account.pm +++ b/lib/MetaCPAN/Model/User/Account.pm @@ -20,9 +20,8 @@ ID of user account. =cut has id => ( - id => 1, - required => 0, - is => 'rw', + id => 1, + is => 'rw', ); =head2 identity diff --git a/lib/MetaCPAN/Script/Tickets.pm b/lib/MetaCPAN/Script/Tickets.pm index bdde602ed..ae0c7818b 100644 --- a/lib/MetaCPAN/Script/Tickets.pm +++ b/lib/MetaCPAN/Script/Tickets.pm @@ -32,7 +32,6 @@ has github_issues => ( has github_token => ( is => 'ro', - required => 0, lazy => 1, builder => '_build_github_token', ); From 11e2ab3088ab3c00af01ddd136f328deaed67db2 Mon Sep 17 00:00:00 2001 From: Mickey Nasriachi Date: Tue, 19 Apr 2016 12:06:07 +0100 Subject: [PATCH 163/329] unused predicates --- lib/MetaCPAN/Role/Logger.pm | 1 - t/lib/MetaCPAN/Tests/Model.pm | 1 - 2 files changed, 2 deletions(-) diff --git a/lib/MetaCPAN/Role/Logger.pm b/lib/MetaCPAN/Role/Logger.pm index fae31c5fe..7d40a06ec 100644 --- a/lib/MetaCPAN/Role/Logger.pm +++ b/lib/MetaCPAN/Role/Logger.pm @@ -20,7 +20,6 @@ has logger => ( required => 1, isa => Logger, coerce => 1, - predicate => 'has_logger', traits => ['NoGetopt'], ); diff --git a/t/lib/MetaCPAN/Tests/Model.pm b/t/lib/MetaCPAN/Tests/Model.pm index 8ed13037d..4714a4c08 100644 --- a/t/lib/MetaCPAN/Tests/Model.pm +++ b/t/lib/MetaCPAN/Tests/Model.pm @@ -83,7 +83,6 @@ has data => ( has _expectations => ( is => 'ro', isa => HashRef, - predicate => 'has_expectations', init_arg => '_expect', ); From 815408831aab217e590fab1910ca8ca8aa09c268 Mon Sep 17 00:00:00 2001 From: Mickey Nasriachi Date: Tue, 19 Apr 2016 14:20:53 +0100 Subject: [PATCH 164/329] no rw attributes --- lib/Catalyst/Plugin/OAuth2/Provider.pm | 2 +- .../Plugin/Session/Store/ElasticSearch.pm | 8 ++--- lib/MetaCPAN/Document/Author.pm | 5 +++- lib/MetaCPAN/Document/Distribution.pm | 6 ++-- lib/MetaCPAN/Document/File.pm | 30 +++++++++++-------- lib/MetaCPAN/Document/Module.pm | 14 +++++---- lib/MetaCPAN/Document/Release.pm | 28 ++++++++++------- lib/MetaCPAN/Model/Archive.pm | 5 ++-- lib/MetaCPAN/Model/Release.pm | 28 ++++++++--------- lib/MetaCPAN/Model/User/Account.pm | 9 +++--- lib/MetaCPAN/Pod/Renderer.pm | 5 ++-- lib/MetaCPAN/Role/Fastly.pm | 6 ++-- lib/MetaCPAN/Script/Author.pm | 2 +- lib/MetaCPAN/Script/Check.pm | 11 +++---- lib/MetaCPAN/Script/First.pm | 2 +- lib/MetaCPAN/Script/Latest.pm | 2 +- lib/MetaCPAN/Script/Release.pm | 6 ++-- lib/MetaCPAN/Script/Tickets.pm | 2 +- .../Server/Controller/Login/OpenID.pm | 2 +- lib/MetaCPAN/Server/Controller/User/Turing.pm | 2 +- lib/MetaCPAN/Server/Diff.pm | 7 +++-- lib/MetaCPAN/Server/User.pm | 9 +++--- 22 files changed, 107 insertions(+), 84 deletions(-) diff --git a/lib/Catalyst/Plugin/OAuth2/Provider.pm b/lib/Catalyst/Plugin/OAuth2/Provider.pm index 79acfe3dd..b9c450943 100644 --- a/lib/Catalyst/Plugin/OAuth2/Provider.pm +++ b/lib/Catalyst/Plugin/OAuth2/Provider.pm @@ -64,7 +64,7 @@ sub authorize : Local { my $uri = URI->new($redirect_uri); my $code = $self->_build_code; $uri->query_form( { code => $code, $state ? ( state => $state ) : () } ); - $c->user->code($code); + $c->user->_set_code($code); $c->user->put( { refresh => 1 } ); $c->res->redirect($uri); } diff --git a/lib/Catalyst/Plugin/Session/Store/ElasticSearch.pm b/lib/Catalyst/Plugin/Session/Store/ElasticSearch.pm index 184b48ec0..0ccc266d0 100644 --- a/lib/Catalyst/Plugin/Session/Store/ElasticSearch.pm +++ b/lib/Catalyst/Plugin/Session/Store/ElasticSearch.pm @@ -9,19 +9,19 @@ use MooseX::Types::ElasticSearch qw(:all); has _session_es => ( required => 1, - is => 'rw', + is => 'ro', coerce => 1, isa => ES, default => sub { shift->_session_plugin_config->{servers} || ':9200' } ); has _session_es_index => ( required => 1, - is => 'rw', + is => 'ro', default => sub { shift->_session_plugin_config->{index} || 'user' } ); has _session_es_type => ( required => 1, - is => 'rw', + is => 'ro', default => sub { shift->_session_plugin_config->{type} || 'session' } ); @@ -85,7 +85,7 @@ sub delete_expired_sessions { } Session Session::Store::ElasticSearch ); - + # defaults MyApp->config( 'Plugin::Session' => { diff --git a/lib/MetaCPAN/Document/Author.pm b/lib/MetaCPAN/Document/Author.pm index 3995efada..85789a539 100644 --- a/lib/MetaCPAN/Document/Author.pm +++ b/lib/MetaCPAN/Document/Author.pm @@ -37,7 +37,10 @@ has pauseid => ( id => 1, ); -has user => ( is => 'rw' ); +has user => ( + is => 'ro', + writer => '_set_user', +); has gravatar_url => ( is => 'ro', diff --git a/lib/MetaCPAN/Document/Distribution.pm b/lib/MetaCPAN/Document/Distribution.pm index b4935d0cf..f638ff498 100644 --- a/lib/MetaCPAN/Document/Distribution.pm +++ b/lib/MetaCPAN/Document/Distribution.pm @@ -16,7 +16,7 @@ has name => ( ); has bugs => ( - is => 'rw', + is => 'ro', isa => BugSummary, dynamic => 1, ); @@ -33,7 +33,7 @@ sub set_first_release { my $release = $self->releases->sort( ["date"] )->first; return unless $release; return $release if $release->first; - $release->first(1); + $release->_set_first(1); $release->put; return $release; } @@ -44,7 +44,7 @@ sub unset_first_release { = $self->releases->filter( { term => { "release.first" => \1 }, } ) ->size(200)->scroll; while ( my $release = $releases->next ) { - $release->first(0); + $release->_set_first(0); $release->update; } $self->index->refresh if $releases->total; diff --git a/lib/MetaCPAN/Document/File.pm b/lib/MetaCPAN/Document/File.pm index 8fd7accd0..6eb7ab420 100644 --- a/lib/MetaCPAN/Document/File.pm +++ b/lib/MetaCPAN/Document/File.pm @@ -73,7 +73,7 @@ sub _build_abstract { $abstract = MetaCPAN::Util::strip_pod($abstract); } if ($documentation) { - $self->documentation( MetaCPAN::Util::strip_pod($documentation) ); + $self->_set_documentation( MetaCPAN::Util::strip_pod($documentation) ); } return $abstract; } @@ -100,12 +100,13 @@ modules defined in that class (i.e. package declarations). =cut has module => ( - is => 'rw', + is => 'ro', isa => Module, type => 'nested', include_in_root => 1, coerce => 1, clearer => 'clear_module', + writer => '_set_module', lazy => 1, default => sub { [] }, ); @@ -220,9 +221,10 @@ See L. has authorized => ( required => 1, - is => 'rw', + is => 'ro', isa => Bool, default => 1, + writer => '_set_authorized', ); =head2 maturity @@ -265,13 +267,14 @@ set to C. =cut has documentation => ( - is => 'rw', + is => 'ro', lazy => 1, builder => '_build_documentation', index => 'analyzed', predicate => 'has_documentation', analyzer => [qw(standard camelcase lowercase edge edge_camelcase)], clearer => 'clear_documentation', + writer => '_set_documentation', ); sub _build_documentation { @@ -309,7 +312,7 @@ not. See L for a more verbose explanation. has indexed => ( required => 1, - is => 'rw', + is => 'ro', isa => Bool, lazy => 1, default => sub { @@ -318,6 +321,7 @@ has indexed => ( return 0 if !$self->metadata->should_index_file( $self->path ); return 1; }, + writer => '_set_indexed', ); =head2 level @@ -712,7 +716,7 @@ sub add_module { my ( $self, @modules ) = @_; $_ = MetaCPAN::Document::Module->new($_) for ( grep { ref $_ eq 'HASH' } @modules ); - $self->module( [ @{ $self->module }, @modules ] ); + $self->_set_module( [ @{ $self->module }, @modules ] ); } =head2 is_in_other_files @@ -791,18 +795,18 @@ sub set_indexed { #files listed under 'other files' are not shown in a search if ( $self->is_in_other_files() ) { foreach my $mod ( @{ $self->module } ) { - $mod->indexed(0); + $mod->_set_indexed(0); } - $self->indexed(0); + $self->_set_indexed(0); return; } foreach my $mod ( @{ $self->module } ) { if ( $mod->name !~ /^[A-Za-z]/ ) { - $mod->indexed(0); + $mod->_set_indexed(0); next; } - $mod->indexed( + $mod->_set_indexed( $meta->should_index_package( $mod->name ) ? $mod->hide_from_pause( ${ $self->content }, $self->name ) ? 0 @@ -810,7 +814,7 @@ sub set_indexed { : 0 ) unless ( $mod->indexed ); } - $self->indexed( + $self->_set_indexed( # .pm file with no package declaration but pod should be indexed !@{ $self->module } || @@ -850,11 +854,11 @@ sub set_authorized { # only authorized perl distributions make it into the CPAN return () if ( $self->distribution eq 'perl' ); foreach my $module ( @{ $self->module } ) { - $module->authorized(0) + $module->_set_authorized(0) if ( $perms->{ $module->name } && !grep { $_ eq $self->author } @{ $perms->{ $module->name } } ); } - $self->authorized(0) + $self->_set_authorized(0) if ( $self->authorized && $self->documentation && $perms->{ $self->documentation } diff --git a/lib/MetaCPAN/Document/Module.pm b/lib/MetaCPAN/Document/Module.pm index ccfabf9a8..5ea712f21 100644 --- a/lib/MetaCPAN/Document/Module.pm +++ b/lib/MetaCPAN/Document/Module.pm @@ -70,23 +70,25 @@ has name => ( has version => ( is => 'ro' ); has indexed => ( - is => 'rw', + is => 'ro', required => 1, isa => Bool, default => 0, + writer => '_set_indexed', ); has authorized => ( - is => 'rw', + is => 'ro', required => 1, isa => Bool, default => 1, + writer => '_set_authorized', ); -# REINDEX: make 'ro' once a full reindex has been done has associated_pod => ( - isa => AssociatedPod, - is => 'rw', + isa => AssociatedPod, + is => 'ro', + writer => '_set_associated_pod', ); my $bom @@ -169,7 +171,7 @@ sub set_associated_pod { @$files #>>> ); - $self->associated_pod($pod); + $self->_set_associated_pod($pod); return $pod; } diff --git a/lib/MetaCPAN/Document/Release.pm b/lib/MetaCPAN/Document/Release.pm index 57301f3ed..f0429c2c8 100644 --- a/lib/MetaCPAN/Document/Release.pm +++ b/lib/MetaCPAN/Document/Release.pm @@ -103,8 +103,9 @@ This is an ArrayRef of modules that are included in this release. =cut has provides => ( - isa => ArrayRef [Str], - is => 'rw', + is => 'ro', + isa => ArrayRef [Str], + writer => '_set_provides', ); has id => ( @@ -158,13 +159,14 @@ has resources => ( ); has abstract => ( - is => 'rw', + is => 'ro', index => 'analyzed', predicate => 'has_abstract', + writer => '_set_abstract', ); has dependency => ( - is => 'rw', + is => 'ro', isa => Dependency, coerce => 1, type => 'nested', @@ -175,9 +177,10 @@ has dependency => ( # The indexer scripts will upgrade it to 'latest' if it's the version in # 02packages or downgrade it to 'backpan' if it gets deleted. has status => ( - is => 'rw', + is => 'ro', required => 1, default => 'cpan', + writer => '_set_status', ); has maturity => ( @@ -199,18 +202,19 @@ has tests => ( ); has authorized => ( - is => 'rw', + is => 'ro', required => 1, isa => Bool, default => 1, ); has first => ( - is => 'rw', + is => 'ro', required => 1, isa => Bool, lazy => 1, builder => '_build_first', + writer => '_set_first', ); has metadata => ( @@ -222,13 +226,15 @@ has metadata => ( ); has main_module => ( - is => 'rw', - isa => Str, + is => 'ro', + isa => Str, + writer => '_set_main_module', ); has changes_file => ( - is => 'rw', - isa => Str, + is => 'ro', + isa => Str, + writer => '_set_changes_file', ); sub _build_version_numified { diff --git a/lib/MetaCPAN/Model/Archive.pm b/lib/MetaCPAN/Model/Archive.pm index af74b209e..ef937e658 100644 --- a/lib/MetaCPAN/Model/Archive.pm +++ b/lib/MetaCPAN/Model/Archive.pm @@ -93,10 +93,11 @@ has extract_dir => ( ); has _has_extracted => ( - is => 'rw', + is => 'ro', isa => Bool, init_arg => undef, default => 0, + writer => '_set_has_extracted', ); =head1 METHODS @@ -142,7 +143,7 @@ sub extract { return $self->extract_dir if $self->_has_extracted; $self->_extractor->extract( $self->extract_dir ); - $self->_has_extracted(1); + $self->_set_has_extracted(1); return $self->extract_dir; } diff --git a/lib/MetaCPAN/Model/Release.pm b/lib/MetaCPAN/Model/Release.pm index d90621e6b..8ba438c1d 100644 --- a/lib/MetaCPAN/Model/Release.pm +++ b/lib/MetaCPAN/Model/Release.pm @@ -57,7 +57,7 @@ has document => ( ); has file => ( - is => 'rw', + is => 'ro', isa => AbsFile, required => 1, coerce => 1, @@ -72,7 +72,7 @@ has files => ( ); has date => ( - is => 'rw', + is => 'ro', isa => 'DateTime', lazy => 1, default => sub { @@ -81,10 +81,10 @@ has date => ( }, ); -has index => ( is => 'rw', ); +has index => ( is => 'ro' ); has metadata => ( - is => 'rw', + is => 'ro', isa => 'CPAN::Meta', lazy => 1, builder => '_build_metadata', @@ -106,7 +106,7 @@ has modules => ( ); has version => ( - is => 'rw', + is => 'ro', isa => Str, lazy => 1, default => sub { @@ -116,11 +116,11 @@ has version => ( ); has status => ( - is => 'rw', - isa => Str, + is => 'ro', + isa => Str, ); -has bulk => ( is => 'rw', ); +has bulk => ( is => 'ro' ); =head2 run @@ -132,8 +132,8 @@ probably a much cleaner way to do this. sub run { my $self = shift; $self->document; - $self->document->changes_file( $self->get_changes_file( $self->files ) ); - $self->_set_main_module( $self->modules, $self->document ); + $self->document->_set_changes_file( $self->get_changes_file( $self->files ) ); + $self->set_main_module( $self->modules, $self->document ); } sub _build_archive { @@ -227,7 +227,7 @@ sub _build_document { return $document; } -sub _set_main_module { +sub set_main_module { my $self = shift; my ( $mod, $release ) = @_; @@ -242,7 +242,7 @@ sub _set_main_module { if ( scalar @modules == 1 ) { # there is only one module and it will become the main_module - $release->main_module( $modules[0]->module->[0]->name ); + $release->_set_main_module( $modules[0]->module->[0]->name ); return; } @@ -250,7 +250,7 @@ sub _set_main_module { # the module has the exact name as the ditribution if ( $file->module->[0]->name eq $dist2module ) { - $release->main_module( $file->module->[0]->name ); + $release->_set_main_module( $file->module->[0]->name ); return; } } @@ -262,7 +262,7 @@ sub _set_main_module { $a->level <=> $b->level || length $a->module->[0]->name <=> length $b->module->[0]->name } @modules; - $release->main_module( $sorted_modules[0]->module->[0]->name ); + $release->_set_main_module( $sorted_modules[0]->module->[0]->name ); } diff --git a/lib/MetaCPAN/Model/User/Account.pm b/lib/MetaCPAN/Model/User/Account.pm index 1308814c3..a17fa8c8c 100644 --- a/lib/MetaCPAN/Model/User/Account.pm +++ b/lib/MetaCPAN/Model/User/Account.pm @@ -21,7 +21,7 @@ ID of user account. has id => ( id => 1, - is => 'rw', + is => 'ro', ); =head2 identity @@ -48,8 +48,9 @@ The code attribute is used temporarily when authenticating using OAuth. =cut has code => ( - is => 'rw', + is => 'ro', clearer => 'clear_token', + writer => '_set_code', ); =head2 access_token @@ -76,7 +77,7 @@ L when the user passed the captcha. =cut has passed_captcha => ( - is => 'rw', + is => 'ro', isa => 'DateTime', ); @@ -127,7 +128,7 @@ after add_identity => sub { $self->clear_looks_human; my $profile = $self->index->model->index('cpan')->type('author') ->get( $identity->{key} ); - $profile->user( $self->id ) if ($profile); + $profile->_set_user( $self->id ) if ($profile); $profile->put; } }; diff --git a/lib/MetaCPAN/Pod/Renderer.pm b/lib/MetaCPAN/Pod/Renderer.pm index 85f4b68c5..0e285b8b7 100644 --- a/lib/MetaCPAN/Pod/Renderer.pm +++ b/lib/MetaCPAN/Pod/Renderer.pm @@ -13,10 +13,11 @@ use Pod::POM::View::Pod; use Pod::Text; has perldoc_url_prefix => ( - is => 'rw', + is => 'ro', isa => Uri, coerce => 1, default => 'https://metacpan.org/pod/', + writer => '_set_perldoc_url_prefix', ); sub markdown_renderer { @@ -44,7 +45,7 @@ sub html_renderer { $parser->html_header(''); $parser->index(1); $parser->no_errata_section(1); - $parser->perldoc_url_prefix( $self->perldoc_url_prefix ); + $parser->_set_perldoc_url_prefix( $self->perldoc_url_prefix ); return $parser; } diff --git a/lib/MetaCPAN/Role/Fastly.pm b/lib/MetaCPAN/Role/Fastly.pm index 6a099a219..51576ac24 100644 --- a/lib/MetaCPAN/Role/Fastly.pm +++ b/lib/MetaCPAN/Role/Fastly.pm @@ -73,20 +73,20 @@ has _surrogate_keys_to_purge => ( # How long should the CDN cache, irrespective of # other cache headers has cdn_cache_ttl => ( - is => 'rw', + is => 'ro', isa => Int, default => 0, ); # Make sure the CDN NEVER caches, ignore any other cdn_cache_ttl settings has cdn_never_cache => ( - is => 'rw', + is => 'ro', isa => Bool, default => 0, ); has browser_max_age => ( - is => 'rw', + is => 'ro', isa => Maybe [Int], default => sub {undef}, ); diff --git a/lib/MetaCPAN/Script/Author.pm b/lib/MetaCPAN/Script/Author.pm index 364ae59a0..b98148dfe 100644 --- a/lib/MetaCPAN/Script/Author.pm +++ b/lib/MetaCPAN/Script/Author.pm @@ -23,7 +23,7 @@ Loads author info into db. Requires the presence of a local CPAN/minicpan. =cut has author_fh => ( - is => 'rw', + is => 'ro', traits => ['NoGetopt'], lazy => 1, default => sub { shift->cpan . '/authors/00whois.xml' }, diff --git a/lib/MetaCPAN/Script/Check.pm b/lib/MetaCPAN/Script/Check.pm index 69d179fdc..f17991f19 100644 --- a/lib/MetaCPAN/Script/Check.pm +++ b/lib/MetaCPAN/Script/Check.pm @@ -40,10 +40,11 @@ has errors_only => ( ); has error_count => ( - is => 'rw', + is => 'ro', isa => Int, default => 0, - traits => ['NoGetopt'] + traits => ['NoGetopt'], + writer => '_set_error_count', ); sub run { @@ -181,7 +182,7 @@ sub check_modules { " DATE : $rel->{fields}->{date}"; }; } - $self->error_count( $self->error_count + 1 ); + $self->_set_error_count( $self->error_count + 1 ); } } elsif (@files) { @@ -201,13 +202,13 @@ sub check_modules { }; log_warn {" DATE : $file->{fields}->{date}"}; } - $self->error_count( $self->error_count + 1 ); + $self->_set_error_count( $self->error_count + 1 ); } else { log_error { "Module $pkg [$dist] doesn't not appear in ElasticSearch!"; }; - $self->error_count( $self->error_count + 1 ); + $self->_set_error_count( $self->error_count + 1 ); } last if $self->module; } diff --git a/lib/MetaCPAN/Script/First.pm b/lib/MetaCPAN/Script/First.pm index fb59875ef..0dcc81bb1 100644 --- a/lib/MetaCPAN/Script/First.pm +++ b/lib/MetaCPAN/Script/First.pm @@ -10,7 +10,7 @@ use MetaCPAN::Types qw( Str ); with 'MetaCPAN::Role::Script', 'MooseX::Getopt'; has distribution => ( - is => 'rw', + is => 'ro', isa => Str, documentation => q{set the 'first' for only this distribution}, ); diff --git a/lib/MetaCPAN/Script/Latest.pm b/lib/MetaCPAN/Script/Latest.pm index 3a3749e2f..7ea85371c 100644 --- a/lib/MetaCPAN/Script/Latest.pm +++ b/lib/MetaCPAN/Script/Latest.pm @@ -195,7 +195,7 @@ sub reindex { } ); - $release->status($status); + $release->_set_status($status); log_info { $status eq 'latest' ? 'Upgrading ' : 'Downgrading ', 'release ', $release->name || q[]; diff --git a/lib/MetaCPAN/Script/Release.pm b/lib/MetaCPAN/Script/Release.pm index 20431a724..d535b670d 100644 --- a/lib/MetaCPAN/Script/Release.pm +++ b/lib/MetaCPAN/Script/Release.pm @@ -250,12 +250,12 @@ sub import_archive { $bulk->put($file); if ( !$document->has_abstract && $file->abstract ) { ( my $module = $document->distribution ) =~ s/-/::/g; - $document->abstract( $file->abstract ); + $document->_set_abstract( $file->abstract ); $document->put; } } if (@provides) { - $document->provides( [ sort @provides ] ); + $document->_set_provides( [ sort @provides ] ); $document->put; } $bulk->commit; @@ -267,7 +267,7 @@ sub import_archive { . " contains unauthorized modules: " . join( ",", map { $_->name } @release_unauthorized ); }; - $document->authorized(0); + $document->_set_authorized(0); $document->put; } diff --git a/lib/MetaCPAN/Script/Tickets.pm b/lib/MetaCPAN/Script/Tickets.pm index ae0c7818b..ba6bc4db5 100644 --- a/lib/MetaCPAN/Script/Tickets.pm +++ b/lib/MetaCPAN/Script/Tickets.pm @@ -103,7 +103,7 @@ sub index_bug_summary { for my $dist ( keys %$bugs ) { my $doc = $dists->get($dist); $doc ||= $dists->new_document( { name => $dist } ); - $doc->bugs( $bugs->{ $doc->name } ); + $doc->_set_bugs( $bugs->{ $doc->name } ); $bulk->put($doc); } $bulk->commit; diff --git a/lib/MetaCPAN/Server/Controller/Login/OpenID.pm b/lib/MetaCPAN/Server/Controller/Login/OpenID.pm index aff8175c6..266d54ba6 100644 --- a/lib/MetaCPAN/Server/Controller/Login/OpenID.pm +++ b/lib/MetaCPAN/Server/Controller/Login/OpenID.pm @@ -27,7 +27,7 @@ sub _build_ua { } has 'sreg' => ( - is => 'rw', + is => 'ro', isa => Str, default => 'http://openid.net/extensions/sreg/1.1', ); diff --git a/lib/MetaCPAN/Server/Controller/User/Turing.pm b/lib/MetaCPAN/Server/Controller/User/Turing.pm index 155458844..bc27ea29c 100644 --- a/lib/MetaCPAN/Server/Controller/User/Turing.pm +++ b/lib/MetaCPAN/Server/Controller/User/Turing.pm @@ -32,7 +32,7 @@ sub index_POST { ); if ( $result->{is_valid} ) { - $user->passed_captcha( DateTime->now ); + $user->_set_passed_captcha( DateTime->now ); $user->clear_looks_human; # rebuild $user->put( { refresh => 1 } ); $self->status_ok( $c, entity => $user->meta->get_data($user) ); diff --git a/lib/MetaCPAN/Server/Diff.pm b/lib/MetaCPAN/Server/Diff.pm index ba6203219..649acd469 100644 --- a/lib/MetaCPAN/Server/Diff.pm +++ b/lib/MetaCPAN/Server/Diff.pm @@ -31,7 +31,10 @@ has structured => ( builder => '_build_structured', ); -has numstat => ( is => 'rw' ); +has numstat => ( + is => 'ro', + writer => '_set_numstat', +); has relative => ( is => 'ro', @@ -60,7 +63,7 @@ sub _build_raw { \$raw ); ( my $stats = $raw ) =~ s/^([^\n]*\0).*$/$1/s; - $self->numstat($stats); + $self->_set_numstat($stats); $raw = substr( $raw, length($stats) ); return $raw; } diff --git a/lib/MetaCPAN/Server/User.pm b/lib/MetaCPAN/Server/User.pm index 4fe5b1903..152335323 100644 --- a/lib/MetaCPAN/Server/User.pm +++ b/lib/MetaCPAN/Server/User.pm @@ -8,8 +8,9 @@ use Moose; extends 'Catalyst::Authentication::User'; has obj => ( - is => 'rw', - isa => 'MetaCPAN::Model::User::Account', + is => 'ro', + isa => 'MetaCPAN::Model::User::Account', + writer => '_set_obj', ); sub get_object { shift->obj } @@ -23,13 +24,13 @@ sub for_session { sub from_session { my ( $self, $c, $id ) = @_; my $user = $c->model('User::Account')->get($id); - $self->obj($user) if ($user); + $self->_set_obj($user) if ($user); return $user ? $self : undef; } sub find_user { my ( $self, $auth ) = @_; - $self->obj( $auth->{user} ); + $self->_set_obj( $auth->{user} ); return $self; } From 8a913f39d9f954e62e4cd5505f9b51be45955bc1 Mon Sep 17 00:00:00 2001 From: Mickey Nasriachi Date: Thu, 21 Apr 2016 12:35:28 +0100 Subject: [PATCH 165/329] added missing module for test --- cpanfile.snapshot | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/cpanfile.snapshot b/cpanfile.snapshot index 4130f2959..01271b389 100644 --- a/cpanfile.snapshot +++ b/cpanfile.snapshot @@ -23,7 +23,7 @@ DISTRIBUTIONS requirements: Carp 0 ExtUtils::MakeMaker 0 - Mouse 0.40 + Moose 0 perl 5.006_002 strict 0 warnings 0 @@ -571,6 +571,13 @@ DISTRIBUTIONS perl 5.006 strict 0 warnings 0 + Carp-Always-0.13 + pathname: F/FE/FERREIRA/Carp-Always-0.13.tar.gz + provides: + Carp::Always 0.13 + requirements: + Carp 0 + ExtUtils::MakeMaker 0 Carp-Assert-0.21 pathname: N/NE/NEILB/Carp-Assert-0.21.tar.gz provides: @@ -2647,7 +2654,6 @@ DISTRIBUTIONS requirements: ExtUtils::MakeMaker 0 Mail::Address 0 - Net::DNS 0 Scalar::Util 0 Test::More 0 perl 5.006 From 6077bf3bbfacc91d87fc315c540dae47a78695cd Mon Sep 17 00:00:00 2001 From: Mickey Nasriachi Date: Thu, 21 Apr 2016 12:56:55 +0100 Subject: [PATCH 166/329] few more fixes for problems exposed by tests --- lib/MetaCPAN/Document/Author.pm | 2 +- lib/MetaCPAN/Document/Distribution.pm | 1 + lib/MetaCPAN/Document/Module.pm | 13 +++++++++++++ lib/MetaCPAN/Document/Release.pm | 1 + t/lib/MetaCPAN/Tests/Release.pm | 6 +++--- 5 files changed, 19 insertions(+), 4 deletions(-) diff --git a/lib/MetaCPAN/Document/Author.pm b/lib/MetaCPAN/Document/Author.pm index 85789a539..1047f0713 100644 --- a/lib/MetaCPAN/Document/Author.pm +++ b/lib/MetaCPAN/Document/Author.pm @@ -23,7 +23,7 @@ has name => ( has asciiname => ( is => 'ro', - required => 1, + required => 0, index => 'analyzed', isa => NonEmptySimpleStr, ); diff --git a/lib/MetaCPAN/Document/Distribution.pm b/lib/MetaCPAN/Document/Distribution.pm index f638ff498..cafd174f3 100644 --- a/lib/MetaCPAN/Document/Distribution.pm +++ b/lib/MetaCPAN/Document/Distribution.pm @@ -19,6 +19,7 @@ has bugs => ( is => 'ro', isa => BugSummary, dynamic => 1, + writer => '_set_bugs', ); sub releases { diff --git a/lib/MetaCPAN/Document/Module.pm b/lib/MetaCPAN/Document/Module.pm index 5ea712f21..358836605 100644 --- a/lib/MetaCPAN/Document/Module.pm +++ b/lib/MetaCPAN/Document/Module.pm @@ -91,6 +91,19 @@ has associated_pod => ( writer => '_set_associated_pod', ); +has version_numified => ( + is => 'ro', + isa => 'Num', + lazy_build => 1, + required => 1, +); + +sub _build_version_numified { + my $self = shift; + return 0 unless ( $self->version ); + return MetaCPAN::Util::numify_version( $self->version ); +} + my $bom = qr/(?:\x00\x00\xfe\xff|\xff\xfe\x00\x00|\xfe\xff|\xff\xfe|\xef\xbb\xbf)/; diff --git a/lib/MetaCPAN/Document/Release.pm b/lib/MetaCPAN/Document/Release.pm index f0429c2c8..fde0bcfd2 100644 --- a/lib/MetaCPAN/Document/Release.pm +++ b/lib/MetaCPAN/Document/Release.pm @@ -206,6 +206,7 @@ has authorized => ( required => 1, isa => Bool, default => 1, + writer => '_set_authorized', ); has first => ( diff --git a/t/lib/MetaCPAN/Tests/Release.pm b/t/lib/MetaCPAN/Tests/Release.pm index 0598cdc78..7c6d6ce2b 100644 --- a/t/lib/MetaCPAN/Tests/Release.pm +++ b/t/lib/MetaCPAN/Tests/Release.pm @@ -107,7 +107,7 @@ has module_files => ( sub _build_module_files { my ($self) = @_; return $self->filter_files( - [ { exists => { field => 'file.module.name' } }, ] ); + [ { exists => { field => 'module.name' } }, ] ); } sub filter_files { @@ -121,8 +121,8 @@ sub filter_files { $self->index->type('file')->filter( { and => [ - { term => { 'file.author' => $release->author } }, - { term => { 'file.release' => $release->name } }, + { term => { 'author' => $release->author } }, + { term => { 'release' => $release->name } }, @{ $add_filters || [] }, ], } From 86543a485abb9b0a72feb027331099c5b018bb7f Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Thu, 21 Apr 2016 13:00:24 +0100 Subject: [PATCH 167/329] Default prove wrapper to use test ES port. --- bin/prove | 1 + 1 file changed, 1 insertion(+) diff --git a/bin/prove b/bin/prove index d50129d93..9385f6492 100755 --- a/bin/prove +++ b/bin/prove @@ -1,3 +1,4 @@ #!/bin/sh +export ES=localhost:9900 `dirname "$0"`/run prove -It/lib -lv "$@" From 4c18905e0c2cbe570547030e75e5437ebb6790f9 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Thu, 21 Apr 2016 13:05:09 +0100 Subject: [PATCH 168/329] Adds setup method to TestServer.pm --- t/darkpan.t | 1 + t/fakecpan.t | 6 +++--- t/lib/MetaCPAN/TestServer.pm | 11 ++++++++--- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/t/darkpan.t b/t/darkpan.t index e39f4d0aa..6022e523d 100644 --- a/t/darkpan.t +++ b/t/darkpan.t @@ -12,6 +12,7 @@ use Test::RequiresInternet ( 'cpan.metacpan.org' => 80 ); my $darkpan = MetaCPAN::DarkPAN->new; my $server = MetaCPAN::TestServer->new( cpan_dir => $darkpan->base_dir ); +$server->setup; # create DarkPAN $darkpan->run; diff --git a/t/fakecpan.t b/t/fakecpan.t index 22e4b68cf..bb636c34b 100644 --- a/t/fakecpan.t +++ b/t/fakecpan.t @@ -22,11 +22,11 @@ use Path::Class qw(dir file); BEGIN { $ENV{EMAIL_SENDER_TRANSPORT} = 'Test' } my $server = MetaCPAN::TestServer->new; +$server->setup; + my $config = get_config(); $config->{es} = $server->es_client; -$server->put_mappings; - foreach my $test_dir ( $config->{cpan}, $config->{source_base} ) { next unless $test_dir; my $dir = dir($test_dir); @@ -80,7 +80,7 @@ $server->index_authors; ok( MetaCPAN::Script::Tickets->new_with_options( { - %$config, + %{$config}, rt_summary_url => 'file://' . file( $config->{cpan}, 'bugs.tsv' )->absolute, github_issues => 'file://' diff --git a/t/lib/MetaCPAN/TestServer.pm b/t/lib/MetaCPAN/TestServer.pm index b852ef591..d39911bfd 100644 --- a/t/lib/MetaCPAN/TestServer.pm +++ b/t/lib/MetaCPAN/TestServer.pm @@ -1,7 +1,6 @@ package MetaCPAN::TestServer; -use strict; -use warnings; +use Moose; use CPAN::Repository::Perms; use MetaCPAN::Script::Author; @@ -10,7 +9,6 @@ use MetaCPAN::Script::Mapping; use MetaCPAN::Script::Release; use MetaCPAN::TestHelpers qw( get_config ); use MetaCPAN::Types qw( Dir HashRef Str ); -use Moose; use Search::Elasticsearch; use Search::Elasticsearch::TestServer; use Test::More; @@ -52,6 +50,13 @@ has _cpan_dir => ( default => 't/var/tmp/fakecpan', ); +sub setup { + my $self = shift; + + $self->es_client; + $self->put_mappings; +} + sub _build_config { my $self = shift; From 809227fd88e2f6ec81cc7e30c09b0328fd2b45a9 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Thu, 21 Apr 2016 14:57:26 +0100 Subject: [PATCH 169/329] Updates cpanfile.snapshot --- cpanfile.snapshot | 1448 +++++++++++++++++++++------------------------ 1 file changed, 671 insertions(+), 777 deletions(-) diff --git a/cpanfile.snapshot b/cpanfile.snapshot index 01271b389..373806cfa 100644 --- a/cpanfile.snapshot +++ b/cpanfile.snapshot @@ -571,13 +571,6 @@ DISTRIBUTIONS perl 5.006 strict 0 warnings 0 - Carp-Always-0.13 - pathname: F/FE/FERREIRA/Carp-Always-0.13.tar.gz - provides: - Carp::Always 0.13 - requirements: - Carp 0 - ExtUtils::MakeMaker 0 Carp-Assert-0.21 pathname: N/NE/NEILB/Carp-Assert-0.21.tar.gz provides: @@ -639,30 +632,11 @@ DISTRIBUTIONS Catalyst::Action::Serialize::YAML 1.20 Catalyst::Action::Serialize::YAML::HTML 1.20 Catalyst::Action::SerializeBase 1.20 - Catalyst::Action::Serializer::Broken undef Catalyst::Controller::REST 1.20 Catalyst::Request::REST 1.20 Catalyst::Request::REST::ForBrowsers 1.20 Catalyst::TraitFor::Request::REST 1.20 Catalyst::TraitFor::Request::REST::ForBrowsers 1.20 - Test::Action::Class undef - Test::Action::Class::Sub undef - Test::Catalyst::Action::REST undef - Test::Catalyst::Action::REST::Controller::Actions undef - Test::Catalyst::Action::REST::Controller::ActionsForBrowsers undef - Test::Catalyst::Action::REST::Controller::Deserialize undef - Test::Catalyst::Action::REST::Controller::DeserializeMultiPart undef - Test::Catalyst::Action::REST::Controller::Override undef - Test::Catalyst::Action::REST::Controller::REST undef - Test::Catalyst::Action::REST::Controller::Root undef - Test::Catalyst::Action::REST::Controller::Serialize undef - Test::Catalyst::Log undef - Test::Rest undef - Test::Serialize undef - Test::Serialize::Controller::JSON undef - Test::Serialize::Controller::REST undef - Test::Serialize::View::Awful undef - Test::Serialize::View::Simple undef requirements: Catalyst::Runtime 5.80030 Class::Inspector 1.13 @@ -830,7 +804,7 @@ DISTRIBUTIONS Catalyst::ScriptRole undef Catalyst::ScriptRunner undef Catalyst::Stats undef - Catalyst::Test 3.4 + Catalyst::Test undef Catalyst::Utils undef Catalyst::View undef requirements: @@ -931,7 +905,6 @@ DISTRIBUTIONS pathname: R/RO/ROKR/CatalystX-InjectComponent-0.025.tar.gz provides: CatalystX::InjectComponent 0.025 - t::Test::Apple undef requirements: Catalyst::Runtime 5.8 Class::Inspector 0 @@ -987,10 +960,10 @@ DISTRIBUTIONS Class::Accessor::Lite 0.08 requirements: ExtUtils::MakeMaker 6.36 - Class-C3-0.30 - pathname: H/HA/HAARG/Class-C3-0.30.tar.gz + Class-C3-0.31 + pathname: H/HA/HAARG/Class-C3-0.31.tar.gz provides: - Class::C3 0.30 + Class::C3 0.31 requirements: Algorithm::C3 0.07 ExtUtils::MakeMaker 0 @@ -1096,6 +1069,7 @@ DISTRIBUTIONS pathname: D/DA/DAGOLDEN/Class-Tiny-1.004.tar.gz provides: Class::Tiny 1.004 + Class::Tiny::Object 1.004 requirements: Carp 0 ExtUtils::MakeMaker 6.17 @@ -1131,38 +1105,38 @@ DISTRIBUTIONS strict 0 vars 0 warnings 0 - Code-TidyAll-0.45 - pathname: D/DR/DROLSKY/Code-TidyAll-0.45.tar.gz - provides: - Code::TidyAll 0.45 - Code::TidyAll::Cache 0.45 - Code::TidyAll::CacheModel 0.45 - Code::TidyAll::CacheModel::Shared 0.45 - Code::TidyAll::Config::INI::Reader 0.45 - Code::TidyAll::Git::Precommit 0.45 - Code::TidyAll::Git::Prereceive 0.45 - Code::TidyAll::Git::Util 0.45 - Code::TidyAll::Plugin 0.45 - Code::TidyAll::Plugin::CSSUnminifier 0.45 - Code::TidyAll::Plugin::JSBeautify 0.45 - Code::TidyAll::Plugin::JSHint 0.45 - Code::TidyAll::Plugin::JSLint 0.45 - Code::TidyAll::Plugin::JSON 0.45 - Code::TidyAll::Plugin::MasonTidy 0.45 - Code::TidyAll::Plugin::PHPCodeSniffer 0.45 - Code::TidyAll::Plugin::PerlCritic 0.45 - Code::TidyAll::Plugin::PerlTidy 0.45 - Code::TidyAll::Plugin::PerlTidySweet 0.45 - Code::TidyAll::Plugin::PodChecker 0.45 - Code::TidyAll::Plugin::PodSpell 0.45 - Code::TidyAll::Plugin::PodTidy 0.45 - Code::TidyAll::Plugin::SortLines 0.45 - Code::TidyAll::Result 0.45 - Code::TidyAll::Role::Tempdir 0.45 - Code::TidyAll::SVN::Precommit 0.45 - Code::TidyAll::SVN::Util 0.45 - Code::TidyAll::Util::Zglob 0.45 - Test::Code::TidyAll 0.45 + Code-TidyAll-0.46 + pathname: D/DR/DROLSKY/Code-TidyAll-0.46.tar.gz + provides: + Code::TidyAll 0.46 + Code::TidyAll::Cache 0.46 + Code::TidyAll::CacheModel 0.46 + Code::TidyAll::CacheModel::Shared 0.46 + Code::TidyAll::Config::INI::Reader 0.46 + Code::TidyAll::Git::Precommit 0.46 + Code::TidyAll::Git::Prereceive 0.46 + Code::TidyAll::Git::Util 0.46 + Code::TidyAll::Plugin 0.46 + Code::TidyAll::Plugin::CSSUnminifier 0.46 + Code::TidyAll::Plugin::JSBeautify 0.46 + Code::TidyAll::Plugin::JSHint 0.46 + Code::TidyAll::Plugin::JSLint 0.46 + Code::TidyAll::Plugin::JSON 0.46 + Code::TidyAll::Plugin::MasonTidy 0.46 + Code::TidyAll::Plugin::PHPCodeSniffer 0.46 + Code::TidyAll::Plugin::PerlCritic 0.46 + Code::TidyAll::Plugin::PerlTidy 0.46 + Code::TidyAll::Plugin::PerlTidySweet 0.46 + Code::TidyAll::Plugin::PodChecker 0.46 + Code::TidyAll::Plugin::PodSpell 0.46 + Code::TidyAll::Plugin::PodTidy 0.46 + Code::TidyAll::Plugin::SortLines 0.46 + Code::TidyAll::Result 0.46 + Code::TidyAll::Role::Tempdir 0.46 + Code::TidyAll::SVN::Precommit 0.46 + Code::TidyAll::SVN::Util 0.46 + Code::TidyAll::Util::Zglob 0.46 + Test::Code::TidyAll 0.46 requirements: Capture::Tiny 0 Config::INI::Reader 0 @@ -1191,7 +1165,7 @@ DISTRIBUTIONS Moo::Role 0 Scalar::Util 0 Test::Builder 0 - Text::Diff 0 + Text::Diff 1.44 Text::Diff::Table 0 Text::ParseWords 0 Time::Duration::Parse 0 @@ -1231,10 +1205,10 @@ DISTRIBUTIONS Module::Pluggable::Object 3.6 Test::More 0 perl 5.006 - Config-General-2.60 - pathname: T/TL/TLINDEN/Config-General-2.60.tar.gz + Config-General-2.61 + pathname: T/TL/TLINDEN/Config-General-2.61.tar.gz provides: - Config::General 2.60 + Config::General 2.61 Config::General::Extended 2.07 Config::General::Interpolated 2.15 requirements: @@ -1262,8 +1236,6 @@ DISTRIBUTIONS Config::JFDI 0.065 Config::JFDI::Carp undef Config::JFDI::Source::Loader undef - eq 0.065 - t::Test undef requirements: Any::Moose 0 Carp::Clan::Share 0 @@ -1355,8 +1327,8 @@ DISTRIBUTIONS DBD-Pg-3.5.3 pathname: T/TU/TURNSTEP/DBD-Pg-3.5.3.tar.gz provides: - Bundle::DBD::Pg 3.005003 - DBD::Pg 3.005003 + Bundle::DBD::Pg v3.5.3 + DBD::Pg v3.5.3 requirements: DBI 1.614 ExtUtils::MakeMaker 6.11 @@ -1712,23 +1684,7 @@ DISTRIBUTIONS Data-Section-0.200006 pathname: R/RJ/RJBS/Data-Section-0.200006.tar.gz provides: - Child undef Data::Section 0.200006 - End undef - Godfather undef - Grandchild undef - Header undef - I::Child undef - I::Grandchild undef - I::Parent undef - Latin1 undef - NoData undef - NoName undef - Parent undef - Relaxed undef - Unicode_nopragma undef - Unicode_pragma undef - WindowsNewlines undef requirements: Encode 0 ExtUtils::MakeMaker 6.30 @@ -1762,6 +1718,8 @@ DISTRIBUTIONS DateTime::Duration 1.26 DateTime::Helpers 1.26 DateTime::Infinite 1.26 + DateTime::Infinite::Future 1.26 + DateTime::Infinite::Past 1.26 DateTime::LeapSecond 1.26 DateTime::PP 1.26 DateTime::PPExtra 1.26 @@ -1841,7 +1799,7 @@ DISTRIBUTIONS DateTime-Format-RFC3339-v1.2.0 pathname: I/IK/IKEGAMI/DateTime-Format-RFC3339-v1.2.0.tar.gz provides: - DateTime::Format::RFC3339 undef + DateTime::Format::RFC3339 1.002000 requirements: ExtUtils::MakeMaker 6.52 DateTime-Format-Strptime-1.67 @@ -1880,373 +1838,375 @@ DISTRIBUTIONS perl 5.008001 strict 0 warnings 0 - DateTime-TimeZone-1.97 - pathname: D/DR/DROLSKY/DateTime-TimeZone-1.97.tar.gz - provides: - DateTime::TimeZone 1.97 - DateTime::TimeZone::Africa::Abidjan 1.97 - DateTime::TimeZone::Africa::Accra 1.97 - DateTime::TimeZone::Africa::Algiers 1.97 - DateTime::TimeZone::Africa::Bissau 1.97 - DateTime::TimeZone::Africa::Cairo 1.97 - DateTime::TimeZone::Africa::Casablanca 1.97 - DateTime::TimeZone::Africa::Ceuta 1.97 - DateTime::TimeZone::Africa::El_Aaiun 1.97 - DateTime::TimeZone::Africa::Johannesburg 1.97 - DateTime::TimeZone::Africa::Khartoum 1.97 - DateTime::TimeZone::Africa::Lagos 1.97 - DateTime::TimeZone::Africa::Maputo 1.97 - DateTime::TimeZone::Africa::Monrovia 1.97 - DateTime::TimeZone::Africa::Nairobi 1.97 - DateTime::TimeZone::Africa::Ndjamena 1.97 - DateTime::TimeZone::Africa::Tripoli 1.97 - DateTime::TimeZone::Africa::Tunis 1.97 - DateTime::TimeZone::Africa::Windhoek 1.97 - DateTime::TimeZone::America::Adak 1.97 - DateTime::TimeZone::America::Anchorage 1.97 - DateTime::TimeZone::America::Araguaina 1.97 - DateTime::TimeZone::America::Argentina::Buenos_Aires 1.97 - DateTime::TimeZone::America::Argentina::Catamarca 1.97 - DateTime::TimeZone::America::Argentina::Cordoba 1.97 - DateTime::TimeZone::America::Argentina::Jujuy 1.97 - DateTime::TimeZone::America::Argentina::La_Rioja 1.97 - DateTime::TimeZone::America::Argentina::Mendoza 1.97 - DateTime::TimeZone::America::Argentina::Rio_Gallegos 1.97 - DateTime::TimeZone::America::Argentina::Salta 1.97 - DateTime::TimeZone::America::Argentina::San_Juan 1.97 - DateTime::TimeZone::America::Argentina::San_Luis 1.97 - DateTime::TimeZone::America::Argentina::Tucuman 1.97 - DateTime::TimeZone::America::Argentina::Ushuaia 1.97 - DateTime::TimeZone::America::Asuncion 1.97 - DateTime::TimeZone::America::Atikokan 1.97 - DateTime::TimeZone::America::Bahia 1.97 - DateTime::TimeZone::America::Bahia_Banderas 1.97 - DateTime::TimeZone::America::Barbados 1.97 - DateTime::TimeZone::America::Belem 1.97 - DateTime::TimeZone::America::Belize 1.97 - DateTime::TimeZone::America::Blanc_Sablon 1.97 - DateTime::TimeZone::America::Boa_Vista 1.97 - DateTime::TimeZone::America::Bogota 1.97 - DateTime::TimeZone::America::Boise 1.97 - DateTime::TimeZone::America::Cambridge_Bay 1.97 - DateTime::TimeZone::America::Campo_Grande 1.97 - DateTime::TimeZone::America::Cancun 1.97 - DateTime::TimeZone::America::Caracas 1.97 - DateTime::TimeZone::America::Cayenne 1.97 - DateTime::TimeZone::America::Chicago 1.97 - DateTime::TimeZone::America::Chihuahua 1.97 - DateTime::TimeZone::America::Costa_Rica 1.97 - DateTime::TimeZone::America::Creston 1.97 - DateTime::TimeZone::America::Cuiaba 1.97 - DateTime::TimeZone::America::Curacao 1.97 - DateTime::TimeZone::America::Danmarkshavn 1.97 - DateTime::TimeZone::America::Dawson 1.97 - DateTime::TimeZone::America::Dawson_Creek 1.97 - DateTime::TimeZone::America::Denver 1.97 - DateTime::TimeZone::America::Detroit 1.97 - DateTime::TimeZone::America::Edmonton 1.97 - DateTime::TimeZone::America::Eirunepe 1.97 - DateTime::TimeZone::America::El_Salvador 1.97 - DateTime::TimeZone::America::Fort_Nelson 1.97 - DateTime::TimeZone::America::Fortaleza 1.97 - DateTime::TimeZone::America::Glace_Bay 1.97 - DateTime::TimeZone::America::Godthab 1.97 - DateTime::TimeZone::America::Goose_Bay 1.97 - DateTime::TimeZone::America::Grand_Turk 1.97 - DateTime::TimeZone::America::Guatemala 1.97 - DateTime::TimeZone::America::Guayaquil 1.97 - DateTime::TimeZone::America::Guyana 1.97 - DateTime::TimeZone::America::Halifax 1.97 - DateTime::TimeZone::America::Havana 1.97 - DateTime::TimeZone::America::Hermosillo 1.97 - DateTime::TimeZone::America::Indiana::Indianapolis 1.97 - DateTime::TimeZone::America::Indiana::Knox 1.97 - DateTime::TimeZone::America::Indiana::Marengo 1.97 - DateTime::TimeZone::America::Indiana::Petersburg 1.97 - DateTime::TimeZone::America::Indiana::Tell_City 1.97 - DateTime::TimeZone::America::Indiana::Vevay 1.97 - DateTime::TimeZone::America::Indiana::Vincennes 1.97 - DateTime::TimeZone::America::Indiana::Winamac 1.97 - DateTime::TimeZone::America::Inuvik 1.97 - DateTime::TimeZone::America::Iqaluit 1.97 - DateTime::TimeZone::America::Jamaica 1.97 - DateTime::TimeZone::America::Juneau 1.97 - DateTime::TimeZone::America::Kentucky::Louisville 1.97 - DateTime::TimeZone::America::Kentucky::Monticello 1.97 - DateTime::TimeZone::America::La_Paz 1.97 - DateTime::TimeZone::America::Lima 1.97 - DateTime::TimeZone::America::Los_Angeles 1.97 - DateTime::TimeZone::America::Maceio 1.97 - DateTime::TimeZone::America::Managua 1.97 - DateTime::TimeZone::America::Manaus 1.97 - DateTime::TimeZone::America::Martinique 1.97 - DateTime::TimeZone::America::Matamoros 1.97 - DateTime::TimeZone::America::Mazatlan 1.97 - DateTime::TimeZone::America::Menominee 1.97 - DateTime::TimeZone::America::Merida 1.97 - DateTime::TimeZone::America::Metlakatla 1.97 - DateTime::TimeZone::America::Mexico_City 1.97 - DateTime::TimeZone::America::Miquelon 1.97 - DateTime::TimeZone::America::Moncton 1.97 - DateTime::TimeZone::America::Monterrey 1.97 - DateTime::TimeZone::America::Montevideo 1.97 - DateTime::TimeZone::America::Nassau 1.97 - DateTime::TimeZone::America::New_York 1.97 - DateTime::TimeZone::America::Nipigon 1.97 - DateTime::TimeZone::America::Nome 1.97 - DateTime::TimeZone::America::Noronha 1.97 - DateTime::TimeZone::America::North_Dakota::Beulah 1.97 - DateTime::TimeZone::America::North_Dakota::Center 1.97 - DateTime::TimeZone::America::North_Dakota::New_Salem 1.97 - DateTime::TimeZone::America::Ojinaga 1.97 - DateTime::TimeZone::America::Panama 1.97 - DateTime::TimeZone::America::Pangnirtung 1.97 - DateTime::TimeZone::America::Paramaribo 1.97 - DateTime::TimeZone::America::Phoenix 1.97 - DateTime::TimeZone::America::Port_au_Prince 1.97 - DateTime::TimeZone::America::Port_of_Spain 1.97 - DateTime::TimeZone::America::Porto_Velho 1.97 - DateTime::TimeZone::America::Puerto_Rico 1.97 - DateTime::TimeZone::America::Rainy_River 1.97 - DateTime::TimeZone::America::Rankin_Inlet 1.97 - DateTime::TimeZone::America::Recife 1.97 - DateTime::TimeZone::America::Regina 1.97 - DateTime::TimeZone::America::Resolute 1.97 - DateTime::TimeZone::America::Rio_Branco 1.97 - DateTime::TimeZone::America::Santarem 1.97 - DateTime::TimeZone::America::Santiago 1.97 - DateTime::TimeZone::America::Santo_Domingo 1.97 - DateTime::TimeZone::America::Sao_Paulo 1.97 - DateTime::TimeZone::America::Scoresbysund 1.97 - DateTime::TimeZone::America::Sitka 1.97 - DateTime::TimeZone::America::St_Johns 1.97 - DateTime::TimeZone::America::Swift_Current 1.97 - DateTime::TimeZone::America::Tegucigalpa 1.97 - DateTime::TimeZone::America::Thule 1.97 - DateTime::TimeZone::America::Thunder_Bay 1.97 - DateTime::TimeZone::America::Tijuana 1.97 - DateTime::TimeZone::America::Toronto 1.97 - DateTime::TimeZone::America::Vancouver 1.97 - DateTime::TimeZone::America::Whitehorse 1.97 - DateTime::TimeZone::America::Winnipeg 1.97 - DateTime::TimeZone::America::Yakutat 1.97 - DateTime::TimeZone::America::Yellowknife 1.97 - DateTime::TimeZone::Antarctica::Casey 1.97 - DateTime::TimeZone::Antarctica::Davis 1.97 - DateTime::TimeZone::Antarctica::DumontDUrville 1.97 - DateTime::TimeZone::Antarctica::Macquarie 1.97 - DateTime::TimeZone::Antarctica::Mawson 1.97 - DateTime::TimeZone::Antarctica::Palmer 1.97 - DateTime::TimeZone::Antarctica::Rothera 1.97 - DateTime::TimeZone::Antarctica::Syowa 1.97 - DateTime::TimeZone::Antarctica::Troll 1.97 - DateTime::TimeZone::Antarctica::Vostok 1.97 - DateTime::TimeZone::Asia::Almaty 1.97 - DateTime::TimeZone::Asia::Amman 1.97 - DateTime::TimeZone::Asia::Anadyr 1.97 - DateTime::TimeZone::Asia::Aqtau 1.97 - DateTime::TimeZone::Asia::Aqtobe 1.97 - DateTime::TimeZone::Asia::Ashgabat 1.97 - DateTime::TimeZone::Asia::Baghdad 1.97 - DateTime::TimeZone::Asia::Baku 1.97 - DateTime::TimeZone::Asia::Bangkok 1.97 - DateTime::TimeZone::Asia::Barnaul 1.97 - DateTime::TimeZone::Asia::Beirut 1.97 - DateTime::TimeZone::Asia::Bishkek 1.97 - DateTime::TimeZone::Asia::Brunei 1.97 - DateTime::TimeZone::Asia::Chita 1.97 - DateTime::TimeZone::Asia::Choibalsan 1.97 - DateTime::TimeZone::Asia::Colombo 1.97 - DateTime::TimeZone::Asia::Damascus 1.97 - DateTime::TimeZone::Asia::Dhaka 1.97 - DateTime::TimeZone::Asia::Dili 1.97 - DateTime::TimeZone::Asia::Dubai 1.97 - DateTime::TimeZone::Asia::Dushanbe 1.97 - DateTime::TimeZone::Asia::Gaza 1.97 - DateTime::TimeZone::Asia::Hebron 1.97 - DateTime::TimeZone::Asia::Ho_Chi_Minh 1.97 - DateTime::TimeZone::Asia::Hong_Kong 1.97 - DateTime::TimeZone::Asia::Hovd 1.97 - DateTime::TimeZone::Asia::Irkutsk 1.97 - DateTime::TimeZone::Asia::Jakarta 1.97 - DateTime::TimeZone::Asia::Jayapura 1.97 - DateTime::TimeZone::Asia::Jerusalem 1.97 - DateTime::TimeZone::Asia::Kabul 1.97 - DateTime::TimeZone::Asia::Kamchatka 1.97 - DateTime::TimeZone::Asia::Karachi 1.97 - DateTime::TimeZone::Asia::Kathmandu 1.97 - DateTime::TimeZone::Asia::Khandyga 1.97 - DateTime::TimeZone::Asia::Kolkata 1.97 - DateTime::TimeZone::Asia::Krasnoyarsk 1.97 - DateTime::TimeZone::Asia::Kuala_Lumpur 1.97 - DateTime::TimeZone::Asia::Kuching 1.97 - DateTime::TimeZone::Asia::Macau 1.97 - DateTime::TimeZone::Asia::Magadan 1.97 - DateTime::TimeZone::Asia::Makassar 1.97 - DateTime::TimeZone::Asia::Manila 1.97 - DateTime::TimeZone::Asia::Nicosia 1.97 - DateTime::TimeZone::Asia::Novokuznetsk 1.97 - DateTime::TimeZone::Asia::Novosibirsk 1.97 - DateTime::TimeZone::Asia::Omsk 1.97 - DateTime::TimeZone::Asia::Oral 1.97 - DateTime::TimeZone::Asia::Pontianak 1.97 - DateTime::TimeZone::Asia::Pyongyang 1.97 - DateTime::TimeZone::Asia::Qatar 1.97 - DateTime::TimeZone::Asia::Qyzylorda 1.97 - DateTime::TimeZone::Asia::Rangoon 1.97 - DateTime::TimeZone::Asia::Riyadh 1.97 - DateTime::TimeZone::Asia::Sakhalin 1.97 - DateTime::TimeZone::Asia::Samarkand 1.97 - DateTime::TimeZone::Asia::Seoul 1.97 - DateTime::TimeZone::Asia::Shanghai 1.97 - DateTime::TimeZone::Asia::Singapore 1.97 - DateTime::TimeZone::Asia::Srednekolymsk 1.97 - DateTime::TimeZone::Asia::Taipei 1.97 - DateTime::TimeZone::Asia::Tashkent 1.97 - DateTime::TimeZone::Asia::Tbilisi 1.97 - DateTime::TimeZone::Asia::Tehran 1.97 - DateTime::TimeZone::Asia::Thimphu 1.97 - DateTime::TimeZone::Asia::Tokyo 1.97 - DateTime::TimeZone::Asia::Ulaanbaatar 1.97 - DateTime::TimeZone::Asia::Urumqi 1.97 - DateTime::TimeZone::Asia::Ust_Nera 1.97 - DateTime::TimeZone::Asia::Vladivostok 1.97 - DateTime::TimeZone::Asia::Yakutsk 1.97 - DateTime::TimeZone::Asia::Yekaterinburg 1.97 - DateTime::TimeZone::Asia::Yerevan 1.97 - DateTime::TimeZone::Atlantic::Azores 1.97 - DateTime::TimeZone::Atlantic::Bermuda 1.97 - DateTime::TimeZone::Atlantic::Canary 1.97 - DateTime::TimeZone::Atlantic::Cape_Verde 1.97 - DateTime::TimeZone::Atlantic::Faroe 1.97 - DateTime::TimeZone::Atlantic::Madeira 1.97 - DateTime::TimeZone::Atlantic::Reykjavik 1.97 - DateTime::TimeZone::Atlantic::South_Georgia 1.97 - DateTime::TimeZone::Atlantic::Stanley 1.97 - DateTime::TimeZone::Australia::Adelaide 1.97 - DateTime::TimeZone::Australia::Brisbane 1.97 - DateTime::TimeZone::Australia::Broken_Hill 1.97 - DateTime::TimeZone::Australia::Currie 1.97 - DateTime::TimeZone::Australia::Darwin 1.97 - DateTime::TimeZone::Australia::Eucla 1.97 - DateTime::TimeZone::Australia::Hobart 1.97 - DateTime::TimeZone::Australia::Lindeman 1.97 - DateTime::TimeZone::Australia::Lord_Howe 1.97 - DateTime::TimeZone::Australia::Melbourne 1.97 - DateTime::TimeZone::Australia::Perth 1.97 - DateTime::TimeZone::Australia::Sydney 1.97 - DateTime::TimeZone::CET 1.97 - DateTime::TimeZone::CST6CDT 1.97 - DateTime::TimeZone::Catalog 1.97 - DateTime::TimeZone::EET 1.97 - DateTime::TimeZone::EST 1.97 - DateTime::TimeZone::EST5EDT 1.97 - DateTime::TimeZone::Europe::Amsterdam 1.97 - DateTime::TimeZone::Europe::Andorra 1.97 - DateTime::TimeZone::Europe::Astrakhan 1.97 - DateTime::TimeZone::Europe::Athens 1.97 - DateTime::TimeZone::Europe::Belgrade 1.97 - DateTime::TimeZone::Europe::Berlin 1.97 - DateTime::TimeZone::Europe::Brussels 1.97 - DateTime::TimeZone::Europe::Bucharest 1.97 - DateTime::TimeZone::Europe::Budapest 1.97 - DateTime::TimeZone::Europe::Chisinau 1.97 - DateTime::TimeZone::Europe::Copenhagen 1.97 - DateTime::TimeZone::Europe::Dublin 1.97 - DateTime::TimeZone::Europe::Gibraltar 1.97 - DateTime::TimeZone::Europe::Helsinki 1.97 - DateTime::TimeZone::Europe::Istanbul 1.97 - DateTime::TimeZone::Europe::Kaliningrad 1.97 - DateTime::TimeZone::Europe::Kiev 1.97 - DateTime::TimeZone::Europe::Lisbon 1.97 - DateTime::TimeZone::Europe::London 1.97 - DateTime::TimeZone::Europe::Luxembourg 1.97 - DateTime::TimeZone::Europe::Madrid 1.97 - DateTime::TimeZone::Europe::Malta 1.97 - DateTime::TimeZone::Europe::Minsk 1.97 - DateTime::TimeZone::Europe::Monaco 1.97 - DateTime::TimeZone::Europe::Moscow 1.97 - DateTime::TimeZone::Europe::Oslo 1.97 - DateTime::TimeZone::Europe::Paris 1.97 - DateTime::TimeZone::Europe::Prague 1.97 - DateTime::TimeZone::Europe::Riga 1.97 - DateTime::TimeZone::Europe::Rome 1.97 - DateTime::TimeZone::Europe::Samara 1.97 - DateTime::TimeZone::Europe::Simferopol 1.97 - DateTime::TimeZone::Europe::Sofia 1.97 - DateTime::TimeZone::Europe::Stockholm 1.97 - DateTime::TimeZone::Europe::Tallinn 1.97 - DateTime::TimeZone::Europe::Tirane 1.97 - DateTime::TimeZone::Europe::Ulyanovsk 1.97 - DateTime::TimeZone::Europe::Uzhgorod 1.97 - DateTime::TimeZone::Europe::Vienna 1.97 - DateTime::TimeZone::Europe::Vilnius 1.97 - DateTime::TimeZone::Europe::Volgograd 1.97 - DateTime::TimeZone::Europe::Warsaw 1.97 - DateTime::TimeZone::Europe::Zaporozhye 1.97 - DateTime::TimeZone::Europe::Zurich 1.97 - DateTime::TimeZone::Floating 1.97 - DateTime::TimeZone::HST 1.97 - DateTime::TimeZone::Indian::Chagos 1.97 - DateTime::TimeZone::Indian::Christmas 1.97 - DateTime::TimeZone::Indian::Cocos 1.97 - DateTime::TimeZone::Indian::Kerguelen 1.97 - DateTime::TimeZone::Indian::Mahe 1.97 - DateTime::TimeZone::Indian::Maldives 1.97 - DateTime::TimeZone::Indian::Mauritius 1.97 - DateTime::TimeZone::Indian::Reunion 1.97 - DateTime::TimeZone::Local 1.97 - DateTime::TimeZone::Local::Android 1.97 - DateTime::TimeZone::Local::Unix 1.97 - DateTime::TimeZone::Local::VMS 1.97 - DateTime::TimeZone::MET 1.97 - DateTime::TimeZone::MST 1.97 - DateTime::TimeZone::MST7MDT 1.97 - DateTime::TimeZone::OffsetOnly 1.97 - DateTime::TimeZone::OlsonDB 1.97 - DateTime::TimeZone::OlsonDB::Change 1.97 - DateTime::TimeZone::OlsonDB::Observance 1.97 - DateTime::TimeZone::OlsonDB::Rule 1.97 - DateTime::TimeZone::OlsonDB::Zone 1.97 - DateTime::TimeZone::PST8PDT 1.97 - DateTime::TimeZone::Pacific::Apia 1.97 - DateTime::TimeZone::Pacific::Auckland 1.97 - DateTime::TimeZone::Pacific::Bougainville 1.97 - DateTime::TimeZone::Pacific::Chatham 1.97 - DateTime::TimeZone::Pacific::Chuuk 1.97 - DateTime::TimeZone::Pacific::Easter 1.97 - DateTime::TimeZone::Pacific::Efate 1.97 - DateTime::TimeZone::Pacific::Enderbury 1.97 - DateTime::TimeZone::Pacific::Fakaofo 1.97 - DateTime::TimeZone::Pacific::Fiji 1.97 - DateTime::TimeZone::Pacific::Funafuti 1.97 - DateTime::TimeZone::Pacific::Galapagos 1.97 - DateTime::TimeZone::Pacific::Gambier 1.97 - DateTime::TimeZone::Pacific::Guadalcanal 1.97 - DateTime::TimeZone::Pacific::Guam 1.97 - DateTime::TimeZone::Pacific::Honolulu 1.97 - DateTime::TimeZone::Pacific::Kiritimati 1.97 - DateTime::TimeZone::Pacific::Kosrae 1.97 - DateTime::TimeZone::Pacific::Kwajalein 1.97 - DateTime::TimeZone::Pacific::Majuro 1.97 - DateTime::TimeZone::Pacific::Marquesas 1.97 - DateTime::TimeZone::Pacific::Nauru 1.97 - DateTime::TimeZone::Pacific::Niue 1.97 - DateTime::TimeZone::Pacific::Norfolk 1.97 - DateTime::TimeZone::Pacific::Noumea 1.97 - DateTime::TimeZone::Pacific::Pago_Pago 1.97 - DateTime::TimeZone::Pacific::Palau 1.97 - DateTime::TimeZone::Pacific::Pitcairn 1.97 - DateTime::TimeZone::Pacific::Pohnpei 1.97 - DateTime::TimeZone::Pacific::Port_Moresby 1.97 - DateTime::TimeZone::Pacific::Rarotonga 1.97 - DateTime::TimeZone::Pacific::Tahiti 1.97 - DateTime::TimeZone::Pacific::Tarawa 1.97 - DateTime::TimeZone::Pacific::Tongatapu 1.97 - DateTime::TimeZone::Pacific::Wake 1.97 - DateTime::TimeZone::Pacific::Wallis 1.97 - DateTime::TimeZone::UTC 1.97 - DateTime::TimeZone::WET 1.97 + DateTime-TimeZone-1.98 + pathname: D/DR/DROLSKY/DateTime-TimeZone-1.98.tar.gz + provides: + DateTime::TimeZone 1.98 + DateTime::TimeZone::Africa::Abidjan 1.98 + DateTime::TimeZone::Africa::Accra 1.98 + DateTime::TimeZone::Africa::Algiers 1.98 + DateTime::TimeZone::Africa::Bissau 1.98 + DateTime::TimeZone::Africa::Cairo 1.98 + DateTime::TimeZone::Africa::Casablanca 1.98 + DateTime::TimeZone::Africa::Ceuta 1.98 + DateTime::TimeZone::Africa::El_Aaiun 1.98 + DateTime::TimeZone::Africa::Johannesburg 1.98 + DateTime::TimeZone::Africa::Khartoum 1.98 + DateTime::TimeZone::Africa::Lagos 1.98 + DateTime::TimeZone::Africa::Maputo 1.98 + DateTime::TimeZone::Africa::Monrovia 1.98 + DateTime::TimeZone::Africa::Nairobi 1.98 + DateTime::TimeZone::Africa::Ndjamena 1.98 + DateTime::TimeZone::Africa::Tripoli 1.98 + DateTime::TimeZone::Africa::Tunis 1.98 + DateTime::TimeZone::Africa::Windhoek 1.98 + DateTime::TimeZone::America::Adak 1.98 + DateTime::TimeZone::America::Anchorage 1.98 + DateTime::TimeZone::America::Araguaina 1.98 + DateTime::TimeZone::America::Argentina::Buenos_Aires 1.98 + DateTime::TimeZone::America::Argentina::Catamarca 1.98 + DateTime::TimeZone::America::Argentina::Cordoba 1.98 + DateTime::TimeZone::America::Argentina::Jujuy 1.98 + DateTime::TimeZone::America::Argentina::La_Rioja 1.98 + DateTime::TimeZone::America::Argentina::Mendoza 1.98 + DateTime::TimeZone::America::Argentina::Rio_Gallegos 1.98 + DateTime::TimeZone::America::Argentina::Salta 1.98 + DateTime::TimeZone::America::Argentina::San_Juan 1.98 + DateTime::TimeZone::America::Argentina::San_Luis 1.98 + DateTime::TimeZone::America::Argentina::Tucuman 1.98 + DateTime::TimeZone::America::Argentina::Ushuaia 1.98 + DateTime::TimeZone::America::Asuncion 1.98 + DateTime::TimeZone::America::Atikokan 1.98 + DateTime::TimeZone::America::Bahia 1.98 + DateTime::TimeZone::America::Bahia_Banderas 1.98 + DateTime::TimeZone::America::Barbados 1.98 + DateTime::TimeZone::America::Belem 1.98 + DateTime::TimeZone::America::Belize 1.98 + DateTime::TimeZone::America::Blanc_Sablon 1.98 + DateTime::TimeZone::America::Boa_Vista 1.98 + DateTime::TimeZone::America::Bogota 1.98 + DateTime::TimeZone::America::Boise 1.98 + DateTime::TimeZone::America::Cambridge_Bay 1.98 + DateTime::TimeZone::America::Campo_Grande 1.98 + DateTime::TimeZone::America::Cancun 1.98 + DateTime::TimeZone::America::Caracas 1.98 + DateTime::TimeZone::America::Cayenne 1.98 + DateTime::TimeZone::America::Chicago 1.98 + DateTime::TimeZone::America::Chihuahua 1.98 + DateTime::TimeZone::America::Costa_Rica 1.98 + DateTime::TimeZone::America::Creston 1.98 + DateTime::TimeZone::America::Cuiaba 1.98 + DateTime::TimeZone::America::Curacao 1.98 + DateTime::TimeZone::America::Danmarkshavn 1.98 + DateTime::TimeZone::America::Dawson 1.98 + DateTime::TimeZone::America::Dawson_Creek 1.98 + DateTime::TimeZone::America::Denver 1.98 + DateTime::TimeZone::America::Detroit 1.98 + DateTime::TimeZone::America::Edmonton 1.98 + DateTime::TimeZone::America::Eirunepe 1.98 + DateTime::TimeZone::America::El_Salvador 1.98 + DateTime::TimeZone::America::Fort_Nelson 1.98 + DateTime::TimeZone::America::Fortaleza 1.98 + DateTime::TimeZone::America::Glace_Bay 1.98 + DateTime::TimeZone::America::Godthab 1.98 + DateTime::TimeZone::America::Goose_Bay 1.98 + DateTime::TimeZone::America::Grand_Turk 1.98 + DateTime::TimeZone::America::Guatemala 1.98 + DateTime::TimeZone::America::Guayaquil 1.98 + DateTime::TimeZone::America::Guyana 1.98 + DateTime::TimeZone::America::Halifax 1.98 + DateTime::TimeZone::America::Havana 1.98 + DateTime::TimeZone::America::Hermosillo 1.98 + DateTime::TimeZone::America::Indiana::Indianapolis 1.98 + DateTime::TimeZone::America::Indiana::Knox 1.98 + DateTime::TimeZone::America::Indiana::Marengo 1.98 + DateTime::TimeZone::America::Indiana::Petersburg 1.98 + DateTime::TimeZone::America::Indiana::Tell_City 1.98 + DateTime::TimeZone::America::Indiana::Vevay 1.98 + DateTime::TimeZone::America::Indiana::Vincennes 1.98 + DateTime::TimeZone::America::Indiana::Winamac 1.98 + DateTime::TimeZone::America::Inuvik 1.98 + DateTime::TimeZone::America::Iqaluit 1.98 + DateTime::TimeZone::America::Jamaica 1.98 + DateTime::TimeZone::America::Juneau 1.98 + DateTime::TimeZone::America::Kentucky::Louisville 1.98 + DateTime::TimeZone::America::Kentucky::Monticello 1.98 + DateTime::TimeZone::America::La_Paz 1.98 + DateTime::TimeZone::America::Lima 1.98 + DateTime::TimeZone::America::Los_Angeles 1.98 + DateTime::TimeZone::America::Maceio 1.98 + DateTime::TimeZone::America::Managua 1.98 + DateTime::TimeZone::America::Manaus 1.98 + DateTime::TimeZone::America::Martinique 1.98 + DateTime::TimeZone::America::Matamoros 1.98 + DateTime::TimeZone::America::Mazatlan 1.98 + DateTime::TimeZone::America::Menominee 1.98 + DateTime::TimeZone::America::Merida 1.98 + DateTime::TimeZone::America::Metlakatla 1.98 + DateTime::TimeZone::America::Mexico_City 1.98 + DateTime::TimeZone::America::Miquelon 1.98 + DateTime::TimeZone::America::Moncton 1.98 + DateTime::TimeZone::America::Monterrey 1.98 + DateTime::TimeZone::America::Montevideo 1.98 + DateTime::TimeZone::America::Nassau 1.98 + DateTime::TimeZone::America::New_York 1.98 + DateTime::TimeZone::America::Nipigon 1.98 + DateTime::TimeZone::America::Nome 1.98 + DateTime::TimeZone::America::Noronha 1.98 + DateTime::TimeZone::America::North_Dakota::Beulah 1.98 + DateTime::TimeZone::America::North_Dakota::Center 1.98 + DateTime::TimeZone::America::North_Dakota::New_Salem 1.98 + DateTime::TimeZone::America::Ojinaga 1.98 + DateTime::TimeZone::America::Panama 1.98 + DateTime::TimeZone::America::Pangnirtung 1.98 + DateTime::TimeZone::America::Paramaribo 1.98 + DateTime::TimeZone::America::Phoenix 1.98 + DateTime::TimeZone::America::Port_au_Prince 1.98 + DateTime::TimeZone::America::Port_of_Spain 1.98 + DateTime::TimeZone::America::Porto_Velho 1.98 + DateTime::TimeZone::America::Puerto_Rico 1.98 + DateTime::TimeZone::America::Rainy_River 1.98 + DateTime::TimeZone::America::Rankin_Inlet 1.98 + DateTime::TimeZone::America::Recife 1.98 + DateTime::TimeZone::America::Regina 1.98 + DateTime::TimeZone::America::Resolute 1.98 + DateTime::TimeZone::America::Rio_Branco 1.98 + DateTime::TimeZone::America::Santarem 1.98 + DateTime::TimeZone::America::Santiago 1.98 + DateTime::TimeZone::America::Santo_Domingo 1.98 + DateTime::TimeZone::America::Sao_Paulo 1.98 + DateTime::TimeZone::America::Scoresbysund 1.98 + DateTime::TimeZone::America::Sitka 1.98 + DateTime::TimeZone::America::St_Johns 1.98 + DateTime::TimeZone::America::Swift_Current 1.98 + DateTime::TimeZone::America::Tegucigalpa 1.98 + DateTime::TimeZone::America::Thule 1.98 + DateTime::TimeZone::America::Thunder_Bay 1.98 + DateTime::TimeZone::America::Tijuana 1.98 + DateTime::TimeZone::America::Toronto 1.98 + DateTime::TimeZone::America::Vancouver 1.98 + DateTime::TimeZone::America::Whitehorse 1.98 + DateTime::TimeZone::America::Winnipeg 1.98 + DateTime::TimeZone::America::Yakutat 1.98 + DateTime::TimeZone::America::Yellowknife 1.98 + DateTime::TimeZone::Antarctica::Casey 1.98 + DateTime::TimeZone::Antarctica::Davis 1.98 + DateTime::TimeZone::Antarctica::DumontDUrville 1.98 + DateTime::TimeZone::Antarctica::Macquarie 1.98 + DateTime::TimeZone::Antarctica::Mawson 1.98 + DateTime::TimeZone::Antarctica::Palmer 1.98 + DateTime::TimeZone::Antarctica::Rothera 1.98 + DateTime::TimeZone::Antarctica::Syowa 1.98 + DateTime::TimeZone::Antarctica::Troll 1.98 + DateTime::TimeZone::Antarctica::Vostok 1.98 + DateTime::TimeZone::Asia::Almaty 1.98 + DateTime::TimeZone::Asia::Amman 1.98 + DateTime::TimeZone::Asia::Anadyr 1.98 + DateTime::TimeZone::Asia::Aqtau 1.98 + DateTime::TimeZone::Asia::Aqtobe 1.98 + DateTime::TimeZone::Asia::Ashgabat 1.98 + DateTime::TimeZone::Asia::Baghdad 1.98 + DateTime::TimeZone::Asia::Baku 1.98 + DateTime::TimeZone::Asia::Bangkok 1.98 + DateTime::TimeZone::Asia::Barnaul 1.98 + DateTime::TimeZone::Asia::Beirut 1.98 + DateTime::TimeZone::Asia::Bishkek 1.98 + DateTime::TimeZone::Asia::Brunei 1.98 + DateTime::TimeZone::Asia::Chita 1.98 + DateTime::TimeZone::Asia::Choibalsan 1.98 + DateTime::TimeZone::Asia::Colombo 1.98 + DateTime::TimeZone::Asia::Damascus 1.98 + DateTime::TimeZone::Asia::Dhaka 1.98 + DateTime::TimeZone::Asia::Dili 1.98 + DateTime::TimeZone::Asia::Dubai 1.98 + DateTime::TimeZone::Asia::Dushanbe 1.98 + DateTime::TimeZone::Asia::Gaza 1.98 + DateTime::TimeZone::Asia::Hebron 1.98 + DateTime::TimeZone::Asia::Ho_Chi_Minh 1.98 + DateTime::TimeZone::Asia::Hong_Kong 1.98 + DateTime::TimeZone::Asia::Hovd 1.98 + DateTime::TimeZone::Asia::Irkutsk 1.98 + DateTime::TimeZone::Asia::Jakarta 1.98 + DateTime::TimeZone::Asia::Jayapura 1.98 + DateTime::TimeZone::Asia::Jerusalem 1.98 + DateTime::TimeZone::Asia::Kabul 1.98 + DateTime::TimeZone::Asia::Kamchatka 1.98 + DateTime::TimeZone::Asia::Karachi 1.98 + DateTime::TimeZone::Asia::Kathmandu 1.98 + DateTime::TimeZone::Asia::Khandyga 1.98 + DateTime::TimeZone::Asia::Kolkata 1.98 + DateTime::TimeZone::Asia::Krasnoyarsk 1.98 + DateTime::TimeZone::Asia::Kuala_Lumpur 1.98 + DateTime::TimeZone::Asia::Kuching 1.98 + DateTime::TimeZone::Asia::Macau 1.98 + DateTime::TimeZone::Asia::Magadan 1.98 + DateTime::TimeZone::Asia::Makassar 1.98 + DateTime::TimeZone::Asia::Manila 1.98 + DateTime::TimeZone::Asia::Nicosia 1.98 + DateTime::TimeZone::Asia::Novokuznetsk 1.98 + DateTime::TimeZone::Asia::Novosibirsk 1.98 + DateTime::TimeZone::Asia::Omsk 1.98 + DateTime::TimeZone::Asia::Oral 1.98 + DateTime::TimeZone::Asia::Pontianak 1.98 + DateTime::TimeZone::Asia::Pyongyang 1.98 + DateTime::TimeZone::Asia::Qatar 1.98 + DateTime::TimeZone::Asia::Qyzylorda 1.98 + DateTime::TimeZone::Asia::Rangoon 1.98 + DateTime::TimeZone::Asia::Riyadh 1.98 + DateTime::TimeZone::Asia::Sakhalin 1.98 + DateTime::TimeZone::Asia::Samarkand 1.98 + DateTime::TimeZone::Asia::Seoul 1.98 + DateTime::TimeZone::Asia::Shanghai 1.98 + DateTime::TimeZone::Asia::Singapore 1.98 + DateTime::TimeZone::Asia::Srednekolymsk 1.98 + DateTime::TimeZone::Asia::Taipei 1.98 + DateTime::TimeZone::Asia::Tashkent 1.98 + DateTime::TimeZone::Asia::Tbilisi 1.98 + DateTime::TimeZone::Asia::Tehran 1.98 + DateTime::TimeZone::Asia::Thimphu 1.98 + DateTime::TimeZone::Asia::Tokyo 1.98 + DateTime::TimeZone::Asia::Tomsk 1.98 + DateTime::TimeZone::Asia::Ulaanbaatar 1.98 + DateTime::TimeZone::Asia::Urumqi 1.98 + DateTime::TimeZone::Asia::Ust_Nera 1.98 + DateTime::TimeZone::Asia::Vladivostok 1.98 + DateTime::TimeZone::Asia::Yakutsk 1.98 + DateTime::TimeZone::Asia::Yekaterinburg 1.98 + DateTime::TimeZone::Asia::Yerevan 1.98 + DateTime::TimeZone::Atlantic::Azores 1.98 + DateTime::TimeZone::Atlantic::Bermuda 1.98 + DateTime::TimeZone::Atlantic::Canary 1.98 + DateTime::TimeZone::Atlantic::Cape_Verde 1.98 + DateTime::TimeZone::Atlantic::Faroe 1.98 + DateTime::TimeZone::Atlantic::Madeira 1.98 + DateTime::TimeZone::Atlantic::Reykjavik 1.98 + DateTime::TimeZone::Atlantic::South_Georgia 1.98 + DateTime::TimeZone::Atlantic::Stanley 1.98 + DateTime::TimeZone::Australia::Adelaide 1.98 + DateTime::TimeZone::Australia::Brisbane 1.98 + DateTime::TimeZone::Australia::Broken_Hill 1.98 + DateTime::TimeZone::Australia::Currie 1.98 + DateTime::TimeZone::Australia::Darwin 1.98 + DateTime::TimeZone::Australia::Eucla 1.98 + DateTime::TimeZone::Australia::Hobart 1.98 + DateTime::TimeZone::Australia::Lindeman 1.98 + DateTime::TimeZone::Australia::Lord_Howe 1.98 + DateTime::TimeZone::Australia::Melbourne 1.98 + DateTime::TimeZone::Australia::Perth 1.98 + DateTime::TimeZone::Australia::Sydney 1.98 + DateTime::TimeZone::CET 1.98 + DateTime::TimeZone::CST6CDT 1.98 + DateTime::TimeZone::Catalog 1.98 + DateTime::TimeZone::EET 1.98 + DateTime::TimeZone::EST 1.98 + DateTime::TimeZone::EST5EDT 1.98 + DateTime::TimeZone::Europe::Amsterdam 1.98 + DateTime::TimeZone::Europe::Andorra 1.98 + DateTime::TimeZone::Europe::Astrakhan 1.98 + DateTime::TimeZone::Europe::Athens 1.98 + DateTime::TimeZone::Europe::Belgrade 1.98 + DateTime::TimeZone::Europe::Berlin 1.98 + DateTime::TimeZone::Europe::Brussels 1.98 + DateTime::TimeZone::Europe::Bucharest 1.98 + DateTime::TimeZone::Europe::Budapest 1.98 + DateTime::TimeZone::Europe::Chisinau 1.98 + DateTime::TimeZone::Europe::Copenhagen 1.98 + DateTime::TimeZone::Europe::Dublin 1.98 + DateTime::TimeZone::Europe::Gibraltar 1.98 + DateTime::TimeZone::Europe::Helsinki 1.98 + DateTime::TimeZone::Europe::Istanbul 1.98 + DateTime::TimeZone::Europe::Kaliningrad 1.98 + DateTime::TimeZone::Europe::Kiev 1.98 + DateTime::TimeZone::Europe::Kirov 1.98 + DateTime::TimeZone::Europe::Lisbon 1.98 + DateTime::TimeZone::Europe::London 1.98 + DateTime::TimeZone::Europe::Luxembourg 1.98 + DateTime::TimeZone::Europe::Madrid 1.98 + DateTime::TimeZone::Europe::Malta 1.98 + DateTime::TimeZone::Europe::Minsk 1.98 + DateTime::TimeZone::Europe::Monaco 1.98 + DateTime::TimeZone::Europe::Moscow 1.98 + DateTime::TimeZone::Europe::Oslo 1.98 + DateTime::TimeZone::Europe::Paris 1.98 + DateTime::TimeZone::Europe::Prague 1.98 + DateTime::TimeZone::Europe::Riga 1.98 + DateTime::TimeZone::Europe::Rome 1.98 + DateTime::TimeZone::Europe::Samara 1.98 + DateTime::TimeZone::Europe::Simferopol 1.98 + DateTime::TimeZone::Europe::Sofia 1.98 + DateTime::TimeZone::Europe::Stockholm 1.98 + DateTime::TimeZone::Europe::Tallinn 1.98 + DateTime::TimeZone::Europe::Tirane 1.98 + DateTime::TimeZone::Europe::Ulyanovsk 1.98 + DateTime::TimeZone::Europe::Uzhgorod 1.98 + DateTime::TimeZone::Europe::Vienna 1.98 + DateTime::TimeZone::Europe::Vilnius 1.98 + DateTime::TimeZone::Europe::Volgograd 1.98 + DateTime::TimeZone::Europe::Warsaw 1.98 + DateTime::TimeZone::Europe::Zaporozhye 1.98 + DateTime::TimeZone::Europe::Zurich 1.98 + DateTime::TimeZone::Floating 1.98 + DateTime::TimeZone::HST 1.98 + DateTime::TimeZone::Indian::Chagos 1.98 + DateTime::TimeZone::Indian::Christmas 1.98 + DateTime::TimeZone::Indian::Cocos 1.98 + DateTime::TimeZone::Indian::Kerguelen 1.98 + DateTime::TimeZone::Indian::Mahe 1.98 + DateTime::TimeZone::Indian::Maldives 1.98 + DateTime::TimeZone::Indian::Mauritius 1.98 + DateTime::TimeZone::Indian::Reunion 1.98 + DateTime::TimeZone::Local 1.98 + DateTime::TimeZone::Local::Android 1.98 + DateTime::TimeZone::Local::Unix 1.98 + DateTime::TimeZone::Local::VMS 1.98 + DateTime::TimeZone::MET 1.98 + DateTime::TimeZone::MST 1.98 + DateTime::TimeZone::MST7MDT 1.98 + DateTime::TimeZone::OffsetOnly 1.98 + DateTime::TimeZone::OlsonDB 1.98 + DateTime::TimeZone::OlsonDB::Change 1.98 + DateTime::TimeZone::OlsonDB::Observance 1.98 + DateTime::TimeZone::OlsonDB::Rule 1.98 + DateTime::TimeZone::OlsonDB::Zone 1.98 + DateTime::TimeZone::PST8PDT 1.98 + DateTime::TimeZone::Pacific::Apia 1.98 + DateTime::TimeZone::Pacific::Auckland 1.98 + DateTime::TimeZone::Pacific::Bougainville 1.98 + DateTime::TimeZone::Pacific::Chatham 1.98 + DateTime::TimeZone::Pacific::Chuuk 1.98 + DateTime::TimeZone::Pacific::Easter 1.98 + DateTime::TimeZone::Pacific::Efate 1.98 + DateTime::TimeZone::Pacific::Enderbury 1.98 + DateTime::TimeZone::Pacific::Fakaofo 1.98 + DateTime::TimeZone::Pacific::Fiji 1.98 + DateTime::TimeZone::Pacific::Funafuti 1.98 + DateTime::TimeZone::Pacific::Galapagos 1.98 + DateTime::TimeZone::Pacific::Gambier 1.98 + DateTime::TimeZone::Pacific::Guadalcanal 1.98 + DateTime::TimeZone::Pacific::Guam 1.98 + DateTime::TimeZone::Pacific::Honolulu 1.98 + DateTime::TimeZone::Pacific::Kiritimati 1.98 + DateTime::TimeZone::Pacific::Kosrae 1.98 + DateTime::TimeZone::Pacific::Kwajalein 1.98 + DateTime::TimeZone::Pacific::Majuro 1.98 + DateTime::TimeZone::Pacific::Marquesas 1.98 + DateTime::TimeZone::Pacific::Nauru 1.98 + DateTime::TimeZone::Pacific::Niue 1.98 + DateTime::TimeZone::Pacific::Norfolk 1.98 + DateTime::TimeZone::Pacific::Noumea 1.98 + DateTime::TimeZone::Pacific::Pago_Pago 1.98 + DateTime::TimeZone::Pacific::Palau 1.98 + DateTime::TimeZone::Pacific::Pitcairn 1.98 + DateTime::TimeZone::Pacific::Pohnpei 1.98 + DateTime::TimeZone::Pacific::Port_Moresby 1.98 + DateTime::TimeZone::Pacific::Rarotonga 1.98 + DateTime::TimeZone::Pacific::Tahiti 1.98 + DateTime::TimeZone::Pacific::Tarawa 1.98 + DateTime::TimeZone::Pacific::Tongatapu 1.98 + DateTime::TimeZone::Pacific::Wake 1.98 + DateTime::TimeZone::Pacific::Wallis 1.98 + DateTime::TimeZone::UTC 1.98 + DateTime::TimeZone::WET 1.98 requirements: Class::Singleton 1.03 Cwd 3 @@ -2382,10 +2342,10 @@ DISTRIBUTIONS requirements: Devel::StackTrace 0 ExtUtils::MakeMaker 0 - Devel-Symdump-2.16 - pathname: A/AN/ANDK/Devel-Symdump-2.16.tar.gz + Devel-Symdump-2.17 + pathname: A/AN/ANDK/Devel-Symdump-2.17.tar.gz provides: - Devel::Symdump 2.16 + Devel::Symdump 2.17 Devel::Symdump::Export undef requirements: Compress::Zlib 0 @@ -2492,29 +2452,29 @@ DISTRIBUTIONS ElasticSearchX-Model-1.0.0 pathname: O/OA/OALDERS/ElasticSearchX-Model-1.0.0.tar.gz provides: - ElasticSearchX::Model 1.000000 - ElasticSearchX::Model::Bulk 1.000000 - ElasticSearchX::Model::Document 1.000000 - ElasticSearchX::Model::Document::EmbeddedRole 1.000000 - ElasticSearchX::Model::Document::Mapping 1.000000 - ElasticSearchX::Model::Document::Role 1.000000 - ElasticSearchX::Model::Document::Set 1.000000 - ElasticSearchX::Model::Document::Trait::Attribute 1.000000 - ElasticSearchX::Model::Document::Trait::Class 1.000000 - ElasticSearchX::Model::Document::Trait::Class::ID 1.000000 - ElasticSearchX::Model::Document::Trait::Class::Timestamp 1.000000 - ElasticSearchX::Model::Document::Trait::Class::Version 1.000000 - ElasticSearchX::Model::Document::Trait::Field::ID 1.000000 - ElasticSearchX::Model::Document::Trait::Field::TTL 1.000000 - ElasticSearchX::Model::Document::Trait::Field::Timestamp 1.000000 - ElasticSearchX::Model::Document::Trait::Field::Version 1.000000 - ElasticSearchX::Model::Document::Types 1.000000 - ElasticSearchX::Model::Index 1.000000 - ElasticSearchX::Model::Role 1.000000 - ElasticSearchX::Model::Scroll 1.000000 - ElasticSearchX::Model::Trait::Class 1.000000 - ElasticSearchX::Model::Tutorial 1.000000 - ElasticSearchX::Model::Util 1.000000 + ElasticSearchX::Model v1.0.0 + ElasticSearchX::Model::Bulk v1.0.0 + ElasticSearchX::Model::Document v1.0.0 + ElasticSearchX::Model::Document::EmbeddedRole v1.0.0 + ElasticSearchX::Model::Document::Mapping v1.0.0 + ElasticSearchX::Model::Document::Role v1.0.0 + ElasticSearchX::Model::Document::Set v1.0.0 + ElasticSearchX::Model::Document::Trait::Attribute v1.0.0 + ElasticSearchX::Model::Document::Trait::Class v1.0.0 + ElasticSearchX::Model::Document::Trait::Class::ID v1.0.0 + ElasticSearchX::Model::Document::Trait::Class::Timestamp v1.0.0 + ElasticSearchX::Model::Document::Trait::Class::Version v1.0.0 + ElasticSearchX::Model::Document::Trait::Field::ID v1.0.0 + ElasticSearchX::Model::Document::Trait::Field::TTL v1.0.0 + ElasticSearchX::Model::Document::Trait::Field::Timestamp v1.0.0 + ElasticSearchX::Model::Document::Trait::Field::Version v1.0.0 + ElasticSearchX::Model::Document::Types v1.0.0 + ElasticSearchX::Model::Index v1.0.0 + ElasticSearchX::Model::Role v1.0.0 + ElasticSearchX::Model::Scroll v1.0.0 + ElasticSearchX::Model::Trait::Class v1.0.0 + ElasticSearchX::Model::Tutorial v1.0.0 + ElasticSearchX::Model::Util v1.0.0 requirements: Carp 0 Class::Load 0 @@ -2546,7 +2506,6 @@ DISTRIBUTIONS Email::Abstract::MailInternet 3.008 Email::Abstract::MailMessage 3.008 Email::Abstract::Plugin 3.008 - Test::EmailAbstract undef requirements: Carp 0 Email::Simple 1.998 @@ -2603,9 +2562,6 @@ DISTRIBUTIONS Email::Sender::Transport::Test 1.300027 Email::Sender::Transport::Wrapper 1.300027 Email::Sender::Util 1.300027 - Test::Email::SMTPRig undef - Test::Email::Sender::Transport::FailEvery undef - Test::Email::Sender::Util undef requirements: Carp 0 Email::Abstract 3.006 @@ -2677,6 +2633,9 @@ DISTRIBUTIONS pathname: S/SH/SHLOMIF/Error-0.17024.tar.gz provides: Error 0.17024 + Error::Simple 0.17024 + Error::WarnDie undef + Error::subs undef requirements: Module::Build 0.280801 Scalar::Util 0 @@ -2913,10 +2872,12 @@ DISTRIBUTIONS File-Find-Object-v0.2.13 pathname: S/SH/SHLOMIF/File-Find-Object-v0.2.13.tar.gz provides: - File::Find::Object 0.002013 - File::Find::Object::Base 0.002013 - File::Find::Object::PathComp 0.002013 - File::Find::Object::Result 0.002013 + File::Find::Object v0.2.13 + File::Find::Object::Base v0.2.13 + File::Find::Object::DeepPath v0.2.13 + File::Find::Object::PathComp v0.2.13 + File::Find::Object::Result v0.2.13 + File::Find::Object::TopPath v0.2.13 requirements: Carp 0 Class::XSAccessor 0 @@ -3389,7 +3350,6 @@ DISTRIBUTIONS HTTP::Body::UrlEncoded 1.22 HTTP::Body::XForms 1.22 HTTP::Body::XFormsMultipart 1.22 - PAML undef requirements: Carp 0 Digest::MD5 0 @@ -3580,6 +3540,7 @@ DISTRIBUTIONS pathname: E/ET/ETHER/Hook-LexWrap-0.25.tar.gz provides: Hook::LexWrap 0.25 + Hook::LexWrap::Cleanup 0.25 requirements: Carp 0 ExtUtils::MakeMaker 0 @@ -3664,17 +3625,17 @@ DISTRIBUTIONS IO::Socket 0 Socket 1.97 Test::More 0.88 - IO-Socket-SSL-2.025 - pathname: S/SU/SULLR/IO-Socket-SSL-2.025.tar.gz + IO-Socket-SSL-2.027 + pathname: S/SU/SULLR/IO-Socket-SSL-2.027.tar.gz provides: - IO::Socket::SSL 2.025 + IO::Socket::SSL 2.027 IO::Socket::SSL::Intercept 2.014 - IO::Socket::SSL::OCSP_Cache 2.025 - IO::Socket::SSL::OCSP_Resolver 2.025 + IO::Socket::SSL::OCSP_Cache 2.027 + IO::Socket::SSL::OCSP_Resolver 2.027 IO::Socket::SSL::PublicSuffix undef - IO::Socket::SSL::SSL_Context 2.025 - IO::Socket::SSL::SSL_HANDLE 2.025 - IO::Socket::SSL::Session_Cache 2.025 + IO::Socket::SSL::SSL_Context 2.027 + IO::Socket::SSL::SSL_HANDLE 2.027 + IO::Socket::SSL::Session_Cache 2.027 IO::Socket::SSL::Utils 2.014 requirements: ExtUtils::MakeMaker 0 @@ -4010,9 +3971,6 @@ DISTRIBUTIONS Log-Contextual-0.007000 pathname: F/FR/FREW/Log-Contextual-0.007000.tar.gz provides: - BaseLogger undef - DefaultImportLogger undef - DumbLogger2 undef Log::Contextual 0.007000 Log::Contextual::Easy::Default 0.007000 Log::Contextual::Easy::Package 0.007000 @@ -4024,10 +3982,6 @@ DISTRIBUTIONS Log::Contextual::SimpleLogger 0.007000 Log::Contextual::TeeLogger 0.007000 Log::Contextual::WarnLogger 0.007000 - My::Module undef - My::Module2 undef - TestExporter undef - TestRouter undef requirements: Carp 0 Data::Dumper::Concise 0 @@ -4079,13 +4033,16 @@ DISTRIBUTIONS L4pResurrectable 0.01 Log::Log4perl 1.47 Log::Log4perl::Appender undef + Log::Log4perl::Appender::Buffer undef Log::Log4perl::Appender::DBI undef Log::Log4perl::Appender::File undef + Log::Log4perl::Appender::Limit undef Log::Log4perl::Appender::RRDs undef Log::Log4perl::Appender::Screen undef Log::Log4perl::Appender::ScreenColoredLevels undef Log::Log4perl::Appender::Socket undef Log::Log4perl::Appender::String undef + Log::Log4perl::Appender::Synchronized undef Log::Log4perl::Appender::TestArrayBuffer undef Log::Log4perl::Appender::TestBuffer undef Log::Log4perl::Appender::TestFileCreeper undef @@ -4210,31 +4167,31 @@ DISTRIBUTIONS ExtUtils::MakeMaker 6.59 Test::More 0.47 perl 5.006 - MailTools-2.14 - pathname: M/MA/MARKOV/MailTools-2.14.tar.gz + MailTools-2.16 + pathname: M/MA/MARKOV/MailTools-2.16.tar.gz provides: Mail undef - Mail::Address 2.14 - Mail::Cap 2.14 - Mail::Field 2.14 - Mail::Field::AddrList 2.14 - Mail::Field::Date 2.14 - Mail::Field::Generic 2.14 - Mail::Filter 2.14 - Mail::Header 2.14 - Mail::Internet 2.14 - Mail::Mailer 2.14 - Mail::Mailer::qmail 2.14 - Mail::Mailer::rfc822 2.14 - Mail::Mailer::sendmail 2.14 - Mail::Mailer::smtp 2.14 - Mail::Mailer::smtp::pipe 2.14 - Mail::Mailer::smtps 2.14 - Mail::Mailer::smtps::pipe 2.14 - Mail::Mailer::testfile 2.14 - Mail::Mailer::testfile::pipe 2.14 - Mail::Send 2.14 - Mail::Util 2.14 + Mail::Address 2.16 + Mail::Cap 2.16 + Mail::Field 2.16 + Mail::Field::AddrList 2.16 + Mail::Field::Date 2.16 + Mail::Field::Generic 2.16 + Mail::Filter 2.16 + Mail::Header 2.16 + Mail::Internet 2.16 + Mail::Mailer 2.16 + Mail::Mailer::qmail 2.16 + Mail::Mailer::rfc822 2.16 + Mail::Mailer::sendmail 2.16 + Mail::Mailer::smtp 2.16 + Mail::Mailer::smtp::pipe 2.16 + Mail::Mailer::smtps 2.16 + Mail::Mailer::smtps::pipe 2.16 + Mail::Mailer::testfile 2.16 + Mail::Mailer::testfile::pipe 2.16 + Mail::Send 2.16 + Mail::Util 2.16 requirements: Date::Format 0 Date::Parse 0 @@ -4285,10 +4242,10 @@ DISTRIBUTIONS perl 5.008 strict 0 warnings 0 - Minion-5.03 - pathname: S/SR/SRI/Minion-5.03.tar.gz + Minion-5.04 + pathname: S/SR/SRI/Minion-5.04.tar.gz provides: - Minion 5.03 + Minion 5.04 Minion::Backend undef Minion::Backend::Pg undef Minion::Command::minion undef @@ -4314,7 +4271,6 @@ DISTRIBUTIONS Mixin-Linewise-0.108 pathname: R/RJ/RJBS/Mixin-Linewise-0.108.tar.gz provides: - MLTests undef Mixin::Linewise 0.108 Mixin::Linewise::Readers 0.108 Mixin::Linewise::Writers 0.108 @@ -4653,7 +4609,7 @@ DISTRIBUTIONS Mojolicious::Command::generate::app undef Mojolicious::Command::generate::lite_app undef Mojolicious::Command::generate::makefile undef - Mojolicious::Command::generate::plugin 0.01 + Mojolicious::Command::generate::plugin undef Mojolicious::Command::get undef Mojolicious::Command::inflate undef Mojolicious::Command::prefork undef @@ -4757,12 +4713,6 @@ DISTRIBUTIONS MooX::Options::Descriptive 4.022 MooX::Options::Descriptive::Usage 4.022 MooX::Options::Role 4.022 - TestNamespaceClean undef - t::Test undef - t::lib::MooXCmdTest undef - t::lib::MooXCmdTest::Cmd::test1 undef - t::lib::MooXCmdTest::Cmd::test1::Cmd::test2 undef - t::lib::MooXCmdTest::Cmd::test3 undef requirements: Carp 0 Data::Record 0 @@ -4829,8 +4779,6 @@ DISTRIBUTIONS Class::MOP 2.1605 Class::MOP::Attribute 2.1605 Class::MOP::Class 2.1605 - Class::MOP::Class::Immutable::Trait undef - Class::MOP::Deprecated undef Class::MOP::Instance 2.1605 Class::MOP::Method 2.1605 Class::MOP::Method::Accessor 2.1605 @@ -4839,18 +4787,40 @@ DISTRIBUTIONS Class::MOP::Method::Inlined 2.1605 Class::MOP::Method::Meta 2.1605 Class::MOP::Method::Wrapped 2.1605 - Class::MOP::MiniTrait undef - Class::MOP::Mixin undef - Class::MOP::Mixin::AttributeCore undef - Class::MOP::Mixin::HasAttributes undef - Class::MOP::Mixin::HasMethods undef - Class::MOP::Mixin::HasOverloads undef Class::MOP::Module 2.1605 Class::MOP::Object 2.1605 Class::MOP::Overload 2.1605 Class::MOP::Package 2.1605 Moose 2.1605 - Moose::Deprecated undef + Moose::Cookbook 2.1605 + Moose::Cookbook::Basics::BankAccount_MethodModifiersAndSubclassing 2.1605 + Moose::Cookbook::Basics::BinaryTree_AttributeFeatures 2.1605 + Moose::Cookbook::Basics::BinaryTree_BuilderAndLazyBuild 2.1605 + Moose::Cookbook::Basics::Company_Subtypes 2.1605 + Moose::Cookbook::Basics::DateTime_ExtendingNonMooseParent 2.1605 + Moose::Cookbook::Basics::Document_AugmentAndInner 2.1605 + Moose::Cookbook::Basics::Genome_OverloadingSubtypesAndCoercion 2.1605 + Moose::Cookbook::Basics::HTTP_SubtypesAndCoercion 2.1605 + Moose::Cookbook::Basics::Immutable 2.1605 + Moose::Cookbook::Basics::Person_BUILDARGSAndBUILD 2.1605 + Moose::Cookbook::Basics::Point_AttributesAndSubclassing 2.1605 + Moose::Cookbook::Extending::Debugging_BaseClassRole 2.1605 + Moose::Cookbook::Extending::ExtensionOverview 2.1605 + Moose::Cookbook::Extending::Mooseish_MooseSugar 2.1605 + Moose::Cookbook::Legacy::Debugging_BaseClassReplacement 2.1605 + Moose::Cookbook::Legacy::Labeled_AttributeMetaclass 2.1605 + Moose::Cookbook::Legacy::Table_ClassMetaclass 2.1605 + Moose::Cookbook::Meta::GlobRef_InstanceMetaclass 2.1605 + Moose::Cookbook::Meta::Labeled_AttributeTrait 2.1605 + Moose::Cookbook::Meta::PrivateOrPublic_MethodMetaclass 2.1605 + Moose::Cookbook::Meta::Table_MetaclassTrait 2.1605 + Moose::Cookbook::Meta::WhyMeta 2.1605 + Moose::Cookbook::Roles::ApplicationToInstance 2.1605 + Moose::Cookbook::Roles::Comparable_CodeReuse 2.1605 + Moose::Cookbook::Roles::Restartable_AdvancedComposition 2.1605 + Moose::Cookbook::Snack::Keywords 2.1605 + Moose::Cookbook::Snack::Types 2.1605 + Moose::Cookbook::Style 2.1605 Moose::Exception 2.1605 Moose::Exception::AccessorMustReadWrite 2.1605 Moose::Exception::AddParameterizableTypeTakesParameterizableType 2.1605 @@ -5081,9 +5051,30 @@ DISTRIBUTIONS Moose::Exception::WrapTakesACodeRefToBless 2.1605 Moose::Exception::WrongTypeConstraintGiven 2.1605 Moose::Exporter 2.1605 + Moose::Intro 2.1605 + Moose::Manual 2.1605 + Moose::Manual::Attributes 2.1605 + Moose::Manual::BestPractices 2.1605 + Moose::Manual::Classes 2.1605 + Moose::Manual::Concepts 2.1605 + Moose::Manual::Construction 2.1605 + Moose::Manual::Contributing 2.1605 + Moose::Manual::Delegation 2.1605 + Moose::Manual::Delta 2.1605 + Moose::Manual::Exceptions 2.1605 + Moose::Manual::Exceptions::Manifest 2.1605 + Moose::Manual::FAQ 2.1605 + Moose::Manual::MOP 2.1605 + Moose::Manual::MethodModifiers 2.1605 + Moose::Manual::MooseX 2.1605 + Moose::Manual::Resources 2.1605 + Moose::Manual::Roles 2.1605 + Moose::Manual::Support 2.1605 + Moose::Manual::Types 2.1605 + Moose::Manual::Unsweetened 2.1605 Moose::Meta::Attribute 2.1605 + Moose::Meta::Attribute::Custom::Moose 2.1605 Moose::Meta::Attribute::Native 2.1605 - Moose::Meta::Attribute::Native::Trait undef Moose::Meta::Attribute::Native::Trait::Array 2.1605 Moose::Meta::Attribute::Native::Trait::Bool 2.1605 Moose::Meta::Attribute::Native::Trait::Code 2.1605 @@ -5092,94 +5083,15 @@ DISTRIBUTIONS Moose::Meta::Attribute::Native::Trait::Number 2.1605 Moose::Meta::Attribute::Native::Trait::String 2.1605 Moose::Meta::Class 2.1605 - Moose::Meta::Class::Immutable::Trait undef Moose::Meta::Instance 2.1605 Moose::Meta::Method 2.1605 Moose::Meta::Method::Accessor 2.1605 - Moose::Meta::Method::Accessor::Native undef - Moose::Meta::Method::Accessor::Native::Array undef - Moose::Meta::Method::Accessor::Native::Array::Writer undef - Moose::Meta::Method::Accessor::Native::Array::accessor undef - Moose::Meta::Method::Accessor::Native::Array::clear undef - Moose::Meta::Method::Accessor::Native::Array::count undef - Moose::Meta::Method::Accessor::Native::Array::delete undef - Moose::Meta::Method::Accessor::Native::Array::elements undef - Moose::Meta::Method::Accessor::Native::Array::first undef - Moose::Meta::Method::Accessor::Native::Array::first_index undef - Moose::Meta::Method::Accessor::Native::Array::get undef - Moose::Meta::Method::Accessor::Native::Array::grep undef - Moose::Meta::Method::Accessor::Native::Array::insert undef - Moose::Meta::Method::Accessor::Native::Array::is_empty undef - Moose::Meta::Method::Accessor::Native::Array::join undef - Moose::Meta::Method::Accessor::Native::Array::map undef - Moose::Meta::Method::Accessor::Native::Array::natatime undef - Moose::Meta::Method::Accessor::Native::Array::pop undef - Moose::Meta::Method::Accessor::Native::Array::push undef - Moose::Meta::Method::Accessor::Native::Array::reduce undef - Moose::Meta::Method::Accessor::Native::Array::set undef - Moose::Meta::Method::Accessor::Native::Array::shallow_clone undef - Moose::Meta::Method::Accessor::Native::Array::shift undef - Moose::Meta::Method::Accessor::Native::Array::shuffle undef - Moose::Meta::Method::Accessor::Native::Array::sort undef - Moose::Meta::Method::Accessor::Native::Array::sort_in_place undef - Moose::Meta::Method::Accessor::Native::Array::splice undef - Moose::Meta::Method::Accessor::Native::Array::uniq undef - Moose::Meta::Method::Accessor::Native::Array::unshift undef - Moose::Meta::Method::Accessor::Native::Bool::not undef - Moose::Meta::Method::Accessor::Native::Bool::set undef - Moose::Meta::Method::Accessor::Native::Bool::toggle undef - Moose::Meta::Method::Accessor::Native::Bool::unset undef - Moose::Meta::Method::Accessor::Native::Code::execute undef - Moose::Meta::Method::Accessor::Native::Code::execute_method undef - Moose::Meta::Method::Accessor::Native::Collection undef - Moose::Meta::Method::Accessor::Native::Counter::Writer undef - Moose::Meta::Method::Accessor::Native::Counter::dec undef - Moose::Meta::Method::Accessor::Native::Counter::inc undef - Moose::Meta::Method::Accessor::Native::Counter::reset undef - Moose::Meta::Method::Accessor::Native::Counter::set undef - Moose::Meta::Method::Accessor::Native::Hash undef - Moose::Meta::Method::Accessor::Native::Hash::Writer undef - Moose::Meta::Method::Accessor::Native::Hash::accessor undef - Moose::Meta::Method::Accessor::Native::Hash::clear undef - Moose::Meta::Method::Accessor::Native::Hash::count undef - Moose::Meta::Method::Accessor::Native::Hash::defined undef - Moose::Meta::Method::Accessor::Native::Hash::delete undef - Moose::Meta::Method::Accessor::Native::Hash::elements undef - Moose::Meta::Method::Accessor::Native::Hash::exists undef - Moose::Meta::Method::Accessor::Native::Hash::get undef - Moose::Meta::Method::Accessor::Native::Hash::is_empty undef - Moose::Meta::Method::Accessor::Native::Hash::keys undef - Moose::Meta::Method::Accessor::Native::Hash::kv undef - Moose::Meta::Method::Accessor::Native::Hash::set undef - Moose::Meta::Method::Accessor::Native::Hash::shallow_clone undef - Moose::Meta::Method::Accessor::Native::Hash::values undef - Moose::Meta::Method::Accessor::Native::Number::abs undef - Moose::Meta::Method::Accessor::Native::Number::add undef - Moose::Meta::Method::Accessor::Native::Number::div undef - Moose::Meta::Method::Accessor::Native::Number::mod undef - Moose::Meta::Method::Accessor::Native::Number::mul undef - Moose::Meta::Method::Accessor::Native::Number::set undef - Moose::Meta::Method::Accessor::Native::Number::sub undef - Moose::Meta::Method::Accessor::Native::Reader undef - Moose::Meta::Method::Accessor::Native::String::append undef - Moose::Meta::Method::Accessor::Native::String::chomp undef - Moose::Meta::Method::Accessor::Native::String::chop undef - Moose::Meta::Method::Accessor::Native::String::clear undef - Moose::Meta::Method::Accessor::Native::String::inc undef - Moose::Meta::Method::Accessor::Native::String::length undef - Moose::Meta::Method::Accessor::Native::String::match undef - Moose::Meta::Method::Accessor::Native::String::prepend undef - Moose::Meta::Method::Accessor::Native::String::replace undef - Moose::Meta::Method::Accessor::Native::String::substr undef - Moose::Meta::Method::Accessor::Native::Writer undef Moose::Meta::Method::Augmented 2.1605 Moose::Meta::Method::Constructor 2.1605 Moose::Meta::Method::Delegation 2.1605 Moose::Meta::Method::Destructor 2.1605 Moose::Meta::Method::Meta 2.1605 Moose::Meta::Method::Overridden 2.1605 - Moose::Meta::Mixin::AttributeCore undef - Moose::Meta::Object::Trait undef Moose::Meta::Role 2.1605 Moose::Meta::Role::Application 2.1605 Moose::Meta::Role::Application::RoleSummation 2.1605 @@ -5204,10 +5116,11 @@ DISTRIBUTIONS Moose::Meta::TypeConstraint::Union 2.1605 Moose::Object 2.1605 Moose::Role 2.1605 + Moose::Spec::Role 2.1605 + Moose::Unsweetened 2.1605 Moose::Util 2.1605 Moose::Util::MetaRole 2.1605 Moose::Util::TypeConstraints 2.1605 - Moose::Util::TypeConstraints::Builtins undef Test::Moose 2.1605 metaclass 2.1605 oose 2.1605 @@ -5248,13 +5161,6 @@ DISTRIBUTIONS pathname: D/DO/DOY/MooseX-Aliases-0.11.tar.gz provides: MooseX::Aliases 0.11 - MooseX::Aliases::Meta::Trait::Attribute 0.11 - MooseX::Aliases::Meta::Trait::Class 0.11 - MooseX::Aliases::Meta::Trait::Method 0.11 - MooseX::Aliases::Meta::Trait::Role 0.11 - MooseX::Aliases::Meta::Trait::Role::ApplicationToClass 0.11 - MooseX::Aliases::Meta::Trait::Role::ApplicationToRole 0.11 - MooseX::Aliases::Meta::Trait::Role::Composite 0.11 requirements: ExtUtils::MakeMaker 6.30 Moose 2.0000 @@ -5265,13 +5171,15 @@ DISTRIBUTIONS MooseX-Attribute-Chained-1.0.2 pathname: T/TO/TOMHUKINS/MooseX-Attribute-Chained-1.0.2.tar.gz provides: - Moose::Meta::Attribute::Custom::Trait::Chained 1.000002 - MooseX::Attribute::Chained 1.000002 - MooseX::Attribute::ChainedClone 1.000002 - MooseX::ChainedAccessors 1.000002 - MooseX::ChainedAccessors::Accessor 1.000002 - MooseX::Traits::Attribute::Chained 1.000002 - MooseX::Traits::Attribute::ChainedClone 1.000002 + Moose::Meta::Attribute::Custom::Trait::Chained v1.0.2 + MooseX::Attribute::Chained v1.0.2 + MooseX::Attribute::Chained::Method::Accessor v1.0.2 + MooseX::Attribute::ChainedClone v1.0.2 + MooseX::Attribute::ChainedClone::Method::Accessor v1.0.2 + MooseX::ChainedAccessors v1.0.2 + MooseX::ChainedAccessors::Accessor v1.0.2 + MooseX::Traits::Attribute::Chained v1.0.2 + MooseX::Traits::Attribute::ChainedClone v1.0.2 requirements: Module::Build 0.28 Moose 0 @@ -5280,20 +5188,20 @@ DISTRIBUTIONS MooseX-Attribute-Deflator-2.2.2 pathname: P/PE/PERLER/MooseX-Attribute-Deflator-2.2.2.tar.gz provides: - MooseX::Attribute::Deflator 2.002002 - MooseX::Attribute::Deflator::Meta::Role::Attribute 2.002002 - MooseX::Attribute::Deflator::Moose 2.002002 - MooseX::Attribute::Deflator::Registry 2.002002 - MooseX::Attribute::Deflator::Structured 2.002002 - MooseX::Attribute::LazyInflator 2.002002 - MooseX::Attribute::LazyInflator::Meta::Role::ApplicationToClass 2.002002 - MooseX::Attribute::LazyInflator::Meta::Role::ApplicationToRole 2.002002 - MooseX::Attribute::LazyInflator::Meta::Role::Attribute 2.002002 - MooseX::Attribute::LazyInflator::Meta::Role::Composite 2.002002 - MooseX::Attribute::LazyInflator::Meta::Role::Method::Accessor 2.002002 - MooseX::Attribute::LazyInflator::Meta::Role::Method::Constructor 2.002002 - MooseX::Attribute::LazyInflator::Meta::Role::Role 2.002002 - MooseX::Attribute::LazyInflator::Role::Class 2.002002 + MooseX::Attribute::Deflator v2.2.2 + MooseX::Attribute::Deflator::Meta::Role::Attribute v2.2.2 + MooseX::Attribute::Deflator::Moose v2.2.2 + MooseX::Attribute::Deflator::Registry v2.2.2 + MooseX::Attribute::Deflator::Structured v2.2.2 + MooseX::Attribute::LazyInflator v2.2.2 + MooseX::Attribute::LazyInflator::Meta::Role::ApplicationToClass v2.2.2 + MooseX::Attribute::LazyInflator::Meta::Role::ApplicationToRole v2.2.2 + MooseX::Attribute::LazyInflator::Meta::Role::Attribute v2.2.2 + MooseX::Attribute::LazyInflator::Meta::Role::Composite v2.2.2 + MooseX::Attribute::LazyInflator::Meta::Role::Method::Accessor v2.2.2 + MooseX::Attribute::LazyInflator::Meta::Role::Method::Constructor v2.2.2 + MooseX::Attribute::LazyInflator::Meta::Role::Role v2.2.2 + MooseX::Attribute::LazyInflator::Role::Class v2.2.2 requirements: DateTime 0 Devel::PartialDump 0 @@ -5311,9 +5219,6 @@ DISTRIBUTIONS MooseX-ClassAttribute-0.27 pathname: D/DR/DROLSKY/MooseX-ClassAttribute-0.27.tar.gz provides: - Child undef - Delegatee undef - HasClassAttribute undef MooseX::ClassAttribute 0.27 MooseX::ClassAttribute::Meta::Role::Attribute 0.27 MooseX::ClassAttribute::Trait::Application 0.27 @@ -5324,7 +5229,6 @@ DISTRIBUTIONS MooseX::ClassAttribute::Trait::Mixin::HasClassAttributes 0.27 MooseX::ClassAttribute::Trait::Role 0.27 MooseX::ClassAttribute::Trait::Role::Composite 0.27 - SharedTests undef requirements: ExtUtils::MakeMaker 6.30 List::MoreUtils 0 @@ -5549,7 +5453,7 @@ DISTRIBUTIONS MooseX-Types-ElasticSearch-0.0.4 pathname: P/PE/PERLER/MooseX-Types-ElasticSearch-0.0.4.tar.gz provides: - MooseX::Types::ElasticSearch 0.000004 + MooseX::Types::ElasticSearch v0.0.4 requirements: DateTime::Format::Epoch::Unix 0 DateTime::Format::ISO8601 0 @@ -5642,7 +5546,7 @@ DISTRIBUTIONS Mouse-v2.4.5 pathname: S/SY/SYOHEX/Mouse-v2.4.5.tar.gz provides: - Mouse 2.004005 + Mouse v2.4.5 Mouse::Exporter undef Mouse::Meta::Attribute undef Mouse::Meta::Class undef @@ -5654,15 +5558,17 @@ DISTRIBUTIONS Mouse::Meta::Module undef Mouse::Meta::Role undef Mouse::Meta::Role::Application undef + Mouse::Meta::Role::Application::RoleSummation undef Mouse::Meta::Role::Composite undef Mouse::Meta::Role::Method undef Mouse::Meta::TypeConstraint undef Mouse::Object undef Mouse::PurePerl undef - Mouse::Role 2.004005 - Mouse::Spec 2.004005 + Mouse::Role v2.4.5 + Mouse::Spec v2.4.5 + Mouse::Tiny v2.4.5 Mouse::TypeRegistry undef - Mouse::Util 2.004005 + Mouse::Util v2.4.5 Mouse::Util::MetaRole undef Mouse::Util::TypeConstraints undef Squirrel undef @@ -5813,6 +5719,7 @@ DISTRIBUTIONS Net::Fastly::Backend undef Net::Fastly::BelongsToServiceAndVersion undef Net::Fastly::Client undef + Net::Fastly::Client::UserAgent undef Net::Fastly::Condition undef Net::Fastly::Customer undef Net::Fastly::Director undef @@ -5826,6 +5733,7 @@ DISTRIBUTIONS Net::Fastly::Settings undef Net::Fastly::Stats undef Net::Fastly::Syslog undef + Net::Fastly::UA undef Net::Fastly::User undef Net::Fastly::VCL undef Net::Fastly::Version undef @@ -5927,7 +5835,6 @@ DISTRIBUTIONS Net-OpenID-Consumer-1.18 pathname: W/WR/WROG/Net-OpenID-Consumer-1.18.tar.gz provides: - FakeFetch undef Net::OpenID::Association 1.18 Net::OpenID::ClaimedIdentity 1.18 Net::OpenID::Consumer 1.18 @@ -6278,71 +6185,71 @@ DISTRIBUTIONS Test::Object 0.07 Test::SubCalls 1.07 perl 5.006 - PPIx-Regexp-0.048 - pathname: W/WY/WYANT/PPIx-Regexp-0.048.tar.gz - provides: - PPIx::Regexp 0.048 - PPIx::Regexp::Constant 0.048 - PPIx::Regexp::Dumper 0.048 - PPIx::Regexp::Element 0.048 - PPIx::Regexp::Lexer 0.048 - PPIx::Regexp::Node 0.048 - PPIx::Regexp::Node::Range 0.048 - PPIx::Regexp::Node::Unknown 0.048 - PPIx::Regexp::StringTokenizer 0.048 - PPIx::Regexp::Structure 0.048 - PPIx::Regexp::Structure::Assertion 0.048 - PPIx::Regexp::Structure::BranchReset 0.048 - PPIx::Regexp::Structure::Capture 0.048 - PPIx::Regexp::Structure::CharClass 0.048 - PPIx::Regexp::Structure::Code 0.048 - PPIx::Regexp::Structure::Main 0.048 - PPIx::Regexp::Structure::Modifier 0.048 - PPIx::Regexp::Structure::NamedCapture 0.048 - PPIx::Regexp::Structure::Quantifier 0.048 - PPIx::Regexp::Structure::RegexSet 0.048 - PPIx::Regexp::Structure::Regexp 0.048 - PPIx::Regexp::Structure::Replacement 0.048 - PPIx::Regexp::Structure::Subexpression 0.048 - PPIx::Regexp::Structure::Switch 0.048 - PPIx::Regexp::Structure::Unknown 0.048 - PPIx::Regexp::Support 0.048 - PPIx::Regexp::Token 0.048 - PPIx::Regexp::Token::Assertion 0.048 - PPIx::Regexp::Token::Backreference 0.048 - PPIx::Regexp::Token::Backtrack 0.048 - PPIx::Regexp::Token::CharClass 0.048 - PPIx::Regexp::Token::CharClass::POSIX 0.048 - PPIx::Regexp::Token::CharClass::POSIX::Unknown 0.048 - PPIx::Regexp::Token::CharClass::Simple 0.048 - PPIx::Regexp::Token::Code 0.048 - PPIx::Regexp::Token::Comment 0.048 - PPIx::Regexp::Token::Condition 0.048 - PPIx::Regexp::Token::Control 0.048 - PPIx::Regexp::Token::Delimiter 0.048 - PPIx::Regexp::Token::Greediness 0.048 - PPIx::Regexp::Token::GroupType 0.048 - PPIx::Regexp::Token::GroupType::Assertion 0.048 - PPIx::Regexp::Token::GroupType::BranchReset 0.048 - PPIx::Regexp::Token::GroupType::Code 0.048 - PPIx::Regexp::Token::GroupType::Modifier 0.048 - PPIx::Regexp::Token::GroupType::NamedCapture 0.048 - PPIx::Regexp::Token::GroupType::Subexpression 0.048 - PPIx::Regexp::Token::GroupType::Switch 0.048 - PPIx::Regexp::Token::Interpolation 0.048 - PPIx::Regexp::Token::Literal 0.048 - PPIx::Regexp::Token::Modifier 0.048 - PPIx::Regexp::Token::NoOp 0.048 - PPIx::Regexp::Token::Operator 0.048 - PPIx::Regexp::Token::Quantifier 0.048 - PPIx::Regexp::Token::Recursion 0.048 - PPIx::Regexp::Token::Reference 0.048 - PPIx::Regexp::Token::Structure 0.048 - PPIx::Regexp::Token::Unknown 0.048 - PPIx::Regexp::Token::Unmatched 0.048 - PPIx::Regexp::Token::Whitespace 0.048 - PPIx::Regexp::Tokenizer 0.048 - PPIx::Regexp::Util 0.048 + PPIx-Regexp-0.049 + pathname: W/WY/WYANT/PPIx-Regexp-0.049.tar.gz + provides: + PPIx::Regexp 0.049 + PPIx::Regexp::Constant 0.049 + PPIx::Regexp::Dumper 0.049 + PPIx::Regexp::Element 0.049 + PPIx::Regexp::Lexer 0.049 + PPIx::Regexp::Node 0.049 + PPIx::Regexp::Node::Range 0.049 + PPIx::Regexp::Node::Unknown 0.049 + PPIx::Regexp::StringTokenizer 0.049 + PPIx::Regexp::Structure 0.049 + PPIx::Regexp::Structure::Assertion 0.049 + PPIx::Regexp::Structure::BranchReset 0.049 + PPIx::Regexp::Structure::Capture 0.049 + PPIx::Regexp::Structure::CharClass 0.049 + PPIx::Regexp::Structure::Code 0.049 + PPIx::Regexp::Structure::Main 0.049 + PPIx::Regexp::Structure::Modifier 0.049 + PPIx::Regexp::Structure::NamedCapture 0.049 + PPIx::Regexp::Structure::Quantifier 0.049 + PPIx::Regexp::Structure::RegexSet 0.049 + PPIx::Regexp::Structure::Regexp 0.049 + PPIx::Regexp::Structure::Replacement 0.049 + PPIx::Regexp::Structure::Subexpression 0.049 + PPIx::Regexp::Structure::Switch 0.049 + PPIx::Regexp::Structure::Unknown 0.049 + PPIx::Regexp::Support 0.049 + PPIx::Regexp::Token 0.049 + PPIx::Regexp::Token::Assertion 0.049 + PPIx::Regexp::Token::Backreference 0.049 + PPIx::Regexp::Token::Backtrack 0.049 + PPIx::Regexp::Token::CharClass 0.049 + PPIx::Regexp::Token::CharClass::POSIX 0.049 + PPIx::Regexp::Token::CharClass::POSIX::Unknown 0.049 + PPIx::Regexp::Token::CharClass::Simple 0.049 + PPIx::Regexp::Token::Code 0.049 + PPIx::Regexp::Token::Comment 0.049 + PPIx::Regexp::Token::Condition 0.049 + PPIx::Regexp::Token::Control 0.049 + PPIx::Regexp::Token::Delimiter 0.049 + PPIx::Regexp::Token::Greediness 0.049 + PPIx::Regexp::Token::GroupType 0.049 + PPIx::Regexp::Token::GroupType::Assertion 0.049 + PPIx::Regexp::Token::GroupType::BranchReset 0.049 + PPIx::Regexp::Token::GroupType::Code 0.049 + PPIx::Regexp::Token::GroupType::Modifier 0.049 + PPIx::Regexp::Token::GroupType::NamedCapture 0.049 + PPIx::Regexp::Token::GroupType::Subexpression 0.049 + PPIx::Regexp::Token::GroupType::Switch 0.049 + PPIx::Regexp::Token::Interpolation 0.049 + PPIx::Regexp::Token::Literal 0.049 + PPIx::Regexp::Token::Modifier 0.049 + PPIx::Regexp::Token::NoOp 0.049 + PPIx::Regexp::Token::Operator 0.049 + PPIx::Regexp::Token::Quantifier 0.049 + PPIx::Regexp::Token::Recursion 0.049 + PPIx::Regexp::Token::Reference 0.049 + PPIx::Regexp::Token::Structure 0.049 + PPIx::Regexp::Token::Unknown 0.049 + PPIx::Regexp::Token::Unmatched 0.049 + PPIx::Regexp::Token::Whitespace 0.049 + PPIx::Regexp::Tokenizer 0.049 + PPIx::Regexp::Util 0.049 requirements: List::MoreUtils 0 List::Util 0 @@ -6427,7 +6334,6 @@ DISTRIBUTIONS Package-Stash-XS-0.28 pathname: D/DO/DOY/Package-Stash-XS-0.28.tar.gz provides: - CompileTime undef Package::Stash::XS 0.28 requirements: ExtUtils::MakeMaker 6.30 @@ -6544,10 +6450,10 @@ DISTRIBUTIONS Text::CSV_XS 0.80 perl 5.005 strict 0 - Parse-LocalDistribution-0.16 - pathname: I/IS/ISHIGAKI/Parse-LocalDistribution-0.16.tar.gz + Parse-LocalDistribution-0.17 + pathname: I/IS/ISHIGAKI/Parse-LocalDistribution-0.17.tar.gz provides: - Parse::LocalDistribution 0.16 + Parse::LocalDistribution 0.17 requirements: ExtUtils::MakeMaker::CPANfile 0.07 File::Find 0 @@ -6610,8 +6516,8 @@ DISTRIBUTIONS Path-FindDev-0.5.2 pathname: K/KE/KENTNL/Path-FindDev-0.5.2.tar.gz provides: - Path::FindDev 0.005002 - Path::FindDev::Object 0.005002 + Path::FindDev v0.5.2 + Path::FindDev::Object v0.5.2 requirements: Carp 0 Class::Tiny 0.010 @@ -6692,7 +6598,7 @@ DISTRIBUTIONS pathname: D/DA/DAGOLDEN/Path-Tiny-0.088.tar.gz provides: Path::Tiny 0.088 - flock undef + Path::Tiny::Error 0.088 requirements: Carp 0 Cwd 0 @@ -6969,14 +6875,23 @@ DISTRIBUTIONS pathname: S/SH/SHANCOCK/Perl-Tidy-20160302.tar.gz provides: Perl::Tidy 20160302 + Perl::Tidy::Debugger 20160302 Perl::Tidy::DevNull 20160302 Perl::Tidy::Diagnostics 20160302 + Perl::Tidy::FileWriter 20160302 + Perl::Tidy::Formatter 20160302 Perl::Tidy::HtmlWriter 20160302 Perl::Tidy::IOScalar 20160302 Perl::Tidy::IOScalarArray 20160302 + Perl::Tidy::IndentationItem 20160302 + Perl::Tidy::LineBuffer 20160302 Perl::Tidy::LineSink 20160302 Perl::Tidy::LineSource 20160302 Perl::Tidy::Logger 20160302 + Perl::Tidy::Tokenizer 20160302 + Perl::Tidy::VerticalAligner 20160302 + Perl::Tidy::VerticalAligner::Alignment 20160302 + Perl::Tidy::VerticalAligner::Line 20160302 requirements: ExtUtils::MakeMaker 0 PerlIO-gzip-0.19 @@ -7038,7 +6953,6 @@ DISTRIBUTIONS Pithub::Result::SharedCache 0.01033 Pithub::Search 0.01033 Pithub::SearchV3 0.01033 - Pithub::Test undef Pithub::Users 0.01033 Pithub::Users::Emails 0.01033 Pithub::Users::Followers 0.01033 @@ -7360,9 +7274,6 @@ DISTRIBUTIONS Pod::POM::View::HTML 2.01 Pod::POM::View::Pod 2.01 Pod::POM::View::Text 2.01 - PodPOMTestCase undef - PodPOMTestLib undef - YAML::Tiny 1.36 requirements: Encode 0 Exporter 0 @@ -7453,6 +7364,9 @@ DISTRIBUTIONS pathname: S/SA/SANKO/Readonly-2.01.tar.gz provides: Readonly 2.01 + Readonly::Array undef + Readonly::Hash undef + Readonly::Scalar undef requirements: Module::Build::Tiny 0.035 perl v5.6.0 @@ -7507,18 +7421,17 @@ DISTRIBUTIONS POSIX 0 Regexp::Common 0 Test::More 0.40 - Role-Tiny-2.000001 - pathname: H/HA/HAARG/Role-Tiny-2.000001.tar.gz + Role-Tiny-2.000002 + pathname: H/HA/HAARG/Role-Tiny-2.000002.tar.gz provides: - Role::Tiny 2.000001 - Role::Tiny::With 2.000001 + Role::Tiny 2.000002 + Role::Tiny::With 2.000002 requirements: Exporter 5.57 perl 5.006 SQL-Abstract-1.81 pathname: R/RI/RIBASUSHI/SQL-Abstract-1.81.tar.gz provides: - DBIx::Class::Storage::Debug::PrettyPrint undef SQL::Abstract 1.81 SQL::Abstract::Test undef SQL::Abstract::Tree undef @@ -7755,13 +7668,6 @@ DISTRIBUTIONS provides: Sub::Exporter 0.987 Sub::Exporter::Util 0.987 - Test::SubExporter::DashSetup undef - Test::SubExporter::Faux undef - Test::SubExporter::GroupGen undef - Test::SubExporter::GroupGenSubclass undef - Test::SubExporter::ObjGen undef - Test::SubExporter::ObjGen::Obj undef - Test::SubExporter::s_e undef requirements: Carp 0 Data::OptList 0.100 @@ -7774,8 +7680,6 @@ DISTRIBUTIONS pathname: R/RJ/RJBS/Sub-Exporter-ForMethods-0.100052.tar.gz provides: Sub::Exporter::ForMethods 0.100052 - TestDexp undef - TestMexp undef requirements: ExtUtils::MakeMaker 0 Scalar::Util 0 @@ -7901,8 +7805,8 @@ DISTRIBUTIONS Test-Compile-v1.3.0 pathname: E/EG/EGILES/Test-Compile-v1.3.0.tar.gz provides: - Test::Compile 1.003000 - Test::Compile::Internal 1.003000 + Test::Compile v1.3.0 + Test::Compile::Internal v1.3.0 requirements: Module::Build 0.38 UNIVERSAL::require 0 @@ -8206,8 +8110,6 @@ DISTRIBUTIONS Test::Routine::Test 0.020 Test::Routine::Test::Role 0.020 Test::Routine::Util 0.020 - t::lib::NoGood undef - t::lib::NoGood2 undef requirements: Carp 0 Class::Load 0 @@ -8292,11 +8194,11 @@ DISTRIBUTIONS Test-Trap-v0.3.2 pathname: E/EB/EBHANSSEN/Test-Trap-v0.3.2.tar.gz provides: - Test::Trap 0.003002 - Test::Trap::Builder 0.003002 - Test::Trap::Builder::PerlIO 0.003002 - Test::Trap::Builder::SystemSafe 0.003002 - Test::Trap::Builder::TempFile 0.003002 + Test::Trap v0.3.2 + Test::Trap::Builder v0.3.2 + Test::Trap::Builder::PerlIO v0.3.2 + Test::Trap::Builder::SystemSafe v0.3.2 + Test::Trap::Builder::TempFile v0.3.2 requirements: Carp 0 Data::Dump 0 @@ -8682,7 +8584,6 @@ DISTRIBUTIONS UNIVERSAL-require-0.18 pathname: N/NE/NEILB/UNIVERSAL-require-0.18.tar.gz provides: - UNIVERSAL 0.18 UNIVERSAL::require 0.18 requirements: Carp 0 @@ -8931,7 +8832,6 @@ DISTRIBUTIONS WWW-Mechanize-Cached-1.50 pathname: O/OA/OALDERS/WWW-Mechanize-Cached-1.50.tar.gz provides: - TestCache undef WWW::Mechanize::Cached 1.50 requirements: Cache::FileCache 0 @@ -9023,7 +8923,6 @@ DISTRIBUTIONS XML-Simple-2.22 pathname: G/GR/GRANTM/XML-Simple-2.22.tar.gz provides: - TagsToUpper undef XML::Simple 2.22 requirements: ExtUtils::MakeMaker 0 @@ -9084,7 +8983,6 @@ DISTRIBUTIONS pathname: I/IL/ILMARI/bareword-filehandles-0.003.tar.gz provides: bareword::filehandles 0.003 - inc::BarewordFilehandlesMakeMaker undef requirements: B::Hooks::OP::Check 0 ExtUtils::Depends 0 @@ -9377,8 +9275,6 @@ DISTRIBUTIONS multidimensional-0.011 pathname: I/IL/ILMARI/multidimensional-0.011.tar.gz provides: - MyTest undef - inc::MultidimensionalMakeMaker undef multidimensional 0.011 requirements: B::Hooks::OP::Check 0.19 @@ -9413,11 +9309,10 @@ DISTRIBUTIONS ExtUtils::MakeMaker 0 Package::Stash 0.23 perl 5.008001 - strictures-2.000002 - pathname: H/HA/HAARG/strictures-2.000002.tar.gz + strictures-2.000003 + pathname: H/HA/HAARG/strictures-2.000003.tar.gz provides: - ExtUtils::HasCompiler 0.012 - strictures 2.000002 + strictures 2.000003 strictures::extra undef requirements: bareword::filehandles 0 @@ -9427,7 +9322,6 @@ DISTRIBUTIONS version-0.9916 pathname: J/JP/JPEACOCK/version-0.9916.tar.gz provides: - charstar 0.9916 version 0.9916 version::regex 0.9916 version::vpp 0.9916 From a337324071b73cd7c9a488dae242b2fcbfcc0d4b Mon Sep 17 00:00:00 2001 From: Mickey Nasriachi Date: Thu, 21 Apr 2016 15:22:38 +0100 Subject: [PATCH 170/329] missing 1 --- lib/MetaCPAN/Document/Author/Profile.pm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/MetaCPAN/Document/Author/Profile.pm b/lib/MetaCPAN/Document/Author/Profile.pm index eec7416a5..1ce0b37a7 100644 --- a/lib/MetaCPAN/Document/Author/Profile.pm +++ b/lib/MetaCPAN/Document/Author/Profile.pm @@ -24,3 +24,5 @@ has id => ( ); __PACKAGE__->meta->make_immutable; + +1; From cb78d01093fa6f6fcd2c0eb7918e520675820d5b Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Thu, 21 Apr 2016 14:58:33 +0100 Subject: [PATCH 171/329] Adds docs for dependency management. --- docs/dependencies.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 docs/dependencies.md diff --git a/docs/dependencies.md b/docs/dependencies.md new file mode 100644 index 000000000..3e0c0cced --- /dev/null +++ b/docs/dependencies.md @@ -0,0 +1,13 @@ +# Carton + +We use Carton to manage and pin our dependencies. To run carton on the VM, you +have two options: + + vagrant provision + +This will run a `carton install` along with any other general bootstrapping +which is required, but it can be a bit slow. + +If you ssh to your vagrant box, this is faster: + + sh /home/vagrant/bin/metacpan-api-carton install From b5d7ecdea1d843c1abd123f8fcd60295d52b876b Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Thu, 21 Apr 2016 15:22:56 +0100 Subject: [PATCH 172/329] Allow explicit undef in return. --- .perlcriticrc | 1 + lib/MetaCPAN/Document/File.pm | 373 --------- lib/MetaCPAN/Document/File/Set.pm | 1255 +++++++++++++++++++++++++++++ 3 files changed, 1256 insertions(+), 373 deletions(-) create mode 100644 lib/MetaCPAN/Document/File/Set.pm diff --git a/.perlcriticrc b/.perlcriticrc index dae43fb1c..5b072476d 100644 --- a/.perlcriticrc +++ b/.perlcriticrc @@ -13,6 +13,7 @@ verbose = 11 [-ValuesAndExpressions::ProhibitAccessOfPrivateData] [-ValuesAndExpressions::ProhibitNoisyQuotes] [-Variables::ProhibitPunctuationVars] +[-Subroutines::ProhibitExplicitReturnUndef] [CodeLayout::RequireTrailingCommas] severity = 4 diff --git a/lib/MetaCPAN/Document/File.pm b/lib/MetaCPAN/Document/File.pm index 6eb7ab420..d2e240205 100644 --- a/lib/MetaCPAN/Document/File.pm +++ b/lib/MetaCPAN/Document/File.pm @@ -878,378 +878,5 @@ sub full_path { return join( "/", $self->author, $self->release, $self->path ); } -__PACKAGE__->meta->make_immutable; - -package MetaCPAN::Document::File::Set; -use Moose; -extends 'ElasticSearchX::Model::Document::Set'; - -my @ROGUE_DISTRIBUTIONS - = qw(kurila perl_debug perl-5.005_02+apache1.3.3+modperl pod2texi perlbench spodcxx Bundle-Everything); - -sub find { - my ( $self, $module ) = @_; - my @candidates = $self->index->type("file")->filter( - { - bool => { - must => [ - { term => { 'indexed' => \1, } }, - { term => { 'authorized' => \1 } }, - { term => { 'status' => 'latest', } }, - ], - should => [ - { term => { 'documentation' => $module } }, - { - nested => { - path => 'module', - filter => - { term => { 'module.name' => $module } }, - } - } - ] - } - } - )->sort( - [ - { 'date' => { order => "desc" } }, - { 'mime' => { order => "asc" } }, - { 'stat.mtime' => { order => 'desc' } } - ] - )->size(100)->all; - - my ($file) = grep { - grep { $_->indexed && $_->authorized && $_->name eq $module } - @{ $_->module || [] } - } grep { !$_->documentation || $_->documentation eq $module } - @candidates; - - $file ||= shift @candidates; - return $file ? $self->get( $file->id ) : undef; -} - -sub find_pod { - my ( $self, $name ) = @_; - my $file = $self->find($name); - return $file unless ($file); - my ($module) - = grep { $_->indexed && $_->authorized && $_->name eq $name } - @{ $file->module || [] }; - if ( $module && ( my $pod = $module->associated_pod ) ) { - my ( $author, $release, @path ) = split( /\//, $pod ); - return $self->get( - { - author => $author, - release => $release, - path => join( "/", @path ), - } - ); - } - else { - return $file; - } -} - -# return files that contain modules that match the given dist -# NOTE: these still need to be filtered by authorized/indexed -# TODO: test that we are getting the correct version (latest) -sub find_provided_by { - my ( $self, $release ) = @_; - return $self->filter( - { - bool => { - must => [ - { term => { 'release' => $release->{name} } }, - { term => { 'author' => $release->{author} } }, - { term => { 'file.module.authorized' => 1 } }, - { term => { 'file.module.indexed' => 1 } }, - ] - } - } - )->size(999)->all; -} - -# filter find_provided_by results for indexed/authorized modules -# and return a list of package names -sub find_module_names_provided_by { - my ( $self, $release ) = @_; - my $mods = $self->inflate(0)->find_provided_by($release); - return ( - map { $_->{name} } - grep { $_->{indexed} && $_->{authorized} } - map { @{ $_->{_source}->{module} } } @{ $mods->{hits}->{hits} } - ); -} - -=head2 find_download_url - - -cpanm Foo -=> status: latest, maturity: released - -cpanm --dev Foo -=> status: -backpan, sort_by: version_numified,date - -cpanm Foo~1.0 -=> status: latest, maturity: released, module.version_numified: gte: 1.0 - -cpanm --dev Foo~1.0 --> status: -backpan, module.version_numified: gte: 1.0, sort_by: version_numified,date - -cpanm Foo~<2 -=> maturity: released, module.version_numified: lt: 2, sort_by: status,version_numified,date - -cpanm --dev Foo~<2 -=> status: -backpan, module.version_numified: lt: 2, sort_by: status,version_numified,date - - $file->find_download_url( "Foo", { version => $version, dev => 0|1 }); - -Sorting: - - if it's stable: - prefer latest > cpan > backpan - then sort by version desc - then sort by date descending (rev chron) - - if it's dev: - sort by version desc - sort by date descending (reverse chronologically) - - -=cut - -sub find_download_url { - my ( $self, $module, $args ) = @_; - $args ||= {}; - - my $dev = $args->{dev}; - my $version = $args->{version}; - my $explicit_version = $version && $version =~ /==/; - - # exclude backpan if dev, and - # require released modules if neither dev nor explicit version - my @filters - = $dev ? { not => { term => { status => 'backpan' } } } - : !$explicit_version ? { term => { maturity => 'released' } } - : (); - - # filters to be applied to the nested modules - my $module_f = { - nested => { - path => 'module', - inner_hits => { _source => 'version' }, - filter => { - bool => { - must => [ - { term => { 'module.authorized' => \1 } }, - { term => { 'module.indexed' => \1 } }, - { term => { 'module.name' => $module } }, - $self->_version_filters($version) - ] - } - } - } - }; - - my $filter - = @filters - ? { bool => { must => [ @filters, $module_f ] } } - : $module_f; - - # sort by score, then version desc, then date desc - my @sort = ( - '_score', - { - 'module.version_numified' => { - mode => 'max', - order => 'desc', - nested_filter => $module_f->{nested}{filter} - } - }, - { date => { order => 'desc' } } - ); - - my $query; - - if ($dev) { - $query = { filtered => { filter => $filter } }; - } - else { - # if not dev, then prefer latest > cpan > backpan - $query = { - function_score => { - filter => $filter, - score_mode => 'first', - boost_mode => 'replace', - functions => [ - { - filter => { term => { status => 'latest' } }, - weight => 3 - }, - { - filter => { term => { status => 'cpan' } }, - weight => 2 - }, - { filter => { match_all => {} }, weight => 1 }, - ] - } - }; - } - - return $self->size(1)->query($query) - ->source( [ 'download_url', 'date', 'status' ] )->sort( \@sort ); - -} - -sub _version_filters { - my ( $self, $version ) = @_; - - return () unless $version; - - if ( $version =~ s/^==\s*// ) { - return { term => { 'module.version' => $version }, }; - } - elsif ( $version !~ /\s/ ) { - return { - range => { - 'module.version_numified' => - { 'gte' => $self->_numify($version) } - }, - }; - } - else { - my %ops = qw(< lt <= lte > gt >= gte); - my ( %range, @exclusion ); - my @requirements = split /,\s*/, $version; - for my $r (@requirements) { - if ( $r =~ s/^([<>]=?)\s*// ) { - $range{ $ops{$1} } = $self->_numify($r); - } - elsif ( $r =~ s/\!=\s*// ) { - push @exclusion, $self->_numify($r); - } - } - - my @filters - = ( { range => { 'module.version_numified' => \%range } }, ); - - if (@exclusion) { - push @filters, { - not => { - or => [ - map { - +{ - term => { - 'module.version_numified' => - $self->_numify($_) - } - } - } @exclusion - ] - }, - }; - } - - return @filters; - } -} - -sub _numify { - my ( $self, $ver ) = @_; - $ver =~ s/_//g; - version->new($ver)->numify; -} - -=head2 history - -Find the history of a given module/documentation. - -=cut - -sub history { - my ( $self, $type, $module, @path ) = @_; - my $search - = $type eq "module" ? $self->filter( - { - nested => { - path => "module", - query => { - constant_score => { - filter => { - bool => { - must => [ - { term => { "module.authorized" => \1 } }, - { term => { "module.indexed" => \1 } }, - { term => { "module.name" => $module } }, - ] - } - } - } - } - } - } - ) - : $type eq "file" ? $self->filter( - { - bool => { - must => [ - { term => { "file.path" => join( "/", @path ) } }, - { term => { "file.distribution" => $module } }, - ] - } - } - ) - : $self->filter( - { - bool => { - must => [ - { term => { "file.documentation" => $module } }, - { term => { "file.indexed" => \1 } }, - { term => { "file.authorized" => \1 } }, - ] - } - } - ); - return $search->sort( [ { "file.date" => "desc" } ] ); -} - -sub autocomplete { - my ( $self, @terms ) = @_; - my $query = join( " ", @terms ); - return $self unless $query; - - return $self->search_type('dfs_query_then_fetch')->query( - { - filtered => { - query => { - multi_match => { - query => $query, - type => 'most_fields', - fields => [ 'documentation', 'documentation.*' ], - analyzer => 'camelcase', - minimum_should_match => "80%" - }, - }, - filter => { - bool => { - must => [ - { exists => { field => 'documentation' } }, - { term => { 'indexed' => \1 } }, - { term => { 'status' => 'latest' } }, - { term => { 'authorized' => \1 } } - ], - must_not => [ - { - terms => { - 'distribution' => \@ROGUE_DISTRIBUTIONS - } - }, - ], - } - } - } - } - )->sort( [ '_score', 'documentation' ] ); -} - __PACKAGE__->meta->make_immutable; 1; diff --git a/lib/MetaCPAN/Document/File/Set.pm b/lib/MetaCPAN/Document/File/Set.pm new file mode 100644 index 000000000..6eb7ab420 --- /dev/null +++ b/lib/MetaCPAN/Document/File/Set.pm @@ -0,0 +1,1255 @@ +package MetaCPAN::Document::File; + +use strict; +use warnings; +use utf8; + +use Moose; +use ElasticSearchX::Model::Document; + +use Encode; +use List::AllUtils qw( any ); +use MetaCPAN::Document::Module; +use MetaCPAN::Types qw(:all); +use MetaCPAN::Util; +use Plack::MIME; +use Pod::Text; +use Try::Tiny; +use URI::Escape (); + +Plack::MIME->add_type( ".t" => "text/x-script.perl" ); +Plack::MIME->add_type( ".pod" => "text/x-pod" ); +Plack::MIME->add_type( ".xs" => "text/x-c" ); + +my @NOT_PERL_FILES = qw(SIGNATURE); + +=head1 PROPERTIES + +=head2 abstract + +Abstract of the documentation (if any). This is built by parsing the +C section. It also sets L if it succeeds. + +=cut + +has abstract => ( + is => 'ro', + lazy => 1, + builder => '_build_abstract', + index => 'analyzed', +); + +sub _build_abstract { + my $self = shift; + return undef unless ( $self->is_perl_file ); + my $text = ${ $self->content }; + my ( $documentation, $abstract ); + my $section = MetaCPAN::Util::extract_section( $text, 'NAME' ); + + # if it's a POD file without a name section, let's try to generate + # an abstract and name based on filename + if ( !$section && $self->path =~ /\.pod$/ ) { + $section = $self->path; + $section =~ s{^(lib|pod|docs)/}{}; + $section =~ s{\.pod$}{}; + $section =~ s{/}{::}g; + } + + return undef unless ($section); + $section =~ s/^=\w+.*$//mg; + $section =~ s/X<.*?>//mg; + + if ( $section =~ /^\s*(\S+)((\h+-+\h+(.+))|(\r?\n\h*\r?\n\h*(.+)))?/ms ) { + chomp( $abstract = $4 || $6 ) if ( $4 || $6 ); + my $name = MetaCPAN::Util::strip_pod($1); + $documentation = $name if ( $name =~ /^[\w\.:\-_']+$/ ); + } + if ($abstract) { + $abstract =~ s/^=\w+.*$//xms; + $abstract =~ s{\r?\n\h*\r?\n\h*.*$}{}xms; + $abstract =~ s{\n}{ }gxms; + $abstract =~ s{\s+$}{}gxms; + $abstract =~ s{(\s)+}{$1}gxms; + $abstract = MetaCPAN::Util::strip_pod($abstract); + } + if ($documentation) { + $self->_set_documentation( MetaCPAN::Util::strip_pod($documentation) ); + } + return $abstract; +} + +=head2 id + +Unique identifier of the release. +Consists of the L's pauseid, the release L, +and the file path. +See L. + +=cut + +has id => ( + is => 'ro', + id => [qw(author release path)], +); + +=head2 module + +An ArrayRef of L objects, that represent +modules defined in that class (i.e. package declarations). + +=cut + +has module => ( + is => 'ro', + isa => Module, + type => 'nested', + include_in_root => 1, + coerce => 1, + clearer => 'clear_module', + writer => '_set_module', + lazy => 1, + default => sub { [] }, +); + +=head2 download_url + +B + +Download URL of the release + +=cut + +has download_url => ( + is => 'ro', + required => 1 +); + +=head2 date + +B + +Release date (i.e. C of the archive file). + +=cut + +has date => ( + is => 'ro', + required => 1, + isa => 'DateTime', +); + +=head2 description + +Contains the C section of the POD if any. Will be stripped from +whitespaces and POD commands. + +=cut + +has description => ( + is => 'ro', + lazy => 1, + builder => '_build_description', + index => 'analyzed', +); + +sub _build_description { + my $self = shift; + return undef unless ( $self->is_perl_file ); + my $section + = MetaCPAN::Util::extract_section( ${ $self->content }, + 'DESCRIPTION' ); + return undef unless ($section); + my $parser = Pod::Text->new; + my $text = ""; + $parser->output_string( \$text ); + + try { + $parser->parse_string_document("=pod\n\n$section"); + } + catch { + warn $_[0]; + }; + + $text =~ s/\s+/ /g; + $text =~ s/^\s+//; + $text =~ s/\s+$//; + return $text; +} + +=head2 distribution + +=head2 distribution.analyzed + +=head2 distribution.camelcase + +Name of the distribution (e.g. C). + +=head2 author + +PAUSE ID of the author. + +=head2 status + +Valid values are C, C, and C. The most recent upload +of a distribution is tagged as C as long as it's not a developer +release, unless there are only developer releases. Everything else is +tagged C. Once a release is deleted from PAUSE it is tagged as +C. + +=cut + +has status => ( is => 'ro', required => 1, default => 'cpan' ); + +=head2 binary + +File is binary or not. + +=cut + +has binary => ( + is => 'ro', + isa => Bool, + required => 1, + default => 0, +); + +=head2 authorized + +See L. + +=cut + +has authorized => ( + required => 1, + is => 'ro', + isa => Bool, + default => 1, + writer => '_set_authorized', +); + +=head2 maturity + +Maturity of the release. This can either be C or C. +See L. + +=cut + +has maturity => ( + is => 'ro', + required => 1, + default => 'released', +); + +=head2 directory + +Return true if this object represents a directory. + +=cut + +has directory => ( + is => 'ro', + required => 1, + isa => Bool, + default => 0, +); + +=head2 documentation + +Holds the name for the documentation in this file. + +If the file L, the name is derived from the +C section. If the file L and the +name from the C section matches one of the modules in L, +it returns the name. Otherwise it returns the name of the first module +in L. If there are no modules in the file the documentation is +set to C. + +=cut + +has documentation => ( + is => 'ro', + lazy => 1, + builder => '_build_documentation', + index => 'analyzed', + predicate => 'has_documentation', + analyzer => [qw(standard camelcase lowercase edge edge_camelcase)], + clearer => 'clear_documentation', + writer => '_set_documentation', +); + +sub _build_documentation { + my $self = shift; + $self->_build_abstract; + my $documentation = $self->documentation if ( $self->has_documentation ); + return undef unless length $documentation; + + my @indexed = grep { $_->indexed } @{ $self->module || [] }; + if ( $documentation && $self->is_pod_file ) { + return $documentation; + } + elsif ( $documentation && grep { $_->name eq $documentation } @indexed ) { + return $documentation; + } + elsif (@indexed) { + return $indexed[0]->name; + } + elsif ( !@{ $self->module || [] } ) { + return $documentation; + } + else { + return undef; + } +} + +=head2 indexed + +B + +Indicates whether the file should be included in the search index or +not. See L for a more verbose explanation. + +=cut + +has indexed => ( + required => 1, + is => 'ro', + isa => Bool, + lazy => 1, + default => sub { + my ($self) = @_; + return 0 if $self->is_in_other_files; + return 0 if !$self->metadata->should_index_file( $self->path ); + return 1; + }, + writer => '_set_indexed', +); + +=head2 level + +Level of this file in the directory tree of the release (i.e. C +has a level of C<0>). + +=cut + +has level => ( + is => 'ro', + isa => Int, + lazy => 1, + builder => '_build_level', +); + +sub _build_level { + my $self = shift; + my @level = split( /\//, $self->path ); + return @level - 1; +} + +=head2 pod + +Pure text format of the pod (see L). Consecutive whitespaces +are removed to save space and for better snippet previews. + +=cut + +has pod => ( + is => 'ro', + isa => ScalarRef, + lazy => 1, + builder => '_build_pod', + index => 'analyzed', + not_analyzed => 0, + store => 'no', + term_vector => 'with_positions_offsets', +); + +sub _build_pod { + my $self = shift; + return \'' unless ( $self->is_perl_file ); + + my $parser = Pod::Text->new( sentence => 0, width => 78 ); + + # We don't need to index pod errors. + $parser->no_errata_section(1); + + my $content = ${ $self->content }; + + # The pod parser is very liberal and will "start" a pod document when it + # sees /^=[a-zA-Z]/ even though it might be binary like /^=F\0?\{/. + # So munge any lines that might match but are not usual pod directives + # that people would use (we don't need to index non-regular pod). + # Also see the test and comments in t/document/file.t for how + # bizarre constructs are handled. + + $content =~ s/ + # Pod::Simple::parse_string_document() "supports \r, \n ,\r\n"... + (?: + \A|\r|\r\n|\n) # beginning of line + \K # (keep those characters) + + ( + =[a-zA-Z][a-zA-Z0-9]* # looks like pod + (?! # but followed by something that isn't pod: + [a-zA-Z0-9] # more pod chars (the star won't be greedy enough) + | \s # whitespace ("=head1 NAME\n", "=item\n") + | \Z # end of line or end of doc + ) + ) + + # Prefix (to hide from Pod parser) instead of removing. + /\0$1/gx; + + my $text = ""; + $parser->output_string( \$text ); + + try { + $parser->parse_string_document($content); + } + catch { + warn $_[0]; + }; + + $text =~ s/\s+/ /g; + $text =~ s/ \z//; + + # Remove any markers we put in the text. + # Should we remove other non-regular bytes that may come from the source? + $text =~ s/\0//g; + + return \$text; +} + +=head2 pod_lines + +ArrayRef of ArrayRefs of offset and length of pod blocks. Example: + + # Two blocks of pod, starting at line 1 and line 15 with length + # of 10 lines each + [[1,10], [15,10]] + +=cut + +has pod_lines => ( + is => 'ro', + isa => ArrayRef, + type => 'integer', + lazy => 1, + builder => '_build_pod_lines', + index => 'no', +); + +sub _build_pod_lines { + my $self = shift; + return [] unless ( $self->is_perl_file ); + my ( $lines, $slop ) = MetaCPAN::Util::pod_lines( ${ $self->content } ); + $self->_set_slop( $slop || 0 ); + return $lines; +} + +=head2 sloc + +Source Lines of Code. Strips empty lines, pod and C section from +L and returns the number of lines. + +=cut + +has sloc => ( + is => 'ro', + isa => Int, + lazy => 1, + builder => '_build_sloc', +); + +# Metrics from Perl::Metrics2::Plugin::Core. +sub _build_sloc { + my $self = shift; + return 0 unless ( $self->is_perl_file ); + + my @content = split( "\n", ${ $self->content } ); + my $pods = 0; + + # Use pod_lines data to remove pod content from string. + map { + splice( @content, $_->[0], $_->[1], map {''} 1 .. $_->[1] ) + } @{ $self->pod_lines }; + + my $sloc = 0; + while (@content) { + my $line = shift @content; + last if ( $line =~ /^\s*__(DATA|END)__/s ); + $sloc++ if ( $line !~ /^\s*#/ && $line =~ /\S/ ); + } + return $sloc; +} + +=head2 slop + +Source Lines of Pod. Returns the number of pod lines using L. + +=cut + +has slop => ( + is => 'ro', + isa => Int, + lazy => 1, + default => '_build_slop', + writer => '_set_slop', +); + +sub _build_slop { + my $self = shift; + return 0 unless ( $self->is_perl_file ); + $self->_build_pod_lines; + + # danger! infinite recursion if not set by `_build_pod_lines` + # we should probably find a better solution -- Mickey + return $self->slop; +} + +=head2 stat + +L info of the archive file. Contains C, C, +C, C and C. + +=cut + +has stat => ( + is => 'ro', + isa => Stat, + dynamic => 1, +); + +=head2 version + +Contains the raw version string. + +=cut + +has version => ( + is => 'ro', +); + +=head2 version_numified + +B + +Numeric representation of L. Contains 0 if there is no version or the +version could not be parsed. + +=cut + +has version_numified => ( + is => 'ro', + isa => Num, + lazy => 1, + builder => '_build_version_numified', +); + +sub _build_version_numified { + my $self = shift; + return 0 unless ( $self->version ); + return MetaCPAN::Util::numify_version( $self->version ); +} + +=head2 mime + +MIME type of file. Derived using L (for speed). + +=cut + +has mime => ( + is => 'ro', + lazy => 1, + builder => '_build_mime', +); + +sub _build_mime { + my $self = shift; + if ( !$self->directory + && $self->name !~ /\./ + && grep { $self->name ne $_ } @NOT_PERL_FILES ) + { + my $content = ${ $self->content }; + return "text/x-script.perl" if ( $content =~ /^#!.*?perl/ ); + } + else { + return Plack::MIME->mime_type( $self->name ) || 'text/plain'; + } +} + +has [qw(path author name)] => ( is => 'ro', required => 1 ); + +sub _build_path { + my $self = shift; + return join( '/', $self->release->name, $self->name ); +} + +has dir => ( + is => 'ro', + isa => Str, + lazy => 1, + builder => '_build_dir', + index => 'not_analyzed' +); + +sub _build_dir { + my $self = shift; + $DB::single = 1; + my $dir = $self->path; + $dir =~ s{/[^/]+$}{}; + return $dir; +} + +has [qw(release distribution)] => ( + is => 'ro', + required => 1, + analyzer => [qw(standard camelcase lowercase)], +); + +=head1 ATTRIBUTES + +These attributes are not stored. + +=head2 content + +A scalar reference to the content of the file. +Built by calling L. + +=cut + +has content => ( + is => 'ro', + isa => ScalarRef, + lazy => 1, + builder => '_build_content', + property => 0, +); + +sub _build_content { + my $self = shift; + + # NOTE: We used to remove the __DATA__ section "for performance reasons" + # however removing lines from the content will throw off pod_lines. + return $self->content_cb->(); +} + +=head2 content_cb + +Callback that returns the content of the file as a ScalarRef. + +=cut + +has content_cb => ( + is => 'ro', + property => 0, + default => sub { + sub { \'' } + }, +); + +=head2 local_path + +This attribute holds the path to the file on the local filesystem. + +=cut + +has local_path => ( + is => 'ro', + property => 0, +); + +=head2 metadata + +Reference to the L object of the release. + +=cut + +has metadata => ( + is => "ro", + lazy => 1, + default => sub { die "meta attribute missing" }, + isa => "CPAN::Meta", + property => 0, +); + +=head1 METHODS + +=head2 is_perl_file + +Return true if the file extension is one of C, C, C, C +or if the file has no extension, is not a binary file and its size is less +than 131072 bytes. This is an arbitrary limit but it keeps the pod parser +happy and the indexer fast. + +=cut + +sub is_perl_file { + my $self = shift; + return 0 if ( $self->directory ); + return 1 if ( $self->name =~ /\.(pl|pm|pod|t)$/i ); + return 1 if ( $self->mime eq "text/x-script.perl" ); + return 1 + if ( $self->name !~ /\./ + && !( grep { $self->name eq $_ } @NOT_PERL_FILES ) + && !$self->binary + && $self->stat->{size} < 2**17 ); + return 0; +} + +=head2 is_pod_file + +Returns true if the file extension is C. + +=cut + +sub is_pod_file { + shift->name =~ /\.pod$/i; +} + +=head2 add_module + +Requires at least one parameter which can be either a HashRef or +an instance of L. + +=cut + +sub add_module { + my ( $self, @modules ) = @_; + $_ = MetaCPAN::Document::Module->new($_) + for ( grep { ref $_ eq 'HASH' } @modules ); + $self->_set_module( [ @{ $self->module }, @modules ] ); +} + +=head2 is_in_other_files + +Returns true if the file is one from the list below. + +=cut + +sub is_in_other_files { + my $self = shift; + my @other = qw( + AUTHORS + Build.PL + Changelog + ChangeLog + CHANGELOG + Changes + CHANGES + CONTRIBUTING + CONTRIBUTING.md + CONTRIBUTING.pod + Copying + COPYRIGHT + cpanfile + CREDITS + dist.ini + FAQ + INSTALL + INSTALL.md + INSTALL.pod + LICENSE + Makefile.PL + MANIFEST + META.json + META.yml + NEWS + README + README.md + README.pod + THANKS + Todo + ToDo + TODO + ); + + return any { $self->path eq $_ } @other; +} + +=head2 set_indexed + +Expects a C<$meta> parameter which is an instance of L. + +For each package (L) in the file and based on L +it is decided, whether the module should have a true L attribute. +If there are any packages with leading underscores, the module gets a false +L attribute, because PAUSE doesn't allow this kind of name for packages +(https://github.com/andk/pause/blob/master/lib/PAUSE/pmfile.pm#L249). + +If L returns true but the package declaration +uses the I hack, the L property is set to false. + + package # hide from PAUSE + MyTest::Module; + # will result in indexed => 0 + +Once that is done, the L property of the file is determined by searching +the list of L for a module that matches the value of L. +If there is no such module, the L property is set to false. If the file +does not include any modules, the L property is true. + +=cut + +sub set_indexed { + my ( $self, $meta ) = @_; + + #files listed under 'other files' are not shown in a search + if ( $self->is_in_other_files() ) { + foreach my $mod ( @{ $self->module } ) { + $mod->_set_indexed(0); + } + $self->_set_indexed(0); + return; + } + + foreach my $mod ( @{ $self->module } ) { + if ( $mod->name !~ /^[A-Za-z]/ ) { + $mod->_set_indexed(0); + next; + } + $mod->_set_indexed( + $meta->should_index_package( $mod->name ) + ? $mod->hide_from_pause( ${ $self->content }, $self->name ) + ? 0 + : 1 + : 0 + ) unless ( $mod->indexed ); + } + $self->_set_indexed( + + # .pm file with no package declaration but pod should be indexed + !@{ $self->module } || + + # don't index if the documentation doesn't match any of its modules + !!grep { $self->documentation eq $_->name } @{ $self->module } + ) if ( $self->documentation ); +} + +=head2 set_authorized + +Expects a C<$perms> parameter which is a HashRef. The key is the module name +and the value an ArrayRef of author names who are allowed to release +that module. + +The method returns a list of unauthorized, but indexed modules. + +Unauthorized modules are modules that were uploaded in the name of a +different author than stated in the C<06perms.txt.gz> file. One problem +with this file is, that it doesn't record historical data. It may very +well be that an author was authorized to upload a module at the time. +But then his co-maintainer rights might have been revoked, making consecutive +uploads of that release unauthorized. However, since this script runs +with the latest version of C<06perms.txt.gz>, the former upload will +be flagged as unauthorized as well. Same holds the other way round, +a previously unauthorized release would be flagged authorized if the +co-maintainership was added later on. + +If a release contains unauthorized modules, the whole release is marked +as unauthorized as well. + +=cut + +sub set_authorized { + my ( $self, $perms ) = @_; + + # only authorized perl distributions make it into the CPAN + return () if ( $self->distribution eq 'perl' ); + foreach my $module ( @{ $self->module } ) { + $module->_set_authorized(0) + if ( $perms->{ $module->name } && !grep { $_ eq $self->author } + @{ $perms->{ $module->name } } ); + } + $self->_set_authorized(0) + if ( $self->authorized + && $self->documentation + && $perms->{ $self->documentation } + && !grep { $_ eq $self->author } + @{ $perms->{ $self->documentation } } ); + return grep { !$_->authorized && $_->indexed } @{ $self->module }; +} + +=head2 full_path + +Concatenate L, L and L. + +=cut + +sub full_path { + my $self = shift; + return join( "/", $self->author, $self->release, $self->path ); +} + +__PACKAGE__->meta->make_immutable; + +package MetaCPAN::Document::File::Set; +use Moose; +extends 'ElasticSearchX::Model::Document::Set'; + +my @ROGUE_DISTRIBUTIONS + = qw(kurila perl_debug perl-5.005_02+apache1.3.3+modperl pod2texi perlbench spodcxx Bundle-Everything); + +sub find { + my ( $self, $module ) = @_; + my @candidates = $self->index->type("file")->filter( + { + bool => { + must => [ + { term => { 'indexed' => \1, } }, + { term => { 'authorized' => \1 } }, + { term => { 'status' => 'latest', } }, + ], + should => [ + { term => { 'documentation' => $module } }, + { + nested => { + path => 'module', + filter => + { term => { 'module.name' => $module } }, + } + } + ] + } + } + )->sort( + [ + { 'date' => { order => "desc" } }, + { 'mime' => { order => "asc" } }, + { 'stat.mtime' => { order => 'desc' } } + ] + )->size(100)->all; + + my ($file) = grep { + grep { $_->indexed && $_->authorized && $_->name eq $module } + @{ $_->module || [] } + } grep { !$_->documentation || $_->documentation eq $module } + @candidates; + + $file ||= shift @candidates; + return $file ? $self->get( $file->id ) : undef; +} + +sub find_pod { + my ( $self, $name ) = @_; + my $file = $self->find($name); + return $file unless ($file); + my ($module) + = grep { $_->indexed && $_->authorized && $_->name eq $name } + @{ $file->module || [] }; + if ( $module && ( my $pod = $module->associated_pod ) ) { + my ( $author, $release, @path ) = split( /\//, $pod ); + return $self->get( + { + author => $author, + release => $release, + path => join( "/", @path ), + } + ); + } + else { + return $file; + } +} + +# return files that contain modules that match the given dist +# NOTE: these still need to be filtered by authorized/indexed +# TODO: test that we are getting the correct version (latest) +sub find_provided_by { + my ( $self, $release ) = @_; + return $self->filter( + { + bool => { + must => [ + { term => { 'release' => $release->{name} } }, + { term => { 'author' => $release->{author} } }, + { term => { 'file.module.authorized' => 1 } }, + { term => { 'file.module.indexed' => 1 } }, + ] + } + } + )->size(999)->all; +} + +# filter find_provided_by results for indexed/authorized modules +# and return a list of package names +sub find_module_names_provided_by { + my ( $self, $release ) = @_; + my $mods = $self->inflate(0)->find_provided_by($release); + return ( + map { $_->{name} } + grep { $_->{indexed} && $_->{authorized} } + map { @{ $_->{_source}->{module} } } @{ $mods->{hits}->{hits} } + ); +} + +=head2 find_download_url + + +cpanm Foo +=> status: latest, maturity: released + +cpanm --dev Foo +=> status: -backpan, sort_by: version_numified,date + +cpanm Foo~1.0 +=> status: latest, maturity: released, module.version_numified: gte: 1.0 + +cpanm --dev Foo~1.0 +-> status: -backpan, module.version_numified: gte: 1.0, sort_by: version_numified,date + +cpanm Foo~<2 +=> maturity: released, module.version_numified: lt: 2, sort_by: status,version_numified,date + +cpanm --dev Foo~<2 +=> status: -backpan, module.version_numified: lt: 2, sort_by: status,version_numified,date + + $file->find_download_url( "Foo", { version => $version, dev => 0|1 }); + +Sorting: + + if it's stable: + prefer latest > cpan > backpan + then sort by version desc + then sort by date descending (rev chron) + + if it's dev: + sort by version desc + sort by date descending (reverse chronologically) + + +=cut + +sub find_download_url { + my ( $self, $module, $args ) = @_; + $args ||= {}; + + my $dev = $args->{dev}; + my $version = $args->{version}; + my $explicit_version = $version && $version =~ /==/; + + # exclude backpan if dev, and + # require released modules if neither dev nor explicit version + my @filters + = $dev ? { not => { term => { status => 'backpan' } } } + : !$explicit_version ? { term => { maturity => 'released' } } + : (); + + # filters to be applied to the nested modules + my $module_f = { + nested => { + path => 'module', + inner_hits => { _source => 'version' }, + filter => { + bool => { + must => [ + { term => { 'module.authorized' => \1 } }, + { term => { 'module.indexed' => \1 } }, + { term => { 'module.name' => $module } }, + $self->_version_filters($version) + ] + } + } + } + }; + + my $filter + = @filters + ? { bool => { must => [ @filters, $module_f ] } } + : $module_f; + + # sort by score, then version desc, then date desc + my @sort = ( + '_score', + { + 'module.version_numified' => { + mode => 'max', + order => 'desc', + nested_filter => $module_f->{nested}{filter} + } + }, + { date => { order => 'desc' } } + ); + + my $query; + + if ($dev) { + $query = { filtered => { filter => $filter } }; + } + else { + # if not dev, then prefer latest > cpan > backpan + $query = { + function_score => { + filter => $filter, + score_mode => 'first', + boost_mode => 'replace', + functions => [ + { + filter => { term => { status => 'latest' } }, + weight => 3 + }, + { + filter => { term => { status => 'cpan' } }, + weight => 2 + }, + { filter => { match_all => {} }, weight => 1 }, + ] + } + }; + } + + return $self->size(1)->query($query) + ->source( [ 'download_url', 'date', 'status' ] )->sort( \@sort ); + +} + +sub _version_filters { + my ( $self, $version ) = @_; + + return () unless $version; + + if ( $version =~ s/^==\s*// ) { + return { term => { 'module.version' => $version }, }; + } + elsif ( $version !~ /\s/ ) { + return { + range => { + 'module.version_numified' => + { 'gte' => $self->_numify($version) } + }, + }; + } + else { + my %ops = qw(< lt <= lte > gt >= gte); + my ( %range, @exclusion ); + my @requirements = split /,\s*/, $version; + for my $r (@requirements) { + if ( $r =~ s/^([<>]=?)\s*// ) { + $range{ $ops{$1} } = $self->_numify($r); + } + elsif ( $r =~ s/\!=\s*// ) { + push @exclusion, $self->_numify($r); + } + } + + my @filters + = ( { range => { 'module.version_numified' => \%range } }, ); + + if (@exclusion) { + push @filters, { + not => { + or => [ + map { + +{ + term => { + 'module.version_numified' => + $self->_numify($_) + } + } + } @exclusion + ] + }, + }; + } + + return @filters; + } +} + +sub _numify { + my ( $self, $ver ) = @_; + $ver =~ s/_//g; + version->new($ver)->numify; +} + +=head2 history + +Find the history of a given module/documentation. + +=cut + +sub history { + my ( $self, $type, $module, @path ) = @_; + my $search + = $type eq "module" ? $self->filter( + { + nested => { + path => "module", + query => { + constant_score => { + filter => { + bool => { + must => [ + { term => { "module.authorized" => \1 } }, + { term => { "module.indexed" => \1 } }, + { term => { "module.name" => $module } }, + ] + } + } + } + } + } + } + ) + : $type eq "file" ? $self->filter( + { + bool => { + must => [ + { term => { "file.path" => join( "/", @path ) } }, + { term => { "file.distribution" => $module } }, + ] + } + } + ) + : $self->filter( + { + bool => { + must => [ + { term => { "file.documentation" => $module } }, + { term => { "file.indexed" => \1 } }, + { term => { "file.authorized" => \1 } }, + ] + } + } + ); + return $search->sort( [ { "file.date" => "desc" } ] ); +} + +sub autocomplete { + my ( $self, @terms ) = @_; + my $query = join( " ", @terms ); + return $self unless $query; + + return $self->search_type('dfs_query_then_fetch')->query( + { + filtered => { + query => { + multi_match => { + query => $query, + type => 'most_fields', + fields => [ 'documentation', 'documentation.*' ], + analyzer => 'camelcase', + minimum_should_match => "80%" + }, + }, + filter => { + bool => { + must => [ + { exists => { field => 'documentation' } }, + { term => { 'indexed' => \1 } }, + { term => { 'status' => 'latest' } }, + { term => { 'authorized' => \1 } } + ], + must_not => [ + { + terms => { + 'distribution' => \@ROGUE_DISTRIBUTIONS + } + }, + ], + } + } + } + } + )->sort( [ '_score', 'documentation' ] ); +} + +__PACKAGE__->meta->make_immutable; +1; From 21cf54a5d1175e3646be7f9bb68205940707254f Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Thu, 21 Apr 2016 15:35:02 +0100 Subject: [PATCH 173/329] Move MetaCPAN::Document::File::Set out of inner package. --- lib/MetaCPAN/Document/File.pm | 15 +- lib/MetaCPAN/Document/File/Set.pm | 882 ------------------------------ 2 files changed, 7 insertions(+), 890 deletions(-) diff --git a/lib/MetaCPAN/Document/File.pm b/lib/MetaCPAN/Document/File.pm index d2e240205..49f6a9d8f 100644 --- a/lib/MetaCPAN/Document/File.pm +++ b/lib/MetaCPAN/Document/File.pm @@ -73,7 +73,8 @@ sub _build_abstract { $abstract = MetaCPAN::Util::strip_pod($abstract); } if ($documentation) { - $self->_set_documentation( MetaCPAN::Util::strip_pod($documentation) ); + $self->_set_documentation( + MetaCPAN::Util::strip_pod($documentation) ); } return $abstract; } @@ -321,7 +322,7 @@ has indexed => ( return 0 if !$self->metadata->should_index_file( $self->path ); return 1; }, - writer => '_set_indexed', + writer => '_set_indexed', ); =head2 level @@ -513,9 +514,9 @@ C, C and C. =cut has stat => ( - is => 'ro', - isa => Stat, - dynamic => 1, + is => 'ro', + isa => Stat, + dynamic => 1, ); =head2 version @@ -524,9 +525,7 @@ Contains the raw version string. =cut -has version => ( - is => 'ro', -); +has version => ( is => 'ro', ); =head2 version_numified diff --git a/lib/MetaCPAN/Document/File/Set.pm b/lib/MetaCPAN/Document/File/Set.pm index 6eb7ab420..27dd1d0d3 100644 --- a/lib/MetaCPAN/Document/File/Set.pm +++ b/lib/MetaCPAN/Document/File/Set.pm @@ -1,885 +1,3 @@ -package MetaCPAN::Document::File; - -use strict; -use warnings; -use utf8; - -use Moose; -use ElasticSearchX::Model::Document; - -use Encode; -use List::AllUtils qw( any ); -use MetaCPAN::Document::Module; -use MetaCPAN::Types qw(:all); -use MetaCPAN::Util; -use Plack::MIME; -use Pod::Text; -use Try::Tiny; -use URI::Escape (); - -Plack::MIME->add_type( ".t" => "text/x-script.perl" ); -Plack::MIME->add_type( ".pod" => "text/x-pod" ); -Plack::MIME->add_type( ".xs" => "text/x-c" ); - -my @NOT_PERL_FILES = qw(SIGNATURE); - -=head1 PROPERTIES - -=head2 abstract - -Abstract of the documentation (if any). This is built by parsing the -C section. It also sets L if it succeeds. - -=cut - -has abstract => ( - is => 'ro', - lazy => 1, - builder => '_build_abstract', - index => 'analyzed', -); - -sub _build_abstract { - my $self = shift; - return undef unless ( $self->is_perl_file ); - my $text = ${ $self->content }; - my ( $documentation, $abstract ); - my $section = MetaCPAN::Util::extract_section( $text, 'NAME' ); - - # if it's a POD file without a name section, let's try to generate - # an abstract and name based on filename - if ( !$section && $self->path =~ /\.pod$/ ) { - $section = $self->path; - $section =~ s{^(lib|pod|docs)/}{}; - $section =~ s{\.pod$}{}; - $section =~ s{/}{::}g; - } - - return undef unless ($section); - $section =~ s/^=\w+.*$//mg; - $section =~ s/X<.*?>//mg; - - if ( $section =~ /^\s*(\S+)((\h+-+\h+(.+))|(\r?\n\h*\r?\n\h*(.+)))?/ms ) { - chomp( $abstract = $4 || $6 ) if ( $4 || $6 ); - my $name = MetaCPAN::Util::strip_pod($1); - $documentation = $name if ( $name =~ /^[\w\.:\-_']+$/ ); - } - if ($abstract) { - $abstract =~ s/^=\w+.*$//xms; - $abstract =~ s{\r?\n\h*\r?\n\h*.*$}{}xms; - $abstract =~ s{\n}{ }gxms; - $abstract =~ s{\s+$}{}gxms; - $abstract =~ s{(\s)+}{$1}gxms; - $abstract = MetaCPAN::Util::strip_pod($abstract); - } - if ($documentation) { - $self->_set_documentation( MetaCPAN::Util::strip_pod($documentation) ); - } - return $abstract; -} - -=head2 id - -Unique identifier of the release. -Consists of the L's pauseid, the release L, -and the file path. -See L. - -=cut - -has id => ( - is => 'ro', - id => [qw(author release path)], -); - -=head2 module - -An ArrayRef of L objects, that represent -modules defined in that class (i.e. package declarations). - -=cut - -has module => ( - is => 'ro', - isa => Module, - type => 'nested', - include_in_root => 1, - coerce => 1, - clearer => 'clear_module', - writer => '_set_module', - lazy => 1, - default => sub { [] }, -); - -=head2 download_url - -B - -Download URL of the release - -=cut - -has download_url => ( - is => 'ro', - required => 1 -); - -=head2 date - -B - -Release date (i.e. C of the archive file). - -=cut - -has date => ( - is => 'ro', - required => 1, - isa => 'DateTime', -); - -=head2 description - -Contains the C section of the POD if any. Will be stripped from -whitespaces and POD commands. - -=cut - -has description => ( - is => 'ro', - lazy => 1, - builder => '_build_description', - index => 'analyzed', -); - -sub _build_description { - my $self = shift; - return undef unless ( $self->is_perl_file ); - my $section - = MetaCPAN::Util::extract_section( ${ $self->content }, - 'DESCRIPTION' ); - return undef unless ($section); - my $parser = Pod::Text->new; - my $text = ""; - $parser->output_string( \$text ); - - try { - $parser->parse_string_document("=pod\n\n$section"); - } - catch { - warn $_[0]; - }; - - $text =~ s/\s+/ /g; - $text =~ s/^\s+//; - $text =~ s/\s+$//; - return $text; -} - -=head2 distribution - -=head2 distribution.analyzed - -=head2 distribution.camelcase - -Name of the distribution (e.g. C). - -=head2 author - -PAUSE ID of the author. - -=head2 status - -Valid values are C, C, and C. The most recent upload -of a distribution is tagged as C as long as it's not a developer -release, unless there are only developer releases. Everything else is -tagged C. Once a release is deleted from PAUSE it is tagged as -C. - -=cut - -has status => ( is => 'ro', required => 1, default => 'cpan' ); - -=head2 binary - -File is binary or not. - -=cut - -has binary => ( - is => 'ro', - isa => Bool, - required => 1, - default => 0, -); - -=head2 authorized - -See L. - -=cut - -has authorized => ( - required => 1, - is => 'ro', - isa => Bool, - default => 1, - writer => '_set_authorized', -); - -=head2 maturity - -Maturity of the release. This can either be C or C. -See L. - -=cut - -has maturity => ( - is => 'ro', - required => 1, - default => 'released', -); - -=head2 directory - -Return true if this object represents a directory. - -=cut - -has directory => ( - is => 'ro', - required => 1, - isa => Bool, - default => 0, -); - -=head2 documentation - -Holds the name for the documentation in this file. - -If the file L, the name is derived from the -C section. If the file L and the -name from the C section matches one of the modules in L, -it returns the name. Otherwise it returns the name of the first module -in L. If there are no modules in the file the documentation is -set to C. - -=cut - -has documentation => ( - is => 'ro', - lazy => 1, - builder => '_build_documentation', - index => 'analyzed', - predicate => 'has_documentation', - analyzer => [qw(standard camelcase lowercase edge edge_camelcase)], - clearer => 'clear_documentation', - writer => '_set_documentation', -); - -sub _build_documentation { - my $self = shift; - $self->_build_abstract; - my $documentation = $self->documentation if ( $self->has_documentation ); - return undef unless length $documentation; - - my @indexed = grep { $_->indexed } @{ $self->module || [] }; - if ( $documentation && $self->is_pod_file ) { - return $documentation; - } - elsif ( $documentation && grep { $_->name eq $documentation } @indexed ) { - return $documentation; - } - elsif (@indexed) { - return $indexed[0]->name; - } - elsif ( !@{ $self->module || [] } ) { - return $documentation; - } - else { - return undef; - } -} - -=head2 indexed - -B - -Indicates whether the file should be included in the search index or -not. See L for a more verbose explanation. - -=cut - -has indexed => ( - required => 1, - is => 'ro', - isa => Bool, - lazy => 1, - default => sub { - my ($self) = @_; - return 0 if $self->is_in_other_files; - return 0 if !$self->metadata->should_index_file( $self->path ); - return 1; - }, - writer => '_set_indexed', -); - -=head2 level - -Level of this file in the directory tree of the release (i.e. C -has a level of C<0>). - -=cut - -has level => ( - is => 'ro', - isa => Int, - lazy => 1, - builder => '_build_level', -); - -sub _build_level { - my $self = shift; - my @level = split( /\//, $self->path ); - return @level - 1; -} - -=head2 pod - -Pure text format of the pod (see L). Consecutive whitespaces -are removed to save space and for better snippet previews. - -=cut - -has pod => ( - is => 'ro', - isa => ScalarRef, - lazy => 1, - builder => '_build_pod', - index => 'analyzed', - not_analyzed => 0, - store => 'no', - term_vector => 'with_positions_offsets', -); - -sub _build_pod { - my $self = shift; - return \'' unless ( $self->is_perl_file ); - - my $parser = Pod::Text->new( sentence => 0, width => 78 ); - - # We don't need to index pod errors. - $parser->no_errata_section(1); - - my $content = ${ $self->content }; - - # The pod parser is very liberal and will "start" a pod document when it - # sees /^=[a-zA-Z]/ even though it might be binary like /^=F\0?\{/. - # So munge any lines that might match but are not usual pod directives - # that people would use (we don't need to index non-regular pod). - # Also see the test and comments in t/document/file.t for how - # bizarre constructs are handled. - - $content =~ s/ - # Pod::Simple::parse_string_document() "supports \r, \n ,\r\n"... - (?: - \A|\r|\r\n|\n) # beginning of line - \K # (keep those characters) - - ( - =[a-zA-Z][a-zA-Z0-9]* # looks like pod - (?! # but followed by something that isn't pod: - [a-zA-Z0-9] # more pod chars (the star won't be greedy enough) - | \s # whitespace ("=head1 NAME\n", "=item\n") - | \Z # end of line or end of doc - ) - ) - - # Prefix (to hide from Pod parser) instead of removing. - /\0$1/gx; - - my $text = ""; - $parser->output_string( \$text ); - - try { - $parser->parse_string_document($content); - } - catch { - warn $_[0]; - }; - - $text =~ s/\s+/ /g; - $text =~ s/ \z//; - - # Remove any markers we put in the text. - # Should we remove other non-regular bytes that may come from the source? - $text =~ s/\0//g; - - return \$text; -} - -=head2 pod_lines - -ArrayRef of ArrayRefs of offset and length of pod blocks. Example: - - # Two blocks of pod, starting at line 1 and line 15 with length - # of 10 lines each - [[1,10], [15,10]] - -=cut - -has pod_lines => ( - is => 'ro', - isa => ArrayRef, - type => 'integer', - lazy => 1, - builder => '_build_pod_lines', - index => 'no', -); - -sub _build_pod_lines { - my $self = shift; - return [] unless ( $self->is_perl_file ); - my ( $lines, $slop ) = MetaCPAN::Util::pod_lines( ${ $self->content } ); - $self->_set_slop( $slop || 0 ); - return $lines; -} - -=head2 sloc - -Source Lines of Code. Strips empty lines, pod and C section from -L and returns the number of lines. - -=cut - -has sloc => ( - is => 'ro', - isa => Int, - lazy => 1, - builder => '_build_sloc', -); - -# Metrics from Perl::Metrics2::Plugin::Core. -sub _build_sloc { - my $self = shift; - return 0 unless ( $self->is_perl_file ); - - my @content = split( "\n", ${ $self->content } ); - my $pods = 0; - - # Use pod_lines data to remove pod content from string. - map { - splice( @content, $_->[0], $_->[1], map {''} 1 .. $_->[1] ) - } @{ $self->pod_lines }; - - my $sloc = 0; - while (@content) { - my $line = shift @content; - last if ( $line =~ /^\s*__(DATA|END)__/s ); - $sloc++ if ( $line !~ /^\s*#/ && $line =~ /\S/ ); - } - return $sloc; -} - -=head2 slop - -Source Lines of Pod. Returns the number of pod lines using L. - -=cut - -has slop => ( - is => 'ro', - isa => Int, - lazy => 1, - default => '_build_slop', - writer => '_set_slop', -); - -sub _build_slop { - my $self = shift; - return 0 unless ( $self->is_perl_file ); - $self->_build_pod_lines; - - # danger! infinite recursion if not set by `_build_pod_lines` - # we should probably find a better solution -- Mickey - return $self->slop; -} - -=head2 stat - -L info of the archive file. Contains C, C, -C, C and C. - -=cut - -has stat => ( - is => 'ro', - isa => Stat, - dynamic => 1, -); - -=head2 version - -Contains the raw version string. - -=cut - -has version => ( - is => 'ro', -); - -=head2 version_numified - -B - -Numeric representation of L. Contains 0 if there is no version or the -version could not be parsed. - -=cut - -has version_numified => ( - is => 'ro', - isa => Num, - lazy => 1, - builder => '_build_version_numified', -); - -sub _build_version_numified { - my $self = shift; - return 0 unless ( $self->version ); - return MetaCPAN::Util::numify_version( $self->version ); -} - -=head2 mime - -MIME type of file. Derived using L (for speed). - -=cut - -has mime => ( - is => 'ro', - lazy => 1, - builder => '_build_mime', -); - -sub _build_mime { - my $self = shift; - if ( !$self->directory - && $self->name !~ /\./ - && grep { $self->name ne $_ } @NOT_PERL_FILES ) - { - my $content = ${ $self->content }; - return "text/x-script.perl" if ( $content =~ /^#!.*?perl/ ); - } - else { - return Plack::MIME->mime_type( $self->name ) || 'text/plain'; - } -} - -has [qw(path author name)] => ( is => 'ro', required => 1 ); - -sub _build_path { - my $self = shift; - return join( '/', $self->release->name, $self->name ); -} - -has dir => ( - is => 'ro', - isa => Str, - lazy => 1, - builder => '_build_dir', - index => 'not_analyzed' -); - -sub _build_dir { - my $self = shift; - $DB::single = 1; - my $dir = $self->path; - $dir =~ s{/[^/]+$}{}; - return $dir; -} - -has [qw(release distribution)] => ( - is => 'ro', - required => 1, - analyzer => [qw(standard camelcase lowercase)], -); - -=head1 ATTRIBUTES - -These attributes are not stored. - -=head2 content - -A scalar reference to the content of the file. -Built by calling L. - -=cut - -has content => ( - is => 'ro', - isa => ScalarRef, - lazy => 1, - builder => '_build_content', - property => 0, -); - -sub _build_content { - my $self = shift; - - # NOTE: We used to remove the __DATA__ section "for performance reasons" - # however removing lines from the content will throw off pod_lines. - return $self->content_cb->(); -} - -=head2 content_cb - -Callback that returns the content of the file as a ScalarRef. - -=cut - -has content_cb => ( - is => 'ro', - property => 0, - default => sub { - sub { \'' } - }, -); - -=head2 local_path - -This attribute holds the path to the file on the local filesystem. - -=cut - -has local_path => ( - is => 'ro', - property => 0, -); - -=head2 metadata - -Reference to the L object of the release. - -=cut - -has metadata => ( - is => "ro", - lazy => 1, - default => sub { die "meta attribute missing" }, - isa => "CPAN::Meta", - property => 0, -); - -=head1 METHODS - -=head2 is_perl_file - -Return true if the file extension is one of C, C, C, C -or if the file has no extension, is not a binary file and its size is less -than 131072 bytes. This is an arbitrary limit but it keeps the pod parser -happy and the indexer fast. - -=cut - -sub is_perl_file { - my $self = shift; - return 0 if ( $self->directory ); - return 1 if ( $self->name =~ /\.(pl|pm|pod|t)$/i ); - return 1 if ( $self->mime eq "text/x-script.perl" ); - return 1 - if ( $self->name !~ /\./ - && !( grep { $self->name eq $_ } @NOT_PERL_FILES ) - && !$self->binary - && $self->stat->{size} < 2**17 ); - return 0; -} - -=head2 is_pod_file - -Returns true if the file extension is C. - -=cut - -sub is_pod_file { - shift->name =~ /\.pod$/i; -} - -=head2 add_module - -Requires at least one parameter which can be either a HashRef or -an instance of L. - -=cut - -sub add_module { - my ( $self, @modules ) = @_; - $_ = MetaCPAN::Document::Module->new($_) - for ( grep { ref $_ eq 'HASH' } @modules ); - $self->_set_module( [ @{ $self->module }, @modules ] ); -} - -=head2 is_in_other_files - -Returns true if the file is one from the list below. - -=cut - -sub is_in_other_files { - my $self = shift; - my @other = qw( - AUTHORS - Build.PL - Changelog - ChangeLog - CHANGELOG - Changes - CHANGES - CONTRIBUTING - CONTRIBUTING.md - CONTRIBUTING.pod - Copying - COPYRIGHT - cpanfile - CREDITS - dist.ini - FAQ - INSTALL - INSTALL.md - INSTALL.pod - LICENSE - Makefile.PL - MANIFEST - META.json - META.yml - NEWS - README - README.md - README.pod - THANKS - Todo - ToDo - TODO - ); - - return any { $self->path eq $_ } @other; -} - -=head2 set_indexed - -Expects a C<$meta> parameter which is an instance of L. - -For each package (L) in the file and based on L -it is decided, whether the module should have a true L attribute. -If there are any packages with leading underscores, the module gets a false -L attribute, because PAUSE doesn't allow this kind of name for packages -(https://github.com/andk/pause/blob/master/lib/PAUSE/pmfile.pm#L249). - -If L returns true but the package declaration -uses the I hack, the L property is set to false. - - package # hide from PAUSE - MyTest::Module; - # will result in indexed => 0 - -Once that is done, the L property of the file is determined by searching -the list of L for a module that matches the value of L. -If there is no such module, the L property is set to false. If the file -does not include any modules, the L property is true. - -=cut - -sub set_indexed { - my ( $self, $meta ) = @_; - - #files listed under 'other files' are not shown in a search - if ( $self->is_in_other_files() ) { - foreach my $mod ( @{ $self->module } ) { - $mod->_set_indexed(0); - } - $self->_set_indexed(0); - return; - } - - foreach my $mod ( @{ $self->module } ) { - if ( $mod->name !~ /^[A-Za-z]/ ) { - $mod->_set_indexed(0); - next; - } - $mod->_set_indexed( - $meta->should_index_package( $mod->name ) - ? $mod->hide_from_pause( ${ $self->content }, $self->name ) - ? 0 - : 1 - : 0 - ) unless ( $mod->indexed ); - } - $self->_set_indexed( - - # .pm file with no package declaration but pod should be indexed - !@{ $self->module } || - - # don't index if the documentation doesn't match any of its modules - !!grep { $self->documentation eq $_->name } @{ $self->module } - ) if ( $self->documentation ); -} - -=head2 set_authorized - -Expects a C<$perms> parameter which is a HashRef. The key is the module name -and the value an ArrayRef of author names who are allowed to release -that module. - -The method returns a list of unauthorized, but indexed modules. - -Unauthorized modules are modules that were uploaded in the name of a -different author than stated in the C<06perms.txt.gz> file. One problem -with this file is, that it doesn't record historical data. It may very -well be that an author was authorized to upload a module at the time. -But then his co-maintainer rights might have been revoked, making consecutive -uploads of that release unauthorized. However, since this script runs -with the latest version of C<06perms.txt.gz>, the former upload will -be flagged as unauthorized as well. Same holds the other way round, -a previously unauthorized release would be flagged authorized if the -co-maintainership was added later on. - -If a release contains unauthorized modules, the whole release is marked -as unauthorized as well. - -=cut - -sub set_authorized { - my ( $self, $perms ) = @_; - - # only authorized perl distributions make it into the CPAN - return () if ( $self->distribution eq 'perl' ); - foreach my $module ( @{ $self->module } ) { - $module->_set_authorized(0) - if ( $perms->{ $module->name } && !grep { $_ eq $self->author } - @{ $perms->{ $module->name } } ); - } - $self->_set_authorized(0) - if ( $self->authorized - && $self->documentation - && $perms->{ $self->documentation } - && !grep { $_ eq $self->author } - @{ $perms->{ $self->documentation } } ); - return grep { !$_->authorized && $_->indexed } @{ $self->module }; -} - -=head2 full_path - -Concatenate L, L and L. - -=cut - -sub full_path { - my $self = shift; - return join( "/", $self->author, $self->release, $self->path ); -} - -__PACKAGE__->meta->make_immutable; - package MetaCPAN::Document::File::Set; use Moose; extends 'ElasticSearchX::Model::Document::Set'; From cf7e49716571e2914671cf691d94052dea44b952 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Thu, 21 Apr 2016 16:26:29 +0100 Subject: [PATCH 174/329] Adds basic docs about user authentication. --- docs/authentication.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 docs/authentication.md diff --git a/docs/authentication.md b/docs/authentication.md new file mode 100644 index 000000000..500ec3225 --- /dev/null +++ b/docs/authentication.md @@ -0,0 +1,4 @@ +# User Authentication + +We're using https://metacpan.org/pod/Catalyst::Plugin::Authentication This +module provides user() and user_exists() to the controllers. From 383efecfefb6c4d0b58491b24735dda11a917b73 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Thu, 21 Apr 2016 16:29:38 +0100 Subject: [PATCH 175/329] Comment out after_failure in Travis config. --- .travis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index a23fd45a8..69c44c3a3 100644 --- a/.travis.yml +++ b/.travis.yml @@ -63,8 +63,8 @@ script: after_success: - cover -report coveralls -after_failure: - - cat ~/.cpanm/build.log +#after_failure: +# - cat ~/.cpanm/build.log services: - elasticsearch From bfffc9dd29c4732c8c45bc30be88aa472e970063 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Thu, 21 Apr 2016 16:35:36 +0100 Subject: [PATCH 176/329] Tidy --- lib/MetaCPAN/Document/Author.pm | 29 ++++++++++++++--------------- lib/MetaCPAN/Model/Release.pm | 7 ++++--- lib/MetaCPAN/Role/Logger.pm | 10 +++++----- lib/MetaCPAN/Script/Tickets.pm | 6 +++--- t/lib/MetaCPAN/Tests/Model.pm | 6 +++--- 5 files changed, 29 insertions(+), 29 deletions(-) diff --git a/lib/MetaCPAN/Document/Author.pm b/lib/MetaCPAN/Document/Author.pm index 1047f0713..a7d439f95 100644 --- a/lib/MetaCPAN/Document/Author.pm +++ b/lib/MetaCPAN/Document/Author.pm @@ -58,27 +58,26 @@ has profile => ( ); has blog => ( - is => 'ro', - isa => Blog, - coerce => 1, - dynamic => 1, + is => 'ro', + isa => Blog, + coerce => 1, + dynamic => 1, ); has perlmongers => ( - is => 'ro', - isa => PerlMongers, - coerce => 1, - dynamic => 1, + is => 'ro', + isa => PerlMongers, + coerce => 1, + dynamic => 1, ); has donation => ( - is => 'ro', - isa => ArrayRef [ Dict [ name => NonEmptySimpleStr, id => Str ] ], - dynamic => 1, + is => 'ro', + isa => ArrayRef [ Dict [ name => NonEmptySimpleStr, id => Str ] ], + dynamic => 1, ); -has [qw(city region country)] => - ( is => 'ro', isa => NonEmptySimpleStr ); +has [qw(city region country)] => ( is => 'ro', isa => NonEmptySimpleStr ); has location => ( is => 'ro', isa => Location, coerce => 1 ); @@ -90,8 +89,8 @@ has extra => ( ); has updated => ( - is => 'ro', - isa => 'DateTime', + is => 'ro', + isa => 'DateTime', ); sub _build_gravatar_url { diff --git a/lib/MetaCPAN/Model/Release.pm b/lib/MetaCPAN/Model/Release.pm index 8ba438c1d..2ec05af44 100644 --- a/lib/MetaCPAN/Model/Release.pm +++ b/lib/MetaCPAN/Model/Release.pm @@ -116,8 +116,8 @@ has version => ( ); has status => ( - is => 'ro', - isa => Str, + is => 'ro', + isa => Str, ); has bulk => ( is => 'ro' ); @@ -132,7 +132,8 @@ probably a much cleaner way to do this. sub run { my $self = shift; $self->document; - $self->document->_set_changes_file( $self->get_changes_file( $self->files ) ); + $self->document->_set_changes_file( + $self->get_changes_file( $self->files ) ); $self->set_main_module( $self->modules, $self->document ); } diff --git a/lib/MetaCPAN/Role/Logger.pm b/lib/MetaCPAN/Role/Logger.pm index 7d40a06ec..14e33a8ca 100644 --- a/lib/MetaCPAN/Role/Logger.pm +++ b/lib/MetaCPAN/Role/Logger.pm @@ -16,11 +16,11 @@ has level => ( ); has logger => ( - is => 'ro', - required => 1, - isa => Logger, - coerce => 1, - traits => ['NoGetopt'], + is => 'ro', + required => 1, + isa => Logger, + coerce => 1, + traits => ['NoGetopt'], ); sub set_level { diff --git a/lib/MetaCPAN/Script/Tickets.pm b/lib/MetaCPAN/Script/Tickets.pm index ba6bc4db5..6f0109a6d 100644 --- a/lib/MetaCPAN/Script/Tickets.pm +++ b/lib/MetaCPAN/Script/Tickets.pm @@ -31,9 +31,9 @@ has github_issues => ( ); has github_token => ( - is => 'ro', - lazy => 1, - builder => '_build_github_token', + is => 'ro', + lazy => 1, + builder => '_build_github_token', ); has source => ( diff --git a/t/lib/MetaCPAN/Tests/Model.pm b/t/lib/MetaCPAN/Tests/Model.pm index 4714a4c08..0ada54708 100644 --- a/t/lib/MetaCPAN/Tests/Model.pm +++ b/t/lib/MetaCPAN/Tests/Model.pm @@ -81,9 +81,9 @@ has data => ( ); has _expectations => ( - is => 'ro', - isa => HashRef, - init_arg => '_expect', + is => 'ro', + isa => HashRef, + init_arg => '_expect', ); test 'expected model attributes' => sub { From 98c240cc2127b8aeffd9e630ea1bb592c4705f20 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Thu, 21 Apr 2016 16:47:05 +0100 Subject: [PATCH 177/329] s/carton-exec/run/ --- README.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index a2f1997e1..fb27765da 100644 --- a/README.md +++ b/README.md @@ -66,7 +66,7 @@ The test suite has to pass all tests. ## Create the ElasticSearch Index ```sh -./bin/carton-exec bin/metacpan mapping --delete +./bin/run bin/metacpan mapping --delete ``` `--delete` will drop all indices first to clear the index from test data. @@ -74,23 +74,23 @@ The test suite has to pass all tests. ## Begin Indexing Your Modules ```sh -./bin/carton-exec bin/metacpan release /path/to/cpan/authors/id/ +./bin/run bin/metacpan release /path/to/cpan/authors/id/ ``` You should note that you can index either your CPAN mirror or a minicpan mirror. You can even index just parts of a mirror: ```sh -./bin/carton-exec bin/metacpan release /path/to/cpan/authors/id/{A,B} +./bin/run bin/metacpan release /path/to/cpan/authors/id/{A,B} ``` ## Tag the Latest Releases ```sh -./bin/carton-exec bin/metacpan latest --cpan /path/to/cpan/ +./bin/run bin/metacpan latest --cpan /path/to/cpan/ ``` ## Index Author Data ```sh -./bin/carton-exec bin/metacpan author --cpan /path/to/cpan/ +./bin/run bin/metacpan author --cpan /path/to/cpan/ ``` Note that minicpan doesn't provide the 00whois.xml file which is used to generate the index; you will have to download it manually (it is in the authors/ directory) in order to index authors. @@ -102,7 +102,7 @@ It also doesn't include author.json files, so that data will also be missing unl Start API server on port 5000 ```sh -./bin/carton-exec plackup -p 5000 -r +./bin/run plackup -p 5000 -r ``` This will start a single-threaded test server. If you need extra performance, use `Starman` instead. @@ -110,7 +110,7 @@ This will start a single-threaded test server. If you need extra performance, us For a full list of options: ```sh -./bin/carton-exec bin/metacpan release --help +./bin/run bin/metacpan release --help ``` Contributing: From 24b9215e5bcf02f14bba3950c551dbc357bfdda8 Mon Sep 17 00:00:00 2001 From: Leo Lapworth Date: Thu, 21 Apr 2016 17:30:12 +0100 Subject: [PATCH 178/329] bulk_index no work, use bulk_helper instead --- lib/MetaCPAN/Script/Backup.pm | 61 +++++++++++++++++------------------ 1 file changed, 30 insertions(+), 31 deletions(-) diff --git a/lib/MetaCPAN/Script/Backup.pm b/lib/MetaCPAN/Script/Backup.pm index 4cc1b7556..972eb7bcc 100644 --- a/lib/MetaCPAN/Script/Backup.pm +++ b/lib/MetaCPAN/Script/Backup.pm @@ -102,51 +102,50 @@ sub run_restore { my $es = $self->es; my $fh = IO::Zlib->new( $self->restore->stringify, 'rb' ); + my %bulk_store; + while ( my $line = $fh->readline ) { + state $line_count = 0; ++$line_count; - my $obj; + my $raw; - try { $obj = decode_json($line) } + try { $raw = decode_json($line) } catch { log_warn {"cannot decode JSON: $line --- $_"}; }; - my $parent = $obj->{fields}->{_parent}; - push( - @bulk, + # Create our bulk_helper if we need, + # incase a backup has mixed _index or _type + # create a new bulk helper for each + my $bulk_key = $raw->{_index} . $raw->{_type}; + + $bulk_store{$bulk_key} ||= $es->bulk_helper( + index => $raw->{_index}, + type => $raw->{_type}, + max_count => $self->batch_size + ); + + # Fetch relevant bulk helper + my $bulk = $bulk_store{$bulk_key}; + + my $parent = $raw->{fields}->{_parent}; + + $bulk->create( { - id => $obj->{_id}, + id => $raw->{_id}, $parent ? ( parent => $parent ) : (), - index => $obj->{_index}, - type => $obj->{_type}, - data => $obj->{_source}, + source => $raw->{_source}, } ); - if ( @bulk >= $self->batch_size ) { - log_info { 'line count: ' . $line_count }; - try { - $es->bulk_index( \@bulk ); - } - catch { - # try docs individually to find the problem doc(s) - log_warn {"failed to bulk index $_"}; - foreach my $document (@bulk) { - try { - $es->bulk_index( [$document] ); - } - catch { - log_warn { - "failed to index document: $_" . p $document; - }; - }; - } - }; - @bulk = (); - } } - $es->bulk_index( \@bulk ); + + # Flush anything left over just incase + for my $bulk ( values %bulk_store ) { + $bulk->flush; + } + log_info {'done'}; } From 792c441a8d1d4213b88d848db9c104162cdbdc04 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Thu, 21 Apr 2016 22:23:18 +0100 Subject: [PATCH 179/329] Upgrades ESX::Model to 1.0.1 --- cpanfile | 2 +- cpanfile.snapshot | 52 +++++++++++++++++++++++------------------------ 2 files changed, 27 insertions(+), 27 deletions(-) diff --git a/cpanfile b/cpanfile index ed76afd82..0d4ec6391 100644 --- a/cpanfile +++ b/cpanfile @@ -42,7 +42,7 @@ requires 'Devel::ArgNames'; requires 'Digest::MD5'; requires 'Digest::SHA1'; requires 'EV'; -requires 'ElasticSearchX::Model', '1.0.0'; +requires 'ElasticSearchX::Model', '1.0.1'; requires 'Email::Address'; requires 'Email::Sender::Simple'; requires 'Email::Simple'; diff --git a/cpanfile.snapshot b/cpanfile.snapshot index 373806cfa..259920a64 100644 --- a/cpanfile.snapshot +++ b/cpanfile.snapshot @@ -2449,32 +2449,32 @@ DISTRIBUTIONS Canary::Stability 0 ExtUtils::MakeMaker 6.52 common::sense 0 - ElasticSearchX-Model-1.0.0 - pathname: O/OA/OALDERS/ElasticSearchX-Model-1.0.0.tar.gz - provides: - ElasticSearchX::Model v1.0.0 - ElasticSearchX::Model::Bulk v1.0.0 - ElasticSearchX::Model::Document v1.0.0 - ElasticSearchX::Model::Document::EmbeddedRole v1.0.0 - ElasticSearchX::Model::Document::Mapping v1.0.0 - ElasticSearchX::Model::Document::Role v1.0.0 - ElasticSearchX::Model::Document::Set v1.0.0 - ElasticSearchX::Model::Document::Trait::Attribute v1.0.0 - ElasticSearchX::Model::Document::Trait::Class v1.0.0 - ElasticSearchX::Model::Document::Trait::Class::ID v1.0.0 - ElasticSearchX::Model::Document::Trait::Class::Timestamp v1.0.0 - ElasticSearchX::Model::Document::Trait::Class::Version v1.0.0 - ElasticSearchX::Model::Document::Trait::Field::ID v1.0.0 - ElasticSearchX::Model::Document::Trait::Field::TTL v1.0.0 - ElasticSearchX::Model::Document::Trait::Field::Timestamp v1.0.0 - ElasticSearchX::Model::Document::Trait::Field::Version v1.0.0 - ElasticSearchX::Model::Document::Types v1.0.0 - ElasticSearchX::Model::Index v1.0.0 - ElasticSearchX::Model::Role v1.0.0 - ElasticSearchX::Model::Scroll v1.0.0 - ElasticSearchX::Model::Trait::Class v1.0.0 - ElasticSearchX::Model::Tutorial v1.0.0 - ElasticSearchX::Model::Util v1.0.0 + ElasticSearchX-Model-1.0.1 + pathname: O/OA/OALDERS/ElasticSearchX-Model-1.0.1.tar.gz + provides: + ElasticSearchX::Model v1.0.1 + ElasticSearchX::Model::Bulk v1.0.1 + ElasticSearchX::Model::Document v1.0.1 + ElasticSearchX::Model::Document::EmbeddedRole v1.0.1 + ElasticSearchX::Model::Document::Mapping v1.0.1 + ElasticSearchX::Model::Document::Role v1.0.1 + ElasticSearchX::Model::Document::Set v1.0.1 + ElasticSearchX::Model::Document::Trait::Attribute v1.0.1 + ElasticSearchX::Model::Document::Trait::Class v1.0.1 + ElasticSearchX::Model::Document::Trait::Class::ID v1.0.1 + ElasticSearchX::Model::Document::Trait::Class::Timestamp v1.0.1 + ElasticSearchX::Model::Document::Trait::Class::Version v1.0.1 + ElasticSearchX::Model::Document::Trait::Field::ID v1.0.1 + ElasticSearchX::Model::Document::Trait::Field::TTL v1.0.1 + ElasticSearchX::Model::Document::Trait::Field::Timestamp v1.0.1 + ElasticSearchX::Model::Document::Trait::Field::Version v1.0.1 + ElasticSearchX::Model::Document::Types v1.0.1 + ElasticSearchX::Model::Index v1.0.1 + ElasticSearchX::Model::Role v1.0.1 + ElasticSearchX::Model::Scroll v1.0.1 + ElasticSearchX::Model::Trait::Class v1.0.1 + ElasticSearchX::Model::Tutorial v1.0.1 + ElasticSearchX::Model::Util v1.0.1 requirements: Carp 0 Class::Load 0 From 709cfc555163e28e1d920d8e14e6d4a12ad22743 Mon Sep 17 00:00:00 2001 From: Leo Lapworth Date: Thu, 21 Apr 2016 22:45:10 +0100 Subject: [PATCH 180/329] fixup tickets script, skip SSL verify and add pod --- lib/MetaCPAN/Script/Tickets.pm | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/lib/MetaCPAN/Script/Tickets.pm b/lib/MetaCPAN/Script/Tickets.pm index 6f0109a6d..9adcbad8e 100644 --- a/lib/MetaCPAN/Script/Tickets.pm +++ b/lib/MetaCPAN/Script/Tickets.pm @@ -4,6 +4,9 @@ use strict; use warnings; use namespace::autoclean; +# Some issue with rt.cpan.org's cert +$ENV{PERL_LWP_SSL_VERIFY_HOSTNAME} = 0; + use HTTP::Request::Common; use IO::String; use LWP::UserAgent; @@ -214,3 +217,23 @@ sub rt_dist_url { __PACKAGE__->meta->make_immutable; 1; + +=pod + +=head1 SYNOPSIS + + # bin/metacpan tickets + +=head1 DESCRIPTION + +Tracks the number of issues and the source, if the issue +tracker is RT or Github it fetches the info and updates +out ES information. + +This can then be accessed here: + +http://api.metacpan.org/distribution/Moose +http://api.metacpan.org/distribution/HTTP-BrowserDetect + +=cut + From 5f3d4fce0f66da3c8f245df5ecd9cc68aea72225 Mon Sep 17 00:00:00 2001 From: Mickey Nasriachi Date: Thu, 21 Apr 2016 18:37:27 +0100 Subject: [PATCH 181/329] fix test for parsing POD errors --- lib/MetaCPAN/Document/File.pm | 7 +++++-- t/document/file.t | 3 ++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/lib/MetaCPAN/Document/File.pm b/lib/MetaCPAN/Document/File.pm index 49f6a9d8f..847394dab 100644 --- a/lib/MetaCPAN/Document/File.pm +++ b/lib/MetaCPAN/Document/File.pm @@ -160,17 +160,20 @@ sub _build_description { = MetaCPAN::Util::extract_section( ${ $self->content }, 'DESCRIPTION' ); return undef unless ($section); + my $parser = Pod::Text->new; - my $text = ""; + my $text = q{}; $parser->output_string( \$text ); try { $parser->parse_string_document("=pod\n\n$section"); } catch { - warn $_[0]; + warn $_; }; + return undef unless $text; + $text =~ s/\s+/ /g; $text =~ s/^\s+//; $text =~ s/\s+$//; diff --git a/t/document/file.t b/t/document/file.t index bb95bf9d9..a60d526c9 100644 --- a/t/document/file.t +++ b/t/document/file.t @@ -528,12 +528,13 @@ subtest 'pod parsing errors are not fatal' => sub { package Foo; use strict; -=head1 NAME +=head1 DESCRIPTION Foo - mymodule1 abstract POD no warnings 'redefine'; + local *Pod::Text::parse_string_document = sub { die "# [fake pod error]\n"; }; From 4134c89ad7f71e29ef50f5ddabff46f11aa10cba Mon Sep 17 00:00:00 2001 From: Leo Lapworth Date: Fri, 22 Apr 2016 00:25:48 +0100 Subject: [PATCH 182/329] make perlcritic config less... critical --- .perlcriticrc | 1 - 1 file changed, 1 deletion(-) diff --git a/.perlcriticrc b/.perlcriticrc index 5b072476d..4c3020b83 100644 --- a/.perlcriticrc +++ b/.perlcriticrc @@ -10,7 +10,6 @@ verbose = 11 [-RegularExpressions::RequireDotMatchAnything] [-RegularExpressions::RequireExtendedFormatting] [-RegularExpressions::RequireLineBoundaryMatching] -[-ValuesAndExpressions::ProhibitAccessOfPrivateData] [-ValuesAndExpressions::ProhibitNoisyQuotes] [-Variables::ProhibitPunctuationVars] [-Subroutines::ProhibitExplicitReturnUndef] From 93ae2cfb96e70d42ef43391bfaa5fb95e937c1ff Mon Sep 17 00:00:00 2001 From: Leo Lapworth Date: Fri, 22 Apr 2016 00:26:58 +0100 Subject: [PATCH 183/329] convert ratings to bulk_helper --- lib/MetaCPAN/Script/Ratings.pm | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/lib/MetaCPAN/Script/Ratings.pm b/lib/MetaCPAN/Script/Ratings.pm index 7d5e0edc4..47deb91e7 100644 --- a/lib/MetaCPAN/Script/Ratings.pm +++ b/lib/MetaCPAN/Script/Ratings.pm @@ -44,9 +44,14 @@ sub run { log_debug {'Deleting old CPANRatings'}; $type->filter( { term => { user => 'CPANRatings' } } )->delete; - my $bulk = $self->index->bulk( size => 500 ); - my $index = $self->index->name; - my $date = DateTime->now->iso8601; + + my $bulk = $self->es->bulk_helper( + index => $self->index->name, + type => 'rating', + max_count => 500, + ); + + my $date = DateTime->now->iso8601; while ( my $rating = $parser->fetch ) { next unless ( $rating->{review_count} ); my $data = { @@ -59,16 +64,14 @@ sub run { }; for ( my $i = 0; $i < $rating->{review_count}; $i++ ) { - $bulk->put( + $bulk->create( { - index => $index, - type => 'rating', - body => Dlog_trace {$_} $data, + source => Dlog_trace {$_} $data, } ); } } - $bulk->commit; + $bulk->flush; $self->index->refresh; log_info {'done'}; } From 0452ae968b4b251a9fbf8ad4960ff85466f8f31a Mon Sep 17 00:00:00 2001 From: Leo Lapworth Date: Fri, 22 Apr 2016 08:59:45 +0100 Subject: [PATCH 184/329] switch sesson script to new ES bulk_helper --- lib/MetaCPAN/Script/Session.pm | 26 +++++++++----------------- 1 file changed, 9 insertions(+), 17 deletions(-) diff --git a/lib/MetaCPAN/Script/Session.pm b/lib/MetaCPAN/Script/Session.pm index 7ecee1393..9e40232d5 100644 --- a/lib/MetaCPAN/Script/Session.pm +++ b/lib/MetaCPAN/Script/Session.pm @@ -20,32 +20,24 @@ sub run { { query => { filtered => { query => { match_all => {} }, }, }, }, ); - my @delete; + my $bulk = $self->es->bulk_helper( + index => 'user', + type => 'session', + max_count => 10_000 + ); my $cutoff = DateTime->now->subtract( months => 1 )->epoch; + while ( my $search = $scroll->next ) { - if ( $search->{_source}->{__updated} < $cutoff ) { - push @delete, $search->{_id}; - } - if ( scalar @delete >= 10_000 ) { - $self->delete(@delete); - @delete = (); + if ( $search->{_source}->{__updated} < $cutoff ) { + $bulk->delete( { id => $search->{_id} } ); } } - $self->delete(@delete) if @delete; -} -sub delete { - my $self = shift; - my @delete = @_; + $bulk->flush; - $self->es->bulk( - index => 'user', - type => 'session', - actions => [ map { +{ delete => { id => $_ } } } @delete ], - ); } __PACKAGE__->meta->make_immutable; From 43551cfb192e6cce4dd887a5aa39207f1ac387ac Mon Sep 17 00:00:00 2001 From: Leo Lapworth Date: Fri, 22 Apr 2016 15:13:20 +0100 Subject: [PATCH 185/329] strip out invalid lat/lon values --- lib/MetaCPAN/Script/Backup.pm | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/lib/MetaCPAN/Script/Backup.pm b/lib/MetaCPAN/Script/Backup.pm index 972eb7bcc..95cdc8cea 100644 --- a/lib/MetaCPAN/Script/Backup.pm +++ b/lib/MetaCPAN/Script/Backup.pm @@ -131,6 +131,27 @@ sub run_restore { my $parent = $raw->{fields}->{_parent}; + if ( $raw->{_type} eq 'author' ) { + + # Hack for dodgy lat / lon's + if ( my $loc = $raw->{_source}->{location} ) { + + my $lat = $loc->[1]; + my $lon = $loc->[0]; + + if ( $lat > 90 or $lat < -90 ) { + + # Invalid latitude + delete $raw->{_source}->{location}; + } + elsif ( $lon > 180 or $lon < -180 ) { + + # Invalid longitude + delete $raw->{_source}->{location}; + } + } + } + $bulk->create( { id => $raw->{_id}, From 366764c46e1e25bda3a1a5f1664ddd912e36a0c9 Mon Sep 17 00:00:00 2001 From: Mickey Nasriachi Date: Fri, 22 Apr 2016 09:40:13 +0100 Subject: [PATCH 186/329] removed content_cb: not really used, no point in having lazy content --- lib/MetaCPAN/Document/File.pm | 25 +----------------- lib/MetaCPAN/Model/Release.pm | 10 ++++---- t/document/file.t | 48 +++++++++++++++++------------------ t/release/packages.t | 1 + 4 files changed, 30 insertions(+), 54 deletions(-) diff --git a/lib/MetaCPAN/Document/File.pm b/lib/MetaCPAN/Document/File.pm index 847394dab..d4b1830b3 100644 --- a/lib/MetaCPAN/Document/File.pm +++ b/lib/MetaCPAN/Document/File.pm @@ -614,7 +614,6 @@ These attributes are not stored. =head2 content A scalar reference to the content of the file. -Built by calling L. =cut @@ -622,32 +621,10 @@ has content => ( is => 'ro', isa => ScalarRef, lazy => 1, - builder => '_build_content', + default => sub { \"" }, property => 0, ); -sub _build_content { - my $self = shift; - - # NOTE: We used to remove the __DATA__ section "for performance reasons" - # however removing lines from the content will throw off pod_lines. - return $self->content_cb->(); -} - -=head2 content_cb - -Callback that returns the content of the file as a ScalarRef. - -=cut - -has content_cb => ( - is => 'ro', - property => 0, - default => sub { - sub { \'' } - }, -); - =head2 local_path This attribute holds the path to the file on the local filesystem. diff --git a/lib/MetaCPAN/Model/Release.pm b/lib/MetaCPAN/Model/Release.pm index 2ec05af44..d182c47e3 100644 --- a/lib/MetaCPAN/Model/Release.pm +++ b/lib/MetaCPAN/Model/Release.pm @@ -321,14 +321,14 @@ sub _build_files { my $file = $file_set->new_document( Dlog_trace {"adding file $_"} +{ - author => $self->author, - binary => -B $child, - content_cb => sub { \( scalar $child->slurp ) }, + author => $self->author, + binary => -B $child, + content => $child->is_dir ? \"" + : \( scalar $child->slurp ), date => $self->date, directory => $child->is_dir, distribution => $self->distribution, - indexed => $self->metadata->should_index_file($fpath) - ? 1 + indexed => $self->metadata->should_index_file($fpath) ? 1 : 0, local_path => $child, maturity => $self->maturity, diff --git a/t/document/file.t b/t/document/file.t index a60d526c9..441825e01 100644 --- a/t/document/file.t +++ b/t/document/file.t @@ -34,13 +34,11 @@ PKG # Passing in "content" will override # but defaulting to package statements will help avoid buggy tests. - content_cb => sub { - \( - join "\n", - ( map { sprintf $pkg_template, $_->{name} } @$mods ), - "\n\n=head1 NAME\n\n${name} - abstract\n\n=cut\n\n", - ); - }, + content => \( + join "\n", + ( map { sprintf $pkg_template, $_->{name} } @$mods ), + "\n\n=head1 NAME\n\n${name} - abstract\n\n=cut\n\n", + ), %args, ); @@ -184,9 +182,9 @@ package MOBY::Config; END my $file = new_file_doc( - path => 't/bar/bat.t', - module => { name => 'MOBY::Config' }, - content_cb => sub { \$content } + path => 't/bar/bat.t', + module => { name => 'MOBY::Config' }, + content => \$content, ); is( $file->abstract, @@ -229,8 +227,8 @@ just a makefile description END my $file = new_file_doc( - name => 'Makefile.PL', - content_cb => sub { \$content } + name => 'Makefile.PL', + content => \$content, ); is( $file->indexed, 0, 'File listed under other files is not indexed' ); @@ -268,7 +266,7 @@ AS-specific methods for Number::Phone END my $file = new_file_doc( module => [ { name => 'Number::Phone::NANP::ASS', version => 1.1 } ], - content_cb => sub { \$content } + content => \$content, ); is( $file->sloc, 8, '8 lines of code' ); is( $file->slop, 4, '4 lines of pod' ); @@ -297,9 +295,9 @@ C -- An example attribute metaclass for Perl 6 style attributes END my $file = new_file_doc( - name => 'Perl6Attribute.pod', - module => [ { name => 'main', version => 1.1 } ], - content_cb => sub { \$content } + name => 'Perl6Attribute.pod', + module => [ { name => 'main', version => 1.1 } ], + content => \$content, ); is( $file->documentation, 'Perl6Attribute' ); is( $file->abstract, @@ -345,8 +343,8 @@ Bar END my $file = new_file_doc( - name => 'Foo.pod', - content_cb => sub { \$content } + name => 'Foo.pod', + content => \$content, ); is( $file->documentation, 'Foo', 'POD in __DATA__ section' ); is( $file->description, 'hot stuff * Foo * Bar' ); @@ -386,7 +384,7 @@ END foreach my $folder ( 'pod', 'lib', 'docs' ) { my $file = MetaCPAN::Document::File->new( author => 'Foo', - content_cb => sub { \$content }, + content => \$content, distribution => 'Foo', name => 'Baz.pod', path => $folder . '/Foo/Bar/Baz.pod', @@ -438,8 +436,8 @@ parsed. END my $file = new_file_doc( - name => 'Yo.pm', - content_cb => sub { \$content } + name => 'Yo.pm', + content => \$content, ); test_attributes $file, @@ -487,8 +485,8 @@ last-word. END my $file = new_file_doc( - name => 'Yo.pm', - content_cb => sub { \$content } + name => 'Yo.pm', + content => \$content, ); test_attributes $file, { @@ -540,8 +538,8 @@ POD }; my $file = new_file_doc( - name => 'Yo.pm', - content_cb => sub { \$content } + name => 'Yo.pm', + content => \$content, ); test_attributes $file, { diff --git a/t/release/packages.t b/t/release/packages.t index b003f141f..88347c04e 100644 --- a/t/release/packages.t +++ b/t/release/packages.t @@ -48,6 +48,7 @@ test_release( 'Packages::BOM module starts with UTF-8 BOM'; my $file = $self->file_by_path($path); + is ${ $file->pod }, q[NAME Packages::BOM - package in a file with a BOM], 'pod text'; From 0e281723dd19b610dc32b3eec459c1305dd939a9 Mon Sep 17 00:00:00 2001 From: Mickey Nasriachi Date: Fri, 22 Apr 2016 15:19:34 +0100 Subject: [PATCH 187/329] some attributes should be 'required' to get indexed --- lib/MetaCPAN/Document/File.pm | 21 ++++++++++++--------- t/release/packages.t | 8 ++++---- 2 files changed, 16 insertions(+), 13 deletions(-) diff --git a/lib/MetaCPAN/Document/File.pm b/lib/MetaCPAN/Document/File.pm index d4b1830b3..fa4ccb568 100644 --- a/lib/MetaCPAN/Document/File.pm +++ b/lib/MetaCPAN/Document/File.pm @@ -356,6 +356,7 @@ are removed to save space and for better snippet previews. =cut has pod => ( + required => 1, is => 'ro', isa => ScalarRef, lazy => 1, @@ -457,10 +458,11 @@ L and returns the number of lines. =cut has sloc => ( - is => 'ro', - isa => Int, - lazy => 1, - builder => '_build_sloc', + required => 1, + is => 'ro', + isa => Int, + lazy => 1, + builder => '_build_sloc', ); # Metrics from Perl::Metrics2::Plugin::Core. @@ -492,11 +494,12 @@ Source Lines of Pod. Returns the number of pod lines using L. =cut has slop => ( - is => 'ro', - isa => Int, - lazy => 1, - default => '_build_slop', - writer => '_set_slop', + required => 1, + is => 'ro', + isa => Int, + lazy => 1, + builder => '_build_slop', + writer => '_set_slop', ); sub _build_slop { diff --git a/t/release/packages.t b/t/release/packages.t index 88347c04e..a97e0d0e8 100644 --- a/t/release/packages.t +++ b/t/release/packages.t @@ -10,8 +10,8 @@ test_release( name => 'Packages-1.103', author => 'RWSTAUNER', abstract => 'Package examples', - authorized => \1, - first => \1, + authorized => 1, + first => 1, provides => [ 'Packages', 'Packages::BOM', ], status => 'latest', main_module => 'Packages', @@ -20,7 +20,7 @@ test_release( { name => 'Packages', indexed => \1, - authorized => \1, + authorized => 'true', version => '1.103', version_numified => 1.103, associated_pod => @@ -31,7 +31,7 @@ test_release( { name => 'Packages::BOM', indexed => \1, - authorized => \1, + authorized => 'true', version => 0.04, version_numified => 0.04, associated_pod => From e6043f7fbb2bfb55f3ba09659d15aa4169b86f60 Mon Sep 17 00:00:00 2001 From: Mickey Nasriachi Date: Fri, 22 Apr 2016 16:31:14 +0100 Subject: [PATCH 188/329] test fixes --- t/release/binary-data.t | 12 ++++++------ t/release/packages.t | 4 ++-- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/t/release/binary-data.t b/t/release/binary-data.t index b473e234d..802f98651 100644 --- a/t/release/binary-data.t +++ b/t/release/binary-data.t @@ -9,16 +9,16 @@ test_release( { name => 'Binary-Data-0.01', author => 'BORISNAT', - authorized => \1, - first => \1, + authorized => 1, + first => 1, provides => [ 'Binary::Data', 'Binary::Data::WithPod', ], main_module => 'Binary::Data', modules => { 'lib/Binary/Data.pm' => [ { name => 'Binary::Data', - indexed => \1, - authorized => \1, + indexed => 'true', + authorized => 'true', version => '0.01', version_numified => 0.01, @@ -28,8 +28,8 @@ test_release( 'lib/Binary/Data/WithPod.pm' => [ { name => 'Binary::Data::WithPod', - indexed => \1, - authorized => \1, + indexed => 'true', + authorized => 'true', version => '0.02', version_numified => 0.02, associated_pod => diff --git a/t/release/packages.t b/t/release/packages.t index a97e0d0e8..bba0034d3 100644 --- a/t/release/packages.t +++ b/t/release/packages.t @@ -19,7 +19,7 @@ test_release( 'lib/Packages.pm' => [ { name => 'Packages', - indexed => \1, + indexed => 'true', authorized => 'true', version => '1.103', version_numified => 1.103, @@ -30,7 +30,7 @@ test_release( 'lib/Packages/BOM.pm' => [ { name => 'Packages::BOM', - indexed => \1, + indexed => 'true', authorized => 'true', version => 0.04, version_numified => 0.04, From 2a5c76e68ac6c1fa02c3116e0a1f759f4b76ec44 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Sat, 23 Apr 2016 16:15:59 +0100 Subject: [PATCH 189/329] Upgrade ESX::Model. --- cpanfile | 2 +- cpanfile.snapshot | 69 ++++++++++++++++++++++--------------- lib/MetaCPAN/Server/Test.pm | 2 +- 3 files changed, 43 insertions(+), 30 deletions(-) diff --git a/cpanfile b/cpanfile index 0d4ec6391..62b75a498 100644 --- a/cpanfile +++ b/cpanfile @@ -42,7 +42,7 @@ requires 'Devel::ArgNames'; requires 'Digest::MD5'; requires 'Digest::SHA1'; requires 'EV'; -requires 'ElasticSearchX::Model', '1.0.1'; +requires 'ElasticSearchX::Model', '1.0.2'; requires 'Email::Address'; requires 'Email::Sender::Simple'; requires 'Email::Simple'; diff --git a/cpanfile.snapshot b/cpanfile.snapshot index 259920a64..5ebff5f2a 100644 --- a/cpanfile.snapshot +++ b/cpanfile.snapshot @@ -2449,32 +2449,32 @@ DISTRIBUTIONS Canary::Stability 0 ExtUtils::MakeMaker 6.52 common::sense 0 - ElasticSearchX-Model-1.0.1 - pathname: O/OA/OALDERS/ElasticSearchX-Model-1.0.1.tar.gz - provides: - ElasticSearchX::Model v1.0.1 - ElasticSearchX::Model::Bulk v1.0.1 - ElasticSearchX::Model::Document v1.0.1 - ElasticSearchX::Model::Document::EmbeddedRole v1.0.1 - ElasticSearchX::Model::Document::Mapping v1.0.1 - ElasticSearchX::Model::Document::Role v1.0.1 - ElasticSearchX::Model::Document::Set v1.0.1 - ElasticSearchX::Model::Document::Trait::Attribute v1.0.1 - ElasticSearchX::Model::Document::Trait::Class v1.0.1 - ElasticSearchX::Model::Document::Trait::Class::ID v1.0.1 - ElasticSearchX::Model::Document::Trait::Class::Timestamp v1.0.1 - ElasticSearchX::Model::Document::Trait::Class::Version v1.0.1 - ElasticSearchX::Model::Document::Trait::Field::ID v1.0.1 - ElasticSearchX::Model::Document::Trait::Field::TTL v1.0.1 - ElasticSearchX::Model::Document::Trait::Field::Timestamp v1.0.1 - ElasticSearchX::Model::Document::Trait::Field::Version v1.0.1 - ElasticSearchX::Model::Document::Types v1.0.1 - ElasticSearchX::Model::Index v1.0.1 - ElasticSearchX::Model::Role v1.0.1 - ElasticSearchX::Model::Scroll v1.0.1 - ElasticSearchX::Model::Trait::Class v1.0.1 - ElasticSearchX::Model::Tutorial v1.0.1 - ElasticSearchX::Model::Util v1.0.1 + ElasticSearchX-Model-1.0.2 + pathname: O/OA/OALDERS/ElasticSearchX-Model-1.0.2.tar.gz + provides: + ElasticSearchX::Model v1.0.2 + ElasticSearchX::Model::Bulk v1.0.2 + ElasticSearchX::Model::Document v1.0.2 + ElasticSearchX::Model::Document::EmbeddedRole v1.0.2 + ElasticSearchX::Model::Document::Mapping v1.0.2 + ElasticSearchX::Model::Document::Role v1.0.2 + ElasticSearchX::Model::Document::Set v1.0.2 + ElasticSearchX::Model::Document::Trait::Attribute v1.0.2 + ElasticSearchX::Model::Document::Trait::Class v1.0.2 + ElasticSearchX::Model::Document::Trait::Class::ID v1.0.2 + ElasticSearchX::Model::Document::Trait::Class::Timestamp v1.0.2 + ElasticSearchX::Model::Document::Trait::Class::Version v1.0.2 + ElasticSearchX::Model::Document::Trait::Field::ID v1.0.2 + ElasticSearchX::Model::Document::Trait::Field::TTL v1.0.2 + ElasticSearchX::Model::Document::Trait::Field::Timestamp v1.0.2 + ElasticSearchX::Model::Document::Trait::Field::Version v1.0.2 + ElasticSearchX::Model::Document::Types v1.0.2 + ElasticSearchX::Model::Index v1.0.2 + ElasticSearchX::Model::Role v1.0.2 + ElasticSearchX::Model::Scroll v1.0.2 + ElasticSearchX::Model::Trait::Class v1.0.2 + ElasticSearchX::Model::Tutorial v1.0.2 + ElasticSearchX::Model::Util v1.0.2 requirements: Carp 0 Class::Load 0 @@ -2482,20 +2482,33 @@ DISTRIBUTIONS DateTime::Format::Epoch::Unix 0 DateTime::Format::ISO8601 0 Digest::SHA1 0 - JSON 0 + Eval::Closure 0 + JSON::MaybeXS 0 List::MoreUtils 0 List::Util 0 Module::Build 0.3601 Module::Find 0 Moose 2.02 + Moose::Exporter 0 + Moose::Role 0 + Moose::Util::TypeConstraints 0 MooseX::Attribute::Chained v1.0.1 + MooseX::Attribute::ChainedClone 0 MooseX::Attribute::Deflator v2.2.0 + MooseX::Attribute::Deflator::Moose 0 + MooseX::Attribute::LazyInflator::Meta::Role::Attribute 0 MooseX::Types 0 MooseX::Types::ElasticSearch v0.0.4 + MooseX::Types::Moose 0 MooseX::Types::Structured 0 Scalar::Util 0 - Search::Elasticsearch 1.11 + Search::Elasticsearch 2.02 + Search::Elasticsearch::Bulk 0 + Search::Elasticsearch::Scroll 0 Sub::Exporter 0 + strict 0 + version 0 + warnings 0 Email-Abstract-3.008 pathname: R/RJ/RJBS/Email-Abstract-3.008.tar.gz provides: diff --git a/lib/MetaCPAN/Server/Test.pm b/lib/MetaCPAN/Server/Test.pm index 5d1908a16..3a80ce4ea 100644 --- a/lib/MetaCPAN/Server/Test.pm +++ b/lib/MetaCPAN/Server/Test.pm @@ -5,7 +5,7 @@ use warnings; use HTTP::Request::Common qw(POST GET DELETE); use Plack::Test; -use Test::More 0.96; +use Test::More; use base 'Exporter'; our @EXPORT = qw( From dbc1a71508673be9ddfbbbb364509ac4eb76143f Mon Sep 17 00:00:00 2001 From: Mickey Nasriachi Date: Sat, 23 Apr 2016 09:53:46 +0100 Subject: [PATCH 190/329] untangle `abstract` and `document` builders. use a new lazy attribute for `section` and remove the direct dependency loop between `abstract` and `document`. --- lib/MetaCPAN/Document/File.pm | 67 +++++++++++++++++++++++++---------- 1 file changed, 48 insertions(+), 19 deletions(-) diff --git a/lib/MetaCPAN/Document/File.pm b/lib/MetaCPAN/Document/File.pm index fa4ccb568..515ca6cba 100644 --- a/lib/MetaCPAN/Document/File.pm +++ b/lib/MetaCPAN/Document/File.pm @@ -32,18 +32,19 @@ C section. It also sets L if it succeeds. =cut -has abstract => ( +has section => ( is => 'ro', + isa => Maybe [Str], lazy => 1, - builder => '_build_abstract', - index => 'analyzed', + builder => '_build_section', ); -sub _build_abstract { +my $RE_SECTION = qr/^\s*(\S+)((\h+-+\h+(.+))|(\r?\n\h*\r?\n\h*(.+)))?/ms; + +sub _build_section { my $self = shift; - return undef unless ( $self->is_perl_file ); + my $text = ${ $self->content }; - my ( $documentation, $abstract ); my $section = MetaCPAN::Util::extract_section( $text, 'NAME' ); # if it's a POD file without a name section, let's try to generate @@ -59,10 +60,29 @@ sub _build_abstract { $section =~ s/^=\w+.*$//mg; $section =~ s/X<.*?>//mg; - if ( $section =~ /^\s*(\S+)((\h+-+\h+(.+))|(\r?\n\h*\r?\n\h*(.+)))?/ms ) { + return $section; +} + +has abstract => ( + is => 'ro', + + # isa => Maybe[Str], + lazy => 1, + builder => '_build_abstract', + index => 'analyzed', +); + +sub _build_abstract { + my $self = shift; + return undef unless ( $self->is_perl_file ); + + my $section = $self->section; + return undef unless $section; + + my $abstract; + + if ( $section =~ $RE_SECTION ) { chomp( $abstract = $4 || $6 ) if ( $4 || $6 ); - my $name = MetaCPAN::Util::strip_pod($1); - $documentation = $name if ( $name =~ /^[\w\.:\-_']+$/ ); } if ($abstract) { $abstract =~ s/^=\w+.*$//xms; @@ -72,10 +92,6 @@ sub _build_abstract { $abstract =~ s{(\s)+}{$1}gxms; $abstract = MetaCPAN::Util::strip_pod($abstract); } - if ($documentation) { - $self->_set_documentation( - MetaCPAN::Util::strip_pod($documentation) ); - } return $abstract; } @@ -271,7 +287,9 @@ set to C. =cut has documentation => ( - is => 'ro', + is => 'ro', + + # isa => Maybe[Str], lazy => 1, builder => '_build_documentation', index => 'analyzed', @@ -283,8 +301,20 @@ has documentation => ( sub _build_documentation { my $self = shift; - $self->_build_abstract; - my $documentation = $self->documentation if ( $self->has_documentation ); + return undef unless ( $self->is_perl_file ); + + my $section = $self->section; + return undef unless $section; + + my $documentation; + + if ( $section =~ $RE_SECTION ) { + my $name = MetaCPAN::Util::strip_pod($1); + $documentation = $name if ( $name =~ /^[\w\.:\-_']+$/ ); + } + + $documentation = MetaCPAN::Util::strip_pod($documentation) + if $documentation; return undef unless length $documentation; my @indexed = grep { $_->indexed } @{ $self->module || [] }; @@ -300,9 +330,8 @@ sub _build_documentation { elsif ( !@{ $self->module || [] } ) { return $documentation; } - else { - return undef; - } + + return undef; } =head2 indexed From f57b47bb260a810ce4f0f558210782ba74b22b0c Mon Sep 17 00:00:00 2001 From: Mickey Nasriachi Date: Sat, 23 Apr 2016 15:12:55 +0100 Subject: [PATCH 191/329] names and types cleanup --- lib/MetaCPAN/Document/Module.pm | 20 +++++++++++--------- lib/MetaCPAN/Script/Release.pm | 3 +-- lib/MetaCPAN/Types/Internal.pm | 4 ---- t/lib/MetaCPAN/TestHelpers.pm | 1 - t/lib/MetaCPAN/Tests/Model.pm | 13 +++++-------- t/lib/MetaCPAN/Tests/Release.pm | 2 +- 6 files changed, 18 insertions(+), 25 deletions(-) diff --git a/lib/MetaCPAN/Document/Module.pm b/lib/MetaCPAN/Document/Module.pm index 358836605..37b16e84c 100644 --- a/lib/MetaCPAN/Document/Module.pm +++ b/lib/MetaCPAN/Document/Module.pm @@ -8,7 +8,7 @@ use ElasticSearchX::Model::Document; with 'ElasticSearchX::Model::Document::EmbeddedRole'; -use MetaCPAN::Types qw( AssociatedPod Bool Str ); +use MetaCPAN::Types qw( Bool Num Str ); use MetaCPAN::Util; =head1 SYNOPSIS @@ -62,6 +62,7 @@ not declared in one line, the module is considered not-indexed. has name => ( is => 'ro', + isa => Str, required => 1, index => 'analyzed', analyzer => [qw(standard camelcase lowercase)], @@ -86,14 +87,16 @@ has authorized => ( ); has associated_pod => ( - isa => AssociatedPod, - is => 'ro', - writer => '_set_associated_pod', + required => 1, + isa => Str, + is => 'ro', + default => q{}, + writer => '_set_associated_pod', ); has version_numified => ( is => 'ro', - isa => 'Num', + isa => Num, lazy_build => 1, required => 1, ); @@ -150,12 +153,12 @@ my %_pod_score = ( sub set_associated_pod { # FIXME: Why is $file passed if it isn't used? - my ( $self, $file, $associated_pod ) = @_; + my ( $self, $associated_pod ) = @_; return unless ( my $files = $associated_pod->{ $self->name } ); ( my $mod_path = $self->name ) =~ s{::}{/}g; - my ($pod) = ( + my ($file) = ( #<<< # TODO: adjust score if all files are in root? map { $_->[1] } @@ -184,8 +187,7 @@ sub set_associated_pod { @$files #>>> ); - $self->_set_associated_pod($pod); - return $pod; + $self->_set_associated_pod($file->full_path); } __PACKAGE__->meta->make_immutable; diff --git a/lib/MetaCPAN/Script/Release.pm b/lib/MetaCPAN/Script/Release.pm index d535b670d..dc711055b 100644 --- a/lib/MetaCPAN/Script/Release.pm +++ b/lib/MetaCPAN/Script/Release.pm @@ -234,8 +234,7 @@ sub import_archive { my @release_unauthorized; my @provides; foreach my $file (@$modules) { - $_->set_associated_pod( $file, \%associated_pod ) - for ( @{ $file->module } ); + $_->set_associated_pod( \%associated_pod ) for ( @{ $file->module } ); $file->set_indexed($meta); # NOTE: "The method returns a list of unauthorized, but indexed modules." diff --git a/lib/MetaCPAN/Types/Internal.pm b/lib/MetaCPAN/Types/Internal.pm index 75676b926..d6b9d066b 100644 --- a/lib/MetaCPAN/Types/Internal.pm +++ b/lib/MetaCPAN/Types/Internal.pm @@ -17,7 +17,6 @@ use MooseX::Types -declare => [ Resources Stat Module - AssociatedPod Identity Dependency Extra @@ -153,13 +152,10 @@ coerce Logger, from ArrayRef, via { MooseX::Getopt::OptionTypeMap->add_option_type_to_map( 'MooseX::Types::ElasticSearch::ES' => '=s' ); -subtype AssociatedPod, as Item; - use MooseX::Attribute::Deflator; deflate 'ScalarRef', via {$$_}; inflate 'ScalarRef', via { \$_ }; -deflate AssociatedPod, via { ref $_ ? $_->full_path : $_ }; no MooseX::Attribute::Deflator; 1; diff --git a/t/lib/MetaCPAN/TestHelpers.pm b/t/lib/MetaCPAN/TestHelpers.pm index fb2aabe23..1dde25843 100644 --- a/t/lib/MetaCPAN/TestHelpers.pm +++ b/t/lib/MetaCPAN/TestHelpers.pm @@ -8,7 +8,6 @@ use FindBin; use Git::Helpers qw( checkout_root ); use JSON; use MetaCPAN::Script::Runner; -use MetaCPAN::TestServer; use Path::Class qw( dir ); use Try::Tiny; use Test::More; diff --git a/t/lib/MetaCPAN/Tests/Model.pm b/t/lib/MetaCPAN/Tests/Model.pm index 0ada54708..318fb8fb3 100644 --- a/t/lib/MetaCPAN/Tests/Model.pm +++ b/t/lib/MetaCPAN/Tests/Model.pm @@ -41,23 +41,20 @@ has _type => ( has _model => ( is => 'ro', + isa => 'MetaCPAN::Model', lazy => 1, - builder => '_build__model', + default => sub { MetaCPAN::Server::Test::model() }, ); -sub _build__model { - return MetaCPAN::Server::Test::model(); -} - -has index => ( - reader => '_index', +has _es_index_name => ( + is => 'ro', isa => Str, default => 'cpan', ); sub index { my ($self) = @_; - $self->_model->index( $self->_index ); + return $self->_model->index( $self->_es_index_name ); } has search => ( diff --git a/t/lib/MetaCPAN/Tests/Release.pm b/t/lib/MetaCPAN/Tests/Release.pm index 7c6d6ce2b..d43b7435c 100644 --- a/t/lib/MetaCPAN/Tests/Release.pm +++ b/t/lib/MetaCPAN/Tests/Release.pm @@ -214,7 +214,7 @@ test 'release attributes' => sub { } }; -test 'modules in release files' => sub { +test 'modules in Packages-1.103' => sub { my ($self) = @_; plan skip_all => 'No modules specified for testing' From 53dd022dac6f4de4c130522d0f0eb594b4bf798c Mon Sep 17 00:00:00 2001 From: Mickey Nasriachi Date: Sat, 23 Apr 2016 15:30:21 +0100 Subject: [PATCH 192/329] refactoring import_archive --- lib/MetaCPAN/Script/Release.pm | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/lib/MetaCPAN/Script/Release.pm b/lib/MetaCPAN/Script/Release.pm index dc711055b..a604847cc 100644 --- a/lib/MetaCPAN/Script/Release.pm +++ b/lib/MetaCPAN/Script/Release.pm @@ -194,24 +194,31 @@ sub run { } -sub import_archive { - my $self = shift; - my $archive_path = shift; +sub _get_release_model { + my ( $self, $archive_path, $bulk ) = @_; - my $cpan = $self->index; - my $d = CPAN::DistnameInfo->new($archive_path); - my $bulk = $cpan->bulk( size => $self->_bulk_size ); + my $d = CPAN::DistnameInfo->new($archive_path); my $model = MetaCPAN::Model::Release->new( bulk => $bulk, distinfo => $d, file => $archive_path, - index => $cpan, + index => $self->index, level => $self->level, logger => $self->logger, status => $self->detect_status( $d->cpanid, $d->filename ), ); + return $model; +} + +sub import_archive { + my $self = shift; + my $archive_path = shift; + + my $bulk = $self->index->bulk( size => $self->_bulk_size ); + my $model = $self->_get_release_model( $archive_path, $bulk ); + log_debug {'Gathering modules'}; $model->run; From 6859a16e85fddc1808f088764d675d0628ef3486 Mon Sep 17 00:00:00 2001 From: Mickey Nasriachi Date: Sat, 23 Apr 2016 15:45:39 +0100 Subject: [PATCH 193/329] fix test: release/packages --- lib/MetaCPAN/Script/Release.pm | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/lib/MetaCPAN/Script/Release.pm b/lib/MetaCPAN/Script/Release.pm index a604847cc..d6731a314 100644 --- a/lib/MetaCPAN/Script/Release.pm +++ b/lib/MetaCPAN/Script/Release.pm @@ -209,6 +209,8 @@ sub _get_release_model { status => $self->detect_status( $d->cpanid, $d->filename ), ); + $model->run; + return $model; } @@ -221,28 +223,30 @@ sub import_archive { log_debug {'Gathering modules'}; - $model->run; + my $files = $model->files; + my $modules = $model->modules; + my $meta = $model->metadata; + my $document = $model->document; + + foreach my $file (@$modules) { + $file->set_indexed($meta); + } - # build module -> pod file mapping - # $file->clear_documentation to force a rebuild - my $files = $model->files; my %associated_pod; for ( grep { $_->indexed && $_->documentation } @$files ) { + + # $file->clear_documentation to force a rebuild my $documentation = $_->clear_documentation; $associated_pod{$documentation} = [ @{ $associated_pod{$documentation} || [] }, $_ ]; } - my $modules = $model->modules; log_debug { 'Indexing ', scalar @$modules, ' modules' }; - my $document = $model->document; - my $perms = $self->perms; - my $meta = $model->metadata; + my $perms = $self->perms; my @release_unauthorized; my @provides; foreach my $file (@$modules) { $_->set_associated_pod( \%associated_pod ) for ( @{ $file->module } ); - $file->set_indexed($meta); # NOTE: "The method returns a list of unauthorized, but indexed modules." push( @release_unauthorized, $file->set_authorized($perms) ) From 9cf86b350c44f2949e71141d2c560829cb0c28b6 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Sat, 23 Apr 2016 16:28:52 +0100 Subject: [PATCH 194/329] Fixes some quotes. --- lib/MetaCPAN/Document/File.pm | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/lib/MetaCPAN/Document/File.pm b/lib/MetaCPAN/Document/File.pm index 515ca6cba..062aca64f 100644 --- a/lib/MetaCPAN/Document/File.pm +++ b/lib/MetaCPAN/Document/File.pm @@ -17,9 +17,9 @@ use Pod::Text; use Try::Tiny; use URI::Escape (); -Plack::MIME->add_type( ".t" => "text/x-script.perl" ); -Plack::MIME->add_type( ".pod" => "text/x-pod" ); -Plack::MIME->add_type( ".xs" => "text/x-c" ); +Plack::MIME->add_type( '.t' => 'text/x-script.perl' ); +Plack::MIME->add_type( '.pod' => 'text/x-pod' ); +Plack::MIME->add_type( '.xs' => 'text/x-c' ); my @NOT_PERL_FILES = qw(SIGNATURE); @@ -675,10 +675,10 @@ Reference to the L object of the release. =cut has metadata => ( - is => "ro", + is => 'ro', + isa => 'CPAN::Meta', lazy => 1, - default => sub { die "meta attribute missing" }, - isa => "CPAN::Meta", + default => sub { die 'meta attribute missing' }, property => 0, ); @@ -886,7 +886,7 @@ Concatenate L, L and L. sub full_path { my $self = shift; - return join( "/", $self->author, $self->release, $self->path ); + return join( '/', $self->author, $self->release, $self->path ); } __PACKAGE__->meta->make_immutable; From f20a101fc842bec8bd2704c95ecde7070208a659 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Sat, 23 Apr 2016 16:29:09 +0100 Subject: [PATCH 195/329] Use ternary rather than 2 returns. --- lib/MetaCPAN/Document/File.pm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/MetaCPAN/Document/File.pm b/lib/MetaCPAN/Document/File.pm index 062aca64f..0ec573ff4 100644 --- a/lib/MetaCPAN/Document/File.pm +++ b/lib/MetaCPAN/Document/File.pm @@ -580,8 +580,9 @@ has version_numified => ( sub _build_version_numified { my $self = shift; - return 0 unless ( $self->version ); - return MetaCPAN::Util::numify_version( $self->version ); + return $self->version + ? MetaCPAN::Util::numify_version( $self->version ) + : 0; } =head2 mime From 61ca67808f822b4c6f99c6e1afb64d2d20d89693 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Sat, 23 Apr 2016 17:31:35 +0100 Subject: [PATCH 196/329] set_associated_pod() no longer wants a $file --- lib/MetaCPAN/Document/Module.pm | 4 +--- t/document/module.t | 2 +- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/lib/MetaCPAN/Document/Module.pm b/lib/MetaCPAN/Document/Module.pm index 37b16e84c..bf5907f7f 100644 --- a/lib/MetaCPAN/Document/Module.pm +++ b/lib/MetaCPAN/Document/Module.pm @@ -151,8 +151,6 @@ my %_pod_score = ( ); sub set_associated_pod { - - # FIXME: Why is $file passed if it isn't used? my ( $self, $associated_pod ) = @_; return unless ( my $files = $associated_pod->{ $self->name } ); @@ -187,7 +185,7 @@ sub set_associated_pod { @$files #>>> ); - $self->_set_associated_pod($file->full_path); + $self->_set_associated_pod( $file->full_path ); } __PACKAGE__->meta->make_immutable; diff --git a/t/document/module.t b/t/document/module.t index b75b96da0..9e175328e 100644 --- a/t/document/module.t +++ b/t/document/module.t @@ -109,7 +109,7 @@ subtest set_associated_pod => sub { sub test_associated_pod { my ( $name, $files, $exp, $desc ) = @_; my $module = MetaCPAN::Document::Module->new( name => $name ); - $module->set_associated_pod( undef, + $module->set_associated_pod( { $name => [ map { PodFile->new($_) } @$files ] } ); is $module->associated_pod->full_path, ".../$exp", $desc || 'Best pod file selected'; From 6da9aa9c1b1b73c9d953030363926c08dd15d142 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Sat, 23 Apr 2016 17:33:01 +0100 Subject: [PATCH 197/329] ValuesAndExpressions::ProhibitAccessOfPrivateData has false positives. --- .perlcriticrc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.perlcriticrc b/.perlcriticrc index 4c3020b83..5bab08dd3 100644 --- a/.perlcriticrc +++ b/.perlcriticrc @@ -10,9 +10,10 @@ verbose = 11 [-RegularExpressions::RequireDotMatchAnything] [-RegularExpressions::RequireExtendedFormatting] [-RegularExpressions::RequireLineBoundaryMatching] +[-Subroutines::ProhibitExplicitReturnUndef] +[-ValuesAndExpressions::ProhibitAccessOfPrivateData] [-ValuesAndExpressions::ProhibitNoisyQuotes] [-Variables::ProhibitPunctuationVars] -[-Subroutines::ProhibitExplicitReturnUndef] [CodeLayout::RequireTrailingCommas] severity = 4 From b2264f7b9499f30e9586ff21ec074aaf0e529129 Mon Sep 17 00:00:00 2001 From: Mickey Nasriachi Date: Sat, 23 Apr 2016 16:18:20 +0100 Subject: [PATCH 198/329] we suspect this is just wrong --- t/document/file.t | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/t/document/file.t b/t/document/file.t index 441825e01..5bcfc6092 100644 --- a/t/document/file.t +++ b/t/document/file.t @@ -195,7 +195,7 @@ END ->hide_from_pause( ${ $file->content }, $file->name ), 0, 'indexed' ); - is( $file->documentation, 'MOBY::Config.pm' ); + is( $file->documentation, 'MOBY::Config' ); is( $file->level, 2 ); test_attributes $file, { sloc => 1, From 7b2c1eef2384dfcf90e974f34bf1c310e43090c3 Mon Sep 17 00:00:00 2001 From: Mickey Nasriachi Date: Sat, 23 Apr 2016 17:16:18 +0100 Subject: [PATCH 199/329] test fix: document setting logic is correct --- t/document/file.t | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/t/document/file.t b/t/document/file.t index 5bcfc6092..7dc84ef31 100644 --- a/t/document/file.t +++ b/t/document/file.t @@ -272,7 +272,7 @@ END is( $file->slop, 4, '4 lines of pod' ); is( $file->module->[0]->hide_from_pause($content), 1, 'not indexed' ); is( $file->abstract, 'AS-specific methods for Number::Phone' ); - is( $file->documentation, 'Number::Phone::NANP::AS' ); + is( $file->documentation, 'Number::Phone::NANP::ASS' ); is_deeply( $file->pod_lines, [ [ 18, 7 ] ], 'correct pod_lines' ); is( $file->module->[0]->version_numified, 1.1, 'numified version has been calculated' ); From 35b6ba557807edbb6e591ff1787f824fe65b4f7e Mon Sep 17 00:00:00 2001 From: Mickey Nasriachi Date: Sat, 23 Apr 2016 17:18:26 +0100 Subject: [PATCH 200/329] attribute corrections for documents --- lib/MetaCPAN/Document/File.pm | 7 ++++--- lib/MetaCPAN/Document/Module.pm | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/lib/MetaCPAN/Document/File.pm b/lib/MetaCPAN/Document/File.pm index 0ec573ff4..b2cd3a64c 100644 --- a/lib/MetaCPAN/Document/File.pm +++ b/lib/MetaCPAN/Document/File.pm @@ -287,9 +287,8 @@ set to C. =cut has documentation => ( - is => 'ro', - - # isa => Maybe[Str], + is => 'ro', + isa => Maybe [Str], lazy => 1, builder => '_build_documentation', index => 'analyzed', @@ -315,9 +314,11 @@ sub _build_documentation { $documentation = MetaCPAN::Util::strip_pod($documentation) if $documentation; + return undef unless length $documentation; my @indexed = grep { $_->indexed } @{ $self->module || [] }; + if ( $documentation && $self->is_pod_file ) { return $documentation; } diff --git a/lib/MetaCPAN/Document/Module.pm b/lib/MetaCPAN/Document/Module.pm index bf5907f7f..14f2710b1 100644 --- a/lib/MetaCPAN/Document/Module.pm +++ b/lib/MetaCPAN/Document/Module.pm @@ -74,7 +74,7 @@ has indexed => ( is => 'ro', required => 1, isa => Bool, - default => 0, + default => 1, writer => '_set_indexed', ); From 37fa67e5af573faa03dcbf6d6b0af6bb1b8b745b Mon Sep 17 00:00:00 2001 From: Mickey Nasriachi Date: Sat, 23 Apr 2016 18:08:50 +0100 Subject: [PATCH 201/329] only use Cpanel::JSON::XS --- bin/check_json.pl | 4 ++-- bin/convert_authors.pl | 2 +- bin/get_fields.pl | 8 ++++---- bin/write_config_json | 4 ++-- lib/Catalyst/Action/Deserialize/MetaCPANSanitizedJSON.pm | 2 +- lib/Catalyst/Plugin/OAuth2/Provider.pm | 2 +- lib/MetaCPAN/Script/Author.pm | 2 +- lib/MetaCPAN/Script/Backup.pm | 2 +- lib/MetaCPAN/Script/Mirrors.pm | 2 +- lib/MetaCPAN/Script/Query.pm | 2 +- lib/MetaCPAN/Script/Watcher.pm | 2 +- lib/MetaCPAN/Server/Controller.pm | 2 +- lib/MetaCPAN/Server/Controller/Login.pm | 2 +- lib/MetaCPAN/Server/Controller/Login/GitHub.pm | 2 +- lib/MetaCPAN/Server/Controller/Login/Google.pm | 2 +- lib/MetaCPAN/Server/Controller/Login/PAUSE.pm | 2 +- lib/MetaCPAN/Server/Controller/Login/Twitter.pm | 2 +- lib/MetaCPAN/Server/View/JSONP.pm | 2 +- lib/MetaCPAN/Types/Internal.pm | 2 +- t/lib/MetaCPAN/TestHelpers.pm | 2 +- t/server/controller/login/openid.t | 2 +- 21 files changed, 26 insertions(+), 26 deletions(-) diff --git a/bin/check_json.pl b/bin/check_json.pl index 9eee4effa..c358f94ea 100755 --- a/bin/check_json.pl +++ b/bin/check_json.pl @@ -3,7 +3,7 @@ use 5.010; use Data::Dumper; -use JSON::XS; +use Cpanel::JSON::XS; foreach my $file ( @ARGV ) { say "Processing $file"; @@ -15,4 +15,4 @@ }; if ( $@ ) { say "\terror in $file: $@" } -} \ No newline at end of file +} diff --git a/bin/convert_authors.pl b/bin/convert_authors.pl index 5f7373a21..cd1fad30b 100644 --- a/bin/convert_authors.pl +++ b/bin/convert_authors.pl @@ -2,7 +2,7 @@ use strict; use warnings; -use JSON; +use Cpanel::JSON::XS; use File::Find; my @files; diff --git a/bin/get_fields.pl b/bin/get_fields.pl index 34c77ac58..b1a81b7c8 100644 --- a/bin/get_fields.pl +++ b/bin/get_fields.pl @@ -1,7 +1,7 @@ #!/usr/bin/env perl # PODNAME: get_fields.pl use Data::Dumper; -use JSON::XS; +use Cpanel::JSON::XS; use File::Find::Rule; use File::Basename; use Path::Class; @@ -15,11 +15,11 @@ foreach my $file ( @files ) { warn "Processing $file"; my $hash; - - eval { + + eval { $hash = decode_json( do { local( @ARGV, $/ ) = $file; <> } ); } or print "\terror in $file: $@"; - + while ( my ($author, $info) = each %{$hash} ) { my @local_fields = keys %{$info}; @fields{@local_fields} = @local_fields; diff --git a/bin/write_config_json b/bin/write_config_json index b84de54d4..f2cdb7087 100644 --- a/bin/write_config_json +++ b/bin/write_config_json @@ -3,9 +3,9 @@ # PODNAME: write_config_json # # takes the root directory of an extracted distribution and outputs a JSON file -# suitable for CPAN::Faker to STDOUT +# suitable for CPAN::Faker to STDOUT use strictures 1; -use JSON; +use Cpanel::JSON::XS; use YAML; use IO::All; diff --git a/lib/Catalyst/Action/Deserialize/MetaCPANSanitizedJSON.pm b/lib/Catalyst/Action/Deserialize/MetaCPANSanitizedJSON.pm index 7e012c458..1e9c10454 100644 --- a/lib/Catalyst/Action/Deserialize/MetaCPANSanitizedJSON.pm +++ b/lib/Catalyst/Action/Deserialize/MetaCPANSanitizedJSON.pm @@ -3,7 +3,7 @@ package Catalyst::Action::Deserialize::MetaCPANSanitizedJSON; use Moose; use namespace::autoclean; use Try::Tiny; -use JSON (); +use Cpanel::JSON::XS (); use MetaCPAN::Server::QuerySanitizer (); extends 'Catalyst::Action::Deserialize::JSON'; diff --git a/lib/Catalyst/Plugin/OAuth2/Provider.pm b/lib/Catalyst/Plugin/OAuth2/Provider.pm index b9c450943..4846c0293 100644 --- a/lib/Catalyst/Plugin/OAuth2/Provider.pm +++ b/lib/Catalyst/Plugin/OAuth2/Provider.pm @@ -19,7 +19,7 @@ use Moose; BEGIN { extends 'Catalyst::Controller' } use Digest::SHA1; -use JSON; +use Cpanel::JSON::XS; use URI; has login => ( is => 'ro' ); diff --git a/lib/MetaCPAN/Script/Author.pm b/lib/MetaCPAN/Script/Author.pm index b98148dfe..975507315 100644 --- a/lib/MetaCPAN/Script/Author.pm +++ b/lib/MetaCPAN/Script/Author.pm @@ -10,7 +10,7 @@ use DateTime::Format::ISO8601 (); use Email::Valid (); use Encode (); use File::stat (); -use JSON::XS (); +use Cpanel::JSON::XS (); use Log::Contextual qw( :log ); use MetaCPAN::Document::Author; use URI (); diff --git a/lib/MetaCPAN/Script/Backup.pm b/lib/MetaCPAN/Script/Backup.pm index 95cdc8cea..81c7f7dd0 100644 --- a/lib/MetaCPAN/Script/Backup.pm +++ b/lib/MetaCPAN/Script/Backup.pm @@ -7,7 +7,7 @@ use feature qw( state ); use Data::Printer; use DateTime; use IO::Zlib (); -use JSON::XS; +use Cpanel::JSON::XS; use Log::Contextual qw( :log :dlog ); use MetaCPAN::Types qw( Bool Int Str File ); use Moose; diff --git a/lib/MetaCPAN/Script/Mirrors.pm b/lib/MetaCPAN/Script/Mirrors.pm index aeb199dbc..9183f6574 100644 --- a/lib/MetaCPAN/Script/Mirrors.pm +++ b/lib/MetaCPAN/Script/Mirrors.pm @@ -3,7 +3,7 @@ package MetaCPAN::Script::Mirrors; use strict; use warnings; -use JSON (); +use Cpanel::JSON::XS (); use LWP::UserAgent; use Log::Contextual qw( :log :dlog ); use MetaCPAN::Document::Mirror; diff --git a/lib/MetaCPAN/Script/Query.pm b/lib/MetaCPAN/Script/Query.pm index 908b8e01b..6ef42470a 100644 --- a/lib/MetaCPAN/Script/Query.pm +++ b/lib/MetaCPAN/Script/Query.pm @@ -4,7 +4,7 @@ use strict; use warnings; use Data::DPath qw(dpath); -use JSON::XS; +use Cpanel::JSON::XS; use Moose; use MooseX::Aliases; use YAML::Syck qw(Dump); diff --git a/lib/MetaCPAN/Script/Watcher.pm b/lib/MetaCPAN/Script/Watcher.pm index 935bda396..464a6de7a 100644 --- a/lib/MetaCPAN/Script/Watcher.pm +++ b/lib/MetaCPAN/Script/Watcher.pm @@ -5,7 +5,7 @@ use warnings; use Moose; use CPAN::DistnameInfo; -use JSON::XS; +use Cpanel::JSON::XS; use Log::Contextual qw( :log ); use MetaCPAN::Util; use MetaCPAN::Types qw( Bool ); diff --git a/lib/MetaCPAN/Server/Controller.pm b/lib/MetaCPAN/Server/Controller.pm index 72a7a291d..360cce855 100644 --- a/lib/MetaCPAN/Server/Controller.pm +++ b/lib/MetaCPAN/Server/Controller.pm @@ -4,7 +4,7 @@ use strict; use warnings; use namespace::autoclean; -use JSON; +use Cpanel::JSON::XS; use List::MoreUtils (); use Moose::Util (); use Moose; diff --git a/lib/MetaCPAN/Server/Controller/Login.pm b/lib/MetaCPAN/Server/Controller/Login.pm index 2ab788da9..aa668e30e 100644 --- a/lib/MetaCPAN/Server/Controller/Login.pm +++ b/lib/MetaCPAN/Server/Controller/Login.pm @@ -4,7 +4,7 @@ use strict; use warnings; use Facebook::Graph; -use JSON; +use Cpanel::JSON::XS; use Moose; BEGIN { extends 'Catalyst::Controller' } diff --git a/lib/MetaCPAN/Server/Controller/Login/GitHub.pm b/lib/MetaCPAN/Server/Controller/Login/GitHub.pm index be4b0fd1b..723be8fef 100644 --- a/lib/MetaCPAN/Server/Controller/Login/GitHub.pm +++ b/lib/MetaCPAN/Server/Controller/Login/GitHub.pm @@ -4,7 +4,7 @@ use strict; use warnings; use HTTP::Request::Common; -use JSON; +use Cpanel::JSON::XS; use LWP::UserAgent; use Moose; diff --git a/lib/MetaCPAN/Server/Controller/Login/Google.pm b/lib/MetaCPAN/Server/Controller/Login/Google.pm index 1dbae74fd..8d7d636b8 100644 --- a/lib/MetaCPAN/Server/Controller/Login/Google.pm +++ b/lib/MetaCPAN/Server/Controller/Login/Google.pm @@ -4,7 +4,7 @@ use strict; use warnings; use HTTP::Request::Common; -use JSON; +use Cpanel::JSON::XS; use LWP::UserAgent; use Moose; diff --git a/lib/MetaCPAN/Server/Controller/Login/PAUSE.pm b/lib/MetaCPAN/Server/Controller/Login/PAUSE.pm index 12d6f522d..6132835aa 100644 --- a/lib/MetaCPAN/Server/Controller/Login/PAUSE.pm +++ b/lib/MetaCPAN/Server/Controller/Login/PAUSE.pm @@ -8,7 +8,7 @@ use CHI (); use Email::Sender::Simple (); use Email::Simple (); use Encode (); -use JSON; +use Cpanel::JSON::XS; use Moose; use Try::Tiny; use MetaCPAN::Util; diff --git a/lib/MetaCPAN/Server/Controller/Login/Twitter.pm b/lib/MetaCPAN/Server/Controller/Login/Twitter.pm index ea37fbe36..134fb1ba9 100644 --- a/lib/MetaCPAN/Server/Controller/Login/Twitter.pm +++ b/lib/MetaCPAN/Server/Controller/Login/Twitter.pm @@ -4,7 +4,7 @@ use strict; use warnings; use HTTP::Request::Common; -use JSON; +use Cpanel::JSON::XS; use LWP::UserAgent; use Moose; use Net::Twitter; diff --git a/lib/MetaCPAN/Server/View/JSONP.pm b/lib/MetaCPAN/Server/View/JSONP.pm index 24db24e76..7a53cdf0e 100644 --- a/lib/MetaCPAN/Server/View/JSONP.pm +++ b/lib/MetaCPAN/Server/View/JSONP.pm @@ -4,7 +4,7 @@ use strict; use warnings; use Encode qw(decode_utf8); -use JSON (); +use Cpanel::JSON::XS (); use Moose; extends 'Catalyst::View'; diff --git a/lib/MetaCPAN/Types/Internal.pm b/lib/MetaCPAN/Types/Internal.pm index d6b9d066b..2b9bc7691 100644 --- a/lib/MetaCPAN/Types/Internal.pm +++ b/lib/MetaCPAN/Types/Internal.pm @@ -5,7 +5,7 @@ use warnings; use CPAN::Meta; use ElasticSearchX::Model::Document::Types qw(:all); -use JSON; +use Cpanel::JSON::XS; use MooseX::Getopt::OptionTypeMap; use MooseX::Types::Common::String qw(NonEmptySimpleStr); use MooseX::Types::Moose qw( ArrayRef HashRef Item Int Str ); diff --git a/t/lib/MetaCPAN/TestHelpers.pm b/t/lib/MetaCPAN/TestHelpers.pm index 1dde25843..d6551011a 100644 --- a/t/lib/MetaCPAN/TestHelpers.pm +++ b/t/lib/MetaCPAN/TestHelpers.pm @@ -6,7 +6,7 @@ package # no_index use FindBin; use Git::Helpers qw( checkout_root ); -use JSON; +use Cpanel::JSON::XS; use MetaCPAN::Script::Runner; use Path::Class qw( dir ); use Try::Tiny; diff --git a/t/server/controller/login/openid.t b/t/server/controller/login/openid.t index 8712c5f6e..bc61533a1 100644 --- a/t/server/controller/login/openid.t +++ b/t/server/controller/login/openid.t @@ -5,7 +5,7 @@ use utf8; package # Test::Routine's run_me (in main) doesn't mix well with Test::Aggregate. t::server::controller::login::openid; -use JSON qw( decode_json ); +use Cpanel::JSON::XS qw( decode_json ); use MetaCPAN::Server::Test; use Test::More; use Test::OpenID::Server; From 309718e9e5c791f4b68b34a2caf2011dbbd08882 Mon Sep 17 00:00:00 2001 From: Mickey Nasriachi Date: Sat, 23 Apr 2016 18:10:17 +0100 Subject: [PATCH 202/329] fix test document/module --- t/document/module.t | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/t/document/module.t b/t/document/module.t index 9e175328e..9f1a8e6b0 100644 --- a/t/document/module.t +++ b/t/document/module.t @@ -111,8 +111,7 @@ sub test_associated_pod { my $module = MetaCPAN::Document::Module->new( name => $name ); $module->set_associated_pod( { $name => [ map { PodFile->new($_) } @$files ] } ); - is $module->associated_pod->full_path, ".../$exp", - $desc || 'Best pod file selected'; + is $module->associated_pod, ".../$exp", $desc || 'Best pod file selected'; } done_testing; From 1b1d79d4a92d512beb5bac88755303fd76418cbe Mon Sep 17 00:00:00 2001 From: Mickey Nasriachi Date: Sat, 23 Apr 2016 18:10:38 +0100 Subject: [PATCH 203/329] fix test release/badpod --- t/release/badpod.t | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/t/release/badpod.t b/t/release/badpod.t index 9d79da120..cb3c2176a 100644 --- a/t/release/badpod.t +++ b/t/release/badpod.t @@ -9,16 +9,16 @@ test_release( { name => 'BadPod-0.01', author => 'MO', - authorized => \1, - first => \1, + authorized => 1, + first => 1, provides => [ 'BadPod', ], main_module => 'BadPod', modules => { 'lib/BadPod.pm' => [ { name => 'BadPod', - indexed => \1, - authorized => \1, + indexed => 'true', + authorized => 'true', version => '0.01', version_numified => 0.01, associated_pod => 'MO/BadPod-0.01/lib/BadPod.pm', From 9ff78d72b25432acb61ecf6289619a8b288f613c Mon Sep 17 00:00:00 2001 From: Mickey Nasriachi Date: Sat, 23 Apr 2016 19:13:00 +0100 Subject: [PATCH 204/329] fix test release/packages-unclaimable --- t/release/packages-unclaimable.t | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/t/release/packages-unclaimable.t b/t/release/packages-unclaimable.t index 28cfe46ce..6a35541a4 100644 --- a/t/release/packages-unclaimable.t +++ b/t/release/packages-unclaimable.t @@ -14,8 +14,8 @@ test_release( author => 'RWSTAUNER', abstract => 'Dist that appears to declare packages that are not allowed', - authorized => \1, - first => \1, + authorized => 1, + first => 1, provides => [ 'Packages::Unclaimable', ], status => 'latest', main_module => 'Packages::Unclaimable', @@ -23,8 +23,8 @@ test_release( 'lib/Packages/Unclaimable.pm' => [ { name => 'Packages::Unclaimable', - indexed => \1, - authorized => \1, + indexed => 'true', + authorized => 'true', version => 2, version_numified => 2, associated_pod => From 40e129cf0671629dd05b97c604020bd0e582893b Mon Sep 17 00:00:00 2001 From: Mickey Nasriachi Date: Sat, 23 Apr 2016 19:23:51 +0100 Subject: [PATCH 205/329] fix test release/no-modules --- t/release/no-modules.t | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/t/release/no-modules.t b/t/release/no-modules.t index 47bcaff0b..1cd74579b 100644 --- a/t/release/no-modules.t +++ b/t/release/no-modules.t @@ -10,8 +10,8 @@ test_release( { name => 'No-Modules-1.1', author => 'BORISNAT', - authorized => \1, - first => \1, + authorized => 1, + first => 1, # Without modules it won't get marked as latest. status => 'cpan', From 3d9136426d432298a6d9328a43b01ad4c8d892f8 Mon Sep 17 00:00:00 2001 From: Mickey Nasriachi Date: Sat, 23 Apr 2016 19:24:43 +0100 Subject: [PATCH 206/329] fix test release/no-packages --- t/release/no-packages.t | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/t/release/no-packages.t b/t/release/no-packages.t index 72d056dec..67c211059 100644 --- a/t/release/no-packages.t +++ b/t/release/no-packages.t @@ -10,8 +10,8 @@ test_release( { name => 'No-Packages-1.1', author => 'BORISNAT', - authorized => \1, - first => \1, + authorized => 1, + first => 1, # Without modules it won't get marked as latest. status => 'cpan', From 04f47339af95c5472d76b648689fe63fe8397155 Mon Sep 17 00:00:00 2001 From: Mickey Nasriachi Date: Sat, 23 Apr 2016 22:46:17 +0100 Subject: [PATCH 207/329] fixes few tests --- t/release/common-files.t | 8 ++++---- t/release/devel-gofaster-0.000.t | 4 ++-- t/release/documentation-not-readme.t | 2 +- t/release/file-duplicates.t | 22 +++++++++++----------- t/release/ipsonar-0.29.t | 4 ++-- t/release/local-lib.t | 8 ++++---- t/release/meta-provides.t | 4 ++-- 7 files changed, 26 insertions(+), 26 deletions(-) diff --git a/t/release/common-files.t b/t/release/common-files.t index d0810f2ae..43530b770 100644 --- a/t/release/common-files.t +++ b/t/release/common-files.t @@ -9,15 +9,15 @@ test_release( { name => 'Common-Files-1.1', author => 'BORISNAT', - authorized => \1, - first => \1, + authorized => 1, + first => 1, provides => ['Common::Files'], modules => { 'lib/Common/Files.pm' => [ { name => 'Common::Files', - indexed => \1, - authorized => \1, + indexed => 'true', + authorized => 'true', version => '1.1', version_numified => 1.1, associated_pod => diff --git a/t/release/devel-gofaster-0.000.t b/t/release/devel-gofaster-0.000.t index 5b957d976..52812f6c6 100644 --- a/t/release/devel-gofaster-0.000.t +++ b/t/release/devel-gofaster-0.000.t @@ -10,8 +10,8 @@ test_release( name => 'Devel-GoFaster-0.000', distribution => 'Devel-GoFaster', author => 'LOCAL', - authorized => \1, - first => \1, + authorized => 1, + first => 1, version => '0.000', provides => [ 'Devel::GoFaster', ], diff --git a/t/release/documentation-not-readme.t b/t/release/documentation-not-readme.t index bd0bee9a9..b5d2db23c 100644 --- a/t/release/documentation-not-readme.t +++ b/t/release/documentation-not-readme.t @@ -8,7 +8,7 @@ use Test::More; test_release( 'RWSTAUNER/Documentation-Not-Readme-0.01', { - first => \1, + first => 1, extra_tests => \&test_modules, main_module => 'Documentation::Not::Readme', } diff --git a/t/release/file-duplicates.t b/t/release/file-duplicates.t index 1b9f33e76..7ca61f7fa 100644 --- a/t/release/file-duplicates.t +++ b/t/release/file-duplicates.t @@ -8,7 +8,7 @@ use Test::More; test_release( 'BORISNAT/File-Duplicates-1.000', { - first => \1, + first => 1, main_module => 'File::Duplicates', modules => { 'lib/File/Duplicates.pm' => [ @@ -16,8 +16,8 @@ test_release( name => 'File::Duplicates', version => '0.991', version_numified => '0.991', - authorized => \1, - indexed => \1, + authorized => 'true', + indexed => 'true', } ], 'lib/File/lib/File/Duplicates.pm' => [ @@ -25,8 +25,8 @@ test_release( name => 'File::lib::File::Duplicates', version => '0.992', version_numified => '0.992', - authorized => \1, - indexed => \1, + authorized => 'true', + indexed => 'true', } ], 'lib/Dupe.pm' => [ @@ -34,8 +34,8 @@ test_release( name => 'Dupe', version => '0.993', version_numified => '0.993', - authorized => \1, - indexed => \1, + authorized => 'true', + indexed => 'true', } ], 'DupeX/Dupe.pm' => [ @@ -43,15 +43,15 @@ test_release( name => 'DupeX::Dupe', version => '0.994', version_numified => '0.994', - authorized => \1, - indexed => \1, + authorized => 'true', + indexed => 'true', }, { name => 'DupeX::Dupe::X', version => '0.995', version_numified => '0.995', - authorized => \1, - indexed => \1, + authorized => 'true', + indexed => 'true', } ], }, diff --git a/t/release/ipsonar-0.29.t b/t/release/ipsonar-0.29.t index 33d827dff..79692f9a6 100644 --- a/t/release/ipsonar-0.29.t +++ b/t/release/ipsonar-0.29.t @@ -11,8 +11,8 @@ test_release( distribution => 'IPsonar', author => 'LOCAL', - authorized => \1, - first => \1, + authorized => 1, + first => 1, # META file says ''. version => '', diff --git a/t/release/local-lib.t b/t/release/local-lib.t index ec35d94cc..1d0f0dad8 100644 --- a/t/release/local-lib.t +++ b/t/release/local-lib.t @@ -10,16 +10,16 @@ test_release( name => 'local-lib-0.01', author => 'BORISNAT', abstract => 'Legitimate module', - authorized => \1, - first => \1, + authorized => 1, + first => 1, provides => ['local::lib'], main_module => 'local::lib', modules => { 'lib/local/lib.pm' => [ { name => 'local::lib', - indexed => \1, - authorized => \1, + indexed => 'true', + authorized => 'true', version => '0.01', version_numified => 0.01, associated_pod => diff --git a/t/release/meta-provides.t b/t/release/meta-provides.t index 3bc76a38c..e4807203e 100644 --- a/t/release/meta-provides.t +++ b/t/release/meta-provides.t @@ -12,8 +12,8 @@ test_release( name => 'Meta-Provides-1.01', author => 'RWSTAUNER', abstract => 'has provides key in meta', - authorized => \1, - first => \1, + authorized => 1, + first => 1, provides => [ 'Meta::Provides', ], status => 'latest', main_module => 'Meta::Provides', From e0d2e9d4f3c6eb28beeef8087fdb011e8b20d0ab Mon Sep 17 00:00:00 2001 From: Mickey Nasriachi Date: Sat, 23 Apr 2016 23:34:36 +0100 Subject: [PATCH 208/329] some missed changes to Cpanel::JSON::XS --- cpanfile | 2 -- lib/MetaCPAN/Script/Author.pm | 3 ++- lib/MetaCPAN/Script/Mirrors.pm | 2 +- lib/MetaCPAN/Script/Query.pm | 3 ++- lib/MetaCPAN/Script/Release.pm | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/cpanfile b/cpanfile index 62b75a498..bbddce7e6 100644 --- a/cpanfile +++ b/cpanfile @@ -74,8 +74,6 @@ requires 'IO::String'; requires 'IO::Uncompress::Bunzip2'; requires 'IO::Zlib'; requires 'IPC::Run3'; -requires 'JSON::XS', '3.01'; -requires 'JSON', '2.90'; requires 'LWP::Protocol::https'; requires 'LWP::UserAgent', '6.15'; requires 'LWP::UserAgent::Paranoid'; diff --git a/lib/MetaCPAN/Script/Author.pm b/lib/MetaCPAN/Script/Author.pm index 975507315..c2c0e38bc 100644 --- a/lib/MetaCPAN/Script/Author.pm +++ b/lib/MetaCPAN/Script/Author.pm @@ -115,7 +115,8 @@ sub author_config { my $author; eval { - $author = JSON::XS->new->utf8->relaxed->decode( $file->slurp ); + $author + = Cpanel::JSON::XS->new->utf8->relaxed->decode( $file->slurp ); 1; } or do { log_warn {"$file is broken: $@"}; diff --git a/lib/MetaCPAN/Script/Mirrors.pm b/lib/MetaCPAN/Script/Mirrors.pm index 9183f6574..6bfe8999d 100644 --- a/lib/MetaCPAN/Script/Mirrors.pm +++ b/lib/MetaCPAN/Script/Mirrors.pm @@ -24,7 +24,7 @@ sub index_mirrors { my $json = $self->cpan->file( 'indices', 'mirrors.json' )->slurp; my $type = $self->index->type('mirror'); - my $mirrors = JSON::XS::decode_json($json); + my $mirrors = Cpanel::JSON::XS::decode_json($json); foreach my $mirror (@$mirrors) { $mirror->{location} = { lon => $mirror->{longitude}, lat => $mirror->{latitude} }; diff --git a/lib/MetaCPAN/Script/Query.pm b/lib/MetaCPAN/Script/Query.pm index 6ef42470a..96488fd18 100644 --- a/lib/MetaCPAN/Script/Query.pm +++ b/lib/MetaCPAN/Script/Query.pm @@ -41,7 +41,8 @@ sub run { } ); my @results = dpath($path)->match( decode_json($json) ); - ( my $dump = Dump(@results) ) =~ s/\!\!perl\/scalar:JSON::XS::Boolean //g; + ( my $dump = Dump(@results) ) + =~ s/\!\!perl\/scalar:Cpanel::JSON::XS::Boolean //g; print $dump; } diff --git a/lib/MetaCPAN/Script/Release.pm b/lib/MetaCPAN/Script/Release.pm index d6731a314..f84f2ed7a 100644 --- a/lib/MetaCPAN/Script/Release.pm +++ b/lib/MetaCPAN/Script/Release.pm @@ -4,7 +4,7 @@ use strict; use warnings; BEGIN { - $ENV{PERL_JSON_BACKEND} = 'JSON::XS'; + $ENV{PERL_JSON_BACKEND} = 'Cpanel::JSON::XS'; } use CPAN::DistnameInfo (); From 3e3804743d6fcc421494fa55f73015e11c4662be Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Sat, 23 Apr 2016 23:16:48 +0100 Subject: [PATCH 209/329] Document how to get Minion job and worker stats. --- bin/queue.pl | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/bin/queue.pl b/bin/queue.pl index fb935d6ca..bebecb7c6 100755 --- a/bin/queue.pl +++ b/bin/queue.pl @@ -9,6 +9,10 @@ =head2 DESCRIPTION carton exec -- morbo bin/queue.pl +Get status on jobs and workers: + + sh /home/metacpan/bin/metacpan-api-carton-exec bin/queue.pl minion job -s + =cut # for morbo From 873522eee8aad0319015d74cc3fbb866f384ccae Mon Sep 17 00:00:00 2001 From: Joel Berger Date: Sat, 23 Apr 2016 17:39:15 +0100 Subject: [PATCH 210/329] Added script which fetches and indexes river data closes #460 --- .gitignore | 1 + lib/MetaCPAN/Document/Distribution.pm | 9 ++- lib/MetaCPAN/Role/Logger.pm | 3 +- lib/MetaCPAN/Role/Script.pm | 3 +- lib/MetaCPAN/Script/River.pm | 80 +++++++++++++++++++++++++++ lib/MetaCPAN/Types/Internal.pm | 4 ++ t/script/river.t | 61 ++++++++++++++++++++ t/var/river.json | 14 +++++ 8 files changed, 172 insertions(+), 3 deletions(-) create mode 100644 lib/MetaCPAN/Script/River.pm create mode 100644 t/script/river.t create mode 100644 t/var/river.json diff --git a/.gitignore b/.gitignore index f7bc970db..ad29cd523 100644 --- a/.gitignore +++ b/.gitignore @@ -9,6 +9,7 @@ /var /t/var/tmp/ /t/var/darkpan/ +/t/var/log/ /etc/metacpan_local.pl metacpan_server_local.conf diff --git a/lib/MetaCPAN/Document/Distribution.pm b/lib/MetaCPAN/Document/Distribution.pm index cafd174f3..4d6028453 100644 --- a/lib/MetaCPAN/Document/Distribution.pm +++ b/lib/MetaCPAN/Document/Distribution.pm @@ -7,7 +7,7 @@ use namespace::autoclean; use Moose; use ElasticSearchX::Model::Document; -use MetaCPAN::Types qw( ArrayRef BugSummary ); +use MetaCPAN::Types qw( ArrayRef BugSummary RiverSummary); has name => ( is => 'ro', @@ -22,6 +22,13 @@ has bugs => ( writer => '_set_bugs', ); +has river => ( + is => 'ro', + isa => RiverSummary, + dynamic => 1, + writer => '_set_river', +); + sub releases { my $self = shift; return $self->index->type("release") diff --git a/lib/MetaCPAN/Role/Logger.pm b/lib/MetaCPAN/Role/Logger.pm index 14e33a8ca..f9b1bdaa0 100644 --- a/lib/MetaCPAN/Role/Logger.pm +++ b/lib/MetaCPAN/Role/Logger.pm @@ -49,7 +49,8 @@ sub set_logger_once { # XXX This doesn't belong here. sub _build_logger { my ($config) = @_; - my $log = Log::Log4perl->get_logger( $ARGV[0] ); + my $log = Log::Log4perl->get_logger( $ARGV[0] + || 'this_would_have_been_argv_0_but_there_is_no_such_thing' ); foreach my $c (@$config) { my $layout = Log::Log4perl::Layout::PatternLayout->new( $c->{layout} || qq{%d %p{1} %c: %m{chomp}%n} ); diff --git a/lib/MetaCPAN/Role/Script.pm b/lib/MetaCPAN/Role/Script.pm index 0cd064c55..8d2004ea4 100644 --- a/lib/MetaCPAN/Role/Script.pm +++ b/lib/MetaCPAN/Role/Script.pm @@ -9,6 +9,7 @@ use Log::Contextual qw( :log :dlog ); use MetaCPAN::Model; use MetaCPAN::Types qw(:all); use Moose::Role; +use Carp (); has 'cpan' => ( is => 'ro', @@ -74,7 +75,7 @@ sub handle_error { log_fatal {$error}; # Die if configured (for the test suite). - die $error if $self->die_on_error; + Carp::croak $error if $self->die_on_error; } sub index { diff --git a/lib/MetaCPAN/Script/River.pm b/lib/MetaCPAN/Script/River.pm new file mode 100644 index 000000000..ebc98beb7 --- /dev/null +++ b/lib/MetaCPAN/Script/River.pm @@ -0,0 +1,80 @@ +package MetaCPAN::Script::River; + +use Moose; +use namespace::autoclean; + +use JSON::MaybeXS qw( decode_json ); +use Log::Contextual qw( :log :dlog ); +use LWP::UserAgent; +use MetaCPAN::Types qw( ArrayRef Str Uri); + +with 'MetaCPAN::Role::Script', 'MooseX::Getopt'; + +has river_url => ( + is => 'ro', + isa => Uri, + coerce => 1, + required => 1, + default => 'https://neilb.org/FIXME', +); + +has _ua => ( + is => 'ro', + isa => 'LWP::UserAgent', + default => sub { LWP::UserAgent->new }, +); + +sub run { + my $self = shift; + my $summaries = $self->retrieve_river_summaries; + $self->index_river_summaries($summaries); + + return 1; +} + +sub index_river_summaries { + my ( $self, $summaries ) = @_; + $self->index->refresh; + my $dists = $self->index->type('distribution'); + my $bulk = $self->index->bulk( size => 300 ); + for my $summary (@$summaries) { + my $dist = delete $summary->{dist}; + my $doc = $dists->get($dist); + $doc ||= $dists->new_document( { name => $dist } ); + $doc->_set_river($summary); + $bulk->put($doc); + } + $bulk->commit; +} + +sub retrieve_river_summaries { + my $self = shift; + my $resp = $self->_ua->get( $self->river_url ); + + $self->handle_error( $resp->status_line ) unless $resp->is_success; + + return decode_json $resp->content; +} + +__PACKAGE__->meta->make_immutable; + +1; + +=pod + +=head1 SYNOPSIS + + # bin/metacpan river + +=head1 DESCRIPTION + +Retrieves the CPAN river data from its source and +updates our ES information. + +This can then be accessed here: + +http://api.metacpan.org/distribution/Moose +http://api.metacpan.org/distribution/HTTP-BrowserDetect + +=cut + diff --git a/lib/MetaCPAN/Types/Internal.pm b/lib/MetaCPAN/Types/Internal.pm index 2b9bc7691..6416cac72 100644 --- a/lib/MetaCPAN/Types/Internal.pm +++ b/lib/MetaCPAN/Types/Internal.pm @@ -26,6 +26,7 @@ use MooseX::Types -declare => [ PerlMongers Tests BugSummary + RiverSummary ) ]; @@ -104,6 +105,9 @@ subtype BugSummary, source => Str ]; +subtype RiverSummary, + as Dict [ ( map { $_ => Optional [Int] } qw(total immediate bucket) ), ]; + subtype Resources, as Dict [ license => Optional [ ArrayRef [Str] ], diff --git a/t/script/river.t b/t/script/river.t new file mode 100644 index 000000000..b94640486 --- /dev/null +++ b/t/script/river.t @@ -0,0 +1,61 @@ +use strict; +use warnings; + +use lib 't/lib'; + +use Git::Helpers qw( checkout_root ); +use MetaCPAN::Script::River; +use MetaCPAN::Script::Runner; +use MetaCPAN::Server::Test; +use MetaCPAN::TestHelpers; +use Test::More; +use URI; + +my $config = MetaCPAN::Script::Runner::build_config; + +# local json file with structure from https://github.com/CPAN-API/cpan-api/issues/460 +my $root = checkout_root(); +my $file = URI->new('t/var/river.json')->abs("file://$root/"); +$config->{'river_url'} = "$file"; + +my $river = MetaCPAN::Script::River->new_with_options($config); +ok $river->run, 'runs and returns true'; + +my %expect = ( + 'System-Command' => { + total => 92, + immediate => 4, + bucket => 2, + }, + 'Text-Markdown' => { + total => 92, + immediate => 56, + bucket => 2, + } +); + +test_psgi app, sub { + my $cb = shift; + for my $dist ( keys %expect ) { + my $test = $expect{$dist}; + subtest "Check $dist" => sub { + my $url = "/distribution/$dist"; + ok( my $res = $cb->( GET $url ), "GET $url" ); + + # TRAVIS 5.18 + is( $res->code, 200, "code 200" ); + is( + $res->header('content-type'), + 'application/json; charset=utf-8', + 'Content-type' + ); + my $json = decode_json_ok($res); + + # TRAVIS 5.18 + is_deeply( $json->{river}, $test, + "$dist river summary roundtrip" ); + }; + } +}; + +done_testing(); diff --git a/t/var/river.json b/t/var/river.json new file mode 100644 index 000000000..2bbc6ea7e --- /dev/null +++ b/t/var/river.json @@ -0,0 +1,14 @@ +[ + { + "dist": "System-Command", + "total": 92, + "immediate": 4, + "bucket": 2 + }, + { + "dist": "Text-Markdown", + "total": 92, + "immediate": 56, + "bucket": 2 + } +] From 05b54c4530766ea4a623d2a74364f84b24bc4d72 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Sun, 24 Apr 2016 00:03:58 +0100 Subject: [PATCH 211/329] Adds MetaCPAN::Moose to cpanfile --- .perlcriticrc | 4 ++-- cpanfile | 1 + cpanfile.snapshot | 24 ++++++++++++++++++++++++ 3 files changed, 27 insertions(+), 2 deletions(-) diff --git a/.perlcriticrc b/.perlcriticrc index 5bab08dd3..b5ba8f14b 100644 --- a/.perlcriticrc +++ b/.perlcriticrc @@ -19,10 +19,10 @@ verbose = 11 severity = 4 [TestingAndDebugging::RequireUseStrict] -equivalent_modules = Test::Routine Mojo::Base +equivalent_modules = MetaCPAN::Moose Mojo::Base Test::Routine [TestingAndDebugging::RequireUseWarnings] -equivalent_modules = Test::Routine Mojo::Base +equivalent_modules = MetaCPAN::Moose Mojo::Base Test::Routine [ValuesAndExpressions::ProhibitEmptyQuotes] severity = 4 diff --git a/cpanfile b/cpanfile index bbddce7e6..4050469d5 100644 --- a/cpanfile +++ b/cpanfile @@ -83,6 +83,7 @@ requires 'List::Util', '1.43'; requires 'Log::Contextual'; requires 'Log::Log4perl'; requires 'Log::Log4perl::Appender::ScreenColoredLevels'; +requires 'MetaCPAN::Moose'; requires 'Minion', '>= 5.01'; requires 'Minion::Backend::SQLite'; requires 'Module::Load'; diff --git a/cpanfile.snapshot b/cpanfile.snapshot index 5ebff5f2a..8728b9bd0 100644 --- a/cpanfile.snapshot +++ b/cpanfile.snapshot @@ -3713,6 +3713,16 @@ DISTRIBUTIONS re 0 strict 0 warnings 0 + Import-Into-1.002005 + pathname: H/HA/HAARG/Import-Into-1.002005.tar.gz + provides: + Import::Into 1.002005 + requirements: + ExtUtils::MakeMaker 0 + Module::Runtime 0 + perl 5.006 + strict 0 + warnings 0 Iterator-0.03 pathname: R/RO/ROODE/Iterator-0.03.tar.gz provides: @@ -4255,6 +4265,20 @@ DISTRIBUTIONS perl 5.008 strict 0 warnings 0 + MetaCPAN-Moose-0.000001 + pathname: O/OA/OALDERS/MetaCPAN-Moose-0.000001.tar.gz + provides: + MetaCPAN::Moose 0.000001 + requirements: + ExtUtils::MakeMaker 0 + Import::Into 0 + Module::Build 0.28 + Moose 2.1605 + MooseX::StrictConstructor 0.19 + namespace::autoclean 0.28 + perl 5.006 + strict 0 + warnings 0 Minion-5.04 pathname: S/SR/SRI/Minion-5.04.tar.gz provides: From 52a83c9ea5483faf930dfcf5699d6ed929408ddc Mon Sep 17 00:00:00 2001 From: Mickey Nasriachi Date: Sat, 23 Apr 2016 23:59:21 +0100 Subject: [PATCH 212/329] fix test release/binary-data --- lib/MetaCPAN/Document/Module.pm | 6 +++--- t/release/binary-data.t | 3 +-- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/lib/MetaCPAN/Document/Module.pm b/lib/MetaCPAN/Document/Module.pm index 14f2710b1..b6f5319a5 100644 --- a/lib/MetaCPAN/Document/Module.pm +++ b/lib/MetaCPAN/Document/Module.pm @@ -8,7 +8,7 @@ use ElasticSearchX::Model::Document; with 'ElasticSearchX::Model::Document::EmbeddedRole'; -use MetaCPAN::Types qw( Bool Num Str ); +use MetaCPAN::Types qw( Bool Maybe Num Str ); use MetaCPAN::Util; =head1 SYNOPSIS @@ -88,9 +88,9 @@ has authorized => ( has associated_pod => ( required => 1, - isa => Str, + isa => Maybe [Str], is => 'ro', - default => q{}, + default => sub { }, writer => '_set_associated_pod', ); diff --git a/t/release/binary-data.t b/t/release/binary-data.t index 802f98651..9f74a25b4 100644 --- a/t/release/binary-data.t +++ b/t/release/binary-data.t @@ -21,8 +21,7 @@ test_release( authorized => 'true', version => '0.01', version_numified => 0.01, - - # no associated_pod + associated_pod => undef, }, ], 'lib/Binary/Data/WithPod.pm' => [ From cd44d6a8c0d026304ca83c817c524d2222e1abfd Mon Sep 17 00:00:00 2001 From: Mickey Nasriachi Date: Sun, 24 Apr 2016 11:02:36 +0100 Subject: [PATCH 213/329] query fixes --- lib/MetaCPAN/Document/Distribution.pm | 4 ++-- lib/MetaCPAN/Document/Release.pm | 15 +++++++-------- lib/MetaCPAN/Model/Release.pm | 1 - t/release/moose.t | 22 ++++++++++------------ 4 files changed, 19 insertions(+), 23 deletions(-) diff --git a/lib/MetaCPAN/Document/Distribution.pm b/lib/MetaCPAN/Document/Distribution.pm index 4d6028453..131551c71 100644 --- a/lib/MetaCPAN/Document/Distribution.pm +++ b/lib/MetaCPAN/Document/Distribution.pm @@ -32,7 +32,7 @@ has river => ( sub releases { my $self = shift; return $self->index->type("release") - ->filter( { term => { "release.distribution" => $self->name } } ); + ->filter( { term => { "distribution" => $self->name } } ); } sub set_first_release { @@ -49,7 +49,7 @@ sub set_first_release { sub unset_first_release { my $self = shift; my $releases - = $self->releases->filter( { term => { "release.first" => \1 }, } ) + = $self->releases->filter( { term => { first => 'true' }, } ) ->size(200)->scroll; while ( my $release = $releases->next ) { $release->_set_first(0); diff --git a/lib/MetaCPAN/Document/Release.pm b/lib/MetaCPAN/Document/Release.pm index fde0bcfd2..538d485b5 100644 --- a/lib/MetaCPAN/Document/Release.pm +++ b/lib/MetaCPAN/Document/Release.pm @@ -255,16 +255,16 @@ sub _build_first { $self->index->type('release')->filter( { and => [ - { term => { 'release.distribution' => $self->distribution } }, + { term => { distribution => $self->distribution } }, { range => { - 'release.version_numified' => + version_numified => { 'lt' => $self->version_numified } } }, # REINDEX: after a full reindex, the above line is to replaced with: - # { term => { 'release.first' => \1 } }, + # { term => { first => \1 } }, # currently, the "first" property is not computed on all releases # since this feature has not been around when last reindexed ] @@ -289,8 +289,7 @@ sub find_depending_on { return $self->filter( { or => [ - map { { term => { 'release.dependency.module' => $_ } } } - @$modules + map { { term => { 'dependency.module' => $_ } } } @$modules ] } ); @@ -301,8 +300,8 @@ sub find { return $self->filter( { and => [ - { term => { 'release.distribution' => $name } }, - { term => { status => 'latest' } } + { term => { distribution => $name } }, + { term => { status => 'latest' } } ] } )->sort( [ { date => 'desc' } ] )->first; @@ -313,7 +312,7 @@ sub predecessor { return $self->filter( { and => [ - { term => { 'release.distribution' => $name } }, + { term => { distribution => $name } }, { not => { filter => { term => { status => 'latest' } } } }, ] } diff --git a/lib/MetaCPAN/Model/Release.pm b/lib/MetaCPAN/Model/Release.pm index d182c47e3..51bb1c61b 100644 --- a/lib/MetaCPAN/Model/Release.pm +++ b/lib/MetaCPAN/Model/Release.pm @@ -224,7 +224,6 @@ sub _build_document { $self->index->type('distribution') ->put( { name => $self->distribution }, { create => 1 } ); }; - return $document; } diff --git a/t/release/moose.t b/t/release/moose.t index 648f07b51..d5ed81945 100644 --- a/t/release/moose.t +++ b/t/release/moose.t @@ -8,7 +8,7 @@ use Test::More; my $model = model(); my $idx = $model->index('cpan'); my @moose = $idx->type('release') - ->filter( { term => { 'release.distribution' => 'Moose' } } )->all; + ->filter( { term => { distribution => 'Moose' } } )->all; my $first = 0; map { $first++ } grep { $_->first } @moose; @@ -22,8 +22,7 @@ is( $moose[1]->main_module, 'Moose', 'main_module ok' ); ok( my $faq = $idx->type('file') - ->filter( { term => { 'file.documentation' => 'Moose::FAQ' } } ) - ->first, + ->filter( { term => { documentation => 'Moose::FAQ' } } )->first, 'get Moose::FAQ' ); @@ -35,8 +34,7 @@ ok( !$faq->binary, 'is not binary' ); ok( my $binary - = $idx->type('file')->filter( { term => { 'file.name' => 't' } } ) - ->first, + = $idx->type('file')->filter( { term => { name => 't' } } )->first, 'get a t/ directory' ); @@ -45,7 +43,7 @@ ok( $binary->binary, 'is binary' ); ok( my $ppport = $idx->type('file') - ->filter( { term => { 'file.documentation' => 'ppport.h' } } )->first, + ->filter( { term => { documentation => 'ppport.h' } } )->first, 'get ppport.h' ); @@ -71,9 +69,9 @@ ok( !$signature, 'SIGNATURE is not perl code' ); $signature = $idx->type('file')->filter( { and => [ - { term => { 'file.documentation' => 'SIGNATURE' } }, - { term => { mime => 'text/x-script.perl' } }, - { term => { name => 'SIGNATURE' } } + { term => { documentation => 'SIGNATURE' } }, + { term => { mime => 'text/x-script.perl' } }, + { term => { name => 'SIGNATURE' } } ] } )->first; @@ -82,9 +80,9 @@ ok( !$signature, 'SIGNATURE is not documentation' ); $signature = $idx->type('file')->filter( { and => [ - { term => { name => 'SIGNATURE' } }, - { exists => { field => 'documentation' } }, - { term => { 'indexed' => \1 } }, + { term => { name => 'SIGNATURE' } }, + { exists => { field => 'documentation' } }, + { term => { indexed => \1 } }, ] } )->first; From cc3e5196e33b99ccc69241fb7a561c853f022fd3 Mon Sep 17 00:00:00 2001 From: Mickey Nasriachi Date: Sun, 24 Apr 2016 11:03:16 +0100 Subject: [PATCH 214/329] underlying module needs this ENV setting --- lib/MetaCPAN/Script/Release.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/MetaCPAN/Script/Release.pm b/lib/MetaCPAN/Script/Release.pm index f84f2ed7a..d6731a314 100644 --- a/lib/MetaCPAN/Script/Release.pm +++ b/lib/MetaCPAN/Script/Release.pm @@ -4,7 +4,7 @@ use strict; use warnings; BEGIN { - $ENV{PERL_JSON_BACKEND} = 'Cpanel::JSON::XS'; + $ENV{PERL_JSON_BACKEND} = 'JSON::XS'; } use CPAN::DistnameInfo (); From 8a839eb532a656d4a6a5b3f6c282feedb023c4fc Mon Sep 17 00:00:00 2001 From: Mickey Nasriachi Date: Sun, 24 Apr 2016 14:06:32 +0100 Subject: [PATCH 215/329] correct 'indexed' field for all files in archive --- lib/MetaCPAN/Script/Release.pm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/MetaCPAN/Script/Release.pm b/lib/MetaCPAN/Script/Release.pm index d6731a314..315c0bf00 100644 --- a/lib/MetaCPAN/Script/Release.pm +++ b/lib/MetaCPAN/Script/Release.pm @@ -228,7 +228,7 @@ sub import_archive { my $meta = $model->metadata; my $document = $model->document; - foreach my $file (@$modules) { + foreach my $file (@$files) { $file->set_indexed($meta); } @@ -245,7 +245,7 @@ sub import_archive { my $perms = $self->perms; my @release_unauthorized; my @provides; - foreach my $file (@$modules) { + foreach my $file (@$files) { $_->set_associated_pod( \%associated_pod ) for ( @{ $file->module } ); # NOTE: "The method returns a list of unauthorized, but indexed modules." From 76ef8f2cdf7b6cbe7fbd3b9359eab8b5ad45b71c Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Sun, 24 Apr 2016 14:33:01 +0100 Subject: [PATCH 216/329] Try to have Travis use Elasticsearch 2.3.0 --- .travis.yml | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/.travis.yml b/.travis.yml index 69c44c3a3..313fe4a73 100644 --- a/.travis.yml +++ b/.travis.yml @@ -17,7 +17,6 @@ notifications: on_failure: always irc: "irc.perl.org#metacpan-travis" - env: global: # We use a non-standard port to avoid trashing production @@ -29,14 +28,11 @@ env: before_install: - # https://www.elastic.co/guide/en/elasticsearch/reference/current/setup-repositories.html - - wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add - - - echo "deb http://packages.elastic.co/elasticsearch/2.x/debian stable main" | sudo tee -a /etc/apt/sources.list.d/elasticsearch-2.x.list - - sudo apt-get update + - curl -O https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-2.3.0.deb && sudo dpkg -i --force-confnew elasticsearch-2.3.0.deb && sudo service elasticsearch restart # Run update to make libgmp-dev findable (Required by Net::OpenID::Consumer) # postgresql-server-dev-all is required by DBD::Pg - - sudo apt-get install elasticsearch libgmp-dev postgresql-server-dev-all + - sudo apt-get install libgmp-dev postgresql-server-dev-all - sudo service elasticsearch restart - pwd From 56901b549535a930e65ddf3a922d6790d5c6c842 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Sun, 24 Apr 2016 14:33:24 +0100 Subject: [PATCH 217/329] Adds minimal docs about indexing. --- docs/indexing.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 docs/indexing.md diff --git a/docs/indexing.md b/docs/indexing.md new file mode 100644 index 000000000..f19719704 --- /dev/null +++ b/docs/indexing.md @@ -0,0 +1,5 @@ +# Indexing + +On the VM: + + sh /home/vagrant/bin/metacpan-api-carton-exec bin/metacpan release /home/vagrant/CPAN/authors/id --latest From 84f2ae2c6830a657c7da62233acf36f1e223f7a9 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Sun, 24 Apr 2016 15:00:41 +0100 Subject: [PATCH 218/329] Revert "Try to have Travis use Elasticsearch 2.3.0" This reverts commit 76ef8f2cdf7b6cbe7fbd3b9359eab8b5ad45b71c. --- .travis.yml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 313fe4a73..69c44c3a3 100644 --- a/.travis.yml +++ b/.travis.yml @@ -17,6 +17,7 @@ notifications: on_failure: always irc: "irc.perl.org#metacpan-travis" + env: global: # We use a non-standard port to avoid trashing production @@ -28,11 +29,14 @@ env: before_install: - - curl -O https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-2.3.0.deb && sudo dpkg -i --force-confnew elasticsearch-2.3.0.deb && sudo service elasticsearch restart + # https://www.elastic.co/guide/en/elasticsearch/reference/current/setup-repositories.html + - wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add - + - echo "deb http://packages.elastic.co/elasticsearch/2.x/debian stable main" | sudo tee -a /etc/apt/sources.list.d/elasticsearch-2.x.list + - sudo apt-get update # Run update to make libgmp-dev findable (Required by Net::OpenID::Consumer) # postgresql-server-dev-all is required by DBD::Pg - - sudo apt-get install libgmp-dev postgresql-server-dev-all + - sudo apt-get install elasticsearch libgmp-dev postgresql-server-dev-all - sudo service elasticsearch restart - pwd From 12ad29e451ee8093ddc4f6d81bb0190324ca4f15 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Sun, 24 Apr 2016 15:08:41 +0100 Subject: [PATCH 219/329] Revert "Revert "Try to have Travis use Elasticsearch 2.3.0"" This reverts commit 84f2ae2c6830a657c7da62233acf36f1e223f7a9. --- .travis.yml | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/.travis.yml b/.travis.yml index 69c44c3a3..313fe4a73 100644 --- a/.travis.yml +++ b/.travis.yml @@ -17,7 +17,6 @@ notifications: on_failure: always irc: "irc.perl.org#metacpan-travis" - env: global: # We use a non-standard port to avoid trashing production @@ -29,14 +28,11 @@ env: before_install: - # https://www.elastic.co/guide/en/elasticsearch/reference/current/setup-repositories.html - - wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add - - - echo "deb http://packages.elastic.co/elasticsearch/2.x/debian stable main" | sudo tee -a /etc/apt/sources.list.d/elasticsearch-2.x.list - - sudo apt-get update + - curl -O https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-2.3.0.deb && sudo dpkg -i --force-confnew elasticsearch-2.3.0.deb && sudo service elasticsearch restart # Run update to make libgmp-dev findable (Required by Net::OpenID::Consumer) # postgresql-server-dev-all is required by DBD::Pg - - sudo apt-get install elasticsearch libgmp-dev postgresql-server-dev-all + - sudo apt-get install libgmp-dev postgresql-server-dev-all - sudo service elasticsearch restart - pwd From cc74ce69fb190fef6ad0957b7c74178b9a62c2cb Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Sun, 24 Apr 2016 15:09:13 +0100 Subject: [PATCH 220/329] Follow redirects when having Travis download Elasticsearch deb. --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 313fe4a73..d245e71a2 100644 --- a/.travis.yml +++ b/.travis.yml @@ -28,7 +28,7 @@ env: before_install: - - curl -O https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-2.3.0.deb && sudo dpkg -i --force-confnew elasticsearch-2.3.0.deb && sudo service elasticsearch restart + - curl -O -L https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-2.3.0.deb && sudo dpkg -i --force-confnew elasticsearch-2.3.0.deb && sudo service elasticsearch restart # Run update to make libgmp-dev findable (Required by Net::OpenID::Consumer) # postgresql-server-dev-all is required by DBD::Pg From 3d9c49984cfad06f20207c34a8543110852cb63b Mon Sep 17 00:00:00 2001 From: Mickey Nasriachi Date: Sun, 24 Apr 2016 14:19:30 +0100 Subject: [PATCH 221/329] fix test release/file-duplicates --- t/release/file-duplicates.t | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/t/release/file-duplicates.t b/t/release/file-duplicates.t index 7ca61f7fa..d6a198bbb 100644 --- a/t/release/file-duplicates.t +++ b/t/release/file-duplicates.t @@ -18,6 +18,7 @@ test_release( version_numified => '0.991', authorized => 'true', indexed => 'true', + associated_pod => undef, } ], 'lib/File/lib/File/Duplicates.pm' => [ @@ -27,6 +28,7 @@ test_release( version_numified => '0.992', authorized => 'true', indexed => 'true', + associated_pod => undef, } ], 'lib/Dupe.pm' => [ @@ -36,6 +38,7 @@ test_release( version_numified => '0.993', authorized => 'true', indexed => 'true', + associated_pod => undef, } ], 'DupeX/Dupe.pm' => [ @@ -45,6 +48,7 @@ test_release( version_numified => '0.994', authorized => 'true', indexed => 'true', + associated_pod => undef, }, { name => 'DupeX::Dupe::X', @@ -52,6 +56,7 @@ test_release( version_numified => '0.995', authorized => 'true', indexed => 'true', + associated_pod => undef, } ], }, From 8d81773987ec85849afc978fd3664caed810cfb3 Mon Sep 17 00:00:00 2001 From: Mickey Nasriachi Date: Sun, 24 Apr 2016 15:43:14 +0100 Subject: [PATCH 222/329] do not index files in 'no_index' directories --- lib/MetaCPAN/Document/File.pm | 10 +++++++++- t/release/oops-locallib.t | 13 +++++++------ 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/lib/MetaCPAN/Document/File.pm b/lib/MetaCPAN/Document/File.pm index b2cd3a64c..c113e3735 100644 --- a/lib/MetaCPAN/Document/File.pm +++ b/lib/MetaCPAN/Document/File.pm @@ -805,7 +805,7 @@ does not include any modules, the L property is true. sub set_indexed { my ( $self, $meta ) = @_; - #files listed under 'other files' are not shown in a search + # files listed under 'other files' are not shown in a search if ( $self->is_in_other_files() ) { foreach my $mod ( @{ $self->module } ) { $mod->_set_indexed(0); @@ -814,6 +814,14 @@ sub set_indexed { return; } + # files under no_index directories should not be indexed + foreach my $dir ( @{ $meta->no_index->{directory} } ) { + if ( $self->path eq $dir or $self->path =~ /^$dir\// ) { + $self->_set_indexed(0); + return; + } + } + foreach my $mod ( @{ $self->module } ) { if ( $mod->name !~ /^[A-Za-z]/ ) { $mod->_set_indexed(0); diff --git a/t/release/oops-locallib.t b/t/release/oops-locallib.t index 6bda00ce9..6b332be8c 100644 --- a/t/release/oops-locallib.t +++ b/t/release/oops-locallib.t @@ -9,16 +9,16 @@ test_release( { name => 'Oops-LocalLib-0.01', author => 'BORISNAT', - authorized => \1, - first => \1, + authorized => 1, + first => 1, provides => [ 'Fruits', 'Oops::LocalLib', ], main_module => 'Oops::LocalLib', modules => { 'lib/Oops/LocalLib.pm' => [ { name => 'Oops::LocalLib', - indexed => \1, - authorized => \1, + indexed => 'true', + authorized => 'true', version => '0.01', version_numified => 0.01, associated_pod => @@ -28,8 +28,8 @@ test_release( 'foreign/Fruits.pm' => [ { name => 'Fruits', - indexed => \1, - authorized => \1, + indexed => 'true', + authorized => 'true', version => '1', version_numified => 1, associated_pod => @@ -44,6 +44,7 @@ test_release( my $file = $self->file_by_path('local/Vegetable.pm'); ok !$file->indexed, 'file in /local/ not indexed'; + ok $file->authorized, 'file in /local/ not un-authorized'; is $file->sloc, 2, 'sloc'; is $file->slop, 2, 'slop'; From 04c1c8043fbdce9333a27dbe1e3f47dfba04da3e Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Sun, 24 Apr 2016 15:48:12 +0100 Subject: [PATCH 223/329] Stop Elasticsearch on Travis before trying to install a deb. --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index d245e71a2..6e5d6cd56 100644 --- a/.travis.yml +++ b/.travis.yml @@ -28,7 +28,7 @@ env: before_install: - - curl -O -L https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-2.3.0.deb && sudo dpkg -i --force-confnew elasticsearch-2.3.0.deb && sudo service elasticsearch restart + - sudo service elasticsearch stop && curl -O -L https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-2.3.0.deb && sudo dpkg -i --force-confnew elasticsearch-2.3.0.deb && sudo service elasticsearch start # Run update to make libgmp-dev findable (Required by Net::OpenID::Consumer) # postgresql-server-dev-all is required by DBD::Pg From e0f09d63bb3ad0ace317059622c421aa05f77a76 Mon Sep 17 00:00:00 2001 From: Mickey Nasriachi Date: Sun, 24 Apr 2016 15:59:04 +0100 Subject: [PATCH 224/329] fix test release/documentation-hide --- t/release/documentation-hide.t | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/t/release/documentation-hide.t b/t/release/documentation-hide.t index 3bcc474b8..19fae2e45 100644 --- a/t/release/documentation-hide.t +++ b/t/release/documentation-hide.t @@ -25,9 +25,9 @@ ok( $release->first, 'Release is first' ); my @files = $idx->type('file')->filter( { and => [ - { term => { 'file.author' => $release->author } }, - { term => { 'file.release' => $release->name } }, - { exists => { field => 'file.module.name' } }, + { term => { author => $release->author } }, + { term => { release => $release->name } }, + { exists => { field => 'module.name' } }, ] } )->all; @@ -51,7 +51,7 @@ ok( $release->first, 'Release is first' ); and => [ { term => { author => $release->author } }, { term => { release => $release->name } }, - { exists => { field => 'file.documentation' } } + { exists => { field => 'documentation' } } ] } )->all; From e0362f2e2565e22ef6d58a59e85aa2f36fe14f10 Mon Sep 17 00:00:00 2001 From: Joel Berger Date: Sun, 24 Apr 2016 17:14:38 +0100 Subject: [PATCH 225/329] cleanup a TODO related to indexing a first release --- lib/MetaCPAN/Document/Release.pm | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/lib/MetaCPAN/Document/Release.pm b/lib/MetaCPAN/Document/Release.pm index 538d485b5..0f9b63740 100644 --- a/lib/MetaCPAN/Document/Release.pm +++ b/lib/MetaCPAN/Document/Release.pm @@ -255,18 +255,13 @@ sub _build_first { $self->index->type('release')->filter( { and => [ - { term => { distribution => $self->distribution } }, + { term => { first => 1 } }, { range => { version_numified => { 'lt' => $self->version_numified } } }, - - # REINDEX: after a full reindex, the above line is to replaced with: - # { term => { first => \1 } }, - # currently, the "first" property is not computed on all releases - # since this feature has not been around when last reindexed ] } )->count From 38380e65544a97d5ea679f6264685d74c49b8c56 Mon Sep 17 00:00:00 2001 From: Mickey Nasriachi Date: Sun, 24 Apr 2016 19:19:52 +0100 Subject: [PATCH 226/329] Revert "cleanup a TODO related to indexing a first release" This reverts commit e0362f2e2565e22ef6d58a59e85aa2f36fe14f10. breaks some tests. --- lib/MetaCPAN/Document/Release.pm | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/MetaCPAN/Document/Release.pm b/lib/MetaCPAN/Document/Release.pm index 0f9b63740..538d485b5 100644 --- a/lib/MetaCPAN/Document/Release.pm +++ b/lib/MetaCPAN/Document/Release.pm @@ -255,13 +255,18 @@ sub _build_first { $self->index->type('release')->filter( { and => [ - { term => { first => 1 } }, + { term => { distribution => $self->distribution } }, { range => { version_numified => { 'lt' => $self->version_numified } } }, + + # REINDEX: after a full reindex, the above line is to replaced with: + # { term => { first => \1 } }, + # currently, the "first" property is not computed on all releases + # since this feature has not been around when last reindexed ] } )->count From ef67526213f7147a6e13f9fc5925d4c0b525322c Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Sun, 24 Apr 2016 17:21:59 +0100 Subject: [PATCH 227/329] Adds Ref::Util to cpanfile. --- cpanfile | 1 + cpanfile.snapshot | 8 ++++++++ t/release/p-1.0.20.t | 2 +- 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/cpanfile b/cpanfile index 4050469d5..ad8c8edd6 100644 --- a/cpanfile +++ b/cpanfile @@ -142,6 +142,7 @@ requires 'Pod::POM'; requires 'Pod::Simple', '3.29'; requires 'Pod::Simple::XHTML', '3.24'; requires 'Pod::Text'; +requires 'Ref::Util'; requires 'Regexp::Common'; requires 'Regexp::Common::time'; requires 'Safe', '2.35'; # bug fixes (used by Parse::PMFile) diff --git a/cpanfile.snapshot b/cpanfile.snapshot index 8728b9bd0..f65832e7f 100644 --- a/cpanfile.snapshot +++ b/cpanfile.snapshot @@ -7407,6 +7407,14 @@ DISTRIBUTIONS requirements: Module::Build::Tiny 0.035 perl v5.6.0 + Ref-Util-0.008 + pathname: X/XS/XSAWYERX/Ref-Util-0.008.tar.gz + provides: + Ref::Util 0.008 + requirements: + Exporter 5.57 + ExtUtils::MakeMaker 0 + Test::More 0 Regexp-Common-2016020301 pathname: A/AB/ABIGAIL/Regexp-Common-2016020301.tar.gz provides: diff --git a/t/release/p-1.0.20.t b/t/release/p-1.0.20.t index beed28b5a..756e400c6 100644 --- a/t/release/p-1.0.20.t +++ b/t/release/p-1.0.20.t @@ -23,7 +23,7 @@ test_release( # Don't test the actual numbers since we copy this out of the real # database as a live test case. - is ref($tests), 'HASH', 'hashref of tests'; + ok( is_hashref($tests), 'hashref of tests' ); ok $tests->{pass} > 0, 'has passed tests'; From 0e06af08c754567094be28c0b357c8bfb43e220a Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Sun, 24 Apr 2016 19:00:53 +0100 Subject: [PATCH 228/329] document tests() attribute. --- lib/MetaCPAN/Document/Release.pm | 7 ++++--- lib/MetaCPAN/Role/Fastly.pm | 2 -- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/lib/MetaCPAN/Document/Release.pm b/lib/MetaCPAN/Document/Release.pm index 538d485b5..46c360376 100644 --- a/lib/MetaCPAN/Document/Release.pm +++ b/lib/MetaCPAN/Document/Release.pm @@ -196,9 +196,10 @@ has stat => ( ); has tests => ( - is => 'ro', - isa => Tests, - dynamic => 1, + is => 'ro', + isa => Tests, + dynamic => 1, + documentation => 'HashRef: Summary of CPANTesters data', ); has authorized => ( diff --git a/lib/MetaCPAN/Role/Fastly.pm b/lib/MetaCPAN/Role/Fastly.pm index 51576ac24..92e108ce5 100644 --- a/lib/MetaCPAN/Role/Fastly.pm +++ b/lib/MetaCPAN/Role/Fastly.pm @@ -192,7 +192,6 @@ sub _cdn_get_service { my $fsi = $c->config->{fastly_service_id}; return $net_fastly->get_service($fsi); - } sub cdn_purge_cpan_distnameinfos { @@ -209,7 +208,6 @@ sub cdn_purge_cpan_distnameinfos { # Now run with this list $c->cdn_purge_now( { keys => \@purge_keys } ); - } =head2 cdn_purge_now From aaa0f717e2414dbd5fc1952c4aeb12522fc1bf0e Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Sun, 24 Apr 2016 19:01:22 +0100 Subject: [PATCH 229/329] Use checkout_root() to find home dir. --- lib/MetaCPAN/Role/Script.pm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/MetaCPAN/Role/Script.pm b/lib/MetaCPAN/Role/Script.pm index 8d2004ea4..71df190b2 100644 --- a/lib/MetaCPAN/Role/Script.pm +++ b/lib/MetaCPAN/Role/Script.pm @@ -5,6 +5,7 @@ use warnings; use ElasticSearchX::Model::Document::Types qw(:all); use FindBin; +use Git::Helpers qw( checkout_root ); use Log::Contextual qw( :log :dlog ); use MetaCPAN::Model; use MetaCPAN::Types qw(:all); @@ -61,8 +62,9 @@ has port => ( has home => ( is => 'ro', isa => Dir, + lazy => 1, coerce => 1, - default => "$FindBin::RealBin/..", + default => sub { checkout_root() }, ); with 'MetaCPAN::Role::Fastly', 'MetaCPAN::Role::HasConfig', From 55dd14030b5665a35c54425da63805c2e3e1c2d4 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Sun, 24 Apr 2016 19:02:40 +0100 Subject: [PATCH 230/329] Fix CPANTesters database importing under test. --- lib/MetaCPAN/Script/CPANTesters.pm | 35 ++++++++++++++++++++++++++---- 1 file changed, 31 insertions(+), 4 deletions(-) diff --git a/lib/MetaCPAN/Script/CPANTesters.pm b/lib/MetaCPAN/Script/CPANTesters.pm index 5a84047c5..943a7c532 100644 --- a/lib/MetaCPAN/Script/CPANTesters.pm +++ b/lib/MetaCPAN/Script/CPANTesters.pm @@ -10,14 +10,34 @@ use File::stat qw(stat); use IO::Uncompress::Bunzip2 qw(bunzip2); use LWP::UserAgent (); use Log::Contextual qw( :log :dlog ); -use MetaCPAN::Types qw( Bool ); +use MetaCPAN::Types qw( Bool File Uri ); use Moose; with 'MetaCPAN::Role::Script', 'MooseX::Getopt::Dashes'; has db => ( is => 'ro', - default => 'http://devel.cpantesters.org/release/release.db.bz2' + isa => Uri, + lazy => 1, + coerce => 1, + builder => '_build_db', +); + +has force_refresh => ( + is => 'ro', + isa => Bool, + default => 0, +); + +has mirror_file => ( + is => 'ro', + isa => File, + default => sub { + $ENV{HARNESS_ACTIVE} + ? shift->home->file(qw(t var tmp cpantesters.db)) + : shift->home->file(qw( var tmp cpantesters.db)); + }, + coerce => 1, ); has skip_download => ( @@ -37,6 +57,13 @@ has _bulk => ( }, ); +sub _build_db { + my $self = shift; + return $ENV{HARNESS_ACTIVE} + ? $self->home->file('t/var/cpantesters-release-fake.db.bz2') + : 'http://devel.cpantesters.org/release/release.db.bz2'; +} + sub run { my $self = shift; $self->index_reports; @@ -49,15 +76,15 @@ sub index_reports { my $es = $self->model->es; my $index = $self->index->name; my $ua = LWP::UserAgent->new; - my $db = $self->home->file(qw(var tmp cpantesters.db)); log_info { "Mirroring " . $self->db }; + my $db = $self->mirror_file; $ua->mirror( $self->db, "$db.bz2" ) unless $self->skip_download; if ( -e $db && stat($db)->mtime >= stat("$db.bz2")->mtime ) { log_info {"DB hasn't been modified"}; - return unless $self->skip_download; + return unless $self->force_refresh; } bunzip2 "$db.bz2" => "$db", AutoClose => 1 if -e "$db.bz2"; From d8bfb3c8c137277c5acbe73067f49287a7504a1d Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Sun, 24 Apr 2016 19:03:43 +0100 Subject: [PATCH 231/329] No longer any need for forking in release indexer. --- lib/MetaCPAN/Script/Release.pm | 27 ++++----------------------- t/lib/MetaCPAN/TestHelpers.pm | 4 ++-- t/lib/MetaCPAN/TestServer.pm | 5 +++-- 3 files changed, 9 insertions(+), 27 deletions(-) diff --git a/lib/MetaCPAN/Script/Release.pm b/lib/MetaCPAN/Script/Release.pm index 315c0bf00..5c6b88aa6 100644 --- a/lib/MetaCPAN/Script/Release.pm +++ b/lib/MetaCPAN/Script/Release.pm @@ -34,13 +34,6 @@ has age => ( documentation => 'index releases no older than x hours (undef)', ); -has children => ( - is => 'ro', - isa => Int, - default => 2, - documentation => 'number of worker processes (2)', -); - has skip => ( is => 'ro', isa => Bool, @@ -171,27 +164,15 @@ sub run { } } - if ( @pid > $self->children ) { - my $pid = waitpid( -1, 0 ); - @pid = grep { $_ != $pid } @pid; - } - if ( $self->children && ( my $pid = fork() ) ) { - push( @pid, $pid ); - } - else { - try { $self->import_archive($file) } - catch { - $self->handle_error( $_[0] ); - }; - exit if ( $self->children ); - } + try { $self->import_archive($file) } + catch { + $self->handle_error("$file $_[0]"); + }; } - waitpid( -1, 0 ) for (@pid); $self->index->refresh; # Call Fastly to purge $self->cdn_purge_cpan_distnameinfos( \@module_to_purge_dists ); - } sub _get_release_model { diff --git a/t/lib/MetaCPAN/TestHelpers.pm b/t/lib/MetaCPAN/TestHelpers.pm index d6551011a..23b7831aa 100644 --- a/t/lib/MetaCPAN/TestHelpers.pm +++ b/t/lib/MetaCPAN/TestHelpers.pm @@ -4,14 +4,14 @@ use warnings; package # no_index MetaCPAN::TestHelpers; +use Cpanel::JSON::XS; use FindBin; use Git::Helpers qw( checkout_root ); -use Cpanel::JSON::XS; use MetaCPAN::Script::Runner; use Path::Class qw( dir ); -use Try::Tiny; use Test::More; use Test::Routine::Util; +use Try::Tiny qw( catch ); use base 'Exporter'; our @EXPORT = qw( diff --git a/t/lib/MetaCPAN/TestServer.pm b/t/lib/MetaCPAN/TestServer.pm index d39911bfd..b05a50580 100644 --- a/t/lib/MetaCPAN/TestServer.pm +++ b/t/lib/MetaCPAN/TestServer.pm @@ -1,9 +1,10 @@ package MetaCPAN::TestServer; -use Moose; +use MetaCPAN::Moose; use CPAN::Repository::Perms; use MetaCPAN::Script::Author; +use MetaCPAN::Script::CPANTesters (); use MetaCPAN::Script::Latest; use MetaCPAN::Script::Mapping; use MetaCPAN::Script::Release; @@ -166,7 +167,7 @@ sub index_releases { my $self = shift; my %args = @_; - local @ARGV = ( 'release', $self->_cpan_dir, '--children', 0 ); + local @ARGV = ( 'release', $self->_cpan_dir, ); ok( MetaCPAN::Script::Release->new_with_options( %{ $self->_config }, %args )->run, From 823ed387d7009346c6c5446f038e6e0da6b48a74 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Sun, 24 Apr 2016 19:04:56 +0100 Subject: [PATCH 232/329] Ensure tests always try to index CPANTesters data. --- t/lib/MetaCPAN/TestServer.pm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/t/lib/MetaCPAN/TestServer.pm b/t/lib/MetaCPAN/TestServer.pm index b05a50580..3db6c3c19 100644 --- a/t/lib/MetaCPAN/TestServer.pm +++ b/t/lib/MetaCPAN/TestServer.pm @@ -196,7 +196,7 @@ sub index_authors { sub index_cpantesters { my $self = shift; - local @ARGV = ('cpantesters'); + local @ARGV = ( 'cpantesters', '--force-refresh' ); ok( MetaCPAN::Script::CPANTesters->new_with_options( $self->_config ) ->run, @@ -204,5 +204,5 @@ sub index_cpantesters { ); } -__PACKAGE__->meta->make_immutable(); +__PACKAGE__->meta->make_immutable; 1; From 685be595672027aff82a02be11fc016b9968f238 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Sun, 24 Apr 2016 19:06:03 +0100 Subject: [PATCH 233/329] Tidy p-1 test. --- t/release/p-1.0.20.t | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/t/release/p-1.0.20.t b/t/release/p-1.0.20.t index 756e400c6..76dbb657a 100644 --- a/t/release/p-1.0.20.t +++ b/t/release/p-1.0.20.t @@ -1,17 +1,24 @@ -use Test::More; use strict; use warnings; use lib 't/lib'; + use MetaCPAN::TestHelpers; +use Ref::Util qw( is_hashref ); +use Test::More; + +use MetaCPAN::TestServer; + +my $server = MetaCPAN::TestServer->new; +$server->index_cpantesters; test_release( { name => 'P-1.0.20', distribution => 'P', author => 'LOCAL', - authorized => \1, - first => \1, + authorized => 1, + first => 1, version => 'v1.0.20', provides => [ 'P', ], @@ -25,9 +32,9 @@ test_release( ok( is_hashref($tests), 'hashref of tests' ); - ok $tests->{pass} > 0, 'has passed tests'; + ok( $tests->{pass} > 0, 'has passed tests' ); - ok exists( $tests->{$_} ), "has '$_' results" + ok( exists( $tests->{$_} ), "has '$_' results" ) for qw( pass fail na unknown ); }, } From cabe27a9291ccde96f675fef6eb94fb9c9d3a33c Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Sun, 24 Apr 2016 19:28:10 +0100 Subject: [PATCH 234/329] Stop using Test::Aggregate --- bin/prove | 3 +- t/00_setup.t | 84 ++++++++++++++++++++++++++++++++++++- t/darkpan.t | 1 - t/fakecpan.t | 114 --------------------------------------------------- 4 files changed, 85 insertions(+), 117 deletions(-) delete mode 100644 t/fakecpan.t diff --git a/bin/prove b/bin/prove index 9385f6492..57381c1ec 100755 --- a/bin/prove +++ b/bin/prove @@ -1,4 +1,5 @@ #!/bin/sh +export EMAIL_SENDER_TRANSPORT=Test export ES=localhost:9900 -`dirname "$0"`/run prove -It/lib -lv "$@" +`dirname "$0"`/run prove -It/lib -lvr "$@" diff --git a/t/00_setup.t b/t/00_setup.t index e1e6807aa..3c75a8801 100644 --- a/t/00_setup.t +++ b/t/00_setup.t @@ -3,8 +3,18 @@ use warnings; use lib 't/lib'; +use CPAN::Faker 0.010; +use File::Copy; +use MetaCPAN::Script::Tickets; +use MetaCPAN::Server::Test; +use MetaCPAN::TestHelpers qw( get_config ); +use MetaCPAN::TestServer; +use Module::Faker 0.015 (); # Generates META.json. use Path::Class qw(dir); +use Path::Class qw(dir file); use Test::More 0.96; +use Test::More 0.96 (); +use Test::Most; my $tmp_dir = dir('var/tmp'); @@ -13,4 +23,76 @@ unless ( -d $tmp_dir || -l $tmp_dir ) { } ok( ( -d $tmp_dir || -l $tmp_dir ), 'var/tmp exists for testing' ); -done_testing(); +my $server = MetaCPAN::TestServer->new; +$server->setup; + +my $config = get_config(); +$config->{es} = $server->es_client; + +foreach my $test_dir ( $config->{cpan}, $config->{source_base} ) { + next unless $test_dir; + my $dir = dir($test_dir); + if ( -e $dir->absolute ) { + ok( $dir->rmtree, "remove old test dir: $dir" ); + } +} + +my $mod_faker = 'Module::Faker::Dist::WithPerl'; +eval "require $mod_faker" or die $@; ## no critic (StringyEval) + +my $cpan = CPAN::Faker->new( + { + source => 't/var/fakecpan/configs', + dest => $config->{cpan}, + dist_class => $mod_faker, + } +); + +ok( $cpan->make_cpan, 'make fake cpan' ); + +# do some changes to 06perms.txt +{ + my $perms_file = dir( $config->{cpan} )->file(qw(modules 06perms.txt)); + my $perms = $perms_file->slurp; + $perms =~ s/^Some,LOCAL,f$/Some,MO,f/m; + my $fh = $perms_file->openw; + print $fh $perms; + close $fh; +} + +# Help debug inconsistent parsing failures. +require Parse::PMFile; +local $Parse::PMFile::VERBOSE = $ENV{TEST_VERBOSE} ? 9 : 0; + +$server->index_releases; +$server->set_latest; + +my $cpan_dir = dir( 't', 'var', 'fakecpan', ); + +copy( $cpan_dir->file('00whois.xml'), + file( $config->{cpan}, qw(authors 00whois.xml) ) ); + +copy( $cpan_dir->file('author-1.0.json'), + file( $config->{cpan}, qw(authors id M MO MO author-1.0.json) ) ); + +copy( $cpan_dir->file('bugs.tsv'), file( $config->{cpan}, 'bugs.tsv' ) ); + +$server->index_authors; + +ok( + MetaCPAN::Script::Tickets->new_with_options( + { + %{$config}, + rt_summary_url => 'file://' + . file( $config->{cpan}, 'bugs.tsv' )->absolute, + github_issues => 'file://' + . dir(qw(t var fakecpan github))->absolute + . '/%s/%s.json?per_page=100', + } + )->run, + 'tickets' +); + +$server->wait_for_es(); + +done_testing; diff --git a/t/darkpan.t b/t/darkpan.t index 6022e523d..e39f4d0aa 100644 --- a/t/darkpan.t +++ b/t/darkpan.t @@ -12,7 +12,6 @@ use Test::RequiresInternet ( 'cpan.metacpan.org' => 80 ); my $darkpan = MetaCPAN::DarkPAN->new; my $server = MetaCPAN::TestServer->new( cpan_dir => $darkpan->base_dir ); -$server->setup; # create DarkPAN $darkpan->run; diff --git a/t/fakecpan.t b/t/fakecpan.t deleted file mode 100644 index bb636c34b..000000000 --- a/t/fakecpan.t +++ /dev/null @@ -1,114 +0,0 @@ -use strict; -use warnings; - -use lib 't/lib'; - -# Require version for subtests but let Test::Most do the ->import() -use Test::More 0.96 (); -use Test::Most; - -# Don't warn about Parse::PMFile's exit() -use Test::Aggregate::Nested 0.371 (); - -use CPAN::Faker 0.010; -use File::Copy; -use MetaCPAN::Script::Tickets; -use MetaCPAN::Server::Test; -use MetaCPAN::TestHelpers qw( get_config ); -use MetaCPAN::TestServer; -use Module::Faker 0.015 (); # Generates META.json. -use Path::Class qw(dir file); - -BEGIN { $ENV{EMAIL_SENDER_TRANSPORT} = 'Test' } - -my $server = MetaCPAN::TestServer->new; -$server->setup; - -my $config = get_config(); -$config->{es} = $server->es_client; - -foreach my $test_dir ( $config->{cpan}, $config->{source_base} ) { - next unless $test_dir; - my $dir = dir($test_dir); - if ( -e $dir->absolute ) { - ok( $dir->rmtree, "remove old test dir: $dir" ); - } -} - -my $mod_faker = 'Module::Faker::Dist::WithPerl'; -eval "require $mod_faker" or die $@; ## no critic (StringyEval) - -my $cpan = CPAN::Faker->new( - { - source => 't/var/fakecpan/configs', - dest => $config->{cpan}, - dist_class => $mod_faker, - } -); - -ok( $cpan->make_cpan, 'make fake cpan' ); - -# do some changes to 06perms.txt -{ - my $perms_file = dir( $config->{cpan} )->file(qw(modules 06perms.txt)); - my $perms = $perms_file->slurp; - $perms =~ s/^Some,LOCAL,f$/Some,MO,f/m; - my $fh = $perms_file->openw; - print $fh $perms; - close $fh; -} - -# Help debug inconsistent parsing failures. -require Parse::PMFile; -local $Parse::PMFile::VERBOSE = $ENV{TEST_VERBOSE} ? 9 : 0; - -$server->index_releases; -$server->set_latest; - -my $cpan_dir = dir( 't', 'var', 'fakecpan', ); - -copy( $cpan_dir->file('00whois.xml'), - file( $config->{cpan}, qw(authors 00whois.xml) ) ); - -copy( $cpan_dir->file('author-1.0.json'), - file( $config->{cpan}, qw(authors id M MO MO author-1.0.json) ) ); - -copy( $cpan_dir->file('bugs.tsv'), file( $config->{cpan}, 'bugs.tsv' ) ); - -$server->index_authors; - -ok( - MetaCPAN::Script::Tickets->new_with_options( - { - %{$config}, - rt_summary_url => 'file://' - . file( $config->{cpan}, 'bugs.tsv' )->absolute, - github_issues => 'file://' - . dir(qw(t var fakecpan github))->absolute - . '/%s/%s.json?per_page=100', - } - )->run, - 'tickets' -); - -$server->wait_for_es(); - -subtest 'Nested tests' => sub { - my $tests = Test::Aggregate::Nested->new( - { - # should we do a glob to get these (and strip out t/var)? - dirs => [ - qw( - t/document - t/release - t/server - ) - ], - verbose => ( $ENV{TEST_VERBOSE} ? 2 : 0 ), - } - ); - - $tests->run; -}; - -done_testing; From 6fc0e45ea2b07b0007937c9cdb3989d39f7b45c0 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Sun, 24 Apr 2016 22:28:06 +0100 Subject: [PATCH 235/329] I don't think we need t/helpers.t anymore. --- t/helpers.t | 179 ---------------------------------------------------- 1 file changed, 179 deletions(-) delete mode 100644 t/helpers.t diff --git a/t/helpers.t b/t/helpers.t deleted file mode 100644 index 7a8a07dff..000000000 --- a/t/helpers.t +++ /dev/null @@ -1,179 +0,0 @@ -use strict; -use warnings; - -use Test::More 0.88; -use Test::Builder::Tester; - -# NOTE: These are just here to make sure we don't goof and accidentally -# not test a bunch of stuff. A few simple tests should suffice. -# Test::Tester doesn't work with subtests so use Test::Builder::Tester. -# It's a bit cumbersome, but not too bad... Just run the test you want -# normally (put "test_thingy(@args)" at the top of this file and run -# perl -Ilib t/helpers.t), copy the output, and, if it looks like what you -# expected to run, paste it into a heredoc. Then just put the test in a call -# to expect_output() like the others. (You may need to fudge the sequence numbers -# of any top-level tests (contents of subtests should be fine).) -# You can also debug the output (or get updated output) -# by passing (no_capture => 1) to expect_output(). -# As long as tests are run in a reliable order (sort keys) it should be fine. -# If you're so inclined, feel free to use the full Test::Builder::Tester API -# (or something else). If that doesn't work we'll figure something else out. - -#use MetaCPAN::Server::Test; -use lib 't/lib'; - -use MetaCPAN::TestHelpers; - -sub chomped { chomp( my $s = $_[0] ); $s } - -sub expect_output { - my (%opts) = @_; - - if ( $opts{no_capture} ) { - diag("\nTEST OUTPUT {\n"); - } - else { - test_out( chomped( $opts{out} ) ); - test_err( chomped( $opts{err} ) ) if $opts{err}; - } - - $opts{tests}->(); - - if ( $opts{no_capture} ) { - diag("\n} TEST OUTPUT\n"); - } - else { - test_test( - map { ( $_ => $opts{$_} ) } - grep { exists( $opts{$_} ) } qw( title skip_out skip_err ) - ); - } -} - -expect_output( - out => < ' # for Moose', - - tests => sub { - test_release( - 'DOY/Moose-0.02', - { - abstract => 'A standard perl distribution', - extra_tests => sub { - ok( 1, 'hooray' ); - diag( 'for ' . $_[0]->data->distribution ); - }, - modules => { - 'lib/Moose.pm' => [ - { - name => 'Moose', - indexed => \1, - authorized => \1, - version => '0.02', - version_numified => 0.02, - associated_pod => 'DOY/Moose-0.02/lib/Moose.pm', - }, - ], - } - }, - 'test_release helper', - ); - }, - - title => 'test_release', -); - -expect_output( - out => < sub { - test_distribution( 'uncommon-sense', { bugs => {}, }, ); - }, - - title => 'test_distribution with failures and default description', - - # The STDERR is a mess, and I don't really care; - # just show me that tests can fail. - skip_err => 1, -); - -expect_output( - out => < sub { - test_release( - { - author => 'STINKYPETE', - name => 'prospectus', - extra_tests => sub { - ok( 1, 'hooray' ); - }, - }, - 'not found', - ); - }, - - title => 'fail search, skip remaining tests', - - # Again, STDERR is a big mess, just show that the search fails - # and the rest of the tests don't attempt to run. - skip_err => 1, -); - -done_testing; From 045cd33768072543ca4262f9003ce2ed41633116 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Sun, 24 Apr 2016 23:55:15 +0100 Subject: [PATCH 236/329] More post Test::Aggregate tweaks. --- lib/MetaCPAN/Model/Release.pm | 6 +- lib/MetaCPAN/Pod/Renderer.pm | 9 +-- lib/MetaCPAN/Server.pm | 8 +- t/document/file.t | 2 +- t/lib/MetaCPAN/TestHelpers.pm | 2 +- t/lib/MetaCPAN/Tests/Model.pm | 5 +- t/model/release.t | 7 +- t/server/controller/pod.t | 145 ++++++++++++++++++---------------- t/server/sanitize_query.t | 1 + 9 files changed, 99 insertions(+), 86 deletions(-) diff --git a/lib/MetaCPAN/Model/Release.pm b/lib/MetaCPAN/Model/Release.pm index 51bb1c61b..7bca8651a 100644 --- a/lib/MetaCPAN/Model/Release.pm +++ b/lib/MetaCPAN/Model/Release.pm @@ -1,6 +1,9 @@ package MetaCPAN::Model::Release; +use Moose; + use v5.10; + use CPAN::DistnameInfo (); use CPAN::Meta (); use DateTime (); @@ -10,11 +13,10 @@ use MetaCPAN::Model::Archive; use MetaCPAN::Types qw(ArrayRef AbsFile Str); use MetaCPAN::Util (); use Module::Metadata 1.000012 (); # Improved package detection. -use Moose; use MooseX::StrictConstructor; use Path::Class (); use Parse::PMFile; -use Try::Tiny; +use Try::Tiny qw( catch try ); with 'MetaCPAN::Role::Logger'; diff --git a/lib/MetaCPAN/Pod/Renderer.pm b/lib/MetaCPAN/Pod/Renderer.pm index 0e285b8b7..75f9e4b13 100644 --- a/lib/MetaCPAN/Pod/Renderer.pm +++ b/lib/MetaCPAN/Pod/Renderer.pm @@ -1,9 +1,6 @@ package MetaCPAN::Pod::Renderer; -use strict; -use warnings; - -use Moose; +use MetaCPAN::Moose; use MetaCPAN::Pod::XHTML; use MetaCPAN::Types qw( Uri ); @@ -45,7 +42,7 @@ sub html_renderer { $parser->html_header(''); $parser->index(1); $parser->no_errata_section(1); - $parser->_set_perldoc_url_prefix( $self->perldoc_url_prefix ); + $parser->perldoc_url_prefix( $self->perldoc_url_prefix ); return $parser; } @@ -92,5 +89,5 @@ sub _generic_render { return $output; } -__PACKAGE__->meta->make_immutable(); +__PACKAGE__->meta->make_immutable; 1; diff --git a/lib/MetaCPAN/Server.pm b/lib/MetaCPAN/Server.pm index cc126d1d2..eecfdf5d3 100755 --- a/lib/MetaCPAN/Server.pm +++ b/lib/MetaCPAN/Server.pm @@ -1,13 +1,11 @@ package MetaCPAN::Server; -use strict; -use warnings; +use Moose; ## no critic (Modules::RequireEndWithOne) use CatalystX::RoleApplicator; use File::Temp qw( tempdir ); -use Moose; use Plack::Middleware::ReverseProxy; use Plack::Middleware::ServerStatus::Lite; @@ -115,5 +113,9 @@ if ( $ENV{PLACK_ENV} && $ENV{PLACK_ENV} eq 'development' ) { ); } +sub to_app { + return $app; +} + # Let's be explicit because implicit returns can be confusing return $app; diff --git a/t/document/file.t b/t/document/file.t index 7dc84ef31..ec7d2fa81 100644 --- a/t/document/file.t +++ b/t/document/file.t @@ -531,7 +531,7 @@ use strict; Foo - mymodule1 abstract POD - no warnings 'redefine'; + no warnings qw( once redefine ); local *Pod::Text::parse_string_document = sub { die "# [fake pod error]\n"; diff --git a/t/lib/MetaCPAN/TestHelpers.pm b/t/lib/MetaCPAN/TestHelpers.pm index 23b7831aa..c6444f848 100644 --- a/t/lib/MetaCPAN/TestHelpers.pm +++ b/t/lib/MetaCPAN/TestHelpers.pm @@ -11,7 +11,7 @@ use MetaCPAN::Script::Runner; use Path::Class qw( dir ); use Test::More; use Test::Routine::Util; -use Try::Tiny qw( catch ); +use Try::Tiny qw( catch try ); use base 'Exporter'; our @EXPORT = qw( diff --git a/t/lib/MetaCPAN/Tests/Model.pm b/t/lib/MetaCPAN/Tests/Model.pm index 318fb8fb3..198f0e10c 100644 --- a/t/lib/MetaCPAN/Tests/Model.pm +++ b/t/lib/MetaCPAN/Tests/Model.pm @@ -1,10 +1,11 @@ package MetaCPAN::Tests::Model; + use Test::Routine; -use Test::More; -use Try::Tiny; use MetaCPAN::Server::Test (); use MetaCPAN::Types qw( ArrayRef HashRef Str ); +use Test::More; +use Try::Tiny qw( catch try ); with qw( MetaCPAN::Tests::Extra diff --git a/t/model/release.t b/t/model/release.t index b0bcd1c78..9b603d141 100644 --- a/t/model/release.t +++ b/t/model/release.t @@ -1,10 +1,11 @@ use strict; use warnings; -use File::Temp; +use File::Temp (); use LWP::Simple qw(getstore); use MetaCPAN::Model::Release; use MetaCPAN::Script::Runner; +use MetaCPAN::TestHelpers qw( get_config ); use Test::More; use Test::RequiresInternet( 'metacpan.org' => 'https' ); @@ -25,8 +26,4 @@ $release->set_logger_once; is $release->file, $archive_file->filename; -# This isn't going to work without a lot more scaffolding passed into Release -#my $files = $release->files(); -#is( @$files, 4, 'got all files from release' ); - done_testing(); diff --git a/t/server/controller/pod.t b/t/server/controller/pod.t index b1277ebaf..3f9b23d53 100644 --- a/t/server/controller/pod.t +++ b/t/server/controller/pod.t @@ -1,14 +1,21 @@ use strict; use warnings; -use MetaCPAN::Server::Test; -use Path::Class qw(file); +use Cpanel::JSON::XS (); +use HTTP::Request::Common qw( GET ); +use MetaCPAN::Server (); +use MetaCPAN::Server::App; +use Path::Class qw(dir); +use Plack::Test; use Test::More; +use Try::Tiny qw( catch try ); -file( - MetaCPAN::Server->model('Source')->base_dir, - 'DOY/Moose-0.02/Moose-0.02/binary.bin' -)->openw->print( "\x00" x 10 ); +my $dir = dir( MetaCPAN::Server->model('Source')->base_dir, + 'DOY/Moose-0.02/Moose-0.02' ); +$dir->mkpath; + +my $file = $dir->file('binary.bin'); +$file->openw->print( "\x00" x 10 ); my %tests = ( @@ -21,82 +28,88 @@ my %tests = ( '/pod/Pod::Pm' => 200, ); -test_psgi app, sub { - my $cb = shift; - while ( my ( $k, $v ) = each %tests ) { - ok( my $res = $cb->( GET $k), "GET $k" ); - is( $res->code, $v, "code $v" ); - is( - $res->header('content-type'), - $v == 200 - ? 'text/html; charset=UTF-8' - : 'application/json; charset=utf-8', - 'Content-type' - ); +my $app = MetaCPAN::Server->new->to_app(); +my $test = Plack::Test->create($app); - if ( $k eq '/pod/Pod::Pm' ) { - like( $res->content, qr/Pod::Pm - abstract/, 'NAME section' ); - } - elsif ( $v == 200 ) { - like( $res->content, qr/Moose - abstract/, 'NAME section' ); - ok( $res = $cb->( GET "$k?content-type=text/plain" ), - 'GET plain' ); - is( - $res->header('content-type'), - 'text/plain; charset=UTF-8', - 'Content-type' - ); - } - elsif ( $v == 404 ) { - like( $res->content, qr/Not found/, '404 correct error' ); - } +while ( my ( $k, $v ) = each %tests ) { + my $res = $test->request( GET $k); + ok( $res, "GET $k" ); + is( $res->code, $v, "code $v" ); + is( + $res->header('content-type'), + $v == 200 + ? 'text/html; charset=UTF-8' + : 'application/json; charset=utf-8', + 'Content-type' + ); - my $ct = $k =~ /Moose[.]pm$/ ? '&content-type=text/x-pod' : q[]; - ok( $res = $cb->( GET "$k?callback=foo$ct" ), - "GET $k with callback" ); - is( $res->code, $v, "code $v" ); + if ( $k eq '/pod/Pod::Pm' ) { + like( $res->content, qr/Pod::Pm - abstract/, 'NAME section' ); + } + elsif ( $v == 200 ) { + like( $res->content, qr/Moose - abstract/, 'NAME section' ); + $res = $test->request( GET "$k?content-type=text/plain" ); is( $res->header('content-type'), - 'text/javascript; charset=UTF-8', + 'text/plain; charset=UTF-8', 'Content-type' ); + } + elsif ( $v == 404 ) { + like( $res->content, qr/Not found/, '404 correct error' ); + } + + my $ct = $k =~ /Moose[.]pm$/ ? '&content-type=text/x-pod' : q[]; + $res = $test->request( GET "$k?callback=foo$ct" ); + is( $res->code, $v, "code $v" ); + is( + $res->header('content-type'), + 'text/javascript; charset=UTF-8', + 'Content-type' + ); + + ok( my ($function_args) = $res->content =~ /^\/\*\*\/foo\((.*)\)/s, + 'callback included' ); + my $js_data; + try { + $js_data + = Cpanel::JSON::XS->new->allow_blessed->allow_nonref->binary + ->decode($function_args); + }; + ok( $js_data, 'decode json' ); + + if ( $v eq 200 ) { - ok( my ($function_args) = $res->content =~ /^\/\*\*\/foo\((.*)\)/s, - 'callback included' ); - ok( my $jsdata = JSON->new->allow_nonref->decode($function_args), - 'decode json' ); - - if ( $v eq 200 ) { - - if ($ct) { - like( $jsdata, qr{=head1 NAME}, 'POD body was JSON encoded' ); - } - else { - like( - $jsdata, - qr{

NAME

}, - 'HTML body was JSON encoded' - ); - } + if ($ct) { + like( $js_data, qr{=head1 NAME}, 'POD body was JSON encoded' ); } else { - ok( $jsdata->{message}, 'error response body was JSON encoded' ); + like( + $js_data, + qr{

NAME

}, + 'HTML body was JSON encoded' + ); } } -}; - -test_psgi app, sub { - my $cb = shift; + else { + ok( $js_data->{message}, 'error response body was JSON encoded' ); + } +} - my $res; +{ my $path = '/pod/BadPod'; - ok( $res = $cb->( GET $path), "GET $path" ); + my $res = $test->request( GET $path ); + ok( $res, "GET $path" ); is( $res->code, 200, 'code 200' ); unlike( $res->content, qr/]*id="pod-errors"/, 'no POD errors section' ); - $path = '/pod/BadPod?show_errors=1'; - ok( $res = $cb->( GET $path), "GET $path" ); +} + +{ + my $path = '/pod/BadPod?show_errors=1'; + my $res = $test->request( GET $path); + ok( $res, "GET $path" ); is( $res->code, 200, 'code 200' ); like( $res->content, qr/]*id="pod-errors"/, 'got POD errors section' ); @@ -105,6 +118,6 @@ test_psgi app, sub { is( scalar(@err), 2, 'two parse errors listed ' ); like( $err[0], qr/=head\b/, 'first error mentions =head' ); like( $err[1], qr/C</, 'first error mentions C< ... >' ); -}; +} done_testing; diff --git a/t/server/sanitize_query.t b/t/server/sanitize_query.t index 4386199f0..43b23b792 100644 --- a/t/server/sanitize_query.t +++ b/t/server/sanitize_query.t @@ -4,6 +4,7 @@ use warnings; use MetaCPAN::Server::Test; use MetaCPAN::TestHelpers; use Test::More skip_all => 'Scripting is disabled'; +use Try::Tiny qw( catch try ); use URI; sub uri { From 41ec7c19fda6c38e367e795ace42c112b6bd30ea Mon Sep 17 00:00:00 2001 From: Mickey Nasriachi Date: Mon, 25 Apr 2016 00:10:09 +0100 Subject: [PATCH 237/329] don't index packages in no_index --- lib/MetaCPAN/Document/File.pm | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/lib/MetaCPAN/Document/File.pm b/lib/MetaCPAN/Document/File.pm index c113e3735..cc55a7523 100644 --- a/lib/MetaCPAN/Document/File.pm +++ b/lib/MetaCPAN/Document/File.pm @@ -823,18 +823,20 @@ sub set_indexed { } foreach my $mod ( @{ $self->module } ) { - if ( $mod->name !~ /^[A-Za-z]/ ) { + if ( $mod->name !~ /^[A-Za-z]/ + or !$meta->should_index_package( $mod->name ) ) + { $mod->_set_indexed(0); next; } + $mod->_set_indexed( - $meta->should_index_package( $mod->name ) - ? $mod->hide_from_pause( ${ $self->content }, $self->name ) - ? 0 - : 1 - : 0 - ) unless ( $mod->indexed ); + $mod->hide_from_pause( ${ $self->content }, $self->name ) + ? 0 + : 1 + ); } + $self->_set_indexed( # .pm file with no package declaration but pod should be indexed From f4f66e4d1d6e25dd8eb6dcbb9fd86890bc5d000d Mon Sep 17 00:00:00 2001 From: Mickey Nasriachi Date: Mon, 25 Apr 2016 00:10:38 +0100 Subject: [PATCH 238/329] WIP: few fixes to tests --- t/release/moose.t | 2 +- t/release/multiple-modules.t | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/t/release/moose.t b/t/release/moose.t index d5ed81945..562cad30d 100644 --- a/t/release/moose.t +++ b/t/release/moose.t @@ -22,7 +22,7 @@ is( $moose[1]->main_module, 'Moose', 'main_module ok' ); ok( my $faq = $idx->type('file') - ->filter( { term => { documentation => 'Moose::FAQ' } } )->first, + ->filter( { match => { documentation => 'Moose::FAQ' } } )->first, 'get Moose::FAQ' ); diff --git a/t/release/multiple-modules.t b/t/release/multiple-modules.t index 6feb11e72..98e165dc7 100644 --- a/t/release/multiple-modules.t +++ b/t/release/multiple-modules.t @@ -38,9 +38,9 @@ ok( !$release->first, 'Release is not first' ); my @files = $idx->type('file')->filter( { and => [ - { term => { 'file.author' => $release->author } }, - { term => { 'file.release' => $release->name } }, - { exists => { field => 'file.module.name' } }, + { term => { author => $release->author } }, + { term => { release => $release->name } }, + { exists => { field => 'module.name' } }, ] } )->all; From 9d24cc2221f6341cc8e8983bc8eb004fad17028a Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Mon, 25 Apr 2016 00:31:59 +0100 Subject: [PATCH 239/329] Tidy --- lib/MetaCPAN/Document/Author.pm | 6 ++---- lib/MetaCPAN/Server/Controller.pm | 26 +++++++++++++------------- 2 files changed, 15 insertions(+), 17 deletions(-) diff --git a/lib/MetaCPAN/Document/Author.pm b/lib/MetaCPAN/Document/Author.pm index a7d439f95..fc99c0c8b 100644 --- a/lib/MetaCPAN/Document/Author.pm +++ b/lib/MetaCPAN/Document/Author.pm @@ -1,10 +1,8 @@ package MetaCPAN::Document::Author; -use strict; -use warnings; +use MetaCPAN::Moose; -# load order important for next 3 modules -use Moose; +# load order important for next 2 modules use ElasticSearchX::Model::Document::Types qw(:all); use ElasticSearchX::Model::Document; diff --git a/lib/MetaCPAN/Server/Controller.pm b/lib/MetaCPAN/Server/Controller.pm index 360cce855..5b341579c 100644 --- a/lib/MetaCPAN/Server/Controller.pm +++ b/lib/MetaCPAN/Server/Controller.pm @@ -41,7 +41,7 @@ my $MAX_SIZE = 5000; sub apply_request_filter { my ( $self, $c, $data ) = @_; - if ( my $fields = $c->req->param("fields") ) { + if ( my $fields = $c->req->param('fields') ) { my $filtered = {}; my @fields = split /,/, $fields; @$filtered{@fields} = @$data{@fields}; @@ -54,9 +54,9 @@ sub apply_request_filter { sub model { my ( $self, $c ) = @_; my $model = $c->model('CPAN')->type( $self->type ); - $model = $model->fields( [ map { split(/,/) } $c->req->param("fields") ] ) - if $c->req->param("fields"); - if ( my ($size) = $c->req->param("size") ) { + $model = $model->fields( [ map { split(/,/) } $c->req->param('fields') ] ) + if $c->req->param('fields'); + if ( my ($size) = $c->req->param('size') ) { $c->detach( '/bad_request', [ "size parameter exceeds maximum of $MAX_SIZE", 416 ] ) if ( $size && $size > $MAX_SIZE ); @@ -75,7 +75,7 @@ sub mapping : Path('_mapping') { ); } -sub get : Path('') : Args(1) { +sub get : Path(q{}) : Args(1) { my ( $self, $c, $id ) = @_; my $file = $self->model($c)->raw->get($id); if ( !defined $file ) { @@ -86,7 +86,7 @@ sub get : Path('') : Args(1) { ['The requested field(s) could not be found'] ); } -sub all : Path('') : Args(0) : ActionClass('Deserialize') { +sub all : Path(q{}) : Args(0) : ActionClass('Deserialize') { my ( $self, $c ) = @_; $c->req->params->{q} ||= '*' unless ( $c->req->data ); $c->forward('search'); @@ -110,7 +110,7 @@ sub search : Path('_search') : ActionClass('Deserialize') { $c->stash( $self->model($c)->es->search( { - index => $c->model("CPAN")->index, + index => $c->model('CPAN')->index, type => $self->type, body => $c->req->data, %$params, @@ -131,9 +131,9 @@ sub join : ActionClass('Deserialize') { : $c->req->data ? $c->req->data : { query => { match_all => {} } }; $c->detach( - "/not_allowed", + '/not_allowed', [ - "unknown join type, valid values are " + 'unknown join type, valid values are ' . Moose::Util::english_list( keys %$joins ) ] ) if ( scalar grep { !$joins->{$_} } @req_joins ); @@ -163,9 +163,9 @@ sub join : ActionClass('Deserialize') { $c->detach( "/not_allowed", [ - "The number of joined documents exceeded the allowed number of 1000 documents by " + 'The number of joined documents exceeded the allowed number of 1000 documents by ' . ( $foreign->{hits}->{total} - 1000 ) - . ". Please reduce the number of documents or apply additional filters." + . '. Please reduce the number of documents or apply additional filters.' ] ) if ( $foreign->{hits}->{total} > 1000 ); $c->stash->{took} += $foreign->{took} unless ($is_get); @@ -222,9 +222,9 @@ sub internal_error { sub end : Private { my ( $self, $c ) = @_; - $c->forward("join") + $c->forward('join') if ( $self->has_relationships && $c->req->param('join') ); - $c->forward("/end"); + $c->forward('/end'); } __PACKAGE__->meta->make_immutable; From 94798eb486ce95a547c8e23df4b652d297ba832f Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Mon, 25 Apr 2016 02:08:02 +0100 Subject: [PATCH 240/329] Keep test data out of t directory. --- etc/metacpan_testing.pl | 4 +- t/00_setup.t | 50 ++++++++++-------- t/lib/MetaCPAN/DarkPAN.pm | 4 +- t/lib/MetaCPAN/TestHelpers.pm | 24 ++++++++- t/lib/MetaCPAN/TestServer.pm | 4 +- t/model/archive.t | 29 +++++----- t/model/release/dependencies.t | 5 +- t/model/release/metadata.t | 4 +- {t/var => test-data}/fakecpan/00whois.xml | 0 {t/var => test-data}/fakecpan/author-1.0.json | 0 {t/var => test-data}/fakecpan/bugs.tsv | 0 ...t-Dummy-Perl5-VersionBump-0.01.tar.gz.dist | Bin ...t-Dummy-Perl5-VersionBump-0.02.tar.gz.dist | Bin .../fakecpan/configs/badpod.json | 0 .../fakecpan/configs/binary-data.pl | 0 .../fakecpan/configs/common-files.yml | 0 .../fakecpan/configs/devel-gofaster-0.000.yml | 0 .../fakecpan/configs/documentation-hide.json | 0 .../configs/documentation-not-readme.json | 0 .../fakecpan/configs/encoding-1.0.pl | 0 .../fakecpan/configs/encoding-1.1.pl | 0 .../fakecpan/configs/encoding-1.2.pl | 0 .../fakecpan/configs/file-changes-1.json | 0 .../fakecpan/configs/file-changes-2.json | 0 .../fakecpan/configs/file-changes-latin1.json | 0 .../fakecpan/configs/file-changes-news.json | 0 .../fakecpan/configs/file-changes-utf8.json | 0 .../fakecpan/configs/file-duplicates.pl | 0 .../fakecpan/configs/ipsonar-0.29.yml | 0 .../fakecpan/configs/local-lib.json | 0 .../fakecpan/configs/meta-license-dual.json | 0 .../fakecpan/configs/meta-license-single.json | 0 .../fakecpan/configs/meta-provides-1.01.json | 0 .../fakecpan/configs/metafile-both.json | 0 .../fakecpan/configs/metafile-json.json | 0 .../fakecpan/configs/metafile-yaml.json | 0 .../fakecpan/configs/moose-recent.json | 0 .../fakecpan/configs/moose.json | 0 .../configs/multiple-modules-0.1.json | 0 .../configs/multiple-modules-1.01.json | 0 .../configs/multiple-modules-rdeps-0.11.json | 0 .../configs/multiple-modules-rdeps-2.03.json | 0 .../configs/multiple-modules-rdeps-a.json | 0 .../multiple-modules-rdeps-deprecated.json | 0 .../configs/multiple-modules-tester.json | 0 .../fakecpan/configs/no-modules.yml | 0 .../fakecpan/configs/no-packages.yml | 0 .../fakecpan/configs/oops-locallib.json | 0 .../fakecpan/configs/p-1.0.20.yml | 0 .../configs/packages-unclaimable.json | 0 .../fakecpan/configs/packages.json | 0 .../fakecpan/configs/perl-1.json | 0 .../fakecpan/configs/pod-examples.json | 0 .../fakecpan/configs/pod-pm.json | 0 .../fakecpan/configs/pod-with-data-token.json | 0 .../fakecpan/configs/pod-with-generator.json | 0 .../fakecpan/configs/prefer-meta-json.json | 0 .../fakecpan/configs/prereqs.json | 0 .../fakecpan/configs/scripts.json | 0 .../fakecpan/configs/some-trial.json | 0 .../configs/text-tabs+wrap-2013.0523.yml | 0 .../fakecpan/configs/uncommon-sense.json | 0 .../fakecpan/configs/versions.json | 0 .../fakecpan/configs/weblint++-1.15.yml | 0 .../fakecpan/configs/www-tumblr-0.yml | 0 65 files changed, 77 insertions(+), 47 deletions(-) rename {t/var => test-data}/fakecpan/00whois.xml (100%) rename {t/var => test-data}/fakecpan/author-1.0.json (100%) rename {t/var => test-data}/fakecpan/bugs.tsv (100%) rename {t/var => test-data}/fakecpan/configs/MIYAGAWA_CPAN-Test-Dummy-Perl5-VersionBump-0.01.tar.gz.dist (100%) rename {t/var => test-data}/fakecpan/configs/MIYAGAWA_CPAN-Test-Dummy-Perl5-VersionBump-0.02.tar.gz.dist (100%) rename {t/var => test-data}/fakecpan/configs/badpod.json (100%) rename {t/var => test-data}/fakecpan/configs/binary-data.pl (100%) rename {t/var => test-data}/fakecpan/configs/common-files.yml (100%) rename {t/var => test-data}/fakecpan/configs/devel-gofaster-0.000.yml (100%) rename {t/var => test-data}/fakecpan/configs/documentation-hide.json (100%) rename {t/var => test-data}/fakecpan/configs/documentation-not-readme.json (100%) rename {t/var => test-data}/fakecpan/configs/encoding-1.0.pl (100%) rename {t/var => test-data}/fakecpan/configs/encoding-1.1.pl (100%) rename {t/var => test-data}/fakecpan/configs/encoding-1.2.pl (100%) rename {t/var => test-data}/fakecpan/configs/file-changes-1.json (100%) rename {t/var => test-data}/fakecpan/configs/file-changes-2.json (100%) rename {t/var => test-data}/fakecpan/configs/file-changes-latin1.json (100%) rename {t/var => test-data}/fakecpan/configs/file-changes-news.json (100%) rename {t/var => test-data}/fakecpan/configs/file-changes-utf8.json (100%) rename {t/var => test-data}/fakecpan/configs/file-duplicates.pl (100%) rename {t/var => test-data}/fakecpan/configs/ipsonar-0.29.yml (100%) rename {t/var => test-data}/fakecpan/configs/local-lib.json (100%) rename {t/var => test-data}/fakecpan/configs/meta-license-dual.json (100%) rename {t/var => test-data}/fakecpan/configs/meta-license-single.json (100%) rename {t/var => test-data}/fakecpan/configs/meta-provides-1.01.json (100%) rename {t/var => test-data}/fakecpan/configs/metafile-both.json (100%) rename {t/var => test-data}/fakecpan/configs/metafile-json.json (100%) rename {t/var => test-data}/fakecpan/configs/metafile-yaml.json (100%) rename {t/var => test-data}/fakecpan/configs/moose-recent.json (100%) rename {t/var => test-data}/fakecpan/configs/moose.json (100%) rename {t/var => test-data}/fakecpan/configs/multiple-modules-0.1.json (100%) rename {t/var => test-data}/fakecpan/configs/multiple-modules-1.01.json (100%) rename {t/var => test-data}/fakecpan/configs/multiple-modules-rdeps-0.11.json (100%) rename {t/var => test-data}/fakecpan/configs/multiple-modules-rdeps-2.03.json (100%) rename {t/var => test-data}/fakecpan/configs/multiple-modules-rdeps-a.json (100%) rename {t/var => test-data}/fakecpan/configs/multiple-modules-rdeps-deprecated.json (100%) rename {t/var => test-data}/fakecpan/configs/multiple-modules-tester.json (100%) rename {t/var => test-data}/fakecpan/configs/no-modules.yml (100%) rename {t/var => test-data}/fakecpan/configs/no-packages.yml (100%) rename {t/var => test-data}/fakecpan/configs/oops-locallib.json (100%) rename {t/var => test-data}/fakecpan/configs/p-1.0.20.yml (100%) rename {t/var => test-data}/fakecpan/configs/packages-unclaimable.json (100%) rename {t/var => test-data}/fakecpan/configs/packages.json (100%) rename {t/var => test-data}/fakecpan/configs/perl-1.json (100%) rename {t/var => test-data}/fakecpan/configs/pod-examples.json (100%) rename {t/var => test-data}/fakecpan/configs/pod-pm.json (100%) rename {t/var => test-data}/fakecpan/configs/pod-with-data-token.json (100%) rename {t/var => test-data}/fakecpan/configs/pod-with-generator.json (100%) rename {t/var => test-data}/fakecpan/configs/prefer-meta-json.json (100%) rename {t/var => test-data}/fakecpan/configs/prereqs.json (100%) rename {t/var => test-data}/fakecpan/configs/scripts.json (100%) rename {t/var => test-data}/fakecpan/configs/some-trial.json (100%) rename {t/var => test-data}/fakecpan/configs/text-tabs+wrap-2013.0523.yml (100%) rename {t/var => test-data}/fakecpan/configs/uncommon-sense.json (100%) rename {t/var => test-data}/fakecpan/configs/versions.json (100%) rename {t/var => test-data}/fakecpan/configs/weblint++-1.15.yml (100%) rename {t/var => test-data}/fakecpan/configs/www-tumblr-0.yml (100%) diff --git a/etc/metacpan_testing.pl b/etc/metacpan_testing.pl index 993a32145..7d7881ea5 100644 --- a/etc/metacpan_testing.pl +++ b/etc/metacpan_testing.pl @@ -3,8 +3,8 @@ port => '5900', die_on_error => 1, level => ($ENV{TEST_VERBOSE} ? 'info' : 'warn'), - cpan => 't/var/tmp/fakecpan', - source_base => 't/var/tmp/source', + cpan => 'var/t/tmp/fakecpan', + source_base => 'var/t/tmp/source', logger => [{ class => 'Log::Log4perl::Appender::Screen', name => 'testing' diff --git a/t/00_setup.t b/t/00_setup.t index 3c75a8801..84d4250a1 100644 --- a/t/00_setup.t +++ b/t/00_setup.t @@ -4,10 +4,16 @@ use warnings; use lib 't/lib'; use CPAN::Faker 0.010; +use Devel::Confess; use File::Copy; use MetaCPAN::Script::Tickets; use MetaCPAN::Server::Test; -use MetaCPAN::TestHelpers qw( get_config ); +use MetaCPAN::TestHelpers qw( + fakecpan_configs_dir + fakecpan_dir + get_config + tmp_dir +); use MetaCPAN::TestServer; use Module::Faker 0.015 (); # Generates META.json. use Path::Class qw(dir); @@ -16,12 +22,7 @@ use Test::More 0.96; use Test::More 0.96 (); use Test::Most; -my $tmp_dir = dir('var/tmp'); - -unless ( -d $tmp_dir || -l $tmp_dir ) { - $tmp_dir->mkpath(); -} -ok( ( -d $tmp_dir || -l $tmp_dir ), 'var/tmp exists for testing' ); +ok( ( -d tmp_dir() ), 'var/tmp exists for testing' ); my $server = MetaCPAN::TestServer->new; $server->setup; @@ -40,19 +41,26 @@ foreach my $test_dir ( $config->{cpan}, $config->{source_base} ) { my $mod_faker = 'Module::Faker::Dist::WithPerl'; eval "require $mod_faker" or die $@; ## no critic (StringyEval) +my $fakecpan_dir = fakecpan_dir(); +$fakecpan_dir->rmtree; +$fakecpan_dir = fakecpan_dir(); # recreate dir + +my $fakecpan_configs = fakecpan_configs_dir(); + my $cpan = CPAN::Faker->new( { - source => 't/var/fakecpan/configs', - dest => $config->{cpan}, + source => $fakecpan_configs->subdir('configs')->stringify, + dest => $fakecpan_dir->stringify, dist_class => $mod_faker, } ); ok( $cpan->make_cpan, 'make fake cpan' ); +$fakecpan_dir->subdir('authors')->mkpath; # do some changes to 06perms.txt { - my $perms_file = dir( $config->{cpan} )->file(qw(modules 06perms.txt)); + my $perms_file = $fakecpan_dir->subdir('modules')->file('06perms.txt'); my $perms = $perms_file->slurp; $perms =~ s/^Some,LOCAL,f$/Some,MO,f/m; my $fh = $perms_file->openw; @@ -64,29 +72,29 @@ ok( $cpan->make_cpan, 'make fake cpan' ); require Parse::PMFile; local $Parse::PMFile::VERBOSE = $ENV{TEST_VERBOSE} ? 9 : 0; -$server->index_releases; -$server->set_latest; - -my $cpan_dir = dir( 't', 'var', 'fakecpan', ); +my $src_dir = $fakecpan_configs; -copy( $cpan_dir->file('00whois.xml'), - file( $config->{cpan}, qw(authors 00whois.xml) ) ); +$src_dir->file('00whois.xml') + ->copy_to( $fakecpan_dir->file(qw(authors 00whois.xml)) ); -copy( $cpan_dir->file('author-1.0.json'), - file( $config->{cpan}, qw(authors id M MO MO author-1.0.json) ) ); +copy( $src_dir->file('author-1.0.json'), + $fakecpan_dir->file(qw(authors id M MO MO author-1.0.json)) ); -copy( $cpan_dir->file('bugs.tsv'), file( $config->{cpan}, 'bugs.tsv' ) ); +copy( $src_dir->file('bugs.tsv'), $fakecpan_dir->file('bugs.tsv') ); +$server->index_releases; +$server->set_latest; $server->index_authors; +$server->index_cpantesters; ok( MetaCPAN::Script::Tickets->new_with_options( { %{$config}, rt_summary_url => 'file://' - . file( $config->{cpan}, 'bugs.tsv' )->absolute, + . $fakecpan_dir->file('bugs.tsv')->absolute, github_issues => 'file://' - . dir(qw(t var fakecpan github))->absolute + . $fakecpan_dir->subdir('github')->absolute . '/%s/%s.json?per_page=100', } )->run, diff --git a/t/lib/MetaCPAN/DarkPAN.pm b/t/lib/MetaCPAN/DarkPAN.pm index 71b814e3c..28adbc38b 100644 --- a/t/lib/MetaCPAN/DarkPAN.pm +++ b/t/lib/MetaCPAN/DarkPAN.pm @@ -1,13 +1,11 @@ package MetaCPAN::DarkPAN; -use strict; -use warnings; +use MetaCPAN::Moose; use CPAN::Repository::Perms; use MetaCPAN::TestHelpers qw( get_config ); use MetaCPAN::Types qw( Dir ); use MetaCPAN::Util qw( author_dir ); -use Moose; use OrePAN2::Indexer; use OrePAN2::Injector; use Path::Class qw( dir ); diff --git a/t/lib/MetaCPAN/TestHelpers.pm b/t/lib/MetaCPAN/TestHelpers.pm index c6444f848..02cdfa7f7 100644 --- a/t/lib/MetaCPAN/TestHelpers.pm +++ b/t/lib/MetaCPAN/TestHelpers.pm @@ -16,15 +16,18 @@ use Try::Tiny qw( catch try ); use base 'Exporter'; our @EXPORT = qw( catch - get_config decode_json_ok encode_json + fakecpan_configs_dir + fakecpan_dir finally + get_config hex_escape multiline_diag run_tests test_distribution test_release + tmp_dir try ); @@ -100,4 +103,23 @@ sub get_config { return $config; } +sub tmp_dir { + my $dir = dir( undef, checkout_root(), 'var', 't', 'tmp' ); + $dir->mkpath; + return $dir; +} + +sub fakecpan_dir { + my $dir = tmp_dir(); + my $fakecpan = $dir->subdir('fakecpan'); + $fakecpan->mkpath; + return $fakecpan; +} + +sub fakecpan_configs_dir { + my $source = dir( undef, checkout_root(), 'test-data', 'fakecpan' ); + $source->mkpath; + return $source; +} + 1; diff --git a/t/lib/MetaCPAN/TestServer.pm b/t/lib/MetaCPAN/TestServer.pm index 3db6c3c19..bce610571 100644 --- a/t/lib/MetaCPAN/TestServer.pm +++ b/t/lib/MetaCPAN/TestServer.pm @@ -8,7 +8,7 @@ use MetaCPAN::Script::CPANTesters (); use MetaCPAN::Script::Latest; use MetaCPAN::Script::Mapping; use MetaCPAN::Script::Release; -use MetaCPAN::TestHelpers qw( get_config ); +use MetaCPAN::TestHelpers qw( get_config fakecpan_dir ); use MetaCPAN::Types qw( Dir HashRef Str ); use Search::Elasticsearch; use Search::Elasticsearch::TestServer; @@ -48,7 +48,7 @@ has _cpan_dir => ( isa => Dir, init_arg => 'cpan_dir', coerce => 1, - default => 't/var/tmp/fakecpan', + default => sub { fakecpan_dir() }, ); sub setup { diff --git a/t/model/archive.t b/t/model/archive.t index e25ff86a3..81f96b733 100644 --- a/t/model/archive.t +++ b/t/model/archive.t @@ -3,6 +3,7 @@ use strict; use warnings; +use MetaCPAN::TestHelpers qw( fakecpan_dir ); use Test::Most; my $CLASS = 'MetaCPAN::Model::Archive'; @@ -29,10 +30,10 @@ subtest 'archive extraction' => sub { 'Some-1.00-TRIAL/MANIFEST' => 62, ); - my $archive - = $CLASS->new( file => - 't/var/tmp/fakecpan/authors/id/L/LO/LOCAL/Some-1.00-TRIAL.tar.gz' - ); + my $archive = $CLASS->new( + file => fakecpan_dir->file( + '/authors/id/L/LO/LOCAL/Some-1.00-TRIAL.tar.gz') + ); ok !$archive->is_impolite; ok !$archive->is_naughty; @@ -51,10 +52,10 @@ subtest 'temp cleanup' => sub { my $tempdir; { - my $archive - = $CLASS->new( file => - 't/var/tmp/fakecpan/authors/id/L/LO/LOCAL/Some-1.00-TRIAL.tar.gz' - ); + my $archive = $CLASS->new( + file => fakecpan_dir->file( + 'authors/id/L/LO/LOCAL/Some-1.00-TRIAL.tar.gz') + ); $tempdir = $archive->extract; ok -d $tempdir; @@ -68,10 +69,10 @@ subtest 'temp cleanup' => sub { }; subtest 'extract once' => sub { - my $archive - = $CLASS->new( file => - 't/var/tmp/fakecpan/authors/id/L/LO/LOCAL/Some-1.00-TRIAL.tar.gz' - ); + my $archive = $CLASS->new( + file => fakecpan_dir->file( + 'authors/id/L/LO/LOCAL/Some-1.00-TRIAL.tar.gz') + ); is $archive->extract, $archive->extract; }; @@ -81,8 +82,8 @@ subtest 'set extract dir' => sub { { my $archive = $CLASS->new( - file => - 't/var/tmp/fakecpan/authors/id/L/LO/LOCAL/Some-1.00-TRIAL.tar.gz', + file => facecpan_dir->file( + 'authors/id/L/LO/LOCAL/Some-1.00-TRIAL.tar.gz'), extract_dir => $temp->dirname ); diff --git a/t/model/release/dependencies.t b/t/model/release/dependencies.t index eac8f9c24..2641973b7 100644 --- a/t/model/release/dependencies.t +++ b/t/model/release/dependencies.t @@ -4,14 +4,15 @@ use warnings; use FindBin; use MetaCPAN::Model::Release; use MetaCPAN::Script::Runner; -use MetaCPAN::TestHelpers qw( get_config ); +use MetaCPAN::TestHelpers qw( fakecpan_dir get_config ); use Test::Most; my $config = get_config(); subtest 'basic dependencies' => sub { my $file - = 't/var/tmp/fakecpan/authors/id/M/MS/MSCHWERN/Prereqs-Basic-0.01.tar.gz'; + = fakecpan_dir->file( + '/authors/id/M/MS/MSCHWERN/Prereqs-Basic-0.01.tar.gz'); my $release = MetaCPAN::Model::Release->new( logger => $config->{logger}, diff --git a/t/model/release/metadata.t b/t/model/release/metadata.t index 7d92eb6ae..95126c13f 100644 --- a/t/model/release/metadata.t +++ b/t/model/release/metadata.t @@ -4,10 +4,10 @@ use warnings; use FindBin; use MetaCPAN::Model::Release; use MetaCPAN::Script::Runner; -use MetaCPAN::TestHelpers qw( get_config ); +use MetaCPAN::TestHelpers qw( fakecpan_dir get_config ); use Test::More; -my $authordir = 't/var/tmp/fakecpan/authors/id/L/LO/LOCAL'; +my $authordir = fakecpan_dir->file('authors/id/L/LO/LOCAL'); my $config = get_config(); diff --git a/t/var/fakecpan/00whois.xml b/test-data/fakecpan/00whois.xml similarity index 100% rename from t/var/fakecpan/00whois.xml rename to test-data/fakecpan/00whois.xml diff --git a/t/var/fakecpan/author-1.0.json b/test-data/fakecpan/author-1.0.json similarity index 100% rename from t/var/fakecpan/author-1.0.json rename to test-data/fakecpan/author-1.0.json diff --git a/t/var/fakecpan/bugs.tsv b/test-data/fakecpan/bugs.tsv similarity index 100% rename from t/var/fakecpan/bugs.tsv rename to test-data/fakecpan/bugs.tsv diff --git a/t/var/fakecpan/configs/MIYAGAWA_CPAN-Test-Dummy-Perl5-VersionBump-0.01.tar.gz.dist b/test-data/fakecpan/configs/MIYAGAWA_CPAN-Test-Dummy-Perl5-VersionBump-0.01.tar.gz.dist similarity index 100% rename from t/var/fakecpan/configs/MIYAGAWA_CPAN-Test-Dummy-Perl5-VersionBump-0.01.tar.gz.dist rename to test-data/fakecpan/configs/MIYAGAWA_CPAN-Test-Dummy-Perl5-VersionBump-0.01.tar.gz.dist diff --git a/t/var/fakecpan/configs/MIYAGAWA_CPAN-Test-Dummy-Perl5-VersionBump-0.02.tar.gz.dist b/test-data/fakecpan/configs/MIYAGAWA_CPAN-Test-Dummy-Perl5-VersionBump-0.02.tar.gz.dist similarity index 100% rename from t/var/fakecpan/configs/MIYAGAWA_CPAN-Test-Dummy-Perl5-VersionBump-0.02.tar.gz.dist rename to test-data/fakecpan/configs/MIYAGAWA_CPAN-Test-Dummy-Perl5-VersionBump-0.02.tar.gz.dist diff --git a/t/var/fakecpan/configs/badpod.json b/test-data/fakecpan/configs/badpod.json similarity index 100% rename from t/var/fakecpan/configs/badpod.json rename to test-data/fakecpan/configs/badpod.json diff --git a/t/var/fakecpan/configs/binary-data.pl b/test-data/fakecpan/configs/binary-data.pl similarity index 100% rename from t/var/fakecpan/configs/binary-data.pl rename to test-data/fakecpan/configs/binary-data.pl diff --git a/t/var/fakecpan/configs/common-files.yml b/test-data/fakecpan/configs/common-files.yml similarity index 100% rename from t/var/fakecpan/configs/common-files.yml rename to test-data/fakecpan/configs/common-files.yml diff --git a/t/var/fakecpan/configs/devel-gofaster-0.000.yml b/test-data/fakecpan/configs/devel-gofaster-0.000.yml similarity index 100% rename from t/var/fakecpan/configs/devel-gofaster-0.000.yml rename to test-data/fakecpan/configs/devel-gofaster-0.000.yml diff --git a/t/var/fakecpan/configs/documentation-hide.json b/test-data/fakecpan/configs/documentation-hide.json similarity index 100% rename from t/var/fakecpan/configs/documentation-hide.json rename to test-data/fakecpan/configs/documentation-hide.json diff --git a/t/var/fakecpan/configs/documentation-not-readme.json b/test-data/fakecpan/configs/documentation-not-readme.json similarity index 100% rename from t/var/fakecpan/configs/documentation-not-readme.json rename to test-data/fakecpan/configs/documentation-not-readme.json diff --git a/t/var/fakecpan/configs/encoding-1.0.pl b/test-data/fakecpan/configs/encoding-1.0.pl similarity index 100% rename from t/var/fakecpan/configs/encoding-1.0.pl rename to test-data/fakecpan/configs/encoding-1.0.pl diff --git a/t/var/fakecpan/configs/encoding-1.1.pl b/test-data/fakecpan/configs/encoding-1.1.pl similarity index 100% rename from t/var/fakecpan/configs/encoding-1.1.pl rename to test-data/fakecpan/configs/encoding-1.1.pl diff --git a/t/var/fakecpan/configs/encoding-1.2.pl b/test-data/fakecpan/configs/encoding-1.2.pl similarity index 100% rename from t/var/fakecpan/configs/encoding-1.2.pl rename to test-data/fakecpan/configs/encoding-1.2.pl diff --git a/t/var/fakecpan/configs/file-changes-1.json b/test-data/fakecpan/configs/file-changes-1.json similarity index 100% rename from t/var/fakecpan/configs/file-changes-1.json rename to test-data/fakecpan/configs/file-changes-1.json diff --git a/t/var/fakecpan/configs/file-changes-2.json b/test-data/fakecpan/configs/file-changes-2.json similarity index 100% rename from t/var/fakecpan/configs/file-changes-2.json rename to test-data/fakecpan/configs/file-changes-2.json diff --git a/t/var/fakecpan/configs/file-changes-latin1.json b/test-data/fakecpan/configs/file-changes-latin1.json similarity index 100% rename from t/var/fakecpan/configs/file-changes-latin1.json rename to test-data/fakecpan/configs/file-changes-latin1.json diff --git a/t/var/fakecpan/configs/file-changes-news.json b/test-data/fakecpan/configs/file-changes-news.json similarity index 100% rename from t/var/fakecpan/configs/file-changes-news.json rename to test-data/fakecpan/configs/file-changes-news.json diff --git a/t/var/fakecpan/configs/file-changes-utf8.json b/test-data/fakecpan/configs/file-changes-utf8.json similarity index 100% rename from t/var/fakecpan/configs/file-changes-utf8.json rename to test-data/fakecpan/configs/file-changes-utf8.json diff --git a/t/var/fakecpan/configs/file-duplicates.pl b/test-data/fakecpan/configs/file-duplicates.pl similarity index 100% rename from t/var/fakecpan/configs/file-duplicates.pl rename to test-data/fakecpan/configs/file-duplicates.pl diff --git a/t/var/fakecpan/configs/ipsonar-0.29.yml b/test-data/fakecpan/configs/ipsonar-0.29.yml similarity index 100% rename from t/var/fakecpan/configs/ipsonar-0.29.yml rename to test-data/fakecpan/configs/ipsonar-0.29.yml diff --git a/t/var/fakecpan/configs/local-lib.json b/test-data/fakecpan/configs/local-lib.json similarity index 100% rename from t/var/fakecpan/configs/local-lib.json rename to test-data/fakecpan/configs/local-lib.json diff --git a/t/var/fakecpan/configs/meta-license-dual.json b/test-data/fakecpan/configs/meta-license-dual.json similarity index 100% rename from t/var/fakecpan/configs/meta-license-dual.json rename to test-data/fakecpan/configs/meta-license-dual.json diff --git a/t/var/fakecpan/configs/meta-license-single.json b/test-data/fakecpan/configs/meta-license-single.json similarity index 100% rename from t/var/fakecpan/configs/meta-license-single.json rename to test-data/fakecpan/configs/meta-license-single.json diff --git a/t/var/fakecpan/configs/meta-provides-1.01.json b/test-data/fakecpan/configs/meta-provides-1.01.json similarity index 100% rename from t/var/fakecpan/configs/meta-provides-1.01.json rename to test-data/fakecpan/configs/meta-provides-1.01.json diff --git a/t/var/fakecpan/configs/metafile-both.json b/test-data/fakecpan/configs/metafile-both.json similarity index 100% rename from t/var/fakecpan/configs/metafile-both.json rename to test-data/fakecpan/configs/metafile-both.json diff --git a/t/var/fakecpan/configs/metafile-json.json b/test-data/fakecpan/configs/metafile-json.json similarity index 100% rename from t/var/fakecpan/configs/metafile-json.json rename to test-data/fakecpan/configs/metafile-json.json diff --git a/t/var/fakecpan/configs/metafile-yaml.json b/test-data/fakecpan/configs/metafile-yaml.json similarity index 100% rename from t/var/fakecpan/configs/metafile-yaml.json rename to test-data/fakecpan/configs/metafile-yaml.json diff --git a/t/var/fakecpan/configs/moose-recent.json b/test-data/fakecpan/configs/moose-recent.json similarity index 100% rename from t/var/fakecpan/configs/moose-recent.json rename to test-data/fakecpan/configs/moose-recent.json diff --git a/t/var/fakecpan/configs/moose.json b/test-data/fakecpan/configs/moose.json similarity index 100% rename from t/var/fakecpan/configs/moose.json rename to test-data/fakecpan/configs/moose.json diff --git a/t/var/fakecpan/configs/multiple-modules-0.1.json b/test-data/fakecpan/configs/multiple-modules-0.1.json similarity index 100% rename from t/var/fakecpan/configs/multiple-modules-0.1.json rename to test-data/fakecpan/configs/multiple-modules-0.1.json diff --git a/t/var/fakecpan/configs/multiple-modules-1.01.json b/test-data/fakecpan/configs/multiple-modules-1.01.json similarity index 100% rename from t/var/fakecpan/configs/multiple-modules-1.01.json rename to test-data/fakecpan/configs/multiple-modules-1.01.json diff --git a/t/var/fakecpan/configs/multiple-modules-rdeps-0.11.json b/test-data/fakecpan/configs/multiple-modules-rdeps-0.11.json similarity index 100% rename from t/var/fakecpan/configs/multiple-modules-rdeps-0.11.json rename to test-data/fakecpan/configs/multiple-modules-rdeps-0.11.json diff --git a/t/var/fakecpan/configs/multiple-modules-rdeps-2.03.json b/test-data/fakecpan/configs/multiple-modules-rdeps-2.03.json similarity index 100% rename from t/var/fakecpan/configs/multiple-modules-rdeps-2.03.json rename to test-data/fakecpan/configs/multiple-modules-rdeps-2.03.json diff --git a/t/var/fakecpan/configs/multiple-modules-rdeps-a.json b/test-data/fakecpan/configs/multiple-modules-rdeps-a.json similarity index 100% rename from t/var/fakecpan/configs/multiple-modules-rdeps-a.json rename to test-data/fakecpan/configs/multiple-modules-rdeps-a.json diff --git a/t/var/fakecpan/configs/multiple-modules-rdeps-deprecated.json b/test-data/fakecpan/configs/multiple-modules-rdeps-deprecated.json similarity index 100% rename from t/var/fakecpan/configs/multiple-modules-rdeps-deprecated.json rename to test-data/fakecpan/configs/multiple-modules-rdeps-deprecated.json diff --git a/t/var/fakecpan/configs/multiple-modules-tester.json b/test-data/fakecpan/configs/multiple-modules-tester.json similarity index 100% rename from t/var/fakecpan/configs/multiple-modules-tester.json rename to test-data/fakecpan/configs/multiple-modules-tester.json diff --git a/t/var/fakecpan/configs/no-modules.yml b/test-data/fakecpan/configs/no-modules.yml similarity index 100% rename from t/var/fakecpan/configs/no-modules.yml rename to test-data/fakecpan/configs/no-modules.yml diff --git a/t/var/fakecpan/configs/no-packages.yml b/test-data/fakecpan/configs/no-packages.yml similarity index 100% rename from t/var/fakecpan/configs/no-packages.yml rename to test-data/fakecpan/configs/no-packages.yml diff --git a/t/var/fakecpan/configs/oops-locallib.json b/test-data/fakecpan/configs/oops-locallib.json similarity index 100% rename from t/var/fakecpan/configs/oops-locallib.json rename to test-data/fakecpan/configs/oops-locallib.json diff --git a/t/var/fakecpan/configs/p-1.0.20.yml b/test-data/fakecpan/configs/p-1.0.20.yml similarity index 100% rename from t/var/fakecpan/configs/p-1.0.20.yml rename to test-data/fakecpan/configs/p-1.0.20.yml diff --git a/t/var/fakecpan/configs/packages-unclaimable.json b/test-data/fakecpan/configs/packages-unclaimable.json similarity index 100% rename from t/var/fakecpan/configs/packages-unclaimable.json rename to test-data/fakecpan/configs/packages-unclaimable.json diff --git a/t/var/fakecpan/configs/packages.json b/test-data/fakecpan/configs/packages.json similarity index 100% rename from t/var/fakecpan/configs/packages.json rename to test-data/fakecpan/configs/packages.json diff --git a/t/var/fakecpan/configs/perl-1.json b/test-data/fakecpan/configs/perl-1.json similarity index 100% rename from t/var/fakecpan/configs/perl-1.json rename to test-data/fakecpan/configs/perl-1.json diff --git a/t/var/fakecpan/configs/pod-examples.json b/test-data/fakecpan/configs/pod-examples.json similarity index 100% rename from t/var/fakecpan/configs/pod-examples.json rename to test-data/fakecpan/configs/pod-examples.json diff --git a/t/var/fakecpan/configs/pod-pm.json b/test-data/fakecpan/configs/pod-pm.json similarity index 100% rename from t/var/fakecpan/configs/pod-pm.json rename to test-data/fakecpan/configs/pod-pm.json diff --git a/t/var/fakecpan/configs/pod-with-data-token.json b/test-data/fakecpan/configs/pod-with-data-token.json similarity index 100% rename from t/var/fakecpan/configs/pod-with-data-token.json rename to test-data/fakecpan/configs/pod-with-data-token.json diff --git a/t/var/fakecpan/configs/pod-with-generator.json b/test-data/fakecpan/configs/pod-with-generator.json similarity index 100% rename from t/var/fakecpan/configs/pod-with-generator.json rename to test-data/fakecpan/configs/pod-with-generator.json diff --git a/t/var/fakecpan/configs/prefer-meta-json.json b/test-data/fakecpan/configs/prefer-meta-json.json similarity index 100% rename from t/var/fakecpan/configs/prefer-meta-json.json rename to test-data/fakecpan/configs/prefer-meta-json.json diff --git a/t/var/fakecpan/configs/prereqs.json b/test-data/fakecpan/configs/prereqs.json similarity index 100% rename from t/var/fakecpan/configs/prereqs.json rename to test-data/fakecpan/configs/prereqs.json diff --git a/t/var/fakecpan/configs/scripts.json b/test-data/fakecpan/configs/scripts.json similarity index 100% rename from t/var/fakecpan/configs/scripts.json rename to test-data/fakecpan/configs/scripts.json diff --git a/t/var/fakecpan/configs/some-trial.json b/test-data/fakecpan/configs/some-trial.json similarity index 100% rename from t/var/fakecpan/configs/some-trial.json rename to test-data/fakecpan/configs/some-trial.json diff --git a/t/var/fakecpan/configs/text-tabs+wrap-2013.0523.yml b/test-data/fakecpan/configs/text-tabs+wrap-2013.0523.yml similarity index 100% rename from t/var/fakecpan/configs/text-tabs+wrap-2013.0523.yml rename to test-data/fakecpan/configs/text-tabs+wrap-2013.0523.yml diff --git a/t/var/fakecpan/configs/uncommon-sense.json b/test-data/fakecpan/configs/uncommon-sense.json similarity index 100% rename from t/var/fakecpan/configs/uncommon-sense.json rename to test-data/fakecpan/configs/uncommon-sense.json diff --git a/t/var/fakecpan/configs/versions.json b/test-data/fakecpan/configs/versions.json similarity index 100% rename from t/var/fakecpan/configs/versions.json rename to test-data/fakecpan/configs/versions.json diff --git a/t/var/fakecpan/configs/weblint++-1.15.yml b/test-data/fakecpan/configs/weblint++-1.15.yml similarity index 100% rename from t/var/fakecpan/configs/weblint++-1.15.yml rename to test-data/fakecpan/configs/weblint++-1.15.yml diff --git a/t/var/fakecpan/configs/www-tumblr-0.yml b/test-data/fakecpan/configs/www-tumblr-0.yml similarity index 100% rename from t/var/fakecpan/configs/www-tumblr-0.yml rename to test-data/fakecpan/configs/www-tumblr-0.yml From c57b6ec1bcdef7fc35a995aae75f2c370ac588a3 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Mon, 25 Apr 2016 02:34:27 +0100 Subject: [PATCH 241/329] Run tests recursively. --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 6e5d6cd56..13ad8521d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -54,7 +54,7 @@ script: # Devel::Cover isn't in the cpanfile # but if it's installed into the global dirs this should work. # NOTE: No '-r' for prove; 't/fakecpan.t' does the recursion for us. - - HARNESS_PERL_SWITCHES=-MDevel::Cover=+ignore,local carton exec prove -lv t + - HARNESS_PERL_SWITCHES=-MDevel::Cover=+ignore,local carton exec prove -lvr t after_success: - cover -report coveralls From 01252b744bfe675efbc2c0e769b79cae0308d30d Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Mon, 25 Apr 2016 02:37:54 +0100 Subject: [PATCH 242/329] Use /tmp for temp files under Travis. --- t/lib/MetaCPAN/TestHelpers.pm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/t/lib/MetaCPAN/TestHelpers.pm b/t/lib/MetaCPAN/TestHelpers.pm index 02cdfa7f7..d42e5c049 100644 --- a/t/lib/MetaCPAN/TestHelpers.pm +++ b/t/lib/MetaCPAN/TestHelpers.pm @@ -104,7 +104,8 @@ sub get_config { } sub tmp_dir { - my $dir = dir( undef, checkout_root(), 'var', 't', 'tmp' ); + my $dir = dir( undef, ( $ENV{TRAVIS} ? 'tmp' : checkout_root() ), + 'var', 't', 'tmp' ); $dir->mkpath; return $dir; } From e2f170390a5e94af7676f190fcc83f2c988505ae Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Mon, 25 Apr 2016 08:18:12 +0100 Subject: [PATCH 243/329] Have Travis add t/lib to @INC --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 13ad8521d..3af311a02 100644 --- a/.travis.yml +++ b/.travis.yml @@ -54,7 +54,7 @@ script: # Devel::Cover isn't in the cpanfile # but if it's installed into the global dirs this should work. # NOTE: No '-r' for prove; 't/fakecpan.t' does the recursion for us. - - HARNESS_PERL_SWITCHES=-MDevel::Cover=+ignore,local carton exec prove -lvr t + - HARNESS_PERL_SWITCHES=-MDevel::Cover=+ignore,local carton exec prove -It/lib -lvr t after_success: - cover -report coveralls From 9643c871b5b4e8a6909041c607415ceeb26bef2b Mon Sep 17 00:00:00 2001 From: Mickey Nasriachi Date: Mon, 25 Apr 2016 10:32:17 +0100 Subject: [PATCH 244/329] fix warnings for some author json files --- lib/MetaCPAN/Script/Author.pm | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/lib/MetaCPAN/Script/Author.pm b/lib/MetaCPAN/Script/Author.pm index c2c0e38bc..8124a5ec8 100644 --- a/lib/MetaCPAN/Script/Author.pm +++ b/lib/MetaCPAN/Script/Author.pm @@ -10,7 +10,7 @@ use DateTime::Format::ISO8601 (); use Email::Valid (); use Encode (); use File::stat (); -use Cpanel::JSON::XS (); +use Cpanel::JSON::XS qw( decode_json ); use Log::Contextual qw( :log ); use MetaCPAN::Document::Author; use URI (); @@ -115,8 +115,7 @@ sub author_config { my $author; eval { - $author - = Cpanel::JSON::XS->new->utf8->relaxed->decode( $file->slurp ); + $author = decode_json( $file->slurp ); 1; } or do { log_warn {"$file is broken: $@"}; From 52d4df28a5eb737d7415a0f7df8760a372cb8e7f Mon Sep 17 00:00:00 2001 From: Mickey Nasriachi Date: Mon, 25 Apr 2016 12:39:17 +0100 Subject: [PATCH 245/329] improved documentation fetching logic + fixed test also, updated file docuemntation builder with comments to clarify the decision making. --- lib/MetaCPAN/Document/File.pm | 21 ++++++++++++++++----- t/document/file.t | 14 ++++++++++++-- 2 files changed, 28 insertions(+), 7 deletions(-) diff --git a/lib/MetaCPAN/Document/File.pm b/lib/MetaCPAN/Document/File.pm index cc55a7523..856d70a7c 100644 --- a/lib/MetaCPAN/Document/File.pm +++ b/lib/MetaCPAN/Document/File.pm @@ -317,19 +317,30 @@ sub _build_documentation { return undef unless length $documentation; + # Modules to be indexed my @indexed = grep { $_->indexed } @{ $self->module || [] }; + # This is a Pod file, return its name if ( $documentation && $self->is_pod_file ) { return $documentation; } - elsif ( $documentation && grep { $_->name eq $documentation } @indexed ) { + + # OR: found an indexed module with the same name + if ( $documentation && grep { $_->name eq $documentation } @indexed ) { return $documentation; } - elsif (@indexed) { - return $indexed[0]->name; + + # OR: found an indexed module with a name + if ( my ($mod) = grep { defined $_->name } @indexed ) { + return $mod->name; } - elsif ( !@{ $self->module || [] } ) { - return $documentation; + + # OR: we have a parsed documentation + return $documentation if defined $documentation; + + # OR: found ANY module with a name (better than nothing) + if ( my ($mod) = grep { defined $_->name } @{ $self->module || [] } ) { + return $mod->name; } return undef; diff --git a/t/document/file.t b/t/document/file.t index ec7d2fa81..9fd8e5c8f 100644 --- a/t/document/file.t +++ b/t/document/file.t @@ -271,8 +271,18 @@ END is( $file->sloc, 8, '8 lines of code' ); is( $file->slop, 4, '4 lines of pod' ); is( $file->module->[0]->hide_from_pause($content), 1, 'not indexed' ); - is( $file->abstract, 'AS-specific methods for Number::Phone' ); - is( $file->documentation, 'Number::Phone::NANP::ASS' ); + is( + $file->abstract, + 'AS-specific methods for Number::Phone', + 'abstract text' + ); + + # changed because the extracted document from content takes + # precedence over a non-indexed module. + # test may need an update if we want to see the name + # from the module. -- Mickey + is( $file->documentation, 'Number::Phone::NANP::AS', 'document text' ); + is_deeply( $file->pod_lines, [ [ 18, 7 ] ], 'correct pod_lines' ); is( $file->module->[0]->version_numified, 1.1, 'numified version has been calculated' ); From 0d96c27da0ba5a387821b7e650eb389b6f5e630f Mon Sep 17 00:00:00 2001 From: Mickey Nasriachi Date: Tue, 26 Apr 2016 10:37:55 +0100 Subject: [PATCH 246/329] fix test release/file-changes --- t/release/file-changes.t | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/t/release/file-changes.t b/t/release/file-changes.t index 5155b6533..61b6c32d7 100644 --- a/t/release/file-changes.t +++ b/t/release/file-changes.t @@ -22,9 +22,9 @@ is( $release->changes_file, 'Changes', 'changes_file ok' ); { my @files = $idx->type('file') - ->filter( - { and => [ { term => { distribution => 'File-Changes' } } ] } )->all; - my ($changes) = grep { $_->{name} eq 'Changes' } @files; + ->filter( { term => { release => 'File-Changes-1.0' } } )->all; + + my ($changes) = grep { $_->name eq 'Changes' } @files; ok $changes, 'found Changes'; } From f99af5a89219bc46125ce97a4ba92caf7d572431 Mon Sep 17 00:00:00 2001 From: Mickey Nasriachi Date: Tue, 26 Apr 2016 12:57:38 +0100 Subject: [PATCH 247/329] fix test release/pod-with-data-token --- t/release/pod-with-data-token.t | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/t/release/pod-with-data-token.t b/t/release/pod-with-data-token.t index 15c9bbc80..360b5b3f3 100644 --- a/t/release/pod-with-data-token.t +++ b/t/release/pod-with-data-token.t @@ -9,16 +9,16 @@ test_release( { name => 'Pod-With-Data-Token-0.01', author => 'BORISNAT', - authorized => \1, - first => \1, + authorized => 1, + first => 1, provides => [ 'Pod::With::Data::Token', ], main_module => 'Pod::With::Data::Token', modules => { 'lib/Pod/With/Data/Token.pm' => [ { name => 'Pod::With::Data::Token', - indexed => \1, - authorized => \1, + indexed => 'true', + authorized => 'true', version => '0.01', version_numified => 0.01, associated_pod => From 5be65b43cafc6e18cfe7698a02d3eb439959cf2c Mon Sep 17 00:00:00 2001 From: Mickey Nasriachi Date: Tue, 26 Apr 2016 13:12:40 +0100 Subject: [PATCH 248/329] fix test release/pod-with-generator --- t/release/pod-with-generator.t | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/t/release/pod-with-generator.t b/t/release/pod-with-generator.t index ef7b2a75f..986a6b933 100644 --- a/t/release/pod-with-generator.t +++ b/t/release/pod-with-generator.t @@ -9,16 +9,16 @@ test_release( { name => 'Pod-With-Generator-1', author => 'BORISNAT', - authorized => \1, - first => \1, + authorized => 1, + first => 1, provides => [ 'Pod::With::Generator', ], main_module => 'Pod::With::Generator', modules => { 'lib/Pod/With/Generator.pm' => [ { name => 'Pod::With::Generator', - indexed => \1, - authorized => \1, + indexed => 'true', + authorized => 'true', version => '1', version_numified => 1, associated_pod => From fddb2d2c442f39482265fa6e7ed99b8fcdc0900b Mon Sep 17 00:00:00 2001 From: Mickey Nasriachi Date: Tue, 26 Apr 2016 13:14:19 +0100 Subject: [PATCH 249/329] fix test release/prefer-meta-json --- t/release/prefer-meta-json.t | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/t/release/prefer-meta-json.t b/t/release/prefer-meta-json.t index 7c495d880..13839c07d 100644 --- a/t/release/prefer-meta-json.t +++ b/t/release/prefer-meta-json.t @@ -26,9 +26,9 @@ is( $release->metadata->{'meta-spec'}{version}, 2, 'meta_spec version is 2' ); my @files = $idx->type('file')->filter( { and => [ - { term => { 'file.author' => $release->author } }, - { term => { 'file.release' => $release->name } }, - { exists => { field => 'file.module.name' } }, + { term => { author => $release->author } }, + { term => { release => $release->name } }, + { exists => { field => 'module.name' } }, ] } )->all; From 9af01ef57fe1e9206b185106fda1a9542d40b451 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Tue, 26 Apr 2016 09:59:36 -0400 Subject: [PATCH 250/329] Removes reference to unused module. --- t/server/controller/pod.t | 1 - 1 file changed, 1 deletion(-) diff --git a/t/server/controller/pod.t b/t/server/controller/pod.t index 3f9b23d53..a67ef0e1a 100644 --- a/t/server/controller/pod.t +++ b/t/server/controller/pod.t @@ -4,7 +4,6 @@ use warnings; use Cpanel::JSON::XS (); use HTTP::Request::Common qw( GET ); use MetaCPAN::Server (); -use MetaCPAN::Server::App; use Path::Class qw(dir); use Plack::Test; use Test::More; From 3e1b2f29363b7caa395bc0807750718b3b298483 Mon Sep 17 00:00:00 2001 From: Mickey Nasriachi Date: Tue, 26 Apr 2016 20:22:08 +0100 Subject: [PATCH 251/329] force mime builder to have it put correctly in ES (debugging WIP) --- lib/MetaCPAN/Document/File.pm | 14 +++++++++++--- t/release/pod-examples.t | 2 +- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/lib/MetaCPAN/Document/File.pm b/lib/MetaCPAN/Document/File.pm index 856d70a7c..35a358a15 100644 --- a/lib/MetaCPAN/Document/File.pm +++ b/lib/MetaCPAN/Document/File.pm @@ -23,6 +23,13 @@ Plack::MIME->add_type( '.xs' => 'text/x-c' ); my @NOT_PERL_FILES = qw(SIGNATURE); +sub BUILD { + my $self = shift; + + # force building of `mime` + $self->_build_mime; +} + =head1 PROPERTIES =head2 abstract @@ -604,9 +611,10 @@ MIME type of file. Derived using L (for speed). =cut has mime => ( - is => 'ro', - lazy => 1, - builder => '_build_mime', + required => 1, + is => 'ro', + lazy => 1, + builder => '_build_mime', ); sub _build_mime { diff --git a/t/release/pod-examples.t b/t/release/pod-examples.t index 5641e1d14..282f0c0ca 100644 --- a/t/release/pod-examples.t +++ b/t/release/pod-examples.t @@ -9,7 +9,7 @@ use MetaCPAN::TestHelpers; test_release( 'RWSTAUNER/Pod-Examples-99', { - first => \1, + first => 1, extra_tests => \&test_pod_examples, main_module => 'Pod::Examples', changes_file => 'Changes', From fd27271227de4ccf5ff9b9e6517917b0f005f8b0 Mon Sep 17 00:00:00 2001 From: Leo Lapworth Date: Tue, 26 Apr 2016 20:44:49 +0100 Subject: [PATCH 252/329] Cleanup PC policy, fix mirrors to delete first #463 --- .perlcriticrc | 1 - lib/MetaCPAN/Script/Mirrors.pm | 9 +++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/.perlcriticrc b/.perlcriticrc index b5ba8f14b..bcaa7a582 100644 --- a/.perlcriticrc +++ b/.perlcriticrc @@ -11,7 +11,6 @@ verbose = 11 [-RegularExpressions::RequireExtendedFormatting] [-RegularExpressions::RequireLineBoundaryMatching] [-Subroutines::ProhibitExplicitReturnUndef] -[-ValuesAndExpressions::ProhibitAccessOfPrivateData] [-ValuesAndExpressions::ProhibitNoisyQuotes] [-Variables::ProhibitPunctuationVars] diff --git a/lib/MetaCPAN/Script/Mirrors.pm b/lib/MetaCPAN/Script/Mirrors.pm index 6bfe8999d..366e36ba0 100644 --- a/lib/MetaCPAN/Script/Mirrors.pm +++ b/lib/MetaCPAN/Script/Mirrors.pm @@ -22,8 +22,13 @@ sub index_mirrors { my $ua = LWP::UserAgent->new; log_info { 'Getting mirrors.json file from ' . $self->cpan }; - my $json = $self->cpan->file( 'indices', 'mirrors.json' )->slurp; - my $type = $self->index->type('mirror'); + my $json = $self->cpan->file( 'indices', 'mirrors.json' )->slurp; + my $type = $self->index->type('mirror'); + + # Clear out everything in the index + # so don't end up with old mirrors + $type->delete; + my $mirrors = Cpanel::JSON::XS::decode_json($json); foreach my $mirror (@$mirrors) { $mirror->{location} From 20ea9e281cacdfffecad7488237ff78ab7b76bff Mon Sep 17 00:00:00 2001 From: Mickey Nasriachi Date: Tue, 26 Apr 2016 20:48:16 +0100 Subject: [PATCH 253/329] fixed typo --- t/model/archive.t | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/t/model/archive.t b/t/model/archive.t index 81f96b733..05dba01b3 100644 --- a/t/model/archive.t +++ b/t/model/archive.t @@ -82,7 +82,7 @@ subtest 'set extract dir' => sub { { my $archive = $CLASS->new( - file => facecpan_dir->file( + file => fakecpan_dir->file( 'authors/id/L/LO/LOCAL/Some-1.00-TRIAL.tar.gz'), extract_dir => $temp->dirname ); From 5ded7750433ebc405c7e8ed0a80d32bf9061e7e5 Mon Sep 17 00:00:00 2001 From: Mickey Nasriachi Date: Tue, 26 Apr 2016 20:51:47 +0100 Subject: [PATCH 254/329] fix test release/text-tabs-wrap --- t/release/text-tabs-wrap.t | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/t/release/text-tabs-wrap.t b/t/release/text-tabs-wrap.t index b86774365..de8497b80 100644 --- a/t/release/text-tabs-wrap.t +++ b/t/release/text-tabs-wrap.t @@ -32,8 +32,8 @@ test_release( distribution => 'Text-Tabs+Wrap', author => 'LOCAL', - authorized => \1, - first => \1, + authorized => 1, + first => 1, version => '2013.0523', # No modules. From dd45f61361cd1228222f1cf990d5ff9ecac7e236 Mon Sep 17 00:00:00 2001 From: Mickey Nasriachi Date: Tue, 26 Apr 2016 22:24:58 +0100 Subject: [PATCH 255/329] set indexed for modules in explicit 'provides' list --- lib/MetaCPAN/Document/File.pm | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/lib/MetaCPAN/Document/File.pm b/lib/MetaCPAN/Document/File.pm index 35a358a15..4445ff5b5 100644 --- a/lib/MetaCPAN/Document/File.pm +++ b/lib/MetaCPAN/Document/File.pm @@ -824,6 +824,16 @@ does not include any modules, the L property is true. sub set_indexed { my ( $self, $meta ) = @_; + # modules explicitly listed in 'provides' should be indexed + foreach my $mod ( @{ $self->module } ) { + if ( exists $meta->provides->{ $mod->name } + and $self->path eq $meta->provides->{ $mod->name }{file} ) + { + $self->_set_indexed(1); + return; + } + } + # files listed under 'other files' are not shown in a search if ( $self->is_in_other_files() ) { foreach my $mod ( @{ $self->module } ) { From f6696503b7d876fb7e74737df41cd0f90d083391 Mon Sep 17 00:00:00 2001 From: Mickey Nasriachi Date: Tue, 26 Apr 2016 22:25:44 +0100 Subject: [PATCH 256/329] fix test release/file-duplicates the module does pass CPAN::Meta::should_index_file check, so we shouldn't expect it to be indexed. --- t/release/file-duplicates.t | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/t/release/file-duplicates.t b/t/release/file-duplicates.t index d6a198bbb..efc1a487b 100644 --- a/t/release/file-duplicates.t +++ b/t/release/file-duplicates.t @@ -37,7 +37,7 @@ test_release( version => '0.993', version_numified => '0.993', authorized => 'true', - indexed => 'true', + indexed => 0, associated_pod => undef, } ], From 549d2d37bf697f9d371baafd3598f9e4d0153cd5 Mon Sep 17 00:00:00 2001 From: Mickey Nasriachi Date: Tue, 26 Apr 2016 23:18:26 +0100 Subject: [PATCH 257/329] fix test query (bool filter was replaced with bool query) --- t/lib/MetaCPAN/Tests/Release.pm | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/t/lib/MetaCPAN/Tests/Release.pm b/t/lib/MetaCPAN/Tests/Release.pm index d43b7435c..e319a5dc3 100644 --- a/t/lib/MetaCPAN/Tests/Release.pm +++ b/t/lib/MetaCPAN/Tests/Release.pm @@ -118,13 +118,15 @@ sub filter_files { my $release = $self->data; return [ - $self->index->type('file')->filter( + $self->index->type('file')->query( { - and => [ - { term => { 'author' => $release->author } }, - { term => { 'release' => $release->name } }, - @{ $add_filters || [] }, - ], + bool => { + must => [ + { term => { 'author' => $release->author } }, + { term => { 'release' => $release->name } }, + @{ $add_filters || [] }, + ], + } } )->size(100)->all ]; From c34ae314f9b8679af6465e56d8c4a37d144874f2 Mon Sep 17 00:00:00 2001 From: Leo Lapworth Date: Wed, 27 Apr 2016 21:36:52 +0100 Subject: [PATCH 258/329] use scratch disk if it exists --- lib/MetaCPAN/Model/Archive.pm | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/MetaCPAN/Model/Archive.pm b/lib/MetaCPAN/Model/Archive.pm index ef937e658..fa8d62ad9 100644 --- a/lib/MetaCPAN/Model/Archive.pm +++ b/lib/MetaCPAN/Model/Archive.pm @@ -77,7 +77,11 @@ has _tempdir => ( init_arg => undef, lazy => 1, default => sub { - return File::Temp->newdir; + + my $scratch_disk = '/mnt/scratch_disk'; + return -d $scratch_disk + ? File::Temp->newdir('/mnt/scratch_disk/tempXXXXX') + : File::Temp->newdir; }, ); From acf8fc3bb95d82292e5981115ef038a341337d38 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Wed, 27 Apr 2016 22:30:12 -0400 Subject: [PATCH 259/329] Stop special-casing Travis tmp dir. --- t/00_setup.t | 3 ++- t/lib/MetaCPAN/TestHelpers.pm | 3 +-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/t/00_setup.t b/t/00_setup.t index 84d4250a1..dcc617c07 100644 --- a/t/00_setup.t +++ b/t/00_setup.t @@ -22,7 +22,8 @@ use Test::More 0.96; use Test::More 0.96 (); use Test::Most; -ok( ( -d tmp_dir() ), 'var/tmp exists for testing' ); +my $tmp_dir = tmp_dir(); +ok( $tmp_dir->stat, "$tmp_dir exists for testing" ); my $server = MetaCPAN::TestServer->new; $server->setup; diff --git a/t/lib/MetaCPAN/TestHelpers.pm b/t/lib/MetaCPAN/TestHelpers.pm index d42e5c049..fc21f1e1f 100644 --- a/t/lib/MetaCPAN/TestHelpers.pm +++ b/t/lib/MetaCPAN/TestHelpers.pm @@ -104,8 +104,7 @@ sub get_config { } sub tmp_dir { - my $dir = dir( undef, ( $ENV{TRAVIS} ? 'tmp' : checkout_root() ), - 'var', 't', 'tmp' ); + my $dir = dir( checkout_root(), 'var', 't', 'tmp' ); $dir->mkpath; return $dir; } From c17d9e3c2697d280d3e09fb48b62eeef9f844cb2 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Wed, 27 Apr 2016 23:00:22 -0400 Subject: [PATCH 260/329] Use different path for release script under test harness. --- lib/MetaCPAN/Script/Release.pm | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/lib/MetaCPAN/Script/Release.pm b/lib/MetaCPAN/Script/Release.pm index 5c6b88aa6..80f11c75b 100644 --- a/lib/MetaCPAN/Script/Release.pm +++ b/lib/MetaCPAN/Script/Release.pm @@ -100,9 +100,14 @@ sub run { elsif ( $_ =~ /^https?:\/\// && CPAN::DistnameInfo->new($_)->cpanid ) { - my $d = CPAN::DistnameInfo->new($_); + my $d = CPAN::DistnameInfo->new($_); + + # XXX move path to config file my $file = $self->home->file( - qw(var tmp http authors), + ( + 'var', ( $ENV{HARNESS_ACTIVE} ? 't' : () ), + 'tmp', 'http', 'authors' + ), MetaCPAN::Util::author_dir( $d->cpanid ), $d->filename, ); From cb35849c5a68a8ad3f009ecb6ae11e4b1b5469f7 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Thu, 28 Apr 2016 09:02:55 -0400 Subject: [PATCH 261/329] Fixes hardcoded path used in test env. --- lib/MetaCPAN/Script/CPANTesters.pm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/MetaCPAN/Script/CPANTesters.pm b/lib/MetaCPAN/Script/CPANTesters.pm index 943a7c532..9374ffb43 100644 --- a/lib/MetaCPAN/Script/CPANTesters.pm +++ b/lib/MetaCPAN/Script/CPANTesters.pm @@ -57,10 +57,11 @@ has _bulk => ( }, ); +# XXX fix hardcoded path sub _build_db { my $self = shift; return $ENV{HARNESS_ACTIVE} - ? $self->home->file('t/var/cpantesters-release-fake.db.bz2') + ? $self->home->file('var/t/tmp/cpantesters-release-fake.db.bz2') : 'http://devel.cpantesters.org/release/release.db.bz2'; } From 264dcf0968e40c52edfcaf8fb483992cd358da6e Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Thu, 28 Apr 2016 09:08:22 -0400 Subject: [PATCH 262/329] Tidies Document::File::Set --- lib/MetaCPAN/Document/File/Set.pm | 51 ++++++++++++++++++------------- 1 file changed, 30 insertions(+), 21 deletions(-) diff --git a/lib/MetaCPAN/Document/File/Set.pm b/lib/MetaCPAN/Document/File/Set.pm index 27dd1d0d3..dd8ccbc1d 100644 --- a/lib/MetaCPAN/Document/File/Set.pm +++ b/lib/MetaCPAN/Document/File/Set.pm @@ -1,13 +1,22 @@ package MetaCPAN::Document::File::Set; + use Moose; + extends 'ElasticSearchX::Model::Document::Set'; -my @ROGUE_DISTRIBUTIONS - = qw(kurila perl_debug perl-5.005_02+apache1.3.3+modperl pod2texi perlbench spodcxx Bundle-Everything); +my @ROGUE_DISTRIBUTIONS = qw( + Bundle-Everything + kurila + perl-5.005_02+apache1.3.3+modperl + perlbench + perl_debug + pod2texi + spodcxx +); sub find { my ( $self, $module ) = @_; - my @candidates = $self->index->type("file")->filter( + my @candidates = $self->index->type('file')->filter( { bool => { must => [ @@ -29,8 +38,8 @@ sub find { } )->sort( [ - { 'date' => { order => "desc" } }, - { 'mime' => { order => "asc" } }, + { 'date' => { order => 'desc' } }, + { 'mime' => { order => 'asc' } }, { 'stat.mtime' => { order => 'desc' } } ] )->size(100)->all; @@ -58,7 +67,7 @@ sub find_pod { { author => $author, release => $release, - path => join( "/", @path ), + path => join( '/', @path ), } ); } @@ -119,7 +128,7 @@ cpanm Foo~<2 cpanm --dev Foo~<2 => status: -backpan, module.version_numified: lt: 2, sort_by: status,version_numified,date - $file->find_download_url( "Foo", { version => $version, dev => 0|1 }); + $file->find_download_url( 'Foo', { version => $version, dev => 0|1 }); Sorting: @@ -286,18 +295,18 @@ Find the history of a given module/documentation. sub history { my ( $self, $type, $module, @path ) = @_; my $search - = $type eq "module" ? $self->filter( + = $type eq 'module' ? $self->filter( { nested => { - path => "module", + path => 'module', query => { constant_score => { filter => { bool => { must => [ - { term => { "module.authorized" => \1 } }, - { term => { "module.indexed" => \1 } }, - { term => { "module.name" => $module } }, + { term => { 'module.authorized' => \1 } }, + { term => { 'module.indexed' => \1 } }, + { term => { 'module.name' => $module } }, ] } } @@ -306,12 +315,12 @@ sub history { } } ) - : $type eq "file" ? $self->filter( + : $type eq 'file' ? $self->filter( { bool => { must => [ - { term => { "file.path" => join( "/", @path ) } }, - { term => { "file.distribution" => $module } }, + { term => { 'file.path' => join( '/', @path ) } }, + { term => { 'file.distribution' => $module } }, ] } } @@ -320,19 +329,19 @@ sub history { { bool => { must => [ - { term => { "file.documentation" => $module } }, - { term => { "file.indexed" => \1 } }, - { term => { "file.authorized" => \1 } }, + { term => { 'file.documentation' => $module } }, + { term => { 'file.indexed' => \1 } }, + { term => { 'file.authorized' => \1 } }, ] } } ); - return $search->sort( [ { "file.date" => "desc" } ] ); + return $search->sort( [ { 'file.date' => 'desc' } ] ); } sub autocomplete { my ( $self, @terms ) = @_; - my $query = join( " ", @terms ); + my $query = join( q{ }, @terms ); return $self unless $query; return $self->search_type('dfs_query_then_fetch')->query( @@ -344,7 +353,7 @@ sub autocomplete { type => 'most_fields', fields => [ 'documentation', 'documentation.*' ], analyzer => 'camelcase', - minimum_should_match => "80%" + minimum_should_match => '80%' }, }, filter => { From 541fb7fbc3a21e21a826d0cbd937d4bfae5b5d76 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Thu, 28 Apr 2016 09:09:38 -0400 Subject: [PATCH 263/329] s/file\.date/date/ --- lib/MetaCPAN/Document/File/Set.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/MetaCPAN/Document/File/Set.pm b/lib/MetaCPAN/Document/File/Set.pm index dd8ccbc1d..797701c3c 100644 --- a/lib/MetaCPAN/Document/File/Set.pm +++ b/lib/MetaCPAN/Document/File/Set.pm @@ -336,7 +336,7 @@ sub history { } } ); - return $search->sort( [ { 'file.date' => 'desc' } ] ); + return $search->sort( [ { date => 'desc' } ] ); } sub autocomplete { From f5240508e535d279f2e7311163c6cd98e09b15ba Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Thu, 28 Apr 2016 22:03:55 -0400 Subject: [PATCH 264/329] Fix test path for opening cpantesters.db --- lib/MetaCPAN/Script/CPANTesters.pm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/MetaCPAN/Script/CPANTesters.pm b/lib/MetaCPAN/Script/CPANTesters.pm index 9374ffb43..79750b106 100644 --- a/lib/MetaCPAN/Script/CPANTesters.pm +++ b/lib/MetaCPAN/Script/CPANTesters.pm @@ -29,13 +29,13 @@ has force_refresh => ( default => 0, ); +# XXX move path to config has mirror_file => ( is => 'ro', isa => File, default => sub { - $ENV{HARNESS_ACTIVE} - ? shift->home->file(qw(t var tmp cpantesters.db)) - : shift->home->file(qw( var tmp cpantesters.db)); + shift->home->file( 'var', ( $ENV{HARNESS_ACTIVE} ? 't' : () ), + 'tmp', 'cpantesters.db' ); }, coerce => 1, ); From 4d357e4019f0664b504695ff20c6083e7a81cced Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Thu, 28 Apr 2016 22:09:55 -0400 Subject: [PATCH 265/329] Fixes truth test in t/release/weblint++-1.15.t --- t/release/weblint++-1.15.t | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/t/release/weblint++-1.15.t b/t/release/weblint++-1.15.t index 49a3986a7..d8e051a95 100644 --- a/t/release/weblint++-1.15.t +++ b/t/release/weblint++-1.15.t @@ -13,8 +13,8 @@ test_release( distribution => 'weblint', author => 'LOCAL', - authorized => \1, - first => \1, + authorized => 1, + first => 1, version => '1.15', # No modules. From 171368c657b27634d831c64c80182a5a38da535a Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Thu, 28 Apr 2016 22:11:45 -0400 Subject: [PATCH 266/329] Fix truth tests in t/release/www-tumblr-0.t --- t/release/www-tumblr-0.t | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/t/release/www-tumblr-0.t b/t/release/www-tumblr-0.t index 0135a85cd..3934086f3 100644 --- a/t/release/www-tumblr-0.t +++ b/t/release/www-tumblr-0.t @@ -10,8 +10,8 @@ test_release( name => 'WWW-Tumblr-0', distribution => 'WWW-Tumblr', author => 'LOCAL', - authorized => \1, - first => \1, + authorized => 1, + first => 1, version => '0', provides => [ 'WWW::Tumblr', ], From 266f5aee347410f6f7ba9281d2fc95d38474f490 Mon Sep 17 00:00:00 2001 From: Mickey Nasriachi Date: Fri, 29 Apr 2016 05:34:29 +0100 Subject: [PATCH 267/329] fix some more queries + tidy --- lib/MetaCPAN/Document/Release.pm | 2 +- lib/MetaCPAN/Script/Latest.pm | 2 +- lib/MetaCPAN/Script/Pagerank.pm | 6 +++--- lib/MetaCPAN/Server/Controller/Source.pm | 17 +++++++++-------- t/release/scripts.t | 4 ++-- 5 files changed, 16 insertions(+), 15 deletions(-) diff --git a/lib/MetaCPAN/Document/Release.pm b/lib/MetaCPAN/Document/Release.pm index 46c360376..f7c460c90 100644 --- a/lib/MetaCPAN/Document/Release.pm +++ b/lib/MetaCPAN/Document/Release.pm @@ -265,7 +265,7 @@ sub _build_first { }, # REINDEX: after a full reindex, the above line is to replaced with: - # { term => { first => \1 } }, + # { term => { first => 1 } }, # currently, the "first" property is not computed on all releases # since this feature has not been around when last reindexed ] diff --git a/lib/MetaCPAN/Script/Latest.pm b/lib/MetaCPAN/Script/Latest.pm index 7ea85371c..567d8bae9 100644 --- a/lib/MetaCPAN/Script/Latest.pm +++ b/lib/MetaCPAN/Script/Latest.pm @@ -62,7 +62,7 @@ sub run { return if ( !@filter && $self->distribution ); - my @module_filters = { term => { 'module.indexed' => \1 } }; + my @module_filters = { term => { 'module.indexed' => 1 } }; push @module_filters, @filter ? { terms => { "module.name" => \@filter } } : { exists => { field => "module.name" } }; diff --git a/lib/MetaCPAN/Script/Pagerank.pm b/lib/MetaCPAN/Script/Pagerank.pm index 7bd8ac11d..6025a92c6 100644 --- a/lib/MetaCPAN/Script/Pagerank.pm +++ b/lib/MetaCPAN/Script/Pagerank.pm @@ -77,9 +77,9 @@ sub get_recent_modules { query => { match_all => {} }, filter => { and => [ - { term => { 'file.status' => 'latest' } }, - { term => { 'file.module.indexed' => \1 } }, - { term => { 'file.module.authorized' => \1 } }, + { term => { 'status' => 'latest' } }, + { term => { 'module.indexed' => 1 } }, + { term => { 'module.authorized' => 1 } }, ] } } diff --git a/lib/MetaCPAN/Server/Controller/Source.pm b/lib/MetaCPAN/Server/Controller/Source.pm index 21dd8ac77..574b1d923 100644 --- a/lib/MetaCPAN/Server/Controller/Source.pm +++ b/lib/MetaCPAN/Server/Controller/Source.pm @@ -45,12 +45,12 @@ sub get : Chained('index') : PathPart('') : Args { and => [ { exists => { - field => 'file.module.name', + field => 'module.name', } }, { term => { - 'file.module.indexed' => \1 + 'module.indexed' => 1 } }, ] @@ -59,10 +59,10 @@ sub get : Chained('index') : PathPart('') : Args { and => [ { exists => { - field => 'file.pod.analyzed', + field => 'pod.analyzed', } }, - { term => { 'file.indexed' => \1 } }, + { term => { indexed => 1 } }, ] }, ] @@ -87,10 +87,11 @@ sub get : Chained('index') : PathPart('') : Args { = "distribution/$file->{distribution}/$file->{path}"; } elsif ( !$module->{authorized} || !$module->{indexed} ) { - $links->{$name} - = 'release/' - . ( $module->{associated_pod} - || "$author/$release/$file->{path}" ); + $links->{$name} = 'release/' . ( + $module->{associated_pod} + + || "$author/$release/$file->{path}" + ); } } $c->stash->{link_mappings} = $links; diff --git a/t/release/scripts.t b/t/release/scripts.t index f147fd9e0..8c5ac08b2 100644 --- a/t/release/scripts.t +++ b/t/release/scripts.t @@ -47,12 +47,12 @@ is( $release->main_module, 'Scripts', 'main_module ok' ); [ { documentation => 'catalyst', - indexed => \1, + indexed => 1, mime => 'text/x-script.perl' }, { documentation => 'starman', - indexed => \1, + indexed => 1, mime => 'text/x-script.perl' } ], From 68f291adeeaefc6cdd30aa9d0b248630ebf76f52 Mon Sep 17 00:00:00 2001 From: Mickey Nasriachi Date: Fri, 29 Apr 2016 10:19:53 +0100 Subject: [PATCH 268/329] fix test server/controller/search/reverse_dependencies --- t/server/controller/search/reverse_dependencies.t | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/t/server/controller/search/reverse_dependencies.t b/t/server/controller/search/reverse_dependencies.t index e23e0569e..3e395d459 100644 --- a/t/server/controller/search/reverse_dependencies.t +++ b/t/server/controller/search/reverse_dependencies.t @@ -44,9 +44,9 @@ sub check_search_results { is( $res->code, $code, "code $code" ) or return; - my $json = decode_json_ok($res); return unless $code == 200; + my $json = decode_json_ok($res); $json = $json->{hits}{hits} if $json->{hits}; is scalar @$json, @$rdeps, 'got expected number of releases'; is_deeply [ @@ -76,9 +76,8 @@ test_psgi app, sub { POST $k, Content => encode_json( { - query => { match_all => {} }, - filter => - { term => { 'release.status' => 'latest' }, }, + query => { match_all => {} }, + filter => { term => { status => 'latest' }, }, } ) ), @@ -108,14 +107,13 @@ test_psgi app, sub { ok( my $res = $cb->( POST - '/search/reverse_dependencies/Multiple-Modules?fields=release.distribution', + '/search/reverse_dependencies/Multiple-Modules?fields=distribution', Content => encode_json( { query => { match_all => {} }, filter => { term => { - 'release.distribution' => - 'Multiple-Modules-RDeps-A' + distribution => 'Multiple-Modules-RDeps-A' }, }, } From 82dbd65743929caf21aada1a00ce52462c4df071 Mon Sep 17 00:00:00 2001 From: Mickey Nasriachi Date: Fri, 29 Apr 2016 12:32:04 +0100 Subject: [PATCH 269/329] set indexed for provided modules (as checked), not the file --- lib/MetaCPAN/Document/File.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/MetaCPAN/Document/File.pm b/lib/MetaCPAN/Document/File.pm index 4445ff5b5..e1f24353e 100644 --- a/lib/MetaCPAN/Document/File.pm +++ b/lib/MetaCPAN/Document/File.pm @@ -829,7 +829,7 @@ sub set_indexed { if ( exists $meta->provides->{ $mod->name } and $self->path eq $meta->provides->{ $mod->name }{file} ) { - $self->_set_indexed(1); + $mod->_set_indexed(1); return; } } From 6087f9814d8c93f0ba1314b5041d6ec2b19de2ea Mon Sep 17 00:00:00 2001 From: Mickey Nasriachi Date: Fri, 29 Apr 2016 12:32:25 +0100 Subject: [PATCH 270/329] corrected queries --- lib/MetaCPAN/Document/File/Set.pm | 67 ++++++++++++++++++------------- 1 file changed, 40 insertions(+), 27 deletions(-) diff --git a/lib/MetaCPAN/Document/File/Set.pm b/lib/MetaCPAN/Document/File/Set.pm index 797701c3c..7c2c0ebe4 100644 --- a/lib/MetaCPAN/Document/File/Set.pm +++ b/lib/MetaCPAN/Document/File/Set.pm @@ -20,9 +20,9 @@ sub find { { bool => { must => [ - { term => { 'indexed' => \1, } }, - { term => { 'authorized' => \1 } }, - { term => { 'status' => 'latest', } }, + { term => { indexed => 1, } }, + { term => { authorized => 1 } }, + { term => { status => 'latest', } }, ], should => [ { term => { 'documentation' => $module } }, @@ -85,10 +85,10 @@ sub find_provided_by { { bool => { must => [ - { term => { 'release' => $release->{name} } }, - { term => { 'author' => $release->{author} } }, - { term => { 'file.module.authorized' => 1 } }, - { term => { 'file.module.indexed' => 1 } }, + { term => { 'release' => $release->{name} } }, + { term => { 'author' => $release->{author} } }, + { term => { 'module.authorized' => 1 } }, + { term => { 'module.indexed' => 1 } }, ] } } @@ -167,8 +167,8 @@ sub find_download_url { filter => { bool => { must => [ - { term => { 'module.authorized' => \1 } }, - { term => { 'module.indexed' => \1 } }, + { term => { 'module.authorized' => 1 } }, + { term => { 'module.indexed' => 1 } }, { term => { 'module.name' => $module } }, $self->_version_filters($version) ] @@ -295,7 +295,8 @@ Find the history of a given module/documentation. sub history { my ( $self, $type, $module, @path ) = @_; my $search - = $type eq 'module' ? $self->filter( + = $type eq "module" + ? $self->query( { nested => { path => 'module', @@ -304,9 +305,9 @@ sub history { filter => { bool => { must => [ - { term => { 'module.authorized' => \1 } }, - { term => { 'module.indexed' => \1 } }, - { term => { 'module.name' => $module } }, + { term => { "module.authorized" => 1 } }, + { term => { "module.indexed" => 1 } }, + { term => { "module.name" => $module } }, ] } } @@ -315,26 +316,39 @@ sub history { } } ) - : $type eq 'file' ? $self->filter( + : $type eq "file" ? $self->query( { bool => { must => [ - { term => { 'file.path' => join( '/', @path ) } }, - { term => { 'file.distribution' => $module } }, + { term => { path => join( "/", @path ) } }, + { term => { distribution => $module } }, ] } } ) - : $self->filter( + + # XXX: to fix: no filtering on 'release' so this query + # will produce modules matching duplications. -- Mickey + : $type eq "documentation" ? $self->query( { bool => { must => [ - { term => { 'file.documentation' => $module } }, - { term => { 'file.indexed' => \1 } }, - { term => { 'file.authorized' => \1 } }, + { match => { documentation => $module } }, + { term => { indexed => 1 } }, + { term => { authorized => 1 } }, ] } } + ) + + # clearly, one doesn't know what they want in this case + : $self->query( + bool => { + must => [ + { term => { indexed => 1 } }, + { term => { authorized => 1 } }, + ] + } ); return $search->sort( [ { date => 'desc' } ] ); } @@ -359,16 +373,15 @@ sub autocomplete { filter => { bool => { must => [ - { exists => { field => 'documentation' } }, - { term => { 'indexed' => \1 } }, - { term => { 'status' => 'latest' } }, - { term => { 'authorized' => \1 } } + { exists => { field => 'documentation' } }, + { term => { status => 'latest' } }, + { term => { indexed => 1 } }, + { term => { authorized => 1 } } ], must_not => [ { - terms => { - 'distribution' => \@ROGUE_DISTRIBUTIONS - } + terms => + { distribution => \@ROGUE_DISTRIBUTIONS } }, ], } From 8a7d9c5e99c33868e47817a17c5bb4ff6e6cf884 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Fri, 29 Apr 2016 18:49:50 -0400 Subject: [PATCH 271/329] Ensure METACPAN_SERVER_CONFIG_LOCAL_SUFFIX is set on Travis and in local test ENV. --- .travis.yml | 3 +++ bin/prove | 2 ++ lib/MetaCPAN/Server/Test.pm | 6 ------ metacpan_server_testing.conf | 4 ++-- 4 files changed, 7 insertions(+), 8 deletions(-) diff --git a/.travis.yml b/.travis.yml index 3af311a02..4388de916 100644 --- a/.travis.yml +++ b/.travis.yml @@ -26,6 +26,9 @@ env: # that the snapshot was built from. - DEPLOYMENT_PERL_VERSION=5.18 + # Instantiate Catalyst models using metacpan_server_testing.conf + - METACPAN_SERVER_CONFIG_LOCAL_SUFFIX=testing + before_install: - sudo service elasticsearch stop && curl -O -L https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-2.3.0.deb && sudo dpkg -i --force-confnew elasticsearch-2.3.0.deb && sudo service elasticsearch start diff --git a/bin/prove b/bin/prove index 57381c1ec..dcbe7f3eb 100755 --- a/bin/prove +++ b/bin/prove @@ -2,4 +2,6 @@ export EMAIL_SENDER_TRANSPORT=Test export ES=localhost:9900 +export METACPAN_SERVER_CONFIG_LOCAL_SUFFIX=testing + `dirname "$0"`/run prove -It/lib -lvr "$@" diff --git a/lib/MetaCPAN/Server/Test.pm b/lib/MetaCPAN/Server/Test.pm index 3a80ce4ea..a91b00aad 100644 --- a/lib/MetaCPAN/Server/Test.pm +++ b/lib/MetaCPAN/Server/Test.pm @@ -14,8 +14,6 @@ our @EXPORT = qw( test_psgi app ); -BEGIN { $ENV{METACPAN_SERVER_CONFIG_LOCAL_SUFFIX} = 'testing'; } - sub _prepare_user_test_data { ok( my $user = MetaCPAN::Server->model('User::Account')->put( @@ -82,10 +80,6 @@ sub model { # ABSTRACT: Test class for MetaCPAN::Web -=head1 ENVIRONMENTAL VARIABLES - -Sets C to C. - =head1 EXPORTS =head2 GET diff --git a/metacpan_server_testing.conf b/metacpan_server_testing.conf index d2f7a490b..59e200d54 100644 --- a/metacpan_server_testing.conf +++ b/metacpan_server_testing.conf @@ -1,5 +1,5 @@ -cpan t/var/tmp/fakecpan -source_base t/var/tmp/source +cpan var/t/tmp/fakecpan +source_base var/t/tmp/source servers __ENV(ES)__ From fc12b19e163086e393b80c146ce5c3859b1e46c0 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Fri, 29 Apr 2016 22:19:11 -0400 Subject: [PATCH 272/329] Fixes path to fixture cpantesters data. --- lib/MetaCPAN/Script/CPANTesters.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/MetaCPAN/Script/CPANTesters.pm b/lib/MetaCPAN/Script/CPANTesters.pm index 79750b106..e4db7039a 100644 --- a/lib/MetaCPAN/Script/CPANTesters.pm +++ b/lib/MetaCPAN/Script/CPANTesters.pm @@ -61,7 +61,7 @@ has _bulk => ( sub _build_db { my $self = shift; return $ENV{HARNESS_ACTIVE} - ? $self->home->file('var/t/tmp/cpantesters-release-fake.db.bz2') + ? $self->home->file('t/var/cpantesters-release-fake.db.bz2') : 'http://devel.cpantesters.org/release/release.db.bz2'; } From ca63dabc5895a68c118b3e7fdcb68b3357b5e633 Mon Sep 17 00:00:00 2001 From: Mickey Nasriachi Date: Fri, 29 Apr 2016 13:36:44 +0100 Subject: [PATCH 273/329] query cleanups --- lib/MetaCPAN/Script/Pagerank.pm | 4 ++-- lib/MetaCPAN/Script/ReindexDist.pm | 7 +++---- lib/MetaCPAN/Script/Watcher.pm | 4 ++-- lib/MetaCPAN/Server/Controller/Changes.pm | 6 ++---- 4 files changed, 9 insertions(+), 12 deletions(-) diff --git a/lib/MetaCPAN/Script/Pagerank.pm b/lib/MetaCPAN/Script/Pagerank.pm index 6025a92c6..97bb4b74d 100644 --- a/lib/MetaCPAN/Script/Pagerank.pm +++ b/lib/MetaCPAN/Script/Pagerank.pm @@ -29,7 +29,7 @@ sub run { and => [ { term => { - 'release.dependency.phase' => 'runtime' + 'dependency.phase' => 'runtime' } }, { term => { status => 'latest' } }, @@ -87,7 +87,7 @@ sub get_recent_modules { }, size => 1000, fields => [ - qw(release distribution file.module.authorized file.module.indexed file.module.name) + qw(release distribution module.authorized module.indexed module.name) ], scroll => '1m', ); diff --git a/lib/MetaCPAN/Script/ReindexDist.pm b/lib/MetaCPAN/Script/ReindexDist.pm index f542ccc18..21035cf8e 100644 --- a/lib/MetaCPAN/Script/ReindexDist.pm +++ b/lib/MetaCPAN/Script/ReindexDist.pm @@ -34,10 +34,9 @@ has releases => ( sub _build_releases { my ($self) = @_; - return [ - $self->index->type('release')->filter( - { term => { 'release.distribution' => $self->distribution } } - )->fields( [qw( download_url )] )->sort( ['date'] )->size(5000) + return [ $self->index->type('release') + ->filter( { term => { distribution => $self->distribution } } ) + ->fields( [qw( download_url )] )->sort( ['date'] )->size(5000) ->all ]; } diff --git a/lib/MetaCPAN/Script/Watcher.pm b/lib/MetaCPAN/Script/Watcher.pm index 464a6de7a..819460cb8 100644 --- a/lib/MetaCPAN/Script/Watcher.pm +++ b/lib/MetaCPAN/Script/Watcher.pm @@ -205,13 +205,13 @@ sub reindex_release { and => [ { term => { - 'file.release' => + 'release' => $release->{_source}->{name} } }, { term => { - 'file.author' => + 'author' => $release->{_source}->{author} } } diff --git a/lib/MetaCPAN/Server/Controller/Changes.pm b/lib/MetaCPAN/Server/Controller/Changes.pm index d22d50b67..a9b9812fe 100644 --- a/lib/MetaCPAN/Server/Controller/Changes.pm +++ b/lib/MetaCPAN/Server/Controller/Changes.pm @@ -47,7 +47,7 @@ sub get : Chained('index') : PathPart('') : Args(2) { { term => { distribution => 'perl' } }, { term => { - 'file.name' => 'perldelta.pod' + 'name' => 'perldelta.pod' } }, ] @@ -61,9 +61,7 @@ sub get : Chained('index') : PathPart('') : Args(2) { { or => [ map { - { term => - { 'file.name' => $_ } - } + { term => { 'name' => $_ } } } @candidates ] } From e4af04d0e42513a1bb335a1c6778bdc178476c84 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Sat, 30 Apr 2016 23:08:10 -0400 Subject: [PATCH 274/329] Destroy and recreate tmp dir on each test setup run. --- t/00_setup.t | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/t/00_setup.t b/t/00_setup.t index dcc617c07..2e1929b34 100644 --- a/t/00_setup.t +++ b/t/00_setup.t @@ -22,7 +22,11 @@ use Test::More 0.96; use Test::More 0.96 (); use Test::Most; +# Ensure we're starting fresh my $tmp_dir = tmp_dir(); +$tmp_dir->rmtree; +$tmp_dir->mkpath; + ok( $tmp_dir->stat, "$tmp_dir exists for testing" ); my $server = MetaCPAN::TestServer->new; @@ -31,14 +35,6 @@ $server->setup; my $config = get_config(); $config->{es} = $server->es_client; -foreach my $test_dir ( $config->{cpan}, $config->{source_base} ) { - next unless $test_dir; - my $dir = dir($test_dir); - if ( -e $dir->absolute ) { - ok( $dir->rmtree, "remove old test dir: $dir" ); - } -} - my $mod_faker = 'Module::Faker::Dist::WithPerl'; eval "require $mod_faker" or die $@; ## no critic (StringyEval) From 6f01dfbdb211543eb2a97df93d2215bfbf4f2173 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Sat, 30 Apr 2016 23:11:45 -0400 Subject: [PATCH 275/329] Remove some debugging from CPANTesters test. --- lib/MetaCPAN/Script/CPANTesters.pm | 2 -- 1 file changed, 2 deletions(-) diff --git a/lib/MetaCPAN/Script/CPANTesters.pm b/lib/MetaCPAN/Script/CPANTesters.pm index e4db7039a..b2f02fb7b 100644 --- a/lib/MetaCPAN/Script/CPANTesters.pm +++ b/lib/MetaCPAN/Script/CPANTesters.pm @@ -114,7 +114,6 @@ sub index_reports { $sth->execute; my @bulk; - use DDP; while ( my $row_from_db = $sth->fetchrow_hashref ) { my $release = join( '-', $row_from_db->{dist}, $row_from_db->{version} ); @@ -143,7 +142,6 @@ sub index_reports { next unless ($bulk); my %tests = map { $_ => $row_from_db->{$_} } qw(fail pass na unknown); - p %tests; $self->_bulk->update( { doc => { tests => \%tests }, From a46c49be82409e978f23b71fa852ee1c60c2eae8 Mon Sep 17 00:00:00 2001 From: Mickey Nasriachi Date: Sat, 30 Apr 2016 17:13:58 +0100 Subject: [PATCH 276/329] tidy --- lib/MetaCPAN/Script/ReindexDist.pm | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lib/MetaCPAN/Script/ReindexDist.pm b/lib/MetaCPAN/Script/ReindexDist.pm index 21035cf8e..b3c315641 100644 --- a/lib/MetaCPAN/Script/ReindexDist.pm +++ b/lib/MetaCPAN/Script/ReindexDist.pm @@ -37,8 +37,7 @@ sub _build_releases { return [ $self->index->type('release') ->filter( { term => { distribution => $self->distribution } } ) ->fields( [qw( download_url )] )->sort( ['date'] )->size(5000) - ->all - ]; + ->all ]; } has sources => ( From e972150891fcae6d51195888209ff2e16caac1fd Mon Sep 17 00:00:00 2001 From: Mickey Nasriachi Date: Sun, 1 May 2016 10:36:52 +0100 Subject: [PATCH 277/329] fix query --- lib/MetaCPAN/Server/Controller/Source.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/MetaCPAN/Server/Controller/Source.pm b/lib/MetaCPAN/Server/Controller/Source.pm index 574b1d923..210e78abf 100644 --- a/lib/MetaCPAN/Server/Controller/Source.pm +++ b/lib/MetaCPAN/Server/Controller/Source.pm @@ -69,7 +69,7 @@ sub get : Chained('index') : PathPart('') : Args { }, ], } - )->fields( [qw( module path documentation distribution )] ) + )->fields( [qw( module.name path documentation distribution )] ) ->size(5000)->all->{hits}->{hits}; for my $file ( map { $_->{fields} } @$modules ) { my $name = $file->{documentation} or next; From 516d6799418ae3967c4de996af29f22addbdfc03 Mon Sep 17 00:00:00 2001 From: Joel Berger Date: Sat, 30 Apr 2016 17:07:00 +0100 Subject: [PATCH 278/329] accept gzipped river data GH #460 --- lib/MetaCPAN/Script/River.pm | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/lib/MetaCPAN/Script/River.pm b/lib/MetaCPAN/Script/River.pm index ebc98beb7..2df867a1c 100644 --- a/lib/MetaCPAN/Script/River.pm +++ b/lib/MetaCPAN/Script/River.pm @@ -53,7 +53,14 @@ sub retrieve_river_summaries { $self->handle_error( $resp->status_line ) unless $resp->is_success; - return decode_json $resp->content; + # cleanup headers if .json.gz is served as gzip type + # rather than json encoded with gzip + if ( $resp->header('Content-Type') eq 'application/x-gzip' ) { + $resp->header( 'Content-Type' => 'application/json' ); + $resp->header( 'Content-Encoding' => 'gzip' ); + } + + return decode_json $resp->decoded_content; } __PACKAGE__->meta->make_immutable; From 4b168df7cbbf305df0238f36f1bf1404e7a8697c Mon Sep 17 00:00:00 2001 From: Joel Berger Date: Sun, 1 May 2016 16:46:36 +0100 Subject: [PATCH 279/329] use neilb's actual url for river data --- lib/MetaCPAN/Script/River.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/MetaCPAN/Script/River.pm b/lib/MetaCPAN/Script/River.pm index 2df867a1c..2f097b25c 100644 --- a/lib/MetaCPAN/Script/River.pm +++ b/lib/MetaCPAN/Script/River.pm @@ -15,7 +15,7 @@ has river_url => ( isa => Uri, coerce => 1, required => 1, - default => 'https://neilb.org/FIXME', + default => 'http://neilb.org/river-of-cpan.json.gz', ); has _ua => ( From bf1028a4ba29889ab755c05f2785fba80f462519 Mon Sep 17 00:00:00 2001 From: Mickey Nasriachi Date: Tue, 3 May 2016 12:41:46 +0100 Subject: [PATCH 280/329] a couple of test fixes --- lib/MetaCPAN/Script/First.pm | 2 ++ lib/MetaCPAN/Server/View/JSON.pm | 4 ++-- t/release/moose.t | 4 ++-- t/release/multiple-modules.t | 4 ++-- 4 files changed, 8 insertions(+), 6 deletions(-) diff --git a/lib/MetaCPAN/Script/First.pm b/lib/MetaCPAN/Script/First.pm index 0dcc81bb1..fab954c98 100644 --- a/lib/MetaCPAN/Script/First.pm +++ b/lib/MetaCPAN/Script/First.pm @@ -36,6 +36,8 @@ sub run { "no release found for distribution @{[$distribution->name]}"; }; } + + 1; } __PACKAGE__->meta->make_immutable; diff --git a/lib/MetaCPAN/Server/View/JSON.pm b/lib/MetaCPAN/Server/View/JSON.pm index 5f6010a07..0c9119e65 100644 --- a/lib/MetaCPAN/Server/View/JSON.pm +++ b/lib/MetaCPAN/Server/View/JSON.pm @@ -14,8 +14,8 @@ sub encode_json($) { my ( $self, $c, $data ) = @_; my $encoder = $c->req->looks_like_browser - ? Cpanel::JSON::XS->new->utf8->pretty - : Cpanel::JSON::XS->new->utf8; + ? Cpanel::JSON::XS->new->utf8->allow_blessed->pretty + : Cpanel::JSON::XS->new->utf8->allow_blessed; $encoder->encode( exists $data->{rest} ? $data->{rest} : $data ); } diff --git a/t/release/moose.t b/t/release/moose.t index 562cad30d..2eed5a678 100644 --- a/t/release/moose.t +++ b/t/release/moose.t @@ -43,7 +43,7 @@ ok( $binary->binary, 'is binary' ); ok( my $ppport = $idx->type('file') - ->filter( { term => { documentation => 'ppport.h' } } )->first, + ->filter( { match => { documentation => 'ppport.h' } } )->first, 'get ppport.h' ); @@ -82,7 +82,7 @@ $signature = $idx->type('file')->filter( and => [ { term => { name => 'SIGNATURE' } }, { exists => { field => 'documentation' } }, - { term => { indexed => \1 } }, + { term => { indexed => 1 } }, ] } )->first; diff --git a/t/release/multiple-modules.t b/t/release/multiple-modules.t index 98e165dc7..267c6de93 100644 --- a/t/release/multiple-modules.t +++ b/t/release/multiple-modules.t @@ -114,8 +114,8 @@ ok( my $file = $idx->type('file')->filter( { and => [ - { term => { release => 'Multiple-Modules-0.1' } }, - { term => { documentation => 'Moose' } } + { term => { release => 'Multiple-Modules-0.1' } }, + { match => { documentation => 'Moose' } } ] } )->first, From 5f8005ede69517b52c27ae79396eb6b8773a1f80 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Tue, 3 May 2016 22:13:06 -0400 Subject: [PATCH 281/329] Moves MetaCPAN::Server::Test to t/lib --- {lib => t/lib}/MetaCPAN/Server/Test.pm | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {lib => t/lib}/MetaCPAN/Server/Test.pm (100%) diff --git a/lib/MetaCPAN/Server/Test.pm b/t/lib/MetaCPAN/Server/Test.pm similarity index 100% rename from lib/MetaCPAN/Server/Test.pm rename to t/lib/MetaCPAN/Server/Test.pm From 9226ca26dbb9e2b2650707d3149e1909492eb4e6 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Tue, 3 May 2016 22:14:19 -0400 Subject: [PATCH 282/329] Be specific about imports in river.t --- t/script/river.t | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/t/script/river.t b/t/script/river.t index b94640486..287647bc6 100644 --- a/t/script/river.t +++ b/t/script/river.t @@ -4,12 +4,12 @@ use warnings; use lib 't/lib'; use Git::Helpers qw( checkout_root ); -use MetaCPAN::Script::River; -use MetaCPAN::Script::Runner; -use MetaCPAN::Server::Test; -use MetaCPAN::TestHelpers; +use MetaCPAN::Script::River (); +use MetaCPAN::Script::Runner (); +use MetaCPAN::Server::Test qw( app GET test_psgi ); +use MetaCPAN::TestHelpers qw( decode_json_ok ); use Test::More; -use URI; +use URI (); my $config = MetaCPAN::Script::Runner::build_config; From 2ff97584974c6256b6f9840d5d4fc3c06a2dc632 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Tue, 3 May 2016 22:42:12 -0400 Subject: [PATCH 283/329] Rework river test logic. --- t/script/river.t | 49 ++++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 25 deletions(-) diff --git a/t/script/river.t b/t/script/river.t index 287647bc6..a48c05734 100644 --- a/t/script/river.t +++ b/t/script/river.t @@ -1,8 +1,6 @@ use strict; use warnings; -use lib 't/lib'; - use Git::Helpers qw( checkout_root ); use MetaCPAN::Script::River (); use MetaCPAN::Script::Runner (); @@ -34,28 +32,29 @@ my %expect = ( } ); -test_psgi app, sub { - my $cb = shift; - for my $dist ( keys %expect ) { - my $test = $expect{$dist}; - subtest "Check $dist" => sub { - my $url = "/distribution/$dist"; - ok( my $res = $cb->( GET $url ), "GET $url" ); - - # TRAVIS 5.18 - is( $res->code, 200, "code 200" ); - is( - $res->header('content-type'), - 'application/json; charset=utf-8', - 'Content-type' - ); - my $json = decode_json_ok($res); - - # TRAVIS 5.18 - is_deeply( $json->{river}, $test, - "$dist river summary roundtrip" ); - }; - } -}; +my $test = Plack::Test->create( app() ); + +for my $dist ( keys %expect ) { + my $expected = $expect{$dist}; + subtest "Check $dist" => sub { + my $url = "/distribution/$dist"; + my $res = $test->request( GET $url ); + diag "GET $url"; + + # TRAVIS 5.18 + is( $res->code, 200, "code 200" ); + is( + $res->header('content-type'), + 'application/json; charset=utf-8', + 'Content-type' + ); + my $json = decode_json_ok($res); + + # TRAVIS 5.18 + is_deeply( $json->{river}, $expected, + "$dist river summary roundtrip" ); + }; + last; +} done_testing(); From e4c856e4f449182389f07f0d0ed6b56e07d4b18a Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Wed, 4 May 2016 13:11:45 -0400 Subject: [PATCH 284/329] Don't use q{} in Path component of Catalyst routes. haarg++ --- lib/MetaCPAN/Server/Controller.pm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/MetaCPAN/Server/Controller.pm b/lib/MetaCPAN/Server/Controller.pm index 5b341579c..5dd0337ff 100644 --- a/lib/MetaCPAN/Server/Controller.pm +++ b/lib/MetaCPAN/Server/Controller.pm @@ -75,7 +75,7 @@ sub mapping : Path('_mapping') { ); } -sub get : Path(q{}) : Args(1) { +sub get : Path('') : Args(1) { my ( $self, $c, $id ) = @_; my $file = $self->model($c)->raw->get($id); if ( !defined $file ) { @@ -86,7 +86,7 @@ sub get : Path(q{}) : Args(1) { ['The requested field(s) could not be found'] ); } -sub all : Path(q{}) : Args(0) : ActionClass('Deserialize') { +sub all : Path('') : Args(0) : ActionClass('Deserialize') { my ( $self, $c ) = @_; $c->req->params->{q} ||= '*' unless ( $c->req->data ); $c->forward('search'); From 6d8a0979c8c3be36dc3090528314853c0cb3bdb3 Mon Sep 17 00:00:00 2001 From: Mickey Nasriachi Date: Wed, 4 May 2016 20:39:06 +0100 Subject: [PATCH 285/329] correct the autocomplete query + test (WIP, see #470) --- lib/MetaCPAN/Document/File/Set.pm | 2 +- t/server/controller/search/autocomplete.t | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/MetaCPAN/Document/File/Set.pm b/lib/MetaCPAN/Document/File/Set.pm index 7c2c0ebe4..460939733 100644 --- a/lib/MetaCPAN/Document/File/Set.pm +++ b/lib/MetaCPAN/Document/File/Set.pm @@ -388,7 +388,7 @@ sub autocomplete { } } } - )->sort( [ '_score', 'documentation' ] ); + )->sort( [ '_score', 'module.name.lowercase' ] ); } __PACKAGE__->meta->make_immutable; diff --git a/t/server/controller/search/autocomplete.t b/t/server/controller/search/autocomplete.t index ee80ea886..a0694e65a 100644 --- a/t/server/controller/search/autocomplete.t +++ b/t/server/controller/search/autocomplete.t @@ -23,12 +23,12 @@ test_psgi app, sub { Multiple::Modules::A Multiple::Modules::B Multiple::Modules::RDeps - Multiple::Modules::Tester Multiple::Modules::RDeps::A Multiple::Modules::RDeps::Deprecated + Multiple::Modules::Tester ) ], - 'results are sorted by module name length' + 'results are sorted lexically by module name + length' or diag( Test::More::explain($got) ); } }; From bed83eb3b2a2fa811b297bbd03cb3fc3dd4cda9f Mon Sep 17 00:00:00 2001 From: Mickey Nasriachi Date: Wed, 4 May 2016 21:27:21 +0100 Subject: [PATCH 286/329] fixed missing 'level' value + test t/server/controller/changes.t --- lib/MetaCPAN/Document/File.pm | 9 +++++---- lib/MetaCPAN/Server/Controller/Changes.pm | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/lib/MetaCPAN/Document/File.pm b/lib/MetaCPAN/Document/File.pm index e1f24353e..178e9bc6a 100644 --- a/lib/MetaCPAN/Document/File.pm +++ b/lib/MetaCPAN/Document/File.pm @@ -384,10 +384,11 @@ has a level of C<0>). =cut has level => ( - is => 'ro', - isa => Int, - lazy => 1, - builder => '_build_level', + required => 1, + is => 'ro', + isa => Int, + lazy => 1, + builder => '_build_level', ); sub _build_level { diff --git a/lib/MetaCPAN/Server/Controller/Changes.pm b/lib/MetaCPAN/Server/Controller/Changes.pm index a9b9812fe..8a2dac975 100644 --- a/lib/MetaCPAN/Server/Controller/Changes.pm +++ b/lib/MetaCPAN/Server/Controller/Changes.pm @@ -57,7 +57,7 @@ sub get : Chained('index') : PathPart('') : Args(2) { { and => [ { term => { level => 0 } }, - { term => { directory => \0 } }, + { term => { directory => 0 } }, { or => [ map { From 4e8982fc89cf5b72bd6b4e93e4bf39ef1128bb84 Mon Sep 17 00:00:00 2001 From: Mickey Nasriachi Date: Wed, 4 May 2016 21:57:36 +0100 Subject: [PATCH 287/329] fix test t/script/queue.t --- t/script/queue.t | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/t/script/queue.t b/t/script/queue.t index 6524a8063..984559c4e 100644 --- a/t/script/queue.t +++ b/t/script/queue.t @@ -13,6 +13,6 @@ my $queue = MetaCPAN::Script::Queue->new_with_options($config); $queue->run; is( $queue->stats->{inactive_jobs}, - 52, '52 files added to queue for indexing' ); + 54, '54 files added to queue for indexing' ); done_testing(); From e03447d4b1ac6561e0fc0fe1fb8612ec1ce78d8d Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Wed, 4 May 2016 23:50:03 -0400 Subject: [PATCH 288/329] Add more test descriptions to Util tests. --- t/util.t | 77 +++++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 57 insertions(+), 20 deletions(-) diff --git a/t/util.t b/t/util.t index 5a00ff02c..0c8ad378d 100644 --- a/t/util.t +++ b/t/util.t @@ -5,26 +5,63 @@ use CPAN::Meta; use MetaCPAN::Util qw( numify_version strip_pod ); use Test::Most; -is( numify_version(1), 1.000 ); -is( numify_version('010'), 10.000 ); -is( numify_version('v2.1.1'), 2.001001 ); -is( numify_version(undef), 0.000 ); -is( numify_version('LATEST'), 0.000 ); -is( numify_version('0.20_8'), 0.208 ); -is( numify_version('0.20_88'), 0.2088 ); -is( numify_version('0.208_8'), 0.2088 ); -is( numify_version('0.20_108'), 0.20108 ); -is( numify_version('v0.9_9'), 0.099 ); - -lives_ok { is( version('2a'), 2 ) }; -lives_ok { is( version('V0.01'), 'v0.01' ) }; -lives_ok { is( version('0.99_1'), '0.99_1' ) }; -lives_ok { is( version('0.99.01'), 'v0.99.01' ) }; - -is( strip_pod('hello L foo'), 'hello link foo' ); -is( strip_pod('hello L foo'), 'hello section in Module foo' ); -is( strip_pod('for L'), 'for Dist::Zilla' ); -is( strip_pod('without a leading C<$>.'), 'without a leading $.' ); +{ + my %versions = ( + '010' => 10, + '0.20_8' => 0.208, + '0.208_8' => 0.2088, + '0.20_88' => 0.2088, + 1 => 1, + LATEST => 0, + undef => 0, + 'v0.9_9' => 0.099, + 'v2.1.1' => 2.001001, + 'v2.0.0' => 2.0, + ); + + foreach my $before ( sort keys %versions ) { + is( numify_version($before), $versions{$before}, + "$before => $versions{$before}" ); + } +} + +{ + my %versions = ( + '2a' => 2, + 'V0.01' => 'v0.01', + '0.99_1' => '0.99_1', + '0.99.01' => 'v0.99.01', + 'v1.2' => 'v1.2', + ); + foreach my $before ( sort keys %versions ) { + lives_ok { + is( version($before), $versions{$before}, + "$before => $versions{$before}" ) + } + "$before => $versions{$before} does not die"; + } +} + +is( + strip_pod('hello L foo'), + 'hello link foo', + 'strip_pod strips http links' +); +is( + strip_pod('hello L foo'), + 'hello section in Module foo', + 'strip_pod strips internal links' +); +is( + strip_pod('for L'), + 'for Dist::Zilla', + 'strip_pod strips module links' +); +is( + strip_pod('without a leading C<$>.'), + 'without a leading $.', + 'strip_pod strips C<>' +); sub version { CPAN::Meta->new( From dc9c05fcb2fe37db0e8def6c34a9c112e422e18a Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Wed, 4 May 2016 23:52:42 -0400 Subject: [PATCH 289/329] Import extract_section in Util tests. --- t/util.t | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/t/util.t b/t/util.t index 0c8ad378d..23787dce0 100644 --- a/t/util.t +++ b/t/util.t @@ -2,7 +2,7 @@ use strict; use warnings; use CPAN::Meta; -use MetaCPAN::Util qw( numify_version strip_pod ); +use MetaCPAN::Util qw( extract_section numify_version strip_pod ); use Test::Most; { @@ -87,7 +87,7 @@ Some data about a named pipe EOF - my $section = MetaCPAN::Util::extract_section( $content, 'NAME' ); + my $section = extract_section( $content, 'NAME' ); is( $section, 'Some::Thing - Test', 'NAME matched correct head1 section' ); } @@ -102,7 +102,7 @@ Some description =cut EOF - my $section = MetaCPAN::Util::extract_section( $content, 'NAME' ); + my $section = extract_section( $content, 'NAME' ); is( $section, undef, 'NAMED did not match requested section NAME' ); } From 4c41513979f92ebe3d490277ce5fac14f270983e Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Wed, 4 May 2016 23:59:31 -0400 Subject: [PATCH 290/329] numify_version already returns 0 if version isn't a true value. --- lib/MetaCPAN/Document/File.pm | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/lib/MetaCPAN/Document/File.pm b/lib/MetaCPAN/Document/File.pm index 178e9bc6a..7977fe783 100644 --- a/lib/MetaCPAN/Document/File.pm +++ b/lib/MetaCPAN/Document/File.pm @@ -11,7 +11,7 @@ use Encode; use List::AllUtils qw( any ); use MetaCPAN::Document::Module; use MetaCPAN::Types qw(:all); -use MetaCPAN::Util; +use MetaCPAN::Util qw(numify_version); use Plack::MIME; use Pod::Text; use Try::Tiny; @@ -600,9 +600,7 @@ has version_numified => ( sub _build_version_numified { my $self = shift; - return $self->version - ? MetaCPAN::Util::numify_version( $self->version ) - : 0; + return numify_version( $self->version ); } =head2 mime From 8631fa15f53eaa6a2138144777ebe305d39b52cb Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Thu, 5 May 2016 00:00:43 -0400 Subject: [PATCH 291/329] Explicitly import catch/try. --- lib/MetaCPAN/Document/File.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/MetaCPAN/Document/File.pm b/lib/MetaCPAN/Document/File.pm index 7977fe783..464c3e024 100644 --- a/lib/MetaCPAN/Document/File.pm +++ b/lib/MetaCPAN/Document/File.pm @@ -14,7 +14,7 @@ use MetaCPAN::Types qw(:all); use MetaCPAN::Util qw(numify_version); use Plack::MIME; use Pod::Text; -use Try::Tiny; +use Try::Tiny qw( catch try ); use URI::Escape (); Plack::MIME->add_type( '.t' => 'text/x-script.perl' ); From 7dcdf8cefd8028e06a2ed09f994d1fc554f083da Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Thu, 5 May 2016 00:11:46 -0400 Subject: [PATCH 292/329] Make version default more succinct. --- lib/MetaCPAN/Model/Release.pm | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/lib/MetaCPAN/Model/Release.pm b/lib/MetaCPAN/Model/Release.pm index 7bca8651a..b2c4d92e8 100644 --- a/lib/MetaCPAN/Model/Release.pm +++ b/lib/MetaCPAN/Model/Release.pm @@ -11,7 +11,7 @@ use File::Find (); use Log::Contextual qw( :log :dlog ); use MetaCPAN::Model::Archive; use MetaCPAN::Types qw(ArrayRef AbsFile Str); -use MetaCPAN::Util (); +use MetaCPAN::Util qw( fix_version); use Module::Metadata 1.000012 (); # Improved package detection. use MooseX::StrictConstructor; use Path::Class (); @@ -112,8 +112,7 @@ has version => ( isa => Str, lazy => 1, default => sub { - my $self = shift; - return MetaCPAN::Util::fix_version( $self->distinfo->version ); + return fix_version( shift->distinfo->version ); }, ); From fcf31664e93e39484ed11c56c935ee8b6305b99f Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Thu, 5 May 2016 00:12:42 -0400 Subject: [PATCH 293/329] Move version_numified from builder to default. --- lib/MetaCPAN/Document/Release.pm | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/lib/MetaCPAN/Document/Release.pm b/lib/MetaCPAN/Document/Release.pm index f7c460c90..3fb122277 100644 --- a/lib/MetaCPAN/Document/Release.pm +++ b/lib/MetaCPAN/Document/Release.pm @@ -7,7 +7,7 @@ use Moose; use ElasticSearchX::Model::Document; use MetaCPAN::Types qw(:all); -use MetaCPAN::Util; +use MetaCPAN::Util qw( numify_version ); =head1 PROPERTIES @@ -146,7 +146,9 @@ has version_numified => ( is => 'ro', isa => Num, lazy => 1, - builder => '_build_version_numified', + default => sub { + return numify_version( shift->version ); + }, ); has resources => ( @@ -239,10 +241,6 @@ has changes_file => ( writer => '_set_changes_file', ); -sub _build_version_numified { - return MetaCPAN::Util::numify_version( shift->version ); -} - sub _build_download_url { my $self = shift; return From 5e86fe1c0a209f00488103db1315949126b5409d Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Thu, 5 May 2016 00:24:47 -0400 Subject: [PATCH 294/329] Bumps version of Code::TidyAll. --- cpanfile | 2 +- cpanfile.snapshot | 64 +++++++++++++++++++++++------------------------ 2 files changed, 33 insertions(+), 33 deletions(-) diff --git a/cpanfile b/cpanfile index ad8c8edd6..0b7f4509e 100644 --- a/cpanfile +++ b/cpanfile @@ -188,5 +188,5 @@ test_requires 'Test::Routine', '0.012'; test_requires 'Test::Routine::Util', '0'; test_requires 'Test::Vars'; -author_requires 'Code::TidyAll'; +author_requires 'Code::TidyAll', '>= 0.47'; author_requires 'Plack::Middleware::Rewrite'; diff --git a/cpanfile.snapshot b/cpanfile.snapshot index f65832e7f..5fab414d1 100644 --- a/cpanfile.snapshot +++ b/cpanfile.snapshot @@ -1105,38 +1105,38 @@ DISTRIBUTIONS strict 0 vars 0 warnings 0 - Code-TidyAll-0.46 - pathname: D/DR/DROLSKY/Code-TidyAll-0.46.tar.gz - provides: - Code::TidyAll 0.46 - Code::TidyAll::Cache 0.46 - Code::TidyAll::CacheModel 0.46 - Code::TidyAll::CacheModel::Shared 0.46 - Code::TidyAll::Config::INI::Reader 0.46 - Code::TidyAll::Git::Precommit 0.46 - Code::TidyAll::Git::Prereceive 0.46 - Code::TidyAll::Git::Util 0.46 - Code::TidyAll::Plugin 0.46 - Code::TidyAll::Plugin::CSSUnminifier 0.46 - Code::TidyAll::Plugin::JSBeautify 0.46 - Code::TidyAll::Plugin::JSHint 0.46 - Code::TidyAll::Plugin::JSLint 0.46 - Code::TidyAll::Plugin::JSON 0.46 - Code::TidyAll::Plugin::MasonTidy 0.46 - Code::TidyAll::Plugin::PHPCodeSniffer 0.46 - Code::TidyAll::Plugin::PerlCritic 0.46 - Code::TidyAll::Plugin::PerlTidy 0.46 - Code::TidyAll::Plugin::PerlTidySweet 0.46 - Code::TidyAll::Plugin::PodChecker 0.46 - Code::TidyAll::Plugin::PodSpell 0.46 - Code::TidyAll::Plugin::PodTidy 0.46 - Code::TidyAll::Plugin::SortLines 0.46 - Code::TidyAll::Result 0.46 - Code::TidyAll::Role::Tempdir 0.46 - Code::TidyAll::SVN::Precommit 0.46 - Code::TidyAll::SVN::Util 0.46 - Code::TidyAll::Util::Zglob 0.46 - Test::Code::TidyAll 0.46 + Code-TidyAll-0.47 + pathname: D/DR/DROLSKY/Code-TidyAll-0.47.tar.gz + provides: + Code::TidyAll 0.47 + Code::TidyAll::Cache 0.47 + Code::TidyAll::CacheModel 0.47 + Code::TidyAll::CacheModel::Shared 0.47 + Code::TidyAll::Config::INI::Reader 0.47 + Code::TidyAll::Git::Precommit 0.47 + Code::TidyAll::Git::Prereceive 0.47 + Code::TidyAll::Git::Util 0.47 + Code::TidyAll::Plugin 0.47 + Code::TidyAll::Plugin::CSSUnminifier 0.47 + Code::TidyAll::Plugin::JSBeautify 0.47 + Code::TidyAll::Plugin::JSHint 0.47 + Code::TidyAll::Plugin::JSLint 0.47 + Code::TidyAll::Plugin::JSON 0.47 + Code::TidyAll::Plugin::MasonTidy 0.47 + Code::TidyAll::Plugin::PHPCodeSniffer 0.47 + Code::TidyAll::Plugin::PerlCritic 0.47 + Code::TidyAll::Plugin::PerlTidy 0.47 + Code::TidyAll::Plugin::PerlTidySweet 0.47 + Code::TidyAll::Plugin::PodChecker 0.47 + Code::TidyAll::Plugin::PodSpell 0.47 + Code::TidyAll::Plugin::PodTidy 0.47 + Code::TidyAll::Plugin::SortLines 0.47 + Code::TidyAll::Result 0.47 + Code::TidyAll::Role::Tempdir 0.47 + Code::TidyAll::SVN::Precommit 0.47 + Code::TidyAll::SVN::Util 0.47 + Code::TidyAll::Util::Zglob 0.47 + Test::Code::TidyAll 0.47 requirements: Capture::Tiny 0 Config::INI::Reader 0 From 892cebf033d61abeaa18330ffd82b201fdac5fa3 Mon Sep 17 00:00:00 2001 From: Mickey Nasriachi Date: Thu, 5 May 2016 10:00:25 +0100 Subject: [PATCH 295/329] fix 'first' setting don't default to 'true' for 'first', wait till later in the release entry creation and then check it. (otherwise we get multiple 'first' releases per distribution if we index them together) --- lib/MetaCPAN/Document/Release.pm | 11 ++++++----- lib/MetaCPAN/Script/Release.pm | 4 ++++ 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/lib/MetaCPAN/Document/Release.pm b/lib/MetaCPAN/Document/Release.pm index 3fb122277..4f72d256c 100644 --- a/lib/MetaCPAN/Document/Release.pm +++ b/lib/MetaCPAN/Document/Release.pm @@ -216,8 +216,7 @@ has first => ( is => 'ro', required => 1, isa => Bool, - lazy => 1, - builder => '_build_first', + default => 0, writer => '_set_first', ); @@ -249,9 +248,9 @@ sub _build_download_url { . $self->archive; } -sub _build_first { - my $self = shift; - $self->index->type('release')->filter( +sub set_first { + my $self = shift; + my $is_first = $self->index->type('release')->filter( { and => [ { term => { distribution => $self->distribution } }, @@ -271,6 +270,8 @@ sub _build_first { )->count ? 0 : 1; + + $self->_set_first($is_first); } __PACKAGE__->meta->make_immutable; diff --git a/lib/MetaCPAN/Script/Release.pm b/lib/MetaCPAN/Script/Release.pm index 80f11c75b..25381f12d 100644 --- a/lib/MetaCPAN/Script/Release.pm +++ b/lib/MetaCPAN/Script/Release.pm @@ -271,6 +271,10 @@ sub import_archive { local @ARGV = ( qw(latest --distribution), $document->distribution ); MetaCPAN::Script::Runner->run; } + + # update 'first' value + $document->set_first; + $document->put; } sub _build_backpan_index { From f7fd58540df89ca0e5f4b5f15d6b19b312e78b4a Mon Sep 17 00:00:00 2001 From: Mickey Nasriachi Date: Thu, 5 May 2016 11:07:15 +0100 Subject: [PATCH 296/329] use match_phrase. fix test release/moose in document matching when we want to keep the order of words, we need to use `match_phrase` instead of `match`. --- lib/MetaCPAN/Document/File/Set.pm | 6 +++--- t/release/moose.t | 6 ++++-- t/release/multiple-modules.t | 4 ++-- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/lib/MetaCPAN/Document/File/Set.pm b/lib/MetaCPAN/Document/File/Set.pm index 460939733..d5d5ac480 100644 --- a/lib/MetaCPAN/Document/File/Set.pm +++ b/lib/MetaCPAN/Document/File/Set.pm @@ -333,9 +333,9 @@ sub history { { bool => { must => [ - { match => { documentation => $module } }, - { term => { indexed => 1 } }, - { term => { authorized => 1 } }, + { match_phrase => { documentation => $module } }, + { term => { indexed => 1 } }, + { term => { authorized => 1 } }, ] } } diff --git a/t/release/moose.t b/t/release/moose.t index 2eed5a678..8ae6ea89a 100644 --- a/t/release/moose.t +++ b/t/release/moose.t @@ -22,7 +22,8 @@ is( $moose[1]->main_module, 'Moose', 'main_module ok' ); ok( my $faq = $idx->type('file') - ->filter( { match => { documentation => 'Moose::FAQ' } } )->first, + ->filter( { match_phrase => { documentation => 'Moose::FAQ' } } ) + ->first, 'get Moose::FAQ' ); @@ -43,7 +44,8 @@ ok( $binary->binary, 'is binary' ); ok( my $ppport = $idx->type('file') - ->filter( { match => { documentation => 'ppport.h' } } )->first, + ->filter( { match_phrase => { documentation => 'ppport.h' } } ) + ->first, 'get ppport.h' ); diff --git a/t/release/multiple-modules.t b/t/release/multiple-modules.t index 267c6de93..55fbb1d75 100644 --- a/t/release/multiple-modules.t +++ b/t/release/multiple-modules.t @@ -114,8 +114,8 @@ ok( my $file = $idx->type('file')->filter( { and => [ - { term => { release => 'Multiple-Modules-0.1' } }, - { match => { documentation => 'Moose' } } + { term => { release => 'Multiple-Modules-0.1' } }, + { match_phrase => { documentation => 'Moose' } } ] } )->first, From 502525a10faf18959e94fbbd8f76565e335045d5 Mon Sep 17 00:00:00 2001 From: Mickey Nasriachi Date: Thu, 5 May 2016 12:10:26 +0100 Subject: [PATCH 297/329] fix test t/server/controller/author.t --- t/server/controller/author.t | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/t/server/controller/author.t b/t/server/controller/author.t index 3fa24a7e5..2d6f513ae 100644 --- a/t/server/controller/author.t +++ b/t/server/controller/author.t @@ -90,12 +90,11 @@ test_psgi app, sub { should => [ { term => { - 'release.status' => 'latest' + 'status' => 'latest' } }, { - term => - { 'author.pauseid' => 'DOY' } + term => { 'pauseid' => 'DOY' } } ] } From d92ad0104229889c42d47dc52c5ecfbf909b5ee6 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Thu, 5 May 2016 08:51:46 -0400 Subject: [PATCH 298/329] Possibly temporary fix to versions in CPANTesters import. --- lib/MetaCPAN/Script/CPANTesters.pm | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lib/MetaCPAN/Script/CPANTesters.pm b/lib/MetaCPAN/Script/CPANTesters.pm index b2f02fb7b..fcdba14ab 100644 --- a/lib/MetaCPAN/Script/CPANTesters.pm +++ b/lib/MetaCPAN/Script/CPANTesters.pm @@ -99,6 +99,11 @@ sub index_reports { my %releases; while ( my $release = $scroll->next ) { my $data = $release->{_source}; + + # XXX temporary hack. This may be masking issues with release + # versions. (Olaf) + $data->{version} =~ s{\Av}{}; + $releases{ join( '-', grep {defined} $data->{distribution}, From 3c0c4eb737f176e583944124d5cf64b9d030a5d9 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Thu, 5 May 2016 08:54:28 -0400 Subject: [PATCH 299/329] Revert "Possibly temporary fix to versions in CPANTesters import." This reverts commit d92ad0104229889c42d47dc52c5ecfbf909b5ee6. --- lib/MetaCPAN/Script/CPANTesters.pm | 5 ----- 1 file changed, 5 deletions(-) diff --git a/lib/MetaCPAN/Script/CPANTesters.pm b/lib/MetaCPAN/Script/CPANTesters.pm index fcdba14ab..b2f02fb7b 100644 --- a/lib/MetaCPAN/Script/CPANTesters.pm +++ b/lib/MetaCPAN/Script/CPANTesters.pm @@ -99,11 +99,6 @@ sub index_reports { my %releases; while ( my $release = $scroll->next ) { my $data = $release->{_source}; - - # XXX temporary hack. This may be masking issues with release - # versions. (Olaf) - $data->{version} =~ s{\Av}{}; - $releases{ join( '-', grep {defined} $data->{distribution}, From 7bd8d01c72a7d5430c347d08ada1d304e2693f50 Mon Sep 17 00:00:00 2001 From: Leo Lapworth Date: Thu, 5 May 2016 19:23:35 +0100 Subject: [PATCH 300/329] drop invalid author lat/lon info --- lib/MetaCPAN/Script/Author.pm | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/lib/MetaCPAN/Script/Author.pm b/lib/MetaCPAN/Script/Author.pm index 8124a5ec8..cc877ad3c 100644 --- a/lib/MetaCPAN/Script/Author.pm +++ b/lib/MetaCPAN/Script/Author.pm @@ -87,6 +87,25 @@ sub index_authors { ]; my $author = $type->new_document($put); $author->gravatar_url; # build gravatar_url + + # Do not import lat / lon's in the wrong order, or just invalid + if ( my $loc = $author->{location} ) { + + my $lat = $loc->[1]; + my $lon = $loc->[0]; + + if ( $lat > 90 or $lat < -90 ) { + + # Invalid latitude + delete $author->{location}; + } + elsif ( $lon > 180 or $lon < -180 ) { + + # Invalid longitude + delete $author->{location}; + } + } + $bulk->put($author); } $self->index->refresh; From 810a462eaf7335d7d252cbca8c14ec0a0cdd1660 Mon Sep 17 00:00:00 2001 From: Leo Lapworth Date: Thu, 5 May 2016 21:50:03 +0100 Subject: [PATCH 301/329] Validate author info is correct format --- lib/MetaCPAN/Script/Author.pm | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/lib/MetaCPAN/Script/Author.pm b/lib/MetaCPAN/Script/Author.pm index cc877ad3c..1773dc15d 100644 --- a/lib/MetaCPAN/Script/Author.pm +++ b/lib/MetaCPAN/Script/Author.pm @@ -54,7 +54,7 @@ sub index_authors { } map { $_->{_source} } @{ $dates->{hits}->{hits} } }; - my $bulk = $self->model->bulk( size => 20 ); + my $bulk = $self->model->bulk( size => 100 ); while ( my ( $pauseid, $data ) = each %$authors ) { my ( $name, $email, $homepage, $asciiname ) @@ -85,6 +85,11 @@ sub index_authors { map { URI->new($_)->canonical } grep {$_} @{ $put->{website} } ]; + + # Now check the format we have is actually correct + my @errors = MetaCPAN::Document::Author->validate($put); + next if scalar @errors; + my $author = $type->new_document($put); $author->gravatar_url; # build gravatar_url @@ -106,6 +111,7 @@ sub index_authors { } } + # Only try put if this is a valid format $bulk->put($author); } $self->index->refresh; @@ -114,17 +120,23 @@ sub index_authors { sub author_config { my ( $self, $pauseid, $dates ) = @_; + my $fallback = $dates->{$pauseid} ? undef : {}; + my $dir = $self->cpan->subdir( 'authors', MetaCPAN::Util::author_dir($pauseid) ); + my @files; opendir( my $dh, $dir ) || return $fallback; + + # Get the most recent version my ($file) = sort { $dir->file($b)->stat->mtime <=> $dir->file($a)->stat->mtime } grep {m/author-.*?\.json/} readdir($dh); return $fallback unless ($file); $file = $dir->file($file); return $fallback if !-e $file; + my $mtime = DateTime->from_epoch( epoch => $file->stat->mtime ); if ( $dates->{$pauseid} && $dates->{$pauseid} >= $mtime ) { From 44f146a33f2fd6717c0def7e36e65db751ce35c0 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Thu, 5 May 2016 10:02:04 -0400 Subject: [PATCH 302/329] Revert "Revert "Possibly temporary fix to versions in CPANTesters import."" This reverts commit 3c0c4eb737f176e583944124d5cf64b9d030a5d9. --- lib/MetaCPAN/Script/CPANTesters.pm | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lib/MetaCPAN/Script/CPANTesters.pm b/lib/MetaCPAN/Script/CPANTesters.pm index b2f02fb7b..fcdba14ab 100644 --- a/lib/MetaCPAN/Script/CPANTesters.pm +++ b/lib/MetaCPAN/Script/CPANTesters.pm @@ -99,6 +99,11 @@ sub index_reports { my %releases; while ( my $release = $scroll->next ) { my $data = $release->{_source}; + + # XXX temporary hack. This may be masking issues with release + # versions. (Olaf) + $data->{version} =~ s{\Av}{}; + $releases{ join( '-', grep {defined} $data->{distribution}, From 2031c63d70ea0e833573d469e5c658f72168a664 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Thu, 5 May 2016 10:11:06 -0400 Subject: [PATCH 303/329] Don't perform regex on undef value. --- lib/MetaCPAN/Script/CPANTesters.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/MetaCPAN/Script/CPANTesters.pm b/lib/MetaCPAN/Script/CPANTesters.pm index fcdba14ab..63e52f66d 100644 --- a/lib/MetaCPAN/Script/CPANTesters.pm +++ b/lib/MetaCPAN/Script/CPANTesters.pm @@ -102,7 +102,7 @@ sub index_reports { # XXX temporary hack. This may be masking issues with release # versions. (Olaf) - $data->{version} =~ s{\Av}{}; + $data->{version} =~ s{\Av}{} if $data->{version}; $releases{ join( '-', From 0aa1b743e797881792389237c0501f6d7e9c0fba Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Thu, 5 May 2016 11:18:36 -0400 Subject: [PATCH 304/329] Minor cleanup. --- lib/MetaCPAN/Script/CPANTesters.pm | 6 +++--- t/release/p-1.0.20.t | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/MetaCPAN/Script/CPANTesters.pm b/lib/MetaCPAN/Script/CPANTesters.pm index 63e52f66d..635fc84ca 100644 --- a/lib/MetaCPAN/Script/CPANTesters.pm +++ b/lib/MetaCPAN/Script/CPANTesters.pm @@ -78,13 +78,13 @@ sub index_reports { my $index = $self->index->name; my $ua = LWP::UserAgent->new; - log_info { "Mirroring " . $self->db }; + log_info { 'Mirroring ' . $self->db }; my $db = $self->mirror_file; $ua->mirror( $self->db, "$db.bz2" ) unless $self->skip_download; if ( -e $db && stat($db)->mtime >= stat("$db.bz2")->mtime ) { - log_info {"DB hasn't been modified"}; + log_info {'DB hasn\'t been modified'}; return unless $self->force_refresh; } @@ -135,7 +135,7 @@ sub index_reports { $bulk = 1; } - # maybe us Data::Compare instead + # maybe use Data::Compare instead for my $condition (qw(fail pass na unknown)) { last if $bulk; if ( ( $tester_results->{$condition} || 0 ) diff --git a/t/release/p-1.0.20.t b/t/release/p-1.0.20.t index 76dbb657a..b32a13275 100644 --- a/t/release/p-1.0.20.t +++ b/t/release/p-1.0.20.t @@ -3,7 +3,7 @@ use warnings; use lib 't/lib'; -use MetaCPAN::TestHelpers; +use MetaCPAN::TestHelpers qw( test_release ); use Ref::Util qw( is_hashref ); use Test::More; From 9fe8662b771e7c4461ea304b9e2a597ad717d2ee Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Thu, 5 May 2016 21:51:56 -0400 Subject: [PATCH 305/329] CPANTesters script needs to search on the release type, not _every_ type. --- lib/MetaCPAN/Script/CPANTesters.pm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/MetaCPAN/Script/CPANTesters.pm b/lib/MetaCPAN/Script/CPANTesters.pm index 635fc84ca..c7c79f536 100644 --- a/lib/MetaCPAN/Script/CPANTesters.pm +++ b/lib/MetaCPAN/Script/CPANTesters.pm @@ -74,9 +74,8 @@ sub run { sub index_reports { my $self = shift; - my $es = $self->model->es; - my $index = $self->index->name; - my $ua = LWP::UserAgent->new; + my $es = $self->model->es; + my $ua = LWP::UserAgent->new; log_info { 'Mirroring ' . $self->db }; my $db = $self->mirror_file; @@ -94,6 +93,7 @@ sub index_reports { index => $self->index->name, search_type => 'scan', size => '500', + type => 'release', ); my %releases; From 8fe1967c0d71857a46fc021607347c27ef694186 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Thu, 5 May 2016 21:52:16 -0400 Subject: [PATCH 306/329] Don't alter the version when checking it. --- lib/MetaCPAN/Script/CPANTesters.pm | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/lib/MetaCPAN/Script/CPANTesters.pm b/lib/MetaCPAN/Script/CPANTesters.pm index c7c79f536..8caa4cc7d 100644 --- a/lib/MetaCPAN/Script/CPANTesters.pm +++ b/lib/MetaCPAN/Script/CPANTesters.pm @@ -102,12 +102,11 @@ sub index_reports { # XXX temporary hack. This may be masking issues with release # versions. (Olaf) - $data->{version} =~ s{\Av}{} if $data->{version}; + my $version = $data->{version}; + $version =~ s{\Av}{} if $version; $releases{ - join( '-', - grep {defined} $data->{distribution}, - $data->{version} ) + join( '-', grep {defined} $data->{distribution}, $version ) } = $data; } From c47dad6561ec1a2626e4479d579ee70113a4e69c Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Thu, 5 May 2016 21:52:58 -0400 Subject: [PATCH 307/329] s/bulk/insert_ok/ --- lib/MetaCPAN/Script/CPANTesters.pm | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/MetaCPAN/Script/CPANTesters.pm b/lib/MetaCPAN/Script/CPANTesters.pm index 8caa4cc7d..ab40b79c5 100644 --- a/lib/MetaCPAN/Script/CPANTesters.pm +++ b/lib/MetaCPAN/Script/CPANTesters.pm @@ -126,25 +126,25 @@ sub index_reports { # there's a cpantesters dist we haven't indexed next unless ($release_doc); - my $bulk = 0; + my $insert_ok = 0; my $tester_results = $release_doc->{tests}; if ( !$tester_results ) { $tester_results = {}; - $bulk = 1; + $insert_ok = 1; } # maybe use Data::Compare instead for my $condition (qw(fail pass na unknown)) { - last if $bulk; + last if $insert_ok; if ( ( $tester_results->{$condition} || 0 ) != $row_from_db->{$condition} ) { - $bulk = 1; + $insert_ok = 1; } } - next unless ($bulk); + next unless ($insert_ok); my %tests = map { $_ => $row_from_db->{$_} } qw(fail pass na unknown); $self->_bulk->update( { From 1488c64ad86716c66f87c2224d12ceab6b34dfce Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Thu, 5 May 2016 21:57:46 -0400 Subject: [PATCH 308/329] You can now index a single release when testing. --- docs/testing.md | 11 +++++++++++ t/lib/MetaCPAN/TestServer.pm | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/docs/testing.md b/docs/testing.md index dd608f9be..5c6c2ce42 100644 --- a/docs/testing.md +++ b/docs/testing.md @@ -12,3 +12,14 @@ You can enable Elasticsearch tracing when running tests at the command line: ES_TRACE=1 ./bin/prove t/darkpan.t You'll then find extensive logging information in `es.log`, at the top level of your Git checkout. + +## Indexing a Single Release + +If you want to speed up your debugging, you can index a solitary release using +the `MC_RELEASE` environment variable. + + MC_RELEASE=var/t/tmp/fakecpan/authors/id/L/LO/LOCAL/P-1.0.20.tar.gz ./bin/prove t/00_setup.t + +Or combine this with a test specific to the release. + + MC_RELEASE=var/t/tmp/fakecpan/authors/id/L/LO/LOCAL/P-1.0.20.tar.gz ./bin/prove t/00_setup.t t/release/p-1.0.20.t diff --git a/t/lib/MetaCPAN/TestServer.pm b/t/lib/MetaCPAN/TestServer.pm index bce610571..ad7a810ca 100644 --- a/t/lib/MetaCPAN/TestServer.pm +++ b/t/lib/MetaCPAN/TestServer.pm @@ -167,7 +167,7 @@ sub index_releases { my $self = shift; my %args = @_; - local @ARGV = ( 'release', $self->_cpan_dir, ); + local @ARGV = ( 'release', $ENV{MC_RELEASE} ? $ENV{MC_RELEASE} : $self->_cpan_dir ); ok( MetaCPAN::Script::Release->new_with_options( %{ $self->_config }, %args )->run, From a72cd2fa413c68ed7e92ffb408f464c6160a7706 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Thu, 5 May 2016 23:57:17 -0400 Subject: [PATCH 309/329] Not every user is an author. --- lib/MetaCPAN/Model/User/Account.pm | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/lib/MetaCPAN/Model/User/Account.pm b/lib/MetaCPAN/Model/User/Account.pm index a17fa8c8c..e5922eb36 100644 --- a/lib/MetaCPAN/Model/User/Account.pm +++ b/lib/MetaCPAN/Model/User/Account.pm @@ -126,10 +126,16 @@ after add_identity => sub { my ( $self, $identity ) = @_; if ( $identity->{name} eq 'pause' ) { $self->clear_looks_human; + use DDP; + p $identity; my $profile = $self->index->model->index('cpan')->type('author') ->get( $identity->{key} ); - $profile->_set_user( $self->id ) if ($profile); - $profile->put; + + # Not every user is an author + if ($profile) { + $profile->_set_user( $self->id ); + $profile->put; + } } }; From a832cf8de5ca2dab58ff888f03d33d42c4def105 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Thu, 5 May 2016 23:58:25 -0400 Subject: [PATCH 310/329] Only prepare user test data once. --- t/lib/MetaCPAN/Server/Test.pm | 32 -------------------------------- t/lib/MetaCPAN/TestServer.pm | 31 ++++++++++++++++++++++++++++++- 2 files changed, 30 insertions(+), 33 deletions(-) diff --git a/t/lib/MetaCPAN/Server/Test.pm b/t/lib/MetaCPAN/Server/Test.pm index a91b00aad..b1870398d 100644 --- a/t/lib/MetaCPAN/Server/Test.pm +++ b/t/lib/MetaCPAN/Server/Test.pm @@ -14,30 +14,6 @@ our @EXPORT = qw( test_psgi app ); -sub _prepare_user_test_data { - ok( - my $user = MetaCPAN::Server->model('User::Account')->put( - { - access_token => - [ { client => 'testing', token => 'testing' } ] - } - ), - 'prepare user' - ); - ok( $user->add_identity( { name => 'pause', key => 'MO' } ), - 'add pause identity' ); - ok( $user->put( { refresh => 1 } ), 'put user' ); - - ok( - MetaCPAN::Server->model('User::Account')->put( - { access_token => [ { client => 'testing', token => 'bot' } ] }, - { refresh => 1 } - ), - 'put bot user' - ); - -} - # Begin the load-order dance. my $app; @@ -48,16 +24,8 @@ sub _load_app { $app ||= require MetaCPAN::Server; } -my $did_user_data; - sub prepare_user_test_data { - - # Only needed once. - return if $did_user_data++; - _load_app(); - - subtest 'prepare user test data' => \&_prepare_user_test_data; } sub app { diff --git a/t/lib/MetaCPAN/TestServer.pm b/t/lib/MetaCPAN/TestServer.pm index ad7a810ca..a5f7646a4 100644 --- a/t/lib/MetaCPAN/TestServer.pm +++ b/t/lib/MetaCPAN/TestServer.pm @@ -8,6 +8,7 @@ use MetaCPAN::Script::CPANTesters (); use MetaCPAN::Script::Latest; use MetaCPAN::Script::Mapping; use MetaCPAN::Script::Release; +use MetaCPAN::Server (); use MetaCPAN::TestHelpers qw( get_config fakecpan_dir ); use MetaCPAN::Types qw( Dir HashRef Str ); use Search::Elasticsearch; @@ -167,7 +168,8 @@ sub index_releases { my $self = shift; my %args = @_; - local @ARGV = ( 'release', $ENV{MC_RELEASE} ? $ENV{MC_RELEASE} : $self->_cpan_dir ); + local @ARGV = ( 'release', + $ENV{MC_RELEASE} ? $ENV{MC_RELEASE} : $self->_cpan_dir ); ok( MetaCPAN::Script::Release->new_with_options( %{ $self->_config }, %args )->run, @@ -188,6 +190,7 @@ sub index_authors { local @ARGV = ('author'); ok( MetaCPAN::Script::Author->new_with_options( $self->_config )->run, 'index authors' ); + $self->prepare_user_test_data; } # Right now this test requires you to have an internet connection. If we can @@ -204,5 +207,31 @@ sub index_cpantesters { ); } +sub prepare_user_test_data { + my $self = shift; + ok( + my $user = MetaCPAN::Server->model('User::Account')->put( + { + access_token => + [ { client => 'testing', token => 'testing' } ] + } + ), + 'prepare user' + ); + use DDP; + p $user; + ok( $user->add_identity( { name => 'pause', key => 'MO' } ), + 'add pause identity' ); + ok( $user->put( { refresh => 1 } ), 'put user' ); + + ok( + MetaCPAN::Server->model('User::Account')->put( + { access_token => [ { client => 'testing', token => 'bot' } ] }, + { refresh => 1 } + ), + 'put bot user' + ); +} + __PACKAGE__->meta->make_immutable; 1; From 2793c6749f5aa58a536ebc5b2e85ba788025a60e Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Fri, 6 May 2016 00:00:22 -0400 Subject: [PATCH 311/329] Remove debugging. --- lib/MetaCPAN/Model/User/Account.pm | 2 -- t/lib/MetaCPAN/TestServer.pm | 2 -- 2 files changed, 4 deletions(-) diff --git a/lib/MetaCPAN/Model/User/Account.pm b/lib/MetaCPAN/Model/User/Account.pm index e5922eb36..c2f141448 100644 --- a/lib/MetaCPAN/Model/User/Account.pm +++ b/lib/MetaCPAN/Model/User/Account.pm @@ -126,8 +126,6 @@ after add_identity => sub { my ( $self, $identity ) = @_; if ( $identity->{name} eq 'pause' ) { $self->clear_looks_human; - use DDP; - p $identity; my $profile = $self->index->model->index('cpan')->type('author') ->get( $identity->{key} ); diff --git a/t/lib/MetaCPAN/TestServer.pm b/t/lib/MetaCPAN/TestServer.pm index a5f7646a4..0afd2b81b 100644 --- a/t/lib/MetaCPAN/TestServer.pm +++ b/t/lib/MetaCPAN/TestServer.pm @@ -218,8 +218,6 @@ sub prepare_user_test_data { ), 'prepare user' ); - use DDP; - p $user; ok( $user->add_identity( { name => 'pause', key => 'MO' } ), 'add pause identity' ); ok( $user->put( { refresh => 1 } ), 'put user' ); From 08ba3b8fd93ea757af41fca4af15a657f85950b6 Mon Sep 17 00:00:00 2001 From: Mickey Nasriachi Date: Fri, 6 May 2016 13:06:39 +0100 Subject: [PATCH 312/329] add asciiname to the author index --- lib/MetaCPAN/Document/Author.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/MetaCPAN/Document/Author.pm b/lib/MetaCPAN/Document/Author.pm index fc99c0c8b..056c549c0 100644 --- a/lib/MetaCPAN/Document/Author.pm +++ b/lib/MetaCPAN/Document/Author.pm @@ -21,7 +21,7 @@ has name => ( has asciiname => ( is => 'ro', - required => 0, + required => 1, index => 'analyzed', isa => NonEmptySimpleStr, ); From 340bac67510505ea03b7853f6e0f1b8e757e7fa7 Mon Sep 17 00:00:00 2001 From: Mickey Nasriachi Date: Fri, 6 May 2016 17:50:59 +0100 Subject: [PATCH 313/329] allow empty asciiname for author so all records get into ES --- lib/MetaCPAN/Document/Author.pm | 3 ++- lib/MetaCPAN/Script/Author.pm | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/MetaCPAN/Document/Author.pm b/lib/MetaCPAN/Document/Author.pm index 056c549c0..7bcd6301b 100644 --- a/lib/MetaCPAN/Document/Author.pm +++ b/lib/MetaCPAN/Document/Author.pm @@ -23,7 +23,8 @@ has asciiname => ( is => 'ro', required => 1, index => 'analyzed', - isa => NonEmptySimpleStr, + isa => Str, + default => q{}, ); has [qw(website email)] => diff --git a/lib/MetaCPAN/Script/Author.pm b/lib/MetaCPAN/Script/Author.pm index 1773dc15d..e948daf0f 100644 --- a/lib/MetaCPAN/Script/Author.pm +++ b/lib/MetaCPAN/Script/Author.pm @@ -60,6 +60,7 @@ sub index_authors { my ( $name, $email, $homepage, $asciiname ) = ( @$data{qw(fullname email homepage asciiname)} ); $name = undef if ( ref $name ); + $asciiname = q{} unless defined $asciiname; $email = lc($pauseid) . '@cpan.org' unless ( $email && Email::Valid->address($email) ); log_debug { From 5d617ae59a5ca06b4cf3ed5e814819008e99299d Mon Sep 17 00:00:00 2001 From: Mickey Nasriachi Date: Fri, 6 May 2016 21:32:40 +0100 Subject: [PATCH 314/329] prevent race-condition for 'first' setting in testing mode --- lib/MetaCPAN/Script/Release.pm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/MetaCPAN/Script/Release.pm b/lib/MetaCPAN/Script/Release.pm index 25381f12d..1d3b8c5a5 100644 --- a/lib/MetaCPAN/Script/Release.pm +++ b/lib/MetaCPAN/Script/Release.pm @@ -275,6 +275,8 @@ sub import_archive { # update 'first' value $document->set_first; $document->put; + + sleep 2 if $ENV{'METACPAN_SERVER_CONFIG_LOCAL_SUFFIX'} eq 'testing'; } sub _build_backpan_index { From 8e55db015975c685af98fadf2c43afc32d14cca3 Mon Sep 17 00:00:00 2001 From: Mickey Nasriachi Date: Fri, 6 May 2016 21:36:38 +0100 Subject: [PATCH 315/329] make it less warny --- lib/MetaCPAN/Script/Release.pm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/MetaCPAN/Script/Release.pm b/lib/MetaCPAN/Script/Release.pm index 1d3b8c5a5..5978f2bc0 100644 --- a/lib/MetaCPAN/Script/Release.pm +++ b/lib/MetaCPAN/Script/Release.pm @@ -276,7 +276,9 @@ sub import_archive { $document->set_first; $document->put; - sleep 2 if $ENV{'METACPAN_SERVER_CONFIG_LOCAL_SUFFIX'} eq 'testing'; + sleep 2 + if defined $ENV{'METACPAN_SERVER_CONFIG_LOCAL_SUFFIX'} + and $ENV{'METACPAN_SERVER_CONFIG_LOCAL_SUFFIX'} eq 'testing'; } sub _build_backpan_index { From e87aca68ff0d732ed2ed0167f6d4ba6ad950e5ab Mon Sep 17 00:00:00 2001 From: Mickey Nasriachi Date: Fri, 6 May 2016 22:45:24 +0100 Subject: [PATCH 316/329] rework set_first_release + add first script to tests this change will prevent the race between setting all releases to first=0 and then setting first=1 based on a query that depends on previous put to finish on ES level. it adds a run of MetaCPAN::Script::First to the setup test, to ensure all releases are indexed correctly ('first'-wise) before running the other tests. --- lib/MetaCPAN/Document/Distribution.pm | 29 ++++++++++----------------- lib/MetaCPAN/Script/Release.pm | 4 ---- t/00_setup.t | 1 + t/lib/MetaCPAN/TestServer.pm | 8 ++++++++ 4 files changed, 20 insertions(+), 22 deletions(-) diff --git a/lib/MetaCPAN/Document/Distribution.pm b/lib/MetaCPAN/Document/Distribution.pm index 131551c71..25bde766d 100644 --- a/lib/MetaCPAN/Document/Distribution.pm +++ b/lib/MetaCPAN/Document/Distribution.pm @@ -37,26 +37,19 @@ sub releases { sub set_first_release { my $self = shift; - $self->unset_first_release; - my $release = $self->releases->sort( ["date"] )->first; - return unless $release; - return $release if $release->first; - $release->_set_first(1); - $release->put; - return $release; -} -sub unset_first_release { - my $self = shift; - my $releases - = $self->releases->filter( { term => { first => 'true' }, } ) - ->size(200)->scroll; - while ( my $release = $releases->next ) { - $release->_set_first(0); - $release->update; + my @releases = $self->releases->sort( ["date"] )->all; + + my $first = shift @releases; + $first->_set_first(1); + $first->put; + + for my $rel (@releases) { + $rel->_set_first(0); + $rel->put; } - $self->index->refresh if $releases->total; - return $releases->total; + + return $first; } __PACKAGE__->meta->make_immutable; diff --git a/lib/MetaCPAN/Script/Release.pm b/lib/MetaCPAN/Script/Release.pm index 5978f2bc0..25381f12d 100644 --- a/lib/MetaCPAN/Script/Release.pm +++ b/lib/MetaCPAN/Script/Release.pm @@ -275,10 +275,6 @@ sub import_archive { # update 'first' value $document->set_first; $document->put; - - sleep 2 - if defined $ENV{'METACPAN_SERVER_CONFIG_LOCAL_SUFFIX'} - and $ENV{'METACPAN_SERVER_CONFIG_LOCAL_SUFFIX'} eq 'testing'; } sub _build_backpan_index { diff --git a/t/00_setup.t b/t/00_setup.t index 2e1929b34..818b206fd 100644 --- a/t/00_setup.t +++ b/t/00_setup.t @@ -81,6 +81,7 @@ copy( $src_dir->file('bugs.tsv'), $fakecpan_dir->file('bugs.tsv') ); $server->index_releases; $server->set_latest; +$server->set_first; $server->index_authors; $server->index_cpantesters; diff --git a/t/lib/MetaCPAN/TestServer.pm b/t/lib/MetaCPAN/TestServer.pm index 0afd2b81b..e6c4b2a0d 100644 --- a/t/lib/MetaCPAN/TestServer.pm +++ b/t/lib/MetaCPAN/TestServer.pm @@ -6,6 +6,7 @@ use CPAN::Repository::Perms; use MetaCPAN::Script::Author; use MetaCPAN::Script::CPANTesters (); use MetaCPAN::Script::Latest; +use MetaCPAN::Script::First; use MetaCPAN::Script::Mapping; use MetaCPAN::Script::Release; use MetaCPAN::Server (); @@ -184,6 +185,13 @@ sub set_latest { 'latest' ); } +sub set_first { + my $self = shift; + local @ARGV = ('first'); + ok( MetaCPAN::Script::First->new_with_options( $self->_config )->run, + 'first' ); +} + sub index_authors { my $self = shift; From de142a2172b3c00325785f7bb5fc62e7faaa6285 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Fri, 6 May 2016 18:34:46 -0400 Subject: [PATCH 317/329] Add a UA string to river script so that NEILB's web server doesn't reject it. --- lib/MetaCPAN/Script/River.pm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/MetaCPAN/Script/River.pm b/lib/MetaCPAN/Script/River.pm index 2f097b25c..050b74015 100644 --- a/lib/MetaCPAN/Script/River.pm +++ b/lib/MetaCPAN/Script/River.pm @@ -5,7 +5,7 @@ use namespace::autoclean; use JSON::MaybeXS qw( decode_json ); use Log::Contextual qw( :log :dlog ); -use LWP::UserAgent; +use LWP::UserAgent (); use MetaCPAN::Types qw( ArrayRef Str Uri); with 'MetaCPAN::Role::Script', 'MooseX::Getopt'; @@ -21,7 +21,7 @@ has river_url => ( has _ua => ( is => 'ro', isa => 'LWP::UserAgent', - default => sub { LWP::UserAgent->new }, + default => sub { LWP::UserAgent->new( agent => 'MetaCPAN' ) }, ); sub run { From f00fc155bae9cd6b146f13b7d838a2c45c897796 Mon Sep 17 00:00:00 2001 From: Mickey Nasriachi Date: Sun, 8 May 2016 15:27:02 +0100 Subject: [PATCH 318/329] version restriction is not needed carton installs a later version (1.20) anyway because of some other dependency. --- cpanfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpanfile b/cpanfile index 0b7f4509e..41aae53a7 100644 --- a/cpanfile +++ b/cpanfile @@ -11,7 +11,7 @@ requires 'Captcha::reCAPTCHA', '0.94'; requires 'Catalyst', '5.90103'; requires 'Catalyst::Action::RenderView'; requires 'Catalyst::Controller'; -requires 'Catalyst::Controller::REST', '0.94'; +requires 'Catalyst::Controller::REST'; requires 'Catalyst::Model'; requires 'Catalyst::Plugin::Authentication'; requires 'Catalyst::Plugin::ConfigLoader'; From a047d09ade9209abbfeed1f06e928088e66966f8 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Mon, 9 May 2016 21:53:32 -0400 Subject: [PATCH 319/329] CPANTesters db returns an empty string rather than 0 for versions. --- lib/MetaCPAN/Script/CPANTesters.pm | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/lib/MetaCPAN/Script/CPANTesters.pm b/lib/MetaCPAN/Script/CPANTesters.pm index ab40b79c5..7ca3b51d8 100644 --- a/lib/MetaCPAN/Script/CPANTesters.pm +++ b/lib/MetaCPAN/Script/CPANTesters.pm @@ -119,8 +119,12 @@ sub index_reports { $sth->execute; my @bulk; while ( my $row_from_db = $sth->fetchrow_hashref ) { - my $release - = join( '-', $row_from_db->{dist}, $row_from_db->{version} ); + + # The testers db seems to return q{} where we would expect a version of + # 0. + + my $version = $row_from_db->{version} || 0; + my $release = join( '-', $row_from_db->{dist}, $version ); my $release_doc = $releases{$release}; # there's a cpantesters dist we haven't indexed From a7b08563cf2977634ab941a270ece6bcbf053c7e Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Mon, 9 May 2016 22:19:57 -0400 Subject: [PATCH 320/329] Strip some characters from versions before looking up dists for CPANTesters data. --- lib/MetaCPAN/Script/CPANTesters.pm | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/lib/MetaCPAN/Script/CPANTesters.pm b/lib/MetaCPAN/Script/CPANTesters.pm index 7ca3b51d8..54b25213b 100644 --- a/lib/MetaCPAN/Script/CPANTesters.pm +++ b/lib/MetaCPAN/Script/CPANTesters.pm @@ -124,6 +124,14 @@ sub index_reports { # 0. my $version = $row_from_db->{version} || 0; + + # weblint++ gets a name of 'weblint' and a version of '++-1.15' from + # the testers db. Special case it for now. Maybe try and get the db + # fixed. + + $version =~ s{\+}{}g; + $version =~ s{\A-}{}; + my $release = join( '-', $row_from_db->{dist}, $version ); my $release_doc = $releases{$release}; From 5e07e65ba7c904bb8ae062b9e95c2d18ab82b910 Mon Sep 17 00:00:00 2001 From: Olaf Alders Date: Tue, 10 May 2016 22:54:23 -0400 Subject: [PATCH 321/329] SKIP testers data check in ipsonar-0.29.t --- t/release/ipsonar-0.29.t | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/t/release/ipsonar-0.29.t b/t/release/ipsonar-0.29.t index 79692f9a6..7aa8f4a65 100644 --- a/t/release/ipsonar-0.29.t +++ b/t/release/ipsonar-0.29.t @@ -19,7 +19,10 @@ test_release( # Don't test the actual numbers since we copy this out of the real # database as a live test case. - tests => 1, + + # This is kind of a SKIP. This may be an actual bug which we want to + # investigate later. + tests => undef, } ); From 0cb397861dc77e87af1c2ef2206acf68c5d38d10 Mon Sep 17 00:00:00 2001 From: Mickey Nasriachi Date: Wed, 11 May 2016 16:15:04 +0100 Subject: [PATCH 322/329] call prepare_user_test_data directly from the setup test --- t/00_setup.t | 1 + t/lib/MetaCPAN/TestServer.pm | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/t/00_setup.t b/t/00_setup.t index 818b206fd..1a77eda16 100644 --- a/t/00_setup.t +++ b/t/00_setup.t @@ -83,6 +83,7 @@ $server->index_releases; $server->set_latest; $server->set_first; $server->index_authors; +$server->prepare_user_test_data; $server->index_cpantesters; ok( diff --git a/t/lib/MetaCPAN/TestServer.pm b/t/lib/MetaCPAN/TestServer.pm index e6c4b2a0d..6c6093551 100644 --- a/t/lib/MetaCPAN/TestServer.pm +++ b/t/lib/MetaCPAN/TestServer.pm @@ -198,7 +198,6 @@ sub index_authors { local @ARGV = ('author'); ok( MetaCPAN::Script::Author->new_with_options( $self->_config )->run, 'index authors' ); - $self->prepare_user_test_data; } # Right now this test requires you to have an internet connection. If we can From 669630fd60c97b59e14627e831eca7f7382a2bce Mon Sep 17 00:00:00 2001 From: Mickey Nasriachi Date: Wed, 11 May 2016 16:50:28 +0100 Subject: [PATCH 323/329] Account: fix queries --- lib/MetaCPAN/Model/User/Account.pm | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/MetaCPAN/Model/User/Account.pm b/lib/MetaCPAN/Model/User/Account.pm index c2f141448..6f1b50378 100644 --- a/lib/MetaCPAN/Model/User/Account.pm +++ b/lib/MetaCPAN/Model/User/Account.pm @@ -177,8 +177,8 @@ sub find { return $self->filter( { and => [ - { term => { 'account.identity.name' => $p->{name} } }, - { term => { 'account.identity.key' => $p->{key} } } + { term => { 'identity.name' => $p->{name} } }, + { term => { 'identity.key' => $p->{key} } } ] } )->first; @@ -194,7 +194,7 @@ Find account by C<$code>. See L. sub find_code { my ( $self, $token ) = @_; - return $self->filter( { term => { 'account.code' => $token } } )->first; + return $self->filter( { term => { 'code' => $token } } )->first; } =head2 find_token @@ -207,8 +207,8 @@ Find account by C<$access_token>. See L. sub find_token { my ( $self, $token ) = @_; - return $self->filter( - { term => { 'account.access_token.token' => $token } } )->first; + return $self->filter( { term => { 'access_token.token' => $token } } ) + ->first; } __PACKAGE__->meta->make_immutable; From 161c9864ef2f6d0843f1547a65417d23b5f1b720 Mon Sep 17 00:00:00 2001 From: Mickey Nasriachi Date: Wed, 11 May 2016 16:55:09 +0100 Subject: [PATCH 324/329] fix test server/controller/user/favorite --- t/server/controller/user/favorite.t | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/t/server/controller/user/favorite.t b/t/server/controller/user/favorite.t index 8575ca4fa..7ea55bdce 100644 --- a/t/server/controller/user/favorite.t +++ b/t/server/controller/user/favorite.t @@ -12,10 +12,33 @@ test_psgi app, sub { is( $user->code, 200, 'code 200' ); $user = decode_json_ok($user); + is_deeply( + $user->{identity}, + [ + { + 'key' => 'MO', + 'name' => 'pause' + } + ], + 'got correct identity' + ); + + is_deeply( + $user->{access_token}, + [ + { + 'client' => 'testing', + 'token' => 'testing' + } + ], + 'got correct access_token' + ); + ok( my $res = $cb->( POST '/user/favorite?access_token=testing', - Content => encode_json( + Content_Type => 'application/json', + Content => encode_json( { distribution => 'Moose', release => 'Moose-1.10', From 5f0142b1dbeeecfb67e42fa40c884407b74b3088 Mon Sep 17 00:00:00 2001 From: Mickey Nasriachi Date: Wed, 11 May 2016 17:37:13 +0100 Subject: [PATCH 325/329] add missing writer --- lib/MetaCPAN/Model/User/Account.pm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/MetaCPAN/Model/User/Account.pm b/lib/MetaCPAN/Model/User/Account.pm index 6f1b50378..9a220c5e6 100644 --- a/lib/MetaCPAN/Model/User/Account.pm +++ b/lib/MetaCPAN/Model/User/Account.pm @@ -77,8 +77,9 @@ L when the user passed the captcha. =cut has passed_captcha => ( - is => 'ro', - isa => 'DateTime', + is => 'ro', + isa => 'DateTime', + writer => '_set_passed_captcha', ); =head2 looks_human From 6c384f19e3f34d7d499ce4add68dc090046ac3f1 Mon Sep 17 00:00:00 2001 From: Mickey Nasriachi Date: Wed, 11 May 2016 17:37:42 +0100 Subject: [PATCH 326/329] looks_human -> required (to force build when creating the user object) --- lib/MetaCPAN/Model/User/Account.pm | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/lib/MetaCPAN/Model/User/Account.pm b/lib/MetaCPAN/Model/User/Account.pm index 9a220c5e6..71ea952ce 100644 --- a/lib/MetaCPAN/Model/User/Account.pm +++ b/lib/MetaCPAN/Model/User/Account.pm @@ -90,11 +90,12 @@ is true if the user is connected to a PAUSE account or he L. =cut has looks_human => ( - is => 'ro', - isa => Bool, - lazy => 1, - builder => '_build_looks_human', - clearer => 'clear_looks_human', + required => 1, + is => 'ro', + isa => Bool, + lazy => 1, + builder => '_build_looks_human', + clearer => 'clear_looks_human', ); sub _build_looks_human { From fc3666b3417b20cab2cedef88e3e9d4ceb1b2c55 Mon Sep 17 00:00:00 2001 From: Mickey Nasriachi Date: Thu, 12 May 2016 22:58:14 +0100 Subject: [PATCH 327/329] fix warning 1. case-insensitive extension in the 2nd case (like 1st & 3rd) 2. read from correct key in %_pod_score --- lib/MetaCPAN/Document/Module.pm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/MetaCPAN/Document/Module.pm b/lib/MetaCPAN/Document/Module.pm index b6f5319a5..2b93e70a6 100644 --- a/lib/MetaCPAN/Document/Module.pm +++ b/lib/MetaCPAN/Document/Module.pm @@ -170,12 +170,12 @@ sub set_associated_pod { $_->path =~ /^README\.pod$/i ? -10 : # If the name of the package matches the name of the file, - $_->path =~ m!(^lib/)?\b${mod_path}.(pod|pm)$! ? + $_->path =~ m!(^lib/)?\b${mod_path}.((?i)pod|pm)$! ? # Score pod over pm, and boost (most points for 'lib' dir). - ($1 ? 50 : 25) + $_pod_score{$2} : + ($1 ? 50 : 25) + $_pod_score{lc($2)} : # Sort files by extension: Foo.pod > Foo.pm > foo.pl. - $_->name =~ /\.(pod|pm|pl)/i ? $_pod_score{$1} : + $_->name =~ /\.(pod|pm|pl)/i ? $_pod_score{lc($1)} : # Otherwise score unknown (near the bottom). -1 From d63af5bd66eda34583b411f458c1837df64a67a5 Mon Sep 17 00:00:00 2001 From: Leo Lapworth Date: Fri, 13 May 2016 19:30:09 +0100 Subject: [PATCH 328/329] add a script for munin to use to monitor the queue --- bin/munin/monitor_minion_queue.pl | 48 +++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 bin/munin/monitor_minion_queue.pl diff --git a/bin/munin/monitor_minion_queue.pl b/bin/munin/monitor_minion_queue.pl new file mode 100644 index 000000000..669418cab --- /dev/null +++ b/bin/munin/monitor_minion_queue.pl @@ -0,0 +1,48 @@ +#!/usr/bin/env perl + +use strict; +use warnings; + +# Munin runs this as root, need the sudo to get the Pg perms +# it's only for production so path is hard coded + +my $config_mode = 0; +$config_mode = 1 if $ARGV[0] && $ARGV[0] eq 'config'; + +if($config_mode) { + +print <<'EOF'; +graph_title Minion Queue stats +graph_vlabel count +graph_category metacpan_api +graph_info What's happening in the Minion queue +EOF + +} + +# Get the stats +my $stats_report = `sudo -u metacpan /home/metacpan/bin/metacpan-api-carton-exec bin/queue.pl minion job -s`; + +my @lines = split("\n", $stats_report); + +for my $line (@lines) { + my ($label, $num) = split ':', $line; + + $num =~ s/\D//g; + + my $key = lc($label); # Was 'Inactive jobs' + + # Swap type and status around so idle_jobs becomes jobs_idle + $key =~ s/(\w+)\s+(\w+)/$2_$1/g; + + if( $config_mode ) { + # config + print "${key}.label $label\n"; + + } else { + # results + print "${key}.value $num\n" if $num; + } + + +} From d418ccb0bee4512cb555e0c60ca7fe4535dddad1 Mon Sep 17 00:00:00 2001 From: Mickey Nasriachi Date: Fri, 13 May 2016 22:22:21 +0100 Subject: [PATCH 329/329] add warnings to queue results --- lib/MetaCPAN/Queue.pm | 9 +++++++++ lib/MetaCPAN/Script/Release.pm | 7 ++++--- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/lib/MetaCPAN/Queue.pm b/lib/MetaCPAN/Queue.pm index ac9ce725e..85cb0ffd5 100644 --- a/lib/MetaCPAN/Queue.pm +++ b/lib/MetaCPAN/Queue.pm @@ -18,6 +18,7 @@ use Mojo::Base 'Mojolicious'; use MetaCPAN::Queue::Helper (); use MetaCPAN::Script::Runner (); use Try::Tiny qw( catch try ); +use Cpanel::JSON::XS qw( encode_json ); sub startup { my $self = shift; @@ -32,6 +33,12 @@ sub startup { index_release => sub { my ( $job, @args ) = @_; + my @warnings; + local $SIG{__WARN__} = sub { + push @warnings, $_[0]; + warn $_[0]; + }; + # @args could be ( '--latest', '/path/to/release' ); unshift @args, 'release'; @@ -44,6 +51,8 @@ sub startup { warn $_; $job->fail( { message => $_ } ); }; + + $job->finish( { warnings => encode_json( \@warnings ) } ) or die; } ); } diff --git a/lib/MetaCPAN/Script/Release.pm b/lib/MetaCPAN/Script/Release.pm index 25381f12d..f9c35e494 100644 --- a/lib/MetaCPAN/Script/Release.pm +++ b/lib/MetaCPAN/Script/Release.pm @@ -342,9 +342,10 @@ sub _build_perms { return \%authors; } -$SIG{__WARN__} = sub { - my $msg = shift; - warn $msg unless $msg =~ m{Invalid header block at offset unknown at}; +my $warn = $SIG{__WARN__} || sub { warn $_[0] }; +local $SIG{__WARN__} = sub { + $warn->( $_[0] ) + unless $_[0] =~ /Invalid header block at offset unknown at/; }; __PACKAGE__->meta->make_immutable;