pulpcore 3.22.30__tar.gz → 3.22.32__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 (347) hide show
  1. {pulpcore-3.22.30 → pulpcore-3.22.32}/CHANGES.md +31 -0
  2. {pulpcore-3.22.30 → pulpcore-3.22.32}/MANIFEST.in +1 -0
  3. {pulpcore-3.22.30 → pulpcore-3.22.32}/PKG-INFO +1 -1
  4. {pulpcore-3.22.30 → pulpcore-3.22.32}/functest_requirements.txt +2 -0
  5. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/apps.py +1 -1
  6. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/serializers/exporter.py +4 -3
  7. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/serializers/fields.py +11 -0
  8. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/serializers/importer.py +2 -1
  9. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/serializers/task.py +2 -1
  10. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/viewsets/content.py +6 -1
  11. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/tests/functional/api/test_workers.py +5 -4
  12. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/tests/unit/download/test_factory.py +10 -8
  13. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore.egg-info/PKG-INFO +1 -1
  14. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore.egg-info/requires.txt +2 -2
  15. {pulpcore-3.22.30 → pulpcore-3.22.32}/requirements.txt +2 -2
  16. {pulpcore-3.22.30 → pulpcore-3.22.32}/setup.py +1 -1
  17. {pulpcore-3.22.30 → pulpcore-3.22.32}/CODE_OF_CONDUCT.md +0 -0
  18. {pulpcore-3.22.30 → pulpcore-3.22.32}/COMMITMENT +0 -0
  19. {pulpcore-3.22.30 → pulpcore-3.22.32}/CONTRIBUTING.md +0 -0
  20. {pulpcore-3.22.30 → pulpcore-3.22.32}/COPYRIGHT +0 -0
  21. {pulpcore-3.22.30 → pulpcore-3.22.32}/LICENSE +0 -0
  22. {pulpcore-3.22.30 → pulpcore-3.22.32}/README.md +0 -0
  23. {pulpcore-3.22.30 → pulpcore-3.22.32}/bin/pulp-content +0 -0
  24. {pulpcore-3.22.30 → pulpcore-3.22.32}/ci_requirements.txt +0 -0
  25. {pulpcore-3.22.30 → pulpcore-3.22.32}/manage.py +0 -0
  26. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/__init__.py +0 -0
  27. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/__init__.py +0 -0
  28. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/access_policy.py +0 -0
  29. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/authentication.py +0 -0
  30. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/checks.py +0 -0
  31. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/files.py +0 -0
  32. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/global_access_conditions.py +0 -0
  33. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/importexport.py +0 -0
  34. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/loggers.py +0 -0
  35. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/manage.py +0 -0
  36. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/management/__init__.py +0 -0
  37. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/management/commands/__init__.py +0 -0
  38. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/management/commands/add-signing-service.py +0 -0
  39. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/management/commands/analyze-publication.py +0 -0
  40. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/management/commands/datarepair-2327.py +0 -0
  41. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/management/commands/datarepair-labels.py +0 -0
  42. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/management/commands/dump-permissions.py +0 -0
  43. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/management/commands/dump-publications-to-fs.py +0 -0
  44. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/management/commands/handle-artifact-checksums.py +0 -0
  45. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/management/commands/openapi.py +0 -0
  46. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/management/commands/remove-plugin.py +0 -0
  47. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/management/commands/remove-signing-service.py +0 -0
  48. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/management/commands/reset-admin-password.py +0 -0
  49. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/management/commands/stage-profile-summary.py +0 -0
  50. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0001_initial.py +0 -0
  51. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0002_increase_artifact_size_field.py +0 -0
  52. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0003_remove_upload_completed.py +0 -0
  53. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0004_add_duplicated_reserved_resources.py +0 -0
  54. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0005_progressreport_code.py +0 -0
  55. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0006_repository_plugin_managed.py +0 -0
  56. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0007_delete_progress_proxies.py +0 -0
  57. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0008_published_metadata_as_content.py +0 -0
  58. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0009_remove_task_non_fatal_errors.py +0 -0
  59. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0010_pulp_fields.py +0 -0
  60. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0011_relative_path.py +0 -0
  61. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0012_auto_20191104_2000.py +0 -0
  62. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0013_repository_pulp_type.py +0 -0
  63. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0014_remove_repository_plugin_managed.py +0 -0
  64. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0015_auto_20191112_1426.py +0 -0
  65. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0016_charfield_to_textfield.py +0 -0
  66. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0017_remove_task_parent.py +0 -0
  67. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0018_auto_20191127_2350.py +0 -0
  68. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0019_add_signing_service_model.py +0 -0
  69. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0020_change_publishedartifact_constraints.py +0 -0
  70. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0021_add_signing_service_foreign_key.py +0 -0
  71. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0022_rename_last_version.py +0 -0
  72. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0023_change_exporter_models.py +0 -0
  73. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0024_use_local_storage_for_uploads.py +0 -0
  74. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0025_task_parent_task.py +0 -0
  75. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0026_task_group.py +0 -0
  76. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0027_export_backend.py +0 -0
  77. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0028_import_importer_pulpimporter_pulpimporterrepository.py +0 -0
  78. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0029_export_delete.py +0 -0
  79. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0030_taskgroup_all_tasks_dispatched.py +0 -0
  80. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0031_import_export_validate_params.py +0 -0
  81. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0032_export_to_chunks.py +0 -0
  82. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0033_increase_remote_artifact_size_field.py +0 -0
  83. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0034_groupprogressreport.py +0 -0
  84. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0035_content_upstream_id.py +0 -0
  85. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0036_unprotect_last_export.py +0 -0
  86. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0037_pulptemporaryfile.py +0 -0
  87. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0038_repository_remote.py +0 -0
  88. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0039_change_download_concurrency.py +0 -0
  89. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0040_set_admin_is_staff.py +0 -0
  90. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0041_accesspolicy.py +0 -0
  91. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0042_rbac_for_tasks.py +0 -0
  92. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0043_toc_attribute.py +0 -0
  93. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0044_temp_file_artifact_field.py +0 -0
  94. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0045_accesspolicy_permissions_allow_null.py +0 -0
  95. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0046_task__resource_job_id.py +0 -0
  96. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0047_improve_orphan_cleanup.py +0 -0
  97. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0048_fips_checksums.py +0 -0
  98. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0049_add_file_field_to_uploadchunk.py +0 -0
  99. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0050_namespace_access_policies.py +0 -0
  100. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0051_timeoutfields.py +0 -0
  101. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0052_tasking_logging_cid.py +0 -0
  102. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0053_remote_headers.py +0 -0
  103. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0054_add_public_key.py +0 -0
  104. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0055_label.py +0 -0
  105. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0056_remote_rate_limit.py +0 -0
  106. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0057_add_label_indexes.py +0 -0
  107. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0058_accesspolicy_customized.py +0 -0
  108. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0059_proxy_creds.py +0 -0
  109. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0060_data_migration_proxy_creds.py +0 -0
  110. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0061_call_handle_artifact_checksums_command.py +0 -0
  111. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0062_add_new_distribution_mastermodel.py +0 -0
  112. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0063_repository_retained_versions.py +0 -0
  113. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0064_add_new_style_task_columns.py +0 -0
  114. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0064_repository_user_hidden.py +0 -0
  115. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0065_merge_20210615_1211.py +0 -0
  116. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0066_download_concurrency_and_retry_changes.py +0 -0
  117. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0067_add_protect_to_task_reservation.py +0 -0
  118. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0068_add_timestamp_of_interest.py +0 -0
  119. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0069_update_json_fields.py +0 -0
  120. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0070_rename_retained_versions.py +0 -0
  121. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0071_filesystemexport_filesystemexporter.py +0 -0
  122. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0072_add_method_to_filesystem_exporter.py +0 -0
  123. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0073_encrypt_remote_fields.py +0 -0
  124. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0074_acs.py +0 -0
  125. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0075_rbaccontentguard.py +0 -0
  126. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0076_remove_reserved_resource.py +0 -0
  127. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0077_move_remote_url_credentials.py +0 -0
  128. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0078_grouprole_role_userrole.py +0 -0
  129. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0079_rename_permissions_assignment_accesspolicy_creation_hooks.py +0 -0
  130. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0080_proxy_group_model.py +0 -0
  131. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0081_reapplabel_group_permissions.py +0 -0
  132. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0082_add_manage_roles_permissions.py +0 -0
  133. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0083_alter_group_options.py +0 -0
  134. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0084_alter_rbaccontentguard_options.py +0 -0
  135. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0085_contentredirectcontentguard.py +0 -0
  136. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0086_task_json_fields.py +0 -0
  137. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0087_taskschedule.py +0 -0
  138. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0088_accesspolicy_queryset_scoping.py +0 -0
  139. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0089_alter_contentredirectcontentguard_options.py +0 -0
  140. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0090_char_to_text_field.py +0 -0
  141. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0091_systemid.py +0 -0
  142. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0092_alter_upload_options.py +0 -0
  143. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0093_add_info_field_repositoryversion.py +0 -0
  144. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0094_protect_repository_content.py +0 -0
  145. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0095_artifactdistribution.py +0 -0
  146. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0096_alter_task_logging_cid.py +0 -0
  147. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0097_remove_telemetry_task_schedule.py +0 -0
  148. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/0098_pulp_labels.py +0 -0
  149. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/migrations/__init__.py +0 -0
  150. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/mime_types.py +0 -0
  151. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/modelresource.py +0 -0
  152. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/models/__init__.py +0 -0
  153. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/models/access_policy.py +0 -0
  154. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/models/acs.py +0 -0
  155. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/models/analytics.py +0 -0
  156. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/models/base.py +0 -0
  157. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/models/content.py +0 -0
  158. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/models/exporter.py +0 -0
  159. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/models/fields.py +0 -0
  160. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/models/generic.py +0 -0
  161. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/models/importer.py +0 -0
  162. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/models/progress.py +0 -0
  163. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/models/publication.py +0 -0
  164. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/models/repository.py +0 -0
  165. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/models/role.py +0 -0
  166. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/models/status.py +0 -0
  167. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/models/storage.py +0 -0
  168. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/models/task.py +0 -0
  169. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/models/upload.py +0 -0
  170. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/monkeypatch.py +0 -0
  171. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/protobuf/__init__.py +0 -0
  172. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/protobuf/analytics_pb2.py +0 -0
  173. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/pulp_hashlib.py +0 -0
  174. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/redis_connection.py +0 -0
  175. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/response.py +0 -0
  176. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/role_util.py +0 -0
  177. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/serializers/__init__.py +0 -0
  178. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/serializers/access_policy.py +0 -0
  179. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/serializers/acs.py +0 -0
  180. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/serializers/base.py +0 -0
  181. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/serializers/content.py +0 -0
  182. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/serializers/orphans.py +0 -0
  183. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/serializers/progress.py +0 -0
  184. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/serializers/publication.py +0 -0
  185. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/serializers/purge.py +0 -0
  186. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/serializers/reclaim.py +0 -0
  187. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/serializers/repair.py +0 -0
  188. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/serializers/repository.py +0 -0
  189. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/serializers/status.py +0 -0
  190. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/serializers/upload.py +0 -0
  191. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/serializers/user.py +0 -0
  192. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/settings.py +0 -0
  193. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/tasks/__init__.py +0 -0
  194. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/tasks/analytics.py +0 -0
  195. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/tasks/base.py +0 -0
  196. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/tasks/export.py +0 -0
  197. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/tasks/importer.py +0 -0
  198. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/tasks/orphan.py +0 -0
  199. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/tasks/purge.py +0 -0
  200. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/tasks/reclaim_space.py +0 -0
  201. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/tasks/repository.py +0 -0
  202. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/tasks/test.py +0 -0
  203. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/tasks/upload.py +0 -0
  204. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/templates/rest_framework/api.html +0 -0
  205. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/templatetags/__init__.py +0 -0
  206. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/templatetags/pulp_urls.py +0 -0
  207. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/urls.py +0 -0
  208. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/util.py +0 -0
  209. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/views/__init__.py +0 -0
  210. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/views/importer.py +0 -0
  211. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/views/orphans.py +0 -0
  212. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/views/repair.py +0 -0
  213. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/views/status.py +0 -0
  214. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/viewsets/__init__.py +0 -0
  215. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/viewsets/access_policy.py +0 -0
  216. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/viewsets/acs.py +0 -0
  217. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/viewsets/base.py +0 -0
  218. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/viewsets/custom_filters.py +0 -0
  219. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/viewsets/exporter.py +0 -0
  220. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/viewsets/importer.py +0 -0
  221. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/viewsets/orphans.py +0 -0
  222. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/viewsets/publication.py +0 -0
  223. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/viewsets/reclaim.py +0 -0
  224. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/viewsets/repository.py +0 -0
  225. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/viewsets/task.py +0 -0
  226. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/viewsets/upload.py +0 -0
  227. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/viewsets/user.py +0 -0
  228. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/app/wsgi.py +0 -0
  229. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/backends.py +0 -0
  230. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/cache/__init__.py +0 -0
  231. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/cache/cache.py +0 -0
  232. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/constants.py +0 -0
  233. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/content/__init__.py +0 -0
  234. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/content/authentication.py +0 -0
  235. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/content/handler.py +0 -0
  236. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/download/__init__.py +0 -0
  237. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/download/base.py +0 -0
  238. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/download/factory.py +0 -0
  239. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/download/file.py +0 -0
  240. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/download/http.py +0 -0
  241. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/exceptions/__init__.py +0 -0
  242. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/exceptions/base.py +0 -0
  243. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/exceptions/plugin.py +0 -0
  244. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/exceptions/validation.py +0 -0
  245. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/filters.py +0 -0
  246. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/openapi/__init__.py +0 -0
  247. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/plugin/__init__.py +0 -0
  248. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/plugin/access_policy.py +0 -0
  249. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/plugin/actions.py +0 -0
  250. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/plugin/apps.py +0 -0
  251. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/plugin/authentication/__init__.py +0 -0
  252. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/plugin/cache/__init__.py +0 -0
  253. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/plugin/constants.py +0 -0
  254. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/plugin/content.py +0 -0
  255. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/plugin/download/__init__.py +0 -0
  256. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/plugin/exceptions.py +0 -0
  257. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/plugin/files.py +0 -0
  258. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/plugin/importexport.py +0 -0
  259. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/plugin/modelresources.py +0 -0
  260. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/plugin/models/__init__.py +0 -0
  261. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/plugin/models/role.py +0 -0
  262. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/plugin/publication_utils.py +0 -0
  263. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/plugin/pulp_hashlib.py +0 -0
  264. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/plugin/repo_version_utils.py +0 -0
  265. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/plugin/responses.py +0 -0
  266. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/plugin/serializers/__init__.py +0 -0
  267. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/plugin/serializers/content.py +0 -0
  268. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/plugin/stages/__init__.py +0 -0
  269. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/plugin/stages/api.py +0 -0
  270. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/plugin/stages/artifact_stages.py +0 -0
  271. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/plugin/stages/content_stages.py +0 -0
  272. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/plugin/stages/declarative_version.py +0 -0
  273. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/plugin/stages/models.py +0 -0
  274. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/plugin/stages/profiler.py +0 -0
  275. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/plugin/storage.py +0 -0
  276. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/plugin/sync.py +0 -0
  277. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/plugin/tasking.py +0 -0
  278. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/plugin/util.py +0 -0
  279. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/plugin/viewsets/__init__.py +0 -0
  280. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/plugin/viewsets/content.py +0 -0
  281. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/responses.py +0 -0
  282. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/tasking/__init__.py +0 -0
  283. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/tasking/constants.py +0 -0
  284. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/tasking/entrypoint.py +0 -0
  285. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/tasking/pulpcore_worker.py +0 -0
  286. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/tasking/storage.py +0 -0
  287. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/tasking/tasks.py +0 -0
  288. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/tasking/util.py +0 -0
  289. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/tests/__init__.py +0 -0
  290. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/tests/functional/__init__.py +0 -0
  291. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/tests/functional/api/__init__.py +0 -0
  292. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/tests/functional/api/test_access_policy.py +0 -0
  293. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/tests/functional/api/test_api_docs.py +0 -0
  294. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/tests/functional/api/test_artifact_distribution.py +0 -0
  295. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/tests/functional/api/test_auth.py +0 -0
  296. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/tests/functional/api/test_correlation_id.py +0 -0
  297. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/tests/functional/api/test_crd_artifacts.py +0 -0
  298. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/tests/functional/api/test_openapi_schema.py +0 -0
  299. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/tests/functional/api/test_role.py +0 -0
  300. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/tests/functional/api/test_root_endpoint.py +0 -0
  301. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/tests/functional/api/test_scoping.py +0 -0
  302. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/tests/functional/api/test_signing_service.py +0 -0
  303. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/tests/functional/api/test_status.py +0 -0
  304. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/tests/functional/api/test_tasking.py +0 -0
  305. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/tests/functional/api/test_upload.py +0 -0
  306. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/tests/functional/api/test_users_groups.py +0 -0
  307. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/tests/functional/content_with_coverage.py +0 -0
  308. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/tests/functional/gpg_ascii_armor_signing_service.py +0 -0
  309. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/tests/functional/utils.py +0 -0
  310. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/tests/unit/__init__.py +0 -0
  311. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/tests/unit/content/__init__.py +0 -0
  312. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/tests/unit/content/test_handler.py +0 -0
  313. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/tests/unit/content/test_heartbeat.py +0 -0
  314. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/tests/unit/download/__init__.py +0 -0
  315. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/tests/unit/download/test_download_base.py +0 -0
  316. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/tests/unit/migrations/__init__.py +0 -0
  317. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/tests/unit/migrations/test_0077_move_remote_url_credentials.py +0 -0
  318. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/tests/unit/models/__init__.py +0 -0
  319. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/tests/unit/models/test_content.py +0 -0
  320. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/tests/unit/models/test_remote.py +0 -0
  321. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/tests/unit/models/test_repository.py +0 -0
  322. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/tests/unit/roles/__init__.py +0 -0
  323. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/tests/unit/roles/test_roles.py +0 -0
  324. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/tests/unit/serializers/__init__.py +0 -0
  325. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/tests/unit/serializers/test_base.py +0 -0
  326. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/tests/unit/serializers/test_pulpexport.py +0 -0
  327. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/tests/unit/serializers/test_repository.py +0 -0
  328. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/tests/unit/stages/__init__.py +0 -0
  329. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/tests/unit/stages/test_artifactdownloader.py +0 -0
  330. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/tests/unit/stages/test_stages.py +0 -0
  331. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/tests/unit/test_cache.py +0 -0
  332. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/tests/unit/test_content_guard.py +0 -0
  333. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/tests/unit/test_files.py +0 -0
  334. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/tests/unit/test_import_checks.py +0 -0
  335. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/tests/unit/test_pulp_urls.py +0 -0
  336. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/tests/unit/test_settings.py +0 -0
  337. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/tests/unit/test_util.py +0 -0
  338. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/tests/unit/viewsets/__init__.py +0 -0
  339. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore/tests/unit/viewsets/test_base.py +0 -0
  340. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore.egg-info/SOURCES.txt +0 -0
  341. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore.egg-info/dependency_links.txt +0 -0
  342. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore.egg-info/entry_points.txt +0 -0
  343. {pulpcore-3.22.30 → pulpcore-3.22.32}/pulpcore.egg-info/top_level.txt +0 -0
  344. {pulpcore-3.22.30 → pulpcore-3.22.32}/pyproject.toml +0 -0
  345. {pulpcore-3.22.30 → pulpcore-3.22.32}/setup.cfg +0 -0
  346. {pulpcore-3.22.30 → pulpcore-3.22.32}/test_requirements.txt +0 -0
  347. {pulpcore-3.22.30 → pulpcore-3.22.32}/unittest_requirements.txt +0 -0
@@ -8,6 +8,37 @@
8
8
 
9
9
  [//]: # (towncrier release notes start)
10
10
 
11
+ ## 3.22.32 (2024-11-06) {: #3.22.32 }
12
+
13
+ ### REST API {: #3.22.32-rest-api }
14
+
15
+ #### Bugfixes {: #3.22.32-rest-api-bugfix }
16
+
17
+ - Fixed the JSONField specification so it doesn't break ruby bindings.
18
+ See context [here](https://github.com/pulp/pulp_rpm/issues/3639).
19
+
20
+ ### Plugin API {: #3.22.32-plugin-api }
21
+
22
+ No significant changes.
23
+
24
+ ---
25
+
26
+ ## 3.22.31 (2024-10-01) {: #3.22.31 }
27
+
28
+ ### REST API {: #3.22.31-rest-api }
29
+
30
+ #### Bugfixes {: #3.22.31-rest-api-bugfix }
31
+
32
+ - Fixed a bug that caused Pulp to return duplicate content when a user was logged in as a
33
+ non-superuser while the content was part of multiple repositories.
34
+ [#3641](https://github.com/pulp/pulpcore/issues/3641)
35
+
36
+ ### Plugin API {: #3.22.31-plugin-api }
37
+
38
+ No significant changes.
39
+
40
+ ---
41
+
11
42
  # ## 3.22.30 (2024-08-10) {: #3.22.30 }
12
43
 
13
44
  ### REST API {: #3.22.30-rest-api }
@@ -13,3 +13,4 @@ include COPYRIGHT
13
13
  include pulpcore/app/templates/rest_framework/api.html
14
14
  include manage.py
15
15
  include test_requirements.txt
16
+ exclude releasing.md
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pulpcore
3
- Version: 3.22.30
3
+ Version: 3.22.32
4
4
  Summary: Pulp Django Application and Related Modules
5
5
  Home-page: https://pulpproject.org
6
6
  Author: Pulp Team
@@ -8,3 +8,5 @@ python-gnupg
8
8
 
9
9
  # from pulp_file
10
10
  beautifulsoup4
11
+ pytest-xdist
12
+ pytest-timeout
@@ -207,7 +207,7 @@ class PulpAppConfig(PulpPluginAppConfig):
207
207
  label = "core"
208
208
 
209
209
  # The version of this app
210
- version = "3.22.30"
210
+ version = "3.22.32"
211
211
 
212
212
  # The python package name providing this app
213
213
  python_package_name = "pulpcore"
@@ -15,6 +15,7 @@ from pulpcore.app.serializers import (
15
15
  RelatedField,
16
16
  RelatedResourceField,
17
17
  RepositoryVersionRelatedField,
18
+ fields,
18
19
  )
19
20
  from pulpcore.constants import FS_EXPORT_CHOICES, FS_EXPORT_METHODS
20
21
 
@@ -93,7 +94,7 @@ class ExportSerializer(ModelSerializer):
93
94
  view_name="None", # This is a polymorphic field. The serializer does not need a view name.
94
95
  )
95
96
 
96
- params = serializers.JSONField(
97
+ params = fields.JSONDictField(
97
98
  help_text=_("Any additional parameters that were used to create the export."),
98
99
  read_only=True,
99
100
  )
@@ -108,12 +109,12 @@ class PulpExportSerializer(ExportSerializer):
108
109
  Serializer for PulpExports.
109
110
  """
110
111
 
111
- output_file_info = serializers.JSONField(
112
+ output_file_info = fields.JSONDictField(
112
113
  help_text=_("Dictionary of filename: sha256hash entries for export-output-file(s)"),
113
114
  read_only=True,
114
115
  )
115
116
 
116
- toc_info = serializers.JSONField(
117
+ toc_info = fields.JSONDictField(
117
118
  help_text=_("Filename and sha256-checksum of table-of-contents for this export"),
118
119
  read_only=True,
119
120
  )
@@ -4,6 +4,8 @@ from gettext import gettext as _
4
4
  from urllib.parse import urljoin
5
5
 
6
6
  from django.conf import settings
7
+ from drf_spectacular.utils import extend_schema_field
8
+ from drf_spectacular.types import OpenApiTypes
7
9
  from rest_framework import serializers
8
10
  from rest_framework.fields import empty
9
11
  from rest_framework.reverse import reverse
@@ -20,6 +22,15 @@ def relative_path_validator(relative_path):
20
22
  )
21
23
 
22
24
 
25
+ @extend_schema_field(OpenApiTypes.OBJECT)
26
+ class JSONDictField(serializers.JSONField):
27
+ """A drf JSONField override to force openapi schema to use 'object' type.
28
+
29
+ Not strictly correct, but we relied on that for a long time.
30
+ See: https://github.com/tfranzel/drf-spectacular/issues/1095
31
+ """
32
+
33
+
23
34
  class SingleContentArtifactField(RelatedField):
24
35
  """
25
36
  A serializer field for the '_artifacts' ManyToManyField on the Content model (single-artifact).
@@ -11,6 +11,7 @@ from pulpcore.app.serializers import (
11
11
  ModelSerializer,
12
12
  RelatedField,
13
13
  ValidateFieldsMixin,
14
+ fields,
14
15
  )
15
16
 
16
17
 
@@ -39,7 +40,7 @@ class ImportSerializer(ModelSerializer):
39
40
  view_name="tasks-detail",
40
41
  )
41
42
 
42
- params = serializers.JSONField(
43
+ params = fields.JSONDictField(
43
44
  help_text=_("Any parameters that were used to create the import."),
44
45
  )
45
46
 
@@ -11,6 +11,7 @@ from pulpcore.app.serializers import (
11
11
  RelatedField,
12
12
  RelatedResourceField,
13
13
  TaskGroupStatusCountField,
14
+ fields,
14
15
  )
15
16
  from pulpcore.constants import TASK_STATES
16
17
 
@@ -41,7 +42,7 @@ class TaskSerializer(ModelSerializer):
41
42
  help_text=_("Timestamp of the when this task stopped execution."), read_only=True
42
43
  )
43
44
  error = serializers.DictField(
44
- child=serializers.JSONField(),
45
+ child=fields.JSONDictField(),
45
46
  help_text=_(
46
47
  "A JSON Object of a fatal error encountered during the execution of this task."
47
48
  ),
@@ -121,7 +121,12 @@ class BaseContentViewSet(NamedModelViewSet):
121
121
  repo_viewset = get_viewset_for_model(repo)()
122
122
  setattr(repo_viewset, "request", self.request)
123
123
  scoped_repos.extend(repo_viewset.get_queryset().values_list("pk", flat=True))
124
- return qs.filter(repositories__in=scoped_repos)
124
+
125
+ # calling the distinct clause at end of the query ensures that no duplicates from
126
+ # joined tables will be returned to the end-user; this behaviour is documented at
127
+ # https://docs.djangoproject.com/en/3.2/topics/db/queries, in the section Spanning
128
+ # multi-valued relationships
129
+ return qs.filter(repositories__in=scoped_repos).distinct()
125
130
  return qs
126
131
 
127
132
 
@@ -76,7 +76,7 @@ def task_schedule(cli_client):
76
76
  "from django.utils.timezone import now;"
77
77
  "from datetime import timedelta;"
78
78
  "from pulpcore.app.models import TaskSchedule;"
79
- "dispatch_interval = timedelta(seconds=4);"
79
+ "dispatch_interval = timedelta(seconds=5);"
80
80
  "next_dispatch = now() + dispatch_interval;"
81
81
  "TaskSchedule("
82
82
  f" name='{name}', task_name='{task_name}', "
@@ -100,8 +100,9 @@ def task_schedule(cli_client):
100
100
  def test_task_schedule(task_schedule, task_schedules_api_client):
101
101
  """Test that a worker will schedule a task roughly at a given time."""
102
102
  # Worker TTL is configured to 30s, therefore they will have a heartbeat each 10s (6 bpm). The
103
- # task is scheduled 4s in the future to give us time to invesitgate the state before and after.
104
- # 15s later we can be sure it was scheduled (as long as at least one worker is running).
103
+ # task is scheduled 5s in the future to give us time to invesitgate the state before and after.
104
+ # 16s later we can be sure it was scheduled (as long as at least one worker is running).
105
+ # Waiting for 18s to give some more slack.
105
106
 
106
107
  result = task_schedules_api_client.list(name=task_schedule["name"])
107
108
  assert result.count == 1
@@ -110,7 +111,7 @@ def test_task_schedule(task_schedule, task_schedules_api_client):
110
111
  assert ts.task_name == task_schedule["task_name"]
111
112
  assert ts.last_task is None
112
113
  # At least a worker heartbeat is needed
113
- for i in range(15):
114
+ for i in range(18):
114
115
  sleep(1)
115
116
  ts = task_schedules_api_client.read(task_schedule_href=result.results[0].pulp_href)
116
117
  if ts.last_task is not None:
@@ -1,20 +1,21 @@
1
1
  from django.test import TestCase
2
+ from asgiref.sync import sync_to_async
2
3
 
3
4
  from pulpcore.download.factory import DownloaderFactory
4
5
  from pulpcore.plugin.models import Remote
5
6
 
6
7
 
7
8
  class DownloaderFactoryHeadersTestCase(TestCase):
8
- def test_user_agent_header(self):
9
- remote = Remote.objects.create(url="http://example.org/", name="foo")
9
+ async def test_user_agent_header(self):
10
+ remote = await sync_to_async(Remote.objects.create)(url="http://example.org/", name="foo")
10
11
  factory = DownloaderFactory(remote)
11
12
  downloader = factory.build(remote.url)
12
13
  default_user_agent = DownloaderFactory.user_agent()
13
14
  self.assertEqual(downloader.session.headers["User-Agent"], default_user_agent)
14
- remote.delete()
15
+ await sync_to_async(remote.delete)()
15
16
 
16
- def test_custom_user_agent_header(self):
17
- remote = Remote.objects.create(
17
+ async def test_custom_user_agent_header(self):
18
+ remote = await sync_to_async(Remote.objects.create)(
18
19
  url="http://example.org/", headers=[{"User-Agent": "foo"}], name="foo"
19
20
  )
20
21
  factory = DownloaderFactory(remote)
@@ -22,12 +23,13 @@ class DownloaderFactoryHeadersTestCase(TestCase):
22
23
  default_user_agent = DownloaderFactory.user_agent()
23
24
  expected_user_agent = f"{default_user_agent}, foo"
24
25
  self.assertEqual(downloader.session.headers["User-Agent"], expected_user_agent)
25
- remote.delete()
26
+ await sync_to_async(remote.delete)()
26
27
 
27
- def test_custom_headers(self):
28
- remote = Remote.objects.create(
28
+ async def test_custom_headers(self):
29
+ remote = await sync_to_async(Remote.objects.create)(
29
30
  url="http://example.org/", headers=[{"Connection": "keep-alive"}], name="foo"
30
31
  )
31
32
  factory = DownloaderFactory(remote)
32
33
  downloader = factory.build(remote.url)
33
34
  self.assertEqual(downloader.session.headers["Connection"], "keep-alive")
35
+ await sync_to_async(remote.delete)()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pulpcore
3
- Version: 3.22.30
3
+ Version: 3.22.32
4
4
  Summary: Pulp Django Application and Related Modules
5
5
  Home-page: https://pulpproject.org
6
6
  Author: Pulp Team
@@ -1,6 +1,6 @@
1
1
  aiodns<=3.1.1,>=3.0
2
2
  aiofiles<23.3.0,>=22.1
3
- aiohttp<3.9.2,>=3.8.1
3
+ aiohttp<3.10.11,>=3.8.1
4
4
  asyncio-throttle<=1.0.2,>=1.0
5
5
  backoff<2.2.2,>=2.1.2
6
6
  click<=8.1.7,>=8.1.0
@@ -30,7 +30,7 @@ setuptools<69.1.0,>=39.2
30
30
  tablib<3.6.0
31
31
  url-normalize<=1.4.3,>=1.4.3
32
32
  whitenoise<=6.7.0,>=5.0
33
- yarl<1.9.5,>=1.8
33
+ yarl<1.15.3,>=1.8
34
34
 
35
35
  [:python_version < "3.11"]
36
36
  async-timeout<4.0.4,>=4.0.3
@@ -1,6 +1,6 @@
1
1
  aiodns>=3.0,<=3.1.1
2
2
  aiofiles>=22.1,<23.3.0
3
- aiohttp>=3.8.1,<3.9.2
3
+ aiohttp>=3.8.1,<3.10.11
4
4
  asyncio-throttle>=1.0,<=1.0.2
5
5
  async-timeout>=4.0.3,<4.0.4;python_version<"3.11"
6
6
  backoff>=2.1.2,<2.2.2
@@ -31,4 +31,4 @@ setuptools>=39.2,<69.1.0
31
31
  tablib<3.6.0
32
32
  url-normalize>=1.4.3,<=1.4.3
33
33
  whitenoise>=5.0,<=6.7.0
34
- yarl>=1.8,<1.9.5
34
+ yarl>=1.8,<1.15.3
@@ -8,7 +8,7 @@ with open("requirements.txt") as requirements:
8
8
 
9
9
  setup(
10
10
  name="pulpcore",
11
- version="3.22.30",
11
+ version="3.22.32",
12
12
  description="Pulp Django Application and Related Modules",
13
13
  long_description=long_description,
14
14
  long_description_content_type="text/markdown",
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes