pulp-python 3.31.1__tar.gz → 3.31.2__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 (98) hide show
  1. {pulp_python-3.31.1 → pulp_python-3.31.2}/CHANGES.md +8 -0
  2. {pulp_python-3.31.1 → pulp_python-3.31.2}/PKG-INFO +1 -1
  3. {pulp_python-3.31.1 → pulp_python-3.31.2}/pulp_python/app/__init__.py +1 -1
  4. {pulp_python-3.31.1 → pulp_python-3.31.2}/pulp_python/app/tasks/sync.py +1 -1
  5. {pulp_python-3.31.1 → pulp_python-3.31.2}/pulp_python/tests/functional/api/test_attestations.py +48 -0
  6. {pulp_python-3.31.1 → pulp_python-3.31.2}/pulp_python/tests/functional/api/test_crud_content_unit.py +0 -2
  7. {pulp_python-3.31.1 → pulp_python-3.31.2}/pulp_python.egg-info/PKG-INFO +1 -1
  8. {pulp_python-3.31.1 → pulp_python-3.31.2}/pyproject.toml +2 -2
  9. {pulp_python-3.31.1 → pulp_python-3.31.2}/COMMITMENT +0 -0
  10. {pulp_python-3.31.1 → pulp_python-3.31.2}/COPYRIGHT +0 -0
  11. {pulp_python-3.31.1 → pulp_python-3.31.2}/LICENSE +0 -0
  12. {pulp_python-3.31.1 → pulp_python-3.31.2}/MANIFEST.in +0 -0
  13. {pulp_python-3.31.1 → pulp_python-3.31.2}/README.md +0 -0
  14. {pulp_python-3.31.1 → pulp_python-3.31.2}/functest_requirements.txt +0 -0
  15. {pulp_python-3.31.1 → pulp_python-3.31.2}/pulp_python/__init__.py +0 -0
  16. {pulp_python-3.31.1 → pulp_python-3.31.2}/pulp_python/app/exceptions.py +0 -0
  17. {pulp_python-3.31.1 → pulp_python-3.31.2}/pulp_python/app/global_access_conditions.py +0 -0
  18. {pulp_python-3.31.1 → pulp_python-3.31.2}/pulp_python/app/management/__init__.py +0 -0
  19. {pulp_python-3.31.1 → pulp_python-3.31.2}/pulp_python/app/management/commands/__init__.py +0 -0
  20. {pulp_python-3.31.1 → pulp_python-3.31.2}/pulp_python/app/management/commands/repair-python-metadata.py +0 -0
  21. {pulp_python-3.31.1 → pulp_python-3.31.2}/pulp_python/app/migrations/0001_initial.py +0 -0
  22. {pulp_python-3.31.1 → pulp_python-3.31.2}/pulp_python/app/migrations/0001_squashed_0010_update_json_field.py +0 -0
  23. {pulp_python-3.31.1 → pulp_python-3.31.2}/pulp_python/app/migrations/0002_pythonpackagecontent_python_version.py +0 -0
  24. {pulp_python-3.31.1 → pulp_python-3.31.2}/pulp_python/app/migrations/0003_new_sync_filters.py +0 -0
  25. {pulp_python-3.31.1 → pulp_python-3.31.2}/pulp_python/app/migrations/0004_DATA_swap_distribution_model.py +0 -0
  26. {pulp_python-3.31.1 → pulp_python-3.31.2}/pulp_python/app/migrations/0005_pythonpackagecontent_sha256.py +0 -0
  27. {pulp_python-3.31.1 → pulp_python-3.31.2}/pulp_python/app/migrations/0006_pythonrepository_autopublish.py +0 -0
  28. {pulp_python-3.31.1 → pulp_python-3.31.2}/pulp_python/app/migrations/0007_pythonpackagecontent_mv-2-1.py +0 -0
  29. {pulp_python-3.31.1 → pulp_python-3.31.2}/pulp_python/app/migrations/0008_pythonpackagecontent_unique_sha256.py +0 -0
  30. {pulp_python-3.31.1 → pulp_python-3.31.2}/pulp_python/app/migrations/0009_pythondistribution_allow_uploads.py +0 -0
  31. {pulp_python-3.31.1 → pulp_python-3.31.2}/pulp_python/app/migrations/0010_update_json_field.py +0 -0
  32. {pulp_python-3.31.1 → pulp_python-3.31.2}/pulp_python/app/migrations/0011_alter_pythondistribution_distribution_ptr_and_more.py +0 -0
  33. {pulp_python-3.31.1 → pulp_python-3.31.2}/pulp_python/app/migrations/0012_add_domain.py +0 -0
  34. {pulp_python-3.31.1 → pulp_python-3.31.2}/pulp_python/app/migrations/0013_add_rbac_permissions.py +0 -0
  35. {pulp_python-3.31.1 → pulp_python-3.31.2}/pulp_python/app/migrations/0014_pythonpackagecontent_dynamic_and_more.py +0 -0
  36. {pulp_python-3.31.1 → pulp_python-3.31.2}/pulp_python/app/migrations/0015_alter_pythonpackagecontent_options.py +0 -0
  37. {pulp_python-3.31.1 → pulp_python-3.31.2}/pulp_python/app/migrations/0016_pythonpackagecontent_metadata_sha256.py +0 -0
  38. {pulp_python-3.31.1 → pulp_python-3.31.2}/pulp_python/app/migrations/0017_pythonpackagecontent_size.py +0 -0
  39. {pulp_python-3.31.1 → pulp_python-3.31.2}/pulp_python/app/migrations/0018_packageprovenance.py +0 -0
  40. {pulp_python-3.31.1 → pulp_python-3.31.2}/pulp_python/app/migrations/0019_create_missing_metadata_artifacts.py +0 -0
  41. {pulp_python-3.31.1 → pulp_python-3.31.2}/pulp_python/app/migrations/0020_pythonpackagecontent_name_normalized.py +0 -0
  42. {pulp_python-3.31.1 → pulp_python-3.31.2}/pulp_python/app/migrations/0021_pythonrepository_upload_duplicate_filenames.py +0 -0
  43. {pulp_python-3.31.1 → pulp_python-3.31.2}/pulp_python/app/migrations/0022_pythonblocklistentry.py +0 -0
  44. {pulp_python-3.31.1 → pulp_python-3.31.2}/pulp_python/app/migrations/__init__.py +0 -0
  45. {pulp_python-3.31.1 → pulp_python-3.31.2}/pulp_python/app/modelresource.py +0 -0
  46. {pulp_python-3.31.1 → pulp_python-3.31.2}/pulp_python/app/models.py +0 -0
  47. {pulp_python-3.31.1 → pulp_python-3.31.2}/pulp_python/app/provenance.py +0 -0
  48. {pulp_python-3.31.1 → pulp_python-3.31.2}/pulp_python/app/pypi/__init__.py +0 -0
  49. {pulp_python-3.31.1 → pulp_python-3.31.2}/pulp_python/app/pypi/serializers.py +0 -0
  50. {pulp_python-3.31.1 → pulp_python-3.31.2}/pulp_python/app/pypi/views.py +0 -0
  51. {pulp_python-3.31.1 → pulp_python-3.31.2}/pulp_python/app/replica.py +0 -0
  52. {pulp_python-3.31.1 → pulp_python-3.31.2}/pulp_python/app/serializers.py +0 -0
  53. {pulp_python-3.31.1 → pulp_python-3.31.2}/pulp_python/app/settings.py +0 -0
  54. {pulp_python-3.31.1 → pulp_python-3.31.2}/pulp_python/app/tasks/__init__.py +0 -0
  55. {pulp_python-3.31.1 → pulp_python-3.31.2}/pulp_python/app/tasks/publish.py +0 -0
  56. {pulp_python-3.31.1 → pulp_python-3.31.2}/pulp_python/app/tasks/repair.py +0 -0
  57. {pulp_python-3.31.1 → pulp_python-3.31.2}/pulp_python/app/tasks/upload.py +0 -0
  58. {pulp_python-3.31.1 → pulp_python-3.31.2}/pulp_python/app/tasks/vulnerability_report.py +0 -0
  59. {pulp_python-3.31.1 → pulp_python-3.31.2}/pulp_python/app/urls.py +0 -0
  60. {pulp_python-3.31.1 → pulp_python-3.31.2}/pulp_python/app/utils.py +0 -0
  61. {pulp_python-3.31.1 → pulp_python-3.31.2}/pulp_python/app/viewsets.py +0 -0
  62. {pulp_python-3.31.1 → pulp_python-3.31.2}/pulp_python/app/webserver_snippets/__init__.py +0 -0
  63. {pulp_python-3.31.1 → pulp_python-3.31.2}/pulp_python/app/webserver_snippets/apache.conf +0 -0
  64. {pulp_python-3.31.1 → pulp_python-3.31.2}/pulp_python/app/webserver_snippets/nginx.conf +0 -0
  65. {pulp_python-3.31.1 → pulp_python-3.31.2}/pulp_python/pytest_plugin.py +0 -0
  66. {pulp_python-3.31.1 → pulp_python-3.31.2}/pulp_python/tests/__init__.py +0 -0
  67. {pulp_python-3.31.1 → pulp_python-3.31.2}/pulp_python/tests/functional/__init__.py +0 -0
  68. {pulp_python-3.31.1 → pulp_python-3.31.2}/pulp_python/tests/functional/api/__init__.py +0 -0
  69. {pulp_python-3.31.1 → pulp_python-3.31.2}/pulp_python/tests/functional/api/test_auto_publish.py +0 -0
  70. {pulp_python-3.31.1 → pulp_python-3.31.2}/pulp_python/tests/functional/api/test_blocklist.py +0 -0
  71. {pulp_python-3.31.1 → pulp_python-3.31.2}/pulp_python/tests/functional/api/test_consume_content.py +0 -0
  72. {pulp_python-3.31.1 → pulp_python-3.31.2}/pulp_python/tests/functional/api/test_crud_publications.py +0 -0
  73. {pulp_python-3.31.1 → pulp_python-3.31.2}/pulp_python/tests/functional/api/test_crud_remotes.py +0 -0
  74. {pulp_python-3.31.1 → pulp_python-3.31.2}/pulp_python/tests/functional/api/test_domains.py +0 -0
  75. {pulp_python-3.31.1 → pulp_python-3.31.2}/pulp_python/tests/functional/api/test_download_content.py +0 -0
  76. {pulp_python-3.31.1 → pulp_python-3.31.2}/pulp_python/tests/functional/api/test_export_import.py +0 -0
  77. {pulp_python-3.31.1 → pulp_python-3.31.2}/pulp_python/tests/functional/api/test_full_mirror.py +0 -0
  78. {pulp_python-3.31.1 → pulp_python-3.31.2}/pulp_python/tests/functional/api/test_pypi_apis.py +0 -0
  79. {pulp_python-3.31.1 → pulp_python-3.31.2}/pulp_python/tests/functional/api/test_pypi_simple_api.py +0 -0
  80. {pulp_python-3.31.1 → pulp_python-3.31.2}/pulp_python/tests/functional/api/test_rbac.py +0 -0
  81. {pulp_python-3.31.1 → pulp_python-3.31.2}/pulp_python/tests/functional/api/test_repair.py +0 -0
  82. {pulp_python-3.31.1 → pulp_python-3.31.2}/pulp_python/tests/functional/api/test_sync.py +0 -0
  83. {pulp_python-3.31.1 → pulp_python-3.31.2}/pulp_python/tests/functional/api/test_upload.py +0 -0
  84. {pulp_python-3.31.1 → pulp_python-3.31.2}/pulp_python/tests/functional/api/test_vulnerability_report.py +0 -0
  85. {pulp_python-3.31.1 → pulp_python-3.31.2}/pulp_python/tests/functional/assets/shelf-reader-0.1.tar.gz.publish.attestation +0 -0
  86. {pulp_python-3.31.1 → pulp_python-3.31.2}/pulp_python/tests/functional/assets/shelf_reader-0.1-py2-none-any.whl.publish.attestation +0 -0
  87. {pulp_python-3.31.1 → pulp_python-3.31.2}/pulp_python/tests/functional/constants.py +0 -0
  88. {pulp_python-3.31.1 → pulp_python-3.31.2}/pulp_python/tests/functional/utils.py +0 -0
  89. {pulp_python-3.31.1 → pulp_python-3.31.2}/pulp_python/tests/unit/__init__.py +0 -0
  90. {pulp_python-3.31.1 → pulp_python-3.31.2}/pulp_python/tests/unit/test_models.py +0 -0
  91. {pulp_python-3.31.1 → pulp_python-3.31.2}/pulp_python.egg-info/SOURCES.txt +0 -0
  92. {pulp_python-3.31.1 → pulp_python-3.31.2}/pulp_python.egg-info/dependency_links.txt +0 -0
  93. {pulp_python-3.31.1 → pulp_python-3.31.2}/pulp_python.egg-info/entry_points.txt +0 -0
  94. {pulp_python-3.31.1 → pulp_python-3.31.2}/pulp_python.egg-info/requires.txt +0 -0
  95. {pulp_python-3.31.1 → pulp_python-3.31.2}/pulp_python.egg-info/top_level.txt +0 -0
  96. {pulp_python-3.31.1 → pulp_python-3.31.2}/setup.cfg +0 -0
  97. {pulp_python-3.31.1 → pulp_python-3.31.2}/test_requirements.txt +0 -0
  98. {pulp_python-3.31.1 → pulp_python-3.31.2}/unittest_requirements.txt +0 -0
@@ -8,6 +8,14 @@
8
8
 
9
9
  [//]: # (towncrier release notes start)
10
10
 
11
+ ## 3.31.2 (2026-07-15) {: #3.31.2 }
12
+
13
+ #### Bugfixes {: #3.31.2-bugfix }
14
+
15
+ - Fixed provenance sync failing when syncing Pulp-created attestations that use a `Pulp User` publisher.
16
+
17
+ ---
18
+
11
19
  ## 3.31.1 (2026-06-30) {: #3.31.1 }
12
20
 
13
21
  #### Bugfixes {: #3.31.1-bugfix }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pulp-python
3
- Version: 3.31.1
3
+ Version: 3.31.2
4
4
  Summary: pulp-python plugin for the Pulp Project
5
5
  Author-email: Pulp Team <pulp-list@redhat.com>
6
6
  Project-URL: Homepage, https://pulpproject.org
@@ -12,7 +12,7 @@ class PulpPythonPluginAppConfig(PulpPluginAppConfig):
12
12
 
13
13
  name = "pulp_python.app"
14
14
  label = "python"
15
- version = "3.31.1"
15
+ version = "3.31.2"
16
16
  python_package_name = "pulp-python"
17
17
  domain_compatible = True
18
18
 
@@ -9,7 +9,6 @@ from bandersnatch.master import Master
9
9
  from bandersnatch.mirror import Mirror
10
10
  from lxml.etree import LxmlError
11
11
  from packaging.requirements import Requirement
12
- from pypi_attestations import Provenance
13
12
  from pypi_simple import IndexPage
14
13
 
15
14
  from pulpcore.plugin.download import HttpDownloader
@@ -28,6 +27,7 @@ from pulp_python.app.models import (
28
27
  PythonPackageContent,
29
28
  PythonRemote,
30
29
  )
30
+ from pulp_python.app.provenance import Provenance
31
31
  from pulp_python.app.utils import PYPI_LAST_SERIAL, aget_remote_simple_page, parse_metadata
32
32
 
33
33
  logger = logging.getLogger(__name__)
@@ -154,6 +154,54 @@ def test_attestation_sync_upload(python_bindings, twine_package, download_python
154
154
  assert att_bundle["publisher"]["kind"] == "Pulp User"
155
155
 
156
156
 
157
+ @pytest.mark.parallel
158
+ def test_sync_pulp_created_provenance(
159
+ domain_factory,
160
+ python_bindings,
161
+ twine_package,
162
+ python_repo_factory,
163
+ python_distribution_factory,
164
+ python_remote_factory,
165
+ python_repo_with_sync,
166
+ python_content_summary,
167
+ monitor_task,
168
+ ):
169
+ """Test syncing provenance across domains from a Pulp upload."""
170
+ source_domain = domain_factory()
171
+ attestations = get_attestations(twine_package.provenance_url)
172
+ source_repo = python_repo_factory(pulp_domain=source_domain.name)
173
+ body = {
174
+ "relative_path": twine_package.filename,
175
+ "file_url": twine_package.url,
176
+ "attestations": json.dumps(attestations),
177
+ "repository": source_repo.pulp_href,
178
+ }
179
+ task = python_bindings.ContentPackagesApi.create(pulp_domain=source_domain.name, **body).task
180
+ monitor_task(task)
181
+
182
+ source_distro = python_distribution_factory(
183
+ repository=source_repo, pulp_domain=source_domain.name
184
+ )
185
+ dest_domain = domain_factory()
186
+ remote = python_remote_factory(
187
+ url=source_distro.base_url,
188
+ provenance=True,
189
+ includes=[f"twine=={twine_package.version}"],
190
+ pulp_domain=dest_domain.name,
191
+ )
192
+ dest_repo = python_repo_with_sync(remote=remote, pulp_domain=dest_domain.name)
193
+
194
+ summary = python_content_summary(repository_version=dest_repo.latest_version_href)
195
+ assert summary.present["python.provenance"]["count"] == 1
196
+
197
+ provs = python_bindings.ContentProvenanceApi.list(
198
+ repository_version=dest_repo.latest_version_href,
199
+ pulp_domain=dest_domain.name,
200
+ )
201
+ assert provs.count == 1
202
+ assert provs.results[0].provenance["attestation_bundles"][0]["publisher"]["kind"] == "Pulp User"
203
+
204
+
157
205
  def test_attestation_twine_upload(
158
206
  pulpcore_bindings,
159
207
  python_content_summary,
@@ -203,7 +203,6 @@ def test_package_creation_with_metadata(
203
203
  )
204
204
 
205
205
 
206
- @pytest.mark.parallel
207
206
  def test_disallow_package_substitution(
208
207
  monitor_task,
209
208
  python_bindings,
@@ -272,7 +271,6 @@ def test_disallow_package_substitution(
272
271
  assert repo.latest_version_href.endswith("/2/")
273
272
 
274
273
 
275
- @pytest.mark.parallel
276
274
  def test_package_substitution_allowed_by_default(
277
275
  monitor_task,
278
276
  python_bindings,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pulp-python
3
- Version: 3.31.1
3
+ Version: 3.31.2
4
4
  Summary: pulp-python plugin for the Pulp Project
5
5
  Author-email: Pulp Team <pulp-list@redhat.com>
6
6
  Project-URL: Homepage, https://pulpproject.org
@@ -7,7 +7,7 @@ build-backend = 'setuptools.build_meta'
7
7
 
8
8
  [project]
9
9
  name = "pulp-python"
10
- version = "3.31.1"
10
+ version = "3.31.2"
11
11
  description = "pulp-python plugin for the Pulp Project"
12
12
  readme = "README.md"
13
13
  authors = [
@@ -79,7 +79,7 @@ ignore = [
79
79
  [tool.bumpversion]
80
80
  # This section is managed by the plugin template. Do not edit manually.
81
81
 
82
- current_version = "3.31.1"
82
+ current_version = "3.31.2"
83
83
  commit = false
84
84
  tag = false
85
85
  parse = "(?P<major>\\d+)\\.(?P<minor>\\d+)\\.(?P<alpha>0a)?(?P<patch>\\d+)(\\.(?P<release>[a-z]+))?"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes