devpi-server 6.15.0__tar.gz → 6.17.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.
- devpi_server-6.17.0/.flake8 +9 -0
- {devpi-server-6.15.0 → devpi_server-6.17.0}/CHANGELOG +69 -47
- devpi_server-6.17.0/CHANGELOG.short.rst +136 -0
- {devpi-server-6.15.0 → devpi_server-6.17.0}/PKG-INFO +97 -54
- devpi_server-6.17.0/devpi_server/__init__.py +1 -0
- {devpi-server-6.15.0 → devpi_server-6.17.0}/devpi_server/auth.py +9 -54
- {devpi-server-6.15.0 → devpi_server-6.17.0}/devpi_server/config.py +67 -56
- {devpi-server-6.15.0 → devpi_server-6.17.0}/devpi_server/filestore.py +43 -14
- {devpi-server-6.15.0 → devpi_server-6.17.0}/devpi_server/genconfig.py +2 -2
- devpi_server-6.17.0/devpi_server/httpclient.py +255 -0
- {devpi-server-6.15.0 → devpi_server-6.17.0}/devpi_server/importexport.py +24 -19
- {devpi-server-6.15.0 → devpi_server-6.17.0}/devpi_server/interfaces.py +83 -14
- {devpi-server-6.15.0 → devpi_server-6.17.0}/devpi_server/keyfs.py +188 -87
- {devpi-server-6.15.0 → devpi_server-6.17.0}/devpi_server/keyfs_sqlite_fs.py +1 -1
- {devpi-server-6.15.0 → devpi_server-6.17.0}/devpi_server/keyfs_types.py +45 -4
- {devpi-server-6.15.0 → devpi_server-6.17.0}/devpi_server/log.py +10 -5
- {devpi-server-6.15.0 → devpi_server-6.17.0}/devpi_server/main.py +87 -93
- devpi_server-6.17.0/devpi_server/markers.py +34 -0
- {devpi-server-6.15.0 → devpi_server-6.17.0}/devpi_server/middleware.py +5 -4
- {devpi-server-6.15.0 → devpi_server-6.17.0}/devpi_server/mirror.py +224 -58
- {devpi-server-6.15.0 → devpi_server-6.17.0}/devpi_server/model.py +185 -80
- {devpi-server-6.15.0 → devpi_server-6.17.0}/devpi_server/mythread.py +21 -17
- {devpi-server-6.15.0 → devpi_server-6.17.0}/devpi_server/readonly.py +25 -16
- {devpi-server-6.15.0 → devpi_server-6.17.0}/devpi_server/replica.py +270 -220
- {devpi-server-6.15.0 → devpi_server-6.17.0}/devpi_server/view_auth.py +31 -12
- {devpi-server-6.15.0 → devpi_server-6.17.0}/devpi_server/views.py +249 -238
- {devpi-server-6.15.0 → devpi_server-6.17.0}/devpi_server.egg-info/PKG-INFO +97 -54
- {devpi-server-6.15.0 → devpi_server-6.17.0}/devpi_server.egg-info/SOURCES.txt +3 -5
- {devpi-server-6.15.0 → devpi_server-6.17.0}/devpi_server.egg-info/requires.txt +7 -7
- devpi_server-6.17.0/mypy.ini +106 -0
- devpi_server-6.17.0/pyproject.toml +396 -0
- devpi_server-6.17.0/setup.cfg +4 -0
- {devpi-server-6.15.0 → devpi_server-6.17.0}/test_devpi_server/plugin.py +240 -35
- {devpi-server-6.15.0 → devpi_server-6.17.0}/test_devpi_server/reqmock.py +36 -26
- {devpi-server-6.15.0 → devpi_server-6.17.0}/test_devpi_server/test_auth.py +3 -18
- {devpi-server-6.15.0 → devpi_server-6.17.0}/test_devpi_server/test_config.py +26 -6
- {devpi-server-6.15.0 → devpi_server-6.17.0}/test_devpi_server/test_filestore.py +46 -37
- {devpi-server-6.15.0 → devpi_server-6.17.0}/test_devpi_server/test_importexport.py +56 -49
- {devpi-server-6.15.0 → devpi_server-6.17.0}/test_devpi_server/test_keyfs.py +30 -16
- {devpi-server-6.15.0 → devpi_server-6.17.0}/test_devpi_server/test_main.py +72 -51
- {devpi-server-6.15.0 → devpi_server-6.17.0}/test_devpi_server/test_mirror.py +282 -95
- {devpi-server-6.15.0 → devpi_server-6.17.0}/test_devpi_server/test_mirror_no_project_list.py +17 -17
- {devpi-server-6.15.0 → devpi_server-6.17.0}/test_devpi_server/test_model.py +79 -120
- {devpi-server-6.15.0 → devpi_server-6.17.0}/test_devpi_server/test_mythread.py +8 -0
- {devpi-server-6.15.0 → devpi_server-6.17.0}/test_devpi_server/test_replica.py +202 -114
- {devpi-server-6.15.0 → devpi_server-6.17.0}/test_devpi_server/test_streaming.py +2 -3
- {devpi-server-6.15.0 → devpi_server-6.17.0}/test_devpi_server/test_views.py +83 -17
- devpi_server-6.17.0/test_devpi_server/test_views_push_external.py +362 -0
- {devpi-server-6.15.0 → devpi_server-6.17.0}/test_devpi_server/test_views_status.py +5 -7
- {devpi-server-6.15.0 → devpi_server-6.17.0}/tox.ini +20 -8
- devpi-server-6.15.0/.flake8 +0 -9
- devpi-server-6.15.0/AUTHORS +0 -13
- devpi-server-6.15.0/devpi_server/__init__.py +0 -1
- devpi-server-6.15.0/devpi_server/markers.py +0 -14
- devpi-server-6.15.0/devpi_server.egg-info/not-zip-safe +0 -1
- devpi-server-6.15.0/pyproject.toml +0 -178
- devpi-server-6.15.0/setup.cfg +0 -7
- devpi-server-6.15.0/setup.py +0 -116
- devpi-server-6.15.0/test_devpi_server/test_reqmock.py +0 -48
- devpi-server-6.15.0/test_devpi_server/test_views_push_external.py +0 -288
- {devpi-server-6.15.0 → devpi_server-6.17.0}/LICENSE +0 -0
- {devpi-server-6.15.0 → devpi_server-6.17.0}/MANIFEST.in +0 -0
- {devpi-server-6.15.0 → devpi_server-6.17.0}/README.rst +0 -0
- {devpi-server-6.15.0 → devpi_server-6.17.0}/devpi_server/__main__.py +0 -0
- {devpi-server-6.15.0 → devpi_server-6.17.0}/devpi_server/auth_basic.py +0 -0
- {devpi-server-6.15.0 → devpi_server-6.17.0}/devpi_server/auth_devpi.py +0 -0
- {devpi-server-6.15.0 → devpi_server-6.17.0}/devpi_server/cfg/__init__.py +0 -0
- {devpi-server-6.15.0 → devpi_server-6.17.0}/devpi_server/cfg/crontab.template +0 -0
- {devpi-server-6.15.0 → devpi_server-6.17.0}/devpi_server/cfg/devpi.service.template +0 -0
- {devpi-server-6.15.0 → devpi_server-6.17.0}/devpi_server/cfg/launchd-macos.txt.template +0 -0
- {devpi-server-6.15.0 → devpi_server-6.17.0}/devpi_server/cfg/nginx-devpi-caching-http.conf.template +0 -0
- {devpi-server-6.15.0 → devpi_server-6.17.0}/devpi_server/cfg/nginx-devpi-caching-location.conf.template +0 -0
- {devpi-server-6.15.0 → devpi_server-6.17.0}/devpi_server/cfg/nginx-devpi-caching-proxy.conf.template +0 -0
- {devpi-server-6.15.0 → devpi_server-6.17.0}/devpi_server/cfg/nginx-devpi-caching-server.conf.template +0 -0
- {devpi-server-6.15.0 → devpi_server-6.17.0}/devpi_server/cfg/nginx-devpi.conf.template +0 -0
- {devpi-server-6.15.0 → devpi_server-6.17.0}/devpi_server/cfg/supervisor-devpi.conf.template +0 -0
- {devpi-server-6.15.0 → devpi_server-6.17.0}/devpi_server/cfg/supervisord.conf.template +0 -0
- {devpi-server-6.15.0 → devpi_server-6.17.0}/devpi_server/cfg/windows-service.txt.template +0 -0
- {devpi-server-6.15.0 → devpi_server-6.17.0}/devpi_server/exceptions.py +0 -0
- {devpi-server-6.15.0 → devpi_server-6.17.0}/devpi_server/filestore_fs.py +0 -0
- {devpi-server-6.15.0 → devpi_server-6.17.0}/devpi_server/fileutil.py +0 -0
- {devpi-server-6.15.0 → devpi_server-6.17.0}/devpi_server/fsck.py +0 -0
- {devpi-server-6.15.0 → devpi_server-6.17.0}/devpi_server/hookspecs.py +0 -0
- {devpi-server-6.15.0 → devpi_server-6.17.0}/devpi_server/init.py +0 -0
- {devpi-server-6.15.0 → devpi_server-6.17.0}/devpi_server/keyfs_sqlite.py +0 -0
- {devpi-server-6.15.0 → devpi_server-6.17.0}/devpi_server/passwd.py +0 -0
- {devpi-server-6.15.0 → devpi_server-6.17.0}/devpi_server/py.typed +0 -0
- {devpi-server-6.15.0 → devpi_server-6.17.0}/devpi_server/sizeof.py +0 -0
- {devpi-server-6.15.0 → devpi_server-6.17.0}/devpi_server/vendor/__init__.py +0 -0
- {devpi-server-6.15.0 → devpi_server-6.17.0}/devpi_server/vendor/_pip.py +0 -0
- {devpi-server-6.15.0 → devpi_server-6.17.0}/devpi_server.egg-info/dependency_links.txt +0 -0
- {devpi-server-6.15.0 → devpi_server-6.17.0}/devpi_server.egg-info/entry_points.txt +0 -0
- {devpi-server-6.15.0 → devpi_server-6.17.0}/devpi_server.egg-info/top_level.txt +0 -0
- {devpi-server-6.15.0 → devpi_server-6.17.0}/pytest_devpi_server/__init__.py +0 -0
- {devpi-server-6.15.0 → devpi_server-6.17.0}/test_devpi_server/__init__.py +0 -0
- {devpi-server-6.15.0 → devpi_server-6.17.0}/test_devpi_server/conftest.py +0 -0
- {devpi-server-6.15.0 → devpi_server-6.17.0}/test_devpi_server/example.py +0 -0
- {devpi-server-6.15.0 → devpi_server-6.17.0}/test_devpi_server/functional.py +0 -0
- {devpi-server-6.15.0 → devpi_server-6.17.0}/test_devpi_server/importexportdata/badindexname/dataindex.json +0 -0
- {devpi-server-6.15.0 → devpi_server-6.17.0}/test_devpi_server/importexportdata/badusername/dataindex.json +0 -0
- {devpi-server-6.15.0 → devpi_server-6.17.0}/test_devpi_server/importexportdata/basescycle/dataindex.json +0 -0
- {devpi-server-6.15.0 → devpi_server-6.17.0}/test_devpi_server/importexportdata/createdmodified/dataindex.json +0 -0
- {devpi-server-6.15.0 → devpi_server-6.17.0}/test_devpi_server/importexportdata/deletedbase/dataindex.json +0 -0
- {devpi-server-6.15.0 → devpi_server-6.17.0}/test_devpi_server/importexportdata/mirrordata/dataindex.json +0 -0
- {devpi-server-6.15.0 → devpi_server-6.17.0}/test_devpi_server/importexportdata/mirrordata/root/pypi/dddttt/0.1.dev1/dddttt-0.1.dev1.tar.gz +0 -0
- {devpi-server-6.15.0 → devpi_server-6.17.0}/test_devpi_server/importexportdata/modifiedpypi/dataindex.json +0 -0
- {devpi-server-6.15.0 → devpi_server-6.17.0}/test_devpi_server/importexportdata/nocreatedmodified/dataindex.json +0 -0
- {devpi-server-6.15.0 → devpi_server-6.17.0}/test_devpi_server/importexportdata/normalization/dataindex.json +0 -0
- {devpi-server-6.15.0 → devpi_server-6.17.0}/test_devpi_server/importexportdata/normalization/root/dev/hello.pkg/hello.pkg-1.0.tar.gz +0 -0
- {devpi-server-6.15.0 → devpi_server-6.17.0}/test_devpi_server/importexportdata/normalization_merge/dataindex.json +0 -0
- {devpi-server-6.15.0 → devpi_server-6.17.0}/test_devpi_server/importexportdata/normalization_merge/root/dev/hello-pkg/hello.pkg-1.1.tar.gz +0 -0
- {devpi-server-6.15.0 → devpi_server-6.17.0}/test_devpi_server/importexportdata/normalization_merge/root/dev/hello.pkg/hello.pkg-1.0.tar.gz +0 -0
- {devpi-server-6.15.0 → devpi_server-6.17.0}/test_devpi_server/importexportdata/norootpypi/dataindex.json +0 -0
- {devpi-server-6.15.0 → devpi_server-6.17.0}/test_devpi_server/importexportdata/nouser/dataindex.json +0 -0
- {devpi-server-6.15.0 → devpi_server-6.17.0}/test_devpi_server/importexportdata/removedindexplugin/dataindex.json +0 -0
- {devpi-server-6.15.0 → devpi_server-6.17.0}/test_devpi_server/importexportdata/removedindexplugin/user/dev/pkg/pkg-1.0.tar.gz +0 -0
- {devpi-server-6.15.0 → devpi_server-6.17.0}/test_devpi_server/importexportdata/toxresult_naming_scheme/dataindex.json +0 -0
- {devpi-server-6.15.0 → devpi_server-6.17.0}/test_devpi_server/importexportdata/toxresult_naming_scheme/root/dev/hello/0.9/hello-0.9.tar.gz +0 -0
- {devpi-server-6.15.0 → devpi_server-6.17.0}/test_devpi_server/importexportdata/toxresult_naming_scheme/root/dev/hello/sha256=ed7002b439e9ac845f22357d822bac1444730fbdb6016d3ec9432297b9ec9f73/hello-0.9.tar.gz.toxresult0 +0 -0
- {devpi-server-6.15.0 → devpi_server-6.17.0}/test_devpi_server/importexportdata/toxresult_upload_default/dataindex.json +0 -0
- {devpi-server-6.15.0 → devpi_server-6.17.0}/test_devpi_server/py.typed +0 -0
- {devpi-server-6.15.0 → devpi_server-6.17.0}/test_devpi_server/simpypi.py +0 -0
- {devpi-server-6.15.0 → devpi_server-6.17.0}/test_devpi_server/test_authcheck.py +0 -0
- {devpi-server-6.15.0 → devpi_server-6.17.0}/test_devpi_server/test_conftest.py +0 -0
- {devpi-server-6.15.0 → devpi_server-6.17.0}/test_devpi_server/test_fileutil.py +0 -0
- {devpi-server-6.15.0 → devpi_server-6.17.0}/test_devpi_server/test_fsck.py +0 -0
- {devpi-server-6.15.0 → devpi_server-6.17.0}/test_devpi_server/test_genconfig.py +0 -0
- {devpi-server-6.15.0 → devpi_server-6.17.0}/test_devpi_server/test_keyfs_sqlite_fs.py +0 -0
- {devpi-server-6.15.0 → devpi_server-6.17.0}/test_devpi_server/test_log.py +0 -0
- {devpi-server-6.15.0 → devpi_server-6.17.0}/test_devpi_server/test_nginx.py +0 -0
- {devpi-server-6.15.0 → devpi_server-6.17.0}/test_devpi_server/test_nginx_replica.py +0 -0
- {devpi-server-6.15.0 → devpi_server-6.17.0}/test_devpi_server/test_permissions.py +0 -0
- {devpi-server-6.15.0 → devpi_server-6.17.0}/test_devpi_server/test_readonly.py +0 -0
- {devpi-server-6.15.0 → devpi_server-6.17.0}/test_devpi_server/test_replica_functional.py +0 -0
- {devpi-server-6.15.0 → devpi_server-6.17.0}/test_devpi_server/test_stage_customizer.py +0 -0
- {devpi-server-6.15.0 → devpi_server-6.17.0}/test_devpi_server/test_streaming_nginx.py +0 -0
- {devpi-server-6.15.0 → devpi_server-6.17.0}/test_devpi_server/test_streaming_replica.py +0 -0
- {devpi-server-6.15.0 → devpi_server-6.17.0}/test_devpi_server/test_streaming_replica_nginx.py +0 -0
- {devpi-server-6.15.0 → devpi_server-6.17.0}/test_devpi_server/test_view_auth.py +0 -0
- {devpi-server-6.15.0 → devpi_server-6.17.0}/test_devpi_server/test_views_patch.py +0 -0
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
[flake8]
|
|
2
|
+
# E203 is ignored because we enforce ruff format which contradicts it
|
|
3
|
+
ignore = E203,E501,E704,E741,W503
|
|
4
|
+
per-file-ignores =
|
|
5
|
+
plugin.py:E127,E128,E231
|
|
6
|
+
importexport.py:E127
|
|
7
|
+
model.py:E128,E231
|
|
8
|
+
test_importexport.py:E121
|
|
9
|
+
test*.py:E126,E127,E128,E225,E226,E231,E251
|
|
@@ -2,6 +2,75 @@
|
|
|
2
2
|
|
|
3
3
|
.. towncrier release notes start
|
|
4
4
|
|
|
5
|
+
6.17.0 (2025-08-27)
|
|
6
|
+
===================
|
|
7
|
+
|
|
8
|
+
Deprecations and Removals
|
|
9
|
+
-------------------------
|
|
10
|
+
|
|
11
|
+
- Dropped support for migrating old password hashes that were replaced in devpi-server 4.2.0.
|
|
12
|
+
|
|
13
|
+
- Removed support for basic authorization in primary URL. The connection is already secured by a bearer token header.
|
|
14
|
+
|
|
15
|
+
- Removed the experimental ``--replica-cert`` option. The replica is already using a token via a shared secret, so this is redundant.
|
|
16
|
+
|
|
17
|
+
- Removed ``--replica-max-retries`` option. It wasn't implemented for async_httpget and didn't work correctly when streaming data.
|
|
18
|
+
|
|
19
|
+
Features
|
|
20
|
+
--------
|
|
21
|
+
|
|
22
|
+
- Use httpx for all data fetching for mirrors and fetch projects list asynchronously to allow update in background even after a timeout.
|
|
23
|
+
|
|
24
|
+
- Use httpx instead of requests when proxying from replicas to primary.
|
|
25
|
+
|
|
26
|
+
- Use httpx for all requests from replicas to primary.
|
|
27
|
+
|
|
28
|
+
- Use httpx when pushing releases to external index.
|
|
29
|
+
|
|
30
|
+
- Added ``mirror_ignore_serial_header`` mirror index option, which allows switching from PyPI to a mirror without serials header when set to ``True``, otherwise only stale links will be served and no updates be stored.
|
|
31
|
+
|
|
32
|
+
- The HTTP cache information for mirrored projects is persisted and re-used on server restarts.
|
|
33
|
+
|
|
34
|
+
- Added ``--file-replication-skip-indexes`` option to skip file replication for ``all``, by index type (i.e. ``mirror``) or index name (i.e. ``root/pypi``).
|
|
35
|
+
|
|
36
|
+
Bug Fixes
|
|
37
|
+
---------
|
|
38
|
+
|
|
39
|
+
- Correctly handle lists for ``Provides-Extra`` and ``License-File`` metadata in database.
|
|
40
|
+
|
|
41
|
+
- Fix traceback by returning 401 error code when using wrong password with a user that was created using an authentication plugin like devpi-ldap which passes authentication through in that case.
|
|
42
|
+
|
|
43
|
+
- Fix #1053: allow users to update their passwords when ``--restrict-modify`` is used.
|
|
44
|
+
|
|
45
|
+
- Fix #1097: return 404 when trying to POST to +simple.
|
|
46
|
+
|
|
47
|
+
Other Changes
|
|
48
|
+
-------------
|
|
49
|
+
|
|
50
|
+
- Changed User-Agent when fetching data for mirrors from just "server" to "devpi-server".
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
6.16.0 (2025-06-25)
|
|
54
|
+
===================
|
|
55
|
+
|
|
56
|
+
Deprecations and Removals
|
|
57
|
+
-------------------------
|
|
58
|
+
|
|
59
|
+
- Dropped support for Python 3.7 and 3.8.
|
|
60
|
+
|
|
61
|
+
Features
|
|
62
|
+
--------
|
|
63
|
+
|
|
64
|
+
- Update stored package metadata fields to version 2.4 for license expressions (PEP 639).
|
|
65
|
+
|
|
66
|
+
Bug Fixes
|
|
67
|
+
---------
|
|
68
|
+
|
|
69
|
+
- Preserve hash when importing mirror data to prevent unnecessary updates later on.
|
|
70
|
+
|
|
71
|
+
- Keep original metadata_version in database.
|
|
72
|
+
|
|
73
|
+
|
|
5
74
|
6.15.0 (2025-05-18)
|
|
6
75
|
===================
|
|
7
76
|
|
|
@@ -11,7 +80,6 @@ Features
|
|
|
11
80
|
- Add ``--connection-limit`` option to devpi-server passed on to waitress.
|
|
12
81
|
|
|
13
82
|
|
|
14
|
-
|
|
15
83
|
6.14.0 (2024-10-16)
|
|
16
84
|
===================
|
|
17
85
|
|
|
@@ -24,15 +92,12 @@ Features
|
|
|
24
92
|
|
|
25
93
|
- Allow pushing of documentation only with no release files. Requires devpi-client 7.2.0.
|
|
26
94
|
|
|
27
|
-
|
|
28
|
-
|
|
29
95
|
Bug Fixes
|
|
30
96
|
---------
|
|
31
97
|
|
|
32
98
|
- No longer automatically "register" a project when pushing releases to PyPI. The reply changed from HTTP status 410 to 400 breaking the upload. With devpi-client 7.2.0 there is a ``--register-project`` option if it is still required for some other package registry.
|
|
33
99
|
|
|
34
100
|
|
|
35
|
-
|
|
36
101
|
6.13.0 (2024-09-19)
|
|
37
102
|
===================
|
|
38
103
|
|
|
@@ -44,8 +109,6 @@ Deprecations and Removals
|
|
|
44
109
|
Using the old terms will now output warnings.
|
|
45
110
|
The ``+status`` API has additional fields and the ``role`` field content will change with 7.0.0.
|
|
46
111
|
|
|
47
|
-
|
|
48
|
-
|
|
49
112
|
Features
|
|
50
113
|
--------
|
|
51
114
|
|
|
@@ -53,8 +116,6 @@ Features
|
|
|
53
116
|
|
|
54
117
|
- Added support uv pip as an installer.
|
|
55
118
|
|
|
56
|
-
|
|
57
|
-
|
|
58
119
|
Bug Fixes
|
|
59
120
|
---------
|
|
60
121
|
|
|
@@ -67,7 +128,6 @@ Bug Fixes
|
|
|
67
128
|
- Only warn about replica not being in sync instead of fatal status while still replicating.
|
|
68
129
|
|
|
69
130
|
|
|
70
|
-
|
|
71
131
|
6.12.1 (2024-07-24)
|
|
72
132
|
===================
|
|
73
133
|
|
|
@@ -81,7 +141,6 @@ Bug Fixes
|
|
|
81
141
|
- Fix #1044: Correctly update cache expiry time when mirrored server returns 304 Not Modified.
|
|
82
142
|
|
|
83
143
|
|
|
84
|
-
|
|
85
144
|
6.12.0 (2024-06-25)
|
|
86
145
|
===================
|
|
87
146
|
|
|
@@ -92,15 +151,12 @@ Features
|
|
|
92
151
|
|
|
93
152
|
- Added ``devpiserver_on_toxresult_upload_forbidden`` hook to allow returning a custom message and result (403 or 200).
|
|
94
153
|
|
|
95
|
-
|
|
96
|
-
|
|
97
154
|
Bug Fixes
|
|
98
155
|
---------
|
|
99
156
|
|
|
100
157
|
- Return json data if toxresult upload is forbidden.
|
|
101
158
|
|
|
102
159
|
|
|
103
|
-
|
|
104
160
|
6.11.0 (2024-04-20)
|
|
105
161
|
===================
|
|
106
162
|
|
|
@@ -111,8 +167,6 @@ Features
|
|
|
111
167
|
|
|
112
168
|
- Fix #983: Add plugin hook for mirror authentication header.
|
|
113
169
|
|
|
114
|
-
|
|
115
|
-
|
|
116
170
|
Bug Fixes
|
|
117
171
|
---------
|
|
118
172
|
|
|
@@ -121,7 +175,6 @@ Bug Fixes
|
|
|
121
175
|
- Fix #1033: Use ``int`` for ``--mirror-cache-expiry`` to fix value of ``proxy_cache_valid`` in nginx caching config.
|
|
122
176
|
|
|
123
177
|
|
|
124
|
-
|
|
125
178
|
6.10.0 (2023-12-19)
|
|
126
179
|
===================
|
|
127
180
|
|
|
@@ -132,8 +185,6 @@ Features
|
|
|
132
185
|
|
|
133
186
|
- Fix #998: Use the pure Python httpx library instead of aiohttp to prevent delays in supporting newest Python releases.
|
|
134
187
|
|
|
135
|
-
|
|
136
|
-
|
|
137
188
|
Bug Fixes
|
|
138
189
|
---------
|
|
139
190
|
|
|
@@ -142,7 +193,6 @@ Bug Fixes
|
|
|
142
193
|
- Only compare hostname instead of full URL prefix when parsing mirror packages to fix mirrors with basic authentication and absolute URLs. See #1006
|
|
143
194
|
|
|
144
195
|
|
|
145
|
-
|
|
146
196
|
6.9.2 (2023-08-06)
|
|
147
197
|
==================
|
|
148
198
|
|
|
@@ -173,7 +223,6 @@ Features
|
|
|
173
223
|
|
|
174
224
|
- Fix #931: Add ``mirror_no_project_list`` setting for mirror indexes that have no full project list like google cloud artifacts or if you want to prevent downloading the full list for huge indexes like PyPI.
|
|
175
225
|
|
|
176
|
-
|
|
177
226
|
Bug Fixes
|
|
178
227
|
---------
|
|
179
228
|
|
|
@@ -196,7 +245,6 @@ Features
|
|
|
196
245
|
|
|
197
246
|
- Fix #929: Cache normalized project names per transaction on mirror index instances.
|
|
198
247
|
|
|
199
|
-
|
|
200
248
|
Bug Fixes
|
|
201
249
|
---------
|
|
202
250
|
|
|
@@ -219,7 +267,6 @@ Features
|
|
|
219
267
|
|
|
220
268
|
- Set headers to prevent caching for simple links with stale results.
|
|
221
269
|
|
|
222
|
-
|
|
223
270
|
Bug Fixes
|
|
224
271
|
---------
|
|
225
272
|
|
|
@@ -257,7 +304,6 @@ Features
|
|
|
257
304
|
|
|
258
305
|
- Support `PEP-691 <https://peps.python.org/pep-0691/>`_ conformant fetching for mirrors, and requests with JSON result for installers. Proxy servers should add compression support for the ``application/vnd.pypi.simple.v1+json`` content type (``gzip_types`` for nginx).
|
|
259
306
|
|
|
260
|
-
|
|
261
307
|
Bug Fixes
|
|
262
308
|
---------
|
|
263
309
|
|
|
@@ -299,7 +345,6 @@ Features
|
|
|
299
345
|
|
|
300
346
|
- Better logging and handling if a thread unexpectedly dies.
|
|
301
347
|
|
|
302
|
-
|
|
303
348
|
Bug Fixes
|
|
304
349
|
---------
|
|
305
350
|
|
|
@@ -320,13 +365,11 @@ Deprecations and Removals
|
|
|
320
365
|
|
|
321
366
|
- As announced with 6.0.0, support for Python 3.6 has been dropped, because it has reached its end of life.
|
|
322
367
|
|
|
323
|
-
|
|
324
368
|
Features
|
|
325
369
|
--------
|
|
326
370
|
|
|
327
371
|
- When an installer user agent is detected the full list of projects is returned unsorted and with less info to improve performance and reduce memory usage.
|
|
328
372
|
|
|
329
|
-
|
|
330
373
|
Bug Fixes
|
|
331
374
|
---------
|
|
332
375
|
|
|
@@ -352,7 +395,6 @@ Features
|
|
|
352
395
|
|
|
353
396
|
- Use aiohttp (asyncio) for fetching release links from mirrors to return stale links immediately in case of a timeout, but update the database in the background for the next request.
|
|
354
397
|
|
|
355
|
-
|
|
356
398
|
Bug Fixes
|
|
357
399
|
---------
|
|
358
400
|
|
|
@@ -386,7 +428,6 @@ Deprecations and Removals
|
|
|
386
428
|
|
|
387
429
|
- Renamed 'pypi_submit' permission to 'upload'. The old permission still works, but will be removed in a later major release.
|
|
388
430
|
|
|
389
|
-
|
|
390
431
|
Features
|
|
391
432
|
--------
|
|
392
433
|
|
|
@@ -394,7 +435,6 @@ Features
|
|
|
394
435
|
|
|
395
436
|
- Allow user and index URLs to work with a trailing slash.
|
|
396
437
|
|
|
397
|
-
|
|
398
438
|
Bug Fixes
|
|
399
439
|
---------
|
|
400
440
|
|
|
@@ -422,7 +462,6 @@ Deprecations and Removals
|
|
|
422
462
|
|
|
423
463
|
- Removed deprecated ``--start``, ``--stop`` and ``--status`` options.
|
|
424
464
|
|
|
425
|
-
|
|
426
465
|
Features
|
|
427
466
|
--------
|
|
428
467
|
|
|
@@ -454,7 +493,6 @@ Features
|
|
|
454
493
|
|
|
455
494
|
- The user creation and modification time is now stored. Adding or removing an index doesn't count as a modification.
|
|
456
495
|
|
|
457
|
-
|
|
458
496
|
Bug Fixes
|
|
459
497
|
---------
|
|
460
498
|
|
|
@@ -466,7 +504,6 @@ Bug Fixes
|
|
|
466
504
|
|
|
467
505
|
- Handle cases where the ``Content-Type`` header from a mirror can be an empty string.
|
|
468
506
|
|
|
469
|
-
|
|
470
507
|
Other Changes
|
|
471
508
|
-------------
|
|
472
509
|
|
|
@@ -533,7 +570,6 @@ Features
|
|
|
533
570
|
|
|
534
571
|
- On import files for mirror indexes are now imported when they were included in the dump (see ``--include-mirrored-files``).
|
|
535
572
|
|
|
536
|
-
|
|
537
573
|
Bug Fixes
|
|
538
574
|
---------
|
|
539
575
|
|
|
@@ -561,7 +597,6 @@ Features
|
|
|
561
597
|
|
|
562
598
|
- proxy requests from the replica to the master will use number of seconds from the new ``--proxy-timeout`` option as their timeout value.
|
|
563
599
|
|
|
564
|
-
|
|
565
600
|
Bug Fixes
|
|
566
601
|
---------
|
|
567
602
|
|
|
@@ -584,7 +619,6 @@ Deprecations and Removals
|
|
|
584
619
|
|
|
585
620
|
- The ``--passwd`` option is deprecated, use the new ``devpi-passwd`` command instead.
|
|
586
621
|
|
|
587
|
-
|
|
588
622
|
Features
|
|
589
623
|
--------
|
|
590
624
|
|
|
@@ -598,7 +632,6 @@ Features
|
|
|
598
632
|
|
|
599
633
|
- Storage options can now be specified as a dict in yaml config files.
|
|
600
634
|
|
|
601
|
-
|
|
602
635
|
Bug Fixes
|
|
603
636
|
---------
|
|
604
637
|
|
|
@@ -620,7 +653,6 @@ Bug Fixes
|
|
|
620
653
|
|
|
621
654
|
- Unnecessary database writes where the final value didn't change are now prevented.
|
|
622
655
|
|
|
623
|
-
|
|
624
656
|
Other Changes
|
|
625
657
|
-------------
|
|
626
658
|
|
|
@@ -654,7 +686,6 @@ Deprecations and Removals
|
|
|
654
686
|
|
|
655
687
|
- deprecated Python 2.7 support. This is the last major version supporting Python 2.7. For upgrading to Python 3.x you have to export your data using your current setup with Python 2.7 and import it in a new installation with Python 3.x.
|
|
656
688
|
|
|
657
|
-
|
|
658
689
|
Features
|
|
659
690
|
--------
|
|
660
691
|
|
|
@@ -672,7 +703,6 @@ Features
|
|
|
672
703
|
|
|
673
704
|
- when credentials for the user are rejected, the error message now says so instead of claiming the user could not be found.
|
|
674
705
|
|
|
675
|
-
|
|
676
706
|
Other Changes
|
|
677
707
|
-------------
|
|
678
708
|
|
|
@@ -707,7 +737,6 @@ Features
|
|
|
707
737
|
|
|
708
738
|
- add ``--hard-links`` support for replicas together with the ``--replica-file-search-path`` option. When a matching file is found it's hard linked instead of writing a copy.
|
|
709
739
|
|
|
710
|
-
|
|
711
740
|
Bug Fixes
|
|
712
741
|
---------
|
|
713
742
|
|
|
@@ -717,7 +746,6 @@ Bug Fixes
|
|
|
717
746
|
|
|
718
747
|
- use timeout when waiting for data from master in replica on mirror simple pages.
|
|
719
748
|
|
|
720
|
-
|
|
721
749
|
Other Changes
|
|
722
750
|
-------------
|
|
723
751
|
|
|
@@ -749,7 +777,6 @@ Features
|
|
|
749
777
|
|
|
750
778
|
- The PATCH method of indexes supports a list of arguments with operations in the form of ``key=value`` for setting values and for lists in the form of ``key+=value`` and ``key-=value`` to add and remove items. This prevents undoing changes sent in concurrent PATCH requests.
|
|
751
779
|
|
|
752
|
-
|
|
753
780
|
Bug Fixes
|
|
754
781
|
---------
|
|
755
782
|
|
|
@@ -779,7 +806,6 @@ Deprecations and Removals
|
|
|
779
806
|
|
|
780
807
|
- Deprecated DEVPI_SERVERDIR environment variable in favor of DEVPISERVER_SERVERDIR to be consistent with the other option overwrites.
|
|
781
808
|
|
|
782
|
-
|
|
783
809
|
Features
|
|
784
810
|
--------
|
|
785
811
|
|
|
@@ -799,7 +825,6 @@ Features
|
|
|
799
825
|
|
|
800
826
|
- Better handling of 404s in mirror indexes. Every project not found would create an entry in the database which would grow it unnecessarily.
|
|
801
827
|
|
|
802
|
-
|
|
803
828
|
Bug Fixes
|
|
804
829
|
---------
|
|
805
830
|
|
|
@@ -837,7 +862,6 @@ Features
|
|
|
837
862
|
|
|
838
863
|
- add `--request-timeout` option to provide adjustable request timeout
|
|
839
864
|
|
|
840
|
-
|
|
841
865
|
Bug Fixes
|
|
842
866
|
---------
|
|
843
867
|
|
|
@@ -863,7 +887,6 @@ Features
|
|
|
863
887
|
|
|
864
888
|
- Use ``pypi.org`` as new default for ``root/pypi`` mirror index.
|
|
865
889
|
|
|
866
|
-
|
|
867
890
|
Bug Fixes
|
|
868
891
|
---------
|
|
869
892
|
|
|
@@ -883,7 +906,6 @@ Features
|
|
|
883
906
|
|
|
884
907
|
- fix issue469: Add ``acl_toxresult_upload`` to index configuration.
|
|
885
908
|
|
|
886
|
-
|
|
887
909
|
Bug Fixes
|
|
888
910
|
---------
|
|
889
911
|
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
=========
|
|
4
|
+
Changelog
|
|
5
|
+
=========
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
.. towncrier release notes start
|
|
11
|
+
|
|
12
|
+
6.17.0 (2025-08-27)
|
|
13
|
+
===================
|
|
14
|
+
|
|
15
|
+
Deprecations and Removals
|
|
16
|
+
-------------------------
|
|
17
|
+
|
|
18
|
+
- Dropped support for migrating old password hashes that were replaced in devpi-server 4.2.0.
|
|
19
|
+
|
|
20
|
+
- Removed support for basic authorization in primary URL. The connection is already secured by a bearer token header.
|
|
21
|
+
|
|
22
|
+
- Removed the experimental ``--replica-cert`` option. The replica is already using a token via a shared secret, so this is redundant.
|
|
23
|
+
|
|
24
|
+
- Removed ``--replica-max-retries`` option. It wasn't implemented for async_httpget and didn't work correctly when streaming data.
|
|
25
|
+
|
|
26
|
+
Features
|
|
27
|
+
--------
|
|
28
|
+
|
|
29
|
+
- Use httpx for all data fetching for mirrors and fetch projects list asynchronously to allow update in background even after a timeout.
|
|
30
|
+
|
|
31
|
+
- Use httpx instead of requests when proxying from replicas to primary.
|
|
32
|
+
|
|
33
|
+
- Use httpx for all requests from replicas to primary.
|
|
34
|
+
|
|
35
|
+
- Use httpx when pushing releases to external index.
|
|
36
|
+
|
|
37
|
+
- Added ``mirror_ignore_serial_header`` mirror index option, which allows switching from PyPI to a mirror without serials header when set to ``True``, otherwise only stale links will be served and no updates be stored.
|
|
38
|
+
|
|
39
|
+
- The HTTP cache information for mirrored projects is persisted and re-used on server restarts.
|
|
40
|
+
|
|
41
|
+
- Added ``--file-replication-skip-indexes`` option to skip file replication for ``all``, by index type (i.e. ``mirror``) or index name (i.e. ``root/pypi``).
|
|
42
|
+
|
|
43
|
+
Bug Fixes
|
|
44
|
+
---------
|
|
45
|
+
|
|
46
|
+
- Correctly handle lists for ``Provides-Extra`` and ``License-File`` metadata in database.
|
|
47
|
+
|
|
48
|
+
- Fix traceback by returning 401 error code when using wrong password with a user that was created using an authentication plugin like devpi-ldap which passes authentication through in that case.
|
|
49
|
+
|
|
50
|
+
- Fix #1053: allow users to update their passwords when ``--restrict-modify`` is used.
|
|
51
|
+
|
|
52
|
+
- Fix #1097: return 404 when trying to POST to +simple.
|
|
53
|
+
|
|
54
|
+
Other Changes
|
|
55
|
+
-------------
|
|
56
|
+
|
|
57
|
+
- Changed User-Agent when fetching data for mirrors from just "server" to "devpi-server".
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
6.16.0 (2025-06-25)
|
|
61
|
+
===================
|
|
62
|
+
|
|
63
|
+
Deprecations and Removals
|
|
64
|
+
-------------------------
|
|
65
|
+
|
|
66
|
+
- Dropped support for Python 3.7 and 3.8.
|
|
67
|
+
|
|
68
|
+
Features
|
|
69
|
+
--------
|
|
70
|
+
|
|
71
|
+
- Update stored package metadata fields to version 2.4 for license expressions (PEP 639).
|
|
72
|
+
|
|
73
|
+
Bug Fixes
|
|
74
|
+
---------
|
|
75
|
+
|
|
76
|
+
- Preserve hash when importing mirror data to prevent unnecessary updates later on.
|
|
77
|
+
|
|
78
|
+
- Keep original metadata_version in database.
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
6.15.0 (2025-05-18)
|
|
82
|
+
===================
|
|
83
|
+
|
|
84
|
+
Features
|
|
85
|
+
--------
|
|
86
|
+
|
|
87
|
+
- Add ``--connection-limit`` option to devpi-server passed on to waitress.
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
6.14.0 (2024-10-16)
|
|
91
|
+
===================
|
|
92
|
+
|
|
93
|
+
Features
|
|
94
|
+
--------
|
|
95
|
+
|
|
96
|
+
- Allow pushing of versions which only have documentation and no releases.
|
|
97
|
+
|
|
98
|
+
- Allow pushing of release files only with no documentation. Requires devpi-client 7.2.0.
|
|
99
|
+
|
|
100
|
+
- Allow pushing of documentation only with no release files. Requires devpi-client 7.2.0.
|
|
101
|
+
|
|
102
|
+
Bug Fixes
|
|
103
|
+
---------
|
|
104
|
+
|
|
105
|
+
- No longer automatically "register" a project when pushing releases to PyPI. The reply changed from HTTP status 410 to 400 breaking the upload. With devpi-client 7.2.0 there is a ``--register-project`` option if it is still required for some other package registry.
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
6.13.0 (2024-09-19)
|
|
109
|
+
===================
|
|
110
|
+
|
|
111
|
+
Deprecations and Removals
|
|
112
|
+
-------------------------
|
|
113
|
+
|
|
114
|
+
- Remove/Deprecate "master" related terminology in favor of "primary".
|
|
115
|
+
Usage related changes are the switch to ``--primary-url`` instead of ``--master-url`` and ``--role=primary`` instead of ``--role=master``.
|
|
116
|
+
Using the old terms will now output warnings.
|
|
117
|
+
The ``+status`` API has additional fields and the ``role`` field content will change with 7.0.0.
|
|
118
|
+
|
|
119
|
+
Features
|
|
120
|
+
--------
|
|
121
|
+
|
|
122
|
+
- Enable logging command line options for all commands.
|
|
123
|
+
|
|
124
|
+
- Added support uv pip as an installer.
|
|
125
|
+
|
|
126
|
+
Bug Fixes
|
|
127
|
+
---------
|
|
128
|
+
|
|
129
|
+
- Don't report on lagging event processing while replicating.
|
|
130
|
+
|
|
131
|
+
- Report primary serial correctly with streaming replication.
|
|
132
|
+
|
|
133
|
+
- Don't store file data in memory when fetching a release while pushing from a mirror.
|
|
134
|
+
|
|
135
|
+
- Only warn about replica not being in sync instead of fatal status while still replicating.
|
|
136
|
+
|