pulpcore 3.49.57__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 (513) hide show
  1. {pulpcore-3.49.57 → pulpcore-3.49.63}/CHANGES.md +137 -0
  2. {pulpcore-3.49.57 → pulpcore-3.49.63}/PKG-INFO +2 -2
  3. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_certguard/app/__init__.py +1 -1
  4. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_certguard/app/models.py +2 -3
  5. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_certguard/tests/functional/api/test_rhsm_certguard.py +5 -5
  6. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_certguard/tests/functional/api/test_x509_certguard.py +3 -3
  7. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_file/app/__init__.py +1 -1
  8. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_file/app/modelresource.py +1 -0
  9. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_file/app/tasks/publishing.py +1 -2
  10. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_file/app/tasks/synchronizing.py +2 -3
  11. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_file/manifest.py +0 -2
  12. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_file/tests/functional/api/test_auto_publish.py +1 -2
  13. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_file/tests/functional/api/test_domains.py +4 -3
  14. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_file/tests/functional/api/test_download_policies.py +4 -4
  15. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_file/tests/functional/api/test_publish.py +4 -3
  16. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_file/tests/functional/api/test_pulp_export.py +3 -2
  17. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_file/tests/functional/api/test_rbac.py +3 -3
  18. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_file/tests/functional/api/test_sync.py +2 -4
  19. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/apps.py +6 -11
  20. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/authentication.py +1 -2
  21. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/checks.py +7 -1
  22. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/entrypoint.py +11 -5
  23. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/files.py +1 -2
  24. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/importexport.py +6 -6
  25. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/management/commands/add-signing-service.py +3 -7
  26. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/management/commands/analyze-publication.py +1 -1
  27. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/management/commands/datarepair-2327.py +2 -3
  28. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/management/commands/dump-publications-to-fs.py +4 -4
  29. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/management/commands/handle-artifact-checksums.py +3 -4
  30. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/management/commands/openapi.py +1 -3
  31. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/management/commands/remove-plugin.py +4 -5
  32. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/management/commands/remove-signing-service.py +2 -4
  33. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/management/commands/repository-size.py +3 -3
  34. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/management/commands/reset-admin-password.py +4 -1
  35. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/management/commands/rotate-db-key.py +1 -1
  36. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/modelresource.py +2 -1
  37. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/models/__init__.py +2 -0
  38. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/models/access_policy.py +2 -2
  39. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/models/acs.py +2 -1
  40. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/models/analytics.py +1 -2
  41. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/models/content.py +7 -9
  42. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/models/domain.py +4 -5
  43. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/models/fields.py +1 -0
  44. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/models/importer.py +1 -0
  45. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/models/publication.py +12 -13
  46. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/models/replica.py +2 -1
  47. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/models/repository.py +7 -8
  48. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/models/storage.py +1 -1
  49. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/models/task.py +3 -3
  50. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/models/upload.py +0 -1
  51. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/replica.py +6 -5
  52. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/role_util.py +4 -5
  53. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/serializers/__init__.py +2 -0
  54. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/serializers/acs.py +0 -1
  55. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/serializers/content.py +2 -2
  56. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/serializers/domain.py +3 -4
  57. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/serializers/publication.py +7 -8
  58. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/serializers/reclaim.py +0 -1
  59. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/serializers/replica.py +2 -4
  60. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/serializers/upload.py +2 -2
  61. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/serializers/user.py +6 -7
  62. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/settings.py +1 -2
  63. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/tasks/__init__.py +2 -0
  64. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/tasks/analytics.py +3 -3
  65. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/tasks/export.py +22 -12
  66. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/tasks/importer.py +15 -18
  67. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/tasks/orphan.py +0 -1
  68. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/tasks/purge.py +3 -3
  69. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/tasks/replica.py +4 -4
  70. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/tasks/repository.py +7 -9
  71. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/templatetags/pulp_urls.py +2 -1
  72. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/urls.py +3 -3
  73. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/util.py +7 -10
  74. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/views/__init__.py +2 -0
  75. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/views/importer.py +8 -7
  76. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/viewsets/__init__.py +2 -0
  77. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/viewsets/base.py +6 -5
  78. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/viewsets/custom_filters.py +6 -7
  79. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/viewsets/domain.py +3 -3
  80. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/viewsets/exporter.py +5 -8
  81. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/viewsets/importer.py +4 -4
  82. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/viewsets/publication.py +11 -11
  83. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/viewsets/repository.py +6 -7
  84. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/viewsets/task.py +5 -5
  85. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/viewsets/upload.py +2 -3
  86. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/viewsets/user.py +7 -9
  87. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/wsgi.py +1 -0
  88. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/cache/__init__.py +1 -0
  89. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/cache/cache.py +6 -9
  90. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/content/__init__.py +11 -12
  91. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/content/authentication.py +5 -4
  92. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/content/entrypoint.py +1 -0
  93. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/content/handler.py +17 -20
  94. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/content/instrumentation.py +7 -8
  95. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/download/__init__.py +1 -0
  96. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/download/factory.py +6 -5
  97. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/download/file.py +0 -1
  98. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/download/http.py +3 -2
  99. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/exceptions/__init__.py +2 -0
  100. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/filters.py +9 -11
  101. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/middleware.py +2 -1
  102. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/migrations.py +4 -7
  103. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/openapi/__init__.py +2 -0
  104. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/plugin/__init__.py +1 -0
  105. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/plugin/authentication/__init__.py +1 -0
  106. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/plugin/cache/__init__.py +2 -0
  107. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/plugin/download/__init__.py +2 -0
  108. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/plugin/importexport.py +1 -0
  109. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/plugin/models/__init__.py +2 -0
  110. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/plugin/repo_version_utils.py +2 -2
  111. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/plugin/serializers/__init__.py +2 -0
  112. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/plugin/stages/__init__.py +2 -0
  113. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/plugin/stages/api.py +0 -1
  114. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/plugin/stages/artifact_stages.py +7 -9
  115. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/plugin/stages/content_stages.py +1 -2
  116. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/plugin/stages/declarative_version.py +1 -1
  117. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/plugin/stages/models.py +1 -2
  118. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/plugin/tasking.py +1 -2
  119. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/plugin/util.py +6 -7
  120. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/plugin/viewsets/__init__.py +2 -0
  121. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/plugin/viewsets/content.py +2 -3
  122. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/tasking/_util.py +3 -2
  123. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/tasking/entrypoint.py +2 -2
  124. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/tasking/tasks.py +3 -2
  125. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/tasking/worker.py +11 -12
  126. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/tests/functional/__init__.py +2 -0
  127. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/tests/functional/api/test_api_docs.py +1 -0
  128. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/tests/functional/api/test_artifact_distribution.py +2 -1
  129. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/tests/functional/api/test_crd_artifacts.py +1 -0
  130. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/tests/functional/api/test_crud_domains.py +4 -3
  131. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/tests/functional/api/test_filter.py +2 -1
  132. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/tests/functional/api/test_openapi_schema.py +2 -3
  133. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/tests/functional/api/test_replication.py +2 -3
  134. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/tests/functional/api/test_role.py +1 -0
  135. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/tests/functional/api/test_root_endpoint.py +1 -0
  136. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/tests/functional/api/test_upload.py +3 -2
  137. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/tests/functional/api/test_users_groups.py +3 -1
  138. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/tests/functional/api/test_workers.py +2 -1
  139. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/tests/functional/api/using_plugin/test_content_path.py +1 -2
  140. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/tests/functional/api/using_plugin/test_distributions.py +3 -2
  141. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/tests/functional/api/using_plugin/test_orphans.py +1 -0
  142. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/tests/functional/api/using_plugin/test_proxy.py +3 -2
  143. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/tests/functional/api/using_plugin/test_pulpimport.py +3 -4
  144. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/tests/functional/api/using_plugin/test_purge.py +3 -4
  145. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/tests/functional/api/using_plugin/test_reclaim_disk_space.py +3 -4
  146. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/tests/functional/api/using_plugin/test_repair.py +3 -4
  147. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/tests/functional/api/using_plugin/test_repo_versions.py +2 -1
  148. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/tests/functional/content_with_coverage.py +1 -0
  149. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/tests/unit/conftest.py +2 -1
  150. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/tests/unit/content/test_handler.py +2 -2
  151. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/tests/unit/content/test_heartbeat.py +3 -3
  152. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/tests/unit/migration/test_0077_move_remote_url_credentials.py +3 -2
  153. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/tests/unit/models/test_base.py +3 -2
  154. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/tests/unit/models/test_content.py +2 -3
  155. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/tests/unit/models/test_remote.py +4 -4
  156. pulpcore-3.49.63/pulpcore/tests/unit/roles/test_adjust_roles.py +102 -0
  157. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/tests/unit/serializers/test_base.py +3 -4
  158. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/tests/unit/serializers/test_pulpexport.py +1 -0
  159. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/tests/unit/stages/test_artifactdownloader.py +5 -5
  160. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/tests/unit/stages/test_stages.py +3 -3
  161. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/tests/unit/test_cache.py +2 -1
  162. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/tests/unit/test_import_checks.py +0 -1
  163. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/tests/unit/test_pulp_urls.py +2 -1
  164. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/tests/unit/test_util.py +2 -1
  165. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore.egg-info/PKG-INFO +2 -2
  166. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore.egg-info/SOURCES.txt +1 -0
  167. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore.egg-info/requires.txt +1 -1
  168. {pulpcore-3.49.57 → pulpcore-3.49.63}/pyproject.toml +29 -1
  169. {pulpcore-3.49.57 → pulpcore-3.49.63}/requirements.txt +1 -1
  170. {pulpcore-3.49.57 → pulpcore-3.49.63}/setup.py +1 -1
  171. {pulpcore-3.49.57 → pulpcore-3.49.63}/CODE_OF_CONDUCT.md +0 -0
  172. {pulpcore-3.49.57 → pulpcore-3.49.63}/COMMITMENT +0 -0
  173. {pulpcore-3.49.57 → pulpcore-3.49.63}/CONTRIBUTING.md +0 -0
  174. {pulpcore-3.49.57 → pulpcore-3.49.63}/COPYRIGHT +0 -0
  175. {pulpcore-3.49.57 → pulpcore-3.49.63}/LICENSE +0 -0
  176. {pulpcore-3.49.57 → pulpcore-3.49.63}/MANIFEST.in +0 -0
  177. {pulpcore-3.49.57 → pulpcore-3.49.63}/README.md +0 -0
  178. {pulpcore-3.49.57 → pulpcore-3.49.63}/ci_requirements.txt +0 -0
  179. {pulpcore-3.49.57 → pulpcore-3.49.63}/functest_requirements.txt +0 -0
  180. {pulpcore-3.49.57 → pulpcore-3.49.63}/manage.py +0 -0
  181. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_certguard/__init__.py +0 -0
  182. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_certguard/app/migrations/0001_initial.py +0 -0
  183. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_certguard/app/migrations/0002_alter_rhsmcertguard_contentguard_ptr_and_more.py +0 -0
  184. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_certguard/app/migrations/__init__.py +0 -0
  185. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_certguard/app/serializers.py +2 -2
  186. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_certguard/app/utils.py +0 -0
  187. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_certguard/app/viewsets.py +0 -0
  188. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_certguard/pytest_plugin.py +1 -1
  189. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_certguard/tests/__init__.py +0 -0
  190. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_certguard/tests/functional/__init__.py +0 -0
  191. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_certguard/tests/functional/api/__init__.py +0 -0
  192. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_certguard/tests/functional/artifacts/rhsm/katello-default-ca.crt +0 -0
  193. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_certguard/tests/functional/artifacts/rhsm/katello-default-ca.key +0 -0
  194. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_certguard/tests/functional/artifacts/rhsm/trusted_but_expired.pem +0 -0
  195. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_certguard/tests/functional/artifacts/rhsm/uber.cert +0 -0
  196. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_certguard/tests/functional/artifacts/rhsm/untrusted_cert-key.pem +0 -0
  197. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_certguard/tests/functional/artifacts/rhsm/untrusted_cert.pem +0 -0
  198. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_certguard/tests/functional/artifacts/rhsm/v1/1514454871848760713-key.pem +0 -0
  199. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_certguard/tests/functional/artifacts/rhsm/v1/1514454871848760713.pem +0 -0
  200. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_certguard/tests/functional/artifacts/rhsm/v1/159442575569388840-key.pem +0 -0
  201. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_certguard/tests/functional/artifacts/rhsm/v1/159442575569388840.pem +0 -0
  202. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_certguard/tests/functional/artifacts/rhsm/v3/4260035510644027985-key.pem +0 -0
  203. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_certguard/tests/functional/artifacts/rhsm/v3/4260035510644027985.pem +0 -0
  204. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_certguard/tests/functional/artifacts/rhsm/v3/5527980418107729172-key.pem +0 -0
  205. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_certguard/tests/functional/artifacts/rhsm/v3/5527980418107729172.pem +0 -0
  206. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_certguard/tests/functional/artifacts/thirdparty_ca/certificates/ca.pem +0 -0
  207. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_certguard/tests/functional/artifacts/thirdparty_ca/genca.sh +0 -0
  208. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_certguard/tests/functional/artifacts/thirdparty_ca/keys/ca.pem +0 -0
  209. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_certguard/tests/functional/artifacts/x509/certificates/ca.pem +0 -0
  210. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_certguard/tests/functional/artifacts/x509/certificates/client.pem +0 -0
  211. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_certguard/tests/functional/artifacts/x509/certificates/server.pem +0 -0
  212. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_certguard/tests/functional/artifacts/x509/certificates/un_urlencoded_cert.txt +0 -0
  213. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_certguard/tests/functional/artifacts/x509/certificates/untrusted_client.pem +0 -0
  214. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_certguard/tests/functional/artifacts/x509/genall.sh +0 -0
  215. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_certguard/tests/functional/artifacts/x509/genca.sh +0 -0
  216. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_certguard/tests/functional/artifacts/x509/genclient.sh +0 -0
  217. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_certguard/tests/functional/artifacts/x509/gensrv.sh +0 -0
  218. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_certguard/tests/functional/artifacts/x509/keys/ca.pem +0 -0
  219. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_certguard/tests/functional/artifacts/x509/keys/client.pem +0 -0
  220. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_certguard/tests/functional/artifacts/x509/keys/server.pem +0 -0
  221. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_certguard/tests/functional/conftest.py +0 -0
  222. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_certguard/tests/functional/constants.py +0 -0
  223. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_certguard/tests/unit/__init__.py +0 -0
  224. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_certguard/tests/unit/test_models.py +0 -0
  225. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_file/__init__.py +0 -0
  226. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_file/app/migrations/0001_initial.py +0 -0
  227. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_file/app/migrations/0002_file_related_names.py +0 -0
  228. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_file/app/migrations/0003_auto_20191014_1721.py +0 -0
  229. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_file/app/migrations/0004_filefilesystemexporter.py +0 -0
  230. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_file/app/migrations/0005_filerepository.py +0 -0
  231. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_file/app/migrations/0006_delete_filefilesystemexporter.py +0 -0
  232. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_file/app/migrations/0007_filefilesystemexporter.py +0 -0
  233. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_file/app/migrations/0008_add_manifest_field.py +0 -0
  234. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_file/app/migrations/0009_move_data_to_new_master_distribution_model.py +0 -0
  235. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_file/app/migrations/0010_auto_publish.py +0 -0
  236. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_file/app/migrations/0011_fix_auto_publish.py +0 -0
  237. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_file/app/migrations/0012_delete_filefilesystemexporter.py +0 -0
  238. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_file/app/migrations/0013_file_acs.py +0 -0
  239. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_file/app/migrations/0014_new_rbac_permissions.py +0 -0
  240. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_file/app/migrations/0015_allow_null_manifest.py +0 -0
  241. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_file/app/migrations/0016_add_domain.py +0 -0
  242. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_file/app/migrations/0017_alter_filealternatecontentsource_alternatecontentsource_ptr_and_more.py +0 -0
  243. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_file/app/migrations/__init__.py +0 -0
  244. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_file/app/models.py +0 -0
  245. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_file/app/replica.py +2 -2
  246. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_file/app/serializers.py +1 -1
  247. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_file/app/tasks/__init__.py +0 -0
  248. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_file/app/viewsets.py +3 -3
  249. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_file/pytest_plugin.py +1 -1
  250. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_file/tests/__init__.py +0 -0
  251. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_file/tests/functional/__init__.py +0 -0
  252. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_file/tests/functional/api/__init__.py +0 -0
  253. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_file/tests/functional/api/test_acs.py +2 -2
  254. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_file/tests/functional/api/test_bad_sync.py +2 -2
  255. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_file/tests/functional/api/test_crud_content_unit.py +3 -3
  256. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_file/tests/functional/api/test_crud_remotes.py +0 -0
  257. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_file/tests/functional/api/test_generic_list.py +0 -0
  258. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_file/tests/functional/api/test_labels.py +0 -0
  259. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_file/tests/functional/api/test_mime_types.py +3 -3
  260. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_file/tests/functional/api/test_remote_settings.py +0 -0
  261. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_file/tests/unit/__init__.py +0 -0
  262. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulp_file/tests/unit/test_serializers.py +4 -4
  263. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/__init__.py +0 -0
  264. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/__init__.py +0 -0
  265. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/access_policy.py +0 -0
  266. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/global_access_conditions.py +0 -0
  267. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/loggers.py +0 -0
  268. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/manage.py +0 -0
  269. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/management/__init__.py +0 -0
  270. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/management/commands/__init__.py +0 -0
  271. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/management/commands/dump-permissions.py +4 -4
  272. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/management/commands/shell.py +0 -0
  273. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0001_initial.py +0 -0
  274. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0002_increase_artifact_size_field.py +0 -0
  275. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0003_remove_upload_completed.py +0 -0
  276. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0004_add_duplicated_reserved_resources.py +0 -0
  277. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0005_progressreport_code.py +0 -0
  278. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0006_repository_plugin_managed.py +0 -0
  279. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0007_delete_progress_proxies.py +0 -0
  280. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0008_published_metadata_as_content.py +0 -0
  281. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0009_remove_task_non_fatal_errors.py +0 -0
  282. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0010_pulp_fields.py +0 -0
  283. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0011_relative_path.py +0 -0
  284. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0012_auto_20191104_2000.py +0 -0
  285. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0013_repository_pulp_type.py +0 -0
  286. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0014_remove_repository_plugin_managed.py +0 -0
  287. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0015_auto_20191112_1426.py +0 -0
  288. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0016_charfield_to_textfield.py +0 -0
  289. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0017_remove_task_parent.py +0 -0
  290. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0018_auto_20191127_2350.py +0 -0
  291. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0019_add_signing_service_model.py +0 -0
  292. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0020_change_publishedartifact_constraints.py +0 -0
  293. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0021_add_signing_service_foreign_key.py +0 -0
  294. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0022_rename_last_version.py +0 -0
  295. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0023_change_exporter_models.py +0 -0
  296. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0024_use_local_storage_for_uploads.py +0 -0
  297. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0025_task_parent_task.py +0 -0
  298. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0026_task_group.py +0 -0
  299. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0027_export_backend.py +0 -0
  300. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0028_import_importer_pulpimporter_pulpimporterrepository.py +0 -0
  301. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0029_export_delete.py +0 -0
  302. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0030_taskgroup_all_tasks_dispatched.py +0 -0
  303. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0031_import_export_validate_params.py +0 -0
  304. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0032_export_to_chunks.py +0 -0
  305. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0033_increase_remote_artifact_size_field.py +0 -0
  306. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0034_groupprogressreport.py +0 -0
  307. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0035_content_upstream_id.py +0 -0
  308. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0036_unprotect_last_export.py +0 -0
  309. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0037_pulptemporaryfile.py +0 -0
  310. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0038_repository_remote.py +0 -0
  311. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0039_change_download_concurrency.py +0 -0
  312. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0040_set_admin_is_staff.py +0 -0
  313. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0041_accesspolicy.py +0 -0
  314. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0042_rbac_for_tasks.py +0 -0
  315. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0043_toc_attribute.py +0 -0
  316. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0044_temp_file_artifact_field.py +0 -0
  317. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0045_accesspolicy_permissions_allow_null.py +0 -0
  318. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0046_task__resource_job_id.py +0 -0
  319. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0047_improve_orphan_cleanup.py +0 -0
  320. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0048_fips_checksums.py +0 -0
  321. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0049_add_file_field_to_uploadchunk.py +0 -0
  322. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0050_namespace_access_policies.py +0 -0
  323. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0051_timeoutfields.py +0 -0
  324. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0052_tasking_logging_cid.py +0 -0
  325. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0053_remote_headers.py +0 -0
  326. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0054_add_public_key.py +0 -0
  327. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0055_label.py +0 -0
  328. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0056_remote_rate_limit.py +0 -0
  329. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0057_add_label_indexes.py +0 -0
  330. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0058_accesspolicy_customized.py +0 -0
  331. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0059_proxy_creds.py +0 -0
  332. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0060_data_migration_proxy_creds.py +0 -0
  333. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0061_call_handle_artifact_checksums_command.py +0 -0
  334. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0062_add_new_distribution_mastermodel.py +0 -0
  335. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0063_repository_retained_versions.py +0 -0
  336. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0064_add_new_style_task_columns.py +0 -0
  337. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0064_repository_user_hidden.py +0 -0
  338. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0065_merge_20210615_1211.py +0 -0
  339. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0066_download_concurrency_and_retry_changes.py +0 -0
  340. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0067_add_protect_to_task_reservation.py +0 -0
  341. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0068_add_timestamp_of_interest.py +0 -0
  342. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0069_update_json_fields.py +0 -0
  343. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0070_rename_retained_versions.py +0 -0
  344. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0071_filesystemexport_filesystemexporter.py +0 -0
  345. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0072_add_method_to_filesystem_exporter.py +0 -0
  346. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0073_encrypt_remote_fields.py +0 -0
  347. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0074_acs.py +0 -0
  348. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0075_rbaccontentguard.py +0 -0
  349. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0076_remove_reserved_resource.py +0 -0
  350. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0077_move_remote_url_credentials.py +0 -0
  351. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0078_grouprole_role_userrole.py +0 -0
  352. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0079_rename_permissions_assignment_accesspolicy_creation_hooks.py +0 -0
  353. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0080_proxy_group_model.py +0 -0
  354. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0081_reapplabel_group_permissions.py +0 -0
  355. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0082_add_manage_roles_permissions.py +0 -0
  356. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0083_alter_group_options.py +0 -0
  357. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0084_alter_rbaccontentguard_options.py +0 -0
  358. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0085_contentredirectcontentguard.py +0 -0
  359. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0086_task_json_fields.py +0 -0
  360. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0087_taskschedule.py +0 -0
  361. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0088_accesspolicy_queryset_scoping.py +0 -0
  362. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0089_alter_contentredirectcontentguard_options.py +0 -0
  363. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0090_char_to_text_field.py +0 -0
  364. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0091_systemid.py +0 -0
  365. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0092_alter_upload_options.py +0 -0
  366. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0093_add_info_field_repositoryversion.py +0 -0
  367. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0094_protect_repository_content.py +0 -0
  368. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0095_artifactdistribution.py +0 -0
  369. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0096_alter_task_logging_cid.py +0 -0
  370. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0097_remove_telemetry_task_schedule.py +0 -0
  371. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0098_pulp_labels.py +0 -0
  372. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0099_versions_field.py +0 -0
  373. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0100_upstreampulp.py +0 -0
  374. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0101_add_domain.py +0 -0
  375. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0102_add_domain_relations.py +0 -0
  376. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0103_alter_export_task.py +0 -0
  377. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0104_delete_label.py +0 -0
  378. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0105_abstract_uuid_gen.py +0 -0
  379. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0106_alter_artifactdistribution_distribution_ptr_and_more.py +0 -0
  380. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0107_distribution_hidden.py +0 -0
  381. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0108_task_versions.py +0 -0
  382. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0109_contentartifact_relative_path_index.py +0 -0
  383. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0110_apiappstatus.py +0 -0
  384. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0111_task_enc_args_task_enc_kwargs.py +0 -0
  385. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0112_alter_upstreampulp_options.py +0 -0
  386. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0113_headercontentguard.py +0 -0
  387. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0114_remove_task_args_remove_task_kwargs.py +0 -0
  388. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0115_compositecontentguard.py +0 -0
  389. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0116_alter_remoteartifact_md5_alter_remoteartifact_sha1_and_more.py +0 -0
  390. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/0117_task_unblocked_at.py +0 -0
  391. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/migrations/__init__.py +0 -0
  392. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/mime_types.py +0 -0
  393. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/models/base.py +1 -1
  394. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/models/exporter.py +0 -0
  395. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/models/generic.py +0 -0
  396. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/models/progress.py +0 -0
  397. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/models/role.py +0 -0
  398. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/models/status.py +0 -0
  399. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/protobuf/__init__.py +0 -0
  400. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/protobuf/analytics_pb2.py +0 -0
  401. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/pulp_hashlib.py +1 -1
  402. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/pulpcore_gunicorn_application.py +0 -0
  403. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/redis_connection.py +0 -0
  404. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/response.py +0 -0
  405. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/serializers/access_policy.py +0 -0
  406. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/serializers/base.py +9 -9
  407. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/serializers/exporter.py +1 -1
  408. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/serializers/fields.py +1 -1
  409. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/serializers/importer.py +0 -0
  410. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/serializers/orphans.py +0 -0
  411. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/serializers/progress.py +0 -0
  412. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/serializers/purge.py +0 -0
  413. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/serializers/repair.py +0 -0
  414. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/serializers/repository.py +2 -2
  415. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/serializers/status.py +0 -0
  416. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/serializers/task.py +1 -1
  417. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/tasks/base.py +0 -0
  418. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/tasks/reclaim_space.py +0 -0
  419. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/tasks/test.py +0 -0
  420. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/tasks/upload.py +0 -0
  421. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/templates/rest_framework/api.html +0 -0
  422. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/templatetags/__init__.py +0 -0
  423. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/views/orphans.py +0 -0
  424. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/views/repair.py +1 -1
  425. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/views/status.py +2 -2
  426. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/viewsets/access_policy.py +2 -2
  427. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/viewsets/acs.py +2 -2
  428. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/viewsets/content.py +1 -1
  429. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/viewsets/orphans.py +1 -1
  430. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/viewsets/reclaim.py +1 -1
  431. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/app/viewsets/replica.py +2 -2
  432. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/backends.py +3 -3
  433. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/constants.py +0 -0
  434. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/download/base.py +3 -3
  435. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/exceptions/base.py +0 -0
  436. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/exceptions/plugin.py +0 -0
  437. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/exceptions/validation.py +0 -0
  438. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/openapi/hooks.py +0 -0
  439. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/plugin/access_policy.py +0 -0
  440. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/plugin/actions.py +0 -0
  441. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/plugin/apps.py +0 -0
  442. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/plugin/constants.py +2 -2
  443. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/plugin/content.py +0 -0
  444. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/plugin/exceptions.py +1 -1
  445. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/plugin/files.py +0 -0
  446. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/plugin/migrations.py +0 -0
  447. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/plugin/modelresources.py +0 -0
  448. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/plugin/models/role.py +0 -0
  449. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/plugin/publication_utils.py +1 -1
  450. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/plugin/pulp_hashlib.py +0 -0
  451. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/plugin/replica.py +0 -0
  452. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/plugin/responses.py +0 -0
  453. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/plugin/serializers/content.py +2 -2
  454. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/plugin/storage.py +0 -0
  455. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/plugin/sync.py +0 -0
  456. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/responses.py +0 -0
  457. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/tasking/__init__.py +0 -0
  458. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/tasking/storage.py +0 -0
  459. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/tests/__init__.py +0 -0
  460. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/tests/functional/api/__init__.py +0 -0
  461. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/tests/functional/api/test_access_policy.py +0 -0
  462. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/tests/functional/api/test_auth.py +3 -3
  463. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/tests/functional/api/test_correlation_id.py +0 -0
  464. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/tests/functional/api/test_repos.py +2 -2
  465. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/tests/functional/api/test_scoping.py +0 -0
  466. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/tests/functional/api/test_signing_service.py +0 -0
  467. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/tests/functional/api/test_status.py +1 -1
  468. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/tests/functional/api/test_tasking.py +3 -3
  469. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/tests/functional/api/using_plugin/__init__.py +0 -0
  470. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/tests/functional/api/using_plugin/test_content_access.py +2 -2
  471. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/tests/functional/api/using_plugin/test_content_cache.py +4 -4
  472. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/tests/functional/api/using_plugin/test_content_delivery.py +0 -0
  473. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/tests/functional/api/using_plugin/test_content_directory.py +0 -0
  474. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/tests/functional/api/using_plugin/test_content_promotion.py +2 -2
  475. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/tests/functional/api/using_plugin/test_contentguard.py +4 -4
  476. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/tests/functional/api/using_plugin/test_crud_repos.py +4 -4
  477. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/tests/functional/api/using_plugin/test_filesystemexport.py +3 -3
  478. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/tests/functional/api/using_plugin/test_labels.py +0 -0
  479. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/tests/functional/api/using_plugin/test_pagination.py +0 -0
  480. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/tests/functional/api/using_plugin/test_tasks.py +1 -1
  481. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/tests/functional/api/using_plugin/test_unlinking_repo.py +0 -0
  482. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/tests/functional/assets/__init__.py +0 -0
  483. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/tests/functional/gpg_ascii_armor_signing_service.py +1 -1
  484. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/tests/functional/utils.py +2 -2
  485. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/tests/performance/__init__.py +0 -0
  486. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/tests/performance/test_performance.py +2 -2
  487. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/tests/unit/__init__.py +0 -0
  488. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/tests/unit/content/__init__.py +0 -0
  489. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/tests/unit/download/__init__.py +0 -0
  490. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/tests/unit/download/test_downloader_base.py +0 -0
  491. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/tests/unit/download/test_downloader_factory.py +0 -0
  492. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/tests/unit/migration/__init__.py +0 -0
  493. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/tests/unit/models/__init__.py +0 -0
  494. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/tests/unit/models/test_repository.py +2 -2
  495. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/tests/unit/roles/__init__.py +0 -0
  496. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/tests/unit/roles/test_roles.py +2 -2
  497. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/tests/unit/serializers/__init__.py +0 -0
  498. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/tests/unit/serializers/test_domain.py +2 -2
  499. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/tests/unit/serializers/test_repository.py +2 -2
  500. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/tests/unit/stages/__init__.py +0 -0
  501. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/tests/unit/test_chunked_file.py +0 -0
  502. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/tests/unit/test_content_guard.py +3 -3
  503. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/tests/unit/test_files.py +0 -0
  504. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/tests/unit/test_settings.py +0 -0
  505. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/tests/unit/test_viewsets.py +0 -0
  506. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/tests/unit/viewsets/__init__.py +0 -0
  507. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore/tests/unit/viewsets/test_viewset_base.py +2 -2
  508. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore.egg-info/dependency_links.txt +0 -0
  509. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore.egg-info/entry_points.txt +0 -0
  510. {pulpcore-3.49.57 → pulpcore-3.49.63}/pulpcore.egg-info/top_level.txt +0 -0
  511. {pulpcore-3.49.57 → pulpcore-3.49.63}/setup.cfg +0 -0
  512. {pulpcore-3.49.57 → pulpcore-3.49.63}/test_requirements.txt +0 -0
  513. {pulpcore-3.49.57 → pulpcore-3.49.63}/unittest_requirements.txt +0 -0
@@ -8,6 +8,143 @@
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
+
11
148
  ## 3.49.57 (2026-03-24) {: #3.49.57 }
12
149
 
13
150
  ### REST API {: #3.49.57-rest-api }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pulpcore
3
- Version: 3.49.57
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
@@ -6,6 +6,6 @@ class PulpCertGuardPluginAppConfig(PulpPluginAppConfig):
6
6
 
7
7
  name = "pulp_certguard.app"
8
8
  label = "certguard"
9
- version = "3.49.57"
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,29 +1,29 @@
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
29
  if settings.DOMAIN_ENABLED:
@@ -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
 
@@ -8,6 +8,6 @@ class PulpFilePluginAppConfig(PulpPluginAppConfig):
8
8
 
9
9
  name = "pulp_file.app"
10
10
  label = "file"
11
- version = "3.49.57"
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
 
@@ -1,15 +1,14 @@
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
@@ -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,7 +13,7 @@ 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
19
  log = logging.getLogger(__name__)
@@ -1,7 +1,5 @@
1
1
  from collections import namedtuple
2
-
3
2
  from gettext import gettext as _
4
-
5
3
  from re import fullmatch
6
4
 
7
5
  Line = namedtuple("Line", ("number", "content"))
@@ -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,12 +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
+ from pulpcore.tests.functional.utils import download_file, generate_iso
10
11
 
11
12
  pytestmark = pytest.mark.skipif(not settings.DOMAIN_ENABLED, reason="Domains not enabled.")
12
13
 
@@ -1,17 +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
14
+ from pulpcore.tests.functional.utils import download_file, get_files_in_manifest
15
15
 
16
16
  OBJECT_STORAGES = (
17
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,9 @@
1
- import pytest
2
1
  import uuid
3
2
 
4
- from pulpcore.client.pulpcore.exceptions import ApiException
3
+ import pytest
4
+
5
5
  from pulpcore.app import settings
6
+ from pulpcore.client.pulpcore.exceptions import ApiException
6
7
  from pulpcore.constants import TASK_STATES
7
8
 
8
9
  pytestmark = [
@@ -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,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
@@ -164,8 +163,8 @@ class PulpPluginAppConfig(apps.AppConfig):
164
163
  def import_viewsets(self):
165
164
  # TODO do not include imported ViewSets
166
165
  # circular import avoidance
166
+ from pulpcore.app.models import Content, Repository
167
167
  from pulpcore.app.viewsets import NamedModelViewSet
168
- from pulpcore.app.models import Repository, Content
169
168
 
170
169
  self.named_viewsets = defaultdict(list)
171
170
  if module_has_submodule(self.module, VIEWSETS_MODULE_NAME):
@@ -243,7 +242,7 @@ class PulpAppConfig(PulpPluginAppConfig):
243
242
  label = "core"
244
243
 
245
244
  # The version of this app
246
- version = "3.49.57"
245
+ version = "3.49.63"
247
246
 
248
247
  # The python package name providing this app
249
248
  python_package_name = "pulpcore"
@@ -286,10 +285,8 @@ def _clean_app_status(sender, apps, verbosity, **kwargs):
286
285
  except LookupError:
287
286
  if verbosity >= 1:
288
287
  print(
289
- _(
290
- "{app_name} model does not exist. Skipping initialization.".format(
291
- app_name=app_name
292
- )
288
+ _("{app_name} model does not exist. Skipping initialization.").format(
289
+ app_name=app_name
293
290
  )
294
291
  )
295
292
  else:
@@ -417,11 +414,9 @@ def adjust_roles(apps, role_prefix, desired_roles, verbosity=1):
417
414
  _("Locked role definition for {name} is incompatible.").format(name=name)
418
415
  )
419
416
  permissions = [_get_permission(perm) for perm in permissions]
420
- role, created = Role.objects.get_or_create(
421
- 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}
422
419
  )
423
- role.description = description
424
- role.save()
425
420
  role.permissions.set(permissions)
426
421
 
427
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
@@ -3,11 +3,17 @@ from pathlib import Path
3
3
  from django.conf import settings
4
4
  from django.core.checks import (
5
5
  Debug as CheckDebug,
6
+ )
7
+ from django.core.checks import (
6
8
  Error as CheckError,
7
- Warning as CheckWarning,
9
+ )
10
+ from django.core.checks import (
8
11
  Tags,
9
12
  register,
10
13
  )
14
+ from django.core.checks import (
15
+ Warning as CheckWarning,
16
+ )
11
17
  from django.db.models import Q
12
18
 
13
19
  from pulpcore import constants
@@ -1,13 +1,13 @@
1
- from contextvars import ContextVar
2
- from logging import getLogger
3
1
  import os
4
2
  import socket
3
+ from contextvars import ContextVar
4
+ from logging import getLogger
5
5
 
6
6
  import click
7
7
  import django
8
8
  from django.conf import settings
9
9
  from django.db import connection
10
- from django.db.utils import InterfaceError, DatabaseError
10
+ from django.db.utils import DatabaseError, InterfaceError
11
11
  from gunicorn.workers.sync import SyncWorker
12
12
 
13
13
  from pulpcore.app.apps import pulp_plugin_configs
@@ -88,6 +88,13 @@ class PulpcoreApiApplication(PulpcoreGunicornApplication):
88
88
  PulpApiWorker.__module__ + "." + PulpApiWorker.__qualname__,
89
89
  enforced=True,
90
90
  )
91
+ # Gunicorn's default for max_requests is 0 (unlimited worker lifetime). Apply Pulp defaults
92
+ # only when the user did not pass --max-requests on the pulpcore-api CLI. An explicit
93
+ # --max-requests 0 means "disable recycling" and must not be replaced.
94
+ if self.cfg.max_requests == 0 and self.options.get("max_requests") is None:
95
+ self.cfg.set("max_requests", 10000)
96
+ if self.options.get("max_requests_jitter") is None:
97
+ self.cfg.set("max_requests_jitter", 500)
91
98
 
92
99
  def load(self):
93
100
  using_pulp_api_worker.set(True)
@@ -119,8 +126,7 @@ class PulpcoreApiApplication(PulpcoreGunicornApplication):
119
126
  "--access-logformat",
120
127
  "access_log_format",
121
128
  default=(
122
- "pulp [%({correlation-id}o)s]: "
123
- '%(h)s %(l)s %(u)s %(t)s "%(r)s" %(s)s %(b)s "%(f)s" "%(a)s"',
129
+ 'pulp [%({correlation-id}o)s]: %(h)s %(l)s %(u)s %(t)s "%(r)s" %(s)s %(b)s "%(f)s" "%(a)s"',
124
130
  ),
125
131
  )
126
132
  @click.option("--error-logfile", "--log-file", "errorlog")
@@ -5,8 +5,7 @@ from django.core.files.uploadedfile import TemporaryUploadedFile
5
5
  from django.core.files.uploadhandler import TemporaryFileUploadHandler
6
6
  from pygtrie import StringTrie
7
7
 
8
- from pulpcore.app import models
9
- from pulpcore.app import pulp_hashlib
8
+ from pulpcore.app import models, pulp_hashlib
10
9
 
11
10
 
12
11
  class PulpTemporaryUploadedFile(TemporaryUploadedFile):
@@ -1,23 +1,23 @@
1
- import os
2
1
  import io
3
2
  import json
3
+ import logging
4
+ import os
4
5
  import tarfile
5
6
  import tempfile
6
- import logging
7
7
 
8
8
  from django.conf import settings
9
9
  from django.db.models.query import QuerySet
10
10
 
11
11
  from pulpcore.app.apps import get_plugin_config
12
- from pulpcore.app.models.content import Artifact
13
- from pulpcore.app.models.progress import ProgressReport
14
- from pulpcore.app.models.repository import Repository
15
12
  from pulpcore.app.modelresource import (
16
13
  ArtifactResource,
17
14
  ContentArtifactResource,
18
15
  RepositoryResource,
19
16
  )
20
- from pulpcore.constants import TASK_STATES, EXPORT_BATCH_SIZE
17
+ from pulpcore.app.models.content import Artifact
18
+ from pulpcore.app.models.progress import ProgressReport
19
+ from pulpcore.app.models.repository import Repository
20
+ from pulpcore.constants import EXPORT_BATCH_SIZE, TASK_STATES
21
21
 
22
22
  log = logging.getLogger(__name__)
23
23
 
@@ -1,14 +1,10 @@
1
1
  import os
2
-
3
- import gnupg
4
-
5
- from pathlib import Path
6
-
7
2
  from gettext import gettext as _
3
+ from pathlib import Path
8
4
 
9
- from django.core.management import BaseCommand, CommandError
10
-
5
+ import gnupg
11
6
  from django.apps import apps
7
+ from django.core.management import BaseCommand, CommandError
12
8
  from django.db.utils import IntegrityError
13
9
 
14
10
  from pulpcore.app.models.content import SigningService as BaseSigningService
@@ -3,7 +3,7 @@ from gettext import gettext as _
3
3
  from django.core.management import BaseCommand, CommandError
4
4
  from django.urls import reverse
5
5
 
6
- from pulpcore.app.models import Publication, Artifact, Distribution
6
+ from pulpcore.app.models import Artifact, Distribution, Publication
7
7
  from pulpcore.app.util import get_view_name_for_model
8
8
 
9
9
 
@@ -1,13 +1,12 @@
1
1
  from gettext import gettext as _
2
2
 
3
- from django.db import connection
3
+ import cryptography
4
4
  from django.conf import settings
5
5
  from django.core.management import BaseCommand
6
+ from django.db import connection
6
7
  from django.db.models import Q
7
8
  from django.utils.encoding import force_bytes, force_str
8
9
 
9
- import cryptography
10
-
11
10
  from pulpcore.app.models import Remote
12
11
 
13
12
 
@@ -1,15 +1,15 @@
1
- from gettext import gettext as _
2
1
  import logging
3
2
  import os
3
+ from gettext import gettext as _
4
4
 
5
5
  from django.core.exceptions import ObjectDoesNotExist
6
6
  from django.core.management import BaseCommand, CommandError
7
7
 
8
- from pulpcore.app.models import Publication, Distribution
8
+ from pulpcore.app.models import Distribution, Publication
9
9
  from pulpcore.app.tasks.export import (
10
- _export_publication_to_file_system,
11
- _export_location_is_clean,
12
10
  UnexportableArtifactException,
11
+ _export_location_is_clean,
12
+ _export_publication_to_file_system,
13
13
  )
14
14
  from pulpcore.app.viewsets.base import NamedModelViewSet
15
15
  from pulpcore.constants import FS_EXPORT_METHODS