devpi-server 6.16.0__tar.gz → 6.18.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.16.0 → devpi_server-6.18.0}/.flake8 +2 -3
- {devpi_server-6.16.0 → devpi_server-6.18.0}/CHANGELOG +78 -51
- devpi_server-6.18.0/CHANGELOG.short.rst +137 -0
- {devpi_server-6.16.0 → devpi_server-6.18.0}/PKG-INFO +67 -45
- devpi_server-6.18.0/devpi_server/__init__.py +1 -0
- {devpi_server-6.16.0 → devpi_server-6.18.0}/devpi_server/__main__.py +1 -0
- {devpi_server-6.16.0 → devpi_server-6.18.0}/devpi_server/auth.py +6 -59
- devpi_server-6.18.0/devpi_server/compat.py +35 -0
- {devpi_server-6.16.0 → devpi_server-6.18.0}/devpi_server/config.py +160 -86
- {devpi_server-6.16.0 → devpi_server-6.18.0}/devpi_server/filestore.py +144 -59
- devpi_server-6.18.0/devpi_server/filestore_db.py +82 -0
- devpi_server-6.18.0/devpi_server/filestore_fs.py +178 -0
- devpi_server-6.18.0/devpi_server/filestore_fs_base.py +329 -0
- devpi_server-6.18.0/devpi_server/filestore_hash_hl.py +232 -0
- {devpi_server-6.16.0 → devpi_server-6.18.0}/devpi_server/fileutil.py +30 -18
- {devpi_server-6.16.0 → devpi_server-6.18.0}/devpi_server/fsck.py +9 -10
- {devpi_server-6.16.0 → devpi_server-6.18.0}/devpi_server/genconfig.py +23 -20
- {devpi_server-6.16.0 → devpi_server-6.18.0}/devpi_server/hookspecs.py +1 -0
- devpi_server-6.18.0/devpi_server/htmlpage.py +73 -0
- devpi_server-6.18.0/devpi_server/httpclient.py +273 -0
- {devpi_server-6.16.0 → devpi_server-6.18.0}/devpi_server/importexport.py +156 -123
- devpi_server-6.18.0/devpi_server/interfaces.py +569 -0
- {devpi_server-6.16.0 → devpi_server-6.18.0}/devpi_server/keyfs.py +202 -40
- {devpi_server-6.16.0 → devpi_server-6.18.0}/devpi_server/keyfs_sqlite.py +43 -21
- devpi_server-6.18.0/devpi_server/keyfs_sqlite_fs.py +47 -0
- devpi_server-6.18.0/devpi_server/keyfs_types.py +302 -0
- {devpi_server-6.16.0 → devpi_server-6.18.0}/devpi_server/main.py +90 -116
- {devpi_server-6.16.0 → devpi_server-6.18.0}/devpi_server/middleware.py +1 -1
- {devpi_server-6.16.0 → devpi_server-6.18.0}/devpi_server/mirror.py +446 -155
- {devpi_server-6.16.0 → devpi_server-6.18.0}/devpi_server/model.py +340 -169
- {devpi_server-6.16.0 → devpi_server-6.18.0}/devpi_server/mythread.py +1 -0
- devpi_server-6.18.0/devpi_server/normalized.py +29 -0
- {devpi_server-6.16.0 → devpi_server-6.18.0}/devpi_server/readonly.py +35 -10
- {devpi_server-6.16.0 → devpi_server-6.18.0}/devpi_server/replica.py +354 -231
- {devpi_server-6.16.0 → devpi_server-6.18.0}/devpi_server/sizeof.py +13 -6
- {devpi_server-6.16.0 → devpi_server-6.18.0}/devpi_server/view_auth.py +47 -22
- {devpi_server-6.16.0 → devpi_server-6.18.0}/devpi_server/views.py +260 -205
- {devpi_server-6.16.0 → devpi_server-6.18.0}/devpi_server.egg-info/PKG-INFO +67 -45
- {devpi_server-6.16.0 → devpi_server-6.18.0}/devpi_server.egg-info/SOURCES.txt +8 -3
- {devpi_server-6.16.0 → devpi_server-6.18.0}/devpi_server.egg-info/entry_points.txt +0 -3
- {devpi_server-6.16.0 → devpi_server-6.18.0}/devpi_server.egg-info/requires.txt +4 -1
- {devpi_server-6.16.0 → devpi_server-6.18.0}/mypy.ini +60 -25
- {devpi_server-6.16.0 → devpi_server-6.18.0}/pyproject.toml +4 -29
- devpi_server-6.18.0/pytest_devpi_server/__init__.py +11 -0
- devpi_server-6.18.0/test_devpi_server/example.py +25 -0
- {devpi_server-6.16.0 → devpi_server-6.18.0}/test_devpi_server/functional.py +63 -6
- {devpi_server-6.16.0 → devpi_server-6.18.0}/test_devpi_server/plugin.py +405 -75
- {devpi_server-6.16.0 → devpi_server-6.18.0}/test_devpi_server/simpypi.py +9 -1
- {devpi_server-6.16.0 → devpi_server-6.18.0}/test_devpi_server/test_auth.py +10 -19
- {devpi_server-6.16.0 → devpi_server-6.18.0}/test_devpi_server/test_config.py +40 -9
- {devpi_server-6.16.0 → devpi_server-6.18.0}/test_devpi_server/test_conftest.py +1 -0
- {devpi_server-6.16.0 → devpi_server-6.18.0}/test_devpi_server/test_filestore.py +145 -69
- devpi_server-6.18.0/test_devpi_server/test_filestore_fs.py +180 -0
- {devpi_server-6.16.0 → devpi_server-6.18.0}/test_devpi_server/test_importexport.py +79 -49
- {devpi_server-6.16.0 → devpi_server-6.18.0}/test_devpi_server/test_keyfs.py +124 -50
- {devpi_server-6.16.0 → devpi_server-6.18.0}/test_devpi_server/test_log.py +6 -5
- {devpi_server-6.16.0 → devpi_server-6.18.0}/test_devpi_server/test_main.py +67 -34
- {devpi_server-6.16.0 → devpi_server-6.18.0}/test_devpi_server/test_mirror.py +384 -111
- {devpi_server-6.16.0 → devpi_server-6.18.0}/test_devpi_server/test_mirror_no_project_list.py +4 -2
- {devpi_server-6.16.0 → devpi_server-6.18.0}/test_devpi_server/test_model.py +190 -141
- {devpi_server-6.16.0 → devpi_server-6.18.0}/test_devpi_server/test_mythread.py +0 -1
- {devpi_server-6.16.0 → devpi_server-6.18.0}/test_devpi_server/test_permissions.py +6 -1
- {devpi_server-6.16.0 → devpi_server-6.18.0}/test_devpi_server/test_replica.py +350 -148
- devpi_server-6.18.0/test_devpi_server/test_replica_functional.py +172 -0
- {devpi_server-6.16.0 → devpi_server-6.18.0}/test_devpi_server/test_stage_customizer.py +21 -6
- {devpi_server-6.16.0 → devpi_server-6.18.0}/test_devpi_server/test_streaming.py +2 -3
- {devpi_server-6.16.0 → devpi_server-6.18.0}/test_devpi_server/test_view_auth.py +3 -0
- {devpi_server-6.16.0 → devpi_server-6.18.0}/test_devpi_server/test_views.py +106 -42
- {devpi_server-6.16.0 → devpi_server-6.18.0}/test_devpi_server/test_views_push_external.py +148 -134
- {devpi_server-6.16.0 → devpi_server-6.18.0}/tox.ini +20 -4
- devpi_server-6.16.0/CHANGELOG.short.rst +0 -116
- devpi_server-6.16.0/devpi_server/__init__.py +0 -1
- devpi_server-6.16.0/devpi_server/filestore_fs.py +0 -136
- devpi_server-6.16.0/devpi_server/interfaces.py +0 -289
- devpi_server-6.16.0/devpi_server/keyfs_sqlite_fs.py +0 -227
- devpi_server-6.16.0/devpi_server/keyfs_types.py +0 -144
- devpi_server-6.16.0/devpi_server/vendor/_pip.py +0 -152
- devpi_server-6.16.0/pytest_devpi_server/__init__.py +0 -4
- devpi_server-6.16.0/test_devpi_server/__init__.py +0 -0
- devpi_server-6.16.0/test_devpi_server/example.py +0 -22
- devpi_server-6.16.0/test_devpi_server/test_keyfs_sqlite_fs.py +0 -71
- devpi_server-6.16.0/test_devpi_server/test_replica_functional.py +0 -98
- {devpi_server-6.16.0 → devpi_server-6.18.0}/LICENSE +0 -0
- {devpi_server-6.16.0 → devpi_server-6.18.0}/MANIFEST.in +0 -0
- {devpi_server-6.16.0 → devpi_server-6.18.0}/README.rst +0 -0
- {devpi_server-6.16.0 → devpi_server-6.18.0}/devpi_server/auth_basic.py +0 -0
- {devpi_server-6.16.0 → devpi_server-6.18.0}/devpi_server/auth_devpi.py +0 -0
- {devpi_server-6.16.0 → devpi_server-6.18.0}/devpi_server/cfg/__init__.py +0 -0
- {devpi_server-6.16.0 → devpi_server-6.18.0}/devpi_server/cfg/crontab.template +0 -0
- {devpi_server-6.16.0 → devpi_server-6.18.0}/devpi_server/cfg/devpi.service.template +0 -0
- {devpi_server-6.16.0 → devpi_server-6.18.0}/devpi_server/cfg/launchd-macos.txt.template +0 -0
- {devpi_server-6.16.0 → devpi_server-6.18.0}/devpi_server/cfg/nginx-devpi-caching-http.conf.template +0 -0
- {devpi_server-6.16.0 → devpi_server-6.18.0}/devpi_server/cfg/nginx-devpi-caching-location.conf.template +0 -0
- {devpi_server-6.16.0 → devpi_server-6.18.0}/devpi_server/cfg/nginx-devpi-caching-proxy.conf.template +0 -0
- {devpi_server-6.16.0 → devpi_server-6.18.0}/devpi_server/cfg/nginx-devpi-caching-server.conf.template +0 -0
- {devpi_server-6.16.0 → devpi_server-6.18.0}/devpi_server/cfg/nginx-devpi.conf.template +0 -0
- {devpi_server-6.16.0 → devpi_server-6.18.0}/devpi_server/cfg/supervisor-devpi.conf.template +0 -0
- {devpi_server-6.16.0 → devpi_server-6.18.0}/devpi_server/cfg/supervisord.conf.template +0 -0
- {devpi_server-6.16.0 → devpi_server-6.18.0}/devpi_server/cfg/windows-service.txt.template +0 -0
- {devpi_server-6.16.0 → devpi_server-6.18.0}/devpi_server/exceptions.py +0 -0
- {devpi_server-6.16.0 → devpi_server-6.18.0}/devpi_server/init.py +0 -0
- {devpi_server-6.16.0 → devpi_server-6.18.0}/devpi_server/log.py +0 -0
- {devpi_server-6.16.0 → devpi_server-6.18.0}/devpi_server/markers.py +0 -0
- {devpi_server-6.16.0 → devpi_server-6.18.0}/devpi_server/passwd.py +0 -0
- {devpi_server-6.16.0 → devpi_server-6.18.0}/devpi_server/py.typed +0 -0
- {devpi_server-6.16.0 → devpi_server-6.18.0}/devpi_server.egg-info/dependency_links.txt +0 -0
- {devpi_server-6.16.0 → devpi_server-6.18.0}/devpi_server.egg-info/top_level.txt +0 -0
- {devpi_server-6.16.0 → devpi_server-6.18.0}/setup.cfg +0 -0
- {devpi_server-6.16.0/devpi_server/vendor → devpi_server-6.18.0/test_devpi_server}/__init__.py +0 -0
- {devpi_server-6.16.0 → devpi_server-6.18.0}/test_devpi_server/conftest.py +0 -0
- {devpi_server-6.16.0 → devpi_server-6.18.0}/test_devpi_server/importexportdata/badindexname/dataindex.json +0 -0
- {devpi_server-6.16.0 → devpi_server-6.18.0}/test_devpi_server/importexportdata/badusername/dataindex.json +0 -0
- {devpi_server-6.16.0 → devpi_server-6.18.0}/test_devpi_server/importexportdata/basescycle/dataindex.json +0 -0
- {devpi_server-6.16.0 → devpi_server-6.18.0}/test_devpi_server/importexportdata/createdmodified/dataindex.json +0 -0
- {devpi_server-6.16.0 → devpi_server-6.18.0}/test_devpi_server/importexportdata/deletedbase/dataindex.json +0 -0
- {devpi_server-6.16.0 → devpi_server-6.18.0}/test_devpi_server/importexportdata/mirrordata/dataindex.json +0 -0
- {devpi_server-6.16.0 → devpi_server-6.18.0}/test_devpi_server/importexportdata/mirrordata/root/pypi/dddttt/0.1.dev1/dddttt-0.1.dev1.tar.gz +0 -0
- {devpi_server-6.16.0 → devpi_server-6.18.0}/test_devpi_server/importexportdata/modifiedpypi/dataindex.json +0 -0
- {devpi_server-6.16.0 → devpi_server-6.18.0}/test_devpi_server/importexportdata/nocreatedmodified/dataindex.json +0 -0
- {devpi_server-6.16.0 → devpi_server-6.18.0}/test_devpi_server/importexportdata/normalization/dataindex.json +0 -0
- {devpi_server-6.16.0 → devpi_server-6.18.0}/test_devpi_server/importexportdata/normalization/root/dev/hello.pkg/hello.pkg-1.0.tar.gz +0 -0
- {devpi_server-6.16.0 → devpi_server-6.18.0}/test_devpi_server/importexportdata/normalization_merge/dataindex.json +0 -0
- {devpi_server-6.16.0 → devpi_server-6.18.0}/test_devpi_server/importexportdata/normalization_merge/root/dev/hello-pkg/hello.pkg-1.1.tar.gz +0 -0
- {devpi_server-6.16.0 → devpi_server-6.18.0}/test_devpi_server/importexportdata/normalization_merge/root/dev/hello.pkg/hello.pkg-1.0.tar.gz +0 -0
- {devpi_server-6.16.0 → devpi_server-6.18.0}/test_devpi_server/importexportdata/norootpypi/dataindex.json +0 -0
- {devpi_server-6.16.0 → devpi_server-6.18.0}/test_devpi_server/importexportdata/nouser/dataindex.json +0 -0
- {devpi_server-6.16.0 → devpi_server-6.18.0}/test_devpi_server/importexportdata/removedindexplugin/dataindex.json +0 -0
- {devpi_server-6.16.0 → devpi_server-6.18.0}/test_devpi_server/importexportdata/removedindexplugin/user/dev/pkg/pkg-1.0.tar.gz +0 -0
- {devpi_server-6.16.0 → devpi_server-6.18.0}/test_devpi_server/importexportdata/toxresult_naming_scheme/dataindex.json +0 -0
- {devpi_server-6.16.0 → devpi_server-6.18.0}/test_devpi_server/importexportdata/toxresult_naming_scheme/root/dev/hello/0.9/hello-0.9.tar.gz +0 -0
- {devpi_server-6.16.0 → devpi_server-6.18.0}/test_devpi_server/importexportdata/toxresult_naming_scheme/root/dev/hello/sha256=ed7002b439e9ac845f22357d822bac1444730fbdb6016d3ec9432297b9ec9f73/hello-0.9.tar.gz.toxresult0 +0 -0
- {devpi_server-6.16.0 → devpi_server-6.18.0}/test_devpi_server/importexportdata/toxresult_upload_default/dataindex.json +0 -0
- {devpi_server-6.16.0 → devpi_server-6.18.0}/test_devpi_server/py.typed +0 -0
- {devpi_server-6.16.0 → devpi_server-6.18.0}/test_devpi_server/reqmock.py +0 -0
- {devpi_server-6.16.0 → devpi_server-6.18.0}/test_devpi_server/test_authcheck.py +0 -0
- {devpi_server-6.16.0 → devpi_server-6.18.0}/test_devpi_server/test_fileutil.py +1 -1
- {devpi_server-6.16.0 → devpi_server-6.18.0}/test_devpi_server/test_fsck.py +0 -0
- {devpi_server-6.16.0 → devpi_server-6.18.0}/test_devpi_server/test_genconfig.py +1 -1
- {devpi_server-6.16.0 → devpi_server-6.18.0}/test_devpi_server/test_nginx.py +0 -0
- {devpi_server-6.16.0 → devpi_server-6.18.0}/test_devpi_server/test_nginx_replica.py +3 -3
- {devpi_server-6.16.0 → devpi_server-6.18.0}/test_devpi_server/test_readonly.py +0 -0
- {devpi_server-6.16.0 → devpi_server-6.18.0}/test_devpi_server/test_streaming_nginx.py +1 -1
- {devpi_server-6.16.0 → devpi_server-6.18.0}/test_devpi_server/test_streaming_replica.py +1 -1
- {devpi_server-6.16.0 → devpi_server-6.18.0}/test_devpi_server/test_streaming_replica_nginx.py +1 -1
- {devpi_server-6.16.0 → devpi_server-6.18.0}/test_devpi_server/test_views_patch.py +0 -0
- {devpi_server-6.16.0 → devpi_server-6.18.0}/test_devpi_server/test_views_status.py +0 -0
|
@@ -2,8 +2,7 @@
|
|
|
2
2
|
# E203 is ignored because we enforce ruff format which contradicts it
|
|
3
3
|
ignore = E203,E501,E704,E741,W503
|
|
4
4
|
per-file-ignores =
|
|
5
|
-
plugin.py:E127,E128,
|
|
6
|
-
|
|
7
|
-
model.py:E128,E225,E231
|
|
5
|
+
plugin.py:E127,E128,E231
|
|
6
|
+
model.py:E128,E231
|
|
8
7
|
test_importexport.py:E121
|
|
9
8
|
test*.py:E126,E127,E128,E225,E226,E231,E251
|
|
@@ -2,22 +2,97 @@
|
|
|
2
2
|
|
|
3
3
|
.. towncrier release notes start
|
|
4
4
|
|
|
5
|
-
6.
|
|
5
|
+
6.18.0 (2026-01-27)
|
|
6
|
+
===================
|
|
7
|
+
|
|
8
|
+
Features
|
|
9
|
+
--------
|
|
10
|
+
|
|
11
|
+
- Store all available hashes of files.
|
|
12
|
+
|
|
13
|
+
- Validate hashes of all files during devpi-import, not only releases.
|
|
14
|
+
|
|
15
|
+
Bug Fixes
|
|
16
|
+
---------
|
|
17
|
+
|
|
18
|
+
- Apply argparse transformations on values read from config file or environment.
|
|
19
|
+
|
|
20
|
+
- Restore Python and platform info in user agent string after switch to httpx.
|
|
21
|
+
|
|
22
|
+
- Remove all database entries on project deletion instead of only emptying them.
|
|
23
|
+
|
|
24
|
+
- Fix error at end of replica streaming caused by changed behavior from switch to httpx.
|
|
25
|
+
|
|
26
|
+
- Fix #1102: The data stream was cut off after 64k when proxying from replica to primary after switching to httpx.
|
|
27
|
+
|
|
28
|
+
- Fix #1107: retry file downloads if there has been an error during download.
|
|
29
|
+
|
|
30
|
+
Other Changes
|
|
31
|
+
-------------
|
|
32
|
+
|
|
33
|
+
- The filenames of some exported doczip files change due to normalization of the project name caused by changing the internals during export to allow ``--hard-links`` to work.
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
6.17.0 (2025-08-27)
|
|
6
37
|
===================
|
|
7
38
|
|
|
8
39
|
Deprecations and Removals
|
|
9
40
|
-------------------------
|
|
10
41
|
|
|
11
|
-
- Dropped support for
|
|
42
|
+
- Dropped support for migrating old password hashes that were replaced in devpi-server 4.2.0.
|
|
12
43
|
|
|
44
|
+
- Removed support for basic authorization in primary URL. The connection is already secured by a bearer token header.
|
|
13
45
|
|
|
46
|
+
- Removed the experimental ``--replica-cert`` option. The replica is already using a token via a shared secret, so this is redundant.
|
|
47
|
+
|
|
48
|
+
- Removed ``--replica-max-retries`` option. It wasn't implemented for async_httpget and didn't work correctly when streaming data.
|
|
14
49
|
|
|
15
50
|
Features
|
|
16
51
|
--------
|
|
17
52
|
|
|
18
|
-
-
|
|
53
|
+
- Use httpx for all data fetching for mirrors and fetch projects list asynchronously to allow update in background even after a timeout.
|
|
54
|
+
|
|
55
|
+
- Use httpx instead of requests when proxying from replicas to primary.
|
|
56
|
+
|
|
57
|
+
- Use httpx for all requests from replicas to primary.
|
|
58
|
+
|
|
59
|
+
- Use httpx when pushing releases to external index.
|
|
60
|
+
|
|
61
|
+
- 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.
|
|
62
|
+
|
|
63
|
+
- The HTTP cache information for mirrored projects is persisted and re-used on server restarts.
|
|
64
|
+
|
|
65
|
+
- 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``).
|
|
66
|
+
|
|
67
|
+
Bug Fixes
|
|
68
|
+
---------
|
|
69
|
+
|
|
70
|
+
- Correctly handle lists for ``Provides-Extra`` and ``License-File`` metadata in database.
|
|
71
|
+
|
|
72
|
+
- 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.
|
|
73
|
+
|
|
74
|
+
- Fix #1053: allow users to update their passwords when ``--restrict-modify`` is used.
|
|
75
|
+
|
|
76
|
+
- Fix #1097: return 404 when trying to POST to +simple.
|
|
77
|
+
|
|
78
|
+
Other Changes
|
|
79
|
+
-------------
|
|
80
|
+
|
|
81
|
+
- Changed User-Agent when fetching data for mirrors from just "server" to "devpi-server".
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
6.16.0 (2025-06-25)
|
|
85
|
+
===================
|
|
86
|
+
|
|
87
|
+
Deprecations and Removals
|
|
88
|
+
-------------------------
|
|
89
|
+
|
|
90
|
+
- Dropped support for Python 3.7 and 3.8.
|
|
19
91
|
|
|
92
|
+
Features
|
|
93
|
+
--------
|
|
20
94
|
|
|
95
|
+
- Update stored package metadata fields to version 2.4 for license expressions (PEP 639).
|
|
21
96
|
|
|
22
97
|
Bug Fixes
|
|
23
98
|
---------
|
|
@@ -27,7 +102,6 @@ Bug Fixes
|
|
|
27
102
|
- Keep original metadata_version in database.
|
|
28
103
|
|
|
29
104
|
|
|
30
|
-
|
|
31
105
|
6.15.0 (2025-05-18)
|
|
32
106
|
===================
|
|
33
107
|
|
|
@@ -37,7 +111,6 @@ Features
|
|
|
37
111
|
- Add ``--connection-limit`` option to devpi-server passed on to waitress.
|
|
38
112
|
|
|
39
113
|
|
|
40
|
-
|
|
41
114
|
6.14.0 (2024-10-16)
|
|
42
115
|
===================
|
|
43
116
|
|
|
@@ -50,15 +123,12 @@ Features
|
|
|
50
123
|
|
|
51
124
|
- Allow pushing of documentation only with no release files. Requires devpi-client 7.2.0.
|
|
52
125
|
|
|
53
|
-
|
|
54
|
-
|
|
55
126
|
Bug Fixes
|
|
56
127
|
---------
|
|
57
128
|
|
|
58
129
|
- 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.
|
|
59
130
|
|
|
60
131
|
|
|
61
|
-
|
|
62
132
|
6.13.0 (2024-09-19)
|
|
63
133
|
===================
|
|
64
134
|
|
|
@@ -70,8 +140,6 @@ Deprecations and Removals
|
|
|
70
140
|
Using the old terms will now output warnings.
|
|
71
141
|
The ``+status`` API has additional fields and the ``role`` field content will change with 7.0.0.
|
|
72
142
|
|
|
73
|
-
|
|
74
|
-
|
|
75
143
|
Features
|
|
76
144
|
--------
|
|
77
145
|
|
|
@@ -79,8 +147,6 @@ Features
|
|
|
79
147
|
|
|
80
148
|
- Added support uv pip as an installer.
|
|
81
149
|
|
|
82
|
-
|
|
83
|
-
|
|
84
150
|
Bug Fixes
|
|
85
151
|
---------
|
|
86
152
|
|
|
@@ -93,7 +159,6 @@ Bug Fixes
|
|
|
93
159
|
- Only warn about replica not being in sync instead of fatal status while still replicating.
|
|
94
160
|
|
|
95
161
|
|
|
96
|
-
|
|
97
162
|
6.12.1 (2024-07-24)
|
|
98
163
|
===================
|
|
99
164
|
|
|
@@ -107,7 +172,6 @@ Bug Fixes
|
|
|
107
172
|
- Fix #1044: Correctly update cache expiry time when mirrored server returns 304 Not Modified.
|
|
108
173
|
|
|
109
174
|
|
|
110
|
-
|
|
111
175
|
6.12.0 (2024-06-25)
|
|
112
176
|
===================
|
|
113
177
|
|
|
@@ -118,15 +182,12 @@ Features
|
|
|
118
182
|
|
|
119
183
|
- Added ``devpiserver_on_toxresult_upload_forbidden`` hook to allow returning a custom message and result (403 or 200).
|
|
120
184
|
|
|
121
|
-
|
|
122
|
-
|
|
123
185
|
Bug Fixes
|
|
124
186
|
---------
|
|
125
187
|
|
|
126
188
|
- Return json data if toxresult upload is forbidden.
|
|
127
189
|
|
|
128
190
|
|
|
129
|
-
|
|
130
191
|
6.11.0 (2024-04-20)
|
|
131
192
|
===================
|
|
132
193
|
|
|
@@ -137,8 +198,6 @@ Features
|
|
|
137
198
|
|
|
138
199
|
- Fix #983: Add plugin hook for mirror authentication header.
|
|
139
200
|
|
|
140
|
-
|
|
141
|
-
|
|
142
201
|
Bug Fixes
|
|
143
202
|
---------
|
|
144
203
|
|
|
@@ -147,7 +206,6 @@ Bug Fixes
|
|
|
147
206
|
- Fix #1033: Use ``int`` for ``--mirror-cache-expiry`` to fix value of ``proxy_cache_valid`` in nginx caching config.
|
|
148
207
|
|
|
149
208
|
|
|
150
|
-
|
|
151
209
|
6.10.0 (2023-12-19)
|
|
152
210
|
===================
|
|
153
211
|
|
|
@@ -158,8 +216,6 @@ Features
|
|
|
158
216
|
|
|
159
217
|
- Fix #998: Use the pure Python httpx library instead of aiohttp to prevent delays in supporting newest Python releases.
|
|
160
218
|
|
|
161
|
-
|
|
162
|
-
|
|
163
219
|
Bug Fixes
|
|
164
220
|
---------
|
|
165
221
|
|
|
@@ -168,7 +224,6 @@ Bug Fixes
|
|
|
168
224
|
- Only compare hostname instead of full URL prefix when parsing mirror packages to fix mirrors with basic authentication and absolute URLs. See #1006
|
|
169
225
|
|
|
170
226
|
|
|
171
|
-
|
|
172
227
|
6.9.2 (2023-08-06)
|
|
173
228
|
==================
|
|
174
229
|
|
|
@@ -199,7 +254,6 @@ Features
|
|
|
199
254
|
|
|
200
255
|
- 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.
|
|
201
256
|
|
|
202
|
-
|
|
203
257
|
Bug Fixes
|
|
204
258
|
---------
|
|
205
259
|
|
|
@@ -222,7 +276,6 @@ Features
|
|
|
222
276
|
|
|
223
277
|
- Fix #929: Cache normalized project names per transaction on mirror index instances.
|
|
224
278
|
|
|
225
|
-
|
|
226
279
|
Bug Fixes
|
|
227
280
|
---------
|
|
228
281
|
|
|
@@ -245,7 +298,6 @@ Features
|
|
|
245
298
|
|
|
246
299
|
- Set headers to prevent caching for simple links with stale results.
|
|
247
300
|
|
|
248
|
-
|
|
249
301
|
Bug Fixes
|
|
250
302
|
---------
|
|
251
303
|
|
|
@@ -283,7 +335,6 @@ Features
|
|
|
283
335
|
|
|
284
336
|
- 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).
|
|
285
337
|
|
|
286
|
-
|
|
287
338
|
Bug Fixes
|
|
288
339
|
---------
|
|
289
340
|
|
|
@@ -325,7 +376,6 @@ Features
|
|
|
325
376
|
|
|
326
377
|
- Better logging and handling if a thread unexpectedly dies.
|
|
327
378
|
|
|
328
|
-
|
|
329
379
|
Bug Fixes
|
|
330
380
|
---------
|
|
331
381
|
|
|
@@ -346,13 +396,11 @@ Deprecations and Removals
|
|
|
346
396
|
|
|
347
397
|
- As announced with 6.0.0, support for Python 3.6 has been dropped, because it has reached its end of life.
|
|
348
398
|
|
|
349
|
-
|
|
350
399
|
Features
|
|
351
400
|
--------
|
|
352
401
|
|
|
353
402
|
- 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.
|
|
354
403
|
|
|
355
|
-
|
|
356
404
|
Bug Fixes
|
|
357
405
|
---------
|
|
358
406
|
|
|
@@ -378,7 +426,6 @@ Features
|
|
|
378
426
|
|
|
379
427
|
- 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.
|
|
380
428
|
|
|
381
|
-
|
|
382
429
|
Bug Fixes
|
|
383
430
|
---------
|
|
384
431
|
|
|
@@ -412,7 +459,6 @@ Deprecations and Removals
|
|
|
412
459
|
|
|
413
460
|
- Renamed 'pypi_submit' permission to 'upload'. The old permission still works, but will be removed in a later major release.
|
|
414
461
|
|
|
415
|
-
|
|
416
462
|
Features
|
|
417
463
|
--------
|
|
418
464
|
|
|
@@ -420,7 +466,6 @@ Features
|
|
|
420
466
|
|
|
421
467
|
- Allow user and index URLs to work with a trailing slash.
|
|
422
468
|
|
|
423
|
-
|
|
424
469
|
Bug Fixes
|
|
425
470
|
---------
|
|
426
471
|
|
|
@@ -448,7 +493,6 @@ Deprecations and Removals
|
|
|
448
493
|
|
|
449
494
|
- Removed deprecated ``--start``, ``--stop`` and ``--status`` options.
|
|
450
495
|
|
|
451
|
-
|
|
452
496
|
Features
|
|
453
497
|
--------
|
|
454
498
|
|
|
@@ -480,7 +524,6 @@ Features
|
|
|
480
524
|
|
|
481
525
|
- The user creation and modification time is now stored. Adding or removing an index doesn't count as a modification.
|
|
482
526
|
|
|
483
|
-
|
|
484
527
|
Bug Fixes
|
|
485
528
|
---------
|
|
486
529
|
|
|
@@ -492,7 +535,6 @@ Bug Fixes
|
|
|
492
535
|
|
|
493
536
|
- Handle cases where the ``Content-Type`` header from a mirror can be an empty string.
|
|
494
537
|
|
|
495
|
-
|
|
496
538
|
Other Changes
|
|
497
539
|
-------------
|
|
498
540
|
|
|
@@ -559,7 +601,6 @@ Features
|
|
|
559
601
|
|
|
560
602
|
- On import files for mirror indexes are now imported when they were included in the dump (see ``--include-mirrored-files``).
|
|
561
603
|
|
|
562
|
-
|
|
563
604
|
Bug Fixes
|
|
564
605
|
---------
|
|
565
606
|
|
|
@@ -587,7 +628,6 @@ Features
|
|
|
587
628
|
|
|
588
629
|
- proxy requests from the replica to the master will use number of seconds from the new ``--proxy-timeout`` option as their timeout value.
|
|
589
630
|
|
|
590
|
-
|
|
591
631
|
Bug Fixes
|
|
592
632
|
---------
|
|
593
633
|
|
|
@@ -610,7 +650,6 @@ Deprecations and Removals
|
|
|
610
650
|
|
|
611
651
|
- The ``--passwd`` option is deprecated, use the new ``devpi-passwd`` command instead.
|
|
612
652
|
|
|
613
|
-
|
|
614
653
|
Features
|
|
615
654
|
--------
|
|
616
655
|
|
|
@@ -624,7 +663,6 @@ Features
|
|
|
624
663
|
|
|
625
664
|
- Storage options can now be specified as a dict in yaml config files.
|
|
626
665
|
|
|
627
|
-
|
|
628
666
|
Bug Fixes
|
|
629
667
|
---------
|
|
630
668
|
|
|
@@ -646,7 +684,6 @@ Bug Fixes
|
|
|
646
684
|
|
|
647
685
|
- Unnecessary database writes where the final value didn't change are now prevented.
|
|
648
686
|
|
|
649
|
-
|
|
650
687
|
Other Changes
|
|
651
688
|
-------------
|
|
652
689
|
|
|
@@ -680,7 +717,6 @@ Deprecations and Removals
|
|
|
680
717
|
|
|
681
718
|
- 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.
|
|
682
719
|
|
|
683
|
-
|
|
684
720
|
Features
|
|
685
721
|
--------
|
|
686
722
|
|
|
@@ -698,7 +734,6 @@ Features
|
|
|
698
734
|
|
|
699
735
|
- when credentials for the user are rejected, the error message now says so instead of claiming the user could not be found.
|
|
700
736
|
|
|
701
|
-
|
|
702
737
|
Other Changes
|
|
703
738
|
-------------
|
|
704
739
|
|
|
@@ -733,7 +768,6 @@ Features
|
|
|
733
768
|
|
|
734
769
|
- 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.
|
|
735
770
|
|
|
736
|
-
|
|
737
771
|
Bug Fixes
|
|
738
772
|
---------
|
|
739
773
|
|
|
@@ -743,7 +777,6 @@ Bug Fixes
|
|
|
743
777
|
|
|
744
778
|
- use timeout when waiting for data from master in replica on mirror simple pages.
|
|
745
779
|
|
|
746
|
-
|
|
747
780
|
Other Changes
|
|
748
781
|
-------------
|
|
749
782
|
|
|
@@ -775,7 +808,6 @@ Features
|
|
|
775
808
|
|
|
776
809
|
- 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.
|
|
777
810
|
|
|
778
|
-
|
|
779
811
|
Bug Fixes
|
|
780
812
|
---------
|
|
781
813
|
|
|
@@ -805,7 +837,6 @@ Deprecations and Removals
|
|
|
805
837
|
|
|
806
838
|
- Deprecated DEVPI_SERVERDIR environment variable in favor of DEVPISERVER_SERVERDIR to be consistent with the other option overwrites.
|
|
807
839
|
|
|
808
|
-
|
|
809
840
|
Features
|
|
810
841
|
--------
|
|
811
842
|
|
|
@@ -825,7 +856,6 @@ Features
|
|
|
825
856
|
|
|
826
857
|
- Better handling of 404s in mirror indexes. Every project not found would create an entry in the database which would grow it unnecessarily.
|
|
827
858
|
|
|
828
|
-
|
|
829
859
|
Bug Fixes
|
|
830
860
|
---------
|
|
831
861
|
|
|
@@ -863,7 +893,6 @@ Features
|
|
|
863
893
|
|
|
864
894
|
- add `--request-timeout` option to provide adjustable request timeout
|
|
865
895
|
|
|
866
|
-
|
|
867
896
|
Bug Fixes
|
|
868
897
|
---------
|
|
869
898
|
|
|
@@ -889,7 +918,6 @@ Features
|
|
|
889
918
|
|
|
890
919
|
- Use ``pypi.org`` as new default for ``root/pypi`` mirror index.
|
|
891
920
|
|
|
892
|
-
|
|
893
921
|
Bug Fixes
|
|
894
922
|
---------
|
|
895
923
|
|
|
@@ -909,7 +937,6 @@ Features
|
|
|
909
937
|
|
|
910
938
|
- fix issue469: Add ``acl_toxresult_upload`` to index configuration.
|
|
911
939
|
|
|
912
|
-
|
|
913
940
|
Bug Fixes
|
|
914
941
|
---------
|
|
915
942
|
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
=========
|
|
4
|
+
Changelog
|
|
5
|
+
=========
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
.. towncrier release notes start
|
|
11
|
+
|
|
12
|
+
6.18.0 (2026-01-27)
|
|
13
|
+
===================
|
|
14
|
+
|
|
15
|
+
Features
|
|
16
|
+
--------
|
|
17
|
+
|
|
18
|
+
- Store all available hashes of files.
|
|
19
|
+
|
|
20
|
+
- Validate hashes of all files during devpi-import, not only releases.
|
|
21
|
+
|
|
22
|
+
Bug Fixes
|
|
23
|
+
---------
|
|
24
|
+
|
|
25
|
+
- Apply argparse transformations on values read from config file or environment.
|
|
26
|
+
|
|
27
|
+
- Restore Python and platform info in user agent string after switch to httpx.
|
|
28
|
+
|
|
29
|
+
- Remove all database entries on project deletion instead of only emptying them.
|
|
30
|
+
|
|
31
|
+
- Fix error at end of replica streaming caused by changed behavior from switch to httpx.
|
|
32
|
+
|
|
33
|
+
- Fix #1102: The data stream was cut off after 64k when proxying from replica to primary after switching to httpx.
|
|
34
|
+
|
|
35
|
+
- Fix #1107: retry file downloads if there has been an error during download.
|
|
36
|
+
|
|
37
|
+
Other Changes
|
|
38
|
+
-------------
|
|
39
|
+
|
|
40
|
+
- The filenames of some exported doczip files change due to normalization of the project name caused by changing the internals during export to allow ``--hard-links`` to work.
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
6.17.0 (2025-08-27)
|
|
44
|
+
===================
|
|
45
|
+
|
|
46
|
+
Deprecations and Removals
|
|
47
|
+
-------------------------
|
|
48
|
+
|
|
49
|
+
- Dropped support for migrating old password hashes that were replaced in devpi-server 4.2.0.
|
|
50
|
+
|
|
51
|
+
- Removed support for basic authorization in primary URL. The connection is already secured by a bearer token header.
|
|
52
|
+
|
|
53
|
+
- Removed the experimental ``--replica-cert`` option. The replica is already using a token via a shared secret, so this is redundant.
|
|
54
|
+
|
|
55
|
+
- Removed ``--replica-max-retries`` option. It wasn't implemented for async_httpget and didn't work correctly when streaming data.
|
|
56
|
+
|
|
57
|
+
Features
|
|
58
|
+
--------
|
|
59
|
+
|
|
60
|
+
- Use httpx for all data fetching for mirrors and fetch projects list asynchronously to allow update in background even after a timeout.
|
|
61
|
+
|
|
62
|
+
- Use httpx instead of requests when proxying from replicas to primary.
|
|
63
|
+
|
|
64
|
+
- Use httpx for all requests from replicas to primary.
|
|
65
|
+
|
|
66
|
+
- Use httpx when pushing releases to external index.
|
|
67
|
+
|
|
68
|
+
- 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.
|
|
69
|
+
|
|
70
|
+
- The HTTP cache information for mirrored projects is persisted and re-used on server restarts.
|
|
71
|
+
|
|
72
|
+
- 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``).
|
|
73
|
+
|
|
74
|
+
Bug Fixes
|
|
75
|
+
---------
|
|
76
|
+
|
|
77
|
+
- Correctly handle lists for ``Provides-Extra`` and ``License-File`` metadata in database.
|
|
78
|
+
|
|
79
|
+
- 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.
|
|
80
|
+
|
|
81
|
+
- Fix #1053: allow users to update their passwords when ``--restrict-modify`` is used.
|
|
82
|
+
|
|
83
|
+
- Fix #1097: return 404 when trying to POST to +simple.
|
|
84
|
+
|
|
85
|
+
Other Changes
|
|
86
|
+
-------------
|
|
87
|
+
|
|
88
|
+
- Changed User-Agent when fetching data for mirrors from just "server" to "devpi-server".
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
6.16.0 (2025-06-25)
|
|
92
|
+
===================
|
|
93
|
+
|
|
94
|
+
Deprecations and Removals
|
|
95
|
+
-------------------------
|
|
96
|
+
|
|
97
|
+
- Dropped support for Python 3.7 and 3.8.
|
|
98
|
+
|
|
99
|
+
Features
|
|
100
|
+
--------
|
|
101
|
+
|
|
102
|
+
- Update stored package metadata fields to version 2.4 for license expressions (PEP 639).
|
|
103
|
+
|
|
104
|
+
Bug Fixes
|
|
105
|
+
---------
|
|
106
|
+
|
|
107
|
+
- Preserve hash when importing mirror data to prevent unnecessary updates later on.
|
|
108
|
+
|
|
109
|
+
- Keep original metadata_version in database.
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
6.15.0 (2025-05-18)
|
|
113
|
+
===================
|
|
114
|
+
|
|
115
|
+
Features
|
|
116
|
+
--------
|
|
117
|
+
|
|
118
|
+
- Add ``--connection-limit`` option to devpi-server passed on to waitress.
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
6.14.0 (2024-10-16)
|
|
122
|
+
===================
|
|
123
|
+
|
|
124
|
+
Features
|
|
125
|
+
--------
|
|
126
|
+
|
|
127
|
+
- Allow pushing of versions which only have documentation and no releases.
|
|
128
|
+
|
|
129
|
+
- Allow pushing of release files only with no documentation. Requires devpi-client 7.2.0.
|
|
130
|
+
|
|
131
|
+
- Allow pushing of documentation only with no release files. Requires devpi-client 7.2.0.
|
|
132
|
+
|
|
133
|
+
Bug Fixes
|
|
134
|
+
---------
|
|
135
|
+
|
|
136
|
+
- 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.
|
|
137
|
+
|