pulpcore 3.28.18__tar.gz → 3.28.20__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (371) hide show
  1. {pulpcore-3.28.18 → pulpcore-3.28.20}/CHANGES.rst +46 -0
  2. {pulpcore-3.28.18 → pulpcore-3.28.20}/PKG-INFO +1 -1
  3. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/apps.py +1 -1
  4. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/management/commands/handle-artifact-checksums.py +4 -5
  5. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/models/repository.py +3 -1
  6. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/tasks/repository.py +3 -4
  7. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/download/factory.py +9 -13
  8. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/download/file.py +1 -1
  9. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/download/http.py +1 -5
  10. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/functional/gpg_ascii_armor_signing_service.py +2 -4
  11. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/unit/stages/test_stages.py +5 -4
  12. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore.egg-info/PKG-INFO +1 -1
  13. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore.egg-info/requires.txt +7 -7
  14. {pulpcore-3.28.18 → pulpcore-3.28.20}/requirements.txt +6 -6
  15. {pulpcore-3.28.18 → pulpcore-3.28.20}/setup.py +5 -5
  16. {pulpcore-3.28.18 → pulpcore-3.28.20}/CODE_OF_CONDUCT.md +0 -0
  17. {pulpcore-3.28.18 → pulpcore-3.28.20}/COMMITMENT +0 -0
  18. {pulpcore-3.28.18 → pulpcore-3.28.20}/CONTRIBUTING.md +0 -0
  19. {pulpcore-3.28.18 → pulpcore-3.28.20}/COPYRIGHT +0 -0
  20. {pulpcore-3.28.18 → pulpcore-3.28.20}/LICENSE +0 -0
  21. {pulpcore-3.28.18 → pulpcore-3.28.20}/MANIFEST.in +0 -0
  22. {pulpcore-3.28.18 → pulpcore-3.28.20}/README.md +0 -0
  23. {pulpcore-3.28.18 → pulpcore-3.28.20}/bin/pulp-content +0 -0
  24. {pulpcore-3.28.18 → pulpcore-3.28.20}/ci_requirements.txt +0 -0
  25. {pulpcore-3.28.18 → pulpcore-3.28.20}/functest_requirements.txt +0 -0
  26. {pulpcore-3.28.18 → pulpcore-3.28.20}/manage.py +0 -0
  27. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/__init__.py +0 -0
  28. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/__init__.py +0 -0
  29. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/access_policy.py +0 -0
  30. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/authentication.py +0 -0
  31. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/checks.py +0 -0
  32. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/files.py +0 -0
  33. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/global_access_conditions.py +0 -0
  34. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/importexport.py +0 -0
  35. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/loggers.py +0 -0
  36. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/manage.py +0 -0
  37. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/management/__init__.py +0 -0
  38. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/management/commands/__init__.py +0 -0
  39. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/management/commands/add-signing-service.py +0 -0
  40. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/management/commands/analyze-publication.py +0 -0
  41. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/management/commands/datarepair-2327.py +0 -0
  42. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/management/commands/dump-permissions.py +0 -0
  43. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/management/commands/dump-publications-to-fs.py +0 -0
  44. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/management/commands/remove-plugin.py +0 -0
  45. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/management/commands/remove-signing-service.py +0 -0
  46. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/management/commands/reset-admin-password.py +0 -0
  47. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/management/commands/rotate-db-key.py +0 -0
  48. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0001_initial.py +0 -0
  49. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0002_increase_artifact_size_field.py +0 -0
  50. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0003_remove_upload_completed.py +0 -0
  51. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0004_add_duplicated_reserved_resources.py +0 -0
  52. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0005_progressreport_code.py +0 -0
  53. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0006_repository_plugin_managed.py +0 -0
  54. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0007_delete_progress_proxies.py +0 -0
  55. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0008_published_metadata_as_content.py +0 -0
  56. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0009_remove_task_non_fatal_errors.py +0 -0
  57. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0010_pulp_fields.py +0 -0
  58. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0011_relative_path.py +0 -0
  59. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0012_auto_20191104_2000.py +0 -0
  60. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0013_repository_pulp_type.py +0 -0
  61. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0014_remove_repository_plugin_managed.py +0 -0
  62. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0015_auto_20191112_1426.py +0 -0
  63. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0016_charfield_to_textfield.py +0 -0
  64. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0017_remove_task_parent.py +0 -0
  65. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0018_auto_20191127_2350.py +0 -0
  66. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0019_add_signing_service_model.py +0 -0
  67. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0020_change_publishedartifact_constraints.py +0 -0
  68. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0021_add_signing_service_foreign_key.py +0 -0
  69. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0022_rename_last_version.py +0 -0
  70. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0023_change_exporter_models.py +0 -0
  71. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0024_use_local_storage_for_uploads.py +0 -0
  72. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0025_task_parent_task.py +0 -0
  73. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0026_task_group.py +0 -0
  74. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0027_export_backend.py +0 -0
  75. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0028_import_importer_pulpimporter_pulpimporterrepository.py +0 -0
  76. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0029_export_delete.py +0 -0
  77. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0030_taskgroup_all_tasks_dispatched.py +0 -0
  78. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0031_import_export_validate_params.py +0 -0
  79. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0032_export_to_chunks.py +0 -0
  80. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0033_increase_remote_artifact_size_field.py +0 -0
  81. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0034_groupprogressreport.py +0 -0
  82. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0035_content_upstream_id.py +0 -0
  83. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0036_unprotect_last_export.py +0 -0
  84. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0037_pulptemporaryfile.py +0 -0
  85. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0038_repository_remote.py +0 -0
  86. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0039_change_download_concurrency.py +0 -0
  87. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0040_set_admin_is_staff.py +0 -0
  88. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0041_accesspolicy.py +0 -0
  89. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0042_rbac_for_tasks.py +0 -0
  90. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0043_toc_attribute.py +0 -0
  91. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0044_temp_file_artifact_field.py +0 -0
  92. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0045_accesspolicy_permissions_allow_null.py +0 -0
  93. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0046_task__resource_job_id.py +0 -0
  94. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0047_improve_orphan_cleanup.py +0 -0
  95. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0048_fips_checksums.py +0 -0
  96. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0049_add_file_field_to_uploadchunk.py +0 -0
  97. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0050_namespace_access_policies.py +0 -0
  98. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0051_timeoutfields.py +0 -0
  99. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0052_tasking_logging_cid.py +0 -0
  100. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0053_remote_headers.py +0 -0
  101. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0054_add_public_key.py +0 -0
  102. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0055_label.py +0 -0
  103. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0056_remote_rate_limit.py +0 -0
  104. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0057_add_label_indexes.py +0 -0
  105. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0058_accesspolicy_customized.py +0 -0
  106. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0059_proxy_creds.py +0 -0
  107. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0060_data_migration_proxy_creds.py +0 -0
  108. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0061_call_handle_artifact_checksums_command.py +0 -0
  109. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0062_add_new_distribution_mastermodel.py +0 -0
  110. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0063_repository_retained_versions.py +0 -0
  111. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0064_add_new_style_task_columns.py +0 -0
  112. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0064_repository_user_hidden.py +0 -0
  113. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0065_merge_20210615_1211.py +0 -0
  114. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0066_download_concurrency_and_retry_changes.py +0 -0
  115. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0067_add_protect_to_task_reservation.py +0 -0
  116. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0068_add_timestamp_of_interest.py +0 -0
  117. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0069_update_json_fields.py +0 -0
  118. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0070_rename_retained_versions.py +0 -0
  119. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0071_filesystemexport_filesystemexporter.py +0 -0
  120. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0072_add_method_to_filesystem_exporter.py +0 -0
  121. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0073_encrypt_remote_fields.py +0 -0
  122. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0074_acs.py +0 -0
  123. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0075_rbaccontentguard.py +0 -0
  124. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0076_remove_reserved_resource.py +0 -0
  125. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0077_move_remote_url_credentials.py +0 -0
  126. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0078_grouprole_role_userrole.py +0 -0
  127. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0079_rename_permissions_assignment_accesspolicy_creation_hooks.py +0 -0
  128. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0080_proxy_group_model.py +0 -0
  129. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0081_reapplabel_group_permissions.py +0 -0
  130. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0082_add_manage_roles_permissions.py +0 -0
  131. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0083_alter_group_options.py +0 -0
  132. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0084_alter_rbaccontentguard_options.py +0 -0
  133. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0085_contentredirectcontentguard.py +0 -0
  134. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0086_task_json_fields.py +0 -0
  135. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0087_taskschedule.py +0 -0
  136. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0088_accesspolicy_queryset_scoping.py +0 -0
  137. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0089_alter_contentredirectcontentguard_options.py +0 -0
  138. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0090_char_to_text_field.py +0 -0
  139. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0091_systemid.py +0 -0
  140. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0092_alter_upload_options.py +0 -0
  141. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0093_add_info_field_repositoryversion.py +0 -0
  142. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0094_protect_repository_content.py +0 -0
  143. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0095_artifactdistribution.py +0 -0
  144. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0096_alter_task_logging_cid.py +0 -0
  145. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0097_remove_telemetry_task_schedule.py +0 -0
  146. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0098_pulp_labels.py +0 -0
  147. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0099_versions_field.py +0 -0
  148. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0100_upstreampulp.py +0 -0
  149. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0101_add_domain.py +0 -0
  150. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0102_add_domain_relations.py +0 -0
  151. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0103_alter_export_task.py +0 -0
  152. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0104_delete_label.py +0 -0
  153. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0105_abstract_uuid_gen.py +0 -0
  154. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0106_alter_artifactdistribution_distribution_ptr_and_more.py +0 -0
  155. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0107_distribution_hidden.py +0 -0
  156. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/__init__.py +0 -0
  157. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/mime_types.py +0 -0
  158. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/modelresource.py +0 -0
  159. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/models/__init__.py +0 -0
  160. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/models/access_policy.py +0 -0
  161. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/models/acs.py +0 -0
  162. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/models/analytics.py +0 -0
  163. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/models/base.py +0 -0
  164. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/models/content.py +0 -0
  165. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/models/domain.py +0 -0
  166. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/models/exporter.py +0 -0
  167. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/models/fields.py +0 -0
  168. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/models/generic.py +0 -0
  169. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/models/importer.py +0 -0
  170. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/models/progress.py +0 -0
  171. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/models/publication.py +0 -0
  172. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/models/replica.py +0 -0
  173. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/models/role.py +0 -0
  174. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/models/status.py +0 -0
  175. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/models/storage.py +0 -0
  176. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/models/task.py +0 -0
  177. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/models/upload.py +0 -0
  178. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/monkeypatch.py +0 -0
  179. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/protobuf/__init__.py +0 -0
  180. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/protobuf/analytics_pb2.py +0 -0
  181. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/pulp_hashlib.py +0 -0
  182. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/redis_connection.py +0 -0
  183. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/replica.py +0 -0
  184. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/response.py +0 -0
  185. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/role_util.py +0 -0
  186. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/serializers/__init__.py +0 -0
  187. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/serializers/access_policy.py +0 -0
  188. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/serializers/acs.py +0 -0
  189. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/serializers/base.py +0 -0
  190. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/serializers/content.py +0 -0
  191. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/serializers/domain.py +0 -0
  192. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/serializers/exporter.py +0 -0
  193. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/serializers/fields.py +0 -0
  194. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/serializers/importer.py +0 -0
  195. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/serializers/orphans.py +0 -0
  196. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/serializers/progress.py +0 -0
  197. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/serializers/publication.py +0 -0
  198. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/serializers/purge.py +0 -0
  199. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/serializers/reclaim.py +0 -0
  200. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/serializers/repair.py +0 -0
  201. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/serializers/replica.py +0 -0
  202. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/serializers/repository.py +0 -0
  203. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/serializers/status.py +0 -0
  204. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/serializers/task.py +0 -0
  205. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/serializers/upload.py +0 -0
  206. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/serializers/user.py +0 -0
  207. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/settings.py +0 -0
  208. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/tasks/__init__.py +0 -0
  209. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/tasks/analytics.py +0 -0
  210. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/tasks/base.py +0 -0
  211. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/tasks/export.py +0 -0
  212. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/tasks/importer.py +0 -0
  213. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/tasks/orphan.py +0 -0
  214. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/tasks/purge.py +0 -0
  215. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/tasks/reclaim_space.py +0 -0
  216. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/tasks/replica.py +0 -0
  217. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/tasks/test.py +0 -0
  218. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/tasks/upload.py +0 -0
  219. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/templates/rest_framework/api.html +0 -0
  220. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/templatetags/__init__.py +0 -0
  221. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/templatetags/pulp_urls.py +0 -0
  222. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/urls.py +0 -0
  223. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/util.py +0 -0
  224. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/views/__init__.py +0 -0
  225. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/views/importer.py +0 -0
  226. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/views/orphans.py +0 -0
  227. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/views/repair.py +0 -0
  228. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/views/status.py +0 -0
  229. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/viewsets/__init__.py +0 -0
  230. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/viewsets/access_policy.py +0 -0
  231. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/viewsets/acs.py +0 -0
  232. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/viewsets/base.py +0 -0
  233. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/viewsets/content.py +0 -0
  234. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/viewsets/custom_filters.py +0 -0
  235. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/viewsets/domain.py +0 -0
  236. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/viewsets/exporter.py +0 -0
  237. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/viewsets/importer.py +0 -0
  238. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/viewsets/orphans.py +0 -0
  239. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/viewsets/publication.py +0 -0
  240. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/viewsets/reclaim.py +0 -0
  241. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/viewsets/replica.py +0 -0
  242. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/viewsets/repository.py +0 -0
  243. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/viewsets/task.py +0 -0
  244. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/viewsets/upload.py +0 -0
  245. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/viewsets/user.py +0 -0
  246. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/wsgi.py +0 -0
  247. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/backends.py +0 -0
  248. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/cache/__init__.py +0 -0
  249. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/cache/cache.py +0 -0
  250. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/constants.py +0 -0
  251. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/content/__init__.py +0 -0
  252. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/content/authentication.py +0 -0
  253. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/content/handler.py +0 -0
  254. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/download/__init__.py +0 -0
  255. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/download/base.py +0 -0
  256. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/exceptions/__init__.py +0 -0
  257. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/exceptions/base.py +0 -0
  258. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/exceptions/plugin.py +0 -0
  259. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/exceptions/validation.py +0 -0
  260. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/filters.py +0 -0
  261. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/middleware.py +0 -0
  262. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/openapi/__init__.py +0 -0
  263. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/plugin/__init__.py +0 -0
  264. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/plugin/access_policy.py +0 -0
  265. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/plugin/actions.py +0 -0
  266. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/plugin/apps.py +0 -0
  267. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/plugin/authentication/__init__.py +0 -0
  268. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/plugin/cache/__init__.py +0 -0
  269. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/plugin/constants.py +0 -0
  270. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/plugin/content.py +0 -0
  271. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/plugin/download/__init__.py +0 -0
  272. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/plugin/exceptions.py +0 -0
  273. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/plugin/files.py +0 -0
  274. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/plugin/importexport.py +0 -0
  275. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/plugin/modelresources.py +0 -0
  276. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/plugin/models/__init__.py +0 -0
  277. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/plugin/models/role.py +0 -0
  278. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/plugin/publication_utils.py +0 -0
  279. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/plugin/pulp_hashlib.py +0 -0
  280. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/plugin/replica.py +0 -0
  281. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/plugin/repo_version_utils.py +0 -0
  282. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/plugin/responses.py +0 -0
  283. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/plugin/serializers/__init__.py +0 -0
  284. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/plugin/serializers/content.py +0 -0
  285. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/plugin/stages/__init__.py +0 -0
  286. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/plugin/stages/api.py +0 -0
  287. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/plugin/stages/artifact_stages.py +0 -0
  288. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/plugin/stages/content_stages.py +0 -0
  289. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/plugin/stages/declarative_version.py +0 -0
  290. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/plugin/stages/models.py +0 -0
  291. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/plugin/storage.py +0 -0
  292. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/plugin/sync.py +0 -0
  293. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/plugin/tasking.py +0 -0
  294. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/plugin/util.py +0 -0
  295. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/plugin/viewsets/__init__.py +0 -0
  296. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/plugin/viewsets/content.py +0 -0
  297. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/responses.py +0 -0
  298. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tasking/__init__.py +0 -0
  299. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tasking/constants.py +0 -0
  300. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tasking/entrypoint.py +0 -0
  301. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tasking/pulpcore_worker.py +0 -0
  302. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tasking/storage.py +0 -0
  303. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tasking/tasks.py +0 -0
  304. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tasking/util.py +0 -0
  305. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/__init__.py +0 -0
  306. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/functional/__init__.py +0 -0
  307. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/functional/api/__init__.py +0 -0
  308. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/functional/api/test_access_policy.py +0 -0
  309. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/functional/api/test_api_docs.py +0 -0
  310. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/functional/api/test_artifact_distribution.py +0 -0
  311. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/functional/api/test_auth.py +0 -0
  312. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/functional/api/test_correlation_id.py +0 -0
  313. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/functional/api/test_crd_artifacts.py +0 -0
  314. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/functional/api/test_crud_domains.py +0 -0
  315. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/functional/api/test_filter.py +0 -0
  316. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/functional/api/test_openapi_schema.py +0 -0
  317. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/functional/api/test_replication.py +0 -0
  318. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/functional/api/test_repos.py +0 -0
  319. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/functional/api/test_role.py +0 -0
  320. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/functional/api/test_root_endpoint.py +0 -0
  321. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/functional/api/test_scoping.py +0 -0
  322. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/functional/api/test_signing_service.py +0 -0
  323. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/functional/api/test_status.py +0 -0
  324. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/functional/api/test_tasking.py +0 -0
  325. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/functional/api/test_upload.py +0 -0
  326. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/functional/api/test_users_groups.py +0 -0
  327. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/functional/api/test_workers.py +0 -0
  328. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/functional/api/using_plugin/__init__.py +0 -0
  329. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/functional/api/using_plugin/test_content_directory.py +0 -0
  330. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/functional/content_with_coverage.py +0 -0
  331. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/functional/utils.py +0 -0
  332. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/unit/__init__.py +0 -0
  333. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/unit/conftest.py +0 -0
  334. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/unit/content/__init__.py +0 -0
  335. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/unit/content/test_handler.py +0 -0
  336. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/unit/content/test_heartbeat.py +0 -0
  337. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/unit/download/__init__.py +0 -0
  338. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/unit/download/test_downloader_base.py +0 -0
  339. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/unit/download/test_downloader_factory.py +0 -0
  340. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/unit/migration/__init__.py +0 -0
  341. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/unit/migration/test_0077_move_remote_url_credentials.py +0 -0
  342. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/unit/models/__init__.py +0 -0
  343. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/unit/models/test_base.py +0 -0
  344. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/unit/models/test_content.py +0 -0
  345. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/unit/models/test_remote.py +0 -0
  346. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/unit/models/test_repository.py +0 -0
  347. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/unit/roles/__init__.py +0 -0
  348. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/unit/roles/test_roles.py +0 -0
  349. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/unit/serializers/__init__.py +0 -0
  350. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/unit/serializers/test_base.py +0 -0
  351. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/unit/serializers/test_domain.py +0 -0
  352. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/unit/serializers/test_pulpexport.py +0 -0
  353. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/unit/serializers/test_repository.py +0 -0
  354. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/unit/stages/__init__.py +0 -0
  355. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/unit/stages/test_artifactdownloader.py +0 -0
  356. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/unit/test_cache.py +0 -0
  357. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/unit/test_content_guard.py +0 -0
  358. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/unit/test_files.py +0 -0
  359. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/unit/test_import_checks.py +0 -0
  360. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/unit/test_settings.py +0 -0
  361. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/unit/test_util.py +0 -0
  362. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/unit/viewsets/__init__.py +0 -0
  363. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/unit/viewsets/test_viewset_base.py +0 -0
  364. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore.egg-info/SOURCES.txt +0 -0
  365. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore.egg-info/dependency_links.txt +0 -0
  366. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore.egg-info/entry_points.txt +0 -0
  367. {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore.egg-info/top_level.txt +0 -0
  368. {pulpcore-3.28.18 → pulpcore-3.28.20}/pyproject.toml +0 -0
  369. {pulpcore-3.28.18 → pulpcore-3.28.20}/setup.cfg +0 -0
  370. {pulpcore-3.28.18 → pulpcore-3.28.20}/test_requirements.txt +0 -0
  371. {pulpcore-3.28.18 → pulpcore-3.28.20}/unittest_requirements.txt +0 -0
@@ -13,6 +13,52 @@ Changelog
13
13
 
14
14
  .. towncrier release notes start
15
15
 
16
+ 3.28.20 (2024-01-24)
17
+ ====================
18
+ REST API
19
+ --------
20
+
21
+ Bugfixes
22
+ ~~~~~~~~
23
+
24
+ - Fixed a regular expression used when listing directories.
25
+ :github:`3673`
26
+ - Taught repair task to be tolerant in the face of any artifact download failure.
27
+ :github:`4111`
28
+ - Removed a workaround to force close all tcp connections in sync leading to an exhaustion of port
29
+ numbers and their reuse while in time_wait state.
30
+ :github:`4452`
31
+ - Fix file:// syncs deleting the original files.
32
+ :github:`4681`
33
+
34
+
35
+ Plugin API
36
+ ----------
37
+
38
+ No significant changes.
39
+
40
+
41
+ ----
42
+
43
+
44
+ 3.28.19 (2023-11-06)
45
+ ====================
46
+ REST API
47
+ --------
48
+
49
+ Bugfixes
50
+ ~~~~~~~~
51
+
52
+ - Resolved a sync-time performance regression.
53
+ :github:`4591`
54
+
55
+
56
+ Plugin API
57
+ ----------
58
+
59
+ No significant changes.
60
+
61
+
16
62
  3.28.18 (2023-10-16)
17
63
  ====================
18
64
  REST API
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pulpcore
3
- Version: 3.28.18
3
+ Version: 3.28.20
4
4
  Summary: Pulp Django Application and Related Modules
5
5
  Home-page: https://pulpproject.org
6
6
  Author: Pulp Team
@@ -234,7 +234,7 @@ class PulpAppConfig(PulpPluginAppConfig):
234
234
  label = "core"
235
235
 
236
236
  # The version of this app
237
- version = "3.28.18"
237
+ version = "3.28.20"
238
238
 
239
239
  # The python package name providing this app
240
240
  python_package_name = "pulpcore"
@@ -2,8 +2,6 @@ import os
2
2
 
3
3
  from gettext import gettext as _
4
4
 
5
- from aiohttp.client_exceptions import ClientResponseError
6
-
7
5
  from django.conf import settings
8
6
  from django.core.management import BaseCommand, CommandError
9
7
  from django.db.models import Q, Sum
@@ -126,7 +124,7 @@ class Command(BaseCommand):
126
124
  downloader = remote.get_downloader(ra)
127
125
  try:
128
126
  dl_result = downloader.fetch()
129
- except ClientResponseError as e:
127
+ except Exception as e:
130
128
  self.stdout.write(
131
129
  _("Redownload failed from '{}': {}.").format(ra.url, str(e))
132
130
  )
@@ -139,8 +137,9 @@ class Command(BaseCommand):
139
137
  setattr(artifact, checksum, dl_result.artifact_attributes[checksum])
140
138
  restored = True
141
139
  break
142
- self.stdout.write(_("Deleting unreparable file {}".format(file_path)))
143
- artifact.file.delete(save=False)
140
+ if not restored:
141
+ self.stdout.write(_("Deleting unrepairable file {}".format(file_path)))
142
+ artifact.file.delete(save=False)
144
143
  else:
145
144
  break
146
145
  return restored
@@ -835,7 +835,9 @@ class RepositoryVersion(BaseModel):
835
835
  raise ResourceImmutableError(self)
836
836
 
837
837
  repo_content = []
838
- to_add = set(content.exclude(pk__in=self.content).values_list("pk", flat=True))
838
+ to_add = set(content.values_list("pk", flat=True)) - set(
839
+ self.content.values_list("pk", flat=True)
840
+ )
839
841
 
840
842
  # Normalize representation if content has already been removed in this version and
841
843
  # is re-added: Undo removal by setting version_removed to None.
@@ -4,7 +4,6 @@ from logging import getLogger
4
4
  import asyncio
5
5
  import hashlib
6
6
 
7
- from aiohttp.client_exceptions import ClientResponseError
8
7
  from asgiref.sync import sync_to_async
9
8
  from django.db import transaction
10
9
  from rest_framework.serializers import ValidationError
@@ -68,7 +67,7 @@ async def _repair_ca(content_artifact, repaired=None):
68
67
  "Artifact {} is unrepairable - no remote source".format(content_artifact.artifact)
69
68
  )
70
69
  log.warning(
71
- "Deleting file for the unreparable artifact {}".format(content_artifact.artifact)
70
+ "Deleting file for the unrepairable artifact {}".format(content_artifact.artifact)
72
71
  )
73
72
  await sync_to_async(content_artifact.artifact.file.delete)(save=False)
74
73
  return False
@@ -78,7 +77,7 @@ async def _repair_ca(content_artifact, repaired=None):
78
77
  downloader = detail_remote.get_downloader(remote_artifact)
79
78
  try:
80
79
  dl_result = await downloader.run()
81
- except ClientResponseError as e:
80
+ except Exception as e:
82
81
  log.warn(_("Redownload failed from '{}': {}.").format(remote_artifact.url, str(e)))
83
82
  else:
84
83
  if dl_result.artifact_attributes["sha256"] == content_artifact.artifact.sha256:
@@ -91,7 +90,7 @@ async def _repair_ca(content_artifact, repaired=None):
91
90
  if repaired is not None:
92
91
  await repaired.aincrement()
93
92
  return True
94
- log.warning("Deleting file for the unreparable artifact {}".format(content_artifact.artifact))
93
+ log.warning("Deleting file for the unrepairable artifact {}".format(content_artifact.artifact))
95
94
  await sync_to_async(content_artifact.artifact.file.delete)(save=False)
96
95
  return False
97
96
 
@@ -48,10 +48,6 @@ class DownloaderFactory:
48
48
  http://aiohttp.readthedocs.io/en/stable/client_quickstart.html#timeouts Behaviorally, it should
49
49
  allow for an active download to be arbitrarily long, while still detecting dead or closed
50
50
  sessions even when TCPKeepAlive is disabled.
51
-
52
- Also for http and https urls, even though HTTP 1.1 is used, the TCP connection is setup and
53
- closed with each request. This is done for compatibility reasons due to various issues related
54
- to session continuation implementation in various servers.
55
51
  """
56
52
 
57
53
  def __init__(self, remote, downloader_overrides=None):
@@ -102,7 +98,7 @@ class DownloaderFactory:
102
98
  Returns:
103
99
  :class:`aiohttp.ClientSession`
104
100
  """
105
- tcp_conn_opts = {"force_close": True}
101
+ tcp_conn_opts = {}
106
102
 
107
103
  sslcontext = None
108
104
  if self._remote.ca_cert:
@@ -133,17 +129,17 @@ class DownloaderFactory:
133
129
  headers["User-Agent"] = f"{headers['User-Agent']}, {user_agent_header}"
134
130
  headers.extend(header_dict)
135
131
 
136
- conn = aiohttp.TCPConnector(**tcp_conn_opts)
137
- total = self._remote.total_timeout
138
- sock_connect = self._remote.sock_connect_timeout
139
- sock_read = self._remote.sock_read_timeout
140
- connect = self._remote.connect_timeout
141
-
142
132
  timeout = aiohttp.ClientTimeout(
143
- total=total, sock_connect=sock_connect, sock_read=sock_read, connect=connect
133
+ total=self._remote.total_timeout,
134
+ sock_connect=self._remote.sock_connect_timeout,
135
+ sock_read=self._remote.sock_read_timeout,
136
+ connect=self._remote.connect_timeout,
144
137
  )
145
138
  return aiohttp.ClientSession(
146
- connector=conn, timeout=timeout, headers=headers, requote_redirect_url=False
139
+ connector=aiohttp.TCPConnector(**tcp_conn_opts),
140
+ timeout=timeout,
141
+ headers=headers,
142
+ requote_redirect_url=False,
147
143
  )
148
144
 
149
145
  def build(self, url, **kwargs):
@@ -57,7 +57,7 @@ class FileDownloader(BaseDownloader):
57
57
  break # the reading is done
58
58
  await self.handle_data(chunk)
59
59
  return DownloadResult(
60
- path=self._path,
60
+ path=self.path,
61
61
  artifact_attributes=self.artifact_attributes,
62
62
  url=self.url,
63
63
  headers=None,
@@ -71,10 +71,6 @@ class HttpDownloader(BaseDownloader):
71
71
  allow for an active download to be arbitrarily long, while still detecting dead or closed
72
72
  sessions even when TCPKeepAlive is disabled.
73
73
 
74
- If a session is not provided, the one created will force TCP connection closure after each
75
- request. This is done for compatibility reasons due to various issues related to session
76
- continuation implementation in various servers.
77
-
78
74
  `aiohttp.ClientSession` objects allows you to configure options that will apply to all
79
75
  downloaders using that session such as auth, timeouts, headers, etc. For more info on these
80
76
  options see the `aiohttp.ClientSession` docs for more information:
@@ -165,7 +161,7 @@ class HttpDownloader(BaseDownloader):
165
161
  self._close_session_on_finalize = False
166
162
  else:
167
163
  timeout = aiohttp.ClientTimeout(total=None, sock_connect=600, sock_read=600)
168
- conn = aiohttp.TCPConnector({"force_close": True})
164
+ conn = aiohttp.TCPConnector()
169
165
  self.session = aiohttp.ClientSession(
170
166
  connector=conn, timeout=timeout, headers=headers, requote_redirect_url=False
171
167
  )
@@ -15,7 +15,7 @@ signing_script_string = r"""#!/usr/bin/env bash
15
15
  FILE_PATH=$1
16
16
  SIGNATURE_PATH="$1.asc"
17
17
 
18
- GPG_KEY_ID="Pulp QE"
18
+ GPG_KEY_ID="pulp-fixture-signing-key"
19
19
 
20
20
  # Create a detached signature
21
21
  gpg --quiet --batch --homedir HOMEDIRHERE --detach-sign --local-user "${GPG_KEY_ID}" \
@@ -87,9 +87,7 @@ def sign_with_ascii_armored_detached_signing_service(signing_script_path, signin
87
87
  @pytest.fixture(scope="session")
88
88
  def signing_gpg_metadata(signing_gpg_homedir_path):
89
89
  """A fixture that returns a GPG instance and related metadata (i.e., fingerprint, keyid)."""
90
- private_key_url = (
91
- "https://raw.githubusercontent.com/pulp/pulp-fixtures/master/common/GPG-PRIVATE-KEY-pulp-qe"
92
- )
90
+ private_key_url = "https://raw.githubusercontent.com/pulp/pulp-fixtures/master/common/GPG-PRIVATE-KEY-fixture-signing" # noqa: E501
93
91
 
94
92
  async def download_key():
95
93
  async with aiohttp.ClientSession() as session:
@@ -1,5 +1,6 @@
1
1
  import asyncio
2
2
  import pytest
3
+ import pytest_asyncio
3
4
 
4
5
  import mock
5
6
 
@@ -9,13 +10,13 @@ from pulpcore.plugin.stages import Stage, EndStage, DeclarativeContent
9
10
  pytestmark = pytest.mark.usefixtures("fake_domain")
10
11
 
11
12
 
12
- @pytest.fixture
13
- def in_q():
13
+ @pytest_asyncio.fixture
14
+ async def in_q():
14
15
  return asyncio.Queue()
15
16
 
16
17
 
17
- @pytest.fixture
18
- def stage(in_q):
18
+ @pytest_asyncio.fixture
19
+ async def stage(in_q):
19
20
  stage = Stage()
20
21
  stage._connect(in_q, None)
21
22
  return stage
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pulpcore
3
- Version: 3.28.18
3
+ Version: 3.28.20
4
4
  Summary: Pulp Django Application and Related Modules
5
5
  Home-page: https://pulpproject.org
6
6
  Author: Pulp Team
@@ -1,10 +1,10 @@
1
1
  asyncio-throttle<=1.0.2,>=1.0
2
- aiohttp<3.8.6,>=3.8.1
2
+ aiohttp<3.9.2,>=3.8.1
3
3
  aiodns<=3.0.0,>=3.0
4
4
  aiofiles<23.2.0,>=22.1
5
5
  backoff<2.2.2,>=2.1.2
6
6
  click<=8.1.3,>=8.1.0
7
- cryptography<41.0.2,>=38.0.1
7
+ cryptography<41.0.8,>=38.0.1
8
8
  Django~=4.2.0
9
9
  django-filter<=23.2,>=23.1
10
10
  django-guid<=3.3.0,>=3.3
@@ -15,7 +15,7 @@ djangorestframework-queryfields<=1.0.0,>=1.0
15
15
  drf-access-policy<1.5.1,>=1.1.2
16
16
  drf-nested-routers<=0.93.4,>=0.93.4
17
17
  drf-spectacular==0.26.2
18
- dynaconf<3.1.13,>=3.1.12
18
+ dynaconf<3.3,>=3.1.12
19
19
  gunicorn<=20.1.0,>=20.1
20
20
  jinja2<=3.1.2,>=3.1
21
21
  naya<=1.1.1,>=1.1.1
@@ -38,16 +38,16 @@ whitenoise<6.5.0,>=5.0
38
38
  yarl<1.9.3,>=1.8
39
39
 
40
40
  [azure]
41
- django-storages[azure]>=1.12.2
41
+ django-storages[azure]<=1.13.2,>=1.12.2
42
42
 
43
43
  [google]
44
- django-storages[google]>=1.13.2
44
+ django-storages[google]<=1.13.2,>=1.13.2
45
45
 
46
46
  [prometheus]
47
47
  django-prometheus
48
48
 
49
49
  [s3]
50
- django-storages[boto3]
50
+ django-storages[boto3]<=1.13.2
51
51
 
52
52
  [sftp]
53
- django-storages[sftp]
53
+ django-storages[sftp]<=1.13.2
@@ -1,10 +1,10 @@
1
1
  asyncio-throttle>=1.0,<=1.0.2
2
- aiohttp>=3.8.1,<3.8.6
2
+ aiohttp>=3.8.1,<3.9.2
3
3
  aiodns>=3.0,<=3.0.0
4
4
  aiofiles>=22.1,<23.2.0
5
5
  backoff>=2.1.2,<2.2.2
6
6
  click>=8.1.0,<=8.1.3
7
- cryptography>=38.0.1,<41.0.2
7
+ cryptography>=38.0.1,<41.0.8
8
8
  Django~=4.2.0 # LTS version, switch only if we have a compelling reason to
9
9
  django-filter>=23.1,<=23.2
10
10
  django-guid>=3.3,<=3.3.0
@@ -15,15 +15,15 @@ djangorestframework-queryfields>=1.0,<=1.0.0
15
15
  drf-access-policy>=1.1.2,<1.5.1
16
16
  drf-nested-routers>=0.93.4,<=0.93.4
17
17
  drf-spectacular==0.26.2 # We monkeypatch this so we need a very narrow requirement string
18
- dynaconf>=3.1.12,<3.1.13
18
+ dynaconf>=3.1.12,<3.3
19
19
  gunicorn>=20.1,<=20.1.0
20
20
  jinja2>=3.1,<=3.1.2
21
21
  naya>=1.1.1,<=1.1.1
22
- importlib-metadata>=6.0.1,<=6.0.1 # Pinned to fix opentelemetry dependency solving issues with pip
22
+ importlib-metadata>=6.0.1,<=6.0.1 # Pinned to fix opentelemetry dependency solving issues with pip
23
23
  opentelemetry-distro[otlp]>=0.38b0,<=0.39b0
24
24
  opentelemetry-exporter-otlp-proto-http>=1.17.0,<=1.18.0
25
- opentelemetry-instrumentation-django>=0.38b0,<=0.39b0
26
- opentelemetry-instrumentation-wsgi>=0.38b0,<=0.39b0
25
+ opentelemetry-instrumentation-django>=0.38b0,<=0.39b0
26
+ opentelemetry-instrumentation-wsgi>=0.38b0,<=0.39b0
27
27
  pulp-glue>=0.18.0,<0.22
28
28
  protobuf>=4.21.1,<4.23.3
29
29
  pygtrie>=2.5,<=2.5.0
@@ -8,7 +8,7 @@ with open("requirements.txt") as requirements:
8
8
 
9
9
  setup(
10
10
  name="pulpcore",
11
- version="3.28.18",
11
+ version="3.28.20",
12
12
  description="Pulp Django Application and Related Modules",
13
13
  long_description=long_description,
14
14
  long_description_content_type="text/markdown",
@@ -20,10 +20,10 @@ setup(
20
20
  python_requires=">=3.8",
21
21
  install_requires=requirements,
22
22
  extras_require={
23
- "sftp": ["django-storages[sftp]"],
24
- "s3": ["django-storages[boto3]"],
25
- "google": ["django-storages[google]>=1.13.2"],
26
- "azure": ["django-storages[azure]>=1.12.2"],
23
+ "sftp": ["django-storages[sftp]<=1.13.2"],
24
+ "s3": ["django-storages[boto3]<=1.13.2"],
25
+ "google": ["django-storages[google]>=1.13.2,<=1.13.2"],
26
+ "azure": ["django-storages[azure]>=1.12.2,<=1.13.2"],
27
27
  "prometheus": ["django-prometheus"],
28
28
  },
29
29
  include_package_data=True,
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes