| config.py |
(no class) |
|
85 |
2 |
12 |
|
98% |
| config_local.py |
(no class) |
|
5 |
0 |
0 |
|
100% |
| config_local_test.py |
(no class) |
|
1 |
1 |
0 |
|
0% |
| ivatar/__init__.py |
(no class) |
|
1 |
0 |
0 |
|
100% |
| ivatar/access_stats.py |
AccessStatsManager |
|
86 |
21 |
0 |
|
76% |
| ivatar/access_stats.py |
(no class) |
|
20 |
0 |
0 |
|
100% |
| ivatar/context_processors.py |
(no class) |
|
21 |
0 |
1 |
|
100% |
| ivatar/file_security.py |
FileUploadSecurityError |
|
0 |
0 |
0 |
|
100% |
| ivatar/file_security.py |
FileValidator |
|
116 |
14 |
0 |
|
88% |
| ivatar/file_security.py |
(no class) |
|
35 |
0 |
0 |
|
100% |
| ivatar/ivataraccount/__init__.py |
(no class) |
|
1 |
0 |
0 |
|
100% |
| ivatar/ivataraccount/admin.py |
(no class) |
|
13 |
0 |
0 |
|
100% |
| ivatar/ivataraccount/auth.py |
FedoraOpenIdConnect |
|
3 |
0 |
0 |
|
100% |
| ivatar/ivataraccount/auth.py |
(no class) |
|
38 |
3 |
0 |
|
92% |
| ivatar/ivataraccount/forms.py |
AddEmailForm |
|
23 |
0 |
0 |
|
100% |
| ivatar/ivataraccount/forms.py |
UploadPhotoForm |
|
50 |
16 |
0 |
|
68% |
| ivatar/ivataraccount/forms.py |
AddOpenIDForm |
|
13 |
0 |
0 |
|
100% |
| ivatar/ivataraccount/forms.py |
UpdatePreferenceForm |
|
0 |
0 |
0 |
|
100% |
| ivatar/ivataraccount/forms.py |
UpdatePreferenceForm.Meta |
|
0 |
0 |
0 |
|
100% |
| ivatar/ivataraccount/forms.py |
UploadLibravatarExportForm |
|
0 |
0 |
0 |
|
100% |
| ivatar/ivataraccount/forms.py |
DeleteAccountForm |
|
0 |
0 |
0 |
|
100% |
| ivatar/ivataraccount/forms.py |
(no class) |
|
40 |
0 |
0 |
|
100% |
| ivatar/ivataraccount/gravatar.py |
(no class) |
|
18 |
1 |
6 |
|
94% |
| ivatar/ivataraccount/migrations/0001_initial.py |
Migration |
|
0 |
0 |
0 |
|
100% |
| ivatar/ivataraccount/migrations/0001_initial.py |
(no class) |
|
7 |
0 |
0 |
|
100% |
| ivatar/ivataraccount/migrations/0002_openidassociation_openidnonce.py |
Migration |
|
0 |
0 |
0 |
|
100% |
| ivatar/ivataraccount/migrations/0002_openidassociation_openidnonce.py |
(no class) |
|
4 |
0 |
0 |
|
100% |
| ivatar/ivataraccount/migrations/0003_auto_20180508_0637.py |
Migration |
|
0 |
0 |
0 |
|
100% |
| ivatar/ivataraccount/migrations/0003_auto_20180508_0637.py |
(no class) |
|
5 |
0 |
0 |
|
100% |
| ivatar/ivataraccount/migrations/0004_auto_20180508_0742.py |
Migration |
|
0 |
0 |
0 |
|
100% |
| ivatar/ivataraccount/migrations/0004_auto_20180508_0742.py |
(no class) |
|
5 |
0 |
0 |
|
100% |
| ivatar/ivataraccount/migrations/0005_auto_20180522_1155.py |
Migration |
|
0 |
0 |
0 |
|
100% |
| ivatar/ivataraccount/migrations/0005_auto_20180522_1155.py |
(no class) |
|
4 |
0 |
0 |
|
100% |
| ivatar/ivataraccount/migrations/0006_auto_20180626_1445.py |
Migration |
|
0 |
0 |
0 |
|
100% |
| ivatar/ivataraccount/migrations/0006_auto_20180626_1445.py |
(no class) |
|
4 |
0 |
0 |
|
100% |
| ivatar/ivataraccount/migrations/0007_auto_20180627_0624.py |
Migration |
|
0 |
0 |
0 |
|
100% |
| ivatar/ivataraccount/migrations/0007_auto_20180627_0624.py |
(no class) |
|
8 |
0 |
1 |
|
100% |
| ivatar/ivataraccount/migrations/0008_userpreference.py |
Migration |
|
0 |
0 |
0 |
|
100% |
| ivatar/ivataraccount/migrations/0008_userpreference.py |
(no class) |
|
10 |
0 |
2 |
|
100% |
| ivatar/ivataraccount/migrations/0009_auto_20180705_1152.py |
Migration |
|
0 |
0 |
0 |
|
100% |
| ivatar/ivataraccount/migrations/0009_auto_20180705_1152.py |
(no class) |
|
4 |
0 |
0 |
|
100% |
| ivatar/ivataraccount/migrations/0010_auto_20180705_1201.py |
Migration |
|
0 |
0 |
0 |
|
100% |
| ivatar/ivataraccount/migrations/0010_auto_20180705_1201.py |
(no class) |
|
4 |
0 |
0 |
|
100% |
| ivatar/ivataraccount/migrations/0011_auto_20181107_1550.py |
Migration |
|
0 |
0 |
0 |
|
100% |
| ivatar/ivataraccount/migrations/0011_auto_20181107_1550.py |
(no class) |
|
4 |
0 |
0 |
|
100% |
| ivatar/ivataraccount/migrations/0012_auto_20181107_1732.py |
Migration |
|
0 |
0 |
0 |
|
100% |
| ivatar/ivataraccount/migrations/0012_auto_20181107_1732.py |
(no class) |
|
4 |
0 |
0 |
|
100% |
| ivatar/ivataraccount/migrations/0013_auto_20181203_1421.py |
Migration |
|
0 |
0 |
0 |
|
100% |
| ivatar/ivataraccount/migrations/0013_auto_20181203_1421.py |
(no class) |
|
4 |
0 |
0 |
|
100% |
| ivatar/ivataraccount/migrations/0014_auto_20190218_1602.py |
Migration |
|
0 |
0 |
0 |
|
100% |
| ivatar/ivataraccount/migrations/0014_auto_20190218_1602.py |
(no class) |
|
4 |
0 |
0 |
|
100% |
| ivatar/ivataraccount/migrations/0015_auto_20200225_0934.py |
Migration |
|
0 |
0 |
0 |
|
100% |
| ivatar/ivataraccount/migrations/0015_auto_20200225_0934.py |
(no class) |
|
4 |
0 |
0 |
|
100% |
| ivatar/ivataraccount/migrations/0016_auto_20210413_0904.py |
Migration |
|
0 |
0 |
0 |
|
100% |
| ivatar/ivataraccount/migrations/0016_auto_20210413_0904.py |
(no class) |
|
4 |
0 |
0 |
|
100% |
| ivatar/ivataraccount/migrations/0017_auto_20210528_1314.py |
Migration |
|
0 |
0 |
0 |
|
100% |
| ivatar/ivataraccount/migrations/0017_auto_20210528_1314.py |
(no class) |
|
4 |
0 |
0 |
|
100% |
| ivatar/ivataraccount/migrations/0018_alter_photo_format.py |
Migration |
|
0 |
0 |
0 |
|
100% |
| ivatar/ivataraccount/migrations/0018_alter_photo_format.py |
(no class) |
|
4 |
0 |
0 |
|
100% |
| ivatar/ivataraccount/migrations/0019_confirmedemail_bluesky_handle.py |
Migration |
|
0 |
0 |
0 |
|
100% |
| ivatar/ivataraccount/migrations/0019_confirmedemail_bluesky_handle.py |
(no class) |
|
4 |
0 |
0 |
|
100% |
| ivatar/ivataraccount/migrations/0020_confirmedopenid_bluesky_handle.py |
Migration |
|
0 |
0 |
0 |
|
100% |
| ivatar/ivataraccount/migrations/0020_confirmedopenid_bluesky_handle.py |
(no class) |
|
4 |
0 |
0 |
|
100% |
| ivatar/ivataraccount/migrations/0021_add_performance_indexes.py |
Migration |
|
0 |
0 |
0 |
|
100% |
| ivatar/ivataraccount/migrations/0021_add_performance_indexes.py |
(no class) |
|
41 |
19 |
0 |
|
54% |
| ivatar/ivataraccount/migrations/__init__.py |
(no class) |
|
0 |
0 |
0 |
|
100% |
| ivatar/ivataraccount/models.py |
UserPreference |
|
1 |
0 |
0 |
|
100% |
| ivatar/ivataraccount/models.py |
BaseAccountModel |
|
0 |
0 |
0 |
|
100% |
| ivatar/ivataraccount/models.py |
BaseAccountModel.Meta |
|
0 |
0 |
0 |
|
100% |
| ivatar/ivataraccount/models.py |
Photo |
|
71 |
23 |
4 |
|
68% |
| ivatar/ivataraccount/models.py |
Photo.Meta |
|
0 |
0 |
0 |
|
100% |
| ivatar/ivataraccount/models.py |
ConfirmedEmailManager |
|
10 |
0 |
0 |
|
100% |
| ivatar/ivataraccount/models.py |
ConfirmedEmail |
|
28 |
7 |
0 |
|
75% |
| ivatar/ivataraccount/models.py |
ConfirmedEmail.Meta |
|
0 |
0 |
0 |
|
100% |
| ivatar/ivataraccount/models.py |
UnconfirmedEmail |
|
17 |
3 |
0 |
|
82% |
| ivatar/ivataraccount/models.py |
UnconfirmedEmail.Meta |
|
0 |
0 |
0 |
|
100% |
| ivatar/ivataraccount/models.py |
UnconfirmedOpenId |
|
1 |
1 |
0 |
|
0% |
| ivatar/ivataraccount/models.py |
UnconfirmedOpenId.Meta |
|
0 |
0 |
0 |
|
100% |
| ivatar/ivataraccount/models.py |
ConfirmedOpenId |
|
34 |
7 |
3 |
|
79% |
| ivatar/ivataraccount/models.py |
ConfirmedOpenId.Meta |
|
0 |
0 |
0 |
|
100% |
| ivatar/ivataraccount/models.py |
OpenIDNonce |
|
1 |
1 |
0 |
|
0% |
| ivatar/ivataraccount/models.py |
OpenIDAssociation |
|
1 |
1 |
0 |
|
0% |
| ivatar/ivataraccount/models.py |
DjangoOpenIDStore |
|
0 |
0 |
92 |
|
100% |
| ivatar/ivataraccount/models.py |
(no class) |
|
143 |
0 |
11 |
|
100% |
| ivatar/ivataraccount/test_auth.py |
AuthFedoraTestCase |
|
21 |
0 |
0 |
|
100% |
| ivatar/ivataraccount/test_auth.py |
(no class) |
|
15 |
0 |
0 |
|
100% |
| ivatar/ivataraccount/test_views.py |
Tester |
|
535 |
0 |
0 |
|
100% |
| ivatar/ivataraccount/test_views.py |
OpenIDErrorHandlingTestCase |
|
111 |
0 |
0 |
|
100% |
| ivatar/ivataraccount/test_views.py |
(no class) |
|
135 |
0 |
0 |
|
100% |
| ivatar/ivataraccount/test_views_bluesky.py |
Tester |
|
67 |
0 |
0 |
|
100% |
| ivatar/ivataraccount/test_views_bluesky.py |
(no class) |
|
51 |
0 |
0 |
|
100% |
| ivatar/ivataraccount/urls.py |
(no class) |
|
20 |
0 |
0 |
|
100% |
| ivatar/ivataraccount/views.py |
CreateView |
|
20 |
8 |
1 |
|
60% |
| ivatar/ivataraccount/views.py |
PasswordSetView |
|
6 |
0 |
0 |
|
100% |
| ivatar/ivataraccount/views.py |
AddEmailView |
|
4 |
0 |
0 |
|
100% |
| ivatar/ivataraccount/views.py |
RemoveUnconfirmedEmailView |
|
7 |
0 |
0 |
|
100% |
| ivatar/ivataraccount/views.py |
ConfirmEmailView |
|
20 |
0 |
0 |
|
100% |
| ivatar/ivataraccount/views.py |
RemoveConfirmedEmailView |
|
7 |
0 |
0 |
|
100% |
| ivatar/ivataraccount/views.py |
AssignPhotoEmailView |
|
29 |
2 |
0 |
|
93% |
| ivatar/ivataraccount/views.py |
AssignPhotoOpenIDView |
|
24 |
0 |
0 |
|
100% |
| ivatar/ivataraccount/views.py |
AssignBlueskyHandleToEmailView |
|
27 |
14 |
0 |
|
48% |
| ivatar/ivataraccount/views.py |
AssignBlueskyHandleToOpenIdView |
|
27 |
14 |
0 |
|
48% |
| ivatar/ivataraccount/views.py |
ImportPhotoView |
|
45 |
25 |
2 |
|
44% |
| ivatar/ivataraccount/views.py |
RawImageView |
|
4 |
1 |
0 |
|
75% |
| ivatar/ivataraccount/views.py |
DeletePhotoView |
|
8 |
0 |
0 |
|
100% |
| ivatar/ivataraccount/views.py |
UploadPhotoView |
|
21 |
0 |
0 |
|
100% |
| ivatar/ivataraccount/views.py |
AddOpenIDView |
|
3 |
0 |
0 |
|
100% |
| ivatar/ivataraccount/views.py |
RemoveUnconfirmedOpenIDView |
|
5 |
0 |
2 |
|
100% |
| ivatar/ivataraccount/views.py |
RemoveConfirmedOpenIDView |
|
12 |
1 |
0 |
|
92% |
| ivatar/ivataraccount/views.py |
RedirectOpenIDView |
|
11 |
0 |
13 |
|
100% |
| ivatar/ivataraccount/views.py |
ConfirmOpenIDView |
|
0 |
0 |
61 |
|
100% |
| ivatar/ivataraccount/views.py |
CropPhotoView |
|
14 |
4 |
0 |
|
71% |
| ivatar/ivataraccount/views.py |
UserPreferenceView |
|
32 |
31 |
0 |
|
3% |
| ivatar/ivataraccount/views.py |
UploadLibravatarExportView |
|
42 |
33 |
0 |
|
21% |
| ivatar/ivataraccount/views.py |
ResendConfirmationMailView |
|
8 |
8 |
2 |
|
0% |
| ivatar/ivataraccount/views.py |
IvatarLoginView |
|
11 |
4 |
0 |
|
64% |
| ivatar/ivataraccount/views.py |
ProfileView |
|
26 |
15 |
0 |
|
42% |
| ivatar/ivataraccount/views.py |
PasswordResetView |
|
15 |
0 |
0 |
|
100% |
| ivatar/ivataraccount/views.py |
DeleteAccountView |
|
10 |
4 |
0 |
|
60% |
| ivatar/ivataraccount/views.py |
ExportView |
|
50 |
0 |
0 |
|
100% |
| ivatar/ivataraccount/views.py |
(no class) |
|
199 |
0 |
16 |
|
100% |
| ivatar/middleware.py |
CustomLocaleMiddleware |
|
12 |
0 |
0 |
|
100% |
| ivatar/middleware.py |
MultipleProxyMiddleware |
|
2 |
1 |
0 |
|
50% |
| ivatar/middleware.py |
(no class) |
|
6 |
0 |
0 |
|
100% |
| ivatar/opentelemetry_config.py |
OpenTelemetryConfig |
|
107 |
45 |
0 |
|
58% |
| ivatar/opentelemetry_config.py |
(no class) |
|
55 |
5 |
0 |
|
91% |
| ivatar/opentelemetry_middleware.py |
OpenTelemetryMiddleware |
|
52 |
7 |
0 |
|
87% |
| ivatar/opentelemetry_middleware.py |
AvatarMetrics |
|
15 |
0 |
0 |
|
100% |
| ivatar/opentelemetry_middleware.py |
(no class) |
|
90 |
13 |
0 |
|
86% |
| ivatar/pagan_optimized.py |
OptimizedPagan |
|
37 |
9 |
0 |
|
76% |
| ivatar/pagan_optimized.py |
(no class) |
|
50 |
17 |
0 |
|
66% |
| ivatar/robohash.py |
OptimizedRobohash |
|
42 |
9 |
0 |
|
79% |
| ivatar/robohash.py |
(no class) |
|
41 |
8 |
0 |
|
80% |
| ivatar/settings.py |
(no class) |
|
71 |
16 |
0 |
|
77% |
| ivatar/telemetry_utils.py |
NoOpMetrics |
|
6 |
0 |
0 |
|
100% |
| ivatar/telemetry_utils.py |
(no class) |
|
27 |
0 |
0 |
|
100% |
| ivatar/test_access_stats.py |
BatchStatsTest |
|
62 |
0 |
0 |
|
100% |
| ivatar/test_access_stats.py |
BatchStatsTest.setUp.side_effect.SyncThread |
|
2 |
0 |
0 |
|
100% |
| ivatar/test_access_stats.py |
(no class) |
|
17 |
0 |
0 |
|
100% |
| ivatar/test_auxiliary.py |
Tester |
|
9 |
0 |
0 |
|
100% |
| ivatar/test_auxiliary.py |
(no class) |
|
10 |
0 |
0 |
|
100% |
| ivatar/test_config_defaults.py |
ConfigurableDefaultsTestCase |
|
15 |
2 |
0 |
|
87% |
| ivatar/test_config_defaults.py |
(no class) |
|
16 |
1 |
0 |
|
94% |
| ivatar/test_file_security.py |
FileSecurityTestCase |
|
55 |
0 |
0 |
|
100% |
| ivatar/test_file_security.py |
UploadPhotoFormSecurityTestCase |
|
17 |
0 |
0 |
|
100% |
| ivatar/test_file_security.py |
UploadPhotoViewSecurityTestCase |
|
2 |
2 |
0 |
|
0% |
| ivatar/test_file_security.py |
FileSecurityIntegrationTestCase |
|
3 |
0 |
0 |
|
100% |
| ivatar/test_file_security.py |
(no class) |
|
32 |
0 |
0 |
|
100% |
| ivatar/test_graceful_degradation.py |
GracefulDegradationTestCase |
|
122 |
9 |
0 |
|
93% |
| ivatar/test_graceful_degradation.py |
(no class) |
|
25 |
1 |
0 |
|
96% |
| ivatar/test_no_opentelemetry.py |
NoOpenTelemetryTestCase |
|
112 |
7 |
0 |
|
94% |
| ivatar/test_no_opentelemetry.py |
OpenTelemetryFallbackIntegrationTest |
|
10 |
0 |
0 |
|
100% |
| ivatar/test_no_opentelemetry.py |
(no class) |
|
34 |
1 |
0 |
|
97% |
| ivatar/test_opentelemetry.py |
OpenTelemetryConfigTest |
|
62 |
9 |
0 |
|
85% |
| ivatar/test_opentelemetry.py |
OpenTelemetryMiddlewareTest |
|
22 |
0 |
0 |
|
100% |
| ivatar/test_opentelemetry.py |
AvatarMetricsTest |
|
7 |
0 |
0 |
|
100% |
| ivatar/test_opentelemetry.py |
TracingDecoratorsTest |
|
22 |
0 |
0 |
|
100% |
| ivatar/test_opentelemetry.py |
IntegrationTest |
|
10 |
0 |
0 |
|
100% |
| ivatar/test_opentelemetry.py |
OpenTelemetryDisabledTest |
|
23 |
0 |
0 |
|
100% |
| ivatar/test_opentelemetry.py |
PrometheusMetricsIntegrationTest |
|
147 |
43 |
0 |
|
71% |
| ivatar/test_opentelemetry.py |
(no class) |
|
63 |
1 |
0 |
|
98% |
| ivatar/test_pagan_optimized.py |
TestOptimizedPagan |
|
126 |
2 |
0 |
|
98% |
| ivatar/test_pagan_optimized.py |
TestPaganPerformance |
|
25 |
0 |
0 |
|
100% |
| ivatar/test_pagan_optimized.py |
(no class) |
|
26 |
1 |
0 |
|
96% |
| ivatar/test_robohash.py |
RobohashOptimizationTestCase |
|
91 |
0 |
0 |
|
100% |
| ivatar/test_robohash.py |
(no class) |
|
18 |
0 |
0 |
|
100% |
| ivatar/test_robohash_cached.py |
TestConsolidatedRobohash |
|
82 |
2 |
0 |
|
98% |
| ivatar/test_robohash_cached.py |
TestRobohashPerformance |
|
15 |
0 |
0 |
|
100% |
| ivatar/test_robohash_cached.py |
(no class) |
|
21 |
1 |
0 |
|
95% |
| ivatar/test_security_fixes.py |
ETagSanitizationTest |
|
39 |
0 |
0 |
|
100% |
| ivatar/test_security_fixes.py |
URLValidationTest |
|
27 |
0 |
0 |
|
100% |
| ivatar/test_security_fixes.py |
IntegrationTest |
|
18 |
0 |
0 |
|
100% |
| ivatar/test_security_fixes.py |
(no class) |
|
36 |
0 |
0 |
|
100% |
| ivatar/test_static_pages.py |
Tester |
|
8 |
1 |
0 |
|
88% |
| ivatar/test_static_pages.py |
(no class) |
|
21 |
0 |
0 |
|
100% |
| ivatar/test_telemetry_integration.py |
TelemetryIntegrationTestCase |
|
34 |
0 |
0 |
|
100% |
| ivatar/test_telemetry_integration.py |
MockTelemetryTestCase |
|
12 |
0 |
0 |
|
100% |
| ivatar/test_telemetry_integration.py |
(no class) |
|
23 |
1 |
0 |
|
96% |
| ivatar/test_utils.py |
Tester |
|
32 |
0 |
0 |
|
100% |
| ivatar/test_utils.py |
(no class) |
|
5 |
0 |
0 |
|
100% |
| ivatar/test_views.py |
Tester |
|
15 |
4 |
0 |
|
73% |
| ivatar/test_views.py |
(no class) |
|
26 |
0 |
0 |
|
100% |
| ivatar/test_views_stats.py |
StatsTester |
|
104 |
1 |
0 |
|
99% |
| ivatar/test_views_stats.py |
(no class) |
|
21 |
0 |
0 |
|
100% |
| ivatar/test_wsgi.py |
TestCase |
|
2 |
0 |
0 |
|
100% |
| ivatar/test_wsgi.py |
(no class) |
|
7 |
0 |
0 |
|
100% |
| ivatar/tools/__init__.py |
(no class) |
|
0 |
0 |
0 |
|
100% |
| ivatar/tools/forms.py |
CheckDomainForm |
|
0 |
0 |
0 |
|
100% |
| ivatar/tools/forms.py |
CheckForm |
|
20 |
8 |
0 |
|
60% |
| ivatar/tools/forms.py |
(no class) |
|
18 |
0 |
0 |
|
100% |
| ivatar/tools/test_views.py |
Tester |
|
24 |
0 |
0 |
|
100% |
| ivatar/tools/test_views.py |
(no class) |
|
21 |
0 |
0 |
|
100% |
| ivatar/tools/urls.py |
(no class) |
|
3 |
0 |
0 |
|
100% |
| ivatar/tools/views.py |
CheckDomainView |
|
11 |
0 |
0 |
|
100% |
| ivatar/tools/views.py |
CheckView |
|
46 |
13 |
0 |
|
72% |
| ivatar/tools/views.py |
(no class) |
|
86 |
36 |
0 |
|
58% |
| ivatar/urls.py |
(no class) |
|
19 |
3 |
0 |
|
84% |
| ivatar/utils.py |
Bluesky |
|
51 |
17 |
0 |
|
67% |
| ivatar/utils.py |
(no class) |
|
137 |
43 |
0 |
|
69% |
| ivatar/views.py |
CachingHttpResponse |
|
3 |
0 |
0 |
|
100% |
| ivatar/views.py |
AvatarImageView |
|
137 |
52 |
0 |
|
62% |
| ivatar/views.py |
GravatarProxyView |
|
58 |
40 |
0 |
|
31% |
| ivatar/views.py |
BlueskyProxyView |
|
77 |
77 |
0 |
|
0% |
| ivatar/views.py |
StatsView |
|
61 |
3 |
0 |
|
95% |
| ivatar/views.py |
DeploymentVersionView |
|
13 |
7 |
0 |
|
46% |
| ivatar/views.py |
(no class) |
|
146 |
25 |
0 |
|
83% |
| ivatar/wsgi.py |
(no class) |
|
4 |
0 |
0 |
|
100% |
| manage.py |
(no class) |
|
7 |
7 |
2 |
|
0% |
| scripts/run_tests_with_coverage.py |
(no class) |
|
27 |
2 |
0 |
|
93% |
| setup.py |
(no class) |
|
2 |
2 |
0 |
|
0% |