pulp-python 3.12.0__tar.gz → 3.12.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 (75) hide show
  1. {pulp-python-3.12.0 → pulp-python-3.12.2}/CHANGES.md +19 -0
  2. {pulp-python-3.12.0 → pulp-python-3.12.2}/PKG-INFO +1 -1
  3. {pulp-python-3.12.0 → pulp-python-3.12.2}/pulp_python/app/__init__.py +1 -1
  4. {pulp-python-3.12.0 → pulp-python-3.12.2}/pulp_python/app/models.py +5 -1
  5. {pulp-python-3.12.0 → pulp-python-3.12.2}/pulp_python/app/pypi/views.py +2 -1
  6. {pulp-python-3.12.0 → pulp-python-3.12.2}/pulp_python/app/tasks/sync.py +1 -1
  7. {pulp-python-3.12.0 → pulp-python-3.12.2}/pulp_python/tests/functional/api/test_download_content.py +29 -0
  8. {pulp-python-3.12.0 → pulp-python-3.12.2}/pulp_python/tests/functional/api/test_sync.py +17 -0
  9. {pulp-python-3.12.0 → pulp-python-3.12.2}/pulp_python/tests/functional/constants.py +1 -0
  10. {pulp-python-3.12.0 → pulp-python-3.12.2}/pulp_python.egg-info/PKG-INFO +1 -1
  11. {pulp-python-3.12.0 → pulp-python-3.12.2}/setup.py +1 -1
  12. {pulp-python-3.12.0 → pulp-python-3.12.2}/COMMITMENT +0 -0
  13. {pulp-python-3.12.0 → pulp-python-3.12.2}/COPYRIGHT +0 -0
  14. {pulp-python-3.12.0 → pulp-python-3.12.2}/LICENSE +0 -0
  15. {pulp-python-3.12.0 → pulp-python-3.12.2}/MANIFEST.in +0 -0
  16. {pulp-python-3.12.0 → pulp-python-3.12.2}/README.md +0 -0
  17. {pulp-python-3.12.0 → pulp-python-3.12.2}/functest_requirements.txt +0 -0
  18. {pulp-python-3.12.0 → pulp-python-3.12.2}/pulp_python/__init__.py +0 -0
  19. {pulp-python-3.12.0 → pulp-python-3.12.2}/pulp_python/app/global_access_conditions.py +0 -0
  20. {pulp-python-3.12.0 → pulp-python-3.12.2}/pulp_python/app/migrations/0001_initial.py +0 -0
  21. {pulp-python-3.12.0 → pulp-python-3.12.2}/pulp_python/app/migrations/0002_pythonpackagecontent_python_version.py +0 -0
  22. {pulp-python-3.12.0 → pulp-python-3.12.2}/pulp_python/app/migrations/0003_new_sync_filters.py +0 -0
  23. {pulp-python-3.12.0 → pulp-python-3.12.2}/pulp_python/app/migrations/0004_DATA_swap_distribution_model.py +0 -0
  24. {pulp-python-3.12.0 → pulp-python-3.12.2}/pulp_python/app/migrations/0005_pythonpackagecontent_sha256.py +0 -0
  25. {pulp-python-3.12.0 → pulp-python-3.12.2}/pulp_python/app/migrations/0006_pythonrepository_autopublish.py +0 -0
  26. {pulp-python-3.12.0 → pulp-python-3.12.2}/pulp_python/app/migrations/0007_pythonpackagecontent_mv-2-1.py +0 -0
  27. {pulp-python-3.12.0 → pulp-python-3.12.2}/pulp_python/app/migrations/0008_pythonpackagecontent_unique_sha256.py +0 -0
  28. {pulp-python-3.12.0 → pulp-python-3.12.2}/pulp_python/app/migrations/0009_pythondistribution_allow_uploads.py +0 -0
  29. {pulp-python-3.12.0 → pulp-python-3.12.2}/pulp_python/app/migrations/0010_update_json_field.py +0 -0
  30. {pulp-python-3.12.0 → pulp-python-3.12.2}/pulp_python/app/migrations/0011_alter_pythondistribution_distribution_ptr_and_more.py +0 -0
  31. {pulp-python-3.12.0 → pulp-python-3.12.2}/pulp_python/app/migrations/0012_add_domain.py +0 -0
  32. {pulp-python-3.12.0 → pulp-python-3.12.2}/pulp_python/app/migrations/0013_add_rbac_permissions.py +0 -0
  33. {pulp-python-3.12.0 → pulp-python-3.12.2}/pulp_python/app/migrations/__init__.py +0 -0
  34. {pulp-python-3.12.0 → pulp-python-3.12.2}/pulp_python/app/modelresource.py +0 -0
  35. {pulp-python-3.12.0 → pulp-python-3.12.2}/pulp_python/app/pypi/__init__.py +0 -0
  36. {pulp-python-3.12.0 → pulp-python-3.12.2}/pulp_python/app/pypi/serializers.py +0 -0
  37. {pulp-python-3.12.0 → pulp-python-3.12.2}/pulp_python/app/replica.py +0 -0
  38. {pulp-python-3.12.0 → pulp-python-3.12.2}/pulp_python/app/serializers.py +0 -0
  39. {pulp-python-3.12.0 → pulp-python-3.12.2}/pulp_python/app/settings.py +0 -0
  40. {pulp-python-3.12.0 → pulp-python-3.12.2}/pulp_python/app/tasks/__init__.py +0 -0
  41. {pulp-python-3.12.0 → pulp-python-3.12.2}/pulp_python/app/tasks/publish.py +0 -0
  42. {pulp-python-3.12.0 → pulp-python-3.12.2}/pulp_python/app/tasks/upload.py +0 -0
  43. {pulp-python-3.12.0 → pulp-python-3.12.2}/pulp_python/app/urls.py +0 -0
  44. {pulp-python-3.12.0 → pulp-python-3.12.2}/pulp_python/app/utils.py +0 -0
  45. {pulp-python-3.12.0 → pulp-python-3.12.2}/pulp_python/app/viewsets.py +0 -0
  46. {pulp-python-3.12.0 → pulp-python-3.12.2}/pulp_python/app/webserver_snippets/__init__.py +0 -0
  47. {pulp-python-3.12.0 → pulp-python-3.12.2}/pulp_python/app/webserver_snippets/apache.conf +0 -0
  48. {pulp-python-3.12.0 → pulp-python-3.12.2}/pulp_python/app/webserver_snippets/nginx.conf +0 -0
  49. {pulp-python-3.12.0 → pulp-python-3.12.2}/pulp_python/pytest_plugin.py +0 -0
  50. {pulp-python-3.12.0 → pulp-python-3.12.2}/pulp_python/tests/__init__.py +0 -0
  51. {pulp-python-3.12.0 → pulp-python-3.12.2}/pulp_python/tests/functional/__init__.py +0 -0
  52. {pulp-python-3.12.0 → pulp-python-3.12.2}/pulp_python/tests/functional/api/__init__.py +0 -0
  53. {pulp-python-3.12.0 → pulp-python-3.12.2}/pulp_python/tests/functional/api/test_auto_publish.py +0 -0
  54. {pulp-python-3.12.0 → pulp-python-3.12.2}/pulp_python/tests/functional/api/test_consume_content.py +0 -0
  55. {pulp-python-3.12.0 → pulp-python-3.12.2}/pulp_python/tests/functional/api/test_crud_content_unit.py +0 -0
  56. {pulp-python-3.12.0 → pulp-python-3.12.2}/pulp_python/tests/functional/api/test_crud_publications.py +0 -0
  57. {pulp-python-3.12.0 → pulp-python-3.12.2}/pulp_python/tests/functional/api/test_crud_remotes.py +0 -0
  58. {pulp-python-3.12.0 → pulp-python-3.12.2}/pulp_python/tests/functional/api/test_domains.py +0 -0
  59. {pulp-python-3.12.0 → pulp-python-3.12.2}/pulp_python/tests/functional/api/test_export_import.py +0 -0
  60. {pulp-python-3.12.0 → pulp-python-3.12.2}/pulp_python/tests/functional/api/test_full_mirror.py +0 -0
  61. {pulp-python-3.12.0 → pulp-python-3.12.2}/pulp_python/tests/functional/api/test_pypi_apis.py +0 -0
  62. {pulp-python-3.12.0 → pulp-python-3.12.2}/pulp_python/tests/functional/api/test_rbac.py +0 -0
  63. {pulp-python-3.12.0 → pulp-python-3.12.2}/pulp_python/tests/functional/utils.py +0 -0
  64. {pulp-python-3.12.0 → pulp-python-3.12.2}/pulp_python/tests/unit/__init__.py +0 -0
  65. {pulp-python-3.12.0 → pulp-python-3.12.2}/pulp_python/tests/unit/test_models.py +0 -0
  66. {pulp-python-3.12.0 → pulp-python-3.12.2}/pulp_python.egg-info/SOURCES.txt +0 -0
  67. {pulp-python-3.12.0 → pulp-python-3.12.2}/pulp_python.egg-info/dependency_links.txt +0 -0
  68. {pulp-python-3.12.0 → pulp-python-3.12.2}/pulp_python.egg-info/entry_points.txt +0 -0
  69. {pulp-python-3.12.0 → pulp-python-3.12.2}/pulp_python.egg-info/requires.txt +0 -0
  70. {pulp-python-3.12.0 → pulp-python-3.12.2}/pulp_python.egg-info/top_level.txt +0 -0
  71. {pulp-python-3.12.0 → pulp-python-3.12.2}/pyproject.toml +0 -0
  72. {pulp-python-3.12.0 → pulp-python-3.12.2}/requirements.txt +0 -0
  73. {pulp-python-3.12.0 → pulp-python-3.12.2}/setup.cfg +0 -0
  74. {pulp-python-3.12.0 → pulp-python-3.12.2}/test_requirements.txt +0 -0
  75. {pulp-python-3.12.0 → pulp-python-3.12.2}/unittest_requirements.txt +0 -0
@@ -8,6 +8,25 @@
8
8
 
9
9
  [//]: # (towncrier release notes start)
10
10
 
11
+ # ## 3.12.2 (2024-08-21) {: #3.12.2 }
12
+
13
+ #### Bugfixes {: #3.12.2-bugfix }
14
+
15
+ - Fixed package name normalization issue preventing syncing packages with "." or "_" in their names.
16
+ [#716](https://github.com/pulp/pulp_python/issues/716)
17
+
18
+ ---
19
+
20
+ ## 3.12.1 (2024-06-27) {: #3.12.1 }
21
+
22
+
23
+ #### Bugfixes {: #3.12.1-bugfix }
24
+
25
+ - Fixed the `package_types` filter breaking other remote filters.
26
+ [#691](https://github.com/pulp/pulp_python/issues/691)
27
+
28
+ ---
29
+
11
30
  ## 3.12.0 (2024-06-25) {: #3.12.0 }
12
31
 
13
32
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pulp-python
3
- Version: 3.12.0
3
+ Version: 3.12.2
4
4
  Summary: pulp-python plugin for the Pulp Project
5
5
  Home-page: https://www.pulpproject.org
6
6
  Author: Pulp Project Developers
@@ -10,7 +10,7 @@ class PulpPythonPluginAppConfig(PulpPluginAppConfig):
10
10
 
11
11
  name = "pulp_python.app"
12
12
  label = "python"
13
- version = "3.12.0"
13
+ version = "3.12.2"
14
14
  python_package_name = "pulp-python"
15
15
  domain_compatible = True
16
16
 
@@ -17,6 +17,7 @@ from pulpcore.plugin.responses import ArtifactResponse
17
17
 
18
18
  from pathlib import PurePath
19
19
  from .utils import (
20
+ canonicalize_name,
20
21
  get_project_metadata_from_artifact,
21
22
  parse_project_metadata,
22
23
  python_content_to_json,
@@ -87,6 +88,8 @@ class PythonDistribution(Distribution, AutoAddObjPermsMixin):
87
88
  ).latest("pulp_created")
88
89
  except ObjectDoesNotExist:
89
90
  return None
91
+ if len(path.parts) == 2:
92
+ path = PurePath(f"simple/{canonicalize_name(path.parts[1])}")
90
93
  rel_path = f"{path}/index.html"
91
94
  try:
92
95
  ca = (
@@ -103,8 +106,9 @@ class PythonDistribution(Distribution, AutoAddObjPermsMixin):
103
106
  return ArtifactResponse(ca.artifact, headers=headers)
104
107
 
105
108
  if name:
109
+ normalized = canonicalize_name(name)
106
110
  package_content = PythonPackageContent.objects.filter(
107
- pk__in=self.publication.repository_version.content, name__iexact=name
111
+ pk__in=self.publication.repository_version.content, name__normalize=normalized
108
112
  )
109
113
  # TODO Change this value to the Repo's serial value when implemented
110
114
  headers = {PYPI_LAST_SERIAL: str(PYPI_SERIAL_CONSTANT)}
@@ -327,7 +327,8 @@ class MetadataView(PyPIMixin, ViewSet):
327
327
  elif meta_path.match("*/json"):
328
328
  name = meta_path.parts[0]
329
329
  if name:
330
- package_content = content.filter(name__iexact=name)
330
+ normalized = canonicalize_name(name)
331
+ package_content = content.filter(name__normalize=normalized)
331
332
  # TODO Change this value to the Repo's serial value when implemented
332
333
  headers = {PYPI_LAST_SERIAL: str(PYPI_SERIAL_CONSTANT)}
333
334
  if settings.DOMAIN_ENABLED:
@@ -83,7 +83,7 @@ def create_bandersnatch_config(remote):
83
83
  config["plugins"]["enabled"] += "prerelease_release\n"
84
84
  if remote.package_types:
85
85
  rrfm = "regex_release_file_metadata"
86
- config["plugins"]["enabled"] += rrfm
86
+ config["plugins"]["enabled"] += f"{rrfm}\n"
87
87
  if not config.has_section(rrfm):
88
88
  config.add_section(rrfm)
89
89
  config[rrfm]["any:release_file.packagetype"] = "\n".join(remote.package_types)
@@ -87,3 +87,32 @@ def test_full_pulp_to_pulp_sync(
87
87
  repo3 = python_repo_with_sync(remote3)
88
88
  summary2 = python_content_summary(repository_version=repo3.latest_version_href)
89
89
  assert summary2.present["python.python"]["count"] == PYTHON_MD_PACKAGE_COUNT
90
+
91
+
92
+ @pytest.mark.parallel
93
+ def test_pulp2pulp_sync_with_oddities(
94
+ python_repo_with_sync,
95
+ python_remote_factory,
96
+ python_publication_factory,
97
+ python_distribution_factory,
98
+ python_content_summary,
99
+ ):
100
+ """Test that Pulp can handle syncing packages with wierd names."""
101
+ remote = python_remote_factory(includes=["oslo.utils"], url="https://pypi.org")
102
+ repo = python_repo_with_sync(remote)
103
+ distro = python_distribution_factory(repository=repo)
104
+ summary = python_content_summary(repository_version=repo.latest_version_href)
105
+ # Test pulp 2 pulp full sync w/ live pypi apis
106
+ remote2 = python_remote_factory(includes=[], url=distro.base_url)
107
+ repo2 = python_repo_with_sync(remote2)
108
+ summary2 = python_content_summary(repository_version=repo2.latest_version_href)
109
+ assert summary2.present["python.python"]["count"] > 0
110
+ assert summary.present["python.python"]["count"] == summary2.present["python.python"]["count"]
111
+ # Test w/ publication
112
+ pub = python_publication_factory(repository=repo)
113
+ distro2 = python_distribution_factory(publication=pub)
114
+ remote3 = python_remote_factory(includes=[], url=distro2.base_url)
115
+ repo3 = python_repo_with_sync(remote3)
116
+ summary3 = python_content_summary(repository_version=repo3.latest_version_href)
117
+ assert summary3.present["python.python"]["count"] > 0
118
+ assert summary.present["python.python"]["count"] == summary3.present["python.python"]["count"]
@@ -264,6 +264,23 @@ def test_sync_platform_exclude(
264
264
  assert summary.present["python.python"]["count"] == SCIPY_COUNTS["no_os"]
265
265
 
266
266
 
267
+ @pytest.mark.parallel
268
+ def test_sync_multiple_filters(
269
+ python_repo_with_sync, python_remote_factory, python_content_summary
270
+ ):
271
+ """Tests sync with multiple filters."""
272
+ remote = python_remote_factory(
273
+ includes=PYTHON_LG_PROJECT_SPECIFIER,
274
+ package_types=["bdist_wheel"],
275
+ keep_latest_packages=1,
276
+ prereleases=False
277
+ )
278
+ repo = python_repo_with_sync(remote)
279
+
280
+ summary = python_content_summary(repository_version=repo.latest_version_href)
281
+ assert summary.present["python.python"]["count"] == PYTHON_LG_FIXTURE_COUNTS["multi"]
282
+
283
+
267
284
  @pytest.mark.parallel
268
285
  def test_proxy_sync(
269
286
  python_bindings,
@@ -135,6 +135,7 @@ PYTHON_LG_FIXTURE_COUNTS = {
135
135
  "latest_3": 49,
136
136
  "sdist": 27,
137
137
  "bdist_wheel": 63,
138
+ "multi": 33, # keep_latest=1, package_types="bdist_wheel", prereleases=False
138
139
  }
139
140
 
140
141
  DJANGO_LATEST_3 = 4 # latest version has 2 dists, each other has 1
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pulp-python
3
- Version: 3.12.0
3
+ Version: 3.12.2
4
4
  Summary: pulp-python plugin for the Pulp Project
5
5
  Home-page: https://www.pulpproject.org
6
6
  Author: Pulp Project Developers
@@ -10,7 +10,7 @@ with open("README.md") as f:
10
10
 
11
11
  setup(
12
12
  name="pulp-python",
13
- version="3.12.0",
13
+ version="3.12.2",
14
14
  description="pulp-python plugin for the Pulp Project",
15
15
  long_description=long_description,
16
16
  long_description_content_type="text/markdown",
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes