pulpcore 3.63.29__tar.gz → 3.63.31__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 (526) hide show
  1. {pulpcore-3.63.29 → pulpcore-3.63.31}/CHANGES.md +51 -0
  2. {pulpcore-3.63.29 → pulpcore-3.63.31}/PKG-INFO +11 -11
  3. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_certguard/app/__init__.py +1 -1
  4. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_file/app/__init__.py +1 -1
  5. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_file/tests/functional/api/test_download_policies.py +4 -5
  6. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/apps.py +14 -5
  7. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/checks.py +1 -1
  8. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/importexport.py +5 -1
  9. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/modelresource.py +3 -2
  10. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/serializers/base.py +4 -0
  11. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/serializers/domain.py +4 -1
  12. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/settings.py +31 -7
  13. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/tasks/export.py +1 -1
  14. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/tasks/importer.py +6 -0
  15. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/util.py +4 -2
  16. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/plugin/importexport.py +3 -0
  17. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/pytest_plugin.py +25 -17
  18. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tests/functional/api/test_artifact_distribution.py +2 -4
  19. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tests/functional/api/test_crd_artifacts.py +3 -4
  20. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tests/functional/api/test_crud_domains.py +10 -10
  21. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tests/functional/api/test_status.py +6 -7
  22. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tests/functional/api/using_plugin/test_crud_repos.py +1 -1
  23. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tests/functional/api/using_plugin/test_orphans.py +11 -11
  24. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tests/unit/models/test_content.py +1 -1
  25. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tests/unit/viewsets/test_viewset_base.py +3 -3
  26. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore.egg-info/PKG-INFO +11 -11
  27. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore.egg-info/requires.txt +10 -10
  28. {pulpcore-3.63.29 → pulpcore-3.63.31}/pyproject.toml +1 -1
  29. {pulpcore-3.63.29 → pulpcore-3.63.31}/requirements.txt +10 -10
  30. {pulpcore-3.63.29 → pulpcore-3.63.31}/setup.py +1 -1
  31. {pulpcore-3.63.29 → pulpcore-3.63.31}/CODE_OF_CONDUCT.md +0 -0
  32. {pulpcore-3.63.29 → pulpcore-3.63.31}/COMMITMENT +0 -0
  33. {pulpcore-3.63.29 → pulpcore-3.63.31}/CONTRIBUTING.md +0 -0
  34. {pulpcore-3.63.29 → pulpcore-3.63.31}/COPYRIGHT +0 -0
  35. {pulpcore-3.63.29 → pulpcore-3.63.31}/LICENSE +0 -0
  36. {pulpcore-3.63.29 → pulpcore-3.63.31}/MANIFEST.in +0 -0
  37. {pulpcore-3.63.29 → pulpcore-3.63.31}/README.md +0 -0
  38. {pulpcore-3.63.29 → pulpcore-3.63.31}/ci_requirements.txt +0 -0
  39. {pulpcore-3.63.29 → pulpcore-3.63.31}/functest_requirements.txt +0 -0
  40. {pulpcore-3.63.29 → pulpcore-3.63.31}/manage.py +0 -0
  41. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_certguard/__init__.py +0 -0
  42. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_certguard/app/migrations/0001_initial.py +0 -0
  43. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_certguard/app/migrations/0002_alter_rhsmcertguard_contentguard_ptr_and_more.py +0 -0
  44. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_certguard/app/migrations/__init__.py +0 -0
  45. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_certguard/app/models.py +0 -0
  46. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_certguard/app/serializers.py +0 -0
  47. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_certguard/app/utils.py +0 -0
  48. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_certguard/app/viewsets.py +0 -0
  49. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_certguard/pytest_plugin.py +0 -0
  50. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_certguard/tests/__init__.py +0 -0
  51. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_certguard/tests/functional/__init__.py +0 -0
  52. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_certguard/tests/functional/api/__init__.py +0 -0
  53. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_certguard/tests/functional/api/test_rhsm_certguard.py +0 -0
  54. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_certguard/tests/functional/api/test_x509_certguard.py +0 -0
  55. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_certguard/tests/functional/artifacts/rhsm/katello-default-ca.crt +0 -0
  56. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_certguard/tests/functional/artifacts/rhsm/katello-default-ca.key +0 -0
  57. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_certguard/tests/functional/artifacts/rhsm/trusted_but_expired.pem +0 -0
  58. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_certguard/tests/functional/artifacts/rhsm/uber.cert +0 -0
  59. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_certguard/tests/functional/artifacts/rhsm/untrusted_cert-key.pem +0 -0
  60. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_certguard/tests/functional/artifacts/rhsm/untrusted_cert.pem +0 -0
  61. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_certguard/tests/functional/artifacts/rhsm/v1/1514454871848760713-key.pem +0 -0
  62. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_certguard/tests/functional/artifacts/rhsm/v1/1514454871848760713.pem +0 -0
  63. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_certguard/tests/functional/artifacts/rhsm/v1/159442575569388840-key.pem +0 -0
  64. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_certguard/tests/functional/artifacts/rhsm/v1/159442575569388840.pem +0 -0
  65. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_certguard/tests/functional/artifacts/rhsm/v3/4260035510644027985-key.pem +0 -0
  66. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_certguard/tests/functional/artifacts/rhsm/v3/4260035510644027985.pem +0 -0
  67. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_certguard/tests/functional/artifacts/rhsm/v3/5527980418107729172-key.pem +0 -0
  68. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_certguard/tests/functional/artifacts/rhsm/v3/5527980418107729172.pem +0 -0
  69. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_certguard/tests/functional/artifacts/thirdparty_ca/certificates/ca.pem +0 -0
  70. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_certguard/tests/functional/artifacts/thirdparty_ca/genca.sh +0 -0
  71. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_certguard/tests/functional/artifacts/thirdparty_ca/keys/ca.pem +0 -0
  72. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_certguard/tests/functional/artifacts/x509/certificates/ca.pem +0 -0
  73. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_certguard/tests/functional/artifacts/x509/certificates/client.pem +0 -0
  74. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_certguard/tests/functional/artifacts/x509/certificates/server.pem +0 -0
  75. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_certguard/tests/functional/artifacts/x509/certificates/un_urlencoded_cert.txt +0 -0
  76. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_certguard/tests/functional/artifacts/x509/certificates/untrusted_client.pem +0 -0
  77. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_certguard/tests/functional/artifacts/x509/genall.sh +0 -0
  78. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_certguard/tests/functional/artifacts/x509/genca.sh +0 -0
  79. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_certguard/tests/functional/artifacts/x509/genclient.sh +0 -0
  80. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_certguard/tests/functional/artifacts/x509/gensrv.sh +0 -0
  81. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_certguard/tests/functional/artifacts/x509/keys/ca.pem +0 -0
  82. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_certguard/tests/functional/artifacts/x509/keys/client.pem +0 -0
  83. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_certguard/tests/functional/artifacts/x509/keys/server.pem +0 -0
  84. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_certguard/tests/functional/conftest.py +0 -0
  85. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_certguard/tests/functional/constants.py +0 -0
  86. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_certguard/tests/unit/__init__.py +0 -0
  87. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_certguard/tests/unit/test_models.py +0 -0
  88. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_file/__init__.py +0 -0
  89. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_file/app/migrations/0001_initial.py +0 -0
  90. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_file/app/migrations/0002_file_related_names.py +0 -0
  91. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_file/app/migrations/0003_auto_20191014_1721.py +0 -0
  92. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_file/app/migrations/0004_filefilesystemexporter.py +0 -0
  93. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_file/app/migrations/0005_filerepository.py +0 -0
  94. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_file/app/migrations/0006_delete_filefilesystemexporter.py +0 -0
  95. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_file/app/migrations/0007_filefilesystemexporter.py +0 -0
  96. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_file/app/migrations/0008_add_manifest_field.py +0 -0
  97. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_file/app/migrations/0009_move_data_to_new_master_distribution_model.py +0 -0
  98. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_file/app/migrations/0010_auto_publish.py +0 -0
  99. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_file/app/migrations/0011_fix_auto_publish.py +0 -0
  100. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_file/app/migrations/0012_delete_filefilesystemexporter.py +0 -0
  101. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_file/app/migrations/0013_file_acs.py +0 -0
  102. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_file/app/migrations/0014_new_rbac_permissions.py +0 -0
  103. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_file/app/migrations/0015_allow_null_manifest.py +0 -0
  104. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_file/app/migrations/0016_add_domain.py +0 -0
  105. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_file/app/migrations/0017_alter_filealternatecontentsource_alternatecontentsource_ptr_and_more.py +0 -0
  106. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_file/app/migrations/__init__.py +0 -0
  107. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_file/app/modelresource.py +0 -0
  108. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_file/app/models.py +0 -0
  109. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_file/app/replica.py +0 -0
  110. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_file/app/serializers.py +0 -0
  111. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_file/app/tasks/__init__.py +0 -0
  112. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_file/app/tasks/publishing.py +0 -0
  113. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_file/app/tasks/synchronizing.py +0 -0
  114. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_file/app/viewsets.py +0 -0
  115. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_file/manifest.py +0 -0
  116. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_file/pytest_plugin.py +0 -0
  117. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_file/tests/__init__.py +0 -0
  118. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_file/tests/functional/__init__.py +0 -0
  119. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_file/tests/functional/api/__init__.py +0 -0
  120. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_file/tests/functional/api/test_acs.py +0 -0
  121. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_file/tests/functional/api/test_auto_publish.py +0 -0
  122. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_file/tests/functional/api/test_bad_sync.py +0 -0
  123. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_file/tests/functional/api/test_crud_content_unit.py +0 -0
  124. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_file/tests/functional/api/test_crud_remotes.py +0 -0
  125. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_file/tests/functional/api/test_domains.py +0 -0
  126. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_file/tests/functional/api/test_generic_list.py +0 -0
  127. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_file/tests/functional/api/test_labels.py +0 -0
  128. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_file/tests/functional/api/test_mime_types.py +0 -0
  129. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_file/tests/functional/api/test_publish.py +0 -0
  130. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_file/tests/functional/api/test_pulp_export.py +0 -0
  131. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_file/tests/functional/api/test_rbac.py +0 -0
  132. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_file/tests/functional/api/test_remote_settings.py +0 -0
  133. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_file/tests/functional/api/test_sync.py +0 -0
  134. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_file/tests/unit/__init__.py +0 -0
  135. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_file/tests/unit/test_safe_paths.py +0 -0
  136. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulp_file/tests/unit/test_serializers.py +0 -0
  137. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/__init__.py +0 -0
  138. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/__init__.py +0 -0
  139. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/access_policy.py +0 -0
  140. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/authentication.py +0 -0
  141. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/entrypoint.py +0 -0
  142. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/files.py +0 -0
  143. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/global_access_conditions.py +0 -0
  144. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/loggers.py +0 -0
  145. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/manage.py +0 -0
  146. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/management/__init__.py +0 -0
  147. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/management/commands/__init__.py +0 -0
  148. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/management/commands/add-signing-service.py +0 -0
  149. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/management/commands/analyze-publication.py +0 -0
  150. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/management/commands/clean-up-progress-reports.py +0 -0
  151. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/management/commands/datarepair-2327.py +0 -0
  152. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/management/commands/dump-permissions.py +0 -0
  153. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/management/commands/dump-publications-to-fs.py +0 -0
  154. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/management/commands/handle-artifact-checksums.py +0 -0
  155. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/management/commands/openapi.py +0 -0
  156. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/management/commands/remove-plugin.py +0 -0
  157. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/management/commands/remove-signing-service.py +0 -0
  158. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/management/commands/repository-size.py +0 -0
  159. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/management/commands/reset-admin-password.py +0 -0
  160. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/management/commands/rotate-db-key.py +0 -0
  161. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/management/commands/shell.py +0 -0
  162. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0001_initial.py +0 -0
  163. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0002_increase_artifact_size_field.py +0 -0
  164. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0003_remove_upload_completed.py +0 -0
  165. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0004_add_duplicated_reserved_resources.py +0 -0
  166. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0005_progressreport_code.py +0 -0
  167. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0006_repository_plugin_managed.py +0 -0
  168. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0007_delete_progress_proxies.py +0 -0
  169. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0008_published_metadata_as_content.py +0 -0
  170. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0009_remove_task_non_fatal_errors.py +0 -0
  171. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0010_pulp_fields.py +0 -0
  172. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0011_relative_path.py +0 -0
  173. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0012_auto_20191104_2000.py +0 -0
  174. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0013_repository_pulp_type.py +0 -0
  175. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0014_remove_repository_plugin_managed.py +0 -0
  176. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0015_auto_20191112_1426.py +0 -0
  177. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0016_charfield_to_textfield.py +0 -0
  178. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0017_remove_task_parent.py +0 -0
  179. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0018_auto_20191127_2350.py +0 -0
  180. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0019_add_signing_service_model.py +0 -0
  181. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0020_change_publishedartifact_constraints.py +0 -0
  182. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0021_add_signing_service_foreign_key.py +0 -0
  183. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0022_rename_last_version.py +0 -0
  184. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0023_change_exporter_models.py +0 -0
  185. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0024_use_local_storage_for_uploads.py +0 -0
  186. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0025_task_parent_task.py +0 -0
  187. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0026_task_group.py +0 -0
  188. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0027_export_backend.py +0 -0
  189. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0028_import_importer_pulpimporter_pulpimporterrepository.py +0 -0
  190. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0029_export_delete.py +0 -0
  191. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0030_taskgroup_all_tasks_dispatched.py +0 -0
  192. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0031_import_export_validate_params.py +0 -0
  193. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0032_export_to_chunks.py +0 -0
  194. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0033_increase_remote_artifact_size_field.py +0 -0
  195. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0034_groupprogressreport.py +0 -0
  196. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0035_content_upstream_id.py +0 -0
  197. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0036_unprotect_last_export.py +0 -0
  198. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0037_pulptemporaryfile.py +0 -0
  199. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0038_repository_remote.py +0 -0
  200. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0039_change_download_concurrency.py +0 -0
  201. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0040_set_admin_is_staff.py +0 -0
  202. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0041_accesspolicy.py +0 -0
  203. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0042_rbac_for_tasks.py +0 -0
  204. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0043_toc_attribute.py +0 -0
  205. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0044_temp_file_artifact_field.py +0 -0
  206. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0045_accesspolicy_permissions_allow_null.py +0 -0
  207. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0046_task__resource_job_id.py +0 -0
  208. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0047_improve_orphan_cleanup.py +0 -0
  209. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0048_fips_checksums.py +0 -0
  210. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0049_add_file_field_to_uploadchunk.py +0 -0
  211. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0050_namespace_access_policies.py +0 -0
  212. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0051_timeoutfields.py +0 -0
  213. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0052_tasking_logging_cid.py +0 -0
  214. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0053_remote_headers.py +0 -0
  215. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0054_add_public_key.py +0 -0
  216. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0055_label.py +0 -0
  217. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0056_remote_rate_limit.py +0 -0
  218. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0057_add_label_indexes.py +0 -0
  219. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0058_accesspolicy_customized.py +0 -0
  220. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0059_proxy_creds.py +0 -0
  221. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0060_data_migration_proxy_creds.py +0 -0
  222. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0061_call_handle_artifact_checksums_command.py +0 -0
  223. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0062_add_new_distribution_mastermodel.py +0 -0
  224. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0063_repository_retained_versions.py +0 -0
  225. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0064_add_new_style_task_columns.py +0 -0
  226. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0064_repository_user_hidden.py +0 -0
  227. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0065_merge_20210615_1211.py +0 -0
  228. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0066_download_concurrency_and_retry_changes.py +0 -0
  229. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0067_add_protect_to_task_reservation.py +0 -0
  230. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0068_add_timestamp_of_interest.py +0 -0
  231. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0069_update_json_fields.py +0 -0
  232. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0070_rename_retained_versions.py +0 -0
  233. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0071_filesystemexport_filesystemexporter.py +0 -0
  234. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0072_add_method_to_filesystem_exporter.py +0 -0
  235. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0073_encrypt_remote_fields.py +0 -0
  236. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0074_acs.py +0 -0
  237. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0075_rbaccontentguard.py +0 -0
  238. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0076_remove_reserved_resource.py +0 -0
  239. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0077_move_remote_url_credentials.py +0 -0
  240. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0078_grouprole_role_userrole.py +0 -0
  241. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0079_rename_permissions_assignment_accesspolicy_creation_hooks.py +0 -0
  242. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0080_proxy_group_model.py +0 -0
  243. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0081_reapplabel_group_permissions.py +0 -0
  244. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0082_add_manage_roles_permissions.py +0 -0
  245. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0083_alter_group_options.py +0 -0
  246. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0084_alter_rbaccontentguard_options.py +0 -0
  247. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0085_contentredirectcontentguard.py +0 -0
  248. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0086_task_json_fields.py +0 -0
  249. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0087_taskschedule.py +0 -0
  250. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0088_accesspolicy_queryset_scoping.py +0 -0
  251. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0089_alter_contentredirectcontentguard_options.py +0 -0
  252. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0090_char_to_text_field.py +0 -0
  253. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0091_systemid.py +0 -0
  254. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0092_alter_upload_options.py +0 -0
  255. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0093_add_info_field_repositoryversion.py +0 -0
  256. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0094_protect_repository_content.py +0 -0
  257. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0095_artifactdistribution.py +0 -0
  258. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0096_alter_task_logging_cid.py +0 -0
  259. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0097_remove_telemetry_task_schedule.py +0 -0
  260. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0098_pulp_labels.py +0 -0
  261. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0099_versions_field.py +0 -0
  262. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0100_upstreampulp.py +0 -0
  263. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0101_add_domain.py +0 -0
  264. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0102_add_domain_relations.py +0 -0
  265. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0103_alter_export_task.py +0 -0
  266. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0104_delete_label.py +0 -0
  267. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0105_abstract_uuid_gen.py +0 -0
  268. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0106_alter_artifactdistribution_distribution_ptr_and_more.py +0 -0
  269. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0107_distribution_hidden.py +0 -0
  270. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0108_task_versions.py +0 -0
  271. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0109_contentartifact_relative_path_index.py +0 -0
  272. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0110_apiappstatus.py +0 -0
  273. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0111_task_enc_args_task_enc_kwargs.py +0 -0
  274. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0112_alter_upstreampulp_options.py +0 -0
  275. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0113_headercontentguard.py +0 -0
  276. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0114_remove_task_args_remove_task_kwargs.py +0 -0
  277. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0115_compositecontentguard.py +0 -0
  278. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0116_alter_remoteartifact_md5_alter_remoteartifact_sha1_and_more.py +0 -0
  279. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0117_task_unblocked_at.py +0 -0
  280. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0118_task_core_task_unblock_2276a4_idx_and_more.py +0 -0
  281. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0119_grouprole_core_groupr_object__250e22_idx_and_more.py +0 -0
  282. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0120_get_url_removal.py +0 -0
  283. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0121_add_profile_artifacts_table.py +0 -0
  284. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0122_record_last_replication_timestamp.py +0 -0
  285. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/0123_upstreampulp_q_select.py +0 -0
  286. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/migrations/__init__.py +0 -0
  287. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/mime_types.py +0 -0
  288. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/models/__init__.py +0 -0
  289. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/models/access_policy.py +0 -0
  290. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/models/acs.py +0 -0
  291. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/models/analytics.py +0 -0
  292. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/models/base.py +0 -0
  293. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/models/content.py +0 -0
  294. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/models/domain.py +0 -0
  295. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/models/exporter.py +0 -0
  296. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/models/fields.py +0 -0
  297. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/models/generic.py +0 -0
  298. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/models/importer.py +0 -0
  299. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/models/progress.py +0 -0
  300. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/models/publication.py +0 -0
  301. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/models/replica.py +0 -0
  302. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/models/repository.py +0 -0
  303. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/models/role.py +0 -0
  304. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/models/status.py +0 -0
  305. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/models/storage.py +0 -0
  306. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/models/task.py +0 -0
  307. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/models/upload.py +0 -0
  308. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/protobuf/__init__.py +0 -0
  309. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/protobuf/analytics_pb2.py +0 -0
  310. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/pulp_hashlib.py +0 -0
  311. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/pulpcore_gunicorn_application.py +0 -0
  312. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/redis_connection.py +0 -0
  313. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/replica.py +0 -0
  314. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/response.py +0 -0
  315. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/role_util.py +0 -0
  316. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/serializers/__init__.py +0 -0
  317. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/serializers/access_policy.py +0 -0
  318. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/serializers/acs.py +0 -0
  319. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/serializers/content.py +0 -0
  320. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/serializers/exporter.py +0 -0
  321. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/serializers/fields.py +0 -0
  322. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/serializers/importer.py +0 -0
  323. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/serializers/orphans.py +0 -0
  324. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/serializers/progress.py +0 -0
  325. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/serializers/publication.py +0 -0
  326. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/serializers/purge.py +0 -0
  327. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/serializers/reclaim.py +0 -0
  328. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/serializers/repair.py +0 -0
  329. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/serializers/replica.py +0 -0
  330. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/serializers/repository.py +0 -0
  331. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/serializers/status.py +0 -0
  332. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/serializers/task.py +0 -0
  333. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/serializers/upload.py +0 -0
  334. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/serializers/user.py +0 -0
  335. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/tasks/__init__.py +0 -0
  336. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/tasks/analytics.py +0 -0
  337. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/tasks/base.py +0 -0
  338. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/tasks/migrate.py +0 -0
  339. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/tasks/orphan.py +0 -0
  340. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/tasks/purge.py +0 -0
  341. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/tasks/reclaim_space.py +0 -0
  342. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/tasks/replica.py +0 -0
  343. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/tasks/repository.py +0 -0
  344. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/tasks/test.py +0 -0
  345. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/tasks/upload.py +0 -0
  346. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/templates/rest_framework/api.html +0 -0
  347. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/templatetags/__init__.py +0 -0
  348. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/templatetags/pulp_urls.py +0 -0
  349. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/urls.py +0 -0
  350. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/views/__init__.py +0 -0
  351. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/views/importer.py +0 -0
  352. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/views/orphans.py +0 -0
  353. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/views/repair.py +0 -0
  354. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/views/status.py +0 -0
  355. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/viewsets/__init__.py +0 -0
  356. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/viewsets/access_policy.py +0 -0
  357. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/viewsets/acs.py +0 -0
  358. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/viewsets/base.py +0 -0
  359. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/viewsets/content.py +0 -0
  360. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/viewsets/custom_filters.py +0 -0
  361. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/viewsets/domain.py +0 -0
  362. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/viewsets/exporter.py +0 -0
  363. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/viewsets/importer.py +0 -0
  364. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/viewsets/orphans.py +0 -0
  365. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/viewsets/publication.py +0 -0
  366. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/viewsets/reclaim.py +0 -0
  367. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/viewsets/replica.py +0 -0
  368. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/viewsets/repository.py +0 -0
  369. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/viewsets/task.py +0 -0
  370. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/viewsets/upload.py +0 -0
  371. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/viewsets/user.py +0 -0
  372. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/app/wsgi.py +0 -0
  373. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/backends.py +0 -0
  374. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/cache/__init__.py +0 -0
  375. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/cache/cache.py +0 -0
  376. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/constants.py +0 -0
  377. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/content/__init__.py +0 -0
  378. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/content/authentication.py +0 -0
  379. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/content/entrypoint.py +0 -0
  380. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/content/handler.py +0 -0
  381. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/content/instrumentation.py +0 -0
  382. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/download/__init__.py +0 -0
  383. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/download/base.py +0 -0
  384. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/download/factory.py +0 -0
  385. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/download/file.py +0 -0
  386. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/download/http.py +0 -0
  387. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/exceptions/__init__.py +0 -0
  388. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/exceptions/base.py +0 -0
  389. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/exceptions/plugin.py +0 -0
  390. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/exceptions/validation.py +0 -0
  391. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/filters.py +0 -0
  392. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/middleware.py +0 -0
  393. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/migrations.py +0 -0
  394. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/openapi/__init__.py +0 -0
  395. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/openapi/hooks.py +0 -0
  396. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/plugin/__init__.py +0 -0
  397. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/plugin/access_policy.py +0 -0
  398. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/plugin/actions.py +0 -0
  399. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/plugin/apps.py +0 -0
  400. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/plugin/authentication/__init__.py +0 -0
  401. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/plugin/cache/__init__.py +0 -0
  402. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/plugin/constants.py +0 -0
  403. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/plugin/content.py +0 -0
  404. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/plugin/download/__init__.py +0 -0
  405. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/plugin/exceptions.py +0 -0
  406. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/plugin/files.py +0 -0
  407. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/plugin/migrations.py +0 -0
  408. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/plugin/modelresources.py +0 -0
  409. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/plugin/models/__init__.py +0 -0
  410. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/plugin/models/role.py +0 -0
  411. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/plugin/publication_utils.py +0 -0
  412. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/plugin/pulp_hashlib.py +0 -0
  413. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/plugin/replica.py +0 -0
  414. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/plugin/repo_version_utils.py +0 -0
  415. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/plugin/responses.py +0 -0
  416. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/plugin/serializers/__init__.py +0 -0
  417. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/plugin/serializers/content.py +0 -0
  418. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/plugin/stages/__init__.py +0 -0
  419. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/plugin/stages/api.py +0 -0
  420. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/plugin/stages/artifact_stages.py +0 -0
  421. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/plugin/stages/content_stages.py +0 -0
  422. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/plugin/stages/declarative_version.py +0 -0
  423. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/plugin/stages/models.py +0 -0
  424. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/plugin/storage.py +0 -0
  425. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/plugin/sync.py +0 -0
  426. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/plugin/tasking.py +0 -0
  427. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/plugin/util.py +0 -0
  428. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/plugin/viewsets/__init__.py +0 -0
  429. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/plugin/viewsets/content.py +0 -0
  430. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/responses.py +0 -0
  431. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tasking/__init__.py +0 -0
  432. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tasking/_util.py +0 -0
  433. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tasking/entrypoint.py +0 -0
  434. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tasking/kafka.py +0 -0
  435. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tasking/storage.py +0 -0
  436. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tasking/tasks.py +0 -0
  437. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tasking/worker.py +0 -0
  438. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tests/__init__.py +0 -0
  439. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tests/functional/__init__.py +0 -0
  440. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tests/functional/api/__init__.py +0 -0
  441. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tests/functional/api/test_access_policy.py +0 -0
  442. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tests/functional/api/test_api_docs.py +0 -0
  443. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tests/functional/api/test_api_root_rewrite.py +0 -0
  444. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tests/functional/api/test_auth.py +0 -0
  445. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tests/functional/api/test_correlation_id.py +0 -0
  446. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tests/functional/api/test_filter.py +0 -0
  447. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tests/functional/api/test_openapi_schema.py +0 -0
  448. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tests/functional/api/test_replication.py +0 -0
  449. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tests/functional/api/test_repos.py +0 -0
  450. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tests/functional/api/test_role.py +0 -0
  451. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tests/functional/api/test_root_endpoint.py +0 -0
  452. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tests/functional/api/test_scoping.py +0 -0
  453. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tests/functional/api/test_signing_service.py +0 -0
  454. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tests/functional/api/test_task_purge.py +0 -0
  455. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tests/functional/api/test_tasking.py +0 -0
  456. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tests/functional/api/test_upload.py +0 -0
  457. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tests/functional/api/test_users_groups.py +0 -0
  458. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tests/functional/api/test_workers.py +0 -0
  459. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tests/functional/api/using_plugin/__init__.py +0 -0
  460. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tests/functional/api/using_plugin/test_content_access.py +0 -0
  461. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tests/functional/api/using_plugin/test_content_cache.py +0 -0
  462. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tests/functional/api/using_plugin/test_content_delivery.py +0 -0
  463. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tests/functional/api/using_plugin/test_content_directory.py +0 -0
  464. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tests/functional/api/using_plugin/test_content_path.py +0 -0
  465. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tests/functional/api/using_plugin/test_content_promotion.py +0 -0
  466. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tests/functional/api/using_plugin/test_contentguard.py +0 -0
  467. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tests/functional/api/using_plugin/test_distributions.py +0 -0
  468. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tests/functional/api/using_plugin/test_filesystemexport.py +0 -0
  469. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tests/functional/api/using_plugin/test_labels.py +0 -0
  470. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tests/functional/api/using_plugin/test_migrate.py +0 -0
  471. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tests/functional/api/using_plugin/test_pagination.py +0 -0
  472. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tests/functional/api/using_plugin/test_prn.py +0 -0
  473. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tests/functional/api/using_plugin/test_proxy.py +0 -0
  474. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tests/functional/api/using_plugin/test_pulpimport.py +0 -0
  475. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tests/functional/api/using_plugin/test_reclaim_disk_space.py +0 -0
  476. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tests/functional/api/using_plugin/test_repair.py +0 -0
  477. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tests/functional/api/using_plugin/test_repo_versions.py +0 -0
  478. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tests/functional/api/using_plugin/test_tasks.py +0 -0
  479. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tests/functional/api/using_plugin/test_unlinking_repo.py +0 -0
  480. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tests/functional/assets/__init__.py +0 -0
  481. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tests/functional/content_with_coverage.py +0 -0
  482. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tests/functional/utils.py +0 -0
  483. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tests/performance/__init__.py +0 -0
  484. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tests/performance/test_performance.py +0 -0
  485. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tests/unit/__init__.py +0 -0
  486. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tests/unit/conftest.py +0 -0
  487. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tests/unit/content/__init__.py +0 -0
  488. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tests/unit/content/test_handler.py +0 -0
  489. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tests/unit/content/test_heartbeat.py +0 -0
  490. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tests/unit/download/__init__.py +0 -0
  491. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tests/unit/download/test_downloader_base.py +0 -0
  492. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tests/unit/download/test_downloader_factory.py +0 -0
  493. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tests/unit/migration/__init__.py +0 -0
  494. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tests/unit/migration/test_0077_move_remote_url_credentials.py +0 -0
  495. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tests/unit/models/__init__.py +0 -0
  496. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tests/unit/models/test_base.py +0 -0
  497. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tests/unit/models/test_remote.py +0 -0
  498. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tests/unit/models/test_repository.py +0 -0
  499. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tests/unit/models/test_task.py +0 -0
  500. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tests/unit/roles/__init__.py +0 -0
  501. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tests/unit/roles/test_roles.py +0 -0
  502. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tests/unit/serializers/__init__.py +0 -0
  503. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tests/unit/serializers/test_base.py +0 -0
  504. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tests/unit/serializers/test_domain.py +0 -0
  505. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tests/unit/serializers/test_pulpexport.py +0 -0
  506. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tests/unit/serializers/test_repository.py +0 -0
  507. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tests/unit/stages/__init__.py +0 -0
  508. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tests/unit/stages/test_artifactdownloader.py +0 -0
  509. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tests/unit/stages/test_stages.py +0 -0
  510. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tests/unit/test_cache.py +0 -0
  511. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tests/unit/test_chunked_file.py +0 -0
  512. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tests/unit/test_content_guard.py +0 -0
  513. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tests/unit/test_files.py +0 -0
  514. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tests/unit/test_import_checks.py +0 -0
  515. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tests/unit/test_pulp_urls.py +0 -0
  516. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tests/unit/test_settings.py +0 -0
  517. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tests/unit/test_util.py +0 -0
  518. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tests/unit/test_viewsets.py +0 -0
  519. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore/tests/unit/viewsets/__init__.py +0 -0
  520. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore.egg-info/SOURCES.txt +0 -0
  521. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore.egg-info/dependency_links.txt +0 -0
  522. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore.egg-info/entry_points.txt +0 -0
  523. {pulpcore-3.63.29 → pulpcore-3.63.31}/pulpcore.egg-info/top_level.txt +0 -0
  524. {pulpcore-3.63.29 → pulpcore-3.63.31}/setup.cfg +0 -0
  525. {pulpcore-3.63.29 → pulpcore-3.63.31}/test_requirements.txt +0 -0
  526. {pulpcore-3.63.29 → pulpcore-3.63.31}/unittest_requirements.txt +0 -0
@@ -8,6 +8,57 @@
8
8
 
9
9
  [//]: # (towncrier release notes start)
10
10
 
11
+ ## 3.63.31 (2026-02-25) {: #3.63.31 }
12
+
13
+ ### REST API {: #3.63.31-rest-api }
14
+
15
+ No significant changes.
16
+
17
+ ### Plugin API {: #3.63.31-plugin-api }
18
+
19
+ No significant changes.
20
+
21
+ ### Pulp File {: #3.63.31-pulp-file }
22
+
23
+ No significant changes.
24
+
25
+ ### Pulp Cert Guard {: #3.63.31-pulp-cert-guard }
26
+
27
+ No significant changes.
28
+
29
+ ---
30
+
31
+ ## 3.63.30 (2026-02-10) {: #3.63.30 }
32
+
33
+ ### REST API {: #3.63.30-rest-api }
34
+
35
+ #### Features {: #3.63.30-rest-api-feature }
36
+
37
+ - Adapted PulpImport/Export to allow update django-import-export==4.x.
38
+ [#5324](https://github.com/pulp/pulpcore/issues/5324)
39
+ - Allow use of Django 5 as well as Django 4. Note the following breaking changes if upgrading to
40
+ Django 5: storage configuration must use the new ``STORAGES`` format instead of
41
+ ``DEFAULT_FILE_STORAGE``, Python >= 3.10 is required, and PostgreSQL >= 14 is required.
42
+ [#6988](https://github.com/pulp/pulpcore/issues/6988)
43
+
44
+ #### Bugfixes {: #3.63.30-rest-api-bugfix }
45
+
46
+ - Fixed PRNField slowing down the generic list endpoints with extra database queries.
47
+
48
+ ### Plugin API {: #3.63.30-plugin-api }
49
+
50
+ No significant changes.
51
+
52
+ ### Pulp File {: #3.63.30-pulp-file }
53
+
54
+ No significant changes.
55
+
56
+ ### Pulp Cert Guard {: #3.63.30-pulp-cert-guard }
57
+
58
+ No significant changes.
59
+
60
+ ---
61
+
11
62
  ## 3.63.29 (2026-01-27) {: #3.63.29 }
12
63
 
13
64
  ### REST API {: #3.63.29-rest-api }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pulpcore
3
- Version: 3.63.29
3
+ Version: 3.63.31
4
4
  Summary: Pulp Django Application and Related Modules
5
5
  Home-page: https://pulpproject.org
6
6
  Author: Pulp Team
@@ -21,16 +21,16 @@ Description-Content-Type: text/markdown
21
21
  License-File: LICENSE
22
22
  Requires-Dist: aiodns<=3.2.0,>=3.0
23
23
  Requires-Dist: aiofiles<24.2.0,>=22.1
24
- Requires-Dist: aiohttp<3.10.12,>=3.9.0
24
+ Requires-Dist: aiohttp<3.14,>=3.9.0
25
25
  Requires-Dist: asyncio-throttle<=1.0.2,>=1.0
26
26
  Requires-Dist: async-timeout<4.0.4,>=4.0.3; python_version < "3.11"
27
27
  Requires-Dist: backoff<2.2.2,>=2.1.2
28
28
  Requires-Dist: click<=8.1.7,>=8.1.0
29
- Requires-Dist: cryptography<45.0.4,>=44.0.2
30
- Requires-Dist: Django~=4.2.0
29
+ Requires-Dist: cryptography<47.0,>=38.0.1
30
+ Requires-Dist: Django!=5.0,!=5.1,<5.3,>=4.2.24
31
31
  Requires-Dist: django-filter<=24.3,>=23.1
32
32
  Requires-Dist: django-guid<=3.5.0,>=3.3
33
- Requires-Dist: django-import-export<3.4.0,>=2.9
33
+ Requires-Dist: django-import-export<5.0,>=2.9
34
34
  Requires-Dist: django-lifecycle<=1.2.4,>=1.0
35
35
  Requires-Dist: djangorestframework<=3.15.2,>=3.14.0
36
36
  Requires-Dist: djangorestframework-queryfields<=1.1.0,>=1.0
@@ -45,10 +45,10 @@ Requires-Dist: json_stream<2.4,>=2.3.2
45
45
  Requires-Dist: jq<1.9.0,>=1.6.0
46
46
  Requires-Dist: pycares<4.9; python_version < "3.12"
47
47
  Requires-Dist: PyOpenSSL<26.0
48
- Requires-Dist: opentelemetry-distro[otlp]<=0.48b0,>=0.45b0
49
- Requires-Dist: opentelemetry-exporter-otlp-proto-http<=1.27.0,>=1.24.0
50
- Requires-Dist: opentelemetry-instrumentation-wsgi<=0.48b0,>=0.45b
51
- Requires-Dist: protobuf<5.0,>=4.21.1
48
+ Requires-Dist: opentelemetry-distro[otlp]<=0.49b0,>=0.45b0
49
+ Requires-Dist: opentelemetry-exporter-otlp-proto-http<1.29,>=1.24.0
50
+ Requires-Dist: opentelemetry-instrumentation-wsgi<=0.49b0,>=0.45b
51
+ Requires-Dist: protobuf<6.0,>=4.21.1
52
52
  Requires-Dist: pulp-glue<0.32,>=0.18.0
53
53
  Requires-Dist: pygtrie<=2.5.0,>=2.5
54
54
  Requires-Dist: psycopg[binary]<3.3,>=3.1.8
@@ -56,11 +56,11 @@ Requires-Dist: pyparsing<=3.1.4,>=3.1.0
56
56
  Requires-Dist: python-gnupg<=0.5.3,>=0.5
57
57
  Requires-Dist: PyYAML<=6.0.2,>=5.1.1
58
58
  Requires-Dist: redis<5.0.9,>=4.3
59
- Requires-Dist: tablib<3.6.0
59
+ Requires-Dist: tablib!=3.6,<4.0,>=3.5.0
60
60
  Requires-Dist: url-normalize<=1.4.3,>=1.4.3
61
61
  Requires-Dist: uuid6<=2024.7.10,>=2023.5.2
62
62
  Requires-Dist: whitenoise<6.8.0,>=5.0
63
- Requires-Dist: yarl<1.15.3,>=1.9.1
63
+ Requires-Dist: yarl<1.18.4,>=1.9.1
64
64
  Provides-Extra: sftp
65
65
  Requires-Dist: django-storages[sftp]==1.14.4; extra == "sftp"
66
66
  Provides-Extra: s3
@@ -6,6 +6,6 @@ class PulpCertGuardPluginAppConfig(PulpPluginAppConfig):
6
6
 
7
7
  name = "pulp_certguard.app"
8
8
  label = "certguard"
9
- version = "3.63.29"
9
+ version = "3.63.31"
10
10
  python_package_name = "pulpcore"
11
11
  domain_compatible = True
@@ -8,6 +8,6 @@ class PulpFilePluginAppConfig(PulpPluginAppConfig):
8
8
 
9
9
  name = "pulp_file.app"
10
10
  label = "file"
11
- version = "3.63.29"
11
+ version = "3.63.31"
12
12
  python_package_name = "pulpcore"
13
13
  domain_compatible = True
@@ -11,7 +11,6 @@ from urllib.parse import urljoin
11
11
 
12
12
  from pulpcore.tests.functional.utils import get_files_in_manifest, download_file
13
13
 
14
- from pulpcore.app import settings
15
14
  from pulpcore.client.pulp_file import FileFilePublication, RepositorySyncURL
16
15
 
17
16
 
@@ -54,7 +53,7 @@ def test_download_policy(
54
53
  download_policy,
55
54
  ):
56
55
  """Test that "on_demand" and "streamed" download policies work as expected."""
57
- if download_policy == "on_demand" and "SFTP" in pulp_settings.DEFAULT_FILE_STORAGE:
56
+ if download_policy == "on_demand" and "SFTP" in pulp_settings.STORAGES["default"]["BACKEND"]:
58
57
  pytest.skip("This storage technology is not properly supported.")
59
58
 
60
59
  remote = file_remote_ssl_factory(
@@ -148,8 +147,8 @@ def test_download_policy(
148
147
  assert expected_checksum == actual_checksum
149
148
  if (
150
149
  download_policy == "immediate"
151
- and settings.DEFAULT_FILE_STORAGE != "pulpcore.app.models.storage.FileSystem"
152
- and settings.REDIRECT_TO_OBJECT_STORAGE
150
+ and pulp_settings.STORAGES["default"]["BACKEND"] != "pulpcore.app.models.storage.FileSystem"
151
+ and pulp_settings.REDIRECT_TO_OBJECT_STORAGE
153
152
  ):
154
153
  content_disposition = downloaded_file.response_obj.headers.get("Content-Disposition")
155
154
  assert content_disposition is not None
@@ -187,7 +186,7 @@ def test_download_policy(
187
186
  content_unit = expected_files_list[4]
188
187
  content_unit_url = urljoin(distribution.base_url, content_unit[0])
189
188
  # The S3 test API project doesn't handle invalid Range values correctly
190
- if settings.DEFAULT_FILE_STORAGE == "pulpcore.app.models.storage.FileSystem":
189
+ if pulp_settings.STORAGES["default"]["BACKEND"] == "pulpcore.app.models.storage.FileSystem":
191
190
  with pytest.raises(ClientResponseError) as exc:
192
191
  range_header = {"Range": "bytes=-1-11"}
193
192
  download_file(content_unit_url, headers=range_header)
@@ -5,7 +5,6 @@ from gettext import gettext as _
5
5
  from importlib import import_module
6
6
 
7
7
  from django import apps
8
- from django.conf import settings
9
8
  from django.core.exceptions import ImproperlyConfigured
10
9
  from django.db import connection, transaction
11
10
  from django.db.models.signals import post_migrate, pre_migrate
@@ -68,6 +67,12 @@ class PulpPluginAppConfig(apps.AppConfig):
68
67
 
69
68
  def __init__(self, app_name, app_module):
70
69
  super().__init__(app_name, app_module)
70
+ # begin compatibility layer for DEFAULT_FILE_STORAGE deprecation
71
+ # Workaround for getting the up-to-date settings instance
72
+ from django.conf import settings
73
+
74
+ self.settings = settings
75
+ # end
71
76
 
72
77
  try:
73
78
  self.version
@@ -239,7 +244,7 @@ class PulpAppConfig(PulpPluginAppConfig):
239
244
  label = "core"
240
245
 
241
246
  # The version of this app
242
- version = "3.63.29"
247
+ version = "3.63.31"
243
248
 
244
249
  # The python package name providing this app
245
250
  python_package_name = "pulpcore"
@@ -268,6 +273,8 @@ def _clean_app_status(sender, apps, verbosity, **kwargs):
268
273
  from django.contrib.postgres.functions import TransactionNow
269
274
  from django.utils import timezone
270
275
 
276
+ settings = sender.settings
277
+
271
278
  app_ttl_map = [
272
279
  ("ApiAppStatus", settings.API_APP_TTL),
273
280
  ("ContentAppStatus", settings.CONTENT_APP_TTL),
@@ -340,6 +347,7 @@ def _populate_system_id(sender, apps, verbosity, **kwargs):
340
347
 
341
348
 
342
349
  def _ensure_default_domain(sender, **kwargs):
350
+ settings = sender.settings
343
351
  table_names = connection.introspection.table_names()
344
352
  if "core_domain" in table_names:
345
353
  from pulpcore.app.util import get_default_domain
@@ -349,11 +357,11 @@ def _ensure_default_domain(sender, **kwargs):
349
357
  if (
350
358
  settings.HIDE_GUARDED_DISTRIBUTIONS != default.hide_guarded_distributions
351
359
  or settings.REDIRECT_TO_OBJECT_STORAGE != default.redirect_to_object_storage
352
- or settings.DEFAULT_FILE_STORAGE != default.storage_class
360
+ or settings.STORAGES["default"]["BACKEND"] != default.storage_class
353
361
  ):
354
362
  default.hide_guarded_distributions = settings.HIDE_GUARDED_DISTRIBUTIONS
355
363
  default.redirect_to_object_storage = settings.REDIRECT_TO_OBJECT_STORAGE
356
- default.storage_class = settings.DEFAULT_FILE_STORAGE
364
+ default.storage_class = settings.STORAGES["default"]["BACKEND"]
357
365
  default.save(skip_hooks=True)
358
366
 
359
367
 
@@ -419,8 +427,9 @@ def adjust_roles(apps, role_prefix, desired_roles, verbosity=1):
419
427
 
420
428
 
421
429
  def _populate_artifact_serving_distribution(sender, apps, verbosity, **kwargs):
430
+ settings = sender.settings
422
431
  if (
423
- settings.DEFAULT_FILE_STORAGE == "pulpcore.app.models.storage.FileSystem"
432
+ settings.STORAGES["default"]["BACKEND"] == "pulpcore.app.models.storage.FileSystem"
424
433
  or not settings.REDIRECT_TO_OBJECT_STORAGE
425
434
  ):
426
435
  try:
@@ -38,7 +38,7 @@ def secret_key_check(app_configs, **kwargs):
38
38
  def storage_paths(app_configs, **kwargs):
39
39
  warnings = []
40
40
 
41
- if settings.DEFAULT_FILE_STORAGE == "pulpcore.app.models.storage.FileSystem":
41
+ if settings.STORAGES["default"]["BACKEND"] == "pulpcore.app.models.storage.FileSystem":
42
42
  try:
43
43
  media_root_dev = Path(settings.MEDIA_ROOT).stat().st_dev
44
44
  except OSError:
@@ -48,6 +48,10 @@ def _write_export(the_tarfile, resource, dest_dir=None):
48
48
  # the data in batches to memory and concatenate the json lists via string manipulation.
49
49
  with tempfile.NamedTemporaryFile(dir=".", mode="w", encoding="utf8") as temp_file:
50
50
  if isinstance(resource.queryset, QuerySet):
51
+ # If we don't have any of "these" - skip writing
52
+ if resource.queryset.count() == 0:
53
+ return
54
+
51
55
  temp_file.write("[")
52
56
 
53
57
  def process_batch(batch):
@@ -114,7 +118,7 @@ def export_artifacts(export, artifact_pks):
114
118
  with ProgressReport(**data) as pb:
115
119
  pb.BATCH_INTERVAL = 5000
116
120
 
117
- if settings.DEFAULT_FILE_STORAGE != "pulpcore.app.models.storage.FileSystem":
121
+ if settings.STORAGES["default"]["BACKEND"] != "pulpcore.app.models.storage.FileSystem":
118
122
  with tempfile.TemporaryDirectory(dir=".") as temp_dir:
119
123
  for offset in range(0, len(artifact_pks), EXPORT_BATCH_SIZE):
120
124
  batch = artifact_pks[offset : offset + EXPORT_BATCH_SIZE]
@@ -1,3 +1,4 @@
1
+ from django.conf import settings
1
2
  from import_export import fields
2
3
  from import_export.widgets import ForeignKeyWidget
3
4
  from logging import getLogger
@@ -36,8 +37,8 @@ class ArtifactResource(QueryModelResource):
36
37
  # the export converts None to blank strings but sha384 and sha512 have unique constraints
37
38
  # that get triggered if they are blank. convert checksums back into None if they are blank.
38
39
  for checksum in ALL_KNOWN_CONTENT_CHECKSUMS:
39
- if row[checksum] == "":
40
- row[checksum] = None
40
+ if row[checksum] == "" or checksum not in settings.ALLOWED_CONTENT_CHECKSUMS:
41
+ del row[checksum]
41
42
 
42
43
  class Meta:
43
44
  model = Artifact
@@ -169,6 +169,10 @@ class PRNField(serializers.StringRelatedField):
169
169
  super().__init__(**kwargs)
170
170
 
171
171
  def to_representation(self, value):
172
+ if isinstance(value, MasterModel):
173
+ # Cast optimization to avoid performing a database query
174
+ model = value.get_model_for_pulp_type(value.pulp_type)
175
+ value = model(pk=value.pk)
172
176
  return get_prn(instance=value)
173
177
 
174
178
 
@@ -43,7 +43,10 @@ class BaseSettingsClass(HiddenFieldsMixin, serializers.Serializer):
43
43
  # Should I convert back the saved settings to their Setting names for to_representation?
44
44
  if getattr(self.context.get("domain", None), "name", None) == "default":
45
45
  for setting_name, field in self.SETTING_MAPPING.items():
46
- if value := getattr(settings, setting_name.upper(), None):
46
+ value = getattr(settings, setting_name, None) or settings.STORAGES["default"].get(
47
+ "OPTIONS", {}
48
+ ).get(field)
49
+ if value:
47
50
  instance[field] = value
48
51
  return super().to_representation(instance)
49
52
 
@@ -16,6 +16,8 @@ from logging import getLogger
16
16
  from pathlib import Path
17
17
 
18
18
  from cryptography.fernet import Fernet
19
+ from django.conf import global_settings
20
+ from django.core.files.storage import storages # noqa: F401
19
21
  from django.core.exceptions import ImproperlyConfigured
20
22
  from django.db import connection
21
23
 
@@ -56,7 +58,23 @@ MEDIA_ROOT = str(DEPLOY_ROOT / "media") # Django 3.1 adds support for pathlib.P
56
58
  STATIC_URL = "/assets/"
57
59
  STATIC_ROOT = DEPLOY_ROOT / STATIC_URL.strip("/")
58
60
 
59
- DEFAULT_FILE_STORAGE = "pulpcore.app.models.storage.FileSystem"
61
+ # begin compatibility layer for DEFAULT_FILE_STORAGE
62
+ # Django does not allow STORAGES and DEFAULT_FILE_STORAGE in the same settings module
63
+ # (they are mutually exclusive). We set both on global_settings as defaults so that
64
+ # users can override either one via dynaconf, and Django picks the right one for its version.
65
+ _DEFAULT_FILE_STORAGE = "pulpcore.app.models.storage.FileSystem"
66
+ _STORAGES = {
67
+ "default": {
68
+ "BACKEND": "pulpcore.app.models.storage.FileSystem",
69
+ },
70
+ "staticfiles": {
71
+ "BACKEND": "django.contrib.staticfiles.storage.StaticFilesStorage",
72
+ },
73
+ }
74
+ setattr(global_settings, "DEFAULT_FILE_STORAGE", _DEFAULT_FILE_STORAGE)
75
+ setattr(global_settings, "STORAGES", _STORAGES)
76
+ # end DEFAULT_FILE_STORAGE compatibility layer
77
+
60
78
  REDIRECT_TO_OBJECT_STORAGE = True
61
79
 
62
80
  WORKING_DIRECTORY = DEPLOY_ROOT / "tmp"
@@ -363,16 +381,18 @@ KAFKA_SASL_PASSWORD = None
363
381
  from dynaconf import DjangoDynaconf, Validator # noqa
364
382
 
365
383
  # Validators
384
+ storage_keys = ("STORAGES.default.BACKEND", "DEFAULT_FILE_STORAGE")
366
385
  storage_validator = (
367
386
  Validator("REDIRECT_TO_OBJECT_STORAGE", eq=False)
368
- | Validator("DEFAULT_FILE_STORAGE", eq="pulpcore.app.models.storage.FileSystem")
369
- | Validator("DEFAULT_FILE_STORAGE", eq="storages.backends.azure_storage.AzureStorage")
370
- | Validator("DEFAULT_FILE_STORAGE", eq="storages.backends.s3boto3.S3Boto3Storage")
371
- | Validator("DEFAULT_FILE_STORAGE", eq="storages.backends.gcloud.GoogleCloudStorage")
387
+ | Validator(*storage_keys, eq="pulpcore.app.models.storage.FileSystem")
388
+ | Validator(*storage_keys, eq="storages.backends.azure_storage.AzureStorage")
389
+ | Validator(*storage_keys, eq="storages.backends.s3boto3.S3Boto3Storage")
390
+ | Validator(*storage_keys, eq="storages.backends.gcloud.GoogleCloudStorage")
372
391
  )
373
392
  storage_validator.messages["combined"] = (
374
- "'REDIRECT_TO_OBJECT_STORAGE=True' is only supported with the local file, S3, GCP or Azure"
375
- "storage backend configured in DEFAULT_FILE_STORAGE."
393
+ "'REDIRECT_TO_OBJECT_STORAGE=True' is only supported with the local file, S3, GCP or Azure "
394
+ "storage backend configured in STORAGES['default']['BACKEND'] "
395
+ "(deprecated DEFAULT_FILE_STORAGE)."
376
396
  )
377
397
 
378
398
  cache_enabled_validator = Validator("CACHE_ENABLED", eq=True)
@@ -555,6 +575,10 @@ if not (len(sys.argv) >= 2 and sys.argv[1] in _SKIPPED_COMMANDS_FOR_CONTENT_CHEC
555
575
  finally:
556
576
  connection.close()
557
577
 
578
+ # Ensures the cached property storage.backends uses the right value after dynaconf init
579
+ storages._backends = settings.STORAGES.copy()
580
+ storages.backends
581
+
558
582
  if settings.API_ROOT_REWRITE_HEADER:
559
583
  api_root = "/<path:api_root>/"
560
584
  else:
@@ -70,7 +70,7 @@ def _export_to_file_system(path, relative_paths_to_artifacts, method=FS_EXPORT_M
70
70
  ValidationError: When path is not in the ALLOWED_EXPORT_PATHS setting
71
71
  """
72
72
  using_filesystem_storage = (
73
- settings.DEFAULT_FILE_STORAGE == "pulpcore.app.models.storage.FileSystem"
73
+ settings.STORAGES["default"]["BACKEND"] == "pulpcore.app.models.storage.FileSystem"
74
74
  )
75
75
 
76
76
  if method != FS_EXPORT_METHODS.WRITE and not using_filesystem_storage:
@@ -228,6 +228,9 @@ def _import_file(fpath, resource_class, retry=False):
228
228
  """
229
229
  try:
230
230
  log.info(f"Importing file {fpath}.")
231
+ if not os.path.isfile(fpath):
232
+ log.info("...empty - skipping.")
233
+ return []
231
234
  with open(fpath, "r") as json_file:
232
235
  resource = resource_class()
233
236
  log.info(f"...Importing resource {resource.__class__.__name__}.")
@@ -236,6 +239,8 @@ def _import_file(fpath, resource_class, retry=False):
236
239
  # overlapping content.
237
240
  for batch_str in _impfile_iterator(json_file):
238
241
  data = Dataset().load(StringIO(batch_str))
242
+ if not data:
243
+ return []
239
244
  if retry:
240
245
  curr_attempt = 1
241
246
 
@@ -267,6 +272,7 @@ def _import_file(fpath, resource_class, retry=False):
267
272
  try:
268
273
  a_result = resource.import_data(data, raise_errors=True)
269
274
  except Exception as e: # noqa log on ANY exception and then re-raise
275
+ log.error(e)
270
276
  log.error(f"FATAL import-failure importing {fpath}")
271
277
  raise
272
278
  else:
@@ -528,7 +528,7 @@ def get_artifact_url(artifact, headers=None, http_method=None):
528
528
  if settings.DOMAIN_ENABLED:
529
529
  loc = f"domain {artifact_domain.name}.storage_class"
530
530
  else:
531
- loc = "settings.DEFAULT_FILE_STORAGE"
531
+ loc = "settings.STORAGES['default']['BACKEND']"
532
532
 
533
533
  raise NotImplementedError(
534
534
  f"The value {loc}={artifact_domain.storage_class} does not allow redirecting."
@@ -574,7 +574,9 @@ def get_default_domain():
574
574
  try:
575
575
  default_domain = Domain.objects.get(name="default")
576
576
  except Domain.DoesNotExist:
577
- default_domain = Domain(name="default", storage_class=settings.DEFAULT_FILE_STORAGE)
577
+ default_domain = Domain(
578
+ name="default", storage_class=settings.STORAGES["default"]["BACKEND"]
579
+ )
578
580
  default_domain.save(skip_hooks=True)
579
581
 
580
582
  return default_domain
@@ -41,6 +41,9 @@ class QueryModelResource(resources.ModelResource):
41
41
  def dehydrate_pulp_domain(self, content):
42
42
  return str(content.pulp_domain_id)
43
43
 
44
+ def render(self, value, obj=None, **kwargs):
45
+ return super().render(value, obj, coerce_to_string=False, **kwargs)
46
+
44
47
  def __init__(self, repo_version=None):
45
48
  self.repo_version = repo_version
46
49
  if repo_version:
@@ -597,28 +597,36 @@ def backend_settings_factory(pulp_settings):
597
597
  keys = dict()
598
598
  keys["pulpcore.app.models.storage.FileSystem"] = ["MEDIA_ROOT", "MEDIA_URL"]
599
599
  keys["storages.backends.s3boto3.S3Boto3Storage"] = [
600
- "AWS_ACCESS_KEY_ID",
601
- "AWS_SECRET_ACCESS_KEY",
602
- "AWS_S3_ENDPOINT_URL",
603
- "AWS_S3_ADDRESSING_STYLE",
604
- "AWS_S3_SIGNATURE_VERSION",
605
- "AWS_S3_REGION_NAME",
606
- "AWS_STORAGE_BUCKET_NAME",
600
+ "access_key",
601
+ "secret_key",
602
+ "endpoint_url",
603
+ "addressing_style",
604
+ "signature_version",
605
+ "region_name",
606
+ "bucket_name",
607
607
  ]
608
608
  keys["storages.backends.s3.S3Storage"] = keys["storages.backends.s3boto3.S3Boto3Storage"]
609
609
  keys["storages.backends.azure_storage.AzureStorage"] = [
610
- "AZURE_ACCOUNT_NAME",
611
- "AZURE_CONTAINER",
612
- "AZURE_ACCOUNT_KEY",
613
- "AZURE_URL_EXPIRATION_SECS",
614
- "AZURE_OVERWRITE_FILES",
615
- "AZURE_LOCATION",
616
- "AZURE_CONNECTION_STRING",
610
+ "account_name",
611
+ "azure_container",
612
+ "account_key",
613
+ "expiration_secs",
614
+ "overwrite_files",
615
+ "location",
616
+ "connection_string",
617
617
  ]
618
618
  settings = storage_settings or dict()
619
- backend = storage_class or pulp_settings.DEFAULT_FILE_STORAGE
620
- for key in keys[backend]:
621
- if key not in settings:
619
+ backend = storage_class or pulp_settings.STORAGES["default"]["BACKEND"]
620
+ not_defined_settings = (k for k in keys[backend] if k not in settings)
621
+ # Read storage settings from STORAGES.default.OPTIONS when using the default backend
622
+ default_backend = pulp_settings.STORAGES["default"]["BACKEND"]
623
+ storages_dict = getattr(pulp_settings, "STORAGES", {})
624
+ storage_options = storages_dict.get("default", {}).get("OPTIONS", {})
625
+ if storage_options and backend == default_backend:
626
+ for key in not_defined_settings:
627
+ settings[key] = storage_options.get(key)
628
+ else:
629
+ for key in not_defined_settings:
622
630
  settings[key] = getattr(pulp_settings, key, None)
623
631
  return backend, settings
624
632
 
@@ -2,8 +2,6 @@ import requests
2
2
  import subprocess
3
3
  from hashlib import sha256
4
4
 
5
- from django.conf import settings
6
-
7
5
 
8
6
  OBJECT_STORAGES = (
9
7
  "storages.backends.s3boto3.S3Boto3Storage",
@@ -13,7 +11,7 @@ OBJECT_STORAGES = (
13
11
  )
14
12
 
15
13
 
16
- def test_artifact_distribution(random_artifact):
14
+ def test_artifact_distribution(random_artifact, pulp_settings):
17
15
  artifact_uuid = random_artifact.pulp_href.split("/")[-2]
18
16
 
19
17
  commands = (
@@ -30,7 +28,7 @@ def test_artifact_distribution(random_artifact):
30
28
  hasher = sha256()
31
29
  hasher.update(response.content)
32
30
  assert hasher.hexdigest() == random_artifact.sha256
33
- if settings.DEFAULT_FILE_STORAGE in OBJECT_STORAGES:
31
+ if pulp_settings.STORAGES["default"]["BACKEND"] in OBJECT_STORAGES:
34
32
  content_disposition = response.headers.get("Content-Disposition")
35
33
  assert content_disposition is not None
36
34
  filename = artifact_uuid
@@ -6,7 +6,6 @@ import os
6
6
  import uuid
7
7
  import pytest
8
8
 
9
- from django.conf import settings
10
9
  from pulpcore.client.pulpcore import ApiException
11
10
 
12
11
 
@@ -145,12 +144,12 @@ def test_upload_mixed_attrs(pulpcore_bindings, pulpcore_random_file):
145
144
 
146
145
 
147
146
  @pytest.mark.parallel
148
- def test_delete_artifact(pulpcore_bindings, pulpcore_random_file, gen_user):
147
+ def test_delete_artifact(pulpcore_bindings, pulpcore_random_file, gen_user, pulp_settings):
149
148
  """Verify that the deletion of artifacts is prohibited for both regular users and
150
149
  administrators."""
151
- if settings.DEFAULT_FILE_STORAGE != "pulpcore.app.models.storage.FileSystem":
150
+ if pulp_settings.STORAGES["default"]["BACKEND"] != "pulpcore.app.models.storage.FileSystem":
152
151
  pytest.skip("this test only works for filesystem storage")
153
- media_root = settings.MEDIA_ROOT
152
+ media_root = pulp_settings.MEDIA_ROOT
154
153
 
155
154
  artifact = pulpcore_bindings.ArtifactsApi.create(pulpcore_random_file["name"])
156
155
  path_to_file = os.path.join(media_root, artifact.file)
@@ -5,7 +5,6 @@ import random
5
5
  import string
6
6
  import json
7
7
  from pulpcore.client.pulpcore import ApiException
8
- from pulpcore.app import settings
9
8
 
10
9
  from pulpcore.tests.functional.utils import PulpTaskError
11
10
 
@@ -51,7 +50,7 @@ def test_crud_domains(pulpcore_bindings, monitor_task):
51
50
 
52
51
 
53
52
  @pytest.mark.parallel
54
- def test_default_domain(pulpcore_bindings):
53
+ def test_default_domain(pulpcore_bindings, pulp_settings):
55
54
  """Test properties around the default domain."""
56
55
  domains = pulpcore_bindings.DomainsApi.list(name="default")
57
56
  assert domains.count == 1
@@ -59,9 +58,9 @@ def test_default_domain(pulpcore_bindings):
59
58
  # Read the default domain, ensure storage is set to default
60
59
  default_domain = domains.results[0]
61
60
  assert default_domain.name == "default"
62
- assert default_domain.storage_class == settings.DEFAULT_FILE_STORAGE
63
- assert default_domain.redirect_to_object_storage == settings.REDIRECT_TO_OBJECT_STORAGE
64
- assert default_domain.hide_guarded_distributions == settings.HIDE_GUARDED_DISTRIBUTIONS
61
+ assert default_domain.storage_class == pulp_settings.STORAGES["default"]["BACKEND"]
62
+ assert default_domain.redirect_to_object_storage == pulp_settings.REDIRECT_TO_OBJECT_STORAGE
63
+ assert default_domain.hide_guarded_distributions == pulp_settings.HIDE_GUARDED_DISTRIBUTIONS
65
64
 
66
65
  # Try to create another default domain
67
66
  body = {
@@ -92,9 +91,9 @@ def test_default_domain(pulpcore_bindings):
92
91
 
93
92
 
94
93
  @pytest.mark.parallel
95
- def test_active_domain_deletion(pulpcore_bindings, monitor_task):
94
+ def test_active_domain_deletion(pulpcore_bindings, monitor_task, pulp_settings):
96
95
  """Test trying to delete a domain that is in use, has objects in it."""
97
- if not settings.DOMAIN_ENABLED:
96
+ if not pulp_settings.DOMAIN_ENABLED:
98
97
  pytest.skip("Domains not enabled")
99
98
  name = str(uuid.uuid4())
100
99
  body = {
@@ -133,9 +132,10 @@ def test_orphan_domain_deletion(
133
132
  gen_object_with_cleanup,
134
133
  monitor_task,
135
134
  tmp_path,
135
+ pulp_settings,
136
136
  ):
137
137
  """Test trying to delete a domain that is in use, has objects in it."""
138
- if not settings.DOMAIN_ENABLED:
138
+ if not pulp_settings.DOMAIN_ENABLED:
139
139
  pytest.skip("Domains not enabled")
140
140
  body = {
141
141
  "name": str(uuid.uuid4()),
@@ -177,9 +177,9 @@ def test_orphan_domain_deletion(
177
177
 
178
178
 
179
179
  @pytest.mark.parallel
180
- def test_special_domain_creation(pulpcore_bindings, gen_object_with_cleanup):
180
+ def test_special_domain_creation(pulpcore_bindings, gen_object_with_cleanup, pulp_settings):
181
181
  """Test many possible domain creation scenarios."""
182
- if not settings.DOMAIN_ENABLED:
182
+ if not pulp_settings.DOMAIN_ENABLED:
183
183
  pytest.skip("Domains not enabled")
184
184
  # This test needs to account for which environment it is running in
185
185
  storage_types = {