pulpcore 3.83.2__py3-none-any.whl → 3.85.0__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_certguard/app/models.py +7 -26
- pulp_certguard/app/serializers.py +0 -2
- pulp_certguard/rhsm/__init__.py +4 -0
- pulp_certguard/rhsm/rhsm_check_path.py +198 -0
- pulp_certguard/tests/unit/certdata.py +249 -0
- pulp_certguard/tests/unit/test_rhsm_check_path.py +213 -0
- pulp_file/app/__init__.py +1 -1
- pulp_file/app/migrations/0001_initial_squashed_0016_add_domain.py +0 -20
- pulp_file/app/migrations/0017_alter_filealternatecontentsource_alternatecontentsource_ptr_and_more.py +1 -1
- pulpcore/app/apps.py +2 -12
- pulpcore/app/entrypoint.py +22 -22
- pulpcore/app/migrations/0001_squashed_0090_char_to_text_field.py +0 -95
- pulpcore/app/migrations/0091_systemid.py +1 -1
- pulpcore/app/migrations/0134_task_insert_trigger.py +81 -0
- pulpcore/app/migrations/0135_task_pulp_task_resources_index.py +25 -0
- pulp_file/app/migrations/0006_delete_filefilesystemexporter.py → pulpcore/app/migrations/0136_delete_basedistribution.py +3 -3
- pulpcore/app/migrations/0137_appstatus.py +33 -0
- pulpcore/app/migrations/0138_vulnerabilityreport.py +33 -0
- pulpcore/app/models/__init__.py +4 -1
- pulpcore/app/models/publication.py +0 -41
- pulpcore/app/models/status.py +145 -0
- pulpcore/app/models/task.py +8 -0
- pulpcore/app/models/vulnerability_report.py +34 -0
- pulpcore/app/serializers/__init__.py +1 -0
- pulpcore/app/serializers/content.py +13 -1
- pulpcore/app/serializers/repository.py +8 -1
- pulpcore/app/serializers/vulnerability_report.py +27 -0
- pulpcore/app/settings.py +13 -38
- pulpcore/app/tasks/__init__.py +2 -0
- pulpcore/app/tasks/purge.py +8 -5
- pulpcore/app/tasks/vulnerability_report.py +159 -0
- pulpcore/app/viewsets/__init__.py +1 -0
- pulpcore/app/viewsets/vulnerability_report.py +20 -0
- pulpcore/constants.py +8 -0
- pulpcore/content/__init__.py +23 -22
- pulpcore/content/handler.py +5 -2
- pulpcore/migrations.py +38 -11
- pulpcore/openapi/__init__.py +8 -0
- pulpcore/plugin/models/__init__.py +2 -0
- pulpcore/plugin/serializers/__init__.py +2 -0
- pulpcore/plugin/tasking.py +2 -0
- pulpcore/plugin/viewsets/__init__.py +2 -0
- pulpcore/pytest_plugin.py +21 -21
- pulpcore/tasking/entrypoint.py +12 -2
- pulpcore/tasking/tasks.py +5 -30
- pulpcore/tasking/worker.py +115 -74
- pulpcore/tests/functional/api/test_auth.py +18 -3
- pulpcore/tests/functional/api/test_login.py +62 -32
- pulpcore/tests/functional/api/test_openapi_schema.py +32 -15
- pulpcore/tests/functional/api/using_plugin/test_checkpoint.py +23 -1
- pulpcore/tests/functional/api/using_plugin/test_proxy.py +1 -1
- pulpcore/tests/unit/content/test_heartbeat.py +11 -8
- pulpcore/tests/unit/test_vulnerability_report.py +74 -0
- {pulpcore-3.83.2.dist-info → pulpcore-3.85.0.dist-info}/METADATA +13 -18
- {pulpcore-3.83.2.dist-info → pulpcore-3.85.0.dist-info}/RECORD +60 -156
- pulp_certguard/app/utils.py +0 -28
- pulp_certguard/tests/unit/test_models.py +0 -9
- pulp_file/app/migrations/0001_initial.py +0 -59
- pulp_file/app/migrations/0002_file_related_names.py +0 -55
- pulp_file/app/migrations/0003_auto_20191014_1721.py +0 -18
- pulp_file/app/migrations/0004_filefilesystemexporter.py +0 -21
- pulp_file/app/migrations/0005_filerepository.py +0 -24
- pulp_file/app/migrations/0007_filefilesystemexporter.py +0 -25
- pulp_file/app/migrations/0008_add_manifest_field.py +0 -19
- pulp_file/app/migrations/0009_move_data_to_new_master_distribution_model.py +0 -77
- pulp_file/app/migrations/0010_auto_publish.py +0 -23
- pulp_file/app/migrations/0011_fix_auto_publish.py +0 -36
- pulp_file/app/migrations/0012_delete_filefilesystemexporter.py +0 -28
- pulp_file/app/migrations/0013_file_acs.py +0 -24
- pulp_file/app/migrations/0014_new_rbac_permissions.py +0 -33
- pulp_file/app/migrations/0015_allow_null_manifest.py +0 -23
- pulp_file/app/migrations/0016_add_domain.py +0 -25
- pulpcore/app/migrations/0001_initial.py +0 -451
- pulpcore/app/migrations/0002_increase_artifact_size_field.py +0 -18
- pulpcore/app/migrations/0003_remove_upload_completed.py +0 -17
- pulpcore/app/migrations/0004_add_duplicated_reserved_resources.py +0 -45
- pulpcore/app/migrations/0005_progressreport_code.py +0 -19
- pulpcore/app/migrations/0006_repository_plugin_managed.py +0 -18
- pulpcore/app/migrations/0007_delete_progress_proxies.py +0 -19
- pulpcore/app/migrations/0008_published_metadata_as_content.py +0 -44
- pulpcore/app/migrations/0009_remove_task_non_fatal_errors.py +0 -17
- pulpcore/app/migrations/0010_pulp_fields.py +0 -570
- pulpcore/app/migrations/0011_relative_path.py +0 -28
- pulpcore/app/migrations/0012_auto_20191104_2000.py +0 -31
- pulpcore/app/migrations/0013_repository_pulp_type.py +0 -18
- pulpcore/app/migrations/0014_remove_repository_plugin_managed.py +0 -17
- pulpcore/app/migrations/0015_auto_20191112_1426.py +0 -33
- pulpcore/app/migrations/0016_charfield_to_textfield.py +0 -68
- pulpcore/app/migrations/0017_remove_task_parent.py +0 -17
- pulpcore/app/migrations/0018_auto_20191127_2350.py +0 -20
- pulpcore/app/migrations/0019_add_signing_service_model.py +0 -27
- pulpcore/app/migrations/0020_change_publishedartifact_constraints.py +0 -17
- pulpcore/app/migrations/0021_add_signing_service_foreign_key.py +0 -24
- pulpcore/app/migrations/0022_rename_last_version.py +0 -27
- pulpcore/app/migrations/0023_change_exporter_models.py +0 -82
- pulpcore/app/migrations/0024_use_local_storage_for_uploads.py +0 -19
- pulpcore/app/migrations/0025_task_parent_task.py +0 -19
- pulpcore/app/migrations/0026_task_group.py +0 -32
- pulpcore/app/migrations/0027_export_backend.py +0 -31
- pulpcore/app/migrations/0028_import_importer_pulpimporter_pulpimporterrepository.py +0 -85
- pulpcore/app/migrations/0029_export_delete.py +0 -19
- pulpcore/app/migrations/0030_taskgroup_all_tasks_dispatched.py +0 -24
- pulpcore/app/migrations/0031_import_export_validate_params.py +0 -19
- pulpcore/app/migrations/0032_export_to_chunks.py +0 -27
- pulpcore/app/migrations/0033_increase_remote_artifact_size_field.py +0 -18
- pulpcore/app/migrations/0034_groupprogressreport.py +0 -32
- pulpcore/app/migrations/0035_content_upstream_id.py +0 -18
- pulpcore/app/migrations/0036_unprotect_last_export.py +0 -19
- pulpcore/app/migrations/0037_pulptemporaryfile.py +0 -28
- pulpcore/app/migrations/0038_repository_remote.py +0 -19
- pulpcore/app/migrations/0039_change_download_concurrency.py +0 -25
- pulpcore/app/migrations/0040_set_admin_is_staff.py +0 -28
- pulpcore/app/migrations/0041_accesspolicy.py +0 -29
- pulpcore/app/migrations/0042_rbac_for_tasks.py +0 -56
- pulpcore/app/migrations/0043_toc_attribute.py +0 -19
- pulpcore/app/migrations/0044_temp_file_artifact_field.py +0 -20
- pulpcore/app/migrations/0045_accesspolicy_permissions_allow_null.py +0 -19
- pulpcore/app/migrations/0046_task__resource_job_id.py +0 -35
- pulpcore/app/migrations/0047_improve_orphan_cleanup.py +0 -59
- pulpcore/app/migrations/0048_fips_checksums.py +0 -38
- pulpcore/app/migrations/0049_add_file_field_to_uploadchunk.py +0 -24
- pulpcore/app/migrations/0050_namespace_access_policies.py +0 -28
- pulpcore/app/migrations/0051_timeoutfields.py +0 -34
- pulpcore/app/migrations/0052_tasking_logging_cid.py +0 -18
- pulpcore/app/migrations/0053_remote_headers.py +0 -19
- pulpcore/app/migrations/0054_add_public_key.py +0 -104
- pulpcore/app/migrations/0055_label.py +0 -31
- pulpcore/app/migrations/0056_remote_rate_limit.py +0 -18
- pulpcore/app/migrations/0057_add_label_indexes.py +0 -23
- pulpcore/app/migrations/0058_accesspolicy_customized.py +0 -18
- pulpcore/app/migrations/0059_proxy_creds.py +0 -23
- pulpcore/app/migrations/0060_data_migration_proxy_creds.py +0 -45
- pulpcore/app/migrations/0061_call_handle_artifact_checksums_command.py +0 -87
- pulpcore/app/migrations/0062_add_new_distribution_mastermodel.py +0 -36
- pulpcore/app/migrations/0063_repository_retained_versions.py +0 -18
- pulpcore/app/migrations/0064_add_new_style_task_columns.py +0 -109
- pulpcore/app/migrations/0064_repository_user_hidden.py +0 -18
- pulpcore/app/migrations/0065_merge_20210615_1211.py +0 -14
- pulpcore/app/migrations/0066_download_concurrency_and_retry_changes.py +0 -24
- pulpcore/app/migrations/0067_add_protect_to_task_reservation.py +0 -19
- pulpcore/app/migrations/0068_add_timestamp_of_interest.py +0 -23
- pulpcore/app/migrations/0069_update_json_fields.py +0 -63
- pulpcore/app/migrations/0070_rename_retained_versions.py +0 -18
- pulpcore/app/migrations/0071_filesystemexport_filesystemexporter.py +0 -35
- pulpcore/app/migrations/0072_add_method_to_filesystem_exporter.py +0 -18
- pulpcore/app/migrations/0073_encrypt_remote_fields.py +0 -139
- pulpcore/app/migrations/0074_acs.py +0 -47
- pulpcore/app/migrations/0075_rbaccontentguard.py +0 -25
- pulpcore/app/migrations/0076_remove_reserved_resource.py +0 -39
- pulpcore/app/migrations/0077_move_remote_url_credentials.py +0 -41
- pulpcore/app/migrations/0078_grouprole_role_userrole.py +0 -70
- pulpcore/app/migrations/0079_rename_permissions_assignment_accesspolicy_creation_hooks.py +0 -18
- pulpcore/app/migrations/0080_proxy_group_model.py +0 -37
- pulpcore/app/migrations/0081_reapplabel_group_permissions.py +0 -59
- pulpcore/app/migrations/0082_add_manage_roles_permissions.py +0 -17
- pulpcore/app/migrations/0083_alter_group_options.py +0 -17
- pulpcore/app/migrations/0084_alter_rbaccontentguard_options.py +0 -17
- pulpcore/app/migrations/0085_contentredirectcontentguard.py +0 -26
- pulpcore/app/migrations/0086_task_json_fields.py +0 -77
- pulpcore/app/migrations/0087_taskschedule.py +0 -34
- pulpcore/app/migrations/0088_accesspolicy_queryset_scoping.py +0 -18
- pulpcore/app/migrations/0089_alter_contentredirectcontentguard_options.py +0 -17
- pulpcore/app/migrations/0090_char_to_text_field.py +0 -79
- pulpcore/tests/unit/migration/test_0077_move_remote_url_credentials.py +0 -35
- {pulpcore-3.83.2.dist-info → pulpcore-3.85.0.dist-info}/WHEEL +0 -0
- {pulpcore-3.83.2.dist-info → pulpcore-3.85.0.dist-info}/entry_points.txt +0 -0
- {pulpcore-3.83.2.dist-info → pulpcore-3.85.0.dist-info}/licenses/LICENSE +0 -0
- {pulpcore-3.83.2.dist-info → pulpcore-3.85.0.dist-info}/top_level.txt +0 -0
|
@@ -144,7 +144,7 @@ def test_sync_https_through_https_proxy(
|
|
|
144
144
|
manifest_path=basic_manifest_path,
|
|
145
145
|
policy="on_demand",
|
|
146
146
|
proxy_url=https_proxy.proxy_url,
|
|
147
|
-
tls_validation=
|
|
147
|
+
tls_validation=False,
|
|
148
148
|
)
|
|
149
149
|
|
|
150
150
|
_run_basic_sync_and_assert(file_bindings, monitor_task, remote_on_demand, file_repo)
|
|
@@ -5,29 +5,32 @@ from django.db.utils import InterfaceError, OperationalError
|
|
|
5
5
|
|
|
6
6
|
from pulpcore.content import _heartbeat
|
|
7
7
|
from pulpcore.content.handler import Handler
|
|
8
|
-
from pulpcore.app.models import
|
|
8
|
+
from pulpcore.app.models.status import AppStatusManager
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
class MockException(Exception):
|
|
12
12
|
pass
|
|
13
13
|
|
|
14
14
|
|
|
15
|
+
@pytest.mark.parametrize("error_class", [InterfaceError, OperationalError])
|
|
15
16
|
@pytest.mark.asyncio
|
|
16
|
-
async def test_db_connection_interface_error(monkeypatch, settings):
|
|
17
|
+
async def test_db_connection_interface_error(monkeypatch, settings, error_class):
|
|
17
18
|
"""
|
|
18
19
|
Test that if an InterfaceError or OperationalError is raised,
|
|
19
20
|
Handler._reset_db_connection() is called
|
|
20
21
|
"""
|
|
21
22
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
mock_app_status = AsyncMock()
|
|
24
|
+
mock_app_status.asave_heartbeat.side_effect = [error_class(), error_class()]
|
|
25
|
+
mock_acreate = AsyncMock()
|
|
26
|
+
mock_acreate.return_value = mock_app_status
|
|
27
|
+
monkeypatch.setattr(AppStatusManager, "acreate", mock_acreate)
|
|
25
28
|
mock_reset_db = Mock()
|
|
26
29
|
monkeypatch.setattr(Handler, "_reset_db_connection", mock_reset_db)
|
|
27
30
|
settings.CONTENT_APP_TTL = 1
|
|
28
31
|
|
|
29
|
-
with pytest.raises(
|
|
32
|
+
with pytest.raises(SystemExit):
|
|
30
33
|
await _heartbeat()
|
|
31
34
|
|
|
32
|
-
|
|
33
|
-
mock_reset_db.assert_has_calls([call()
|
|
35
|
+
mock_app_status.asave_heartbeat.assert_called()
|
|
36
|
+
mock_reset_db.assert_has_calls([call()])
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import pytest
|
|
2
|
+
|
|
3
|
+
from unittest.mock import Mock, AsyncMock, patch
|
|
4
|
+
|
|
5
|
+
from pulpcore.app.tasks.vulnerability_report import VulnerabilityReportScanner
|
|
6
|
+
from pulpcore.constants import OSV_QUERY_URL
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class TestVulnerabilityReportScanner:
|
|
10
|
+
"""Test cases for VulnerabilityReportScanner class methods."""
|
|
11
|
+
|
|
12
|
+
@pytest.mark.asyncio
|
|
13
|
+
async def test_process_reports(self):
|
|
14
|
+
"""Test _process_reports method with basic input data."""
|
|
15
|
+
mock_semaphore = AsyncMock()
|
|
16
|
+
mock_generator = AsyncMock()
|
|
17
|
+
mock_session = Mock()
|
|
18
|
+
scanner = VulnerabilityReportScanner(mock_semaphore, mock_generator, mock_session)
|
|
19
|
+
|
|
20
|
+
mock_content = Mock()
|
|
21
|
+
mock_repo_version = Mock()
|
|
22
|
+
|
|
23
|
+
repo_content_osv_data = {
|
|
24
|
+
"package": {"name": "requests", "ecosystem": "PyPI"},
|
|
25
|
+
"version": "2.28.0",
|
|
26
|
+
"content": mock_content,
|
|
27
|
+
"repo_version": mock_repo_version,
|
|
28
|
+
}
|
|
29
|
+
expected_vulns = [{"id": "GHSA-test-1234", "summary": "Test vulnerability"}]
|
|
30
|
+
vulnerability_response = {"vulns": expected_vulns}
|
|
31
|
+
|
|
32
|
+
with patch.object(scanner, "_query_osv_api", return_value=vulnerability_response):
|
|
33
|
+
# Mock the semaphore context manager
|
|
34
|
+
mock_semaphore.__aenter__ = AsyncMock()
|
|
35
|
+
mock_semaphore.__aexit__ = AsyncMock()
|
|
36
|
+
|
|
37
|
+
with patch.object(scanner.total_scanned, "aincrement", new_callable=AsyncMock):
|
|
38
|
+
vulns, content, repo_version = await scanner._process_reports(repo_content_osv_data)
|
|
39
|
+
assert vulns == expected_vulns
|
|
40
|
+
assert content == mock_content
|
|
41
|
+
assert repo_version == mock_repo_version
|
|
42
|
+
|
|
43
|
+
@pytest.mark.asyncio
|
|
44
|
+
async def test_query_osv_api_success(self):
|
|
45
|
+
"""Test _query_osv_api method with successful response."""
|
|
46
|
+
mock_semaphore = AsyncMock()
|
|
47
|
+
mock_generator = AsyncMock()
|
|
48
|
+
scanner = VulnerabilityReportScanner(mock_semaphore, mock_generator)
|
|
49
|
+
|
|
50
|
+
osv_data = {"package": {"name": "requests", "ecosystem": "PyPI"}, "version": "2.25.0"}
|
|
51
|
+
expected_response = {
|
|
52
|
+
"vulns": [
|
|
53
|
+
{
|
|
54
|
+
"id": "GHSA-abcd-1234",
|
|
55
|
+
"summary": "Test vulnerability",
|
|
56
|
+
"details": "Detailed vulnerability description",
|
|
57
|
+
}
|
|
58
|
+
]
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
# Mock the HTTP response
|
|
62
|
+
mock_response = AsyncMock()
|
|
63
|
+
mock_response.json.return_value = expected_response
|
|
64
|
+
|
|
65
|
+
# Mock the session's post method context manager
|
|
66
|
+
mock_post_cm = AsyncMock()
|
|
67
|
+
mock_post_cm.__aenter__.return_value = mock_response
|
|
68
|
+
mock_post_cm.__aexit__.return_value = None
|
|
69
|
+
|
|
70
|
+
with patch.object(scanner.session, "post", return_value=mock_post_cm) as mock_post:
|
|
71
|
+
result = await scanner._query_osv_api(osv_data)
|
|
72
|
+
assert result == expected_response
|
|
73
|
+
mock_post.assert_called_once_with(url=OSV_QUERY_URL, json=osv_data)
|
|
74
|
+
mock_response.json.assert_called_once()
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pulpcore
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.85.0
|
|
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
|
|
@@ -14,54 +14,50 @@ Classifier: Development Status :: 5 - Production/Stable
|
|
|
14
14
|
Classifier: Framework :: Django
|
|
15
15
|
Classifier: Programming Language :: Python
|
|
16
16
|
Classifier: Programming Language :: Python :: 3
|
|
17
|
-
Classifier: Programming Language :: Python :: 3.9
|
|
18
|
-
Classifier: Programming Language :: Python :: 3.10
|
|
19
17
|
Classifier: Programming Language :: Python :: 3.11
|
|
20
18
|
Classifier: Programming Language :: Python :: 3.12
|
|
21
|
-
Requires-Python: >=3.
|
|
19
|
+
Requires-Python: >=3.11
|
|
22
20
|
Description-Content-Type: text/markdown
|
|
23
21
|
License-File: LICENSE
|
|
24
22
|
Requires-Dist: aiodns<3.6,>=3.3.0
|
|
25
23
|
Requires-Dist: aiofiles<=24.1.0,>=22.1
|
|
26
24
|
Requires-Dist: aiohttp<3.13,>=3.8.3
|
|
27
25
|
Requires-Dist: asyncio-throttle<=1.0.2,>=1.0
|
|
28
|
-
Requires-Dist: async-timeout<4.0.4,>=4.0.3; python_version < "3.11"
|
|
29
26
|
Requires-Dist: backoff<2.3,>=2.1.2
|
|
30
|
-
Requires-Dist: click<8.
|
|
31
|
-
Requires-Dist: cryptography<46.0,>=
|
|
27
|
+
Requires-Dist: click<8.3,>=8.1.0
|
|
28
|
+
Requires-Dist: cryptography<46.0,>=44.0.3
|
|
32
29
|
Requires-Dist: Django~=4.2.0
|
|
33
30
|
Requires-Dist: django-filter<=25.1,>=23.1
|
|
34
31
|
Requires-Dist: django-guid<3.6,>=3.3.0
|
|
35
32
|
Requires-Dist: django-import-export<3.4.0,>=2.9
|
|
36
33
|
Requires-Dist: django-lifecycle<=1.2.4,>=1.0
|
|
37
|
-
Requires-Dist: djangorestframework<=3.16.
|
|
34
|
+
Requires-Dist: djangorestframework<=3.16.1,>=3.14.0
|
|
38
35
|
Requires-Dist: djangorestframework-queryfields<=1.1.0,>=1.0
|
|
39
36
|
Requires-Dist: drf-access-policy<1.5.1,>=1.1.2
|
|
40
37
|
Requires-Dist: drf-nested-routers<=0.94.2,>=0.93.4
|
|
41
38
|
Requires-Dist: drf-spectacular==0.27.2
|
|
42
39
|
Requires-Dist: dynaconf<3.3.0,>=3.2.5
|
|
43
40
|
Requires-Dist: gunicorn<23.1.0,>=22.0
|
|
44
|
-
Requires-Dist: importlib-metadata<=6.0.1,>=6.0.1
|
|
45
41
|
Requires-Dist: jinja2<=3.1.6,>=3.1
|
|
46
42
|
Requires-Dist: json_stream<2.4,>=2.3.2
|
|
47
|
-
Requires-Dist: jq<1.
|
|
43
|
+
Requires-Dist: jq<1.11.0,>=1.6.0
|
|
48
44
|
Requires-Dist: PyOpenSSL<26.0
|
|
49
|
-
Requires-Dist: opentelemetry-api<1.
|
|
50
|
-
Requires-Dist: opentelemetry-sdk<1.
|
|
51
|
-
Requires-Dist: opentelemetry-exporter-otlp-proto-http<1.
|
|
45
|
+
Requires-Dist: opentelemetry-api<1.37,>=1.27.0
|
|
46
|
+
Requires-Dist: opentelemetry-sdk<1.37,>=1.27.0
|
|
47
|
+
Requires-Dist: opentelemetry-exporter-otlp-proto-http<1.37,>=1.27.0
|
|
52
48
|
Requires-Dist: protobuf<6.0,>=4.21.1
|
|
53
|
-
Requires-Dist: pulp-glue<0.
|
|
49
|
+
Requires-Dist: pulp-glue<0.36,>=0.28.0
|
|
54
50
|
Requires-Dist: pygtrie<=2.5.0,>=2.5
|
|
55
51
|
Requires-Dist: psycopg[binary]<3.3,>=3.1.8
|
|
56
52
|
Requires-Dist: pyparsing<3.3,>=3.1.0
|
|
57
53
|
Requires-Dist: python-gnupg<=0.5.4,>=0.5
|
|
58
54
|
Requires-Dist: PyYAML<6.1,>=5.1.1
|
|
59
|
-
Requires-Dist: redis<5
|
|
55
|
+
Requires-Dist: redis<6.5,>=4.3.0
|
|
60
56
|
Requires-Dist: tablib<3.6,>=3.5.0
|
|
61
57
|
Requires-Dist: url-normalize<2.3,>=1.4.3
|
|
62
58
|
Requires-Dist: uuid6<=2025.0.1,>=2023.5.2
|
|
63
59
|
Requires-Dist: whitenoise<6.10.0,>=5.0
|
|
64
|
-
Requires-Dist: yarl<1.21,>=1.
|
|
60
|
+
Requires-Dist: yarl<1.21,>=1.9.1
|
|
65
61
|
Provides-Extra: sftp
|
|
66
62
|
Requires-Dist: django-storages[sftp]==1.14.6; extra == "sftp"
|
|
67
63
|
Provides-Extra: s3
|
|
@@ -70,12 +66,11 @@ Provides-Extra: google
|
|
|
70
66
|
Requires-Dist: django-storages[google]==1.14.6; extra == "google"
|
|
71
67
|
Provides-Extra: azure
|
|
72
68
|
Requires-Dist: django-storages[azure]==1.14.6; extra == "azure"
|
|
73
|
-
Requires-Dist: azure-storage-blob<12.26.0; extra == "azure"
|
|
74
69
|
Provides-Extra: prometheus
|
|
75
70
|
Requires-Dist: django-prometheus; extra == "prometheus"
|
|
76
71
|
Provides-Extra: kafka
|
|
77
72
|
Requires-Dist: cloudevents==1.11.0; extra == "kafka"
|
|
78
|
-
Requires-Dist: confluent-kafka<2.
|
|
73
|
+
Requires-Dist: confluent-kafka<2.12.0,>=2.4.0; extra == "kafka"
|
|
79
74
|
Provides-Extra: diagnostics
|
|
80
75
|
Requires-Dist: pyinstrument~=5.0; extra == "diagnostics"
|
|
81
76
|
Requires-Dist: memray~=1.17; extra == "diagnostics"
|