devpi-server 6.20.0__tar.gz → 6.20.1__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 (140) hide show
  1. {devpi_server-6.20.0 → devpi_server-6.20.1}/CHANGELOG +9 -0
  2. {devpi_server-6.20.0 → devpi_server-6.20.1}/CHANGELOG.short.rst +9 -29
  3. {devpi_server-6.20.0 → devpi_server-6.20.1}/PKG-INFO +10 -30
  4. devpi_server-6.20.1/devpi_server/__init__.py +1 -0
  5. {devpi_server-6.20.0 → devpi_server-6.20.1}/devpi_server/views.py +9 -3
  6. {devpi_server-6.20.0 → devpi_server-6.20.1}/devpi_server.egg-info/PKG-INFO +10 -30
  7. devpi_server-6.20.0/devpi_server/__init__.py +0 -1
  8. {devpi_server-6.20.0 → devpi_server-6.20.1}/.flake8 +0 -0
  9. {devpi_server-6.20.0 → devpi_server-6.20.1}/LICENSE +0 -0
  10. {devpi_server-6.20.0 → devpi_server-6.20.1}/MANIFEST.in +0 -0
  11. {devpi_server-6.20.0 → devpi_server-6.20.1}/README.rst +0 -0
  12. {devpi_server-6.20.0 → devpi_server-6.20.1}/devpi_server/__main__.py +0 -0
  13. {devpi_server-6.20.0 → devpi_server-6.20.1}/devpi_server/auth.py +0 -0
  14. {devpi_server-6.20.0 → devpi_server-6.20.1}/devpi_server/auth_basic.py +0 -0
  15. {devpi_server-6.20.0 → devpi_server-6.20.1}/devpi_server/auth_devpi.py +0 -0
  16. {devpi_server-6.20.0 → devpi_server-6.20.1}/devpi_server/cfg/__init__.py +0 -0
  17. {devpi_server-6.20.0 → devpi_server-6.20.1}/devpi_server/cfg/crontab.template +0 -0
  18. {devpi_server-6.20.0 → devpi_server-6.20.1}/devpi_server/cfg/devpi.service.template +0 -0
  19. {devpi_server-6.20.0 → devpi_server-6.20.1}/devpi_server/cfg/launchd-macos.txt.template +0 -0
  20. {devpi_server-6.20.0 → devpi_server-6.20.1}/devpi_server/cfg/nginx-devpi-caching-http.conf.template +0 -0
  21. {devpi_server-6.20.0 → devpi_server-6.20.1}/devpi_server/cfg/nginx-devpi-caching-location.conf.template +0 -0
  22. {devpi_server-6.20.0 → devpi_server-6.20.1}/devpi_server/cfg/nginx-devpi-caching-proxy.conf.template +0 -0
  23. {devpi_server-6.20.0 → devpi_server-6.20.1}/devpi_server/cfg/nginx-devpi-caching-server.conf.template +0 -0
  24. {devpi_server-6.20.0 → devpi_server-6.20.1}/devpi_server/cfg/nginx-devpi.conf.template +0 -0
  25. {devpi_server-6.20.0 → devpi_server-6.20.1}/devpi_server/cfg/supervisor-devpi.conf.template +0 -0
  26. {devpi_server-6.20.0 → devpi_server-6.20.1}/devpi_server/cfg/supervisord.conf.template +0 -0
  27. {devpi_server-6.20.0 → devpi_server-6.20.1}/devpi_server/cfg/windows-service.txt.template +0 -0
  28. {devpi_server-6.20.0 → devpi_server-6.20.1}/devpi_server/compat.py +0 -0
  29. {devpi_server-6.20.0 → devpi_server-6.20.1}/devpi_server/config.py +0 -0
  30. {devpi_server-6.20.0 → devpi_server-6.20.1}/devpi_server/exceptions.py +0 -0
  31. {devpi_server-6.20.0 → devpi_server-6.20.1}/devpi_server/filestore.py +0 -0
  32. {devpi_server-6.20.0 → devpi_server-6.20.1}/devpi_server/filestore_db.py +0 -0
  33. {devpi_server-6.20.0 → devpi_server-6.20.1}/devpi_server/filestore_fs.py +0 -0
  34. {devpi_server-6.20.0 → devpi_server-6.20.1}/devpi_server/filestore_fs_base.py +0 -0
  35. {devpi_server-6.20.0 → devpi_server-6.20.1}/devpi_server/filestore_hash_hl.py +0 -0
  36. {devpi_server-6.20.0 → devpi_server-6.20.1}/devpi_server/fileutil.py +0 -0
  37. {devpi_server-6.20.0 → devpi_server-6.20.1}/devpi_server/fsck.py +0 -0
  38. {devpi_server-6.20.0 → devpi_server-6.20.1}/devpi_server/genconfig.py +0 -0
  39. {devpi_server-6.20.0 → devpi_server-6.20.1}/devpi_server/hookspecs.py +0 -0
  40. {devpi_server-6.20.0 → devpi_server-6.20.1}/devpi_server/htmlpage.py +0 -0
  41. {devpi_server-6.20.0 → devpi_server-6.20.1}/devpi_server/httpclient.py +0 -0
  42. {devpi_server-6.20.0 → devpi_server-6.20.1}/devpi_server/importexport.py +0 -0
  43. {devpi_server-6.20.0 → devpi_server-6.20.1}/devpi_server/init.py +0 -0
  44. {devpi_server-6.20.0 → devpi_server-6.20.1}/devpi_server/interfaces.py +0 -0
  45. {devpi_server-6.20.0 → devpi_server-6.20.1}/devpi_server/keyfs.py +0 -0
  46. {devpi_server-6.20.0 → devpi_server-6.20.1}/devpi_server/keyfs_sqlite.py +0 -0
  47. {devpi_server-6.20.0 → devpi_server-6.20.1}/devpi_server/keyfs_sqlite_fs.py +0 -0
  48. {devpi_server-6.20.0 → devpi_server-6.20.1}/devpi_server/keyfs_types.py +0 -0
  49. {devpi_server-6.20.0 → devpi_server-6.20.1}/devpi_server/log.py +0 -0
  50. {devpi_server-6.20.0 → devpi_server-6.20.1}/devpi_server/main.py +0 -0
  51. {devpi_server-6.20.0 → devpi_server-6.20.1}/devpi_server/markers.py +0 -0
  52. {devpi_server-6.20.0 → devpi_server-6.20.1}/devpi_server/middleware.py +0 -0
  53. {devpi_server-6.20.0 → devpi_server-6.20.1}/devpi_server/mirror.py +0 -0
  54. {devpi_server-6.20.0 → devpi_server-6.20.1}/devpi_server/model.py +0 -0
  55. {devpi_server-6.20.0 → devpi_server-6.20.1}/devpi_server/mythread.py +0 -0
  56. {devpi_server-6.20.0 → devpi_server-6.20.1}/devpi_server/normalized.py +0 -0
  57. {devpi_server-6.20.0 → devpi_server-6.20.1}/devpi_server/passwd.py +0 -0
  58. {devpi_server-6.20.0 → devpi_server-6.20.1}/devpi_server/proxy.py +0 -0
  59. {devpi_server-6.20.0 → devpi_server-6.20.1}/devpi_server/py.typed +0 -0
  60. {devpi_server-6.20.0 → devpi_server-6.20.1}/devpi_server/readonly.py +0 -0
  61. {devpi_server-6.20.0 → devpi_server-6.20.1}/devpi_server/replica.py +0 -0
  62. {devpi_server-6.20.0 → devpi_server-6.20.1}/devpi_server/sizeof.py +0 -0
  63. {devpi_server-6.20.0 → devpi_server-6.20.1}/devpi_server/view_auth.py +0 -0
  64. {devpi_server-6.20.0 → devpi_server-6.20.1}/devpi_server.egg-info/SOURCES.txt +0 -0
  65. {devpi_server-6.20.0 → devpi_server-6.20.1}/devpi_server.egg-info/dependency_links.txt +0 -0
  66. {devpi_server-6.20.0 → devpi_server-6.20.1}/devpi_server.egg-info/entry_points.txt +0 -0
  67. {devpi_server-6.20.0 → devpi_server-6.20.1}/devpi_server.egg-info/requires.txt +0 -0
  68. {devpi_server-6.20.0 → devpi_server-6.20.1}/devpi_server.egg-info/top_level.txt +0 -0
  69. {devpi_server-6.20.0 → devpi_server-6.20.1}/mypy.ini +0 -0
  70. {devpi_server-6.20.0 → devpi_server-6.20.1}/pyproject.toml +0 -0
  71. {devpi_server-6.20.0 → devpi_server-6.20.1}/pytest_devpi_server/__init__.py +0 -0
  72. {devpi_server-6.20.0 → devpi_server-6.20.1}/setup.cfg +0 -0
  73. {devpi_server-6.20.0 → devpi_server-6.20.1}/test_devpi_server/__init__.py +0 -0
  74. {devpi_server-6.20.0 → devpi_server-6.20.1}/test_devpi_server/conftest.py +0 -0
  75. {devpi_server-6.20.0 → devpi_server-6.20.1}/test_devpi_server/example.py +0 -0
  76. {devpi_server-6.20.0 → devpi_server-6.20.1}/test_devpi_server/functional.py +0 -0
  77. {devpi_server-6.20.0 → devpi_server-6.20.1}/test_devpi_server/importexportdata/badindexname/dataindex.json +0 -0
  78. {devpi_server-6.20.0 → devpi_server-6.20.1}/test_devpi_server/importexportdata/badusername/dataindex.json +0 -0
  79. {devpi_server-6.20.0 → devpi_server-6.20.1}/test_devpi_server/importexportdata/basescycle/dataindex.json +0 -0
  80. {devpi_server-6.20.0 → devpi_server-6.20.1}/test_devpi_server/importexportdata/createdmodified/dataindex.json +0 -0
  81. {devpi_server-6.20.0 → devpi_server-6.20.1}/test_devpi_server/importexportdata/dashes_v1/dataindex.json +0 -0
  82. {devpi_server-6.20.0 → devpi_server-6.20.1}/test_devpi_server/importexportdata/dashes_v1/user1/dev/hello/hello-1.2_3.tar.gz +0 -0
  83. {devpi_server-6.20.0 → devpi_server-6.20.1}/test_devpi_server/importexportdata/deletedbase/dataindex.json +0 -0
  84. {devpi_server-6.20.0 → devpi_server-6.20.1}/test_devpi_server/importexportdata/mirrordata/dataindex.json +0 -0
  85. {devpi_server-6.20.0 → devpi_server-6.20.1}/test_devpi_server/importexportdata/mirrordata/root/pypi/dddttt/0.1.dev1/dddttt-0.1.dev1.tar.gz +0 -0
  86. {devpi_server-6.20.0 → devpi_server-6.20.1}/test_devpi_server/importexportdata/modifiedpypi/dataindex.json +0 -0
  87. {devpi_server-6.20.0 → devpi_server-6.20.1}/test_devpi_server/importexportdata/no_history_log/dataindex.json +0 -0
  88. {devpi_server-6.20.0 → devpi_server-6.20.1}/test_devpi_server/importexportdata/no_history_log/user1/dev/hello/hello-1.0.tar.gz +0 -0
  89. {devpi_server-6.20.0 → devpi_server-6.20.1}/test_devpi_server/importexportdata/nocreatedmodified/dataindex.json +0 -0
  90. {devpi_server-6.20.0 → devpi_server-6.20.1}/test_devpi_server/importexportdata/normalization/dataindex.json +0 -0
  91. {devpi_server-6.20.0 → devpi_server-6.20.1}/test_devpi_server/importexportdata/normalization/root/dev/hello.pkg/hello.pkg-1.0.tar.gz +0 -0
  92. {devpi_server-6.20.0 → devpi_server-6.20.1}/test_devpi_server/importexportdata/normalization_merge/dataindex.json +0 -0
  93. {devpi_server-6.20.0 → devpi_server-6.20.1}/test_devpi_server/importexportdata/normalization_merge/root/dev/hello-pkg/hello.pkg-1.1.tar.gz +0 -0
  94. {devpi_server-6.20.0 → devpi_server-6.20.1}/test_devpi_server/importexportdata/normalization_merge/root/dev/hello.pkg/hello.pkg-1.0.tar.gz +0 -0
  95. {devpi_server-6.20.0 → devpi_server-6.20.1}/test_devpi_server/importexportdata/norootpypi/dataindex.json +0 -0
  96. {devpi_server-6.20.0 → devpi_server-6.20.1}/test_devpi_server/importexportdata/nouser/dataindex.json +0 -0
  97. {devpi_server-6.20.0 → devpi_server-6.20.1}/test_devpi_server/importexportdata/removedindexplugin/dataindex.json +0 -0
  98. {devpi_server-6.20.0 → devpi_server-6.20.1}/test_devpi_server/importexportdata/removedindexplugin/user/dev/pkg/pkg-1.0.tar.gz +0 -0
  99. {devpi_server-6.20.0 → devpi_server-6.20.1}/test_devpi_server/importexportdata/toxresult_naming_scheme/dataindex.json +0 -0
  100. {devpi_server-6.20.0 → devpi_server-6.20.1}/test_devpi_server/importexportdata/toxresult_naming_scheme/root/dev/hello/0.9/hello-0.9.tar.gz +0 -0
  101. {devpi_server-6.20.0 → devpi_server-6.20.1}/test_devpi_server/importexportdata/toxresult_naming_scheme/root/dev/hello/sha256=ed7002b439e9ac845f22357d822bac1444730fbdb6016d3ec9432297b9ec9f73/hello-0.9.tar.gz.toxresult0 +0 -0
  102. {devpi_server-6.20.0 → devpi_server-6.20.1}/test_devpi_server/importexportdata/toxresult_upload_default/dataindex.json +0 -0
  103. {devpi_server-6.20.0 → devpi_server-6.20.1}/test_devpi_server/plugin.py +0 -0
  104. {devpi_server-6.20.0 → devpi_server-6.20.1}/test_devpi_server/py.typed +0 -0
  105. {devpi_server-6.20.0 → devpi_server-6.20.1}/test_devpi_server/reqmock.py +0 -0
  106. {devpi_server-6.20.0 → devpi_server-6.20.1}/test_devpi_server/simpypi.py +0 -0
  107. {devpi_server-6.20.0 → devpi_server-6.20.1}/test_devpi_server/test_auth.py +0 -0
  108. {devpi_server-6.20.0 → devpi_server-6.20.1}/test_devpi_server/test_authcheck.py +0 -0
  109. {devpi_server-6.20.0 → devpi_server-6.20.1}/test_devpi_server/test_config.py +0 -0
  110. {devpi_server-6.20.0 → devpi_server-6.20.1}/test_devpi_server/test_conftest.py +0 -0
  111. {devpi_server-6.20.0 → devpi_server-6.20.1}/test_devpi_server/test_filestore.py +0 -0
  112. {devpi_server-6.20.0 → devpi_server-6.20.1}/test_devpi_server/test_filestore_fs.py +0 -0
  113. {devpi_server-6.20.0 → devpi_server-6.20.1}/test_devpi_server/test_fileutil.py +0 -0
  114. {devpi_server-6.20.0 → devpi_server-6.20.1}/test_devpi_server/test_fsck.py +0 -0
  115. {devpi_server-6.20.0 → devpi_server-6.20.1}/test_devpi_server/test_genconfig.py +0 -0
  116. {devpi_server-6.20.0 → devpi_server-6.20.1}/test_devpi_server/test_importexport.py +0 -0
  117. {devpi_server-6.20.0 → devpi_server-6.20.1}/test_devpi_server/test_keyfs.py +0 -0
  118. {devpi_server-6.20.0 → devpi_server-6.20.1}/test_devpi_server/test_log.py +0 -0
  119. {devpi_server-6.20.0 → devpi_server-6.20.1}/test_devpi_server/test_main.py +0 -0
  120. {devpi_server-6.20.0 → devpi_server-6.20.1}/test_devpi_server/test_mirror.py +0 -0
  121. {devpi_server-6.20.0 → devpi_server-6.20.1}/test_devpi_server/test_mirror_no_project_list.py +0 -0
  122. {devpi_server-6.20.0 → devpi_server-6.20.1}/test_devpi_server/test_model.py +0 -0
  123. {devpi_server-6.20.0 → devpi_server-6.20.1}/test_devpi_server/test_mythread.py +0 -0
  124. {devpi_server-6.20.0 → devpi_server-6.20.1}/test_devpi_server/test_nginx.py +0 -0
  125. {devpi_server-6.20.0 → devpi_server-6.20.1}/test_devpi_server/test_nginx_replica.py +0 -0
  126. {devpi_server-6.20.0 → devpi_server-6.20.1}/test_devpi_server/test_permissions.py +0 -0
  127. {devpi_server-6.20.0 → devpi_server-6.20.1}/test_devpi_server/test_readonly.py +0 -0
  128. {devpi_server-6.20.0 → devpi_server-6.20.1}/test_devpi_server/test_replica.py +0 -0
  129. {devpi_server-6.20.0 → devpi_server-6.20.1}/test_devpi_server/test_replica_functional.py +0 -0
  130. {devpi_server-6.20.0 → devpi_server-6.20.1}/test_devpi_server/test_stage_customizer.py +0 -0
  131. {devpi_server-6.20.0 → devpi_server-6.20.1}/test_devpi_server/test_streaming.py +0 -0
  132. {devpi_server-6.20.0 → devpi_server-6.20.1}/test_devpi_server/test_streaming_nginx.py +0 -0
  133. {devpi_server-6.20.0 → devpi_server-6.20.1}/test_devpi_server/test_streaming_replica.py +0 -0
  134. {devpi_server-6.20.0 → devpi_server-6.20.1}/test_devpi_server/test_streaming_replica_nginx.py +0 -0
  135. {devpi_server-6.20.0 → devpi_server-6.20.1}/test_devpi_server/test_view_auth.py +0 -0
  136. {devpi_server-6.20.0 → devpi_server-6.20.1}/test_devpi_server/test_views.py +0 -0
  137. {devpi_server-6.20.0 → devpi_server-6.20.1}/test_devpi_server/test_views_patch.py +0 -0
  138. {devpi_server-6.20.0 → devpi_server-6.20.1}/test_devpi_server/test_views_push_external.py +0 -0
  139. {devpi_server-6.20.0 → devpi_server-6.20.1}/test_devpi_server/test_views_status.py +0 -0
  140. {devpi_server-6.20.0 → devpi_server-6.20.1}/tox.ini +0 -0
@@ -2,6 +2,15 @@
2
2
 
3
3
  .. towncrier release notes start
4
4
 
5
+ 6.20.1 (2026-05-11)
6
+ ===================
7
+
8
+ Bug Fixes
9
+ ---------
10
+
11
+ - Pass through request headers when streaming .metadata from mirror. Refs #1018
12
+
13
+
5
14
  6.20.0 (2026-04-30)
6
15
  ===================
7
16
 
@@ -9,6 +9,15 @@ Changelog
9
9
 
10
10
  .. towncrier release notes start
11
11
 
12
+ 6.20.1 (2026-05-11)
13
+ ===================
14
+
15
+ Bug Fixes
16
+ ---------
17
+
18
+ - Pass through request headers when streaming .metadata from mirror. Refs #1018
19
+
20
+
12
21
  6.20.0 (2026-04-30)
13
22
  ===================
14
23
 
@@ -66,32 +75,3 @@ Bug Fixes
66
75
 
67
76
  - Always allow replicas to access deleted releases to get the proper ``410 Gone`` instead of ``403 Forbidden`` when ``devpi-lockdown`` is in use.
68
77
 
69
-
70
- 6.19.0 (2026-02-06)
71
- ===================
72
-
73
- Features
74
- --------
75
-
76
- - Add ``--autocreate-users`` server option.
77
- Automatically creates users that don't exist in devpi, but have successfully authenticated via an authentication plugin.
78
- A typical example of when to enable this would be when authenticating via an LDAP directory.
79
- Automatically created users do not have passwords, and have no password hash to prevent local authentication.
80
-
81
- - Add ``replica-files-in-sync-at``, ``replica-init-queue-finished-at`` and ``replica-metadata-in-sync-at`` to status view, the existing ``replica-in-sync-at`` is now a combination of all three instead of just metadata.
82
-
83
- - Warn when an unknown option is found in config file to detect typos. Be aware that some commands don't use all the options, that is why this only warns instead of exiting.
84
-
85
- - Add new ``devpiserver_user_created`` hook which can be used to create default indexes or other setup for newly created users.
86
-
87
- Bug Fixes
88
- ---------
89
-
90
- - Fix ``+status`` json encoding errors by making sure the ``FatalResponse.url`` attribute is a string.
91
-
92
- - Ignore existing unknown index options from uninstalled plugins when patching other options with ``+=`` and ``-=``.
93
-
94
- - Fix removal with ``-=`` of index options with default values from ``devpiserver_indexconfig_defaults`` hooks.
95
-
96
- - Fix #1110: a list for the ``listen`` option in a config file stopped working in 6.18.0.
97
-
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: devpi-server
3
- Version: 6.20.0
3
+ Version: 6.20.1
4
4
  Summary: devpi-server: backend for hosting private package indexes and PyPI on-demand mirrors
5
5
  Maintainer-email: Florian Schulze <mail@pyfidelity.com>
6
6
  License-Expression: MIT
@@ -121,6 +121,15 @@ Changelog
121
121
 
122
122
  .. towncrier release notes start
123
123
 
124
+ 6.20.1 (2026-05-11)
125
+ ===================
126
+
127
+ Bug Fixes
128
+ ---------
129
+
130
+ - Pass through request headers when streaming .metadata from mirror. Refs #1018
131
+
132
+
124
133
  6.20.0 (2026-04-30)
125
134
  ===================
126
135
 
@@ -178,32 +187,3 @@ Bug Fixes
178
187
 
179
188
  - Always allow replicas to access deleted releases to get the proper ``410 Gone`` instead of ``403 Forbidden`` when ``devpi-lockdown`` is in use.
180
189
 
181
-
182
- 6.19.0 (2026-02-06)
183
- ===================
184
-
185
- Features
186
- --------
187
-
188
- - Add ``--autocreate-users`` server option.
189
- Automatically creates users that don't exist in devpi, but have successfully authenticated via an authentication plugin.
190
- A typical example of when to enable this would be when authenticating via an LDAP directory.
191
- Automatically created users do not have passwords, and have no password hash to prevent local authentication.
192
-
193
- - Add ``replica-files-in-sync-at``, ``replica-init-queue-finished-at`` and ``replica-metadata-in-sync-at`` to status view, the existing ``replica-in-sync-at`` is now a combination of all three instead of just metadata.
194
-
195
- - Warn when an unknown option is found in config file to detect typos. Be aware that some commands don't use all the options, that is why this only warns instead of exiting.
196
-
197
- - Add new ``devpiserver_user_created`` hook which can be used to create default indexes or other setup for newly created users.
198
-
199
- Bug Fixes
200
- ---------
201
-
202
- - Fix ``+status`` json encoding errors by making sure the ``FatalResponse.url`` attribute is a string.
203
-
204
- - Ignore existing unknown index options from uninstalled plugins when patching other options with ``+=`` and ``-=``.
205
-
206
- - Fix removal with ``-=`` of index options with default values from ``devpiserver_indexconfig_defaults`` hooks.
207
-
208
- - Fix #1110: a list for the ``listen`` option in a config file stopped working in 6.18.0.
209
-
@@ -0,0 +1 @@
1
+ __version__ = "6.20.1"
@@ -20,6 +20,7 @@ from .model import InvalidUserconfig
20
20
  from .model import ReadonlyIndex
21
21
  from .model import RemoveValue
22
22
  from .normalized import normalize_name
23
+ from .proxy import clean_request_headers
23
24
  from .proxy import clean_response_headers
24
25
  from .readonly import get_mutable_deepcopy
25
26
  from collections import defaultdict
@@ -1585,7 +1586,9 @@ class PyPIView:
1585
1586
  return apireturn(404, "mirror_provides_core_metadata disabled")
1586
1587
  url = url.replace(path=f"{url.path}.metadata")
1587
1588
  try:
1588
- app_iter = iter_stream_remote_file(stage, url)
1589
+ app_iter = iter_stream_remote_file(
1590
+ stage, url, clean_request_headers(request)
1591
+ )
1589
1592
  headers = next(app_iter)
1590
1593
  except BadGateway as e:
1591
1594
  if e.code == 404:
@@ -1901,9 +1904,12 @@ class FileStreamer:
1901
1904
  raise err
1902
1905
 
1903
1906
 
1904
- def iter_stream_remote_file(stage, url):
1907
+ def iter_stream_remote_file(stage, url, headers):
1905
1908
  with contextlib.ExitStack() as cstack:
1906
- r = stage.http.stream(cstack, "GET", url, allow_redirects=True)
1909
+ headers.pop("User-Agent", None)
1910
+ r = stage.http.stream(
1911
+ cstack, "GET", url, allow_redirects=True, extra_headers=headers
1912
+ )
1907
1913
  if r.status_code != 200:
1908
1914
  r.close()
1909
1915
  msg = f"error {r.status_code} getting {url}"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: devpi-server
3
- Version: 6.20.0
3
+ Version: 6.20.1
4
4
  Summary: devpi-server: backend for hosting private package indexes and PyPI on-demand mirrors
5
5
  Maintainer-email: Florian Schulze <mail@pyfidelity.com>
6
6
  License-Expression: MIT
@@ -121,6 +121,15 @@ Changelog
121
121
 
122
122
  .. towncrier release notes start
123
123
 
124
+ 6.20.1 (2026-05-11)
125
+ ===================
126
+
127
+ Bug Fixes
128
+ ---------
129
+
130
+ - Pass through request headers when streaming .metadata from mirror. Refs #1018
131
+
132
+
124
133
  6.20.0 (2026-04-30)
125
134
  ===================
126
135
 
@@ -178,32 +187,3 @@ Bug Fixes
178
187
 
179
188
  - Always allow replicas to access deleted releases to get the proper ``410 Gone`` instead of ``403 Forbidden`` when ``devpi-lockdown`` is in use.
180
189
 
181
-
182
- 6.19.0 (2026-02-06)
183
- ===================
184
-
185
- Features
186
- --------
187
-
188
- - Add ``--autocreate-users`` server option.
189
- Automatically creates users that don't exist in devpi, but have successfully authenticated via an authentication plugin.
190
- A typical example of when to enable this would be when authenticating via an LDAP directory.
191
- Automatically created users do not have passwords, and have no password hash to prevent local authentication.
192
-
193
- - Add ``replica-files-in-sync-at``, ``replica-init-queue-finished-at`` and ``replica-metadata-in-sync-at`` to status view, the existing ``replica-in-sync-at`` is now a combination of all three instead of just metadata.
194
-
195
- - Warn when an unknown option is found in config file to detect typos. Be aware that some commands don't use all the options, that is why this only warns instead of exiting.
196
-
197
- - Add new ``devpiserver_user_created`` hook which can be used to create default indexes or other setup for newly created users.
198
-
199
- Bug Fixes
200
- ---------
201
-
202
- - Fix ``+status`` json encoding errors by making sure the ``FatalResponse.url`` attribute is a string.
203
-
204
- - Ignore existing unknown index options from uninstalled plugins when patching other options with ``+=`` and ``-=``.
205
-
206
- - Fix removal with ``-=`` of index options with default values from ``devpiserver_indexconfig_defaults`` hooks.
207
-
208
- - Fix #1110: a list for the ``listen`` option in a config file stopped working in 6.18.0.
209
-
@@ -1 +0,0 @@
1
- __version__ = "6.20.0"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes