-
Notifications
You must be signed in to change notification settings - Fork 24
/
Copy pathpyproject.toml
156 lines (141 loc) · 5.03 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
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
[tool.poetry]
name = "hier-config"
version = "3.2.2"
description = "A network configuration query and comparison library, used to build remediation configurations."
packages = [
{ include="hier_config", from="."},
]
authors = [
"Andrew Edwards <[email protected]>",
"James Williams <[email protected]",
"Jan Brooks <[email protected]"
]
license = "MIT"
classifiers = [
"Development Status :: 5 - Production/Stable",
"Intended Audience :: Developers",
"Intended Audience :: Information Technology",
"Intended Audience :: System Administrators",
"Intended Audience :: Telecommunications Industry",
"License :: OSI Approved :: MIT License",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Natural Language :: English",
"Topic :: Software Development :: Libraries :: Python Modules",
"Topic :: System :: Networking",
]
[tool.poetry.dependencies]
python = ">=3.9.0,<4.0"
pydantic = "^2.9"
[tool.poetry.group.dev.dependencies]
flynt = "*"
mkdocs = "*"
mkdocs-include-markdown-plugin = "*"
mypy = "*"
pylint = "*"
pylint-pydantic = "*"
pyright = "*"
pytest = "*"
pytest-cov = "*"
pytest-profiling = "*"
pytest-runner = "*"
pytest-xdist = "*"
ruff = "*"
typer = "*"
types-pyyaml = "*"
yamllint = "*"
[build-system]
requires = ["poetry-core>=1.0.0"]
build-backend = "poetry.core.masonry.api"
[tool.pyright]
typeCheckingMode = "strict"
[tool.pylint.message_control]
load-plugins = [
"pylint.extensions.bad_builtin",
"pylint.extensions.broad_try_clause",
"pylint.extensions.check_elif",
"pylint.extensions.comparison_placement",
"pylint.extensions.confusing_elif",
"pylint.extensions.consider_ternary_expression",
"pylint.extensions.dict_init_mutate",
"pylint.extensions.dunder",
"pylint.extensions.eq_without_hash",
"pylint.extensions.for_any_all",
"pylint.extensions.overlapping_exceptions",
"pylint.extensions.overlapping_exceptions",
"pylint.extensions.redefined_loop_name",
"pylint.extensions.set_membership",
"pylint.extensions.typing",
"pylint_pydantic",
]
disable = [
"consider-alternative-union-syntax",
"duplicate-code", # Enable this at some point in the future
"fixme", # Covered by ruff FIX002
"import-outside-toplevel", # Covered by ruff PLC0415
"line-too-long", # Whatever ruff format determines the line should look like is fine
"missing-class-docstring",
"missing-function-docstring",
"missing-module-docstring",
"protected-access", # Covered by ruff SLF001
"redefined-loop-name", # Covered by ruff PLW2901
"too-many-arguments", # Covered by ruff PLR0913
"too-many-return-statements", # Covered by ruff PLR0911
"too-many-locals", # Coverred by ruff PLR0914
"too-many-public-methods", # Coverred by ruff PLR0904
]
[tool.mypy]
strict = true
pretty = true
show_column_numbers = true
show_error_codes = true
show_error_context = true
warn_unreachable = true
plugins = [
"pydantic.mypy"
]
[tool.ruff]
line-length = 88
target-version = "py39"
[tool.ruff.format]
docstring-code-format = true
[tool.ruff.lint]
select = ["ALL"]
preview = true
ignore = [
# The below checks we might never enable
"B019", # using lru_cache can cause memory leaks
"COM812", # DO NOT REMOVE: conflicts with ruff formater
"CPY001", # Missing copyright notice at top of file
"D213", # DO NOT REMOVE: multi-line-summary-second-line is incompatible with D212(multi-line-summary-first-line)
"E501", # line too long
"EXE002", # DO NOT REMOVE: The file is executable but no shebang is present
"ISC001", # DO NOT REMOVE: The following rule may cause conflicts when used with the formatter
"PLR2004", # Magic value used in comparison
# The below checks should eventually be enabled
"D100", # Missing docstring in public module
"D101", # Missing docstring in public class
"D102", # Missing docstring in public method
"D103", # Missing docstring in public function
"D104", # Missing docstring in public package
"D105", # Missing docstring in magic method
"D107", # Missing docstring in `__init__`
"D200", # One-line docstring should fit on one line
"D203", # 1 blank line required before class docstring - Incompatible with D211
"D205", # 1 blank line required between summary line and description
"D401", # First line of docstring should be in imperative mood
"DOC201", # `return` is not documented in docstring
"DOC402", # `yield` is not documented in docstring
"DOC501", # Raised exception missing from docstring
# These can be re-enabled once we deprecate Python 3.9
"FA100", # future-rewritable-type-annotation
"UP007", # non-pep604-annotation
"UP045", # Use `X | None` for type annotations
]
[tool.ruff.lint.flake8-pytest-style]
parametrize-values-type = "tuple"
[tool.ruff.lint.per-file-ignores]
"**/tests/*" = ["PLC2701", "S101"]