Repository navigation
Expand file tree
/
Copy pathpyproject.toml
More file actions
99 lines (87 loc) · 3.23 KB
/
Copy pathpyproject.toml
File metadata and controls
99 lines (87 loc) · 3.23 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
[project]
name = "easyssf-python"
version = "0.8.0.dev0"
description = "Workspace root of easyssf for Python: not published, see the packages"
requires-python = ">=3.11"
license = "Apache-2.0"
dependencies = [
"easyssf-core",
"easyssf-receiver",
"easyssf-test",
"easyssf-receiver-fastapi",
"easyssf-conformance",
"example-fastapi-resource-server",
]
[tool.uv]
package = false
[tool.uv.workspace]
members = [
"easyssf-core",
"easyssf-receiver",
"easyssf-test",
"easyssf-receiver-fastapi",
"conformance",
"examples/fastapi/resource-server",
]
[tool.uv.sources]
easyssf-core = { workspace = true }
easyssf-receiver = { workspace = true }
easyssf-test = { workspace = true }
easyssf-receiver-fastapi = { workspace = true }
easyssf-conformance = { workspace = true }
example-fastapi-resource-server = { workspace = true }
[dependency-groups]
dev = [
"pytest>=9,<10",
"pytest-asyncio>=1.4,<2",
"pytest-timeout>=2.3",
"ruff>=0.17",
"mypy>=2.4",
]
[tool.pytest.ini_options]
testpaths = ["easyssf-core/tests", "easyssf-receiver/tests", "easyssf-test/tests", "easyssf-receiver-fastapi/tests", "conformance/tests", "examples/fastapi/resource-server/tests"]
addopts = "--import-mode=importlib"
asyncio_mode = "auto"
asyncio_default_fixture_loop_scope = "function"
timeout = 120
filterwarnings = [
"error::DeprecationWarning:easyssf.*",
"ignore:EdDSA is deprecated:joserfc.errors.SecurityWarning",
"ignore:Key size should be:joserfc.errors.SecurityWarning",
]
[tool.ruff]
line-length = 120
target-version = "py311"
src = ["easyssf-core/src", "easyssf-receiver/src", "easyssf-test/src", "easyssf-receiver-fastapi/src", "conformance/src", "examples/fastapi/resource-server/src"]
[tool.ruff.lint]
select = ["E", "F", "W", "I", "UP", "B", "SIM", "RUF", "ASYNC", "S", "N", "PL", "D"]
ignore = [
"D100", "D104", "D105", "D107", # module, package, magic method and __init__ docstrings
"D203", "D213", # one convention: D211 and D212
"D200", "D205", "D209", "D400", "D401", "D415", # a summary may wrap over lines, as in the Go port
"PLR0913", "PLR0912", "PLR0915", "PLR2004", "PLR0911", # protocol code is branchy
"S101", # asserts in tests
"RUF012",
"PLC0415", # imports inside functions keep optional dependencies optional
"ASYNC109", # eventually(timeout=) is the name the other ports use
]
[tool.ruff.lint.per-file-ignores]
"*/tests/*" = ["D", "S", "PLR", "ASYNC", "SIM117", "E501"]
"conformance/**" = ["S"]
"examples/**" = ["S"]
[tool.ruff.lint.isort]
# easyssf is a namespace package: without this, ruff takes "fastapi" of easyssf/fastapi for the
# first-party package and sorts the framework's imports with ours
known-third-party = ["fastapi", "starlette"]
[tool.ruff.lint.pydocstyle]
convention = "google"
[tool.mypy]
python_version = "3.11"
strict = true
mypy_path = "easyssf-core/src:easyssf-receiver/src:easyssf-test/src:easyssf-receiver-fastapi/src:conformance/src:examples/fastapi/resource-server/src"
namespace_packages = true
explicit_package_bases = true
warn_unreachable = true
[[tool.mypy.overrides]]
module = ["testcontainers.*", "docker.*"]
ignore_missing_imports = true