Marco Ricci commited on 2025-06-09 20:34:03
Zeige 1 geänderte Dateien mit 20 Einfügungen und 0 Löschungen.
Pin the versions of testing dependencies to ensure easy installability. Specifically, pin `cryptography` on PyPy to versions that support wheels, and pin `hypothesis` on Python 3.9 (CPython and PyPy) to versions that correctly support the old LL(1) parser. Because `cryptography` is an optional dependency, we introduce a new, matching extra for the `cryptography` version pins, with an appropriate name. As the extras are getting a bit confusing, especially with regard to one another, we add a one-line synopsis to the beginning of each extra's commentary.
... | ... |
@@ -42,6 +42,8 @@ dependencies = [ |
42 | 42 |
|
43 | 43 |
[project.optional-dependencies] |
44 | 44 |
dev = [ |
45 |
+ # dev - developers' setup |
|
46 |
+ # |
|
45 | 47 |
# Development uses the hatch build system, to isolate all tools in |
46 | 48 |
# their own virtual environment... |
47 | 49 |
"hatch >= 1.10", |
... | ... |
@@ -60,8 +62,13 @@ dev = [ |
60 | 62 |
"pytest >= 8.1", |
61 | 63 |
"pytest-randomly >= 3.15", |
62 | 64 |
"pytest-xdist[psutil] >= 3.6.0", |
65 |
+ # Versions 6.130.13 through 6.135.1 of `hypothesis` use syntax only |
|
66 |
+ # available on Python 3.10 and later: `with (x as y, a as b)` |
|
67 |
+ 'hypothesis != 6.130.13, != 6.131.*, != 6.132.*, != 6.133.*, != 6.134.*, != 6.135.0, != 6.135.1 ; python_version < "3.10"', |
|
63 | 68 |
] |
64 | 69 |
export = [ |
70 |
+ # export - additional dependencies for `derivepassphrase export` |
|
71 |
+ # |
|
65 | 72 |
# The vault configuration exporter relies on cryptography. |
66 | 73 |
# Version 38 was the first to include the `algorithms.AES256` |
67 | 74 |
# interface, instead of only the `algorithms.AES` interface, but |
... | ... |
@@ -69,6 +76,17 @@ export = [ |
69 | 76 |
# version we tested on. |
70 | 77 |
"cryptography >= 42.0.0", |
71 | 78 |
] |
79 |
+export-dev-wheels = [ |
|
80 |
+ # export-dev-wheels - wheel requirements for "export" in the "dev" |
|
81 |
+ # setup |
|
82 |
+ # |
|
83 |
+ # `cryptography` 44.0.0 does not publish wheels for PyPy 3.9 |
|
84 |
+ # anymore. |
|
85 |
+ 'cryptography < 44 ; python_version < "3.10" and platform_python_implementation == "PyPy"', |
|
86 |
+ # `cryptography` 44.0.1 is the first version to publish wheels for |
|
87 |
+ # PyPy 3.11. |
|
88 |
+ 'cryptography > 44.0.1 ; python_version >= "3.11" and platform_python_implementation == "PyPy"', |
|
89 |
+] |
|
72 | 90 |
|
73 | 91 |
[project.scripts] |
74 | 92 |
derivepassphrase = "derivepassphrase.cli:derivepassphrase" |
... | ... |
@@ -289,6 +307,7 @@ dependencies = [ |
289 | 307 |
"pytest >= 8.1", |
290 | 308 |
"pytest-randomly >= 3.15", |
291 | 309 |
"pytest-xdist[psutil] >= 3.6.0", |
310 |
+ 'hypothesis != 6.130.13, != 6.131.*, != 6.132.*, != 6.133.*, != 6.134.*, != 6.135.0, != 6.135.1 ; python_version < "3.10"', |
|
292 | 311 |
] |
293 | 312 |
matrix-name-format = '{variable}_{value}' |
294 | 313 |
|
... | ... |
@@ -305,6 +324,7 @@ parser-version = ["LL1"] |
305 | 324 |
[tool.hatch.envs.hatch-test.overrides] |
306 | 325 |
matrix.cryptography.features = [ |
307 | 326 |
{ value = "export", if = ["yes"] }, |
327 |
+ { value = "export-dev-wheels", if = ["yes"] }, |
|
308 | 328 |
] |
309 | 329 |
matrix.parser-version.env-vars = [ |
310 | 330 |
{ key = "PYTHONOLDPARSER", value = "1", if = ["LL1"] }, |
311 | 331 |