pulp-python 3.24.1__tar.gz → 3.25.0__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.1 → pulp_python-3.25.0}/CHANGES.md +42 -0
  2. {pulp_python-3.24.1 → pulp_python-3.25.0}/PKG-INFO +1 -1
  3. {pulp_python-3.24.1 → pulp_python-3.25.0}/pulp_python/app/__init__.py +1 -1
  4. {pulp_python-3.24.1 → pulp_python-3.25.0}/pulp_python/app/models.py +20 -2
  5. {pulp_python-3.24.1 → pulp_python-3.25.0}/pulp_python/app/utils.py +1 -1
  6. {pulp_python-3.24.1 → pulp_python-3.25.0}/pulp_python/app/viewsets.py +2 -2
  7. {pulp_python-3.24.1 → pulp_python-3.25.0}/pulp_python/tests/functional/api/test_full_mirror.py +104 -1
  8. {pulp_python-3.24.1 → pulp_python-3.25.0}/pulp_python.egg-info/PKG-INFO +1 -1
  9. {pulp_python-3.24.1 → pulp_python-3.25.0}/pyproject.toml +2 -2
  10. {pulp_python-3.24.1 → pulp_python-3.25.0}/COMMITMENT +0 -0
  11. {pulp_python-3.24.1 → pulp_python-3.25.0}/COPYRIGHT +0 -0
  12. {pulp_python-3.24.1 → pulp_python-3.25.0}/LICENSE +0 -0
  13. {pulp_python-3.24.1 → pulp_python-3.25.0}/MANIFEST.in +0 -0
  14. {pulp_python-3.24.1 → pulp_python-3.25.0}/README.md +0 -0
  15. {pulp_python-3.24.1 → pulp_python-3.25.0}/functest_requirements.txt +0 -0
  16. {pulp_python-3.24.1 → pulp_python-3.25.0}/pulp_python/__init__.py +0 -0
  17. {pulp_python-3.24.1 → pulp_python-3.25.0}/pulp_python/app/global_access_conditions.py +0 -0
  18. {pulp_python-3.24.1 → pulp_python-3.25.0}/pulp_python/app/management/__init__.py +0 -0
  19. {pulp_python-3.24.1 → pulp_python-3.25.0}/pulp_python/app/management/commands/__init__.py +0 -0
  20. {pulp_python-3.24.1 → pulp_python-3.25.0}/pulp_python/app/management/commands/repair-python-metadata.py +0 -0
  21. {pulp_python-3.24.1 → pulp_python-3.25.0}/pulp_python/app/migrations/0001_initial.py +0 -0
  22. {pulp_python-3.24.1 → pulp_python-3.25.0}/pulp_python/app/migrations/0001_squashed_0010_update_json_field.py +0 -0
  23. {pulp_python-3.24.1 → pulp_python-3.25.0}/pulp_python/app/migrations/0002_pythonpackagecontent_python_version.py +0 -0
  24. {pulp_python-3.24.1 → pulp_python-3.25.0}/pulp_python/app/migrations/0003_new_sync_filters.py +0 -0
  25. {pulp_python-3.24.1 → pulp_python-3.25.0}/pulp_python/app/migrations/0004_DATA_swap_distribution_model.py +0 -0
  26. {pulp_python-3.24.1 → pulp_python-3.25.0}/pulp_python/app/migrations/0005_pythonpackagecontent_sha256.py +0 -0
  27. {pulp_python-3.24.1 → pulp_python-3.25.0}/pulp_python/app/migrations/0006_pythonrepository_autopublish.py +0 -0
  28. {pulp_python-3.24.1 → pulp_python-3.25.0}/pulp_python/app/migrations/0007_pythonpackagecontent_mv-2-1.py +0 -0
  29. {pulp_python-3.24.1 → pulp_python-3.25.0}/pulp_python/app/migrations/0008_pythonpackagecontent_unique_sha256.py +0 -0
  30. {pulp_python-3.24.1 → pulp_python-3.25.0}/pulp_python/app/migrations/0009_pythondistribution_allow_uploads.py +0 -0
  31. {pulp_python-3.24.1 → pulp_python-3.25.0}/pulp_python/app/migrations/0010_update_json_field.py +0 -0
  32. {pulp_python-3.24.1 → pulp_python-3.25.0}/pulp_python/app/migrations/0011_alter_pythondistribution_distribution_ptr_and_more.py +0 -0
  33. {pulp_python-3.24.1 → pulp_python-3.25.0}/pulp_python/app/migrations/0012_add_domain.py +0 -0
  34. {pulp_python-3.24.1 → pulp_python-3.25.0}/pulp_python/app/migrations/0013_add_rbac_permissions.py +0 -0
  35. {pulp_python-3.24.1 → pulp_python-3.25.0}/pulp_python/app/migrations/0014_pythonpackagecontent_dynamic_and_more.py +0 -0
  36. {pulp_python-3.24.1 → pulp_python-3.25.0}/pulp_python/app/migrations/0015_alter_pythonpackagecontent_options.py +0 -0
  37. {pulp_python-3.24.1 → pulp_python-3.25.0}/pulp_python/app/migrations/0016_pythonpackagecontent_metadata_sha256.py +0 -0
  38. {pulp_python-3.24.1 → pulp_python-3.25.0}/pulp_python/app/migrations/0017_pythonpackagecontent_size.py +0 -0
  39. {pulp_python-3.24.1 → pulp_python-3.25.0}/pulp_python/app/migrations/0018_packageprovenance.py +0 -0
  40. {pulp_python-3.24.1 → pulp_python-3.25.0}/pulp_python/app/migrations/0019_create_missing_metadata_artifacts.py +0 -0
  41. {pulp_python-3.24.1 → pulp_python-3.25.0}/pulp_python/app/migrations/__init__.py +0 -0
  42. {pulp_python-3.24.1 → pulp_python-3.25.0}/pulp_python/app/modelresource.py +0 -0
  43. {pulp_python-3.24.1 → pulp_python-3.25.0}/pulp_python/app/provenance.py +0 -0
  44. {pulp_python-3.24.1 → pulp_python-3.25.0}/pulp_python/app/pypi/__init__.py +0 -0
  45. {pulp_python-3.24.1 → pulp_python-3.25.0}/pulp_python/app/pypi/serializers.py +0 -0
  46. {pulp_python-3.24.1 → pulp_python-3.25.0}/pulp_python/app/pypi/views.py +0 -0
  47. {pulp_python-3.24.1 → pulp_python-3.25.0}/pulp_python/app/replica.py +0 -0
  48. {pulp_python-3.24.1 → pulp_python-3.25.0}/pulp_python/app/serializers.py +0 -0
  49. {pulp_python-3.24.1 → pulp_python-3.25.0}/pulp_python/app/settings.py +0 -0
  50. {pulp_python-3.24.1 → pulp_python-3.25.0}/pulp_python/app/tasks/__init__.py +0 -0
  51. {pulp_python-3.24.1 → pulp_python-3.25.0}/pulp_python/app/tasks/publish.py +0 -0
  52. {pulp_python-3.24.1 → pulp_python-3.25.0}/pulp_python/app/tasks/repair.py +0 -0
  53. {pulp_python-3.24.1 → pulp_python-3.25.0}/pulp_python/app/tasks/sync.py +0 -0
  54. {pulp_python-3.24.1 → pulp_python-3.25.0}/pulp_python/app/tasks/upload.py +0 -0
  55. {pulp_python-3.24.1 → pulp_python-3.25.0}/pulp_python/app/tasks/vulnerability_report.py +0 -0
  56. {pulp_python-3.24.1 → pulp_python-3.25.0}/pulp_python/app/urls.py +0 -0
  57. {pulp_python-3.24.1 → pulp_python-3.25.0}/pulp_python/app/webserver_snippets/__init__.py +0 -0
  58. {pulp_python-3.24.1 → pulp_python-3.25.0}/pulp_python/app/webserver_snippets/apache.conf +0 -0
  59. {pulp_python-3.24.1 → pulp_python-3.25.0}/pulp_python/app/webserver_snippets/nginx.conf +0 -0
  60. {pulp_python-3.24.1 → pulp_python-3.25.0}/pulp_python/pytest_plugin.py +0 -0
  61. {pulp_python-3.24.1 → pulp_python-3.25.0}/pulp_python/tests/__init__.py +0 -0
  62. {pulp_python-3.24.1 → pulp_python-3.25.0}/pulp_python/tests/functional/__init__.py +0 -0
  63. {pulp_python-3.24.1 → pulp_python-3.25.0}/pulp_python/tests/functional/api/__init__.py +0 -0
  64. {pulp_python-3.24.1 → pulp_python-3.25.0}/pulp_python/tests/functional/api/test_attestations.py +0 -0
  65. {pulp_python-3.24.1 → pulp_python-3.25.0}/pulp_python/tests/functional/api/test_auto_publish.py +0 -0
  66. {pulp_python-3.24.1 → pulp_python-3.25.0}/pulp_python/tests/functional/api/test_consume_content.py +0 -0
  67. {pulp_python-3.24.1 → pulp_python-3.25.0}/pulp_python/tests/functional/api/test_crud_content_unit.py +0 -0
  68. {pulp_python-3.24.1 → pulp_python-3.25.0}/pulp_python/tests/functional/api/test_crud_publications.py +0 -0
  69. {pulp_python-3.24.1 → pulp_python-3.25.0}/pulp_python/tests/functional/api/test_crud_remotes.py +0 -0
  70. {pulp_python-3.24.1 → pulp_python-3.25.0}/pulp_python/tests/functional/api/test_domains.py +0 -0
  71. {pulp_python-3.24.1 → pulp_python-3.25.0}/pulp_python/tests/functional/api/test_download_content.py +0 -0
  72. {pulp_python-3.24.1 → pulp_python-3.25.0}/pulp_python/tests/functional/api/test_export_import.py +0 -0
  73. {pulp_python-3.24.1 → pulp_python-3.25.0}/pulp_python/tests/functional/api/test_pypi_apis.py +0 -0
  74. {pulp_python-3.24.1 → pulp_python-3.25.0}/pulp_python/tests/functional/api/test_pypi_simple_api.py +0 -0
  75. {pulp_python-3.24.1 → pulp_python-3.25.0}/pulp_python/tests/functional/api/test_rbac.py +0 -0
  76. {pulp_python-3.24.1 → pulp_python-3.25.0}/pulp_python/tests/functional/api/test_repair.py +0 -0
  77. {pulp_python-3.24.1 → pulp_python-3.25.0}/pulp_python/tests/functional/api/test_sync.py +0 -0
  78. {pulp_python-3.24.1 → pulp_python-3.25.0}/pulp_python/tests/functional/api/test_upload.py +0 -0
  79. {pulp_python-3.24.1 → pulp_python-3.25.0}/pulp_python/tests/functional/api/test_vulnerability_report.py +0 -0
  80. {pulp_python-3.24.1 → pulp_python-3.25.0}/pulp_python/tests/functional/assets/shelf-reader-0.1.tar.gz.publish.attestation +0 -0
  81. {pulp_python-3.24.1 → pulp_python-3.25.0}/pulp_python/tests/functional/assets/shelf_reader-0.1-py2-none-any.whl.publish.attestation +0 -0
  82. {pulp_python-3.24.1 → pulp_python-3.25.0}/pulp_python/tests/functional/constants.py +0 -0
  83. {pulp_python-3.24.1 → pulp_python-3.25.0}/pulp_python/tests/functional/utils.py +0 -0
  84. {pulp_python-3.24.1 → pulp_python-3.25.0}/pulp_python/tests/unit/__init__.py +0 -0
  85. {pulp_python-3.24.1 → pulp_python-3.25.0}/pulp_python/tests/unit/test_models.py +0 -0
  86. {pulp_python-3.24.1 → pulp_python-3.25.0}/pulp_python.egg-info/SOURCES.txt +0 -0
  87. {pulp_python-3.24.1 → pulp_python-3.25.0}/pulp_python.egg-info/dependency_links.txt +0 -0
  88. {pulp_python-3.24.1 → pulp_python-3.25.0}/pulp_python.egg-info/entry_points.txt +0 -0
  89. {pulp_python-3.24.1 → pulp_python-3.25.0}/pulp_python.egg-info/requires.txt +0 -0
  90. {pulp_python-3.24.1 → pulp_python-3.25.0}/pulp_python.egg-info/top_level.txt +0 -0
  91. {pulp_python-3.24.1 → pulp_python-3.25.0}/setup.cfg +0 -0
  92. {pulp_python-3.24.1 → pulp_python-3.25.0}/test_requirements.txt +0 -0
  93. {pulp_python-3.24.1 → pulp_python-3.25.0}/unittest_requirements.txt +0 -0
@@ -8,6 +8,39 @@
8
8
 
9
9
  [//]: # (towncrier release notes start)
10
10
 
11
+ ## 3.25.0 (2026-02-10) {: #3.25.0 }
12
+
13
+ #### Features {: #3.25.0-feature }
14
+
15
+ - Added the `contains` filter to `name` and `author` fields for the Content endpoint.
16
+ [#1096](https://github.com/pulp/pulp_python/issues/1096)
17
+
18
+ #### Bugfixes {: #3.25.0-bugfix }
19
+
20
+ - Fixed pull-through caching failing for packages with bad names.
21
+ [#1040](https://github.com/pulp/pulp_python/issues/1040)
22
+ - Changed migration 19 to reset package's metadata_sha256 to null. This field will be fixed in a later release.
23
+ [#1071](https://github.com/pulp/pulp_python/issues/1071)
24
+ - Fixed pull-through PEP 658 metadata not being served correctly for certain tools.
25
+ [#1083](https://github.com/pulp/pulp_python/issues/1083)
26
+ - Fixed pull-through PEP 658 metadata not being saved correctly with the package.
27
+ [#1087](https://github.com/pulp/pulp_python/issues/1087)
28
+
29
+ ---
30
+
31
+ ## 3.24.2 (2026-02-06) {: #3.24.2 }
32
+
33
+ #### Bugfixes {: #3.24.2-bugfix }
34
+
35
+ - Fixed pull-through caching failing for packages with bad names.
36
+ [#1040](https://github.com/pulp/pulp_python/issues/1040)
37
+ - Fixed pull-through PEP 658 metadata not being served correctly for certain tools.
38
+ [#1083](https://github.com/pulp/pulp_python/issues/1083)
39
+ - Fixed pull-through PEP 658 metadata not being saved correctly with the package.
40
+ [#1087](https://github.com/pulp/pulp_python/issues/1087)
41
+
42
+ ---
43
+
11
44
  ## 3.24.1 (2026-01-22) {: #3.24.1 }
12
45
 
13
46
  #### Bugfixes {: #3.24.1-bugfix }
@@ -33,6 +66,15 @@
33
66
 
34
67
  ---
35
68
 
69
+ ## 3.23.1 (2026-01-20) {: #3.23.1 }
70
+
71
+ #### Bugfixes {: #3.23.1-bugfix }
72
+
73
+ - Fixed migration error in 0019_create_missing_metadata_artifacts.
74
+ [#1067](https://github.com/pulp/pulp_python/issues/1067)
75
+
76
+ ---
77
+
36
78
  ## 3.23.0 (2026-01-06) {: #3.23.0 }
37
79
 
38
80
  #### Features {: #3.23.0-feature }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pulp-python
3
- Version: 3.24.1
3
+ Version: 3.25.0
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.1"
13
+ version = "3.25.0"
14
14
  python_package_name = "pulp-python"
15
15
  domain_compatible = True
16
16
 
@@ -25,6 +25,7 @@ from pathlib import PurePath
25
25
  from .provenance import Provenance
26
26
  from .utils import (
27
27
  artifact_to_python_content_data,
28
+ artifact_to_metadata_artifact,
28
29
  canonicalize_name,
29
30
  python_content_to_json,
30
31
  PYPI_LAST_SERIAL,
@@ -215,7 +216,10 @@ class PythonPackageContent(Content):
215
216
  """Used when downloading package from pull-through cache."""
216
217
  path = PurePath(relative_path)
217
218
  data = artifact_to_python_content_data(path.name, artifact, domain=get_domain())
218
- return PythonPackageContent(**data)
219
+ artifacts = {path.name: artifact}
220
+ if metadata_artifact := artifact_to_metadata_artifact(path.name, artifact):
221
+ artifacts[f"{path.name}.metadata"] = metadata_artifact
222
+ return PythonPackageContent(**data), artifacts
219
223
 
220
224
  def __str__(self):
221
225
  """
@@ -320,11 +324,25 @@ class PythonRemote(Remote, AutoAddObjPermsMixin):
320
324
  """Get url for remote_artifact"""
321
325
  if request and (url := request.query.get("redirect")):
322
326
  # This is a special case for pull-through caching
327
+ # To handle PEP 658, it states that if the package has metadata available then it
328
+ # should be found at the download URL + ".metadata". Thus if the request url ends with
329
+ # ".metadata" then we need to add ".metadata" to the redirect url if not present.
330
+ if relative_path:
331
+ if relative_path.endswith(".metadata") and not url.endswith(".metadata"):
332
+ url += ".metadata"
333
+ # Handle special case for bug in pip (TODO file issue in pip) where it appends
334
+ # ".metadata" to the redirect url instead of the request url
335
+ if url.endswith(".metadata") and not relative_path.endswith(".metadata"):
336
+ setattr(self, "_real_relative_path", url.rsplit("/", 1)[1])
323
337
  return url
324
338
  return super().get_remote_artifact_url(relative_path, request=request)
325
339
 
326
340
  def get_remote_artifact_content_type(self, relative_path=None):
327
- """Return PythonPackageContent."""
341
+ """Return PythonPackageContent, except for metadata artifacts."""
342
+ if hasattr(self, "_real_relative_path"):
343
+ relative_path = getattr(self, "_real_relative_path")
344
+ if relative_path and relative_path.endswith(".whl.metadata"):
345
+ return None
328
346
  return PythonPackageContent
329
347
 
330
348
  class Meta:
@@ -610,7 +610,7 @@ class PackageIncludeFilter:
610
610
 
611
611
  try:
612
612
  version = parse(version)
613
- except InvalidVersion:
613
+ except (InvalidVersion, TypeError):
614
614
  return False
615
615
 
616
616
  include_range = self._filter_includes.get("range", {})
@@ -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"],
@@ -11,8 +11,9 @@ from pulp_python.tests.functional.constants import (
11
11
 
12
12
  from pypi_simple import ProjectPage
13
13
  from packaging.version import parse
14
- from urllib.parse import urljoin, urlsplit
14
+ from urllib.parse import urljoin, urlsplit, urlunsplit
15
15
  from random import sample
16
+ from hashlib import sha256
16
17
 
17
18
 
18
19
  def test_pull_through_install(
@@ -182,3 +183,105 @@ def test_pull_through_local_only(
182
183
  r = requests.get(url)
183
184
  assert r.status_code == 404
184
185
  assert r.text == "pulp-python does not exist."
186
+
187
+
188
+ @pytest.mark.parallel
189
+ def test_pull_through_filtering_bad_names(python_remote_factory, python_distribution_factory):
190
+ """Tests that pull-through handles packages with invalid names gracefully."""
191
+ # ipython version 0.13.X has improper named bdist_wininst, e.g ipython-0.13.py2-win-amd64.exe
192
+ # pypi-simple expects the platform to go before the pyversion (for .exe), so when parsed the
193
+ # version and package type will be None.
194
+ remote = python_remote_factory(url=PYPI_URL, includes=["ipython"])
195
+ distro = python_distribution_factory(remote=remote.pulp_href)
196
+
197
+ url = f"{distro.base_url}simple/ipython/"
198
+ response = requests.get(url)
199
+
200
+ assert response.status_code == 200
201
+
202
+ project_page = ProjectPage.from_response(response, "ipython")
203
+ # Should have no packages with None version (they get filtered out)
204
+ assert len(project_page.packages) > 0
205
+ assert all(package.version is not None for package in project_page.packages)
206
+
207
+
208
+ @pytest.mark.parallel
209
+ def test_pull_through_metadata(python_remote_factory, python_distribution_factory):
210
+ """
211
+ Tests that metadata is correctly served when using pull-through.
212
+
213
+ So when requesting the metadata url according to PEP 658 you should just need to add .metadata
214
+ to the end of the url path. Since pull-through includes a redirect query parameter we need to
215
+ test adding .metadata to the end of the url path vs adding it to the end of redirect query.
216
+ """
217
+ remote = python_remote_factory(includes=["pytz"])
218
+ distro = python_distribution_factory(remote=remote.pulp_href)
219
+
220
+ url = f"{distro.base_url}simple/pytz/"
221
+ project_page = ProjectPage.from_response(requests.get(url), "pytz")
222
+ filename1 = "pytz-2023.2-py2.py3-none-any.whl"
223
+ filename2 = "pytz-2023.3-py2.py3-none-any.whl"
224
+ package1 = next(p for p in project_page.packages if p.filename == filename1)
225
+ package2 = next(p for p in project_page.packages if p.filename == filename2)
226
+ assert package1.has_metadata
227
+ assert package2.has_metadata
228
+
229
+ # The correct way to get the metadata url: add to path (uv does this)
230
+ parts1 = urlsplit(package1.url)
231
+ url1 = urlunsplit((parts1[0], parts1[1], parts1[2] + ".metadata", parts1[3], parts1[4]))
232
+ r = requests.get(url1)
233
+ assert r.status_code == 200
234
+ assert sha256(r.content).hexdigest() == package1.metadata_digests["sha256"]
235
+
236
+ # The incorrect way to get the metadata url: add to end of string (pip does this)
237
+ url2 = package2.url + ".metadata"
238
+ r = requests.get(url2)
239
+ assert r.status_code == 200
240
+ assert sha256(r.content).hexdigest() == package2.metadata_digests["sha256"]
241
+
242
+
243
+ @pytest.mark.parallel
244
+ def test_pull_through_metadata_with_repo(
245
+ python_repo_factory,
246
+ python_remote_factory,
247
+ python_distribution_factory,
248
+ pulpcore_bindings,
249
+ ):
250
+ """Tests that metadata is correctly saved when using pull-through with a repository."""
251
+ remote = python_remote_factory(url=PYPI_URL, includes=["pip"])
252
+ repo = python_repo_factory()
253
+ distro = python_distribution_factory(repository=repo.pulp_href, remote=remote.pulp_href)
254
+
255
+ pip_url = f"{distro.base_url}simple/pip/"
256
+ project_page = ProjectPage.from_response(requests.get(pip_url), "pip")
257
+ filename = "pip-26.0.1-py3-none-any.whl"
258
+ package = next(p for p in project_page.packages if p.filename == filename)
259
+ assert package.has_metadata
260
+ assert "?redirect=" in package.url
261
+
262
+ # Retrieve the metadata and assert the content was not saved to the repository
263
+ parts = urlsplit(package.url)
264
+ url = urlunsplit((parts[0], parts[1], parts[2] + ".metadata", parts[3], parts[4]))
265
+ r = requests.get(url)
266
+ assert r.status_code == 200
267
+ assert sha256(r.content).hexdigest() == package.metadata_digests["sha256"]
268
+ project_page = ProjectPage.from_response(requests.get(pip_url), "pip")
269
+ package = next(p for p in project_page.packages if p.filename == filename)
270
+ assert package.has_metadata
271
+ assert "?redirect=" in package.url
272
+
273
+ # Now retrieve the package and assert the content was saved with metadata
274
+ r = requests.get(package.url)
275
+ assert r.status_code == 200
276
+ pa = pulpcore_bindings.ArtifactsApi.list(sha256=package.digests["sha256"])
277
+ assert pa.count == 1
278
+ ma = pulpcore_bindings.ArtifactsApi.list(sha256=package.metadata_digests["sha256"])
279
+ assert ma.count == 1
280
+
281
+ # Check the simple page is updated to point to the local repository
282
+ project_page = ProjectPage.from_response(requests.get(pip_url), "pip")
283
+ package = next(p for p in project_page.packages if p.filename == filename)
284
+ assert "?redirect=" not in package.url
285
+ r = requests.get(package.metadata_url)
286
+ assert r.status_code == 200
287
+ assert sha256(r.content).hexdigest() == package.metadata_digests["sha256"]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pulp-python
3
- Version: 3.24.1
3
+ Version: 3.25.0
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.1"
10
+ version = "3.25.0"
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.1"
80
+ current_version = "3.25.0"
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