devpi-server 6.9.0__tar.gz → 6.9.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 (124) hide show
  1. {devpi-server-6.9.0 → devpi-server-6.9.1}/CHANGELOG +11 -0
  2. {devpi-server-6.9.0 → devpi-server-6.9.1}/PKG-INFO +12 -30
  3. devpi-server-6.9.1/devpi_server/__init__.py +1 -0
  4. {devpi-server-6.9.0 → devpi-server-6.9.1}/devpi_server/config.py +0 -2
  5. {devpi-server-6.9.0 → devpi-server-6.9.1}/devpi_server/keyfs.py +9 -1
  6. {devpi-server-6.9.0 → devpi-server-6.9.1}/devpi_server/keyfs_sqlite.py +8 -2
  7. {devpi-server-6.9.0 → devpi-server-6.9.1}/devpi_server/replica.py +3 -2
  8. {devpi-server-6.9.0 → devpi-server-6.9.1}/devpi_server/views.py +10 -1
  9. {devpi-server-6.9.0 → devpi-server-6.9.1}/devpi_server.egg-info/PKG-INFO +12 -30
  10. {devpi-server-6.9.0 → devpi-server-6.9.1}/setup.py +1 -1
  11. devpi-server-6.9.0/devpi_server/__init__.py +0 -1
  12. {devpi-server-6.9.0 → devpi-server-6.9.1}/AUTHORS +0 -0
  13. {devpi-server-6.9.0 → devpi-server-6.9.1}/LICENSE +0 -0
  14. {devpi-server-6.9.0 → devpi-server-6.9.1}/MANIFEST.in +0 -0
  15. {devpi-server-6.9.0 → devpi-server-6.9.1}/README.rst +0 -0
  16. {devpi-server-6.9.0 → devpi-server-6.9.1}/devpi_server/__main__.py +0 -0
  17. {devpi-server-6.9.0 → devpi-server-6.9.1}/devpi_server/auth.py +0 -0
  18. {devpi-server-6.9.0 → devpi-server-6.9.1}/devpi_server/auth_basic.py +0 -0
  19. {devpi-server-6.9.0 → devpi-server-6.9.1}/devpi_server/auth_devpi.py +0 -0
  20. {devpi-server-6.9.0 → devpi-server-6.9.1}/devpi_server/cfg/__init__.py +0 -0
  21. {devpi-server-6.9.0 → devpi-server-6.9.1}/devpi_server/cfg/crontab.template +0 -0
  22. {devpi-server-6.9.0 → devpi-server-6.9.1}/devpi_server/cfg/devpi.service.template +0 -0
  23. {devpi-server-6.9.0 → devpi-server-6.9.1}/devpi_server/cfg/launchd-macos.txt.template +0 -0
  24. {devpi-server-6.9.0 → devpi-server-6.9.1}/devpi_server/cfg/nginx-devpi-caching-http.conf.template +0 -0
  25. {devpi-server-6.9.0 → devpi-server-6.9.1}/devpi_server/cfg/nginx-devpi-caching-location.conf.template +0 -0
  26. {devpi-server-6.9.0 → devpi-server-6.9.1}/devpi_server/cfg/nginx-devpi-caching-proxy.conf.template +0 -0
  27. {devpi-server-6.9.0 → devpi-server-6.9.1}/devpi_server/cfg/nginx-devpi-caching-server.conf.template +0 -0
  28. {devpi-server-6.9.0 → devpi-server-6.9.1}/devpi_server/cfg/nginx-devpi.conf.template +0 -0
  29. {devpi-server-6.9.0 → devpi-server-6.9.1}/devpi_server/cfg/supervisor-devpi.conf.template +0 -0
  30. {devpi-server-6.9.0 → devpi-server-6.9.1}/devpi_server/cfg/supervisord.conf.template +0 -0
  31. {devpi-server-6.9.0 → devpi-server-6.9.1}/devpi_server/cfg/windows-service.txt.template +0 -0
  32. {devpi-server-6.9.0 → devpi-server-6.9.1}/devpi_server/exceptions.py +0 -0
  33. {devpi-server-6.9.0 → devpi-server-6.9.1}/devpi_server/filestore.py +0 -0
  34. {devpi-server-6.9.0 → devpi-server-6.9.1}/devpi_server/fileutil.py +0 -0
  35. {devpi-server-6.9.0 → devpi-server-6.9.1}/devpi_server/fsck.py +0 -0
  36. {devpi-server-6.9.0 → devpi-server-6.9.1}/devpi_server/genconfig.py +0 -0
  37. {devpi-server-6.9.0 → devpi-server-6.9.1}/devpi_server/hookspecs.py +0 -0
  38. {devpi-server-6.9.0 → devpi-server-6.9.1}/devpi_server/importexport.py +0 -0
  39. {devpi-server-6.9.0 → devpi-server-6.9.1}/devpi_server/init.py +0 -0
  40. {devpi-server-6.9.0 → devpi-server-6.9.1}/devpi_server/interfaces.py +0 -0
  41. {devpi-server-6.9.0 → devpi-server-6.9.1}/devpi_server/keyfs_sqlite_fs.py +0 -0
  42. {devpi-server-6.9.0 → devpi-server-6.9.1}/devpi_server/keyfs_types.py +0 -0
  43. {devpi-server-6.9.0 → devpi-server-6.9.1}/devpi_server/log.py +0 -0
  44. {devpi-server-6.9.0 → devpi-server-6.9.1}/devpi_server/main.py +0 -0
  45. {devpi-server-6.9.0 → devpi-server-6.9.1}/devpi_server/middleware.py +0 -0
  46. {devpi-server-6.9.0 → devpi-server-6.9.1}/devpi_server/mirror.py +0 -0
  47. {devpi-server-6.9.0 → devpi-server-6.9.1}/devpi_server/model.py +0 -0
  48. {devpi-server-6.9.0 → devpi-server-6.9.1}/devpi_server/mythread.py +0 -0
  49. {devpi-server-6.9.0 → devpi-server-6.9.1}/devpi_server/passwd.py +0 -0
  50. {devpi-server-6.9.0 → devpi-server-6.9.1}/devpi_server/readonly.py +0 -0
  51. {devpi-server-6.9.0 → devpi-server-6.9.1}/devpi_server/sizeof.py +0 -0
  52. {devpi-server-6.9.0 → devpi-server-6.9.1}/devpi_server/vendor/_pip.py +0 -0
  53. {devpi-server-6.9.0 → devpi-server-6.9.1}/devpi_server/view_auth.py +0 -0
  54. {devpi-server-6.9.0 → devpi-server-6.9.1}/devpi_server.egg-info/SOURCES.txt +0 -0
  55. {devpi-server-6.9.0 → devpi-server-6.9.1}/devpi_server.egg-info/dependency_links.txt +0 -0
  56. {devpi-server-6.9.0 → devpi-server-6.9.1}/devpi_server.egg-info/entry_points.txt +0 -0
  57. {devpi-server-6.9.0 → devpi-server-6.9.1}/devpi_server.egg-info/not-zip-safe +0 -0
  58. {devpi-server-6.9.0 → devpi-server-6.9.1}/devpi_server.egg-info/requires.txt +0 -0
  59. {devpi-server-6.9.0 → devpi-server-6.9.1}/devpi_server.egg-info/top_level.txt +0 -0
  60. {devpi-server-6.9.0 → devpi-server-6.9.1}/pyproject.toml +0 -0
  61. {devpi-server-6.9.0 → devpi-server-6.9.1}/pytest_devpi_server/__init__.py +0 -0
  62. {devpi-server-6.9.0 → devpi-server-6.9.1}/setup.cfg +0 -0
  63. {devpi-server-6.9.0 → devpi-server-6.9.1}/test_devpi_server/__init__.py +0 -0
  64. {devpi-server-6.9.0 → devpi-server-6.9.1}/test_devpi_server/conftest.py +0 -0
  65. {devpi-server-6.9.0 → devpi-server-6.9.1}/test_devpi_server/example.py +0 -0
  66. {devpi-server-6.9.0 → devpi-server-6.9.1}/test_devpi_server/functional.py +0 -0
  67. {devpi-server-6.9.0 → devpi-server-6.9.1}/test_devpi_server/importexportdata/badindexname/dataindex.json +0 -0
  68. {devpi-server-6.9.0 → devpi-server-6.9.1}/test_devpi_server/importexportdata/badusername/dataindex.json +0 -0
  69. {devpi-server-6.9.0 → devpi-server-6.9.1}/test_devpi_server/importexportdata/basescycle/dataindex.json +0 -0
  70. {devpi-server-6.9.0 → devpi-server-6.9.1}/test_devpi_server/importexportdata/createdmodified/dataindex.json +0 -0
  71. {devpi-server-6.9.0 → devpi-server-6.9.1}/test_devpi_server/importexportdata/deletedbase/dataindex.json +0 -0
  72. {devpi-server-6.9.0 → devpi-server-6.9.1}/test_devpi_server/importexportdata/mirrordata/dataindex.json +0 -0
  73. {devpi-server-6.9.0 → devpi-server-6.9.1}/test_devpi_server/importexportdata/mirrordata/root/pypi/dddttt/0.1.dev1/dddttt-0.1.dev1.tar.gz +0 -0
  74. {devpi-server-6.9.0 → devpi-server-6.9.1}/test_devpi_server/importexportdata/modifiedpypi/dataindex.json +0 -0
  75. {devpi-server-6.9.0 → devpi-server-6.9.1}/test_devpi_server/importexportdata/nocreatedmodified/dataindex.json +0 -0
  76. {devpi-server-6.9.0 → devpi-server-6.9.1}/test_devpi_server/importexportdata/normalization/dataindex.json +0 -0
  77. {devpi-server-6.9.0 → devpi-server-6.9.1}/test_devpi_server/importexportdata/normalization/root/dev/hello.pkg/hello.pkg-1.0.tar.gz +0 -0
  78. {devpi-server-6.9.0 → devpi-server-6.9.1}/test_devpi_server/importexportdata/normalization_merge/dataindex.json +0 -0
  79. {devpi-server-6.9.0 → devpi-server-6.9.1}/test_devpi_server/importexportdata/normalization_merge/root/dev/hello-pkg/hello.pkg-1.1.tar.gz +0 -0
  80. {devpi-server-6.9.0 → devpi-server-6.9.1}/test_devpi_server/importexportdata/normalization_merge/root/dev/hello.pkg/hello.pkg-1.0.tar.gz +0 -0
  81. {devpi-server-6.9.0 → devpi-server-6.9.1}/test_devpi_server/importexportdata/norootpypi/dataindex.json +0 -0
  82. {devpi-server-6.9.0 → devpi-server-6.9.1}/test_devpi_server/importexportdata/nouser/dataindex.json +0 -0
  83. {devpi-server-6.9.0 → devpi-server-6.9.1}/test_devpi_server/importexportdata/removedindexplugin/dataindex.json +0 -0
  84. {devpi-server-6.9.0 → devpi-server-6.9.1}/test_devpi_server/importexportdata/removedindexplugin/user/dev/pkg/pkg-1.0.tar.gz +0 -0
  85. {devpi-server-6.9.0 → devpi-server-6.9.1}/test_devpi_server/importexportdata/toxresult_naming_scheme/dataindex.json +0 -0
  86. {devpi-server-6.9.0 → devpi-server-6.9.1}/test_devpi_server/importexportdata/toxresult_naming_scheme/root/dev/hello/0.9/hello-0.9.tar.gz +0 -0
  87. {devpi-server-6.9.0 → devpi-server-6.9.1}/test_devpi_server/importexportdata/toxresult_naming_scheme/root/dev/hello/sha256=ed7002b439e9ac845f22357d822bac1444730fbdb6016d3ec9432297b9ec9f73/hello-0.9.tar.gz.toxresult0 +0 -0
  88. {devpi-server-6.9.0 → devpi-server-6.9.1}/test_devpi_server/importexportdata/toxresult_upload_default/dataindex.json +0 -0
  89. {devpi-server-6.9.0 → devpi-server-6.9.1}/test_devpi_server/reqmock.py +0 -0
  90. {devpi-server-6.9.0 → devpi-server-6.9.1}/test_devpi_server/simpypi.py +0 -0
  91. {devpi-server-6.9.0 → devpi-server-6.9.1}/test_devpi_server/test_auth.py +0 -0
  92. {devpi-server-6.9.0 → devpi-server-6.9.1}/test_devpi_server/test_authcheck.py +0 -0
  93. {devpi-server-6.9.0 → devpi-server-6.9.1}/test_devpi_server/test_config.py +0 -0
  94. {devpi-server-6.9.0 → devpi-server-6.9.1}/test_devpi_server/test_conftest.py +0 -0
  95. {devpi-server-6.9.0 → devpi-server-6.9.1}/test_devpi_server/test_filestore.py +0 -0
  96. {devpi-server-6.9.0 → devpi-server-6.9.1}/test_devpi_server/test_fileutil.py +0 -0
  97. {devpi-server-6.9.0 → devpi-server-6.9.1}/test_devpi_server/test_genconfig.py +0 -0
  98. {devpi-server-6.9.0 → devpi-server-6.9.1}/test_devpi_server/test_importexport.py +0 -0
  99. {devpi-server-6.9.0 → devpi-server-6.9.1}/test_devpi_server/test_keyfs.py +0 -0
  100. {devpi-server-6.9.0 → devpi-server-6.9.1}/test_devpi_server/test_keyfs_sqlite_fs.py +0 -0
  101. {devpi-server-6.9.0 → devpi-server-6.9.1}/test_devpi_server/test_log.py +0 -0
  102. {devpi-server-6.9.0 → devpi-server-6.9.1}/test_devpi_server/test_main.py +0 -0
  103. {devpi-server-6.9.0 → devpi-server-6.9.1}/test_devpi_server/test_mirror.py +0 -0
  104. {devpi-server-6.9.0 → devpi-server-6.9.1}/test_devpi_server/test_mirror_no_project_list.py +0 -0
  105. {devpi-server-6.9.0 → devpi-server-6.9.1}/test_devpi_server/test_model.py +0 -0
  106. {devpi-server-6.9.0 → devpi-server-6.9.1}/test_devpi_server/test_mythread.py +0 -0
  107. {devpi-server-6.9.0 → devpi-server-6.9.1}/test_devpi_server/test_nginx.py +0 -0
  108. {devpi-server-6.9.0 → devpi-server-6.9.1}/test_devpi_server/test_nginx_replica.py +0 -0
  109. {devpi-server-6.9.0 → devpi-server-6.9.1}/test_devpi_server/test_permissions.py +0 -0
  110. {devpi-server-6.9.0 → devpi-server-6.9.1}/test_devpi_server/test_readonly.py +0 -0
  111. {devpi-server-6.9.0 → devpi-server-6.9.1}/test_devpi_server/test_replica.py +0 -0
  112. {devpi-server-6.9.0 → devpi-server-6.9.1}/test_devpi_server/test_replica_functional.py +0 -0
  113. {devpi-server-6.9.0 → devpi-server-6.9.1}/test_devpi_server/test_reqmock.py +0 -0
  114. {devpi-server-6.9.0 → devpi-server-6.9.1}/test_devpi_server/test_stage_customizer.py +0 -0
  115. {devpi-server-6.9.0 → devpi-server-6.9.1}/test_devpi_server/test_streaming.py +0 -0
  116. {devpi-server-6.9.0 → devpi-server-6.9.1}/test_devpi_server/test_streaming_nginx.py +0 -0
  117. {devpi-server-6.9.0 → devpi-server-6.9.1}/test_devpi_server/test_streaming_replica.py +0 -0
  118. {devpi-server-6.9.0 → devpi-server-6.9.1}/test_devpi_server/test_streaming_replica_nginx.py +0 -0
  119. {devpi-server-6.9.0 → devpi-server-6.9.1}/test_devpi_server/test_view_auth.py +0 -0
  120. {devpi-server-6.9.0 → devpi-server-6.9.1}/test_devpi_server/test_views.py +0 -0
  121. {devpi-server-6.9.0 → devpi-server-6.9.1}/test_devpi_server/test_views_patch.py +0 -0
  122. {devpi-server-6.9.0 → devpi-server-6.9.1}/test_devpi_server/test_views_push_external.py +0 -0
  123. {devpi-server-6.9.0 → devpi-server-6.9.1}/test_devpi_server/test_views_status.py +0 -0
  124. {devpi-server-6.9.0 → devpi-server-6.9.1}/tox.ini +0 -0
@@ -2,6 +2,17 @@
2
2
 
3
3
  .. towncrier release notes start
4
4
 
5
+ 6.9.1 (2023-07-02)
6
+ ==================
7
+
8
+ Bug Fixes
9
+ ---------
10
+
11
+ - Prevent error in find_pre_existing_file in case of incomplete metadata.
12
+
13
+ - Fix #980: Remove long deprecated backward compatibility for old pluggy versions to fix error with pluggy 1.1.0.
14
+
15
+
5
16
  6.9.0 (2023-05-23)
6
17
  ==================
7
18
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: devpi-server
3
- Version: 6.9.0
3
+ Version: 6.9.1
4
4
  Summary: devpi-server: reliable private and pypi.org caching server
5
5
  Home-page: https://devpi.net
6
6
  Maintainer: Florian Schulze
@@ -102,6 +102,17 @@ Changelog
102
102
 
103
103
  .. towncrier release notes start
104
104
 
105
+ 6.9.1 (2023-07-02)
106
+ ==================
107
+
108
+ Bug Fixes
109
+ ---------
110
+
111
+ - Prevent error in find_pre_existing_file in case of incomplete metadata.
112
+
113
+ - Fix #980: Remove long deprecated backward compatibility for old pluggy versions to fix error with pluggy 1.1.0.
114
+
115
+
105
116
  6.9.0 (2023-05-23)
106
117
  ==================
107
118
 
@@ -179,32 +190,3 @@ Bug Fixes
179
190
 
180
191
  - Preserve toxresult filenames during import to keep them being accessible on the same URLs after the fix for #686 in 5.2.0.
181
192
 
182
-
183
- 6.6.0 (2022-08-16)
184
- ==================
185
-
186
- Features
187
- --------
188
-
189
- - Fix #592: return dict from ``list_projects_perstage`` of mirrors where the values contain the un-normalized project name. This allows support in devpi-web 4.1.0 to index them correctly.
190
-
191
- - Check name in project list instead of fetching project page for mirrors. This improves response times and avoids leaking typos of private package names upstream.
192
-
193
- - Use ETag header if provided by mirror to reduce bandwidth usage and latency.
194
-
195
- - Prevent concurrent updates of simple links on mirrors with a short lived lock.
196
-
197
- - 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).
198
-
199
-
200
- Bug Fixes
201
- ---------
202
-
203
- - Fix #743: support PEP427 escaped wheels with local version, where the + is replaced by _.
204
-
205
- - Fix #895: store and return content of data-yanked.
206
-
207
- - Fix #908: include basic auth from ``mirror_url`` when fetching packages.
208
-
209
- - Fix #914: switch to write transaction as late as possible when streaming a file from a mirror.
210
-
@@ -0,0 +1 @@
1
+ __version__ = '6.9.1'
@@ -45,8 +45,6 @@ def strtobool(val):
45
45
 
46
46
  def get_pluginmanager(load_entrypoints=True):
47
47
  pm = PluginManager("devpiserver")
48
- # support old plugins, but emit deprecation warnings
49
- pm._implprefix = "devpiserver_"
50
48
  pm.add_hookspecs(hookspecs)
51
49
  # XXX load internal plugins here
52
50
  if load_entrypoints:
@@ -28,6 +28,10 @@ from devpi_common.types import cached_property
28
28
  absent = object()
29
29
 
30
30
 
31
+ class KeyfsTimeoutError(TimeoutError):
32
+ pass
33
+
34
+
31
35
  class MissingFileException(Exception):
32
36
  def __init__(self, relpath, serial):
33
37
  msg = "missing file '%s' at serial %s" % (relpath, serial)
@@ -761,7 +765,11 @@ class Transaction(object):
761
765
  "restarting %s transaction afresh as %s transaction",
762
766
  "write" if self.write else "read",
763
767
  "write" if write else "read")
764
- newtx = self.__class__(self.keyfs, write=write)
768
+ try:
769
+ newtx = self.__class__(self.keyfs, write=write)
770
+ except BaseException:
771
+ self.doomed = True
772
+ raise
765
773
  self.__dict__ = newtx.__dict__
766
774
 
767
775
  def doom(self):
@@ -2,6 +2,7 @@ from devpi_common.types import cached_property
2
2
  from .config import hookimpl
3
3
  from .fileutil import dumps, loads
4
4
  from .interfaces import IStorageConnection2
5
+ from .keyfs import KeyfsTimeoutError
5
6
  from .keyfs import RelpathInfo
6
7
  from .keyfs import get_relpath_at
7
8
  from .log import threadlog, thread_push_log, thread_pop_log
@@ -115,7 +116,11 @@ class BaseConnection:
115
116
  self._sqlconn.commit()
116
117
 
117
118
  def rollback(self):
118
- self._sqlconn.rollback()
119
+ try:
120
+ self._sqlconn.rollback()
121
+ except sqlite3.ProgrammingError as e:
122
+ if not e.args or 'closed database' not in e.args[0]:
123
+ raise
119
124
 
120
125
  @cached_property
121
126
  def last_changelog_serial(self):
@@ -441,7 +446,8 @@ class BaseStorage(object):
441
446
  elapsed = time.monotonic() - start_time
442
447
  if elapsed > timeout:
443
448
  # if it takes this long, something is wrong
444
- raise TimeoutError(f"Timeout after {elapsed} seconds.") from e
449
+ raise KeyfsTimeoutError(
450
+ f"Timeout after {int(elapsed)} seconds.") from e
445
451
  conn = self.Connection(sqlconn, self.basedir, self)
446
452
  if closing:
447
453
  return contextlib.closing(conn)
@@ -855,11 +855,12 @@ class FileReplicationThread:
855
855
  path = os.path.join(self.file_search_path, entry.relpath)
856
856
  if not os.path.exists(path):
857
857
  # look for file in export layout
858
- path = os.path.join(
859
- self.file_search_path,
858
+ parts = (
860
859
  entry.user, entry.index,
861
860
  entry.project, entry.version,
862
861
  entry.basename)
862
+ if all(part is not None for part in parts):
863
+ path = os.path.join(self.file_search_path, *parts)
863
864
  if not os.path.exists(path):
864
865
  threadlog.debug("path for existing file not found: %s", path)
865
866
  return
@@ -16,6 +16,7 @@ from pyramid.interfaces import IRootFactory
16
16
  from pyramid.interfaces import IRoutesMapper
17
17
  from pyramid.httpexceptions import HTTPException, HTTPFound, HTTPSuccessful
18
18
  from pyramid.httpexceptions import HTTPForbidden
19
+ from pyramid.httpexceptions import HTTPInternalServerError
19
20
  from pyramid.httpexceptions import HTTPOk
20
21
  from pyramid.httpexceptions import HTTPUnauthorized
21
22
  from pyramid.httpexceptions import exception_response
@@ -36,9 +37,11 @@ from devpi_common.request import new_requests_session
36
37
  from devpi_common.validation import normalize_name, is_valid_archive_name
37
38
 
38
39
  from .config import hookimpl
40
+ from .exceptions import lazy_format_exception_only
39
41
  from .filestore import BadGateway
40
42
  from .filestore import get_checksum_error
41
43
  from .fileutil import buffered_iterator
44
+ from .keyfs import KeyfsTimeoutError
42
45
  from .model import InvalidIndex, InvalidIndexconfig, InvalidUser, InvalidUserconfig
43
46
  from .model import ReadonlyIndex
44
47
  from .model import RemoveValue
@@ -223,7 +226,13 @@ def tween_keyfs_transaction(handler, registry):
223
226
  write = is_mutating_http_method(request.method) and not is_replica
224
227
  with keyfs.transaction(write=write) as tx:
225
228
  threadlog.debug("in-transaction %s", tx.at_serial)
226
- response = handler(request)
229
+ try:
230
+ response = handler(request)
231
+ except KeyfsTimeoutError as e:
232
+ msg = lazy_format_exception_only(e)
233
+ threadlog.error(
234
+ "Keyfs timeout: %s", msg)
235
+ return HTTPInternalServerError(msg)
227
236
  set_header_devpi_serial(response, tx)
228
237
  return response
229
238
  return request_tx_handler
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: devpi-server
3
- Version: 6.9.0
3
+ Version: 6.9.1
4
4
  Summary: devpi-server: reliable private and pypi.org caching server
5
5
  Home-page: https://devpi.net
6
6
  Maintainer: Florian Schulze
@@ -102,6 +102,17 @@ Changelog
102
102
 
103
103
  .. towncrier release notes start
104
104
 
105
+ 6.9.1 (2023-07-02)
106
+ ==================
107
+
108
+ Bug Fixes
109
+ ---------
110
+
111
+ - Prevent error in find_pre_existing_file in case of incomplete metadata.
112
+
113
+ - Fix #980: Remove long deprecated backward compatibility for old pluggy versions to fix error with pluggy 1.1.0.
114
+
115
+
105
116
  6.9.0 (2023-05-23)
106
117
  ==================
107
118
 
@@ -179,32 +190,3 @@ Bug Fixes
179
190
 
180
191
  - Preserve toxresult filenames during import to keep them being accessible on the same URLs after the fix for #686 in 5.2.0.
181
192
 
182
-
183
- 6.6.0 (2022-08-16)
184
- ==================
185
-
186
- Features
187
- --------
188
-
189
- - Fix #592: return dict from ``list_projects_perstage`` of mirrors where the values contain the un-normalized project name. This allows support in devpi-web 4.1.0 to index them correctly.
190
-
191
- - Check name in project list instead of fetching project page for mirrors. This improves response times and avoids leaking typos of private package names upstream.
192
-
193
- - Use ETag header if provided by mirror to reduce bandwidth usage and latency.
194
-
195
- - Prevent concurrent updates of simple links on mirrors with a short lived lock.
196
-
197
- - 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).
198
-
199
-
200
- Bug Fixes
201
- ---------
202
-
203
- - Fix #743: support PEP427 escaped wheels with local version, where the + is replaced by _.
204
-
205
- - Fix #895: store and return content of data-yanked.
206
-
207
- - Fix #908: include basic auth from ``mirror_url`` when fetching packages.
208
-
209
- - Fix #914: switch to write transaction as late as possible when streaming a file from a mirror.
210
-
@@ -57,7 +57,7 @@ if __name__ == "__main__":
57
57
  'Documentation': 'https://doc.devpi.net',
58
58
  'Source Code': 'https://github.com/devpi/devpi'
59
59
  },
60
- version='6.9.0',
60
+ version='6.9.1',
61
61
  maintainer="Florian Schulze",
62
62
  maintainer_email="mail@pyfidelity.com",
63
63
  packages=[
@@ -1 +0,0 @@
1
- __version__ = '6.9.0'
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes