devpi-server 6.12.1__tar.gz → 6.14.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.
Files changed (133) hide show
  1. {devpi-server-6.12.1 → devpi-server-6.14.0}/.flake8 +2 -2
  2. {devpi-server-6.12.1 → devpi-server-6.14.0}/CHANGELOG +56 -0
  3. {devpi-server-6.12.1 → devpi-server-6.14.0}/PKG-INFO +55 -28
  4. devpi-server-6.14.0/devpi_server/__init__.py +1 -0
  5. {devpi-server-6.12.1 → devpi-server-6.14.0}/devpi_server/config.py +186 -77
  6. devpi-server-6.14.0/devpi_server/filestore.py +630 -0
  7. {devpi-server-6.12.1 → devpi-server-6.14.0}/devpi_server/fileutil.py +2 -0
  8. {devpi-server-6.12.1 → devpi-server-6.14.0}/devpi_server/fsck.py +7 -9
  9. {devpi-server-6.12.1 → devpi-server-6.14.0}/devpi_server/genconfig.py +3 -3
  10. {devpi-server-6.12.1 → devpi-server-6.14.0}/devpi_server/hookspecs.py +4 -4
  11. {devpi-server-6.12.1 → devpi-server-6.14.0}/devpi_server/importexport.py +40 -26
  12. {devpi-server-6.12.1 → devpi-server-6.14.0}/devpi_server/init.py +7 -7
  13. {devpi-server-6.12.1 → devpi-server-6.14.0}/devpi_server/keyfs.py +46 -23
  14. {devpi-server-6.12.1 → devpi-server-6.14.0}/devpi_server/log.py +27 -22
  15. {devpi-server-6.12.1 → devpi-server-6.14.0}/devpi_server/main.py +43 -21
  16. {devpi-server-6.12.1 → devpi-server-6.14.0}/devpi_server/mirror.py +7 -7
  17. {devpi-server-6.12.1 → devpi-server-6.14.0}/devpi_server/model.py +61 -19
  18. {devpi-server-6.12.1 → devpi-server-6.14.0}/devpi_server/mythread.py +37 -0
  19. {devpi-server-6.12.1 → devpi-server-6.14.0}/devpi_server/passwd.py +4 -4
  20. {devpi-server-6.12.1 → devpi-server-6.14.0}/devpi_server/replica.py +181 -94
  21. {devpi-server-6.12.1 → devpi-server-6.14.0}/devpi_server/sizeof.py +1 -1
  22. {devpi-server-6.12.1 → devpi-server-6.14.0}/devpi_server/views.py +140 -76
  23. {devpi-server-6.12.1 → devpi-server-6.14.0}/devpi_server.egg-info/PKG-INFO +55 -28
  24. devpi-server-6.14.0/pyproject.toml +99 -0
  25. {devpi-server-6.12.1 → devpi-server-6.14.0}/setup.py +2 -1
  26. {devpi-server-6.12.1 → devpi-server-6.14.0}/test_devpi_server/functional.py +8 -2
  27. {devpi-server-6.12.1 → devpi-server-6.14.0}/test_devpi_server/plugin.py +179 -91
  28. {devpi-server-6.12.1 → devpi-server-6.14.0}/test_devpi_server/test_config.py +93 -22
  29. {devpi-server-6.12.1 → devpi-server-6.14.0}/test_devpi_server/test_conftest.py +24 -3
  30. {devpi-server-6.12.1 → devpi-server-6.14.0}/test_devpi_server/test_filestore.py +16 -20
  31. {devpi-server-6.12.1 → devpi-server-6.14.0}/test_devpi_server/test_fsck.py +5 -8
  32. {devpi-server-6.12.1 → devpi-server-6.14.0}/test_devpi_server/test_importexport.py +98 -81
  33. {devpi-server-6.12.1 → devpi-server-6.14.0}/test_devpi_server/test_keyfs.py +14 -12
  34. {devpi-server-6.12.1 → devpi-server-6.14.0}/test_devpi_server/test_keyfs_sqlite_fs.py +6 -7
  35. {devpi-server-6.12.1 → devpi-server-6.14.0}/test_devpi_server/test_main.py +35 -31
  36. {devpi-server-6.12.1 → devpi-server-6.14.0}/test_devpi_server/test_mirror.py +28 -0
  37. {devpi-server-6.12.1 → devpi-server-6.14.0}/test_devpi_server/test_model.py +5 -3
  38. {devpi-server-6.12.1 → devpi-server-6.14.0}/test_devpi_server/test_mythread.py +4 -2
  39. {devpi-server-6.12.1 → devpi-server-6.14.0}/test_devpi_server/test_nginx_replica.py +5 -4
  40. {devpi-server-6.12.1 → devpi-server-6.14.0}/test_devpi_server/test_permissions.py +7 -2
  41. {devpi-server-6.12.1 → devpi-server-6.14.0}/test_devpi_server/test_replica.py +131 -77
  42. {devpi-server-6.12.1 → devpi-server-6.14.0}/test_devpi_server/test_replica_functional.py +9 -9
  43. {devpi-server-6.12.1 → devpi-server-6.14.0}/test_devpi_server/test_stage_customizer.py +2 -2
  44. {devpi-server-6.12.1 → devpi-server-6.14.0}/test_devpi_server/test_streaming.py +8 -8
  45. {devpi-server-6.12.1 → devpi-server-6.14.0}/test_devpi_server/test_streaming_nginx.py +2 -2
  46. {devpi-server-6.12.1 → devpi-server-6.14.0}/test_devpi_server/test_streaming_replica.py +2 -2
  47. {devpi-server-6.12.1 → devpi-server-6.14.0}/test_devpi_server/test_streaming_replica_nginx.py +2 -2
  48. {devpi-server-6.12.1 → devpi-server-6.14.0}/test_devpi_server/test_views.py +157 -35
  49. {devpi-server-6.12.1 → devpi-server-6.14.0}/test_devpi_server/test_views_push_external.py +77 -26
  50. {devpi-server-6.12.1 → devpi-server-6.14.0}/test_devpi_server/test_views_status.py +67 -14
  51. devpi-server-6.14.0/tox.ini +78 -0
  52. devpi-server-6.12.1/devpi_server/__init__.py +0 -1
  53. devpi-server-6.12.1/devpi_server/filestore.py +0 -335
  54. devpi-server-6.12.1/pyproject.toml +0 -26
  55. devpi-server-6.12.1/tox.ini +0 -40
  56. {devpi-server-6.12.1 → devpi-server-6.14.0}/AUTHORS +0 -0
  57. {devpi-server-6.12.1 → devpi-server-6.14.0}/LICENSE +0 -0
  58. {devpi-server-6.12.1 → devpi-server-6.14.0}/MANIFEST.in +0 -0
  59. {devpi-server-6.12.1 → devpi-server-6.14.0}/README.rst +0 -0
  60. {devpi-server-6.12.1 → devpi-server-6.14.0}/devpi_server/__main__.py +0 -0
  61. {devpi-server-6.12.1 → devpi-server-6.14.0}/devpi_server/auth.py +0 -0
  62. {devpi-server-6.12.1 → devpi-server-6.14.0}/devpi_server/auth_basic.py +0 -0
  63. {devpi-server-6.12.1 → devpi-server-6.14.0}/devpi_server/auth_devpi.py +0 -0
  64. {devpi-server-6.12.1 → devpi-server-6.14.0}/devpi_server/cfg/__init__.py +0 -0
  65. {devpi-server-6.12.1 → devpi-server-6.14.0}/devpi_server/cfg/crontab.template +0 -0
  66. {devpi-server-6.12.1 → devpi-server-6.14.0}/devpi_server/cfg/devpi.service.template +0 -0
  67. {devpi-server-6.12.1 → devpi-server-6.14.0}/devpi_server/cfg/launchd-macos.txt.template +0 -0
  68. {devpi-server-6.12.1 → devpi-server-6.14.0}/devpi_server/cfg/nginx-devpi-caching-http.conf.template +0 -0
  69. {devpi-server-6.12.1 → devpi-server-6.14.0}/devpi_server/cfg/nginx-devpi-caching-location.conf.template +0 -0
  70. {devpi-server-6.12.1 → devpi-server-6.14.0}/devpi_server/cfg/nginx-devpi-caching-proxy.conf.template +0 -0
  71. {devpi-server-6.12.1 → devpi-server-6.14.0}/devpi_server/cfg/nginx-devpi-caching-server.conf.template +0 -0
  72. {devpi-server-6.12.1 → devpi-server-6.14.0}/devpi_server/cfg/nginx-devpi.conf.template +0 -0
  73. {devpi-server-6.12.1 → devpi-server-6.14.0}/devpi_server/cfg/supervisor-devpi.conf.template +0 -0
  74. {devpi-server-6.12.1 → devpi-server-6.14.0}/devpi_server/cfg/supervisord.conf.template +0 -0
  75. {devpi-server-6.12.1 → devpi-server-6.14.0}/devpi_server/cfg/windows-service.txt.template +0 -0
  76. {devpi-server-6.12.1 → devpi-server-6.14.0}/devpi_server/exceptions.py +0 -0
  77. {devpi-server-6.12.1 → devpi-server-6.14.0}/devpi_server/filestore_fs.py +0 -0
  78. {devpi-server-6.12.1 → devpi-server-6.14.0}/devpi_server/interfaces.py +0 -0
  79. {devpi-server-6.12.1 → devpi-server-6.14.0}/devpi_server/keyfs_sqlite.py +0 -0
  80. {devpi-server-6.12.1 → devpi-server-6.14.0}/devpi_server/keyfs_sqlite_fs.py +0 -0
  81. {devpi-server-6.12.1 → devpi-server-6.14.0}/devpi_server/keyfs_types.py +0 -0
  82. {devpi-server-6.12.1 → devpi-server-6.14.0}/devpi_server/markers.py +0 -0
  83. {devpi-server-6.12.1 → devpi-server-6.14.0}/devpi_server/middleware.py +0 -0
  84. {devpi-server-6.12.1 → devpi-server-6.14.0}/devpi_server/readonly.py +0 -0
  85. {devpi-server-6.12.1 → devpi-server-6.14.0}/devpi_server/vendor/__init__.py +0 -0
  86. {devpi-server-6.12.1 → devpi-server-6.14.0}/devpi_server/vendor/_pip.py +0 -0
  87. {devpi-server-6.12.1 → devpi-server-6.14.0}/devpi_server/view_auth.py +0 -0
  88. {devpi-server-6.12.1 → devpi-server-6.14.0}/devpi_server.egg-info/SOURCES.txt +0 -0
  89. {devpi-server-6.12.1 → devpi-server-6.14.0}/devpi_server.egg-info/dependency_links.txt +0 -0
  90. {devpi-server-6.12.1 → devpi-server-6.14.0}/devpi_server.egg-info/entry_points.txt +0 -0
  91. {devpi-server-6.12.1 → devpi-server-6.14.0}/devpi_server.egg-info/not-zip-safe +0 -0
  92. {devpi-server-6.12.1 → devpi-server-6.14.0}/devpi_server.egg-info/requires.txt +0 -0
  93. {devpi-server-6.12.1 → devpi-server-6.14.0}/devpi_server.egg-info/top_level.txt +0 -0
  94. {devpi-server-6.12.1 → devpi-server-6.14.0}/pytest_devpi_server/__init__.py +0 -0
  95. {devpi-server-6.12.1 → devpi-server-6.14.0}/setup.cfg +0 -0
  96. {devpi-server-6.12.1 → devpi-server-6.14.0}/test_devpi_server/__init__.py +0 -0
  97. {devpi-server-6.12.1 → devpi-server-6.14.0}/test_devpi_server/conftest.py +0 -0
  98. {devpi-server-6.12.1 → devpi-server-6.14.0}/test_devpi_server/example.py +0 -0
  99. {devpi-server-6.12.1 → devpi-server-6.14.0}/test_devpi_server/importexportdata/badindexname/dataindex.json +0 -0
  100. {devpi-server-6.12.1 → devpi-server-6.14.0}/test_devpi_server/importexportdata/badusername/dataindex.json +0 -0
  101. {devpi-server-6.12.1 → devpi-server-6.14.0}/test_devpi_server/importexportdata/basescycle/dataindex.json +0 -0
  102. {devpi-server-6.12.1 → devpi-server-6.14.0}/test_devpi_server/importexportdata/createdmodified/dataindex.json +0 -0
  103. {devpi-server-6.12.1 → devpi-server-6.14.0}/test_devpi_server/importexportdata/deletedbase/dataindex.json +0 -0
  104. {devpi-server-6.12.1 → devpi-server-6.14.0}/test_devpi_server/importexportdata/mirrordata/dataindex.json +0 -0
  105. {devpi-server-6.12.1 → devpi-server-6.14.0}/test_devpi_server/importexportdata/mirrordata/root/pypi/dddttt/0.1.dev1/dddttt-0.1.dev1.tar.gz +0 -0
  106. {devpi-server-6.12.1 → devpi-server-6.14.0}/test_devpi_server/importexportdata/modifiedpypi/dataindex.json +0 -0
  107. {devpi-server-6.12.1 → devpi-server-6.14.0}/test_devpi_server/importexportdata/nocreatedmodified/dataindex.json +0 -0
  108. {devpi-server-6.12.1 → devpi-server-6.14.0}/test_devpi_server/importexportdata/normalization/dataindex.json +0 -0
  109. {devpi-server-6.12.1 → devpi-server-6.14.0}/test_devpi_server/importexportdata/normalization/root/dev/hello.pkg/hello.pkg-1.0.tar.gz +0 -0
  110. {devpi-server-6.12.1 → devpi-server-6.14.0}/test_devpi_server/importexportdata/normalization_merge/dataindex.json +0 -0
  111. {devpi-server-6.12.1 → devpi-server-6.14.0}/test_devpi_server/importexportdata/normalization_merge/root/dev/hello-pkg/hello.pkg-1.1.tar.gz +0 -0
  112. {devpi-server-6.12.1 → devpi-server-6.14.0}/test_devpi_server/importexportdata/normalization_merge/root/dev/hello.pkg/hello.pkg-1.0.tar.gz +0 -0
  113. {devpi-server-6.12.1 → devpi-server-6.14.0}/test_devpi_server/importexportdata/norootpypi/dataindex.json +0 -0
  114. {devpi-server-6.12.1 → devpi-server-6.14.0}/test_devpi_server/importexportdata/nouser/dataindex.json +0 -0
  115. {devpi-server-6.12.1 → devpi-server-6.14.0}/test_devpi_server/importexportdata/removedindexplugin/dataindex.json +0 -0
  116. {devpi-server-6.12.1 → devpi-server-6.14.0}/test_devpi_server/importexportdata/removedindexplugin/user/dev/pkg/pkg-1.0.tar.gz +0 -0
  117. {devpi-server-6.12.1 → devpi-server-6.14.0}/test_devpi_server/importexportdata/toxresult_naming_scheme/dataindex.json +0 -0
  118. {devpi-server-6.12.1 → devpi-server-6.14.0}/test_devpi_server/importexportdata/toxresult_naming_scheme/root/dev/hello/0.9/hello-0.9.tar.gz +0 -0
  119. {devpi-server-6.12.1 → devpi-server-6.14.0}/test_devpi_server/importexportdata/toxresult_naming_scheme/root/dev/hello/sha256=ed7002b439e9ac845f22357d822bac1444730fbdb6016d3ec9432297b9ec9f73/hello-0.9.tar.gz.toxresult0 +0 -0
  120. {devpi-server-6.12.1 → devpi-server-6.14.0}/test_devpi_server/importexportdata/toxresult_upload_default/dataindex.json +0 -0
  121. {devpi-server-6.12.1 → devpi-server-6.14.0}/test_devpi_server/reqmock.py +0 -0
  122. {devpi-server-6.12.1 → devpi-server-6.14.0}/test_devpi_server/simpypi.py +0 -0
  123. {devpi-server-6.12.1 → devpi-server-6.14.0}/test_devpi_server/test_auth.py +0 -0
  124. {devpi-server-6.12.1 → devpi-server-6.14.0}/test_devpi_server/test_authcheck.py +0 -0
  125. {devpi-server-6.12.1 → devpi-server-6.14.0}/test_devpi_server/test_fileutil.py +0 -0
  126. {devpi-server-6.12.1 → devpi-server-6.14.0}/test_devpi_server/test_genconfig.py +0 -0
  127. {devpi-server-6.12.1 → devpi-server-6.14.0}/test_devpi_server/test_log.py +0 -0
  128. {devpi-server-6.12.1 → devpi-server-6.14.0}/test_devpi_server/test_mirror_no_project_list.py +0 -0
  129. {devpi-server-6.12.1 → devpi-server-6.14.0}/test_devpi_server/test_nginx.py +0 -0
  130. {devpi-server-6.12.1 → devpi-server-6.14.0}/test_devpi_server/test_readonly.py +0 -0
  131. {devpi-server-6.12.1 → devpi-server-6.14.0}/test_devpi_server/test_reqmock.py +0 -0
  132. {devpi-server-6.12.1 → devpi-server-6.14.0}/test_devpi_server/test_view_auth.py +0 -0
  133. {devpi-server-6.12.1 → devpi-server-6.14.0}/test_devpi_server/test_views_patch.py +0 -0
@@ -1,9 +1,9 @@
1
1
  [flake8]
2
2
  ignore = E501,E741,W503
3
3
  per-file-ignores =
4
- plugin.py:E127,E128,E225,E231,E265,E402,E712
4
+ plugin.py:E127,E128,E225,E231
5
5
  importexport.py:E127
6
6
  model.py:E128,E225,E231
7
7
  setup.py:E121,E126
8
8
  test_importexport.py:E121
9
- test*.py:E117,E126,E127,E128,E225,E226,E231,E251,E265,E712,E721
9
+ test*.py:E126,E127,E128,E225,E226,E231,E251
@@ -2,6 +2,62 @@
2
2
 
3
3
  .. towncrier release notes start
4
4
 
5
+ 6.14.0 (2024-10-16)
6
+ ===================
7
+
8
+ Features
9
+ --------
10
+
11
+ - Allow pushing of versions which only have documentation and no releases.
12
+
13
+ - Allow pushing of release files only with no documentation. Requires devpi-client 7.2.0.
14
+
15
+ - Allow pushing of documentation only with no release files. Requires devpi-client 7.2.0.
16
+
17
+
18
+
19
+ Bug Fixes
20
+ ---------
21
+
22
+ - 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.
23
+
24
+
25
+
26
+ 6.13.0 (2024-09-19)
27
+ ===================
28
+
29
+ Deprecations and Removals
30
+ -------------------------
31
+
32
+ - Remove/Deprecate "master" related terminology in favor of "primary".
33
+ Usage related changes are the switch to ``--primary-url`` instead of ``--master-url`` and ``--role=primary`` instead of ``--role=master``.
34
+ Using the old terms will now output warnings.
35
+ The ``+status`` API has additional fields and the ``role`` field content will change with 7.0.0.
36
+
37
+
38
+
39
+ Features
40
+ --------
41
+
42
+ - Enable logging command line options for all commands.
43
+
44
+ - Added support uv pip as an installer.
45
+
46
+
47
+
48
+ Bug Fixes
49
+ ---------
50
+
51
+ - Don't report on lagging event processing while replicating.
52
+
53
+ - Report primary serial correctly with streaming replication.
54
+
55
+ - Don't store file data in memory when fetching a release while pushing from a mirror.
56
+
57
+ - Only warn about replica not being in sync instead of fatal status while still replicating.
58
+
59
+
60
+
5
61
  6.12.1 (2024-07-24)
6
62
  ===================
7
63
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: devpi-server
3
- Version: 6.12.1
3
+ Version: 6.14.0
4
4
  Summary: devpi-server: reliable private and pypi.org caching server
5
5
  Home-page: https://devpi.net
6
6
  Maintainer: Florian Schulze
@@ -9,6 +9,7 @@ License: MIT
9
9
  Project-URL: Bug Tracker, https://github.com/devpi/devpi/issues
10
10
  Project-URL: Changelog, https://github.com/devpi/devpi/blob/main/server/CHANGELOG
11
11
  Project-URL: Documentation, https://doc.devpi.net
12
+ Project-URL: Funding, https://github.com/sponsors/devpi
12
13
  Project-URL: Source Code, https://github.com/devpi/devpi
13
14
  Keywords: pypi realtime cache server
14
15
  Classifier: Development Status :: 5 - Production/Stable
@@ -104,86 +105,112 @@ Changelog
104
105
 
105
106
  .. towncrier release notes start
106
107
 
107
- 6.12.1 (2024-07-24)
108
+ 6.14.0 (2024-10-16)
108
109
  ===================
109
110
 
111
+ Features
112
+ --------
113
+
114
+ - Allow pushing of versions which only have documentation and no releases.
115
+
116
+ - Allow pushing of release files only with no documentation. Requires devpi-client 7.2.0.
117
+
118
+ - Allow pushing of documentation only with no release files. Requires devpi-client 7.2.0.
119
+
120
+
121
+
110
122
  Bug Fixes
111
123
  ---------
112
124
 
113
- - Support Python 3.13 by depending on legacy-cgi.
125
+ - 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.
114
126
 
115
- - Preserve query string when proxying requests from replica to primary. This fixes force removal on non-volatile indexes and probably other bugs.
116
127
 
117
- - Fix #1044: Correctly update cache expiry time when mirrored server returns 304 Not Modified.
118
128
 
129
+ 6.13.0 (2024-09-19)
130
+ ===================
131
+
132
+ Deprecations and Removals
133
+ -------------------------
134
+
135
+ - Remove/Deprecate "master" related terminology in favor of "primary".
136
+ Usage related changes are the switch to ``--primary-url`` instead of ``--master-url`` and ``--role=primary`` instead of ``--role=master``.
137
+ Using the old terms will now output warnings.
138
+ The ``+status`` API has additional fields and the ``role`` field content will change with 7.0.0.
119
139
 
120
140
 
121
- 6.12.0 (2024-06-25)
122
- ===================
123
141
 
124
142
  Features
125
143
  --------
126
144
 
127
- - Added ``devpiserver_on_toxresult_store`` hook to allow blocking or skipping a toxresult upload on more specific conditions as ``acl_toxresult_upload`` would allow.
145
+ - Enable logging command line options for all commands.
128
146
 
129
- - Added ``devpiserver_on_toxresult_upload_forbidden`` hook to allow returning a custom message and result (403 or 200).
147
+ - Added support uv pip as an installer.
130
148
 
131
149
 
132
150
 
133
151
  Bug Fixes
134
152
  ---------
135
153
 
136
- - Return json data if toxresult upload is forbidden.
154
+ - Don't report on lagging event processing while replicating.
137
155
 
156
+ - Report primary serial correctly with streaming replication.
138
157
 
158
+ - Don't store file data in memory when fetching a release while pushing from a mirror.
139
159
 
140
- 6.11.0 (2024-04-20)
141
- ===================
142
-
143
- Features
144
- --------
145
-
146
- - The ``devpi-fsck`` script now returns an error code when there have been missing files or checksum errors.
160
+ - Only warn about replica not being in sync instead of fatal status while still replicating.
147
161
 
148
- - Fix #983: Add plugin hook for mirror authentication header.
149
162
 
150
163
 
164
+ 6.12.1 (2024-07-24)
165
+ ===================
151
166
 
152
167
  Bug Fixes
153
168
  ---------
154
169
 
155
- - Preserve last modified of docs and toxresults during export/import.
170
+ - Support Python 3.13 by depending on legacy-cgi.
156
171
 
157
- - Fix #1033: Use ``int`` for ``--mirror-cache-expiry`` to fix value of ``proxy_cache_valid`` in nginx caching config.
172
+ - Preserve query string when proxying requests from replica to primary. This fixes force removal on non-volatile indexes and probably other bugs.
173
+
174
+ - Fix #1044: Correctly update cache expiry time when mirrored server returns 304 Not Modified.
158
175
 
159
176
 
160
177
 
161
- 6.10.0 (2023-12-19)
178
+ 6.12.0 (2024-06-25)
162
179
  ===================
163
180
 
164
181
  Features
165
182
  --------
166
183
 
167
- - Use ``Authorization`` header instead of adding username/password to URL when fetching from mirror.
184
+ - Added ``devpiserver_on_toxresult_store`` hook to allow blocking or skipping a toxresult upload on more specific conditions as ``acl_toxresult_upload`` would allow.
168
185
 
169
- - Fix #998: Use the pure Python httpx library instead of aiohttp to prevent delays in supporting newest Python releases.
186
+ - Added ``devpiserver_on_toxresult_upload_forbidden`` hook to allow returning a custom message and result (403 or 200).
170
187
 
171
188
 
172
189
 
173
190
  Bug Fixes
174
191
  ---------
175
192
 
176
- - Fix #996: support hashes other than sha256 in application/vnd.pypi.simple.v1+json responses.
193
+ - Return json data if toxresult upload is forbidden.
177
194
 
178
- - Only compare hostname instead of full URL prefix when parsing mirror packages to fix mirrors with basic authentication and absolute URLs. See #1006
179
195
 
180
196
 
197
+ 6.11.0 (2024-04-20)
198
+ ===================
199
+
200
+ Features
201
+ --------
202
+
203
+ - The ``devpi-fsck`` script now returns an error code when there have been missing files or checksum errors.
204
+
205
+ - Fix #983: Add plugin hook for mirror authentication header.
206
+
181
207
 
182
- 6.9.2 (2023-08-06)
183
- ==================
184
208
 
185
209
  Bug Fixes
186
210
  ---------
187
211
 
188
- - Prevent duplicates when adding values to lists in index configuration with ``+=`` operator.
212
+ - Preserve last modified of docs and toxresults during export/import.
213
+
214
+ - Fix #1033: Use ``int`` for ``--mirror-cache-expiry`` to fix value of ``proxy_cache_valid`` in nginx caching config.
215
+
189
216
 
@@ -0,0 +1 @@
1
+ __version__ = '6.14.0'