pulpcore 3.81.0__py3-none-any.whl → 3.82.1__py3-none-any.whl
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.
Potentially problematic release.
This version of pulpcore might be problematic. Click here for more details.
- pulp_certguard/app/__init__.py +1 -1
- pulp_file/app/__init__.py +1 -1
- pulpcore/app/apps.py +1 -1
- pulpcore/app/migrations/0132_task_profile_options.py +19 -0
- pulpcore/app/models/fields.py +2 -2
- pulpcore/app/models/task.py +1 -0
- pulpcore/app/replica.py +3 -9
- pulpcore/app/serializers/domain.py +1 -0
- pulpcore/app/serializers/publication.py +4 -0
- pulpcore/app/settings.py +2 -0
- pulpcore/content/handler.py +14 -13
- pulpcore/middleware.py +25 -0
- pulpcore/openapi/__init__.py +13 -0
- pulpcore/tasking/_util.py +11 -6
- pulpcore/tasking/tasks.py +3 -0
- pulpcore/tests/functional/api/test_tasking.py +19 -0
- pulpcore/tests/functional/api/using_plugin/test_content_delivery.py +34 -0
- {pulpcore-3.81.0.dist-info → pulpcore-3.82.1.dist-info}/METADATA +4 -4
- {pulpcore-3.81.0.dist-info → pulpcore-3.82.1.dist-info}/RECORD +23 -22
- {pulpcore-3.81.0.dist-info → pulpcore-3.82.1.dist-info}/WHEEL +0 -0
- {pulpcore-3.81.0.dist-info → pulpcore-3.82.1.dist-info}/entry_points.txt +0 -0
- {pulpcore-3.81.0.dist-info → pulpcore-3.82.1.dist-info}/licenses/LICENSE +0 -0
- {pulpcore-3.81.0.dist-info → pulpcore-3.82.1.dist-info}/top_level.txt +0 -0
pulp_certguard/app/__init__.py
CHANGED
pulp_file/app/__init__.py
CHANGED
pulpcore/app/apps.py
CHANGED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Generated by Django 4.2.10 on 2025-06-26 19:44
|
|
2
|
+
|
|
3
|
+
import django.contrib.postgres.fields
|
|
4
|
+
from django.db import migrations, models
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class Migration(migrations.Migration):
|
|
8
|
+
|
|
9
|
+
dependencies = [
|
|
10
|
+
('core', '0131_distribution_checkpoint_publication_checkpoint'),
|
|
11
|
+
]
|
|
12
|
+
|
|
13
|
+
operations = [
|
|
14
|
+
migrations.AddField(
|
|
15
|
+
model_name='task',
|
|
16
|
+
name='profile_options',
|
|
17
|
+
field=django.contrib.postgres.fields.ArrayField(base_field=models.TextField(), null=True, size=None),
|
|
18
|
+
),
|
|
19
|
+
]
|
pulpcore/app/models/fields.py
CHANGED
|
@@ -90,7 +90,7 @@ class ArtifactFileField(FileField):
|
|
|
90
90
|
|
|
91
91
|
|
|
92
92
|
class EncryptedTextField(TextField):
|
|
93
|
-
"""A field
|
|
93
|
+
"""A field that encrypts text using settings.DB_ENCRYPTION_KEY."""
|
|
94
94
|
|
|
95
95
|
def __init__(self, *args, **kwargs):
|
|
96
96
|
if kwargs.get("primary_key"):
|
|
@@ -114,7 +114,7 @@ class EncryptedTextField(TextField):
|
|
|
114
114
|
|
|
115
115
|
|
|
116
116
|
class EncryptedJSONField(JSONField):
|
|
117
|
-
"""A Field
|
|
117
|
+
"""A Field that encrypts the JSON text using settings.DP_ENCRYPTION_KEY."""
|
|
118
118
|
|
|
119
119
|
def __init__(self, *args, **kwargs):
|
|
120
120
|
if kwargs.get("primary_key"):
|
pulpcore/app/models/task.py
CHANGED
|
@@ -147,6 +147,7 @@ class Task(BaseModel, AutoAddObjPermsMixin):
|
|
|
147
147
|
pulp_domain = models.ForeignKey("Domain", default=get_domain_pk, on_delete=models.CASCADE)
|
|
148
148
|
versions = HStoreField(default=dict)
|
|
149
149
|
|
|
150
|
+
profile_options = ArrayField(models.TextField(), null=True)
|
|
150
151
|
profile_artifacts = models.ManyToManyField("Artifact", through=ProfileArtifact)
|
|
151
152
|
|
|
152
153
|
immediate = models.BooleanField(default=False, null=True)
|
pulpcore/app/replica.py
CHANGED
|
@@ -90,15 +90,9 @@ class Replicator:
|
|
|
90
90
|
params = {"q": q}
|
|
91
91
|
else:
|
|
92
92
|
params = {}
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
distributions = self.distribution_ctx_cls(self.pulp_ctx).list(list_size, offset, params)
|
|
97
|
-
for distro in distributions:
|
|
98
|
-
yield distro
|
|
99
|
-
if len(distributions) < list_size:
|
|
100
|
-
break
|
|
101
|
-
offset += list_size
|
|
93
|
+
yield from self.distribution_ctx_cls(self.pulp_ctx).list_iterator(
|
|
94
|
+
parameters=params, batch_size=100
|
|
95
|
+
)
|
|
102
96
|
|
|
103
97
|
def labels(self, upstream_object):
|
|
104
98
|
upstream_labels = getattr(upstream_object, "pulp_labels", {})
|
|
@@ -342,6 +342,7 @@ class StorageSettingsSerializer(serializers.Serializer):
|
|
|
342
342
|
STORAGE_MAPPING = {
|
|
343
343
|
"pulpcore.app.models.storage.FileSystem": FileSystemSettingsSerializer,
|
|
344
344
|
"pulpcore.app.models.storage.PulpSFTPStorage": SFTPSettingsSerializer,
|
|
345
|
+
"storages.backends.s3.S3Storage": AmazonS3SettingsSerializer,
|
|
345
346
|
"storages.backends.s3boto3.S3Boto3Storage": AmazonS3SettingsSerializer,
|
|
346
347
|
"storages.backends.azure_storage.AzureStorage": AzureSettingsSerializer,
|
|
347
348
|
"storages.backends.gcloud.GoogleCloudStorage": GoogleSettingsSerializer,
|
|
@@ -78,6 +78,10 @@ class PublicationSerializer(ModelSerializer):
|
|
|
78
78
|
|
|
79
79
|
|
|
80
80
|
class ContentGuardSerializer(ModelSerializer):
|
|
81
|
+
"""
|
|
82
|
+
Base class for content guard serializers.
|
|
83
|
+
"""
|
|
84
|
+
|
|
81
85
|
pulp_href = DetailIdentityField(view_name_pattern=r"contentguards(-.*/.*)-detail")
|
|
82
86
|
|
|
83
87
|
name = serializers.CharField(
|
pulpcore/app/settings.py
CHANGED
|
@@ -173,6 +173,7 @@ MIDDLEWARE = [
|
|
|
173
173
|
"django.middleware.clickjacking.XFrameOptionsMiddleware",
|
|
174
174
|
"pulpcore.middleware.DomainMiddleware",
|
|
175
175
|
"pulpcore.middleware.APIRootRewriteMiddleware",
|
|
176
|
+
"pulpcore.middleware.TaskProfilerMiddleware",
|
|
176
177
|
]
|
|
177
178
|
|
|
178
179
|
AUTHENTICATION_BACKENDS = [
|
|
@@ -436,6 +437,7 @@ storage_validator = (
|
|
|
436
437
|
Validator("REDIRECT_TO_OBJECT_STORAGE", eq=False)
|
|
437
438
|
| Validator(*storage_keys, eq="pulpcore.app.models.storage.FileSystem")
|
|
438
439
|
| Validator(*storage_keys, eq="storages.backends.azure_storage.AzureStorage")
|
|
440
|
+
| Validator(*storage_keys, eq="storages.backends.s3.S3Storage")
|
|
439
441
|
| Validator(*storage_keys, eq="storages.backends.s3boto3.S3Boto3Storage")
|
|
440
442
|
| Validator(*storage_keys, eq="storages.backends.gcloud.GoogleCloudStorage")
|
|
441
443
|
)
|
pulpcore/content/handler.py
CHANGED
|
@@ -1279,19 +1279,20 @@ class Handler:
|
|
|
1279
1279
|
# "backstop" the prepare() call here, so the write() will be allowed.
|
|
1280
1280
|
if not response.prepared:
|
|
1281
1281
|
await response.prepare(request)
|
|
1282
|
-
if
|
|
1283
|
-
|
|
1284
|
-
|
|
1285
|
-
|
|
1286
|
-
|
|
1287
|
-
|
|
1288
|
-
|
|
1289
|
-
|
|
1290
|
-
|
|
1291
|
-
|
|
1292
|
-
|
|
1293
|
-
|
|
1294
|
-
|
|
1282
|
+
if request.method == "GET":
|
|
1283
|
+
if range_start or range_stop:
|
|
1284
|
+
start_byte_pos = 0
|
|
1285
|
+
end_byte_pos = len(data)
|
|
1286
|
+
if range_start:
|
|
1287
|
+
start_byte_pos = max(0, range_start - data_size_handled)
|
|
1288
|
+
if range_stop:
|
|
1289
|
+
end_byte_pos = min(len(data), range_stop - data_size_handled)
|
|
1290
|
+
|
|
1291
|
+
data_for_client = data[start_byte_pos:end_byte_pos]
|
|
1292
|
+
await response.write(data_for_client)
|
|
1293
|
+
data_size_handled = data_size_handled + len(data)
|
|
1294
|
+
else:
|
|
1295
|
+
await response.write(data)
|
|
1295
1296
|
if remote.policy != Remote.STREAMED:
|
|
1296
1297
|
await original_handle_data(data)
|
|
1297
1298
|
|
pulpcore/middleware.py
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import time
|
|
2
|
+
from contextvars import ContextVar
|
|
2
3
|
|
|
3
4
|
from django.http.response import Http404
|
|
4
5
|
from django.conf import settings
|
|
@@ -13,6 +14,8 @@ from pulpcore.app.util import (
|
|
|
13
14
|
set_domain,
|
|
14
15
|
)
|
|
15
16
|
|
|
17
|
+
x_task_diagnostics_var = ContextVar("x_profile_task")
|
|
18
|
+
|
|
16
19
|
|
|
17
20
|
class DomainMiddleware:
|
|
18
21
|
"""
|
|
@@ -143,3 +146,25 @@ class DjangoMetricsMiddleware:
|
|
|
143
146
|
match = getattr(request, "resolver_match", "")
|
|
144
147
|
route = getattr(match, "route", "")
|
|
145
148
|
return route
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
class TaskProfilerMiddleware:
|
|
152
|
+
"""
|
|
153
|
+
Middleware that looks for the presence of X-TASK-DIAGNOSTICS header and provides its value
|
|
154
|
+
as a ContextVar to the dispatch() method in the tasking system. It enables generating
|
|
155
|
+
profiling data of tasks dispatched via API.
|
|
156
|
+
"""
|
|
157
|
+
|
|
158
|
+
def __init__(self, get_response):
|
|
159
|
+
self.get_response = get_response
|
|
160
|
+
|
|
161
|
+
def __call__(self, request):
|
|
162
|
+
if "HTTP_X_TASK_DIAGNOSTICS" in request.META:
|
|
163
|
+
task_diagnostics = request.META["HTTP_X_TASK_DIAGNOSTICS"]
|
|
164
|
+
ctx_token = x_task_diagnostics_var.set(task_diagnostics.split(","))
|
|
165
|
+
try:
|
|
166
|
+
return self.get_response(request)
|
|
167
|
+
finally:
|
|
168
|
+
x_task_diagnostics_var.reset(ctx_token)
|
|
169
|
+
else:
|
|
170
|
+
return self.get_response(request)
|
pulpcore/openapi/__init__.py
CHANGED
|
@@ -201,6 +201,19 @@ class PulpAutoSchema(AutoSchema):
|
|
|
201
201
|
name = name + "Response"
|
|
202
202
|
return name
|
|
203
203
|
|
|
204
|
+
def get_override_parameters(self):
|
|
205
|
+
parameters = super().get_override_parameters()
|
|
206
|
+
parameters.append(
|
|
207
|
+
OpenApiParameter(
|
|
208
|
+
name="X-Task-Diagnostics",
|
|
209
|
+
location=OpenApiParameter.HEADER,
|
|
210
|
+
required=False,
|
|
211
|
+
type={"type": "array", "items": {"type": "string"}},
|
|
212
|
+
description="List of profilers to use on tasks.",
|
|
213
|
+
)
|
|
214
|
+
)
|
|
215
|
+
return parameters
|
|
216
|
+
|
|
204
217
|
def map_parsers(self):
|
|
205
218
|
"""
|
|
206
219
|
Get request parsers.
|
pulpcore/tasking/_util.py
CHANGED
|
@@ -127,21 +127,26 @@ def perform_task(task_pk, task_working_dir_rel_path):
|
|
|
127
127
|
set_domain(task.pulp_domain)
|
|
128
128
|
os.chdir(task_working_dir_rel_path)
|
|
129
129
|
|
|
130
|
-
if
|
|
131
|
-
|
|
130
|
+
if task.profile_options:
|
|
131
|
+
profilers = set(task.profile_options) & set(settings.TASK_DIAGNOSTICS)
|
|
132
|
+
if unavailable_profilers := set(task.profile_options) - set(settings.TASK_DIAGNOSTICS):
|
|
133
|
+
_logger.warning(
|
|
134
|
+
"Requested task diagnostic profilers are not available: %s", unavailable_profilers
|
|
135
|
+
)
|
|
136
|
+
_execute_task_and_profile(task, profilers)
|
|
132
137
|
else:
|
|
133
138
|
execute_task(task)
|
|
134
139
|
|
|
135
140
|
|
|
136
|
-
def _execute_task_and_profile(task):
|
|
141
|
+
def _execute_task_and_profile(task, profile_options):
|
|
137
142
|
with tempfile.TemporaryDirectory(dir=settings.WORKING_DIRECTORY) as temp_dir:
|
|
138
143
|
_execute_task = execute_task
|
|
139
144
|
|
|
140
|
-
if
|
|
145
|
+
if "memory" in profile_options:
|
|
141
146
|
_execute_task = _memory_diagnostic_decorator(temp_dir, _execute_task)
|
|
142
|
-
if
|
|
147
|
+
if "pyinstrument" in profile_options:
|
|
143
148
|
_execute_task = _pyinstrument_diagnostic_decorator(temp_dir, _execute_task)
|
|
144
|
-
if
|
|
149
|
+
if "memray" in profile_options:
|
|
145
150
|
_execute_task = _memray_diagnostic_decorator(temp_dir, _execute_task)
|
|
146
151
|
|
|
147
152
|
_execute_task(task)
|
pulpcore/tasking/tasks.py
CHANGED
|
@@ -26,6 +26,7 @@ from pulpcore.constants import (
|
|
|
26
26
|
TASK_DISPATCH_LOCK,
|
|
27
27
|
IMMEDIATE_TIMEOUT,
|
|
28
28
|
)
|
|
29
|
+
from pulpcore.middleware import x_task_diagnostics_var
|
|
29
30
|
from pulpcore.tasking.kafka import send_task_notification
|
|
30
31
|
|
|
31
32
|
_logger = logging.getLogger(__name__)
|
|
@@ -246,7 +247,9 @@ def dispatch(
|
|
|
246
247
|
versions=versions,
|
|
247
248
|
immediate=immediate,
|
|
248
249
|
deferred=deferred,
|
|
250
|
+
profile_options=x_task_diagnostics_var.get(None),
|
|
249
251
|
)
|
|
252
|
+
task.refresh_from_db() # The database may have assigned a timestamp for us.
|
|
250
253
|
if newest_created and task.pulp_created <= newest_created:
|
|
251
254
|
# Let this workaround not row forever into the future.
|
|
252
255
|
if newest_created - task.pulp_created > timedelta(seconds=1):
|
|
@@ -33,6 +33,25 @@ def test_retrieving_task_profile_artifacts(gen_user, pulpcore_bindings, task):
|
|
|
33
33
|
assert pulpcore_bindings.TasksApi.profile_artifacts(task.pulp_href).urls is not None
|
|
34
34
|
|
|
35
35
|
|
|
36
|
+
@pytest.mark.parallel
|
|
37
|
+
def test_profiling_task_using_header(gen_user, pulpcore_bindings, monitor_task, pulp_settings):
|
|
38
|
+
# Check that no profile artifacts are created by default
|
|
39
|
+
task_href = pulpcore_bindings.OrphansCleanupApi.cleanup({"orphan_protection_time": 10000}).task
|
|
40
|
+
task = monitor_task(task_href)
|
|
41
|
+
assert pulpcore_bindings.TasksApi.profile_artifacts(task.pulp_href).urls == {}
|
|
42
|
+
|
|
43
|
+
# Check that profile artifacts are created when X-TASK-DIAGNOSTICS headers is passed
|
|
44
|
+
task_href = pulpcore_bindings.OrphansCleanupApi.cleanup(
|
|
45
|
+
{"orphan_protection_time": 10000}, x_task_diagnostics=["memory"]
|
|
46
|
+
).task
|
|
47
|
+
task = monitor_task(task_href)
|
|
48
|
+
profile_artifacts_urls = pulpcore_bindings.TasksApi.profile_artifacts(task.pulp_href).urls
|
|
49
|
+
if "memory" in pulp_settings.TASK_DIAGNOSTICS:
|
|
50
|
+
assert "memory_profile" in profile_artifacts_urls
|
|
51
|
+
else:
|
|
52
|
+
assert "memory_profile" not in profile_artifacts_urls
|
|
53
|
+
|
|
54
|
+
|
|
36
55
|
@pytest.mark.parallel
|
|
37
56
|
def test_multi_resource_locking(dispatch_task, monitor_task):
|
|
38
57
|
task_href1 = dispatch_task(
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
"""Tests related to content delivery."""
|
|
2
2
|
|
|
3
3
|
import hashlib
|
|
4
|
+
import requests
|
|
4
5
|
import subprocess
|
|
5
6
|
import uuid
|
|
7
|
+
from random import sample
|
|
6
8
|
from urllib.parse import urljoin
|
|
7
9
|
|
|
8
10
|
import pytest
|
|
@@ -244,3 +246,35 @@ def test_handling_remote_artifact_on_demand_streaming_failure(
|
|
|
244
246
|
# WHEN/THEN (second request)
|
|
245
247
|
actual_checksum = download_from_distribution(content_name, distribution)
|
|
246
248
|
assert actual_checksum == expected_checksum
|
|
249
|
+
|
|
250
|
+
|
|
251
|
+
@pytest.mark.parallel
|
|
252
|
+
def test_head_request_large_on_demand_file(
|
|
253
|
+
file_repo_with_auto_publish,
|
|
254
|
+
file_remote_factory,
|
|
255
|
+
file_bindings,
|
|
256
|
+
range_header_manifest_path,
|
|
257
|
+
distribution_base_url,
|
|
258
|
+
file_distribution_factory,
|
|
259
|
+
monitor_task,
|
|
260
|
+
):
|
|
261
|
+
"""Test that a HEAD request to a large on-demand file properly saves the file."""
|
|
262
|
+
# range_header_manifest_path has 8 files, each 4MB
|
|
263
|
+
remote = file_remote_factory(manifest_path=range_header_manifest_path, policy="on_demand")
|
|
264
|
+
body = RepositorySyncURL(remote=remote.pulp_href)
|
|
265
|
+
monitor_task(
|
|
266
|
+
file_bindings.RepositoriesFileApi.sync(file_repo_with_auto_publish.pulp_href, body).task
|
|
267
|
+
)
|
|
268
|
+
repo = file_bindings.RepositoriesFileApi.read(file_repo_with_auto_publish.pulp_href)
|
|
269
|
+
content = file_bindings.ContentFilesApi.list(repository_version=repo.latest_version_href)
|
|
270
|
+
content_href_filenames = sample([(c.pulp_href, c.relative_path) for c in content.results], k=3)
|
|
271
|
+
|
|
272
|
+
distro = file_distribution_factory(repository=repo.pulp_href)
|
|
273
|
+
for _, content_filename in content_href_filenames:
|
|
274
|
+
url = urljoin(distribution_base_url(distro.base_url), content_filename)
|
|
275
|
+
response = requests.head(url)
|
|
276
|
+
assert response.status_code == 200
|
|
277
|
+
# Give some time for the file to be saved
|
|
278
|
+
for content_href, _ in content_href_filenames:
|
|
279
|
+
content = file_bindings.ContentFilesApi.read(content_href)
|
|
280
|
+
assert content.artifact is not None
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pulpcore
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.82.1
|
|
4
4
|
Summary: Pulp Django Application and Related Modules
|
|
5
5
|
Author-email: Pulp Team <pulp-list@redhat.com>
|
|
6
6
|
Project-URL: Homepage, https://pulpproject.org
|
|
@@ -23,7 +23,7 @@ Description-Content-Type: text/markdown
|
|
|
23
23
|
License-File: LICENSE
|
|
24
24
|
Requires-Dist: aiodns<3.6,>=3.3.0
|
|
25
25
|
Requires-Dist: aiofiles<=24.1.0,>=22.1
|
|
26
|
-
Requires-Dist: aiohttp<3.13,>=3.8.
|
|
26
|
+
Requires-Dist: aiohttp<3.13,>=3.8.3
|
|
27
27
|
Requires-Dist: asyncio-throttle<=1.0.2,>=1.0
|
|
28
28
|
Requires-Dist: async-timeout<4.0.4,>=4.0.3; python_version < "3.11"
|
|
29
29
|
Requires-Dist: backoff<2.3,>=2.1.2
|
|
@@ -50,7 +50,7 @@ Requires-Dist: opentelemetry-api<1.35,>=1.27.0
|
|
|
50
50
|
Requires-Dist: opentelemetry-sdk<1.35,>=1.27.0
|
|
51
51
|
Requires-Dist: opentelemetry-exporter-otlp-proto-http<1.35,>=1.27.0
|
|
52
52
|
Requires-Dist: protobuf<6.0,>=4.21.1
|
|
53
|
-
Requires-Dist: pulp-glue<0.34,>=0.
|
|
53
|
+
Requires-Dist: pulp-glue<0.34,>=0.28.0
|
|
54
54
|
Requires-Dist: pygtrie<=2.5.0,>=2.5
|
|
55
55
|
Requires-Dist: psycopg[binary]<3.3,>=3.1.8
|
|
56
56
|
Requires-Dist: pyparsing<3.3,>=3.1.0
|
|
@@ -74,7 +74,7 @@ Provides-Extra: prometheus
|
|
|
74
74
|
Requires-Dist: django-prometheus; extra == "prometheus"
|
|
75
75
|
Provides-Extra: kafka
|
|
76
76
|
Requires-Dist: cloudevents==1.11.0; extra == "kafka"
|
|
77
|
-
Requires-Dist: confluent-kafka<2.
|
|
77
|
+
Requires-Dist: confluent-kafka<2.11.0,>=2.4.0; extra == "kafka"
|
|
78
78
|
Provides-Extra: diagnostics
|
|
79
79
|
Requires-Dist: pyinstrument~=5.0; extra == "diagnostics"
|
|
80
80
|
Requires-Dist: memray~=1.17; extra == "diagnostics"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
pulp_certguard/__init__.py,sha256=llnEd00PrsAretsgAOHiNKFbmvIdXe3iDVPmSaKz7gU,71
|
|
2
2
|
pulp_certguard/pytest_plugin.py,sha256=qhRbChzqN2PROtD-65KuoTfKr5k9T3GPsz9daFgpqpM,852
|
|
3
|
-
pulp_certguard/app/__init__.py,sha256=
|
|
3
|
+
pulp_certguard/app/__init__.py,sha256=pNyBv0z5czCjZBLtlgnrA0PMQl6eSSSJvf288RYZImY,297
|
|
4
4
|
pulp_certguard/app/models.py,sha256=xy5IWxf0LQxayIDmQw25Y2YhB_NrlTGvuvdY-YW7QBU,8119
|
|
5
5
|
pulp_certguard/app/serializers.py,sha256=3jxWu82vU3xA578Qbyz-G4Q9Zlh3MFLGRHzX62M0RF8,1826
|
|
6
6
|
pulp_certguard/app/utils.py,sha256=O6T1Npdb8fu3XqIkDJd8PQdEFJWPUeQ-i_aHXBl7MEc,816
|
|
@@ -49,7 +49,7 @@ pulp_certguard/tests/unit/test_models.py,sha256=TBI0yKsrdbnJSPeBFfxSqhXK7zaNvR6q
|
|
|
49
49
|
pulp_file/__init__.py,sha256=0vOCXofR6Eyxkg4y66esnOGPeESCe23C1cNBHj56w44,61
|
|
50
50
|
pulp_file/manifest.py,sha256=1WwIOJrPSkFcmkRm7CkWifVOCoZvo_nnANgce6uuG7U,3796
|
|
51
51
|
pulp_file/pytest_plugin.py,sha256=l1PvTxUi5D3uJy4SnHWNhr-otWEYNcm-kc5nSqVJg0Y,10646
|
|
52
|
-
pulp_file/app/__init__.py,sha256=
|
|
52
|
+
pulp_file/app/__init__.py,sha256=IYW8CDg6mH55FE9f_nL4g99mtza5qwz0z_QaaD_vl28,292
|
|
53
53
|
pulp_file/app/modelresource.py,sha256=v-m-_bBEsfr8wG0TI5ffx1TuKUy2-PsirhuQz4XXF-0,1063
|
|
54
54
|
pulp_file/app/models.py,sha256=QsrVg_2uKqnR89sLN2Y7Zy260_nLIcUfa94uZowlmFw,4571
|
|
55
55
|
pulp_file/app/replica.py,sha256=OtNWVmdFUgNTYhPttftVNQnSrnvx2_hnrJgtW_G0Vrg,1894
|
|
@@ -104,13 +104,13 @@ pulpcore/backends.py,sha256=Ax_MJpbvtNDg_rhkHaiQRm39DBSS2dH8UpMRJN2T0oE,4482
|
|
|
104
104
|
pulpcore/constants.py,sha256=06lih8sVRzHCrBXGmoT3Q-9ZkKZUEEYZ8EoeFfxEq04,4673
|
|
105
105
|
pulpcore/filters.py,sha256=dD5oRRkWg65s3LoObr-ipRvRsxZK_3Zr0lKMNr9Sg5o,16682
|
|
106
106
|
pulpcore/metrics.py,sha256=Mfq-nnRjRf3vBHFO-ux-4d1I3yE7TgeptwgiSgGz4rA,2230
|
|
107
|
-
pulpcore/middleware.py,sha256=
|
|
107
|
+
pulpcore/middleware.py,sha256=10Jxc4Iq03gZD3n39t63OmBCpdftcke8bxEd-LioJlA,5973
|
|
108
108
|
pulpcore/migrations.py,sha256=gzUTxcXnbYkM0_vN8Rfr_XWuwsGWedVZAwNy9JqJ8sQ,2476
|
|
109
109
|
pulpcore/pytest_plugin.py,sha256=skubiEUIevVURr4LnmmVMt_ZeH5vT9mI0yiPUYerMnQ,38090
|
|
110
110
|
pulpcore/responses.py,sha256=mIGKmdCfTSoZxbFu4yIH1xbdLx1u5gqt3D99LTamcJg,6125
|
|
111
111
|
pulpcore/app/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
112
112
|
pulpcore/app/access_policy.py,sha256=5vCKy6WoHtIt1_-eS5vMaZ7CmR4G-CIpsrB8yT-d88Q,6079
|
|
113
|
-
pulpcore/app/apps.py,sha256=
|
|
113
|
+
pulpcore/app/apps.py,sha256=k2nBGyQR2utg5pRERo-8aN-pZhbrAwkmRWgCHMRbCnA,17860
|
|
114
114
|
pulpcore/app/authentication.py,sha256=1LIJW6HIQQlZrliHy__jdzkDEh6Oj7xKgd0V-vRcDus,2855
|
|
115
115
|
pulpcore/app/checks.py,sha256=jbfTF7nmftBbky4AQXHigpyCaGydKasvRUXsd72JZVg,1946
|
|
116
116
|
pulpcore/app/entrypoint.py,sha256=YIfQpM5UxybBTasiEY5ptq--UmqPqjdIGnwmqVsDC7E,4972
|
|
@@ -126,10 +126,10 @@ pulpcore/app/openpgp.py,sha256=MYwCTGz7J9-Zr5aSBrz7KGWWWNC1EI-aItGb5dr7XPE,17246
|
|
|
126
126
|
pulpcore/app/pulp_hashlib.py,sha256=NoVCO8duLz9rggPcilg0smi6fTDnsn-zS9dXgO831Pg,1327
|
|
127
127
|
pulpcore/app/pulpcore_gunicorn_application.py,sha256=caqbDg9dhzECbx9Ss76biuEARhquj9gQaSL6v3XLy2w,2612
|
|
128
128
|
pulpcore/app/redis_connection.py,sha256=VTdG0ulXuyESjYV6SJdG_jLzkLZH-MlLcD6pielwRSk,952
|
|
129
|
-
pulpcore/app/replica.py,sha256=
|
|
129
|
+
pulpcore/app/replica.py,sha256=rGE14OBaR_FKxmHL7NMxf_OizMyS-90IPsMRo_j9YRI,11474
|
|
130
130
|
pulpcore/app/response.py,sha256=hYH_jSBrxmRsBr2bknmXE1qfs2g8JjDTXYcQ5ZWlF_c,1950
|
|
131
131
|
pulpcore/app/role_util.py,sha256=84HSt8_9fxB--dtfSyg_TumVgOdyBbyP6rBaiAfTpOU,22393
|
|
132
|
-
pulpcore/app/settings.py,sha256=
|
|
132
|
+
pulpcore/app/settings.py,sha256=HxZj3R15UG_AhwhNIs1VFXZqPuBHW3shjHkPwqvZMqo,22548
|
|
133
133
|
pulpcore/app/urls.py,sha256=0gdI74CAdycJStXSw1gknviDGe3J3k0UhS4J8RYa5dg,8120
|
|
134
134
|
pulpcore/app/util.py,sha256=nYF6nZXgqVk4U1QeZEpWYX-wqitGSGAJip6W78IfXUk,24432
|
|
135
135
|
pulpcore/app/wsgi.py,sha256=7rpZ_1NHEN_UfeNZCj8206bas1WeqRkHnGdxpd7rdDI,492
|
|
@@ -284,6 +284,7 @@ pulpcore/app/migrations/0129_content_pulp_labels.py,sha256=3Ee8lpGfo02t-1tnOH1CJ
|
|
|
284
284
|
pulpcore/app/migrations/0130_upstreampulp_policy.py,sha256=PLpgBU6iXTl7gruCe12aA5Zk4eG6heyrC6Rh1jeaxps,709
|
|
285
285
|
pulpcore/app/migrations/0131_distribution_checkpoint_publication_checkpoint.py,sha256=MXZXQapnSXVfV9FFiIaoMb6M7qAnAJwtEmN6hSlJ8RQ,561
|
|
286
286
|
pulpcore/app/migrations/0132_alter_content_options.py,sha256=hrhUTsRqQJgwC6wU9Ys5AvyVz2YCzklj2OuVf6hyBfs,477
|
|
287
|
+
pulpcore/app/migrations/0132_task_profile_options.py,sha256=ljdIm5-NXl_8s87HzkthvUxr7eHhLaETrr5qNtAVKDE,518
|
|
287
288
|
pulpcore/app/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
288
289
|
pulpcore/app/models/__init__.py,sha256=9JKMGKbEV6nJPep_K36rnWnS1QWMKBFSty-Hkr65JVk,3459
|
|
289
290
|
pulpcore/app/models/access_policy.py,sha256=o4L41RGoZ5UMmh5UeeenmadD5MJgShguphgd4eAVxQA,6071
|
|
@@ -293,7 +294,7 @@ pulpcore/app/models/base.py,sha256=YbbH4LEEKIlFOWX_73bsYFlum8eOPmxHkESuKQTIapY,9
|
|
|
293
294
|
pulpcore/app/models/content.py,sha256=8NE__k2suNvI1L9eNeWvIqB6i_fmpBHRJEt_B50S1zc,35713
|
|
294
295
|
pulpcore/app/models/domain.py,sha256=c9EUAKPEKKpeNxwDGhdw6UyD5cyZGrIA3qzjsN-RIc0,3685
|
|
295
296
|
pulpcore/app/models/exporter.py,sha256=rAa-abuyJqV-o1BNaoSxrYlxoUGBMqZQ0laMCVou84w,4325
|
|
296
|
-
pulpcore/app/models/fields.py,sha256=
|
|
297
|
+
pulpcore/app/models/fields.py,sha256=NJMASz5iQc95GSqzWFiWqsJhdaLM75udfci3IptvTlY,6451
|
|
297
298
|
pulpcore/app/models/generic.py,sha256=PWeVttDRysgy9aReSkJ0TUORwyTf1-lE68fp8wMGhik,962
|
|
298
299
|
pulpcore/app/models/importer.py,sha256=HECnV3oAPSAgFugYE72RNvh5l1wUs_S69NL80BMp0uc,3082
|
|
299
300
|
pulpcore/app/models/openpgp.py,sha256=3R5p8ZBPq63NzaE2_EwCXEMYPUQu7QUWanMcKCOoWkM,7874
|
|
@@ -304,7 +305,7 @@ pulpcore/app/models/repository.py,sha256=xBMKsryirkpZyrQHnFbwolNbvyX1jHljcqC1ofv
|
|
|
304
305
|
pulpcore/app/models/role.py,sha256=dZklNd2VeAw4cT6dyJ7SyTBt9sZvdqakY86wXGAY3vU,3287
|
|
305
306
|
pulpcore/app/models/status.py,sha256=72oUOJ7BnCAw3uDbc-XuI72oAyP2llCoBic4zb2JP78,3683
|
|
306
307
|
pulpcore/app/models/storage.py,sha256=2b-DQWaO31NqjV6FiISALegND-sQZAU7BVAsduUvm3o,6780
|
|
307
|
-
pulpcore/app/models/task.py,sha256=
|
|
308
|
+
pulpcore/app/models/task.py,sha256=2w0fXHeErSrVssCfP8LeUuYjKgupAbhfR_IkWG8wmus,14950
|
|
308
309
|
pulpcore/app/models/upload.py,sha256=3njXT2rrVJwBjEDegvqcLD9_7cPnnl974lhbAhikEp8,3004
|
|
309
310
|
pulpcore/app/protobuf/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
310
311
|
pulpcore/app/protobuf/analytics_pb2.py,sha256=-4CkbSW8JUAEIjZJBTPAJ5QezFJOdCPiDhx8_KA1bMU,2168
|
|
@@ -313,14 +314,14 @@ pulpcore/app/serializers/access_policy.py,sha256=NNtuzDW5H4RGfy5LbRFEHWDTDzXdL-K
|
|
|
313
314
|
pulpcore/app/serializers/acs.py,sha256=wBbGE5YHR7dJWuicbDtiPQUJ7xEgz1zKHGkJEaMfpDU,5834
|
|
314
315
|
pulpcore/app/serializers/base.py,sha256=ojWmsr2U2Mx8qpSFxqHLNQyfU2Z9q7hY1NUwVs9s3HE,21418
|
|
315
316
|
pulpcore/app/serializers/content.py,sha256=TKEh774Q-0l1AfUeMmVxPM5lk5UiYZxgkt9NU1RjZ9M,11966
|
|
316
|
-
pulpcore/app/serializers/domain.py,sha256
|
|
317
|
+
pulpcore/app/serializers/domain.py,sha256=y2qXdf2gSvWH5UtYULhX390u6wWmegg-GD9g5QwqZJA,22758
|
|
317
318
|
pulpcore/app/serializers/exporter.py,sha256=TxAgHDt34YUGPusawn7B8HL3bBymp46__6CnfhXSgGs,11179
|
|
318
319
|
pulpcore/app/serializers/fields.py,sha256=kWA6wYNA8dYmDJfFE_3eVUQRj4vCceqjzYPEEP53rxA,16481
|
|
319
320
|
pulpcore/app/serializers/importer.py,sha256=PVSNs5U0dfAm-XlRKpMqOXK0VmUErxJauNJCNro6ONA,8200
|
|
320
321
|
pulpcore/app/serializers/openpgp.py,sha256=3Svxskj_-HmOVbjay7QI82zXnKTsbtaSlZZ03CoT-MQ,8966
|
|
321
322
|
pulpcore/app/serializers/orphans.py,sha256=Vhyaj0fqYT4pkiYoNjgmsy1u5BiR_aHwZm2y7rk9cbk,1967
|
|
322
323
|
pulpcore/app/serializers/progress.py,sha256=j4IQDLb_XOrLzTud4Fq8T-8kkOqLewReMVkbS5uCEIg,2575
|
|
323
|
-
pulpcore/app/serializers/publication.py,sha256=
|
|
324
|
+
pulpcore/app/serializers/publication.py,sha256=Qg9ZbvyyS4VoYqLSVXdJ3ceTUP2IAJQgY-K9sJJcXNc,16502
|
|
324
325
|
pulpcore/app/serializers/purge.py,sha256=CnjKWUvkuI207QMbqwmNs7FqMdOMUh1cujagby3vVM0,779
|
|
325
326
|
pulpcore/app/serializers/reclaim.py,sha256=-ewdNqu-Ck1B_IUWJHG0pvN5zCMMEK9RiWI45g7D0ro,1710
|
|
326
327
|
pulpcore/app/serializers/repair.py,sha256=uKrxTnhoarxyyGCixPRn9pmG19gRRVUTM7nPwCVp6_8,554
|
|
@@ -375,7 +376,7 @@ pulpcore/cache/cache.py,sha256=d8GMlvjeGG9MOMdi5_9029WpGCKH8Y5q9b2lt3wSREo,17371
|
|
|
375
376
|
pulpcore/content/__init__.py,sha256=lJDgxeIHXI__7LOQciRQSTItebgsxpoEGbd19Q7jNdI,4015
|
|
376
377
|
pulpcore/content/authentication.py,sha256=lEZBkXBBBkIdtFMCSpHDD7583M0bO-zsZNYXTmpr4k8,3235
|
|
377
378
|
pulpcore/content/entrypoint.py,sha256=DiQTQzfcUiuyl37uvy6Wpa_7kr8t79ekpMHr31MDL2s,2132
|
|
378
|
-
pulpcore/content/handler.py,sha256
|
|
379
|
+
pulpcore/content/handler.py,sha256=B0G2MwOtCedMfwFA5qcHsvg884GhsG_xw4ybYAmLthY,56781
|
|
379
380
|
pulpcore/content/instrumentation.py,sha256=H0N0GWzvOPGGjFi6eIbGW3mcvagfnAfazccTh-BZVmE,1426
|
|
380
381
|
pulpcore/download/__init__.py,sha256=s3Wh2GKdsmbUooVIR6wSvhYVIhpaTbtfR3Ar1OJhC7s,154
|
|
381
382
|
pulpcore/download/base.py,sha256=4KCAYnV8jSOX078ETwlfwNZGY3xCBF9yy866tyGKAzE,13095
|
|
@@ -386,7 +387,7 @@ pulpcore/exceptions/__init__.py,sha256=ZgqOLvuNEAEPkC8lUVEJIFyUJZJOy94whdzXYoMP2
|
|
|
386
387
|
pulpcore/exceptions/base.py,sha256=3iNTD8BsAfe7vpUaOzXl2f_WJPd4wfqEuf2GkFheBhs,2863
|
|
387
388
|
pulpcore/exceptions/plugin.py,sha256=CrfzjCP1YZk_W6p1yRFrUfqTv0Iptzu2aBxzlebXeLU,613
|
|
388
389
|
pulpcore/exceptions/validation.py,sha256=4iyDMxKzejHIzEuebDRXkvA_GNCdaommW9Ycsaa1v3Y,2481
|
|
389
|
-
pulpcore/openapi/__init__.py,sha256=
|
|
390
|
+
pulpcore/openapi/__init__.py,sha256=8R96t7rvAFgIU_-Bv79X_cW0NV10Au9vHzUmp5jaFpw,18443
|
|
390
391
|
pulpcore/openapi/hooks.py,sha256=uRFFW6khHNrntK6R99SUEDfP4LzmYJfsX7i8XGO4iaI,1426
|
|
391
392
|
pulpcore/plugin/__init__.py,sha256=q0qu_15BTEY_EqPB9DSDk8rdnZMvld3cZsFXEnOVjuo,131
|
|
392
393
|
pulpcore/plugin/access_policy.py,sha256=KHbWBXEOP59V8J_R52Pw2Q_Amodg-1bJYh6tyt5vDgk,4968
|
|
@@ -424,11 +425,11 @@ pulpcore/plugin/stages/models.py,sha256=0b7xs9d64WTG2yHog1Zo_Z_-pomFAe-gC4u9wksY
|
|
|
424
425
|
pulpcore/plugin/viewsets/__init__.py,sha256=G2zE-NRWz6PFYp8OMZrv01RYBQELFWfW702bRvxXs3k,2281
|
|
425
426
|
pulpcore/plugin/viewsets/content.py,sha256=MHvmLOxsKSQfk6y5t1s9CVxkce9YNeU-dYb1Ldyf83I,6432
|
|
426
427
|
pulpcore/tasking/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
427
|
-
pulpcore/tasking/_util.py,sha256=
|
|
428
|
+
pulpcore/tasking/_util.py,sha256=fPW4k1nUa_NZ0ywy_A15Fuiejo5stY58abPbZTXw5t8,9904
|
|
428
429
|
pulpcore/tasking/entrypoint.py,sha256=Npnn41e39soGvJ7CTaZXT5MjIhOO7UtQmpmNaZtfKYg,1120
|
|
429
430
|
pulpcore/tasking/kafka.py,sha256=76z4DzeXM1WL5uu1HlKnduWeLO3-b-czvGBXdWR6054,3845
|
|
430
431
|
pulpcore/tasking/storage.py,sha256=zQkwlpC_FDQtmZGZ8vKwHqxvD6CLO_gAS4Q7wijZE-k,3106
|
|
431
|
-
pulpcore/tasking/tasks.py,sha256=
|
|
432
|
+
pulpcore/tasking/tasks.py,sha256=0WLv16FOCPOsrGAxEOYOkmzFP7MRYCczXWB94ajIkzY,14537
|
|
432
433
|
pulpcore/tasking/worker.py,sha256=c9RgSYg4J_Jn_q70MVF_2egDeASFgXlLrP00lqWKtnQ,23822
|
|
433
434
|
pulpcore/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
434
435
|
pulpcore/tests/functional/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -455,7 +456,7 @@ pulpcore/tests/functional/api/test_scoping.py,sha256=uiLOsx5_7puRMcvrpPKEYQziqlu
|
|
|
455
456
|
pulpcore/tests/functional/api/test_signing_service.py,sha256=yr1HXBrNoliBHJNAGAN4PAN0eBKPIvAQP-uMoMSrO_I,222
|
|
456
457
|
pulpcore/tests/functional/api/test_status.py,sha256=Vmmj-ueGxJw1JFSQtr5feTM8vjgyyROvxsRm-OgzLUQ,5370
|
|
457
458
|
pulpcore/tests/functional/api/test_task_purge.py,sha256=Av4DrUdCqf-JegfoP1pkY4B-teoUzYd1LBZKAhDa-08,7273
|
|
458
|
-
pulpcore/tests/functional/api/test_tasking.py,sha256=
|
|
459
|
+
pulpcore/tests/functional/api/test_tasking.py,sha256=jozm0Bpv1AavPDSu0QOZMCzre9Zgpw7_M9HCiaoTRmA,22511
|
|
459
460
|
pulpcore/tests/functional/api/test_upload.py,sha256=oLP1ZmQgPzgK5jAQwGeXS8uLFHgAzVeLW0GfANMWexI,6794
|
|
460
461
|
pulpcore/tests/functional/api/test_users_groups.py,sha256=YFG0xtyJuIRraczR7ERl_UNS7dlJfKd2eUmXgD1lLBU,2926
|
|
461
462
|
pulpcore/tests/functional/api/test_workers.py,sha256=u3oQnErjf6qPCg08XMRZzecGetLLDWmvHvoZIk-AUAA,4659
|
|
@@ -463,7 +464,7 @@ pulpcore/tests/functional/api/using_plugin/__init__.py,sha256=QyyfzgjLOi4n32G3o9
|
|
|
463
464
|
pulpcore/tests/functional/api/using_plugin/test_checkpoint.py,sha256=gx1oiHOVUH5QZfF33k_DXSw-AVbYQp39uKii1D96BoI,7965
|
|
464
465
|
pulpcore/tests/functional/api/using_plugin/test_content_access.py,sha256=Ym800bU-M48RCDfQMkVa1UQt_sfgy5ciU0FxorCk9Ds,2551
|
|
465
466
|
pulpcore/tests/functional/api/using_plugin/test_content_cache.py,sha256=OB3gDbPDptQBjyYnr_jHyU9bcI_-ANAoUp9EDiskwug,7312
|
|
466
|
-
pulpcore/tests/functional/api/using_plugin/test_content_delivery.py,sha256=
|
|
467
|
+
pulpcore/tests/functional/api/using_plugin/test_content_delivery.py,sha256=oatcqaiOv7o_BqsgQ3uXCWnY1RWa5cmzUvPBHzJuI8o,11384
|
|
467
468
|
pulpcore/tests/functional/api/using_plugin/test_content_directory.py,sha256=w4uY258etnP8-LbrbZ_EZTolciYTt7cY1HJK9Ll7mS0,1931
|
|
468
469
|
pulpcore/tests/functional/api/using_plugin/test_content_path.py,sha256=fvqeptqo-mrUAiKIjlypuvHG1XsFeKKP81ocTmo4hv0,3334
|
|
469
470
|
pulpcore/tests/functional/api/using_plugin/test_content_promotion.py,sha256=Co4ytrfpzklwgDdEthv45dsmrceRpqIQfLJlZWM6EBY,2388
|
|
@@ -530,9 +531,9 @@ pulpcore/tests/unit/stages/test_artifactdownloader.py,sha256=qB1ANdFmNtUnljg8fCd
|
|
|
530
531
|
pulpcore/tests/unit/stages/test_stages.py,sha256=H1a2BQLjdZlZvcb_qULp62huZ1xy6ItTcthktVyGU0w,4735
|
|
531
532
|
pulpcore/tests/unit/viewsets/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
532
533
|
pulpcore/tests/unit/viewsets/test_viewset_base.py,sha256=W9o3V6758bZctR6krMPPQytb0xJuF-jb4uBWTNDoD_U,4837
|
|
533
|
-
pulpcore-3.
|
|
534
|
-
pulpcore-3.
|
|
535
|
-
pulpcore-3.
|
|
536
|
-
pulpcore-3.
|
|
537
|
-
pulpcore-3.
|
|
538
|
-
pulpcore-3.
|
|
534
|
+
pulpcore-3.82.1.dist-info/licenses/LICENSE,sha256=dhnHU8rJXUdAIgIjveSKAyYG_KzN5eVG-bxETIGrNW0,17988
|
|
535
|
+
pulpcore-3.82.1.dist-info/METADATA,sha256=RE9gUWyhJMLJOzYptD2cTBtbQ3IkRgtzf2PnTC82muY,4320
|
|
536
|
+
pulpcore-3.82.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
537
|
+
pulpcore-3.82.1.dist-info/entry_points.txt,sha256=OZven4wzXzQA5b5q9MpP4HUpIPPQCSvIOvkKtNInrK0,452
|
|
538
|
+
pulpcore-3.82.1.dist-info/top_level.txt,sha256=6h-Lm3FKQSaT_nL1KSxu_hBnzKE15bcvf_BoU-ea4CI,34
|
|
539
|
+
pulpcore-3.82.1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|