pulp-python 3.24.2__tar.gz → 3.25.1__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 (93) hide show
  1. {pulp_python-3.24.2 → pulp_python-3.25.1}/CHANGES.md +38 -0
  2. {pulp_python-3.24.2 → pulp_python-3.25.1}/PKG-INFO +1 -1
  3. {pulp_python-3.24.2 → pulp_python-3.25.1}/pulp_python/app/__init__.py +1 -1
  4. {pulp_python-3.24.2 → pulp_python-3.25.1}/pulp_python/app/utils.py +6 -3
  5. {pulp_python-3.24.2 → pulp_python-3.25.1}/pulp_python/app/viewsets.py +2 -2
  6. {pulp_python-3.24.2 → pulp_python-3.25.1}/pulp_python/tests/functional/api/test_crud_content_unit.py +3 -1
  7. {pulp_python-3.24.2 → pulp_python-3.25.1}/pulp_python/tests/functional/api/test_pypi_apis.py +3 -1
  8. {pulp_python-3.24.2 → pulp_python-3.25.1}/pulp_python/tests/functional/api/test_sync.py +3 -1
  9. {pulp_python-3.24.2 → pulp_python-3.25.1}/pulp_python/tests/functional/api/test_upload.py +5 -2
  10. {pulp_python-3.24.2 → pulp_python-3.25.1}/pulp_python/tests/functional/utils.py +3 -2
  11. {pulp_python-3.24.2 → pulp_python-3.25.1}/pulp_python.egg-info/PKG-INFO +1 -1
  12. {pulp_python-3.24.2 → pulp_python-3.25.1}/pyproject.toml +2 -2
  13. {pulp_python-3.24.2 → pulp_python-3.25.1}/COMMITMENT +0 -0
  14. {pulp_python-3.24.2 → pulp_python-3.25.1}/COPYRIGHT +0 -0
  15. {pulp_python-3.24.2 → pulp_python-3.25.1}/LICENSE +0 -0
  16. {pulp_python-3.24.2 → pulp_python-3.25.1}/MANIFEST.in +0 -0
  17. {pulp_python-3.24.2 → pulp_python-3.25.1}/README.md +0 -0
  18. {pulp_python-3.24.2 → pulp_python-3.25.1}/functest_requirements.txt +0 -0
  19. {pulp_python-3.24.2 → pulp_python-3.25.1}/pulp_python/__init__.py +0 -0
  20. {pulp_python-3.24.2 → pulp_python-3.25.1}/pulp_python/app/global_access_conditions.py +0 -0
  21. {pulp_python-3.24.2 → pulp_python-3.25.1}/pulp_python/app/management/__init__.py +0 -0
  22. {pulp_python-3.24.2 → pulp_python-3.25.1}/pulp_python/app/management/commands/__init__.py +0 -0
  23. {pulp_python-3.24.2 → pulp_python-3.25.1}/pulp_python/app/management/commands/repair-python-metadata.py +0 -0
  24. {pulp_python-3.24.2 → pulp_python-3.25.1}/pulp_python/app/migrations/0001_initial.py +0 -0
  25. {pulp_python-3.24.2 → pulp_python-3.25.1}/pulp_python/app/migrations/0001_squashed_0010_update_json_field.py +0 -0
  26. {pulp_python-3.24.2 → pulp_python-3.25.1}/pulp_python/app/migrations/0002_pythonpackagecontent_python_version.py +0 -0
  27. {pulp_python-3.24.2 → pulp_python-3.25.1}/pulp_python/app/migrations/0003_new_sync_filters.py +0 -0
  28. {pulp_python-3.24.2 → pulp_python-3.25.1}/pulp_python/app/migrations/0004_DATA_swap_distribution_model.py +0 -0
  29. {pulp_python-3.24.2 → pulp_python-3.25.1}/pulp_python/app/migrations/0005_pythonpackagecontent_sha256.py +0 -0
  30. {pulp_python-3.24.2 → pulp_python-3.25.1}/pulp_python/app/migrations/0006_pythonrepository_autopublish.py +0 -0
  31. {pulp_python-3.24.2 → pulp_python-3.25.1}/pulp_python/app/migrations/0007_pythonpackagecontent_mv-2-1.py +0 -0
  32. {pulp_python-3.24.2 → pulp_python-3.25.1}/pulp_python/app/migrations/0008_pythonpackagecontent_unique_sha256.py +0 -0
  33. {pulp_python-3.24.2 → pulp_python-3.25.1}/pulp_python/app/migrations/0009_pythondistribution_allow_uploads.py +0 -0
  34. {pulp_python-3.24.2 → pulp_python-3.25.1}/pulp_python/app/migrations/0010_update_json_field.py +0 -0
  35. {pulp_python-3.24.2 → pulp_python-3.25.1}/pulp_python/app/migrations/0011_alter_pythondistribution_distribution_ptr_and_more.py +0 -0
  36. {pulp_python-3.24.2 → pulp_python-3.25.1}/pulp_python/app/migrations/0012_add_domain.py +0 -0
  37. {pulp_python-3.24.2 → pulp_python-3.25.1}/pulp_python/app/migrations/0013_add_rbac_permissions.py +0 -0
  38. {pulp_python-3.24.2 → pulp_python-3.25.1}/pulp_python/app/migrations/0014_pythonpackagecontent_dynamic_and_more.py +0 -0
  39. {pulp_python-3.24.2 → pulp_python-3.25.1}/pulp_python/app/migrations/0015_alter_pythonpackagecontent_options.py +0 -0
  40. {pulp_python-3.24.2 → pulp_python-3.25.1}/pulp_python/app/migrations/0016_pythonpackagecontent_metadata_sha256.py +0 -0
  41. {pulp_python-3.24.2 → pulp_python-3.25.1}/pulp_python/app/migrations/0017_pythonpackagecontent_size.py +0 -0
  42. {pulp_python-3.24.2 → pulp_python-3.25.1}/pulp_python/app/migrations/0018_packageprovenance.py +0 -0
  43. {pulp_python-3.24.2 → pulp_python-3.25.1}/pulp_python/app/migrations/0019_create_missing_metadata_artifacts.py +0 -0
  44. {pulp_python-3.24.2 → pulp_python-3.25.1}/pulp_python/app/migrations/__init__.py +0 -0
  45. {pulp_python-3.24.2 → pulp_python-3.25.1}/pulp_python/app/modelresource.py +0 -0
  46. {pulp_python-3.24.2 → pulp_python-3.25.1}/pulp_python/app/models.py +0 -0
  47. {pulp_python-3.24.2 → pulp_python-3.25.1}/pulp_python/app/provenance.py +0 -0
  48. {pulp_python-3.24.2 → pulp_python-3.25.1}/pulp_python/app/pypi/__init__.py +0 -0
  49. {pulp_python-3.24.2 → pulp_python-3.25.1}/pulp_python/app/pypi/serializers.py +0 -0
  50. {pulp_python-3.24.2 → pulp_python-3.25.1}/pulp_python/app/pypi/views.py +0 -0
  51. {pulp_python-3.24.2 → pulp_python-3.25.1}/pulp_python/app/replica.py +0 -0
  52. {pulp_python-3.24.2 → pulp_python-3.25.1}/pulp_python/app/serializers.py +0 -0
  53. {pulp_python-3.24.2 → pulp_python-3.25.1}/pulp_python/app/settings.py +0 -0
  54. {pulp_python-3.24.2 → pulp_python-3.25.1}/pulp_python/app/tasks/__init__.py +0 -0
  55. {pulp_python-3.24.2 → pulp_python-3.25.1}/pulp_python/app/tasks/publish.py +0 -0
  56. {pulp_python-3.24.2 → pulp_python-3.25.1}/pulp_python/app/tasks/repair.py +0 -0
  57. {pulp_python-3.24.2 → pulp_python-3.25.1}/pulp_python/app/tasks/sync.py +0 -0
  58. {pulp_python-3.24.2 → pulp_python-3.25.1}/pulp_python/app/tasks/upload.py +0 -0
  59. {pulp_python-3.24.2 → pulp_python-3.25.1}/pulp_python/app/tasks/vulnerability_report.py +0 -0
  60. {pulp_python-3.24.2 → pulp_python-3.25.1}/pulp_python/app/urls.py +0 -0
  61. {pulp_python-3.24.2 → pulp_python-3.25.1}/pulp_python/app/webserver_snippets/__init__.py +0 -0
  62. {pulp_python-3.24.2 → pulp_python-3.25.1}/pulp_python/app/webserver_snippets/apache.conf +0 -0
  63. {pulp_python-3.24.2 → pulp_python-3.25.1}/pulp_python/app/webserver_snippets/nginx.conf +0 -0
  64. {pulp_python-3.24.2 → pulp_python-3.25.1}/pulp_python/pytest_plugin.py +0 -0
  65. {pulp_python-3.24.2 → pulp_python-3.25.1}/pulp_python/tests/__init__.py +0 -0
  66. {pulp_python-3.24.2 → pulp_python-3.25.1}/pulp_python/tests/functional/__init__.py +0 -0
  67. {pulp_python-3.24.2 → pulp_python-3.25.1}/pulp_python/tests/functional/api/__init__.py +0 -0
  68. {pulp_python-3.24.2 → pulp_python-3.25.1}/pulp_python/tests/functional/api/test_attestations.py +0 -0
  69. {pulp_python-3.24.2 → pulp_python-3.25.1}/pulp_python/tests/functional/api/test_auto_publish.py +0 -0
  70. {pulp_python-3.24.2 → pulp_python-3.25.1}/pulp_python/tests/functional/api/test_consume_content.py +0 -0
  71. {pulp_python-3.24.2 → pulp_python-3.25.1}/pulp_python/tests/functional/api/test_crud_publications.py +0 -0
  72. {pulp_python-3.24.2 → pulp_python-3.25.1}/pulp_python/tests/functional/api/test_crud_remotes.py +0 -0
  73. {pulp_python-3.24.2 → pulp_python-3.25.1}/pulp_python/tests/functional/api/test_domains.py +0 -0
  74. {pulp_python-3.24.2 → pulp_python-3.25.1}/pulp_python/tests/functional/api/test_download_content.py +0 -0
  75. {pulp_python-3.24.2 → pulp_python-3.25.1}/pulp_python/tests/functional/api/test_export_import.py +0 -0
  76. {pulp_python-3.24.2 → pulp_python-3.25.1}/pulp_python/tests/functional/api/test_full_mirror.py +0 -0
  77. {pulp_python-3.24.2 → pulp_python-3.25.1}/pulp_python/tests/functional/api/test_pypi_simple_api.py +0 -0
  78. {pulp_python-3.24.2 → pulp_python-3.25.1}/pulp_python/tests/functional/api/test_rbac.py +0 -0
  79. {pulp_python-3.24.2 → pulp_python-3.25.1}/pulp_python/tests/functional/api/test_repair.py +0 -0
  80. {pulp_python-3.24.2 → pulp_python-3.25.1}/pulp_python/tests/functional/api/test_vulnerability_report.py +0 -0
  81. {pulp_python-3.24.2 → pulp_python-3.25.1}/pulp_python/tests/functional/assets/shelf-reader-0.1.tar.gz.publish.attestation +0 -0
  82. {pulp_python-3.24.2 → pulp_python-3.25.1}/pulp_python/tests/functional/assets/shelf_reader-0.1-py2-none-any.whl.publish.attestation +0 -0
  83. {pulp_python-3.24.2 → pulp_python-3.25.1}/pulp_python/tests/functional/constants.py +0 -0
  84. {pulp_python-3.24.2 → pulp_python-3.25.1}/pulp_python/tests/unit/__init__.py +0 -0
  85. {pulp_python-3.24.2 → pulp_python-3.25.1}/pulp_python/tests/unit/test_models.py +0 -0
  86. {pulp_python-3.24.2 → pulp_python-3.25.1}/pulp_python.egg-info/SOURCES.txt +0 -0
  87. {pulp_python-3.24.2 → pulp_python-3.25.1}/pulp_python.egg-info/dependency_links.txt +0 -0
  88. {pulp_python-3.24.2 → pulp_python-3.25.1}/pulp_python.egg-info/entry_points.txt +0 -0
  89. {pulp_python-3.24.2 → pulp_python-3.25.1}/pulp_python.egg-info/requires.txt +0 -0
  90. {pulp_python-3.24.2 → pulp_python-3.25.1}/pulp_python.egg-info/top_level.txt +0 -0
  91. {pulp_python-3.24.2 → pulp_python-3.25.1}/setup.cfg +0 -0
  92. {pulp_python-3.24.2 → pulp_python-3.25.1}/test_requirements.txt +0 -0
  93. {pulp_python-3.24.2 → pulp_python-3.25.1}/unittest_requirements.txt +0 -0
@@ -8,6 +8,35 @@
8
8
 
9
9
  [//]: # (towncrier release notes start)
10
10
 
11
+ ## 3.25.1 (2026-02-16) {: #3.25.1 }
12
+
13
+ #### Bugfixes {: #3.25.1-bugfix }
14
+
15
+ - Fixed edge case where metadata file did not match wheel metadata.
16
+ [#1101](https://github.com/pulp/pulp_python/issues/1101)
17
+
18
+ ---
19
+
20
+ ## 3.25.0 (2026-02-10) {: #3.25.0 }
21
+
22
+ #### Features {: #3.25.0-feature }
23
+
24
+ - Added the `contains` filter to `name` and `author` fields for the Content endpoint.
25
+ [#1096](https://github.com/pulp/pulp_python/issues/1096)
26
+
27
+ #### Bugfixes {: #3.25.0-bugfix }
28
+
29
+ - Fixed pull-through caching failing for packages with bad names.
30
+ [#1040](https://github.com/pulp/pulp_python/issues/1040)
31
+ - Changed migration 19 to reset package's metadata_sha256 to null. This field will be fixed in a later release.
32
+ [#1071](https://github.com/pulp/pulp_python/issues/1071)
33
+ - Fixed pull-through PEP 658 metadata not being served correctly for certain tools.
34
+ [#1083](https://github.com/pulp/pulp_python/issues/1083)
35
+ - Fixed pull-through PEP 658 metadata not being saved correctly with the package.
36
+ [#1087](https://github.com/pulp/pulp_python/issues/1087)
37
+
38
+ ---
39
+
11
40
  ## 3.24.2 (2026-02-06) {: #3.24.2 }
12
41
 
13
42
  #### Bugfixes {: #3.24.2-bugfix }
@@ -46,6 +75,15 @@
46
75
 
47
76
  ---
48
77
 
78
+ ## 3.23.1 (2026-01-20) {: #3.23.1 }
79
+
80
+ #### Bugfixes {: #3.23.1-bugfix }
81
+
82
+ - Fixed migration error in 0019_create_missing_metadata_artifacts.
83
+ [#1067](https://github.com/pulp/pulp_python/issues/1067)
84
+
85
+ ---
86
+
49
87
  ## 3.23.0 (2026-01-06) {: #3.23.0 }
50
88
 
51
89
  #### Features {: #3.23.0-feature }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pulp-python
3
- Version: 3.24.2
3
+ Version: 3.25.1
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
@@ -10,7 +10,7 @@ class PulpPythonPluginAppConfig(PulpPluginAppConfig):
10
10
 
11
11
  name = "pulp_python.app"
12
12
  label = "python"
13
- version = "3.24.2"
13
+ version = "3.25.1"
14
14
  python_package_name = "pulp-python"
15
15
  domain_compatible = True
16
16
 
@@ -220,9 +220,12 @@ def extract_wheel_metadata(filename: str) -> bytes | None:
220
220
  return None
221
221
  try:
222
222
  with zipfile.ZipFile(filename, "r") as f:
223
- for file_path in f.namelist():
224
- if file_path.endswith(".dist-info/METADATA"):
225
- return f.read(file_path)
223
+ metadata_paths = [p for p in f.namelist() if p.endswith("METADATA")]
224
+ sorted_paths = sorted(metadata_paths, key=lambda s: s.count("/"))
225
+ for metadata_path in sorted_paths:
226
+ file = f.read(metadata_path)
227
+ if b"Metadata-Version" in file:
228
+ return file
226
229
  except (zipfile.BadZipFile, KeyError, OSError) as e:
227
230
  log.warning(f"Failed to extract metadata file from {filename}: {e}")
228
231
  return None
@@ -337,8 +337,8 @@ class PythonPackageContentFilter(core_viewsets.ContentFilter):
337
337
  class Meta:
338
338
  model = python_models.PythonPackageContent
339
339
  fields = {
340
- "name": ["exact", "in"],
341
- "author": ["exact", "in"],
340
+ "name": ["exact", "in", "contains"],
341
+ "author": ["exact", "in", "contains"],
342
342
  "packagetype": ["exact", "in"],
343
343
  "requires_python": ["exact", "in", "contains"],
344
344
  "filename": ["exact", "in", "contains"],
@@ -200,4 +200,6 @@ def test_package_creation_with_metadata(
200
200
  distro = python_distribution_factory(repository=python_repo)
201
201
 
202
202
  # Test that metadata is accessible
203
- ensure_metadata(pulp_content_url, distro.base_path, PYTHON_WHEEL_FILENAME)
203
+ ensure_metadata(
204
+ pulp_content_url, distro.base_path, PYTHON_WHEEL_FILENAME, "shelf-reader", "0.1"
205
+ )
@@ -165,7 +165,9 @@ def test_package_upload_with_metadata(
165
165
  assert summary.added["python.python"]["count"] == 1
166
166
 
167
167
  # Test that metadata is accessible
168
- ensure_metadata(pulp_content_url, distro.base_path, PYTHON_WHEEL_FILENAME)
168
+ ensure_metadata(
169
+ pulp_content_url, distro.base_path, PYTHON_WHEEL_FILENAME, "shelf-reader", "0.1"
170
+ )
169
171
 
170
172
 
171
173
  @pytest.mark.parallel
@@ -354,4 +354,6 @@ def test_package_sync_with_metadata(
354
354
  distro = python_distribution_factory(repository=repo)
355
355
 
356
356
  # Test that metadata is accessible
357
- ensure_metadata(pulp_content_url, distro.base_path, "pytz-2023.2-py2.py3-none-any.whl")
357
+ ensure_metadata(
358
+ pulp_content_url, distro.base_path, "pytz-2023.2-py2.py3-none-any.whl", "pytz", "2023.2"
359
+ )
@@ -3,6 +3,7 @@ import requests
3
3
  from pulp_python.tests.functional.constants import (
4
4
  PYTHON_EGG_FILENAME,
5
5
  PYTHON_EGG_URL,
6
+ PYTHON_FIXTURES_URL,
6
7
  PYTHON_WHEEL_FILENAME,
7
8
  PYTHON_WHEEL_URL,
8
9
  PYTHON_EGG_SHA256,
@@ -61,7 +62,9 @@ def test_synchronous_package_upload_with_metadata(
61
62
  """
62
63
  Test that the synchronous upload of a Python wheel package creates a metadata artifact.
63
64
  """
64
- python_file = download_python_file(PYTHON_WHEEL_FILENAME, PYTHON_WHEEL_URL)
65
+ wheel_filename = "setuptools-80.9.0-py3-none-any.whl"
66
+ wheel_url = urljoin(urljoin(PYTHON_FIXTURES_URL, "packages/"), wheel_filename)
67
+ python_file = download_python_file(wheel_filename, wheel_url)
65
68
  content_body = {"file": python_file}
66
69
  content = python_bindings.ContentPackagesApi.upload(**content_body)
67
70
 
@@ -70,7 +73,7 @@ def test_synchronous_package_upload_with_metadata(
70
73
  distro = python_distribution_factory(repository=python_repo)
71
74
 
72
75
  # Test that metadata is accessible
73
- ensure_metadata(pulp_content_url, distro.base_path, PYTHON_WHEEL_FILENAME)
76
+ ensure_metadata(pulp_content_url, distro.base_path, wheel_filename, "setuptools", "80.9.0")
74
77
 
75
78
 
76
79
  @pytest.mark.parallel
@@ -123,7 +123,7 @@ def ensure_simple(
123
123
  return len(msgs) == 0, msgs
124
124
 
125
125
 
126
- def ensure_metadata(pulp_content_url, distro_base_path, filename):
126
+ def ensure_metadata(pulp_content_url, distro_base_path, filename, name, version):
127
127
  """
128
128
  Tests that metadata is accessible for a given wheel package filename.
129
129
  """
@@ -132,4 +132,5 @@ def ensure_metadata(pulp_content_url, distro_base_path, filename):
132
132
  metadata_response = requests.get(metadata_url)
133
133
  assert metadata_response.status_code == 200
134
134
  assert len(metadata_response.content) > 0
135
- assert "Name: " in metadata_response.text
135
+ assert f"Name: {name}" in metadata_response.text
136
+ assert f"Version: {version}" in metadata_response.text
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pulp-python
3
- Version: 3.24.2
3
+ Version: 3.25.1
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.24.2"
10
+ version = "3.25.1"
11
11
  description = "pulp-python plugin for the Pulp Project"
12
12
  readme = "README.md"
13
13
  authors = [
@@ -77,7 +77,7 @@ ignore = [
77
77
  [tool.bumpversion]
78
78
  # This section is managed by the plugin template. Do not edit manually.
79
79
 
80
- current_version = "3.24.2"
80
+ current_version = "3.25.1"
81
81
  commit = false
82
82
  tag = false
83
83
  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