-
Notifications
You must be signed in to change notification settings - Fork 80
/
pyproject.toml
127 lines (113 loc) · 3.49 KB
/
pyproject.toml
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
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
[tool.poetry]
name = "blueos-docker"
version = "0.0.1"
description = "Blue Robotics BlueOS computer project"
authors = ["Software Department <[email protected]>"]
license = "MIT"
package-mode = false
[tool.setuptools]
py-modules = []
[tool.poetry.dependencies]
python = "~3.11"
pytest-xdist = "^3.3.1"
toml = "^0.10.2"
[tool.poetry.dev-dependencies]
black = "22.3.0"
isort = "5.8"
pylint = "3.0"
mypy = "1.4.1"
pylint-pydantic = "0.3.2"
pytest = "7.4.2"
coverage = "7.5.1"
pytest-cov = "4.1.0"
pydantic = "1.10.12"
docker = "6.1.3"
aiodocker = "0.21.0"
aiohttp = "3.9.5"
pylint-plugin-utils = "0.8.2"
pykson = {git = "https://github.com/patrickelectric/pykson.git", rev = "fcab71c1eadd6c6b730ca21a5eecb3bf9c374507"}
appdirs = "1.4.4"
loguru = "0.5.3"
nmeasim = "1.1.1.0"
pynmea2 = "1.18.0"
pyfakefs = "5.2.4"
validators = "0.18.2"
pytest-asyncio = "0.14.0"
pytest-mock = "3.10.0"
pytest-timeout = "2.1.0"
ruff = "0.0.288"
pyelftools = "0.30"
types-requests = "2.31.0.2"
types-tabulate = "0.9.0.3"
[build-system]
requires = ["poetry-core>=1.0.0"]
build-backend = "poetry.core.masonry.api"
[tool.pytest]
addopts = "--cov-report html --cov-report term"
[tool.pytest.ini_options]
markers = [
"timeout",
]
[tool.coverage.run]
branch = true
omit = [
"*/setup.py",
"*/__init__.py",
]
[tool.coverage.report]
fail_under = 75
[tool.black]
line-length = 120
[tool.isort]
profile = "black"
[tool.mypy]
allow_untyped_decorators = true
disallow_subclassing_any = false
ignore_missing_imports = true
strict = true
warn_unreachable = true
warn_unused_ignores = false
plugins = "pydantic.mypy"
disable_error_code = [
"call-arg",
]
[tool.ruff]
ignore = [
"A003", # BuiltinAttributeShadowing: Unnecessary restriction (not a source of confusion)
"E501", # LineTooLong: Let black take care of
"F401", # UnusedImport: We are using pylint 'ignore' comments for it
"F821", # UndefinedName: We are using pylint 'ignore' comments for it
"F841", # UnusedVariable: We are using pylint 'ignore' comments for it
"E402", # ModuleImportNotAtTopOfFile: noqa doesn't work and this is required at some places
]
[tool.pylint]
[tool.pylint.master]
load-plugins = "pylint_pydantic"
enable = "all"
disable = [
"attribute-defined-outside-init",
"broad-except",
"duplicate-code",
"import-error",
"inconsistent-return-statements",
"invalid-name",
"line-too-long", # We already have this in black.
"locally-disabled", # We know what we are doing, necessary to load plugins in runtime
"logging-fstring-interpolation", # We want a good-to-read logging interface
"missing-class-docstring",
"missing-function-docstring",
"missing-module-docstring",
"no-member", # Some members are created in runtime, pylint fails to detect such cases
"no-name-in-module", # Names can be generated in runtime
"protected-access", # Necessary for internal tests
"suppressed-message",
"too-few-public-methods", # We know what kind of architecture we want
"too-many-public-methods", # Wrappers will have multiple public methods
"use-implicit-booleaness-not-comparison-to-zero",
"use-implicit-booleaness-not-comparison-to-string",
"useless-super-delegation", # Fails to check it properly
"wildcard-import", # Necessary to locate installed plugins
"wrong-import-position",
]
[tool.pylint.miscellaneous]
notes = [ "FIXME" ] # TODO is removed for internal development