pulpcore 3.49.54__tar.gz → 3.49.63__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 (514) hide show
  1. {pulpcore-3.49.54 → pulpcore-3.49.63}/CHANGES.md +208 -0
  2. {pulpcore-3.49.54 → pulpcore-3.49.63}/PKG-INFO +3 -3
  3. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_certguard/app/__init__.py +1 -1
  4. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_certguard/app/models.py +2 -3
  5. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_certguard/tests/functional/api/test_rhsm_certguard.py +5 -6
  6. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_certguard/tests/functional/api/test_x509_certguard.py +3 -3
  7. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_certguard/tests/functional/constants.py +0 -1
  8. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_file/app/__init__.py +1 -1
  9. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_file/app/modelresource.py +1 -0
  10. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_file/app/models.py +0 -1
  11. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_file/app/tasks/publishing.py +1 -3
  12. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_file/app/tasks/synchronizing.py +3 -5
  13. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_file/manifest.py +0 -3
  14. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_file/tests/functional/api/test_auto_publish.py +1 -2
  15. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_file/tests/functional/api/test_domains.py +4 -4
  16. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_file/tests/functional/api/test_download_policies.py +4 -5
  17. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_file/tests/functional/api/test_publish.py +4 -3
  18. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_file/tests/functional/api/test_rbac.py +3 -3
  19. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_file/tests/functional/api/test_sync.py +2 -4
  20. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_file/tests/unit/test_serializers.py +3 -4
  21. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/apps.py +6 -12
  22. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/authentication.py +1 -2
  23. pulpcore-3.49.63/pulpcore/app/checks.py +125 -0
  24. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/entrypoint.py +11 -5
  25. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/files.py +1 -2
  26. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/global_access_conditions.py +0 -1
  27. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/importexport.py +6 -6
  28. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/management/commands/add-signing-service.py +3 -7
  29. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/management/commands/analyze-publication.py +1 -1
  30. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/management/commands/datarepair-2327.py +2 -3
  31. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/management/commands/dump-permissions.py +12 -21
  32. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/management/commands/dump-publications-to-fs.py +4 -4
  33. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/management/commands/handle-artifact-checksums.py +3 -4
  34. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/management/commands/openapi.py +3 -7
  35. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/management/commands/remove-plugin.py +4 -5
  36. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/management/commands/remove-signing-service.py +2 -4
  37. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/management/commands/repository-size.py +3 -3
  38. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/management/commands/reset-admin-password.py +4 -1
  39. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/management/commands/rotate-db-key.py +1 -1
  40. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/models/__init__.py +2 -0
  41. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/models/access_policy.py +2 -2
  42. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/models/acs.py +2 -1
  43. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/models/analytics.py +1 -2
  44. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/models/content.py +7 -9
  45. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/models/domain.py +4 -5
  46. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/models/fields.py +1 -0
  47. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/models/importer.py +1 -0
  48. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/models/publication.py +28 -18
  49. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/models/replica.py +2 -1
  50. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/models/repository.py +7 -9
  51. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/models/storage.py +1 -1
  52. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/models/task.py +3 -3
  53. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/models/upload.py +1 -1
  54. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/replica.py +6 -5
  55. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/role_util.py +4 -5
  56. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/serializers/__init__.py +2 -0
  57. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/serializers/acs.py +0 -1
  58. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/serializers/base.py +9 -10
  59. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/serializers/content.py +2 -2
  60. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/serializers/domain.py +3 -5
  61. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/serializers/publication.py +3 -6
  62. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/serializers/reclaim.py +0 -1
  63. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/serializers/replica.py +2 -4
  64. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/serializers/upload.py +2 -3
  65. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/serializers/user.py +6 -7
  66. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/settings.py +1 -66
  67. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/tasks/__init__.py +2 -0
  68. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/tasks/analytics.py +3 -4
  69. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/tasks/export.py +22 -12
  70. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/tasks/importer.py +15 -18
  71. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/tasks/orphan.py +0 -1
  72. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/tasks/purge.py +3 -3
  73. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/tasks/replica.py +4 -4
  74. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/tasks/repository.py +7 -9
  75. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/templatetags/pulp_urls.py +2 -1
  76. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/urls.py +3 -4
  77. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/util.py +7 -11
  78. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/views/__init__.py +2 -0
  79. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/views/importer.py +8 -7
  80. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/viewsets/__init__.py +2 -0
  81. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/viewsets/base.py +6 -5
  82. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/viewsets/custom_filters.py +6 -7
  83. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/viewsets/domain.py +3 -3
  84. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/viewsets/exporter.py +5 -8
  85. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/viewsets/importer.py +4 -4
  86. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/viewsets/publication.py +11 -11
  87. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/viewsets/repository.py +6 -7
  88. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/viewsets/task.py +5 -5
  89. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/viewsets/upload.py +2 -3
  90. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/viewsets/user.py +7 -9
  91. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/wsgi.py +1 -0
  92. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/cache/__init__.py +1 -0
  93. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/cache/cache.py +6 -9
  94. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/constants.py +0 -1
  95. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/content/__init__.py +11 -14
  96. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/content/authentication.py +5 -4
  97. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/content/entrypoint.py +1 -0
  98. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/content/handler.py +27 -21
  99. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/content/instrumentation.py +7 -8
  100. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/download/__init__.py +1 -0
  101. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/download/base.py +3 -4
  102. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/download/factory.py +6 -6
  103. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/download/file.py +0 -1
  104. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/exceptions/__init__.py +2 -0
  105. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/filters.py +9 -11
  106. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/middleware.py +2 -1
  107. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/migrations.py +4 -7
  108. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/openapi/__init__.py +2 -1
  109. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/openapi/hooks.py +1 -3
  110. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/plugin/__init__.py +1 -0
  111. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/plugin/actions.py +0 -1
  112. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/plugin/authentication/__init__.py +1 -0
  113. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/plugin/cache/__init__.py +2 -0
  114. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/plugin/download/__init__.py +2 -0
  115. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/plugin/importexport.py +1 -0
  116. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/plugin/migrations.py +0 -1
  117. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/plugin/models/__init__.py +2 -0
  118. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/plugin/repo_version_utils.py +2 -3
  119. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/plugin/serializers/__init__.py +2 -0
  120. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/plugin/stages/__init__.py +2 -0
  121. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/plugin/stages/api.py +0 -1
  122. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/plugin/stages/artifact_stages.py +7 -9
  123. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/plugin/stages/content_stages.py +1 -2
  124. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/plugin/stages/declarative_version.py +1 -1
  125. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/plugin/stages/models.py +1 -2
  126. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/plugin/sync.py +0 -1
  127. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/plugin/tasking.py +1 -2
  128. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/plugin/util.py +6 -7
  129. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/plugin/viewsets/__init__.py +2 -0
  130. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/plugin/viewsets/content.py +2 -3
  131. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/tasking/_util.py +3 -2
  132. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/tasking/entrypoint.py +2 -3
  133. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/tasking/tasks.py +3 -2
  134. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/tasking/worker.py +11 -12
  135. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/tests/functional/__init__.py +2 -1
  136. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/tests/functional/api/test_api_docs.py +1 -0
  137. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/tests/functional/api/test_artifact_distribution.py +2 -1
  138. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/tests/functional/api/test_crd_artifacts.py +1 -0
  139. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/tests/functional/api/test_crud_domains.py +4 -3
  140. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/tests/functional/api/test_openapi_schema.py +2 -3
  141. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/tests/functional/api/test_replication.py +2 -3
  142. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/tests/functional/api/test_role.py +1 -0
  143. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/tests/functional/api/test_root_endpoint.py +1 -0
  144. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/tests/functional/api/test_status.py +1 -2
  145. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/tests/functional/api/test_upload.py +33 -2
  146. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/tests/functional/api/test_users_groups.py +3 -1
  147. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/tests/functional/api/using_plugin/test_content_path.py +1 -2
  148. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/tests/functional/api/using_plugin/test_distributions.py +3 -2
  149. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/tests/functional/api/using_plugin/test_orphans.py +1 -0
  150. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/tests/functional/api/using_plugin/test_proxy.py +3 -2
  151. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/tests/functional/api/using_plugin/test_pulpimport.py +3 -4
  152. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/tests/functional/api/using_plugin/test_purge.py +3 -4
  153. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/tests/functional/api/using_plugin/test_reclaim_disk_space.py +3 -4
  154. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/tests/functional/api/using_plugin/test_repair.py +3 -4
  155. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/tests/functional/api/using_plugin/test_repo_versions.py +2 -1
  156. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/tests/functional/content_with_coverage.py +1 -0
  157. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/tests/functional/gpg_ascii_armor_signing_service.py +1 -2
  158. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/tests/unit/conftest.py +2 -1
  159. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/tests/unit/content/test_handler.py +2 -2
  160. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/tests/unit/content/test_heartbeat.py +3 -3
  161. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/tests/unit/migration/test_0077_move_remote_url_credentials.py +3 -2
  162. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/tests/unit/models/test_base.py +3 -2
  163. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/tests/unit/models/test_content.py +2 -3
  164. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/tests/unit/models/test_remote.py +4 -5
  165. pulpcore-3.49.63/pulpcore/tests/unit/roles/test_adjust_roles.py +102 -0
  166. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/tests/unit/roles/test_roles.py +2 -3
  167. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/tests/unit/serializers/test_base.py +3 -4
  168. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/tests/unit/serializers/test_domain.py +2 -3
  169. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/tests/unit/stages/test_artifactdownloader.py +5 -5
  170. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/tests/unit/stages/test_stages.py +3 -4
  171. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/tests/unit/test_cache.py +2 -1
  172. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/tests/unit/test_import_checks.py +0 -1
  173. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/tests/unit/test_pulp_urls.py +2 -1
  174. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore.egg-info/PKG-INFO +3 -3
  175. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore.egg-info/SOURCES.txt +1 -0
  176. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore.egg-info/requires.txt +2 -2
  177. {pulpcore-3.49.54 → pulpcore-3.49.63}/pyproject.toml +31 -1
  178. {pulpcore-3.49.54 → pulpcore-3.49.63}/requirements.txt +2 -2
  179. {pulpcore-3.49.54 → pulpcore-3.49.63}/setup.py +1 -1
  180. pulpcore-3.49.54/pulpcore/app/checks.py +0 -58
  181. {pulpcore-3.49.54 → pulpcore-3.49.63}/CODE_OF_CONDUCT.md +0 -0
  182. {pulpcore-3.49.54 → pulpcore-3.49.63}/COMMITMENT +0 -0
  183. {pulpcore-3.49.54 → pulpcore-3.49.63}/CONTRIBUTING.md +0 -0
  184. {pulpcore-3.49.54 → pulpcore-3.49.63}/COPYRIGHT +0 -0
  185. {pulpcore-3.49.54 → pulpcore-3.49.63}/LICENSE +0 -0
  186. {pulpcore-3.49.54 → pulpcore-3.49.63}/MANIFEST.in +0 -0
  187. {pulpcore-3.49.54 → pulpcore-3.49.63}/README.md +0 -0
  188. {pulpcore-3.49.54 → pulpcore-3.49.63}/ci_requirements.txt +0 -0
  189. {pulpcore-3.49.54 → pulpcore-3.49.63}/functest_requirements.txt +0 -0
  190. {pulpcore-3.49.54 → pulpcore-3.49.63}/manage.py +0 -0
  191. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_certguard/__init__.py +0 -0
  192. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_certguard/app/migrations/0001_initial.py +0 -0
  193. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_certguard/app/migrations/0002_alter_rhsmcertguard_contentguard_ptr_and_more.py +0 -0
  194. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_certguard/app/migrations/__init__.py +0 -0
  195. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_certguard/app/serializers.py +2 -2
  196. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_certguard/app/utils.py +0 -0
  197. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_certguard/app/viewsets.py +0 -0
  198. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_certguard/pytest_plugin.py +1 -1
  199. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_certguard/tests/__init__.py +0 -0
  200. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_certguard/tests/functional/__init__.py +0 -0
  201. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_certguard/tests/functional/api/__init__.py +0 -0
  202. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_certguard/tests/functional/artifacts/rhsm/katello-default-ca.crt +0 -0
  203. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_certguard/tests/functional/artifacts/rhsm/katello-default-ca.key +0 -0
  204. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_certguard/tests/functional/artifacts/rhsm/trusted_but_expired.pem +0 -0
  205. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_certguard/tests/functional/artifacts/rhsm/uber.cert +0 -0
  206. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_certguard/tests/functional/artifacts/rhsm/untrusted_cert-key.pem +0 -0
  207. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_certguard/tests/functional/artifacts/rhsm/untrusted_cert.pem +0 -0
  208. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_certguard/tests/functional/artifacts/rhsm/v1/1514454871848760713-key.pem +0 -0
  209. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_certguard/tests/functional/artifacts/rhsm/v1/1514454871848760713.pem +0 -0
  210. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_certguard/tests/functional/artifacts/rhsm/v1/159442575569388840-key.pem +0 -0
  211. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_certguard/tests/functional/artifacts/rhsm/v1/159442575569388840.pem +0 -0
  212. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_certguard/tests/functional/artifacts/rhsm/v3/4260035510644027985-key.pem +0 -0
  213. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_certguard/tests/functional/artifacts/rhsm/v3/4260035510644027985.pem +0 -0
  214. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_certguard/tests/functional/artifacts/rhsm/v3/5527980418107729172-key.pem +0 -0
  215. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_certguard/tests/functional/artifacts/rhsm/v3/5527980418107729172.pem +0 -0
  216. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_certguard/tests/functional/artifacts/thirdparty_ca/certificates/ca.pem +0 -0
  217. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_certguard/tests/functional/artifacts/thirdparty_ca/genca.sh +0 -0
  218. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_certguard/tests/functional/artifacts/thirdparty_ca/keys/ca.pem +0 -0
  219. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_certguard/tests/functional/artifacts/x509/certificates/ca.pem +0 -0
  220. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_certguard/tests/functional/artifacts/x509/certificates/client.pem +0 -0
  221. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_certguard/tests/functional/artifacts/x509/certificates/server.pem +0 -0
  222. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_certguard/tests/functional/artifacts/x509/certificates/un_urlencoded_cert.txt +0 -0
  223. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_certguard/tests/functional/artifacts/x509/certificates/untrusted_client.pem +0 -0
  224. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_certguard/tests/functional/artifacts/x509/genall.sh +0 -0
  225. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_certguard/tests/functional/artifacts/x509/genca.sh +0 -0
  226. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_certguard/tests/functional/artifacts/x509/genclient.sh +0 -0
  227. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_certguard/tests/functional/artifacts/x509/gensrv.sh +0 -0
  228. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_certguard/tests/functional/artifacts/x509/keys/ca.pem +0 -0
  229. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_certguard/tests/functional/artifacts/x509/keys/client.pem +0 -0
  230. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_certguard/tests/functional/artifacts/x509/keys/server.pem +0 -0
  231. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_certguard/tests/functional/conftest.py +0 -0
  232. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_certguard/tests/unit/__init__.py +0 -0
  233. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_certguard/tests/unit/test_models.py +0 -0
  234. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_file/__init__.py +0 -0
  235. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_file/app/migrations/0001_initial.py +0 -0
  236. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_file/app/migrations/0002_file_related_names.py +0 -0
  237. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_file/app/migrations/0003_auto_20191014_1721.py +0 -0
  238. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_file/app/migrations/0004_filefilesystemexporter.py +0 -0
  239. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_file/app/migrations/0005_filerepository.py +0 -0
  240. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_file/app/migrations/0006_delete_filefilesystemexporter.py +0 -0
  241. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_file/app/migrations/0007_filefilesystemexporter.py +0 -0
  242. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_file/app/migrations/0008_add_manifest_field.py +0 -0
  243. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_file/app/migrations/0009_move_data_to_new_master_distribution_model.py +0 -0
  244. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_file/app/migrations/0010_auto_publish.py +0 -0
  245. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_file/app/migrations/0011_fix_auto_publish.py +0 -0
  246. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_file/app/migrations/0012_delete_filefilesystemexporter.py +0 -0
  247. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_file/app/migrations/0013_file_acs.py +0 -0
  248. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_file/app/migrations/0014_new_rbac_permissions.py +0 -0
  249. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_file/app/migrations/0015_allow_null_manifest.py +0 -0
  250. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_file/app/migrations/0016_add_domain.py +0 -0
  251. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_file/app/migrations/0017_alter_filealternatecontentsource_alternatecontentsource_ptr_and_more.py +0 -0
  252. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_file/app/migrations/__init__.py +0 -0
  253. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_file/app/replica.py +2 -2
  254. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_file/app/serializers.py +1 -1
  255. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_file/app/tasks/__init__.py +0 -0
  256. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_file/app/viewsets.py +3 -3
  257. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_file/pytest_plugin.py +1 -1
  258. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_file/tests/__init__.py +0 -0
  259. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_file/tests/functional/__init__.py +0 -0
  260. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_file/tests/functional/api/__init__.py +0 -0
  261. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_file/tests/functional/api/test_acs.py +2 -2
  262. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_file/tests/functional/api/test_bad_sync.py +2 -2
  263. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_file/tests/functional/api/test_crud_content_unit.py +3 -3
  264. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_file/tests/functional/api/test_crud_remotes.py +0 -0
  265. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_file/tests/functional/api/test_generic_list.py +0 -0
  266. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_file/tests/functional/api/test_labels.py +0 -0
  267. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_file/tests/functional/api/test_mime_types.py +3 -3
  268. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_file/tests/functional/api/test_pulp_export.py +3 -3
  269. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_file/tests/functional/api/test_remote_settings.py +0 -0
  270. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulp_file/tests/unit/__init__.py +0 -0
  271. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/__init__.py +0 -0
  272. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/__init__.py +0 -0
  273. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/access_policy.py +0 -0
  274. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/loggers.py +0 -0
  275. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/manage.py +0 -0
  276. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/management/__init__.py +0 -0
  277. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/management/commands/__init__.py +0 -0
  278. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/management/commands/shell.py +0 -0
  279. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0001_initial.py +0 -0
  280. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0002_increase_artifact_size_field.py +0 -0
  281. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0003_remove_upload_completed.py +0 -0
  282. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0004_add_duplicated_reserved_resources.py +0 -0
  283. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0005_progressreport_code.py +0 -0
  284. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0006_repository_plugin_managed.py +0 -0
  285. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0007_delete_progress_proxies.py +0 -0
  286. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0008_published_metadata_as_content.py +0 -0
  287. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0009_remove_task_non_fatal_errors.py +0 -0
  288. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0010_pulp_fields.py +0 -0
  289. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0011_relative_path.py +0 -0
  290. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0012_auto_20191104_2000.py +0 -0
  291. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0013_repository_pulp_type.py +0 -0
  292. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0014_remove_repository_plugin_managed.py +0 -0
  293. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0015_auto_20191112_1426.py +0 -0
  294. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0016_charfield_to_textfield.py +0 -0
  295. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0017_remove_task_parent.py +0 -0
  296. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0018_auto_20191127_2350.py +0 -0
  297. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0019_add_signing_service_model.py +0 -0
  298. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0020_change_publishedartifact_constraints.py +0 -0
  299. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0021_add_signing_service_foreign_key.py +0 -0
  300. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0022_rename_last_version.py +0 -0
  301. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0023_change_exporter_models.py +0 -0
  302. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0024_use_local_storage_for_uploads.py +0 -0
  303. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0025_task_parent_task.py +0 -0
  304. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0026_task_group.py +0 -0
  305. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0027_export_backend.py +0 -0
  306. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0028_import_importer_pulpimporter_pulpimporterrepository.py +0 -0
  307. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0029_export_delete.py +0 -0
  308. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0030_taskgroup_all_tasks_dispatched.py +0 -0
  309. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0031_import_export_validate_params.py +0 -0
  310. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0032_export_to_chunks.py +0 -0
  311. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0033_increase_remote_artifact_size_field.py +0 -0
  312. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0034_groupprogressreport.py +0 -0
  313. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0035_content_upstream_id.py +0 -0
  314. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0036_unprotect_last_export.py +0 -0
  315. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0037_pulptemporaryfile.py +0 -0
  316. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0038_repository_remote.py +0 -0
  317. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0039_change_download_concurrency.py +0 -0
  318. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0040_set_admin_is_staff.py +0 -0
  319. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0041_accesspolicy.py +0 -0
  320. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0042_rbac_for_tasks.py +0 -0
  321. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0043_toc_attribute.py +0 -0
  322. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0044_temp_file_artifact_field.py +0 -0
  323. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0045_accesspolicy_permissions_allow_null.py +0 -0
  324. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0046_task__resource_job_id.py +0 -0
  325. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0047_improve_orphan_cleanup.py +0 -0
  326. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0048_fips_checksums.py +0 -0
  327. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0049_add_file_field_to_uploadchunk.py +0 -0
  328. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0050_namespace_access_policies.py +0 -0
  329. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0051_timeoutfields.py +0 -0
  330. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0052_tasking_logging_cid.py +0 -0
  331. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0053_remote_headers.py +0 -0
  332. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0054_add_public_key.py +0 -0
  333. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0055_label.py +0 -0
  334. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0056_remote_rate_limit.py +0 -0
  335. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0057_add_label_indexes.py +0 -0
  336. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0058_accesspolicy_customized.py +0 -0
  337. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0059_proxy_creds.py +0 -0
  338. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0060_data_migration_proxy_creds.py +0 -0
  339. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0061_call_handle_artifact_checksums_command.py +0 -0
  340. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0062_add_new_distribution_mastermodel.py +0 -0
  341. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0063_repository_retained_versions.py +0 -0
  342. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0064_add_new_style_task_columns.py +0 -0
  343. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0064_repository_user_hidden.py +0 -0
  344. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0065_merge_20210615_1211.py +0 -0
  345. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0066_download_concurrency_and_retry_changes.py +0 -0
  346. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0067_add_protect_to_task_reservation.py +0 -0
  347. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0068_add_timestamp_of_interest.py +0 -0
  348. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0069_update_json_fields.py +0 -0
  349. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0070_rename_retained_versions.py +0 -0
  350. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0071_filesystemexport_filesystemexporter.py +0 -0
  351. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0072_add_method_to_filesystem_exporter.py +0 -0
  352. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0073_encrypt_remote_fields.py +0 -0
  353. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0074_acs.py +0 -0
  354. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0075_rbaccontentguard.py +0 -0
  355. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0076_remove_reserved_resource.py +0 -0
  356. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0077_move_remote_url_credentials.py +0 -0
  357. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0078_grouprole_role_userrole.py +0 -0
  358. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0079_rename_permissions_assignment_accesspolicy_creation_hooks.py +0 -0
  359. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0080_proxy_group_model.py +0 -0
  360. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0081_reapplabel_group_permissions.py +0 -0
  361. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0082_add_manage_roles_permissions.py +0 -0
  362. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0083_alter_group_options.py +0 -0
  363. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0084_alter_rbaccontentguard_options.py +0 -0
  364. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0085_contentredirectcontentguard.py +0 -0
  365. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0086_task_json_fields.py +0 -0
  366. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0087_taskschedule.py +0 -0
  367. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0088_accesspolicy_queryset_scoping.py +0 -0
  368. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0089_alter_contentredirectcontentguard_options.py +0 -0
  369. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0090_char_to_text_field.py +0 -0
  370. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0091_systemid.py +0 -0
  371. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0092_alter_upload_options.py +0 -0
  372. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0093_add_info_field_repositoryversion.py +0 -0
  373. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0094_protect_repository_content.py +0 -0
  374. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0095_artifactdistribution.py +0 -0
  375. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0096_alter_task_logging_cid.py +0 -0
  376. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0097_remove_telemetry_task_schedule.py +0 -0
  377. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0098_pulp_labels.py +0 -0
  378. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0099_versions_field.py +0 -0
  379. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0100_upstreampulp.py +0 -0
  380. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0101_add_domain.py +0 -0
  381. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0102_add_domain_relations.py +0 -0
  382. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0103_alter_export_task.py +0 -0
  383. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0104_delete_label.py +0 -0
  384. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0105_abstract_uuid_gen.py +0 -0
  385. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0106_alter_artifactdistribution_distribution_ptr_and_more.py +0 -0
  386. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0107_distribution_hidden.py +0 -0
  387. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0108_task_versions.py +0 -0
  388. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0109_contentartifact_relative_path_index.py +0 -0
  389. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0110_apiappstatus.py +0 -0
  390. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0111_task_enc_args_task_enc_kwargs.py +0 -0
  391. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0112_alter_upstreampulp_options.py +0 -0
  392. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0113_headercontentguard.py +0 -0
  393. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0114_remove_task_args_remove_task_kwargs.py +0 -0
  394. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0115_compositecontentguard.py +0 -0
  395. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0116_alter_remoteartifact_md5_alter_remoteartifact_sha1_and_more.py +0 -0
  396. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/0117_task_unblocked_at.py +0 -0
  397. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/migrations/__init__.py +0 -0
  398. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/mime_types.py +0 -0
  399. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/modelresource.py +2 -2
  400. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/models/base.py +1 -1
  401. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/models/exporter.py +0 -0
  402. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/models/generic.py +0 -0
  403. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/models/progress.py +0 -0
  404. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/models/role.py +0 -0
  405. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/models/status.py +0 -0
  406. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/protobuf/__init__.py +0 -0
  407. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/protobuf/analytics_pb2.py +0 -0
  408. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/pulp_hashlib.py +1 -1
  409. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/pulpcore_gunicorn_application.py +0 -0
  410. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/redis_connection.py +0 -0
  411. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/response.py +0 -0
  412. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/serializers/access_policy.py +0 -0
  413. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/serializers/exporter.py +1 -1
  414. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/serializers/fields.py +1 -1
  415. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/serializers/importer.py +0 -0
  416. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/serializers/orphans.py +0 -0
  417. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/serializers/progress.py +0 -0
  418. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/serializers/purge.py +0 -0
  419. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/serializers/repair.py +0 -0
  420. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/serializers/repository.py +2 -2
  421. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/serializers/status.py +0 -0
  422. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/serializers/task.py +1 -1
  423. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/tasks/base.py +0 -0
  424. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/tasks/reclaim_space.py +0 -0
  425. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/tasks/test.py +0 -0
  426. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/tasks/upload.py +0 -0
  427. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/templates/rest_framework/api.html +0 -0
  428. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/templatetags/__init__.py +0 -0
  429. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/views/orphans.py +0 -0
  430. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/views/repair.py +1 -1
  431. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/views/status.py +2 -2
  432. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/viewsets/access_policy.py +2 -2
  433. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/viewsets/acs.py +2 -2
  434. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/viewsets/content.py +1 -1
  435. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/viewsets/orphans.py +1 -1
  436. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/viewsets/reclaim.py +1 -1
  437. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/app/viewsets/replica.py +2 -2
  438. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/backends.py +3 -3
  439. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/download/http.py +2 -2
  440. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/exceptions/base.py +0 -0
  441. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/exceptions/plugin.py +0 -0
  442. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/exceptions/validation.py +0 -0
  443. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/plugin/access_policy.py +0 -0
  444. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/plugin/apps.py +0 -0
  445. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/plugin/constants.py +2 -2
  446. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/plugin/content.py +0 -0
  447. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/plugin/exceptions.py +1 -1
  448. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/plugin/files.py +0 -0
  449. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/plugin/modelresources.py +0 -0
  450. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/plugin/models/role.py +0 -0
  451. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/plugin/publication_utils.py +1 -1
  452. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/plugin/pulp_hashlib.py +0 -0
  453. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/plugin/replica.py +0 -0
  454. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/plugin/responses.py +0 -0
  455. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/plugin/serializers/content.py +2 -2
  456. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/plugin/storage.py +0 -0
  457. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/responses.py +0 -0
  458. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/tasking/__init__.py +0 -0
  459. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/tasking/storage.py +0 -0
  460. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/tests/__init__.py +0 -0
  461. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/tests/functional/api/__init__.py +0 -0
  462. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/tests/functional/api/test_access_policy.py +0 -0
  463. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/tests/functional/api/test_auth.py +3 -3
  464. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/tests/functional/api/test_correlation_id.py +0 -0
  465. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/tests/functional/api/test_filter.py +2 -2
  466. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/tests/functional/api/test_repos.py +2 -2
  467. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/tests/functional/api/test_scoping.py +0 -0
  468. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/tests/functional/api/test_signing_service.py +0 -0
  469. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/tests/functional/api/test_tasking.py +3 -3
  470. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/tests/functional/api/test_workers.py +1 -1
  471. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/tests/functional/api/using_plugin/__init__.py +0 -0
  472. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/tests/functional/api/using_plugin/test_content_access.py +2 -2
  473. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/tests/functional/api/using_plugin/test_content_cache.py +4 -4
  474. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/tests/functional/api/using_plugin/test_content_delivery.py +0 -0
  475. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/tests/functional/api/using_plugin/test_content_directory.py +0 -0
  476. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/tests/functional/api/using_plugin/test_content_promotion.py +2 -2
  477. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/tests/functional/api/using_plugin/test_contentguard.py +4 -4
  478. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/tests/functional/api/using_plugin/test_crud_repos.py +4 -4
  479. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/tests/functional/api/using_plugin/test_filesystemexport.py +3 -3
  480. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/tests/functional/api/using_plugin/test_labels.py +0 -0
  481. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/tests/functional/api/using_plugin/test_pagination.py +0 -0
  482. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/tests/functional/api/using_plugin/test_tasks.py +1 -1
  483. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/tests/functional/api/using_plugin/test_unlinking_repo.py +0 -0
  484. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/tests/functional/assets/__init__.py +0 -0
  485. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/tests/functional/utils.py +2 -2
  486. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/tests/performance/__init__.py +0 -0
  487. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/tests/performance/test_performance.py +2 -2
  488. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/tests/unit/__init__.py +0 -0
  489. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/tests/unit/content/__init__.py +0 -0
  490. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/tests/unit/download/__init__.py +0 -0
  491. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/tests/unit/download/test_downloader_base.py +0 -0
  492. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/tests/unit/download/test_downloader_factory.py +0 -0
  493. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/tests/unit/migration/__init__.py +0 -0
  494. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/tests/unit/models/__init__.py +0 -0
  495. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/tests/unit/models/test_repository.py +2 -2
  496. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/tests/unit/roles/__init__.py +0 -0
  497. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/tests/unit/serializers/__init__.py +0 -0
  498. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/tests/unit/serializers/test_pulpexport.py +1 -1
  499. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/tests/unit/serializers/test_repository.py +2 -2
  500. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/tests/unit/stages/__init__.py +0 -0
  501. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/tests/unit/test_chunked_file.py +0 -0
  502. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/tests/unit/test_content_guard.py +3 -3
  503. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/tests/unit/test_files.py +0 -0
  504. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/tests/unit/test_settings.py +0 -0
  505. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/tests/unit/test_util.py +2 -2
  506. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/tests/unit/test_viewsets.py +0 -0
  507. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/tests/unit/viewsets/__init__.py +0 -0
  508. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore/tests/unit/viewsets/test_viewset_base.py +2 -2
  509. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore.egg-info/dependency_links.txt +0 -0
  510. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore.egg-info/entry_points.txt +0 -0
  511. {pulpcore-3.49.54 → pulpcore-3.49.63}/pulpcore.egg-info/top_level.txt +0 -0
  512. {pulpcore-3.49.54 → pulpcore-3.49.63}/setup.cfg +0 -0
  513. {pulpcore-3.49.54 → pulpcore-3.49.63}/test_requirements.txt +0 -0
  514. {pulpcore-3.49.54 → pulpcore-3.49.63}/unittest_requirements.txt +0 -0
@@ -8,6 +8,214 @@
8
8
 
9
9
  [//]: # (towncrier release notes start)
10
10
 
11
+ ## 3.49.63 (2026-06-09) {: #3.49.63 }
12
+
13
+ ### REST API {: #3.49.63-rest-api }
14
+
15
+ #### Bugfixes {: #3.49.63-rest-api-bugfix }
16
+
17
+ - Fixed `adjust_roles` to use `update_or_create` instead of `get_or_create` when populating locked roles, so that a pre-existing role with `locked=False` is updated rather than causing a duplicate key error.
18
+
19
+ ### Plugin API {: #3.49.63-plugin-api }
20
+
21
+ No significant changes.
22
+
23
+ ### Pulp File {: #3.49.63-pulp-file }
24
+
25
+ No significant changes.
26
+
27
+ ### Pulp Cert Guard {: #3.49.63-pulp-cert-guard }
28
+
29
+ No significant changes.
30
+
31
+ ---
32
+
33
+ ## 3.49.62 (2026-06-03) {: #3.49.62 }
34
+
35
+ ### REST API {: #3.49.62-rest-api }
36
+
37
+ #### Bugfixes {: #3.49.62-rest-api-bugfix }
38
+
39
+ - Optimized `QueryExistingArtifacts` by reducing database queries.
40
+ [#7558](https://github.com/pulp/pulpcore/issues/7558)
41
+
42
+ ### Plugin API {: #3.49.62-plugin-api }
43
+
44
+ No significant changes.
45
+
46
+ ### Pulp File {: #3.49.62-pulp-file }
47
+
48
+ No significant changes.
49
+
50
+ ### Pulp Cert Guard {: #3.49.62-pulp-cert-guard }
51
+
52
+ No significant changes.
53
+
54
+ ---
55
+
56
+ ## 3.49.61 (2026-05-07) {: #3.49.61 }
57
+
58
+ ### REST API {: #3.49.61-rest-api }
59
+
60
+ No significant changes.
61
+
62
+ ### Plugin API {: #3.49.61-plugin-api }
63
+
64
+ No significant changes.
65
+
66
+ ### Pulp File {: #3.49.61-pulp-file }
67
+
68
+ No significant changes.
69
+
70
+ ### Pulp Cert Guard {: #3.49.61-pulp-cert-guard }
71
+
72
+ No significant changes.
73
+
74
+ ---
75
+
76
+ ## 3.49.60 (2026-05-05) {: #3.49.60 }
77
+
78
+ ### REST API {: #3.49.60-rest-api }
79
+
80
+ #### Bugfixes {: #3.49.60-rest-api-bugfix }
81
+
82
+ - Set default ``--max-requests 10000`` and ``--max-requests-jitter 500`` for API workers
83
+ to prevent unbounded RSS growth from glibc heap fragmentation over long-lived worker processes.
84
+ [#7482](https://github.com/pulp/pulpcore/issues/7482)
85
+ - Fixed `TypeError: 'str' object has no attribute 'tolower'` in `_ensure_bool` during incremental content exports. Changed `.tolower()` to `.lower()`.
86
+ [#7678](https://github.com/pulp/pulpcore/issues/7678)
87
+
88
+ ### Plugin API {: #3.49.60-plugin-api }
89
+
90
+ No significant changes.
91
+
92
+ ### Pulp File {: #3.49.60-pulp-file }
93
+
94
+ No significant changes.
95
+
96
+ ### Pulp Cert Guard {: #3.49.60-pulp-cert-guard }
97
+
98
+ No significant changes.
99
+
100
+ ---
101
+
102
+ ## 3.49.59 (2026-04-28) {: #3.49.59 }
103
+
104
+ ### REST API {: #3.49.59-rest-api }
105
+
106
+ #### Bugfixes {: #3.49.59-rest-api-bugfix }
107
+
108
+ - Replace use of the deprecated distutils. The module has been removed in Python 3.12 .
109
+ [#7571](https://github.com/pulp/pulpcore/issues/7571)
110
+
111
+ ### Plugin API {: #3.49.59-plugin-api }
112
+
113
+ No significant changes.
114
+
115
+ ### Pulp File {: #3.49.59-pulp-file }
116
+
117
+ No significant changes.
118
+
119
+ ### Pulp Cert Guard {: #3.49.59-pulp-cert-guard }
120
+
121
+ No significant changes.
122
+
123
+ ---
124
+
125
+ ## 3.49.58 (2026-04-14) {: #3.49.58 }
126
+
127
+ ### REST API {: #3.49.58-rest-api }
128
+
129
+ #### Bugfixes {: #3.49.58-rest-api-bugfix }
130
+
131
+ - Fixed `reset-admin-password` command failing when using `--random` option on Django 5.
132
+ [#7533](https://github.com/pulp/pulpcore/issues/7533)
133
+
134
+ ### Plugin API {: #3.49.58-plugin-api }
135
+
136
+ No significant changes.
137
+
138
+ ### Pulp File {: #3.49.58-pulp-file }
139
+
140
+ No significant changes.
141
+
142
+ ### Pulp Cert Guard {: #3.49.58-pulp-cert-guard }
143
+
144
+ No significant changes.
145
+
146
+ ---
147
+
148
+ ## 3.49.57 (2026-03-24) {: #3.49.57 }
149
+
150
+ ### REST API {: #3.49.57-rest-api }
151
+
152
+ No significant changes.
153
+
154
+ ### Plugin API {: #3.49.57-plugin-api }
155
+
156
+ No significant changes.
157
+
158
+ ### Pulp File {: #3.49.57-pulp-file }
159
+
160
+ No significant changes.
161
+
162
+ ### Pulp Cert Guard {: #3.49.57-pulp-cert-guard }
163
+
164
+ No significant changes.
165
+
166
+ ---
167
+
168
+ ## 3.49.56 (2026-03-17) {: #3.49.56 }
169
+
170
+ ### REST API {: #3.49.56-rest-api }
171
+
172
+ #### Bugfixes {: #3.49.56-rest-api-bugfix }
173
+
174
+ - Fixed duplicate chunk uploads corrupting the entire upload
175
+ [#6381](https://github.com/pulp/pulpcore/issues/6381)
176
+ - Clean up on-demand temporary file left over on an aborted download.
177
+ [#6975](https://github.com/pulp/pulpcore/issues/6975)
178
+ - Fixed metadata artifacts being re-uploaded to storage when creating a publication for an already-published repository version.
179
+ [#7344](https://github.com/pulp/pulpcore/issues/7344)
180
+
181
+ ### Plugin API {: #3.49.56-plugin-api }
182
+
183
+ No significant changes.
184
+
185
+ ### Pulp File {: #3.49.56-pulp-file }
186
+
187
+ No significant changes.
188
+
189
+ ### Pulp Cert Guard {: #3.49.56-pulp-cert-guard }
190
+
191
+ No significant changes.
192
+
193
+ ---
194
+
195
+ ## 3.49.55 (2026-03-10) {: #3.49.55 }
196
+
197
+ ### REST API {: #3.49.55-rest-api }
198
+
199
+ #### Bugfixes {: #3.49.55-rest-api-bugfix }
200
+
201
+ - Moved artifact checksum validation from module-level settings code to a Django system check.
202
+ [#7380](https://github.com/pulp/pulpcore/issues/7380)
203
+ - Fixed the url of the generated openapi schemas when using `pulpcore-manager openapi`.
204
+
205
+ ### Plugin API {: #3.49.55-plugin-api }
206
+
207
+ No significant changes.
208
+
209
+ ### Pulp File {: #3.49.55-pulp-file }
210
+
211
+ No significant changes.
212
+
213
+ ### Pulp Cert Guard {: #3.49.55-pulp-cert-guard }
214
+
215
+ No significant changes.
216
+
217
+ ---
218
+
11
219
  ## 3.49.54 (2026-03-06) {: #3.49.54 }
12
220
 
13
221
  ### REST API {: #3.49.54-rest-api }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pulpcore
3
- Version: 3.49.54
3
+ Version: 3.49.63
4
4
  Summary: Pulp Django Application and Related Modules
5
5
  Home-page: https://pulpproject.org
6
6
  Author: Pulp Team
@@ -25,7 +25,7 @@ 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
- Requires-Dist: click<=8.1.7,>=8.1.0
28
+ Requires-Dist: click<8.4,>=8.1.0
29
29
  Requires-Dist: cryptography<47.0,>=38.0.1
30
30
  Requires-Dist: Django!=5.0,!=5.1,<5.3,>=4.2.24
31
31
  Requires-Dist: django-filter<=25.2,>=23.1
@@ -44,7 +44,7 @@ Requires-Dist: jinja2<=3.1.6,>=3.1
44
44
  Requires-Dist: json_stream<2.4,>=2.3.2
45
45
  Requires-Dist: jq<1.7.0,>=1.6.0
46
46
  Requires-Dist: pycares<4.9; python_version < "3.12"
47
- Requires-Dist: PyOpenSSL<26.0
47
+ Requires-Dist: PyOpenSSL<27.0
48
48
  Requires-Dist: opentelemetry-distro[otlp]<=0.49b0,>=0.38b0
49
49
  Requires-Dist: opentelemetry-exporter-otlp-proto-http<1.29,>=1.17.0
50
50
  Requires-Dist: opentelemetry-instrumentation-django<=0.49b0,>=0.38b0
@@ -6,6 +6,6 @@ class PulpCertGuardPluginAppConfig(PulpPluginAppConfig):
6
6
 
7
7
  name = "pulp_certguard.app"
8
8
  label = "certguard"
9
- version = "3.49.54"
9
+ version = "3.49.63"
10
10
  python_package_name = "pulpcore"
11
11
  domain_compatible = True
@@ -1,11 +1,10 @@
1
- from logging import getLogger
2
- from gettext import gettext as _
3
1
  import re
2
+ from gettext import gettext as _
3
+ from logging import getLogger
4
4
  from urllib.parse import unquote
5
5
 
6
6
  from django.conf import settings
7
7
  from django.db import models
8
-
9
8
  from OpenSSL import crypto as openssl
10
9
 
11
10
  from pulpcore.plugin.models import ContentGuard
@@ -1,32 +1,31 @@
1
- import pytest
2
1
  import uuid
2
+ from urllib.parse import quote, urljoin
3
3
 
4
+ import pytest
4
5
  import requests
5
- from urllib.parse import urljoin, quote
6
6
  from django.conf import settings
7
7
 
8
8
  from pulp_certguard.tests.functional.constants import (
9
9
  RHSM_CA_CERT_FILE_PATH,
10
10
  RHSM_CLIENT_CERT_FROM_UNTRUSTED_CA,
11
11
  RHSM_CLIENT_CERT_TRUSTED_BUT_EXPIRED,
12
- THIRDPARTY_CA_CERT_FILE_PATH,
13
12
  RHSM_UBER_CERT_BASE_PATH_ONE,
14
13
  RHSM_UBER_CERT_BASE_PATH_TWO,
15
14
  RHSM_UBER_CLIENT_CERT,
16
15
  RHSM_V1_ONE_AND_TWO_VAR_CLIENT_CERT,
17
16
  RHSM_V1_ONE_VAR_BASE_PATH,
18
17
  RHSM_V1_TWO_VAR_BASE_PATH,
19
- RHSM_V1_ZERO_VAR_CLIENT_CERT,
20
18
  RHSM_V1_ZERO_VAR_BASE_PATH,
19
+ RHSM_V1_ZERO_VAR_CLIENT_CERT,
21
20
  RHSM_V3_INVALID_BASE_PATH,
22
21
  RHSM_V3_ONE_AND_TWO_VAR_CLIENT_CERT,
23
22
  RHSM_V3_ONE_VAR_BASE_PATH,
24
23
  RHSM_V3_TWO_VAR_BASE_PATH,
25
- RHSM_V3_ZERO_VAR_CLIENT_CERT,
26
24
  RHSM_V3_ZERO_VAR_BASE_PATH,
25
+ RHSM_V3_ZERO_VAR_CLIENT_CERT,
26
+ THIRDPARTY_CA_CERT_FILE_PATH,
27
27
  )
28
28
 
29
-
30
29
  if settings.DOMAIN_ENABLED:
31
30
  pytest.skip("RHSM tests are currently not compatible with domains.", allow_module_level=True)
32
31
 
@@ -1,15 +1,15 @@
1
- import pytest
2
1
  import uuid
2
+ from urllib.parse import quote, urljoin
3
3
 
4
+ import pytest
4
5
  import requests
5
- from urllib.parse import urljoin, quote
6
6
 
7
7
  from pulp_certguard.tests.functional.constants import (
8
8
  X509_BASE_PATH,
9
9
  X509_CA_CERT_FILE_PATH,
10
10
  X509_CLIENT_CERT_FILE_PATH,
11
- X509_UNTRUSTED_CLIENT_CERT_FILE_PATH,
12
11
  X509_UN_URLENCODED_CLIENT_CERT_FILE_PATH,
12
+ X509_UNTRUSTED_CLIENT_CERT_FILE_PATH,
13
13
  )
14
14
 
15
15
 
@@ -2,7 +2,6 @@
2
2
 
3
3
  import os
4
4
 
5
-
6
5
  _CURRENT_DIR = os.path.dirname(os.path.realpath(__file__))
7
6
 
8
7
 
@@ -8,6 +8,6 @@ class PulpFilePluginAppConfig(PulpPluginAppConfig):
8
8
 
9
9
  name = "pulp_file.app"
10
10
  label = "file"
11
- version = "3.49.54"
11
+ version = "3.49.63"
12
12
  python_package_name = "pulpcore"
13
13
  domain_compatible = True
@@ -1,5 +1,6 @@
1
1
  from pulpcore.plugin.importexport import BaseContentResource
2
2
  from pulpcore.plugin.modelresources import RepositoryResource
3
+
3
4
  from pulp_file.app.models import FileContent, FileRepository
4
5
 
5
6
 
@@ -15,7 +15,6 @@ from pulpcore.plugin.publication_utils import validate_publication_paths
15
15
  from pulpcore.plugin.repo_version_utils import remove_duplicates, validate_repo_version
16
16
  from pulpcore.plugin.util import get_domain_pk
17
17
 
18
-
19
18
  log = getLogger(__name__)
20
19
 
21
20
 
@@ -1,21 +1,19 @@
1
1
  import logging
2
2
  import tempfile
3
-
4
3
  from gettext import gettext as _
5
4
 
6
5
  from django.core.files import File
7
6
 
8
7
  from pulpcore.plugin.models import (
9
8
  ContentArtifact,
10
- RepositoryVersion,
11
9
  PublishedMetadata,
12
10
  RemoteArtifact,
11
+ RepositoryVersion,
13
12
  )
14
13
 
15
14
  from pulp_file.app.models import FilePublication
16
15
  from pulp_file.manifest import Entry, Manifest
17
16
 
18
-
19
17
  log = logging.getLogger(__name__)
20
18
 
21
19
 
@@ -1,12 +1,11 @@
1
1
  import logging
2
2
  import os
3
-
4
3
  from gettext import gettext as _
5
4
  from urllib.parse import urlparse, urlunparse
6
5
 
7
6
  from django.core.files import File
8
7
 
9
- from pulpcore.plugin.models import Artifact, ProgressReport, Remote, PublishedMetadata
8
+ from pulpcore.plugin.models import Artifact, ProgressReport, PublishedMetadata, Remote
10
9
  from pulpcore.plugin.stages import (
11
10
  DeclarativeArtifact,
12
11
  DeclarativeContent,
@@ -14,10 +13,9 @@ from pulpcore.plugin.stages import (
14
13
  Stage,
15
14
  )
16
15
 
17
- from pulp_file.app.models import FileContent, FileRemote, FileRepository, FilePublication
16
+ from pulp_file.app.models import FileContent, FilePublication, FileRemote, FileRepository
18
17
  from pulp_file.manifest import Manifest
19
18
 
20
-
21
19
  log = logging.getLogger(__name__)
22
20
 
23
21
 
@@ -54,7 +52,7 @@ def synchronize(remote_pk, repository_pk, mirror, url=None):
54
52
  # accomodate this use case
55
53
  global metadata_files
56
54
  with FilePublication.create(rv, pass_through=True) as publication:
57
- (mdfile_path, relative_path) = metadata_files.pop()
55
+ mdfile_path, relative_path = metadata_files.pop()
58
56
  PublishedMetadata.create_from_file(
59
57
  file=File(open(mdfile_path, "rb")),
60
58
  relative_path=relative_path,
@@ -1,10 +1,7 @@
1
1
  from collections import namedtuple
2
-
3
2
  from gettext import gettext as _
4
-
5
3
  from re import fullmatch
6
4
 
7
-
8
5
  Line = namedtuple("Line", ("number", "content"))
9
6
 
10
7
 
@@ -2,11 +2,10 @@
2
2
 
3
3
  import pytest
4
4
 
5
- from pulpcore.tests.functional.utils import get_files_in_manifest
6
-
7
5
  from pulpcore.client.pulp_file import (
8
6
  RepositorySyncURL,
9
7
  )
8
+ from pulpcore.tests.functional.utils import get_files_in_manifest
10
9
 
11
10
 
12
11
  @pytest.fixture
@@ -1,13 +1,13 @@
1
- import pytest
2
- import uuid
3
1
  import json
2
+ import uuid
3
+
4
+ import pytest
4
5
 
5
6
  from pulpcore.app import settings
6
7
  from pulpcore.client.pulp_file import ApiException
7
8
  from pulpcore.client.pulpcore import ApiException as CoreApiException
8
9
  from pulpcore.client.pulpcore import Repair
9
- from pulpcore.tests.functional.utils import generate_iso, download_file
10
-
10
+ from pulpcore.tests.functional.utils import download_file, generate_iso
11
11
 
12
12
  pytestmark = pytest.mark.skipif(not settings.DOMAIN_ENABLED, reason="Domains not enabled.")
13
13
 
@@ -1,18 +1,17 @@
1
1
  """Tests for Pulp`s download policies."""
2
2
 
3
- from aiohttp.client_exceptions import ClientResponseError
4
- from bs4 import BeautifulSoup
5
3
  import hashlib
6
4
  import os
7
- import pytest
8
5
  import subprocess
9
6
  import uuid
10
7
  from urllib.parse import urljoin
11
8
 
12
- from pulpcore.tests.functional.utils import get_files_in_manifest, download_file
9
+ import pytest
10
+ from aiohttp.client_exceptions import ClientResponseError
11
+ from bs4 import BeautifulSoup
13
12
 
14
13
  from pulpcore.client.pulp_file import FileFilePublication, RepositorySyncURL
15
-
14
+ from pulpcore.tests.functional.utils import download_file, get_files_in_manifest
16
15
 
17
16
  OBJECT_STORAGES = (
18
17
  "storages.backends.s3boto3.S3Boto3Storage",
@@ -1,13 +1,14 @@
1
1
  """Tests that publish file plugin repositories."""
2
2
 
3
- from aiohttp import BasicAuth
4
3
  import json
5
- import pytest
6
4
  from urllib.parse import urljoin
7
5
 
6
+ import pytest
7
+ from aiohttp import BasicAuth
8
+
8
9
  from pulpcore.client.pulp_file import (
9
- RepositorySyncURL,
10
10
  FileFilePublication,
11
+ RepositorySyncURL,
11
12
  )
12
13
  from pulpcore.client.pulp_file.exceptions import ApiException
13
14
  from pulpcore.tests.functional.utils import download_file
@@ -1,8 +1,8 @@
1
- import pytest
2
1
  import uuid
3
2
 
4
- from pulpcore.client.pulp_file import ApiException
5
- from pulpcore.client.pulp_file import AsyncOperationResponse
3
+ import pytest
4
+
5
+ from pulpcore.client.pulp_file import ApiException, AsyncOperationResponse
6
6
 
7
7
 
8
8
  @pytest.fixture()
@@ -2,14 +2,12 @@
2
2
 
3
3
  import os
4
4
  import uuid
5
-
6
- import pytest
7
-
8
5
  from urllib.parse import urljoin
9
6
 
10
- from pulpcore.tests.functional.utils import PulpTaskError
7
+ import pytest
11
8
 
12
9
  from pulpcore.client.pulp_file import RepositorySyncURL
10
+ from pulpcore.tests.functional.utils import PulpTaskError
13
11
 
14
12
 
15
13
  def test_sync_file_protocol_handler(
@@ -1,12 +1,11 @@
1
+ from django.conf import settings
1
2
  from django.core.files.uploadedfile import SimpleUploadedFile
2
3
  from django.test import TestCase
3
- from django.conf import settings
4
-
5
- from pulp_file.app.serializers import FileContentSerializer
6
- from pulp_file.app.models import FileContent
7
4
 
8
5
  from pulpcore.plugin.models import Artifact
9
6
 
7
+ from pulp_file.app.models import FileContent
8
+ from pulp_file.app.serializers import FileContentSerializer
10
9
 
11
10
  V3_API_ROOT = (
12
11
  settings.V3_API_ROOT
@@ -1,5 +1,4 @@
1
1
  import random
2
-
3
2
  from collections import defaultdict
4
3
  from gettext import gettext as _
5
4
  from importlib import import_module
@@ -12,7 +11,6 @@ from django.utils.module_loading import module_has_submodule
12
11
 
13
12
  from pulpcore.exceptions.plugin import MissingPlugin
14
13
 
15
-
16
14
  VIEWSETS_MODULE_NAME = "viewsets"
17
15
  SERIALIZERS_MODULE_NAME = "serializers"
18
16
  URLS_MODULE_NAME = "urls"
@@ -165,8 +163,8 @@ class PulpPluginAppConfig(apps.AppConfig):
165
163
  def import_viewsets(self):
166
164
  # TODO do not include imported ViewSets
167
165
  # circular import avoidance
166
+ from pulpcore.app.models import Content, Repository
168
167
  from pulpcore.app.viewsets import NamedModelViewSet
169
- from pulpcore.app.models import Repository, Content
170
168
 
171
169
  self.named_viewsets = defaultdict(list)
172
170
  if module_has_submodule(self.module, VIEWSETS_MODULE_NAME):
@@ -244,7 +242,7 @@ class PulpAppConfig(PulpPluginAppConfig):
244
242
  label = "core"
245
243
 
246
244
  # The version of this app
247
- version = "3.49.54"
245
+ version = "3.49.63"
248
246
 
249
247
  # The python package name providing this app
250
248
  python_package_name = "pulpcore"
@@ -287,10 +285,8 @@ def _clean_app_status(sender, apps, verbosity, **kwargs):
287
285
  except LookupError:
288
286
  if verbosity >= 1:
289
287
  print(
290
- _(
291
- "{app_name} model does not exist. Skipping initialization.".format(
292
- app_name=app_name
293
- )
288
+ _("{app_name} model does not exist. Skipping initialization.").format(
289
+ app_name=app_name
294
290
  )
295
291
  )
296
292
  else:
@@ -418,11 +414,9 @@ def adjust_roles(apps, role_prefix, desired_roles, verbosity=1):
418
414
  _("Locked role definition for {name} is incompatible.").format(name=name)
419
415
  )
420
416
  permissions = [_get_permission(perm) for perm in permissions]
421
- role, created = Role.objects.get_or_create(
422
- name=name, locked=True, defaults={"name": name, "locked": True}
417
+ role, created = Role.objects.update_or_create(
418
+ name=name, defaults={"name": name, "locked": True, "description": description}
423
419
  )
424
- role.description = description
425
- role.save()
426
420
  role.permissions.set(permissions)
427
421
 
428
422
 
@@ -1,11 +1,10 @@
1
1
  import json
2
- import jq
3
2
  import logging
4
-
5
3
  from base64 import b64decode
6
4
  from binascii import Error as Base64DecodeError
7
5
  from gettext import gettext as _
8
6
 
7
+ import jq
9
8
  from django.contrib.auth import authenticate
10
9
  from django.contrib.auth.backends import RemoteUserBackend
11
10
  from rest_framework.authentication import BaseAuthentication, RemoteUserAuthentication