@@ -39,14 +39,18 @@ dependencies = [
3939
4040[project .optional-dependencies ]
4141pydantic = [
42- " pydantic>=2.0,<3.0; python_version < '3.14'" ,
43- # pydantic-core ships no cp314 wheel before pydantic 2.12.
42+ # pydantic-core ships no cp312 wheel before pydantic 2.1, no cp313 wheel before 2.8.1 and no
43+ # cp314 wheel before 2.12.
44+ " pydantic>=2.0,<3.0; python_version < '3.12'" ,
45+ " pydantic>=2.1,<3.0; python_version == '3.12'" ,
46+ " pydantic>=2.8.1,<3.0; python_version == '3.13'" ,
4447 " pydantic>=2.12,<3.0; python_version >= '3.14'" ,
4548]
4649msgspec = [
4750 # 0.18.5 is the first release whose can_decode agrees with decode on Annotated types;
48- # 0.20 is the first with a cp314 wheel.
49- " msgspec>=0.18.5; python_version < '3.14'" ,
51+ # 0.19 is the first with a cp313 wheel and 0.20 the first with a cp314 one.
52+ " msgspec>=0.18.5; python_version < '3.13'" ,
53+ " msgspec>=0.19; python_version == '3.13'" ,
5054 " msgspec>=0.20; python_version >= '3.14'" ,
5155]
5256otel = [" opentelemetry-api>=1.20" ]
@@ -68,13 +72,14 @@ module-name = "httpware"
6872module-root = " src"
6973
7074[dependency-groups ]
75+ # Floored so `uv sync --resolution lowest-direct` resolves a usable harness, not each name's first release.
7176dev = [
72- " pytest" ,
73- " pytest-cov" ,
74- " pytest-asyncio" ,
75- " pytest-repeat" ,
76- " pytest-benchmark" ,
77- " hypothesis" ,
77+ " pytest>=8 " ,
78+ " pytest-cov>=5 " ,
79+ " pytest-asyncio>=0.24 " ,
80+ " pytest-repeat>=0.9 " ,
81+ " pytest-benchmark>=4 " ,
82+ " hypothesis>=6.20 " ,
7883]
7984lint = [
8085 " ruff" ,
0 commit comments