Skip to content

Commit efe4c12

Browse files
committed
Update permissions aggregator to use PTS groups
1 parent 8de991d commit efe4c12

File tree

2 files changed

+125
-28
lines changed

2 files changed

+125
-28
lines changed

.gitignore

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
*.swp
1+
02packages.details.txt
22
.carton
3-
.tidyall.d/
43
cpanfile.snapshot
54
local
5+
*.swp
6+
.tidyall.d/

scripts/permission/aggregate-author-perms.pl

100644100755
+122-26
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,21 @@
1+
#!/usr/bin/env perl
2+
13
use strict;
24
use warnings;
35
use feature qw( say );
46

57
use CLDR::Number ();
68
use Cpanel::JSON::XS qw( decode_json );
79
use Data::Printer;
8-
use List::Compare ();
10+
use List::Compare ();
11+
use LWP::UserAgent ();
912
use Math::Round qw( nearest );
1013
use Parse::CPAN::Packages::Fast ();
1114
use WWW::Mechanize::Cached ();
1215

13-
use CLDR::Number;
1416
my $cldr = CLDR::Number->new( locale => 'en' );
1517
my $decf = $cldr->decimal_formatter;
16-
my $perf = $cldr->percent_formatter(minimum_fraction_digits => 2);
18+
my $perf = $cldr->percent_formatter( minimum_fraction_digits => 2 );
1719

1820
my @maxmind_authors = (
1921
'OALDERS', 'EILARA', 'TJMATHER', 'MATEU', 'OSCHWALD', 'RSRCHBOY',
@@ -22,40 +24,134 @@
2224
);
2325
my @maxmind_redacted_authors = (
2426
'OALDERS', 'EILARA', 'TJMATHER', 'MATEU', 'OSCHWALD', 'RSRCHBOY',
25-
'MARKF', 'RUBEN', 'WDS', 'KLPTWO', 'PCRONIN',
26-
'ANDYJACK',
27+
'MARKF', 'RUBEN', 'WDS', 'KLPTWO', 'PCRONIN', 'ANDYJACK',
2728
);
28-
my @pts_authors = (
29-
'ABELJTE', 'ANDK', 'ARC', 'ARISTOTLE', 'ATOOMIC', 'BINGOS', 'BOOK',
30-
'ELBEHO', 'ELIZABETH', 'ETHER', 'GARU', 'HAARG', 'HMBRAND', 'INGY',
31-
'ISHIGAKI', 'JBERGER', 'LEEJO', 'LEONT', 'LLAP', 'MICKEY',
32-
'MITHALDU', 'MOHAWK', 'NEILB', 'NINE', 'OALDERS', 'PJCJ',
33-
'PREACTION', 'SARGIE', 'SKAJI', 'SREZIC', 'TADZIK', 'TINITA',
34-
'TODDR', 'UGEXE', 'WOLFSAGE', 'XSAWYERX',
29+
30+
my %PTS = (
31+
'qa2010' => [
32+
'CHORNY', 'HMBRAND', 'RURBAN', 'MARCEL',
33+
'BOOK', 'BDFOY', 'ANDYA', 'POTYL',
34+
'DAXIM', 'ABELTJE', 'OVID', 'HORNBURG',
35+
'DOMM', 'MIYAGAWA', 'PJCJ', 'BARBIE',
36+
'FLORA', 'RJBS', 'JKUTEJ', 'SREZIC',
37+
'MSCHWERN', 'SZABGAB', 'RGIERSIG', 'SQUEEK',
38+
'PEPL'
39+
],
40+
'qa2011' => [
41+
'RGE', 'HMBRAND', 'MARCEL', 'SCHWIGON',
42+
'LEONT', 'BOOK', 'BDFOY', 'ANDYA',
43+
'AVAR', 'POTYL', 'DAXIM', 'ABELTJE',
44+
'SMUELLER', 'OVID', 'DOLMEN', 'WESJDJ',
45+
'SAPER', 'ADAMK', 'PJCJ', 'FLORA',
46+
'ABIGAIL', 'RJBS', 'PERLER', 'DGL',
47+
'JKUTEJ', 'WONKO', 'ADIE', 'BURAK'
48+
],
49+
'qa2012' => [
50+
'XAV', 'HMBRAND', 'CHESSKIT', 'NPEREZ',
51+
'RGARCIA', 'ELIZABETH', 'DAGOLDEN', 'SCHWIGON',
52+
'LEONT', 'BOOK', 'BDFOY', 'ANDYA',
53+
'HAGGAI', 'GETTY', 'DAXIM', 'DDUMONT',
54+
'ABELTJE', 'OVID', 'ELBEHO', 'WOLFSAGE',
55+
'DOLMEN', 'WESJDJ', 'PAUAMMA', 'SAPER',
56+
'OALDERS', 'MIYAGAWA', 'PJCJ', 'BARBIE',
57+
'FLORA', 'VPIT', 'RJBS', 'DGL',
58+
'ISHIGAKI', 'WONKO', 'SREZIC', 'MSCHWERN',
59+
'GARU', 'RIBASUSHI', 'ADIE', 'APEIRON',
60+
'ANDK'
61+
],
62+
'qa2013' => [
63+
'PERRETTDL', 'SJN', 'TBSLIVER', 'JROBINSON',
64+
'MITHALDU', 'HMBRAND', 'ELIZABETH', 'DAGOLDEN',
65+
'SCHWIGON', 'JKEENAN', 'LEONT', 'BOOK',
66+
'BANNAN', 'ANDYA', 'DREBOLO', 'PDCAWLEY',
67+
'GETTY', 'BINGOS', 'ABELTJE', 'REHSACK',
68+
'BYTEROCK', 'WOLFSAGE', 'DOLMEN', 'BBUSS',
69+
'PJCJ', 'BARBIE', 'ARC', 'RJBS',
70+
'DGL', 'ISHIGAKI', 'RIBASUSHI', 'JMASTROS',
71+
'ANDK', 'NEWELLC'
72+
],
73+
'qa2014' => [
74+
'SJN', 'ETHER', 'MITHALDU', 'HMBRAND',
75+
'ELIZABETH', 'DAGOLDEN', 'SCHWIGON', 'LEONT',
76+
'BOOK', 'DAMS', 'MSTROUT', 'ABELTJE',
77+
'TIMB', 'FROGGS', 'OVID', 'REHSACK',
78+
'ELBEHO', 'WOLFSAGE', 'DOLMEN', 'SAPER',
79+
'OALDERS', 'PJCJ', 'BARBIE', 'RJBS',
80+
'ISHIGAKI', 'NEILB', 'SREZIC', 'RIBASUSHI',
81+
'HAARG', 'ANDK'
82+
],
83+
'qa2015' => [
84+
'SJN', 'ETHER', 'MITHALDU', 'HMBRAND',
85+
'ELIZABETH', 'DAGOLDEN', 'SCHWIGON', 'LEONT',
86+
'EXODIST', 'BOOK', 'TADZIK', 'TINITA',
87+
'ABELTJE', 'INGY', 'FROGGS', 'REHSACK',
88+
'WOLFSAGE', 'DOLMEN', 'OALDERS', 'WOLLMERS',
89+
'MIYAGAWA', 'PJCJ', 'BARBIE', 'BARTOLIN',
90+
'RJBS', 'ISHIGAKI', 'NEILB', 'SREZIC',
91+
'DRTECH', 'RIBASUSHI', 'LICHTKIND', 'ARISTOTLE',
92+
'ANDK', 'NINE'
93+
],
94+
'qa2016' => [
95+
'ETHER', 'HMBRAND', 'LLAP', 'ELIZABETH',
96+
'SCHWIGON', 'JKEENAN', 'LEONT', 'EXODIST',
97+
'BOOK', 'TADZIK', 'MICKEY', 'BINGOS',
98+
'ABELTJE', 'TIMB', 'JBERGER', 'WOLFSAGE',
99+
'DOLMEN', 'OALDERS', 'PJCJ', 'BARBIE',
100+
'ARC', 'RJBS', 'ISHIGAKI', 'XSAWYERX',
101+
'NEILB', 'SREZIC', 'ARISTOTLE', 'SARGIE',
102+
'ANDK'
103+
],
104+
'qa2017' => [
105+
'ETHER', 'MITHALDU', 'HMBRAND', 'LEEJO',
106+
'LLAP', 'SKAJI', 'ELIZABETH', 'LEONT',
107+
'UGEXE', 'BOOK', 'TODDR', 'PREACTION',
108+
'TADZIK', 'MICKEY', 'BINGOS', 'TINITA',
109+
'ABELTJE', 'INGY', 'JBERGER', 'ELBEHO',
110+
'WOLFSAGE', 'OALDERS', 'MIYAGAWA', 'PJCJ',
111+
'ARC', 'ETJ', 'ISHIGAKI', 'XSAWYERX',
112+
'NEILB', 'SREZIC', 'GARU', 'ATOOMIC',
113+
'ARISTOTLE', 'HAARG', 'ANDK', 'NINE'
114+
],
35115
);
36116

117+
my $ua = LWP::UserAgent->new;
118+
$ua->mirror( 'https://cpan.metacpan.org/modules/02packages.details.txt',
119+
'02packages.details.txt' );
120+
37121
my $parser = Parse::CPAN::Packages::Fast->new('02packages.details.txt');
38-
crunch_numbers( 'MM+PTS', [ @maxmind_authors, @pts_authors ] );
39-
crunch_numbers( 'PTS', \@pts_authors );
40-
crunch_numbers( 'DROLSKY', ['DROLSKY'] );
41-
crunch_numbers( 'MM', \@maxmind_authors );
42-
crunch_numbers( 'ETHER+FLORA', [ 'ETHER', 'FLORA' ] );
43-
crunch_numbers( 'ETHER', ['ETHER'] );
44-
crunch_numbers( 'FLORA', ['FLORA'] );
45-
crunch_numbers( 'MM-FLORA', \@maxmind_redacted_authors );
46-
crunch_numbers( 'OALDERS', ['OALDERS'] );
122+
123+
say join '|',
124+
(
125+
q{},
126+
q{},
127+
'Modules with maint',
128+
'Modules in 02packages',
129+
'% of modules in 02packages',
130+
);
131+
say join '---', ( ('|') x 5 );
132+
133+
for my $author ( sort @{$PTS{qa2017}} ) {
134+
crunch_numbers( $author, [$author]);
135+
}
136+
137+
for my $group_name ( sort keys %PTS ) {
138+
crunch_numbers( $group_name, $PTS{$group_name} );
139+
}
47140

48141
sub crunch_numbers {
49142
my $title = shift;
50143
my $authors = shift;
51-
my %perms = get_permissions($authors);
144+
145+
# The modules which these authors have release permissions on.
146+
my %perms = get_permissions($authors);
147+
52148
my $lc = List::Compare->new( [ $parser->packages ], [ keys %perms ] );
149+
150+
# The permissioned modules which actually appear in 02packages.
53151
my @covered = $lc->get_intersection;
54152

55-
my $percent = nearest(
56-
0.0001,
57-
scalar @covered / ( scalar $parser->packages )
58-
);
153+
my $percent
154+
= nearest( 0.0001, scalar @covered / ( scalar $parser->packages ) );
59155

60156
say join '|', $title, $decf->format( scalar keys %perms ),
61157
$decf->format( scalar @covered ), $perf->format($percent);

0 commit comments

Comments
 (0)