pulp-python 3.19.0__tar.gz → 3.19.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.
- {pulp_python-3.19.0 → pulp_python-3.19.1}/CHANGES.md +9 -0
- {pulp_python-3.19.0 → pulp_python-3.19.1}/PKG-INFO +1 -1
- {pulp_python-3.19.0 → pulp_python-3.19.1}/pulp_python/app/__init__.py +1 -1
- {pulp_python-3.19.0 → pulp_python-3.19.1}/pulp_python/app/tasks/publish.py +7 -7
- {pulp_python-3.19.0 → pulp_python-3.19.1}/pulp_python/pytest_plugin.py +1 -1
- {pulp_python-3.19.0 → pulp_python-3.19.1}/pulp_python/tests/functional/api/test_crud_publications.py +27 -0
- {pulp_python-3.19.0 → pulp_python-3.19.1}/pulp_python/tests/functional/api/test_pypi_apis.py +0 -20
- {pulp_python-3.19.0 → pulp_python-3.19.1}/pulp_python.egg-info/PKG-INFO +1 -1
- {pulp_python-3.19.0 → pulp_python-3.19.1}/pyproject.toml +2 -2
- {pulp_python-3.19.0 → pulp_python-3.19.1}/COMMITMENT +0 -0
- {pulp_python-3.19.0 → pulp_python-3.19.1}/COPYRIGHT +0 -0
- {pulp_python-3.19.0 → pulp_python-3.19.1}/LICENSE +0 -0
- {pulp_python-3.19.0 → pulp_python-3.19.1}/MANIFEST.in +0 -0
- {pulp_python-3.19.0 → pulp_python-3.19.1}/README.md +0 -0
- {pulp_python-3.19.0 → pulp_python-3.19.1}/functest_requirements.txt +0 -0
- {pulp_python-3.19.0 → pulp_python-3.19.1}/pulp_python/__init__.py +0 -0
- {pulp_python-3.19.0 → pulp_python-3.19.1}/pulp_python/app/global_access_conditions.py +0 -0
- {pulp_python-3.19.0 → pulp_python-3.19.1}/pulp_python/app/management/__init__.py +0 -0
- {pulp_python-3.19.0 → pulp_python-3.19.1}/pulp_python/app/management/commands/__init__.py +0 -0
- {pulp_python-3.19.0 → pulp_python-3.19.1}/pulp_python/app/management/commands/repair-python-metadata.py +0 -0
- {pulp_python-3.19.0 → pulp_python-3.19.1}/pulp_python/app/migrations/0001_initial.py +0 -0
- {pulp_python-3.19.0 → pulp_python-3.19.1}/pulp_python/app/migrations/0001_squashed_0010_update_json_field.py +0 -0
- {pulp_python-3.19.0 → pulp_python-3.19.1}/pulp_python/app/migrations/0002_pythonpackagecontent_python_version.py +0 -0
- {pulp_python-3.19.0 → pulp_python-3.19.1}/pulp_python/app/migrations/0003_new_sync_filters.py +0 -0
- {pulp_python-3.19.0 → pulp_python-3.19.1}/pulp_python/app/migrations/0004_DATA_swap_distribution_model.py +0 -0
- {pulp_python-3.19.0 → pulp_python-3.19.1}/pulp_python/app/migrations/0005_pythonpackagecontent_sha256.py +0 -0
- {pulp_python-3.19.0 → pulp_python-3.19.1}/pulp_python/app/migrations/0006_pythonrepository_autopublish.py +0 -0
- {pulp_python-3.19.0 → pulp_python-3.19.1}/pulp_python/app/migrations/0007_pythonpackagecontent_mv-2-1.py +0 -0
- {pulp_python-3.19.0 → pulp_python-3.19.1}/pulp_python/app/migrations/0008_pythonpackagecontent_unique_sha256.py +0 -0
- {pulp_python-3.19.0 → pulp_python-3.19.1}/pulp_python/app/migrations/0009_pythondistribution_allow_uploads.py +0 -0
- {pulp_python-3.19.0 → pulp_python-3.19.1}/pulp_python/app/migrations/0010_update_json_field.py +0 -0
- {pulp_python-3.19.0 → pulp_python-3.19.1}/pulp_python/app/migrations/0011_alter_pythondistribution_distribution_ptr_and_more.py +0 -0
- {pulp_python-3.19.0 → pulp_python-3.19.1}/pulp_python/app/migrations/0012_add_domain.py +0 -0
- {pulp_python-3.19.0 → pulp_python-3.19.1}/pulp_python/app/migrations/0013_add_rbac_permissions.py +0 -0
- {pulp_python-3.19.0 → pulp_python-3.19.1}/pulp_python/app/migrations/0014_pythonpackagecontent_dynamic_and_more.py +0 -0
- {pulp_python-3.19.0 → pulp_python-3.19.1}/pulp_python/app/migrations/0015_alter_pythonpackagecontent_options.py +0 -0
- {pulp_python-3.19.0 → pulp_python-3.19.1}/pulp_python/app/migrations/__init__.py +0 -0
- {pulp_python-3.19.0 → pulp_python-3.19.1}/pulp_python/app/modelresource.py +0 -0
- {pulp_python-3.19.0 → pulp_python-3.19.1}/pulp_python/app/models.py +0 -0
- {pulp_python-3.19.0 → pulp_python-3.19.1}/pulp_python/app/pypi/__init__.py +0 -0
- {pulp_python-3.19.0 → pulp_python-3.19.1}/pulp_python/app/pypi/serializers.py +0 -0
- {pulp_python-3.19.0 → pulp_python-3.19.1}/pulp_python/app/pypi/views.py +0 -0
- {pulp_python-3.19.0 → pulp_python-3.19.1}/pulp_python/app/replica.py +0 -0
- {pulp_python-3.19.0 → pulp_python-3.19.1}/pulp_python/app/serializers.py +0 -0
- {pulp_python-3.19.0 → pulp_python-3.19.1}/pulp_python/app/settings.py +0 -0
- {pulp_python-3.19.0 → pulp_python-3.19.1}/pulp_python/app/tasks/__init__.py +0 -0
- {pulp_python-3.19.0 → pulp_python-3.19.1}/pulp_python/app/tasks/repair.py +0 -0
- {pulp_python-3.19.0 → pulp_python-3.19.1}/pulp_python/app/tasks/sync.py +0 -0
- {pulp_python-3.19.0 → pulp_python-3.19.1}/pulp_python/app/tasks/upload.py +0 -0
- {pulp_python-3.19.0 → pulp_python-3.19.1}/pulp_python/app/urls.py +0 -0
- {pulp_python-3.19.0 → pulp_python-3.19.1}/pulp_python/app/utils.py +0 -0
- {pulp_python-3.19.0 → pulp_python-3.19.1}/pulp_python/app/viewsets.py +0 -0
- {pulp_python-3.19.0 → pulp_python-3.19.1}/pulp_python/app/webserver_snippets/__init__.py +0 -0
- {pulp_python-3.19.0 → pulp_python-3.19.1}/pulp_python/app/webserver_snippets/apache.conf +0 -0
- {pulp_python-3.19.0 → pulp_python-3.19.1}/pulp_python/app/webserver_snippets/nginx.conf +0 -0
- {pulp_python-3.19.0 → pulp_python-3.19.1}/pulp_python/tests/__init__.py +0 -0
- {pulp_python-3.19.0 → pulp_python-3.19.1}/pulp_python/tests/functional/__init__.py +0 -0
- {pulp_python-3.19.0 → pulp_python-3.19.1}/pulp_python/tests/functional/api/__init__.py +0 -0
- {pulp_python-3.19.0 → pulp_python-3.19.1}/pulp_python/tests/functional/api/test_auto_publish.py +0 -0
- {pulp_python-3.19.0 → pulp_python-3.19.1}/pulp_python/tests/functional/api/test_consume_content.py +0 -0
- {pulp_python-3.19.0 → pulp_python-3.19.1}/pulp_python/tests/functional/api/test_crud_content_unit.py +0 -0
- {pulp_python-3.19.0 → pulp_python-3.19.1}/pulp_python/tests/functional/api/test_crud_remotes.py +0 -0
- {pulp_python-3.19.0 → pulp_python-3.19.1}/pulp_python/tests/functional/api/test_domains.py +0 -0
- {pulp_python-3.19.0 → pulp_python-3.19.1}/pulp_python/tests/functional/api/test_download_content.py +0 -0
- {pulp_python-3.19.0 → pulp_python-3.19.1}/pulp_python/tests/functional/api/test_export_import.py +0 -0
- {pulp_python-3.19.0 → pulp_python-3.19.1}/pulp_python/tests/functional/api/test_full_mirror.py +0 -0
- {pulp_python-3.19.0 → pulp_python-3.19.1}/pulp_python/tests/functional/api/test_rbac.py +0 -0
- {pulp_python-3.19.0 → pulp_python-3.19.1}/pulp_python/tests/functional/api/test_repair.py +0 -0
- {pulp_python-3.19.0 → pulp_python-3.19.1}/pulp_python/tests/functional/api/test_sync.py +0 -0
- {pulp_python-3.19.0 → pulp_python-3.19.1}/pulp_python/tests/functional/api/test_upload.py +0 -0
- {pulp_python-3.19.0 → pulp_python-3.19.1}/pulp_python/tests/functional/constants.py +0 -0
- {pulp_python-3.19.0 → pulp_python-3.19.1}/pulp_python/tests/functional/utils.py +0 -0
- {pulp_python-3.19.0 → pulp_python-3.19.1}/pulp_python/tests/unit/__init__.py +0 -0
- {pulp_python-3.19.0 → pulp_python-3.19.1}/pulp_python/tests/unit/test_models.py +0 -0
- {pulp_python-3.19.0 → pulp_python-3.19.1}/pulp_python.egg-info/SOURCES.txt +0 -0
- {pulp_python-3.19.0 → pulp_python-3.19.1}/pulp_python.egg-info/dependency_links.txt +0 -0
- {pulp_python-3.19.0 → pulp_python-3.19.1}/pulp_python.egg-info/entry_points.txt +0 -0
- {pulp_python-3.19.0 → pulp_python-3.19.1}/pulp_python.egg-info/requires.txt +0 -0
- {pulp_python-3.19.0 → pulp_python-3.19.1}/pulp_python.egg-info/top_level.txt +0 -0
- {pulp_python-3.19.0 → pulp_python-3.19.1}/setup.cfg +0 -0
- {pulp_python-3.19.0 → pulp_python-3.19.1}/test_requirements.txt +0 -0
- {pulp_python-3.19.0 → pulp_python-3.19.1}/unittest_requirements.txt +0 -0
|
@@ -8,6 +8,15 @@
|
|
|
8
8
|
|
|
9
9
|
[//]: # (towncrier release notes start)
|
|
10
10
|
|
|
11
|
+
## 3.19.1 (2025-09-14) {: #3.19.1 }
|
|
12
|
+
|
|
13
|
+
#### Bugfixes {: #3.19.1-bugfix }
|
|
14
|
+
|
|
15
|
+
- Fixed publication error when package's dists contain differing versions of its name.
|
|
16
|
+
[#907](https://github.com/pulp/pulp_python/issues/907)
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
11
20
|
## 3.19.0 (2025-08-26) {: #3.19.0 }
|
|
12
21
|
|
|
13
22
|
#### Features {: #3.19.0-feature }
|
|
@@ -59,9 +59,9 @@ def write_simple_api(publication):
|
|
|
59
59
|
python_models.PythonPackageContent.objects.filter(
|
|
60
60
|
pk__in=publication.repository_version.content, _pulp_domain=domain
|
|
61
61
|
)
|
|
62
|
-
.order_by("
|
|
62
|
+
.order_by("name__normalize")
|
|
63
63
|
.values_list("name", flat=True)
|
|
64
|
-
.distinct()
|
|
64
|
+
.distinct("name__normalize")
|
|
65
65
|
)
|
|
66
66
|
|
|
67
67
|
# write the root index, which lists all of the projects for which there is a package available
|
|
@@ -80,22 +80,22 @@ def write_simple_api(publication):
|
|
|
80
80
|
packages = python_models.PythonPackageContent.objects.filter(
|
|
81
81
|
pk__in=publication.repository_version.content, _pulp_domain=domain
|
|
82
82
|
)
|
|
83
|
-
releases = packages.order_by("
|
|
83
|
+
releases = packages.order_by("name__normalize").values("name", "filename", "sha256")
|
|
84
84
|
|
|
85
85
|
ind = 0
|
|
86
|
-
current_name = project_names[ind]
|
|
86
|
+
current_name = canonicalize_name(project_names[ind])
|
|
87
87
|
package_releases = []
|
|
88
88
|
for release in releases.iterator():
|
|
89
|
-
if release["name"] != current_name:
|
|
89
|
+
if canonicalize_name(release["name"]) != current_name:
|
|
90
90
|
write_project_page(
|
|
91
|
-
name=
|
|
91
|
+
name=current_name,
|
|
92
92
|
simple_dir=simple_dir,
|
|
93
93
|
package_releases=package_releases,
|
|
94
94
|
publication=publication,
|
|
95
95
|
)
|
|
96
96
|
package_releases = []
|
|
97
97
|
ind += 1
|
|
98
|
-
current_name = project_names[ind]
|
|
98
|
+
current_name = canonicalize_name(project_names[ind])
|
|
99
99
|
relative_path = release["filename"]
|
|
100
100
|
path = f"../../{relative_path}"
|
|
101
101
|
checksum = release["sha256"]
|
|
@@ -178,7 +178,7 @@ def python_content_factory(python_bindings, download_python_file, monitor_task):
|
|
|
178
178
|
|
|
179
179
|
task = python_bindings.ContentPackagesApi.create(**body).task
|
|
180
180
|
response = monitor_task(task)
|
|
181
|
-
return python_bindings.ContentPackagesApi.read(response.created_resources[
|
|
181
|
+
return python_bindings.ContentPackagesApi.read(response.created_resources[-1])
|
|
182
182
|
|
|
183
183
|
yield _gen_python_content
|
|
184
184
|
|
{pulp_python-3.19.0 → pulp_python-3.19.1}/pulp_python/tests/functional/api/test_crud_publications.py
RENAMED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import pytest
|
|
2
2
|
import random
|
|
3
|
+
from pypi_simple import PyPISimple
|
|
3
4
|
from urllib.parse import urljoin
|
|
4
5
|
|
|
5
6
|
from pulp_python.tests.functional.constants import (
|
|
@@ -109,3 +110,29 @@ def test_new_content_is_published(python_publication_workflow, python_distributi
|
|
|
109
110
|
url = urljoin(distro.base_url, "simple/")
|
|
110
111
|
proper, msgs = ensure_simple(url, {"shelf-reader": releases})
|
|
111
112
|
assert proper is True, msgs
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
@pytest.mark.parallel
|
|
116
|
+
def test_non_matching_canonicalized_name(
|
|
117
|
+
python_repo, python_content_factory, python_publication_factory, python_distribution_factory
|
|
118
|
+
):
|
|
119
|
+
"""Ensures a package with dists that have non-matching canonicalized names is published."""
|
|
120
|
+
packages = []
|
|
121
|
+
filenames = ["msg_parser-1.0.0-py2.py3-none-any.whl", "msg_parser-1.0.0.tar.gz"]
|
|
122
|
+
with PyPISimple() as client:
|
|
123
|
+
page = client.get_project_page("msg-parser")
|
|
124
|
+
for pkg in page.packages:
|
|
125
|
+
if pkg.filename in filenames:
|
|
126
|
+
c = python_content_factory(pkg.filename, url=pkg.url, repository=python_repo)
|
|
127
|
+
if c.filename.endswith(".tar.gz"):
|
|
128
|
+
# The metadata name in the SDist is not the same as the Wheel's name
|
|
129
|
+
assert c.name == "msg_parser"
|
|
130
|
+
else:
|
|
131
|
+
assert c.name == "msg-parser"
|
|
132
|
+
packages.append(c)
|
|
133
|
+
pub = python_publication_factory(repository=python_repo)
|
|
134
|
+
distro = python_distribution_factory(publication=pub)
|
|
135
|
+
|
|
136
|
+
url = urljoin(distro.base_url, "simple/")
|
|
137
|
+
proper, msgs = ensure_simple(url, {"msg-parser": filenames})
|
|
138
|
+
assert proper is True, msgs
|
{pulp_python-3.19.0 → pulp_python-3.19.1}/pulp_python/tests/functional/api/test_pypi_apis.py
RENAMED
|
@@ -225,26 +225,6 @@ def test_twine_upload(
|
|
|
225
225
|
check=True,
|
|
226
226
|
)
|
|
227
227
|
|
|
228
|
-
# Test re-uploading same packages with --skip-existing works
|
|
229
|
-
output = subprocess.run(
|
|
230
|
-
(
|
|
231
|
-
"twine",
|
|
232
|
-
"upload",
|
|
233
|
-
"--repository-url",
|
|
234
|
-
url,
|
|
235
|
-
dist_dir / "*",
|
|
236
|
-
"-u",
|
|
237
|
-
username,
|
|
238
|
-
"-p",
|
|
239
|
-
password,
|
|
240
|
-
"--skip-existing",
|
|
241
|
-
),
|
|
242
|
-
capture_output=True,
|
|
243
|
-
check=True,
|
|
244
|
-
text=True,
|
|
245
|
-
)
|
|
246
|
-
assert output.stdout.count("Skipping") == 2
|
|
247
|
-
|
|
248
228
|
|
|
249
229
|
@pytest.mark.parallel
|
|
250
230
|
def test_simple_redirect_with_publications(
|
|
@@ -7,7 +7,7 @@ build-backend = 'setuptools.build_meta'
|
|
|
7
7
|
|
|
8
8
|
[project]
|
|
9
9
|
name = "pulp-python"
|
|
10
|
-
version = "3.19.
|
|
10
|
+
version = "3.19.1"
|
|
11
11
|
description = "pulp-python plugin for the Pulp Project"
|
|
12
12
|
readme = "README.md"
|
|
13
13
|
authors = [
|
|
@@ -76,7 +76,7 @@ ignore = [
|
|
|
76
76
|
[tool.bumpversion]
|
|
77
77
|
# This section is managed by the plugin template. Do not edit manually.
|
|
78
78
|
|
|
79
|
-
current_version = "3.19.
|
|
79
|
+
current_version = "3.19.1"
|
|
80
80
|
commit = false
|
|
81
81
|
tag = false
|
|
82
82
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pulp_python-3.19.0 → pulp_python-3.19.1}/pulp_python/app/migrations/0003_new_sync_filters.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pulp_python-3.19.0 → pulp_python-3.19.1}/pulp_python/app/migrations/0010_update_json_field.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pulp_python-3.19.0 → pulp_python-3.19.1}/pulp_python/app/migrations/0013_add_rbac_permissions.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pulp_python-3.19.0 → pulp_python-3.19.1}/pulp_python/tests/functional/api/test_auto_publish.py
RENAMED
|
File without changes
|
{pulp_python-3.19.0 → pulp_python-3.19.1}/pulp_python/tests/functional/api/test_consume_content.py
RENAMED
|
File without changes
|
{pulp_python-3.19.0 → pulp_python-3.19.1}/pulp_python/tests/functional/api/test_crud_content_unit.py
RENAMED
|
File without changes
|
{pulp_python-3.19.0 → pulp_python-3.19.1}/pulp_python/tests/functional/api/test_crud_remotes.py
RENAMED
|
File without changes
|
|
File without changes
|
{pulp_python-3.19.0 → pulp_python-3.19.1}/pulp_python/tests/functional/api/test_download_content.py
RENAMED
|
File without changes
|
{pulp_python-3.19.0 → pulp_python-3.19.1}/pulp_python/tests/functional/api/test_export_import.py
RENAMED
|
File without changes
|
{pulp_python-3.19.0 → pulp_python-3.19.1}/pulp_python/tests/functional/api/test_full_mirror.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|