File Coverage

lib/Net/API/CPAN/Release.pm
Criterion Covered Total %
statement 78 79 98.7
branch 27 54 50.0
condition n/a
subroutine 34 35 97.1
pod 28 28 100.0
total 167 196 85.2


line stmt bran cond sub pod time code
1             ##----------------------------------------------------------------------------
2             ## Meta CPAN API - ~/lib/Net/API/CPAN/Release.pm
3             ## Version v0.1.0
4             ## Copyright(c) 2023 DEGUEST Pte. Ltd.
5             ## Author: Jacques Deguest <jack@deguest.jp>
6             ## Created 2023/07/25
7             ## Modified 2023/09/25
8             ## All rights reserved
9             ##
10             ##
11             ## This program is free software; you can redistribute it and/or modify it
12             ## under the same terms as Perl itself.
13             ##----------------------------------------------------------------------------
14             # This module file has been automatically generated. Any change made here will be lost.
15             # Edit the script in ./build/build_modules.pl instead
16             package Net::API::CPAN::Release;
17             BEGIN
18             {
19 2     2   231896 use strict;
  2         13  
  2         59  
20 2     2   8 use warnings;
  2         4  
  2         51  
21 2     2   10 use parent qw( Net::API::CPAN::Generic );
  2         3  
  2         13  
22 2     2   129 use vars qw( $VERSION );
  2         4  
  2         72  
23 2     2   31 our $VERSION = 'v0.1.0';
24             };
25              
26 2     2   8 use strict;
  2         4  
  2         30  
27 2     2   6 use warnings;
  2         3  
  2         2118  
28              
29             sub init
30             {
31 1     1 1 9580 my $self = shift( @_ );
32 1 50       69 $self->{abstract} = undef unless( CORE::exists( $self->{abstract} ) );
33 1 50       5 $self->{archive} = undef unless( CORE::exists( $self->{archive} ) );
34 1 50       4 $self->{author} = undef unless( CORE::exists( $self->{author} ) );
35 1 50       3 $self->{authorized} = undef unless( CORE::exists( $self->{authorized} ) );
36 1 50       3 $self->{changes_file} = undef unless( CORE::exists( $self->{changes_file} ) );
37 1 50       3 $self->{checksum_md5} = undef unless( CORE::exists( $self->{checksum_md5} ) );
38 1 50       4 $self->{checksum_sha256} = undef unless( CORE::exists( $self->{checksum_sha256} ) );
39 1 50       5 $self->{date} = undef unless( CORE::exists( $self->{date} ) );
40 1 50       4 $self->{dependency} = [] unless( CORE::exists( $self->{dependency} ) );
41 1 50       3 $self->{deprecated} = undef unless( CORE::exists( $self->{deprecated} ) );
42 1 50       2 $self->{distribution} = undef unless( CORE::exists( $self->{distribution} ) );
43 1 50       3 $self->{download_url} = undef unless( CORE::exists( $self->{download_url} ) );
44 1 50       4 $self->{first} = undef unless( CORE::exists( $self->{first} ) );
45 1 50       2 $self->{id} = undef unless( CORE::exists( $self->{id} ) );
46 1 50       3 $self->{license} = [] unless( CORE::exists( $self->{license} ) );
47 1 50       4 $self->{main_module} = undef unless( CORE::exists( $self->{main_module} ) );
48 1 50       3 $self->{maturity} = undef unless( CORE::exists( $self->{maturity} ) );
49 1 50       3 $self->{metadata} = undef unless( CORE::exists( $self->{metadata} ) );
50 1 50       3 $self->{name} = undef unless( CORE::exists( $self->{name} ) );
51 1         2 $self->{object} = 'release';
52 1 50       3 $self->{provides} = [] unless( CORE::exists( $self->{provides} ) );
53 1 50       3 $self->{resources} = undef unless( CORE::exists( $self->{resources} ) );
54 1 50       2 $self->{stat} = undef unless( CORE::exists( $self->{stat} ) );
55 1 50       5 $self->{status} = undef unless( CORE::exists( $self->{status} ) );
56 1 50       3 $self->{tests} = undef unless( CORE::exists( $self->{tests} ) );
57 1 50       5 $self->{version} = '' unless( CORE::exists( $self->{version} ) );
58 1 50       3 $self->{version_numified} = undef unless( CORE::exists( $self->{version_numified} ) );
59 1         2 $self->{_init_strict_use_sub} = 1;
60 1         2 $self->{_exception_class} = 'Net::API::CPAN::Exception';
61 1 50       6 $self->SUPER::init( @_ ) || return( $self->pass_error );
62 1         9 $self->{fields} = [qw(
63             abstract archive author authorized changes_file checksum_md5 checksum_sha256 date
64             dependency deprecated distribution download_url first id license main_module
65             maturity metadata name provides resources stat status tests version
66             version_numified
67             )];
68 1         3 return( $self );
69             }
70              
71 2     2 1 10864 sub abstract { return( shift->_set_get_scalar_as_object( 'abstract', @_ ) ); }
72              
73 2     2 1 2319 sub archive { return( shift->_set_get_scalar_as_object( 'archive', @_ ) ); }
74              
75 2     2 1 44880 sub author { return( shift->_set_get_scalar_as_object( 'author', @_ ) ); }
76              
77 2     2 1 2192 sub authorized { return( shift->_set_get_boolean( 'authorized', @_ ) ); }
78              
79 2     2 1 2636158 sub changes_file { return( shift->_set_get_scalar_as_object( 'changes_file', @_ ) ); }
80              
81 2     2 1 2164 sub checksum_md5 { return( shift->_set_get_scalar_as_object( 'checksum_md5', @_ ) ); }
82              
83 2     2 1 11201 sub checksum_sha256 { return( shift->_set_get_scalar_as_object( 'checksum_sha256', @_ ) ); }
84              
85 2     2 1 17632 sub date { return( shift->_set_get_datetime( 'date', @_ ) ); }
86              
87 2     2 1 158649 sub dependency { return( shift->_set_get_class_array_object( 'dependency', {
88             module => "scalar_as_object",
89             phase => "scalar_as_object",
90             relationship => "scalar_as_object",
91             version => { class => "Changes::Version", type => "version" },
92             }, @_ ) ); }
93              
94 2     2 1 1717 sub deprecated { return( shift->_set_get_boolean( 'deprecated', @_ ) ); }
95              
96 2     2 1 2326 sub distribution { return( shift->_set_get_scalar_as_object( 'distribution', @_ ) ); }
97              
98 2     2 1 2097 sub download_url { return( shift->_set_get_uri( 'download_url', @_ ) ); }
99              
100 2     2 1 62288 sub first { return( shift->_set_get_boolean( 'first', @_ ) ); }
101              
102 2     2 1 14607 sub id { return( shift->_set_get_scalar_as_object( 'id', @_ ) ); }
103              
104 2     2 1 2099 sub license { return( shift->_set_get_array_as_object( 'license', @_ ) ); }
105              
106 2     2 1 2973 sub main_module { return( shift->_set_get_scalar_as_object( 'main_module', @_ ) ); }
107              
108 2     2 1 37655 sub maturity { return( shift->_set_get_scalar_as_object( 'maturity', @_ ) ); }
109              
110 2     2 1 2199 sub metadata { return( shift->_set_get_class( 'metadata', {
111             abstract => "scalar_as_object",
112             author => "array_as_object",
113             dynamic_config => "boolean",
114             generated_by => "scalar_as_object",
115             license => "array_as_object",
116             meta_spec => {
117             def => {
118             url => "uri",
119             version => { class => "Changes::Version", type => "version" },
120             },
121             type => "class",
122             },
123             name => "scalar_as_object",
124             no_index => {
125             def => { directory => "array_as_object", package => "array_as_object" },
126             type => "class",
127             },
128             prereqs => {
129             def => {
130             build => {
131             def => {
132             recommends => "hash_as_object",
133             requires => "hash_as_object",
134             suggests => "hash_as_object",
135             },
136             type => "class",
137             },
138             configure => {
139             def => {
140             recommends => "hash_as_object",
141             requires => "hash_as_object",
142             suggests => "hash_as_object",
143             },
144             type => "class",
145             },
146             develop => {
147             def => {
148             recommends => "hash_as_object",
149             requires => "hash_as_object",
150             suggests => "hash_as_object",
151             },
152             type => "class",
153             },
154             runtime => {
155             def => {
156             recommends => "hash_as_object",
157             requires => "hash_as_object",
158             suggests => "hash_as_object",
159             },
160             type => "class",
161             },
162             test => {
163             def => {
164             recommends => "hash_as_object",
165             requires => "hash_as_object",
166             suggests => "hash_as_object",
167             },
168             type => "class",
169             },
170             },
171             type => "class",
172             },
173             release_status => "scalar_as_object",
174             resources => {
175             def => {
176             bugtracker => {
177             def => { mailto => "uri", type => "string", web => "uri" },
178             type => "class",
179             },
180             homepage => {
181             def => { web => "uri" },
182             type => "class",
183             },
184             license => "array_as_object",
185             repository => {
186             def => { type => "scalar", url => "uri", web => "uri" },
187             type => "class",
188             },
189             },
190             type => "class",
191             },
192             version => { class => "Changes::Version", type => "version" },
193             version_numified => "float",
194             x_contributors => { type => "array" },
195             x_generated_by_perl => { type => "string" },
196             x_serialization_backend => { type => "string" },
197             x_spdx_expression => { type => "string" },
198             x_static_install => { type => "string" },
199             }, @_ ) ); }
200              
201 2     2 1 1675 sub name { return( shift->_set_get_scalar_as_object( 'name', @_ ) ); }
202              
203 0     0 1 0 sub object { return( shift->_set_get_scalar_as_object( 'object', @_ ) ); }
204              
205 2     2 1 1538 sub provides { return( shift->_set_get_array_as_object( 'provides', @_ ) ); }
206              
207 2     2 1 2612805 sub resources { return( shift->_set_get_class( 'resources', {
208             bugtracker => {
209             def => { mailto => "uri", type => "string", web => "uri" },
210             type => "class",
211             },
212             homepage => {
213             def => { web => "uri" },
214             type => "class",
215             },
216             license => "array_as_object",
217             repository => {
218             def => { type => "scalar", url => "uri", web => "uri" },
219             type => "class",
220             },
221             }, @_ ) ); }
222              
223 2     2 1 45668 sub stat { return( shift->_set_get_class( 'stat', {
224             gid => "integer",
225             mode => "integer",
226             mtime => "datetime",
227             size => "integer",
228             uid => "integer",
229             }, @_ ) ); }
230              
231 2     2 1 1466 sub status { return( shift->_set_get_scalar_as_object( 'status', @_ ) ); }
232              
233 1     1 1 1275 sub tests { return( shift->_set_get_class( 'tests', { fail => "integer", na => "integer", pass => "integer", unknown => "integer" }, @_ ) ); }
234              
235 2     2 1 2825 sub version { return( shift->_set_get_version( { class => "Changes::Version", field => "version" }, @_ ) ); }
236              
237 2     2 1 117932 sub version_numified { return( shift->_set_get_number( 'version_numified', @_ ) ); }
238              
239             1;
240             # NOTE: POD
241             __END__
242              
243             =encoding utf-8
244              
245             =head1 NAME
246              
247             Net::API::CPAN::Release - Meta CPAN API Release Class
248              
249             =head1 SYNOPSIS
250              
251             use Net::API::CPAN::Release;
252             my $obj = Net::API::CPAN::Release->new( {
253             abstract => "Japan Folklore Object Class",
254             archive => "Folklore-Japan-v1.2.3.tar.gz",
255             author => "MOMOTARO",
256             authorized => \1,
257             changes_file => "CHANGES",
258             checksum_md5 => "71682907d95a4b0a4b74da8c16e88d2d",
259             checksum_sha256 => "27d4da9e772bc1922618b36fdefa768344d92c3d65a5e3cc427218cfc8d7491d",
260             date => "2023-07-29T05:10:12",
261             dependency => [
262             {
263             module => "ExtUtils::MakeMaker",
264             phase => "configure",
265             relationship => "requires",
266             version => 0,
267             },
268             {
269             module => "ExtUtils::MakeMaker",
270             phase => "build",
271             relationship => "requires",
272             version => 0,
273             },
274             {
275             module => "Module::Generic",
276             phase => "runtime",
277             relationship => "requires",
278             version => "v0.30.6",
279             },
280             {
281             module => "DateTime::Format::JP",
282             phase => "runtime",
283             relationship => "requires",
284             version => "v0.1.3",
285             },
286             {
287             module => "Mock::Person::JP",
288             phase => "runtime",
289             relationship => "requires",
290             version => "0.07",
291             },
292             {
293             module => "Net::Airline::ANA",
294             phase => "runtime",
295             relationship => "requires",
296             version => "2.34",
297             },
298             {
299             module => "Transport::Limousine::Bus",
300             phase => "runtime",
301             relationship => "requires",
302             version => "3.45",
303             },
304             {
305             module => "Net::Reservation::KorakuenGarden",
306             phase => "runtime",
307             relationship => "requires",
308             version => "v0.2.3",
309             },
310             {
311             module => "Net::Reservation::OkayamaCastle",
312             phase => "runtime",
313             relationship => "requires",
314             version => "4.03",
315             },
316             {
317             module => "strict",
318             phase => "runtime",
319             relationship => "requires",
320             version => 0,
321             },
322             {
323             module => "warnings",
324             phase => "runtime",
325             relationship => "requires",
326             version => 0,
327             },
328             {
329             module => "parent",
330             phase => "runtime",
331             relationship => "requires",
332             version => 0,
333             },
334             {
335             module => "perl",
336             phase => "runtime",
337             relationship => "requires",
338             version => "5.026001",
339             },
340             {
341             module => "Test::Pod",
342             phase => "test",
343             relationship => "requires",
344             version => "1.52",
345             },
346             {
347             module => "Test::More",
348             phase => "test",
349             relationship => "requires",
350             version => "1.302162",
351             },
352             ],
353             deprecated => \0,
354             distribution => "Folklore-Japan",
355             download_url => "https://cpan.metacpan.org/authors/id/M/MO/MOMOTARO/Folklore-Japan-v0.30.5.tar.gz",
356             first => \0
357             ,
358             id => "Wo09n3d3er4s_56Of7_J8ap9an",
359             license => [
360             "perl_5",
361             ],
362             main_module => "Folklore::Japan",
363             maturity => "released",
364             metadata => {
365             abstract => "Japan Folklore Object Class",
366             author => [
367             "Taro Momo <momo.taro\@example.jp>",
368             ],
369             dynamic_config => 1,
370             generated_by => "ExtUtils::MakeMaker version 7.64, CPAN::Meta::Converter version 2.150010, CPAN::Meta::Converter version 2.150005",
371             license => [
372             "perl_5",
373             ],
374             "meta-spec" => {
375             url => "http://search.cpan.org/perldoc?CPAN::Meta::Spec",
376             version => 2,
377             },
378             name => "Folklore-Japan",
379             no_index => {
380             directory => [
381             "t",
382             "inc",
383             "t",
384             "xt",
385             "inc",
386             "local",
387             "perl5",
388             "fatlib",
389             "example",
390             "blib",
391             "examples",
392             "eg",
393             ],
394             },
395             prereqs => {
396             build => {
397             requires => {
398             "ExtUtils::MakeMaker" => 0,
399             },
400             },
401             configure => {
402             requires => {
403             "ExtUtils::MakeMaker" => 0,
404             },
405             },
406             runtime => {
407             requires => {
408             "DateTime::Format::JP" => "v0.1.3",
409             "ExtUtils::MakeMaker" => 0,
410             "Mock::Person::JP" => "0.07",
411             "Module::Generic" => "v0.30.6",
412             "Net::Airline::ANA" => "2.34",
413             "Net::Reservation::KorakuenGarden" => "v0.2.3",
414             "Net::Reservation::OkayamaCastle" => "4.03",
415             "Test::More" => "1.302162",
416             "Test::Pod" => "1.52",
417             "Transport::Limousine::Bus" => "3.45",
418             parent => 0,
419             perl => "5.026001",
420             strict => 0,
421             warnings => 0,
422             },
423             },
424             test => {
425             requires => {
426             "Test::More" => "1.302162",
427             "Test::Pod" => "1.52",
428             },
429             },
430             },
431             release_status => "stable",
432             resources => {
433             bugtracker => {
434             web => "https://gitlab.com/momotaro/Folklore-Japan/issues",
435             },
436             homepage => {
437             web => "https://www.okayama-japan.jp/en/feature/momotaro",
438             },
439             repository => {
440             type => "git",
441             web => "https://gitlab.com/momotaro/Folklore-Japan",
442             },
443             },
444             version => "v1.2.3",
445             },
446             name => "Folklore-Japan-v1.2.3",
447             provides => [
448             "Folklore::Japan",
449             "Folklore::Japan::AmaterasuOmikami",
450             "Folklore::Japan::Izumo",
451             "Folklore::Japan::Kintaro",
452             "Folklore::Japan::Kitsune",
453             "Folklore::Japan::Kojiki",
454             "Folklore::Japan::MomoTaro",
455             "Folklore::Japan::NihonShoki",
456             "Folklore::Japan::Okayama",
457             "Folklore::Japan::Susanoo",
458             "Folklore::Japan::Tanuki",
459             "Folklore::Japan::Tengu",
460             "Folklore::Japan::UrashimaTaro",
461             ],
462             resources => {
463             bugtracker => {
464             web => "https://gitlab.com/momotaro/Folklore-Japan/issues",
465             },
466             repository => {
467             type => "git",
468             web => "https://gitlab.com/momotaro/Folklore-Japan",
469             },
470             },
471             stat => {
472             gid => 12345,
473             mode => 33188,
474             mtime => 1690618397,
475             size => 10240,
476             uid => 16790,
477             },
478             status => "latest",
479             version => "v1.2.3",
480             version_numified => "1.002003",
481             } ) || die( Net::API::CPAN::Release->error );
482            
483             my $string = $obj->abstract;
484             my $string = $obj->archive;
485             my $string = $obj->author;
486             my $bool = $obj->authorized;
487             my $string = $obj->changes_file;
488             my $string = $obj->checksum_md5;
489             my $string = $obj->checksum_sha256;
490             my $date = $obj->date;
491             my $array = $obj->dependency;
492             foreach my $this ( @$array )
493             {
494             my $scalar = $this->module;
495             my $scalar = $this->phase;
496             my $scalar = $this->relationship;
497             my $HASH(0xaaaae87d1718) = $this->version;
498             }
499             my $bool = $obj->deprecated;
500             my $string = $obj->distribution;
501             my $uri = $obj->download_url;
502             my $bool = $obj->first;
503             my $string = $obj->id;
504             my $array = $obj->license;
505             my $string = $obj->main_module;
506             my $string = $obj->maturity;
507             my $this = $obj->metadata;
508             my $scalar = $obj->metadata->abstract;
509             my $array = $obj->metadata->author;
510             my $boolean = $obj->metadata->dynamic_config;
511             my $scalar = $obj->metadata->generated_by;
512             my $array = $obj->metadata->license;
513             my $meta_spec_obj = $obj->metadata->meta_spec;
514             my $scalar = $obj->metadata->name;
515             my $no_index_obj = $obj->metadata->no_index;
516             my $prereqs_obj = $obj->metadata->prereqs;
517             my $scalar = $obj->metadata->release_status;
518             my $resources_obj = $obj->metadata->resources;
519             my $version_obj = $obj->metadata->version;
520             my $float = $obj->metadata->version_numified;
521             my $x_contributors_obj = $obj->metadata->x_contributors;
522             my $x_generated_by_perl_obj = $obj->metadata->x_generated_by_perl;
523             my $x_serialization_backend_obj = $obj->metadata->x_serialization_backend;
524             my $x_spdx_expression_obj = $obj->metadata->x_spdx_expression;
525             my $x_static_install_obj = $obj->metadata->x_static_install;
526             my $string = $obj->name;
527             my $str = $obj->object;
528             my $array = $obj->provides;
529             my $this = $obj->resources;
530             my $bugtracker_obj = $obj->resources->bugtracker;
531             my $homepage_obj = $obj->resources->homepage;
532             my $array = $obj->resources->license;
533             my $repository_obj = $obj->resources->repository;
534             my $this = $obj->stat;
535             my $integer = $obj->stat->gid;
536             my $integer = $obj->stat->mode;
537             my $datetime = $obj->stat->mtime;
538             my $integer = $obj->stat->size;
539             my $integer = $obj->stat->uid;
540             my $string = $obj->status;
541             my $this = $obj->tests;
542             my $integer = $obj->tests->fail;
543             my $integer = $obj->tests->na;
544             my $integer = $obj->tests->pass;
545             my $integer = $obj->tests->unknown;
546             my $vers = $obj->version;
547             my $num = $obj->version_numified;
548              
549             =head1 VERSION
550              
551             v0.1.0
552              
553             =head1 DESCRIPTION
554              
555             This class serves to retrieve and manipulate releases.
556              
557             It inherits from L<Net::API::CPAN::Generic>
558              
559             =head1 CONSTRUCTOR
560              
561             =head2 new
562              
563             Provided with an hash or hash reference of parameters, and this instantiates a new C<Net::API::CPAN::Release> object.
564              
565             The parameters that can be provided bear the same name and supports the same values as the methods below.
566              
567             =head1 METHODS
568              
569             =head2 abstract
570              
571             $obj->abstract( "Japan Folklore Object Class" );
572             my $string = $obj->abstract;
573              
574             Sets or gets a string and returns a L<scalar object|Module::Generic::Scalar>, even if there is no value.
575              
576             =head2 archive
577              
578             $obj->archive( "Folklore-Japan-v1.2.3.tar.gz" );
579             my $string = $obj->archive;
580              
581             Sets or gets a string and returns a L<scalar object|Module::Generic::Scalar>, even if there is no value.
582              
583             =head2 author
584              
585             $obj->author( "MOMOTARO" );
586             my $string = $obj->author;
587              
588             Sets or gets a string and returns a L<scalar object|Module::Generic::Scalar>, even if there is no value.
589              
590             =head2 authorized
591              
592             $obj->authorized(1);
593             my $bool = $obj->authorized;
594              
595             Sets or gets a boolean value, and returns a L<boolean object|Module::Generic::Boolean> or C<undef> if no value is set.
596              
597             =head2 changes_file
598              
599             $obj->changes_file( "CHANGES" );
600             my $string = $obj->changes_file;
601              
602             Sets or gets a string and returns a L<scalar object|Module::Generic::Scalar>, even if there is no value.
603              
604             =head2 checksum_md5
605              
606             $obj->checksum_md5( "71682907d95a4b0a4b74da8c16e88d2d" );
607             my $string = $obj->checksum_md5;
608              
609             Sets or gets a string and returns a L<scalar object|Module::Generic::Scalar>, even if there is no value.
610              
611             =head2 checksum_sha256
612              
613             $obj->checksum_sha256( "27d4da9e772bc1922618b36fdefa768344d92c3d65a5e3cc427218cfc8d7491d" );
614             my $string = $obj->checksum_sha256;
615              
616             Sets or gets a string and returns a L<scalar object|Module::Generic::Scalar>, even if there is no value.
617              
618             =head2 date
619              
620             $obj->date( "2023-07-29T05:10:12" );
621             my $datetime_obj = $obj->date;
622              
623             Sets or gets a datetime value, and returns a L<DateTime object|DateTime> that stringifies to the format that was provided with the string set (usally an ISO 8601 datetime format) or C<undef> if no value is set.
624              
625             =head2 dependency
626              
627             $obj->dependency( [
628             {
629             module => "ExtUtils::MakeMaker",
630             phase => "configure",
631             relationship => "requires",
632             version => 0,
633             },
634             {
635             module => "ExtUtils::MakeMaker",
636             phase => "build",
637             relationship => "requires",
638             version => 0,
639             },
640             {
641             module => "Module::Generic",
642             phase => "runtime",
643             relationship => "requires",
644             version => "v0.30.6",
645             },
646             {
647             module => "DateTime::Format::JP",
648             phase => "runtime",
649             relationship => "requires",
650             version => "v0.1.3",
651             },
652             {
653             module => "Mock::Person::JP",
654             phase => "runtime",
655             relationship => "requires",
656             version => "0.07",
657             },
658             {
659             module => "Net::Airline::ANA",
660             phase => "runtime",
661             relationship => "requires",
662             version => "2.34",
663             },
664             {
665             module => "Transport::Limousine::Bus",
666             phase => "runtime",
667             relationship => "requires",
668             version => "3.45",
669             },
670             {
671             module => "Net::Reservation::KorakuenGarden",
672             phase => "runtime",
673             relationship => "requires",
674             version => "v0.2.3",
675             },
676             {
677             module => "Net::Reservation::OkayamaCastle",
678             phase => "runtime",
679             relationship => "requires",
680             version => "4.03",
681             },
682             {
683             module => "strict",
684             phase => "runtime",
685             relationship => "requires",
686             version => 0,
687             },
688             {
689             module => "warnings",
690             phase => "runtime",
691             relationship => "requires",
692             version => 0,
693             },
694             {
695             module => "parent",
696             phase => "runtime",
697             relationship => "requires",
698             version => 0,
699             },
700             {
701             module => "perl",
702             phase => "runtime",
703             relationship => "requires",
704             version => "5.026001",
705             },
706             {
707             module => "Test::Pod",
708             phase => "test",
709             relationship => "requires",
710             version => "1.52",
711             },
712             {
713             module => "Test::More",
714             phase => "test",
715             relationship => "requires",
716             version => "1.302162",
717             },
718             ] );
719             my $array = $obj->dependency;
720             foreach my $this ( @$array )
721             {
722             $this->module( "ExtUtils::MakeMaker" );
723             my $scalar = $this->module;
724             $this->phase( "configure" );
725             my $scalar = $this->phase;
726             $this->relationship( "requires" );
727             my $scalar = $this->relationship;
728             $this->version( 0 );
729             my $HASH(0xaaaae87d1718) = $this->version;
730             }
731              
732             Sets or gets an array of dynamic class objects with class name C<Net::API::CPAN::Release::Dependency> and having the folowing properties also accessible as methods, and returns an L<array object|Module::Generic::Array> even if there is no value.
733              
734             A C<Net::API::CPAN::Release::Dependency> object will be instantiated with each value from the array provided and replace said value.
735              
736             =over 4
737              
738             =item * C<module> scalar_as_object
739              
740             =item * C<phase> scalar_as_object
741              
742             =item * C<relationship> scalar_as_object
743              
744             =item * C<version> L<version object|Changes::Version>
745              
746             =back
747              
748             =head2 deprecated
749              
750             $obj->deprecated(1);
751             my $bool = $obj->deprecated;
752              
753             Sets or gets a boolean value, and returns a L<boolean object|Module::Generic::Boolean> or C<undef> if no value is set.
754              
755             =head2 distribution
756              
757             $obj->distribution( "Folklore-Japan" );
758             my $string = $obj->distribution;
759              
760             Sets or gets a string and returns a L<scalar object|Module::Generic::Scalar>, even if there is no value.
761              
762             =head2 download_url
763              
764             $obj->download_url( "https://cpan.metacpan.org/authors/id/M/MO/MOMOTARO/Folklore-Japan-v0.30.5.tar.gz" );
765             my $uri = $obj->download_url;
766              
767             Sets or gets an L<URI>, and returns an L<URI object|URI> or C<undef> if no value is set.
768              
769             =head2 first
770              
771             $obj->first(1);
772             my $bool = $obj->first;
773              
774             Sets or gets a boolean value, and returns a L<boolean object|Module::Generic::Boolean> or C<undef> if no value is set.
775              
776             =head2 id
777              
778             $obj->id( "Wo09n3d3er4s_56Of7_J8ap9an" );
779             my $string = $obj->id;
780              
781             Sets or gets a string and returns a L<scalar object|Module::Generic::Scalar>, even if there is no value.
782              
783             =head2 license
784              
785             $obj->license( [
786             "perl_5",
787             ] );
788             my $array = $obj->license;
789              
790             Sets or gets an array of licenses and returns an L<array object|Module::Generic::Array>, even if there is no value.
791              
792             =head2 main_module
793              
794             $obj->main_module( "Folklore::Japan" );
795             my $string = $obj->main_module;
796              
797             Sets or gets a string and returns a L<scalar object|Module::Generic::Scalar>, even if there is no value.
798              
799             =head2 maturity
800              
801             $obj->maturity( "released" );
802             my $string = $obj->maturity;
803              
804             Sets or gets a string and returns a L<scalar object|Module::Generic::Scalar>, even if there is no value.
805              
806             =head2 metadata
807              
808             $obj->metadata( {
809             abstract => "Japan Folklore Object Class",
810             author => [
811             "Taro Momo <momo.taro\@example.jp>",
812             ],
813             dynamic_config => 1,
814             generated_by => "ExtUtils::MakeMaker version 7.64, CPAN::Meta::Converter version 2.150010, CPAN::Meta::Converter version 2.150005",
815             license => [
816             "perl_5",
817             ],
818             "meta-spec" => {
819             url => "http://search.cpan.org/perldoc?CPAN::Meta::Spec",
820             version => 2,
821             },
822             name => "Folklore-Japan",
823             no_index => {
824             directory => [
825             "t",
826             "inc",
827             "t",
828             "xt",
829             "inc",
830             "local",
831             "perl5",
832             "fatlib",
833             "example",
834             "blib",
835             "examples",
836             "eg",
837             ],
838             },
839             prereqs => {
840             build => {
841             requires => {
842             "ExtUtils::MakeMaker" => 0,
843             },
844             },
845             configure => {
846             requires => {
847             "ExtUtils::MakeMaker" => 0,
848             },
849             },
850             runtime => {
851             requires => {
852             "DateTime::Format::JP" => "v0.1.3",
853             "ExtUtils::MakeMaker" => 0,
854             "Mock::Person::JP" => "0.07",
855             "Module::Generic" => "v0.30.6",
856             "Net::Airline::ANA" => "2.34",
857             "Net::Reservation::KorakuenGarden" => "v0.2.3",
858             "Net::Reservation::OkayamaCastle" => "4.03",
859             "Test::More" => "1.302162",
860             "Test::Pod" => "1.52",
861             "Transport::Limousine::Bus" => "3.45",
862             parent => 0,
863             perl => "5.026001",
864             strict => 0,
865             warnings => 0,
866             },
867             },
868             test => {
869             requires => {
870             "Test::More" => "1.302162",
871             "Test::Pod" => "1.52",
872             },
873             },
874             },
875             release_status => "stable",
876             resources => {
877             bugtracker => {
878             web => "https://gitlab.com/momotaro/Folklore-Japan/issues",
879             },
880             homepage => {
881             web => "https://www.okayama-japan.jp/en/feature/momotaro",
882             },
883             repository => {
884             type => "git",
885             web => "https://gitlab.com/momotaro/Folklore-Japan",
886             },
887             },
888             version => "v1.2.3",
889             } );
890             my $this = $obj->metadata;
891             $obj->metadata->abstract( "Japan Folklore Object Class" );
892             my $scalar = $obj->metadata->abstract;
893             $obj->metadata->author( [
894             "Taro Momo <momo.taro\@example.jp>",
895             ] );
896             my $array = $obj->metadata->author;
897             $obj->metadata->dynamic_config( 1 );
898             my $boolean = $obj->metadata->dynamic_config;
899             $obj->metadata->generated_by( "ExtUtils::MakeMaker version 7.64, CPAN::Meta::Converter version 2.150010, CPAN::Meta::Converter version 2.150005" );
900             my $scalar = $obj->metadata->generated_by;
901             $obj->metadata->license( [
902             "perl_5",
903             ] );
904             my $array = $obj->metadata->license;
905             my $meta_spec_obj = $obj->metadata->meta_spec;
906             $obj->metadata->name( "Folklore-Japan" );
907             my $scalar = $obj->metadata->name;
908             $obj->metadata->no_index( {
909             directory => [
910             "t",
911             "inc",
912             "t",
913             "xt",
914             "inc",
915             "local",
916             "perl5",
917             "fatlib",
918             "example",
919             "blib",
920             "examples",
921             "eg",
922             ],
923             } );
924             my $no_index_obj = $obj->metadata->no_index;
925             $obj->metadata->prereqs( {
926             build => {
927             requires => {
928             "ExtUtils::MakeMaker" => 0,
929             },
930             },
931             configure => {
932             requires => {
933             "ExtUtils::MakeMaker" => 0,
934             },
935             },
936             runtime => {
937             requires => {
938             "DateTime::Format::JP" => "v0.1.3",
939             "ExtUtils::MakeMaker" => 0,
940             "Mock::Person::JP" => "0.07",
941             "Module::Generic" => "v0.30.6",
942             "Net::Airline::ANA" => "2.34",
943             "Net::Reservation::KorakuenGarden" => "v0.2.3",
944             "Net::Reservation::OkayamaCastle" => "4.03",
945             "Test::More" => "1.302162",
946             "Test::Pod" => "1.52",
947             "Transport::Limousine::Bus" => "3.45",
948             parent => 0,
949             perl => "5.026001",
950             strict => 0,
951             warnings => 0,
952             },
953             },
954             test => {
955             requires => {
956             "Test::More" => "1.302162",
957             "Test::Pod" => "1.52",
958             },
959             },
960             } );
961             my $prereqs_obj = $obj->metadata->prereqs;
962             $obj->metadata->release_status( "stable" );
963             my $scalar = $obj->metadata->release_status;
964             $obj->metadata->resources( {
965             bugtracker => {
966             web => "https://gitlab.com/momotaro/Folklore-Japan/issues",
967             },
968             homepage => {
969             web => "https://www.okayama-japan.jp/en/feature/momotaro",
970             },
971             repository => {
972             type => "git",
973             web => "https://gitlab.com/momotaro/Folklore-Japan",
974             },
975             } );
976             my $resources_obj = $obj->metadata->resources;
977             $obj->metadata->version( "v1.2.3" );
978             my $version_obj = $obj->metadata->version;
979             my $float = $obj->metadata->version_numified;
980             my $x_contributors_obj = $obj->metadata->x_contributors;
981             my $x_generated_by_perl_obj = $obj->metadata->x_generated_by_perl;
982             my $x_serialization_backend_obj = $obj->metadata->x_serialization_backend;
983             my $x_spdx_expression_obj = $obj->metadata->x_spdx_expression;
984             my $x_static_install_obj = $obj->metadata->x_static_install;
985              
986             Sets or gets a dynamic class object with class name C<Net::API::CPAN::Release::Metadata> and having the folowing properties also accessible as methods, and returns an object from such class, or C<undef> if no value was provided.
987              
988             =over 4
989              
990             =item * C<abstract> scalar_as_object
991              
992             =item * C<author> array (L<array object|Module::Generic::Array>)
993              
994             =item * C<dynamic_config> boolean (L<boolean object|Module::Generic::Boolean>)
995              
996             =item * C<generated_by> scalar_as_object
997              
998             =item * C<license> array (L<array object|Module::Generic::Array>)
999              
1000             =item * C<meta_spec> dynamic subclass (hash reference)
1001              
1002             =over 8
1003              
1004             =item * C<url> URI (L<uri object|URI>)
1005              
1006             =item * C<version> L<version object|Changes::Version>
1007              
1008             =back
1009              
1010             =item * C<name> scalar_as_object
1011              
1012             =item * C<no_index> dynamic subclass (hash reference)
1013              
1014             =over 8
1015              
1016             =item * C<directory> array (L<array object|Module::Generic::Array>)
1017              
1018             =item * C<package> array (L<array object|Module::Generic::Array>)
1019              
1020             =back
1021              
1022             =item * C<prereqs> dynamic subclass (hash reference)
1023              
1024             =over 8
1025              
1026             =item * C<build> dynamic subclass (hash reference)
1027              
1028             =over 12
1029              
1030             =item * C<recommends> hash_as_object
1031              
1032             =item * C<requires> hash_as_object
1033              
1034             =item * C<suggests> hash_as_object
1035              
1036             =back
1037              
1038             =item * C<configure> dynamic subclass (hash reference)
1039              
1040             =over 12
1041              
1042             =item * C<recommends> hash_as_object
1043              
1044             =item * C<requires> hash_as_object
1045              
1046             =item * C<suggests> hash_as_object
1047              
1048             =back
1049              
1050             =item * C<develop> dynamic subclass (hash reference)
1051              
1052             =over 12
1053              
1054             =item * C<recommends> hash_as_object
1055              
1056             =item * C<requires> hash_as_object
1057              
1058             =item * C<suggests> hash_as_object
1059              
1060             =back
1061              
1062             =item * C<runtime> dynamic subclass (hash reference)
1063              
1064             =over 12
1065              
1066             =item * C<recommends> hash_as_object
1067              
1068             =item * C<requires> hash_as_object
1069              
1070             =item * C<suggests> hash_as_object
1071              
1072             =back
1073              
1074             =item * C<test> dynamic subclass (hash reference)
1075              
1076             =over 12
1077              
1078             =item * C<recommends> hash_as_object
1079              
1080             =item * C<requires> hash_as_object
1081              
1082             =item * C<suggests> hash_as_object
1083              
1084             =back
1085              
1086             =back
1087              
1088             =item * C<release_status> scalar_as_object
1089              
1090             =item * C<resources> dynamic subclass (hash reference)
1091              
1092             =over 8
1093              
1094             =item * C<bugtracker> dynamic subclass (hash reference)
1095              
1096             =over 12
1097              
1098             =item * C<mailto> URI (L<uri object|URI>)
1099              
1100             =item * C<type> string
1101              
1102             =item * C<web> URI (L<uri object|URI>)
1103              
1104             =back
1105              
1106             =item * C<homepage> dynamic subclass (hash reference)
1107              
1108             =over 12
1109              
1110             =item * C<web> URI (L<uri object|URI>)
1111              
1112             =back
1113              
1114             =item * C<license> array (L<array object|Module::Generic::Array>)
1115              
1116             =item * C<repository> dynamic subclass (hash reference)
1117              
1118             =over 12
1119              
1120             =item * C<type> string (L<scalar object|Module::Generic::Scalar>)
1121              
1122             =item * C<url> URI (L<uri object|URI>)
1123              
1124             =item * C<web> URI (L<uri object|URI>)
1125              
1126             =back
1127              
1128             =back
1129              
1130             =item * C<version> L<version object|Changes::Version>
1131              
1132             =item * C<version_numified> integer (L<number object|Module::Generic::Number>)
1133              
1134             =item * C<x_contributors> array (L<array object|Module::Generic::Array>)
1135              
1136             =item * C<x_generated_by_perl> string
1137              
1138             =item * C<x_serialization_backend> string
1139              
1140             =item * C<x_spdx_expression> string
1141              
1142             =item * C<x_static_install> string
1143              
1144             =back
1145              
1146             =head2 name
1147              
1148             $obj->name( "Folklore-Japan-v1.2.3" );
1149             my $string = $obj->name;
1150              
1151             Sets or gets a string and returns a L<scalar object|Module::Generic::Scalar>, even if there is no value.
1152              
1153             =head2 object
1154              
1155             Returns the object type for this class, which is C<release>
1156              
1157             =head2 provides
1158              
1159             $obj->provides( [
1160             "Folklore::Japan",
1161             "Folklore::Japan::AmaterasuOmikami",
1162             "Folklore::Japan::Izumo",
1163             "Folklore::Japan::Kintaro",
1164             "Folklore::Japan::Kitsune",
1165             "Folklore::Japan::Kojiki",
1166             "Folklore::Japan::MomoTaro",
1167             "Folklore::Japan::NihonShoki",
1168             "Folklore::Japan::Okayama",
1169             "Folklore::Japan::Susanoo",
1170             "Folklore::Japan::Tanuki",
1171             "Folklore::Japan::Tengu",
1172             "Folklore::Japan::UrashimaTaro",
1173             ] );
1174             my $array = $obj->provides;
1175              
1176             Sets or gets an array of module class names and returns an L<array object|Module::Generic::Array>, even if there is no value.
1177              
1178             =head2 resources
1179              
1180             $obj->resources( {
1181             bugtracker => {
1182             web => "https://gitlab.com/momotaro/Folklore-Japan/issues",
1183             },
1184             repository => {
1185             type => "git",
1186             web => "https://gitlab.com/momotaro/Folklore-Japan",
1187             },
1188             } );
1189             my $this = $obj->resources;
1190             $obj->resources->bugtracker( {
1191             web => "https://gitlab.com/momotaro/Folklore-Japan/issues",
1192             } );
1193             my $bugtracker_obj = $obj->resources->bugtracker;
1194             my $homepage_obj = $obj->resources->homepage;
1195             my $array = $obj->resources->license;
1196             $obj->resources->repository( {
1197             type => "git",
1198             web => "https://gitlab.com/momotaro/Folklore-Japan",
1199             } );
1200             my $repository_obj = $obj->resources->repository;
1201              
1202             Sets or gets a dynamic class object with class name C<Net::API::CPAN::Release::Resources> and having the folowing properties also accessible as methods, and returns an object from such class, or C<undef> if no value was provided.
1203              
1204             =over 4
1205              
1206             =item * C<bugtracker> dynamic subclass (hash reference)
1207              
1208             =over 8
1209              
1210             =item * C<mailto> URI (L<uri object|URI>)
1211              
1212             =item * C<type> string
1213              
1214             =item * C<web> URI (L<uri object|URI>)
1215              
1216             =back
1217              
1218             =item * C<homepage> dynamic subclass (hash reference)
1219              
1220             =over 8
1221              
1222             =item * C<web> URI (L<uri object|URI>)
1223              
1224             =back
1225              
1226             =item * C<license> array (L<array object|Module::Generic::Array>)
1227              
1228             =item * C<repository> dynamic subclass (hash reference)
1229              
1230             =over 8
1231              
1232             =item * C<type> string (L<scalar object|Module::Generic::Scalar>)
1233              
1234             =item * C<url> URI (L<uri object|URI>)
1235              
1236             =item * C<web> URI (L<uri object|URI>)
1237              
1238             =back
1239              
1240             =back
1241              
1242             =head2 stat
1243              
1244             $obj->stat( {
1245             gid => 12345,
1246             mode => 33188,
1247             mtime => 1690618397,
1248             size => 10240,
1249             uid => 16790,
1250             } );
1251             my $this = $obj->stat;
1252             $obj->stat->gid( 12345 );
1253             my $integer = $obj->stat->gid;
1254             $obj->stat->mode( 33188 );
1255             my $integer = $obj->stat->mode;
1256             $obj->stat->mtime( 1690618397 );
1257             my $datetime = $obj->stat->mtime;
1258             $obj->stat->size( 10240 );
1259             my $integer = $obj->stat->size;
1260             $obj->stat->uid( 16790 );
1261             my $integer = $obj->stat->uid;
1262              
1263             Sets or gets a dynamic class object with class name C<Net::API::CPAN::Release::Stat> and having the folowing properties also accessible as methods, and returns an object from such class, or C<undef> if no value was provided.
1264              
1265             =over 4
1266              
1267             =item * C<gid> integer (L<number object|Module::Generic::Number>)
1268              
1269             =item * C<mode> integer (L<number object|Module::Generic::Number>)
1270              
1271             =item * C<mtime> datetime
1272              
1273             =item * C<size> integer (L<number object|Module::Generic::Number>)
1274              
1275             =item * C<uid> integer (L<number object|Module::Generic::Number>)
1276              
1277             =back
1278              
1279             =head2 status
1280              
1281             $obj->status( "latest" );
1282             my $string = $obj->status;
1283              
1284             Sets or gets a string and returns a L<scalar object|Module::Generic::Scalar>, even if there is no value.
1285              
1286             =head2 tests
1287              
1288             Sets or gets a dynamic class object with class name C<Net::API::CPAN::Release::Tests> and having the folowing properties also accessible as methods, and returns an object from such class, or C<undef> if no value was provided.
1289              
1290             =over 4
1291              
1292             =item * C<fail> integer (L<number object|Module::Generic::Number>)
1293              
1294             =item * C<na> integer (L<number object|Module::Generic::Number>)
1295              
1296             =item * C<pass> integer (L<number object|Module::Generic::Number>)
1297              
1298             =item * C<unknown> integer (L<number object|Module::Generic::Number>)
1299              
1300             =back
1301              
1302             =head2 version
1303              
1304             $obj->version( "v1.2.3" );
1305             my $version = $obj->version;
1306              
1307             Sets or gets a version value and returns a version object using L<Changes::Version>.
1308              
1309             =head2 version_numified
1310              
1311             $obj->version_numified("1.002003");
1312             my $number = $obj->version_numified;
1313              
1314             Sets or gets a float value, and returns a L<number object|Module::Generic::Number> or C<undef> if no value is set.
1315              
1316             =head1 API SAMPLE
1317              
1318             {
1319             "abstract" : "Japan Folklore Object Class",
1320             "archive" : "Folklore-Japan-v1.2.3.tar.gz",
1321             "author" : "MOMOTARO",
1322             "authorized" : true,
1323             "changes_file" : "CHANGES",
1324             "checksum_md5" : "71682907d95a4b0a4b74da8c16e88d2d",
1325             "checksum_sha256" : "27d4da9e772bc1922618b36fdefa768344d92c3d65a5e3cc427218cfc8d7491d",
1326             "date" : "2023-07-29T05:10:12",
1327             "dependency" : [
1328             {
1329             "module" : "ExtUtils::MakeMaker",
1330             "phase" : "configure",
1331             "relationship" : "requires",
1332             "version" : "0"
1333             },
1334             {
1335             "module" : "ExtUtils::MakeMaker",
1336             "phase" : "build",
1337             "relationship" : "requires",
1338             "version" : "0"
1339             },
1340             {
1341             "module" : "Module::Generic",
1342             "phase" : "runtime",
1343             "relationship" : "requires",
1344             "version" : "v0.30.6"
1345             },
1346             {
1347             "module" : "DateTime::Format::JP",
1348             "phase" : "runtime",
1349             "relationship" : "requires",
1350             "version" : "v0.1.3"
1351             },
1352             {
1353             "module" : "Mock::Person::JP",
1354             "phase" : "runtime",
1355             "relationship" : "requires",
1356             "version" : "0.07"
1357             },
1358             {
1359             "module" : "Net::Airline::ANA",
1360             "phase" : "runtime",
1361             "relationship" : "requires",
1362             "version" : "2.34"
1363             },
1364             {
1365             "module" : "Transport::Limousine::Bus",
1366             "phase" : "runtime",
1367             "relationship" : "requires",
1368             "version" : "3.45"
1369             },
1370             {
1371             "module" : "Net::Reservation::KorakuenGarden",
1372             "phase" : "runtime",
1373             "relationship" : "requires",
1374             "version" : "v0.2.3"
1375             },
1376             {
1377             "module" : "Net::Reservation::OkayamaCastle",
1378             "phase" : "runtime",
1379             "relationship" : "requires",
1380             "version" : "4.03"
1381             },
1382             {
1383             "module" : "strict",
1384             "phase" : "runtime",
1385             "relationship" : "requires",
1386             "version" : "0"
1387             },
1388             {
1389             "module" : "warnings",
1390             "phase" : "runtime",
1391             "relationship" : "requires",
1392             "version" : "0"
1393             },
1394             {
1395             "module" : "parent",
1396             "phase" : "runtime",
1397             "relationship" : "requires",
1398             "version" : "0"
1399             },
1400             {
1401             "module" : "perl",
1402             "phase" : "runtime",
1403             "relationship" : "requires",
1404             "version" : "5.026001"
1405             },
1406             {
1407             "module" : "Test::Pod",
1408             "phase" : "test",
1409             "relationship" : "requires",
1410             "version" : "1.52"
1411             },
1412             {
1413             "module" : "Test::More",
1414             "phase" : "test",
1415             "relationship" : "requires",
1416             "version" : "1.302162"
1417             }
1418             ],
1419             "deprecated" : false,
1420             "distribution" : "Folklore-Japan",
1421             "download_url" : "https://cpan.metacpan.org/authors/id/M/MO/MOMOTARO/Folklore-Japan-v0.30.5.tar.gz",
1422             "first" : false,
1423             "id" : "Wo09n3d3er4s_56Of7_J8ap9an",
1424             "license" : [
1425             "perl_5"
1426             ],
1427             "main_module" : "Folklore::Japan",
1428             "maturity" : "released",
1429             "metadata" : {
1430             "abstract" : "Japan Folklore Object Class",
1431             "author" : [
1432             "Taro Momo <momo.taro@example.jp>"
1433             ],
1434             "dynamic_config" : 1,
1435             "generated_by" : "ExtUtils::MakeMaker version 7.64, CPAN::Meta::Converter version 2.150010, CPAN::Meta::Converter version 2.150005",
1436             "license" : [
1437             "perl_5"
1438             ],
1439             "meta-spec" : {
1440             "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec",
1441             "version" : 2
1442             },
1443             "name" : "Folklore-Japan",
1444             "no_index" : {
1445             "directory" : [
1446             "t",
1447             "inc",
1448             "t",
1449             "xt",
1450             "inc",
1451             "local",
1452             "perl5",
1453             "fatlib",
1454             "example",
1455             "blib",
1456             "examples",
1457             "eg"
1458             ]
1459             },
1460             "prereqs" : {
1461             "build" : {
1462             "requires" : {
1463             "ExtUtils::MakeMaker" : "0"
1464             }
1465             },
1466             "configure" : {
1467             "requires" : {
1468             "ExtUtils::MakeMaker" : "0"
1469             }
1470             },
1471             "runtime" : {
1472             "requires" : {
1473             "DateTime::Format::JP" : "v0.1.3",
1474             "ExtUtils::MakeMaker" : "0",
1475             "Mock::Person::JP" : "0.07",
1476             "Module::Generic" : "v0.30.6",
1477             "Net::Airline::ANA" : "2.34",
1478             "Net::Reservation::KorakuenGarden" : "v0.2.3",
1479             "Net::Reservation::OkayamaCastle" : "4.03",
1480             "Test::More" : "1.302162",
1481             "Test::Pod" : "1.52",
1482             "Transport::Limousine::Bus" : "3.45",
1483             "parent" : "0",
1484             "perl" : "5.026001",
1485             "strict" : "0",
1486             "warnings" : "0"
1487             }
1488             },
1489             "test" : {
1490             "requires" : {
1491             "Test::More" : "1.302162",
1492             "Test::Pod" : "1.52",
1493             }
1494             }
1495             },
1496             "release_status" : "stable",
1497             "resources" : {
1498             "bugtracker" : {
1499             "web" : "https://gitlab.com/momotaro/Folklore-Japan/issues"
1500             },
1501             "repository" : {
1502             "type" : "git",
1503             "web" : "https://gitlab.com/momotaro/Folklore-Japan"
1504             },
1505             "homepage" : {
1506             "web" : "https://www.okayama-japan.jp/en/feature/momotaro"
1507             }
1508             },
1509             "version" : "v1.2.3",
1510             },
1511             "name" : "Folklore-Japan-v1.2.3",
1512             "provides" : [
1513             "Folklore::Japan",
1514             "Folklore::Japan::AmaterasuOmikami",
1515             "Folklore::Japan::Izumo",
1516             "Folklore::Japan::Kintaro",
1517             "Folklore::Japan::Kitsune",
1518             "Folklore::Japan::Kojiki",
1519             "Folklore::Japan::MomoTaro",
1520             "Folklore::Japan::NihonShoki",
1521             "Folklore::Japan::Okayama",
1522             "Folklore::Japan::Susanoo",
1523             "Folklore::Japan::Tanuki",
1524             "Folklore::Japan::Tengu",
1525             "Folklore::Japan::UrashimaTaro",
1526             ],
1527             "resources" : {
1528             "bugtracker" : {
1529             "web" : "https://gitlab.com/momotaro/Folklore-Japan/issues"
1530             },
1531             "repository" : {
1532             "type" : "git",
1533             "web" : "https://gitlab.com/momotaro/Folklore-Japan"
1534             }
1535             },
1536             "stat" : {
1537             "gid" : 12345,
1538             "mode" : 33188,
1539             "mtime" : 1690618397,
1540             "size" : 10240,
1541             "uid" : 16790
1542             },
1543             "status" : "latest",
1544             "version" : "v1.2.3",
1545             "version_numified" : 1.002003
1546             }
1547              
1548             =head1 AUTHOR
1549              
1550             Jacques Deguest E<lt>F<jack@deguest.jp>E<gt>
1551              
1552             =head1 SEE ALSO
1553              
1554             L<Net::API::CPAN>, L<Net::API::CPAN::Activity>, L<Net::API::CPAN::Author>, L<Net::API::CPAN::Changes>, L<Net::API::CPAN::Changes::Release>, L<Net::API::CPAN::Contributor>, L<Net::API::CPAN::Cover>, L<Net::API::CPAN::Diff>, L<Net::API::CPAN::Distribution>, L<Net::API::CPAN::DownloadUrl>, L<Net::API::CPAN::Favorite>, L<Net::API::CPAN::File>, L<Net::API::CPAN::Module>, L<Net::API::CPAN::Package>, L<Net::API::CPAN::Permission>, L<Net::API::CPAN::Rating>, L<Net::API::CPAN::Release>
1555              
1556             L<MetaCPAN::API>, L<MetaCPAN::Client>
1557              
1558             L<https://github.com/metacpan/metacpan-api/blob/master/docs/API-docs.md>
1559              
1560             =head1 COPYRIGHT & LICENSE
1561              
1562             Copyright(c) 2023 DEGUEST Pte. Ltd.
1563              
1564             All rights reserved
1565              
1566             This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
1567              
1568             =cut
1569