-
Notifications
You must be signed in to change notification settings - Fork 7
Expand file tree
/
Copy pathpyproject.toml
More file actions
110 lines (92 loc) · 2.78 KB
/
Copy pathpyproject.toml
File metadata and controls
110 lines (92 loc) · 2.78 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
100
101
102
103
104
105
106
107
108
109
110
[build-system]
requires = [
"hatchling",
]
build-backend = "hatchling.build"
[project]
name = "hostfactory"
description = "Symphony k8s deployment tools"
readme = "README.md"
requires-python = "<= 3.11.9, >=3.11"
# dynamic = ["version"]
version = "1.0.0"
dependencies = [
"click>=8",
"kubernetes",
"boto3",
"jinja2",
"typing-extensions",
"inotify",
"hatchling",
"rich",
"wrapt",
"pydantic",
]
[project.optional-dependencies]
# Specify test-only dependencies here.
testing = [
"PyYAML",
"coverage",
"pytest-cov",
"pytest",
]
documentation = [
"sphinx_material",
"importlib_metadata"
]
[project.scripts]
hostfactory = "hostfactory.cli.hf:run"
hostfactory-admin = "hostfactory.cli.hfadmin:run"
[tool.hatch.metadata]
allow-direct-references = true
[tool.hatch.build.targets.sdist]
exclude = ["/*venv"]
[tool.pytest.ini_options]
addopts = "--cov src/hostfactory --cov-report term-missing --verbose --cov-fail-under 40"
norecursedirs = ["dist", "build", ".tox", "relvenv"]
testpaths = ["src/hostfactory/tests/unit","src/hostfactory/test/regression"]
markers = [
"unit: testing with no external dependencies",
"regression: expects the pr instance to be up"]
[tool.coverage.run]
branch = true
omit = ["src/hostfactory/tests/*"]
[tool.coverage.paths]
source = [
"src/hostfactory/",
"*/site-packages/",
]
[tool.coverage.report]
# Regexes for lines to exclude from consideration
exclude_also = [
# Don't complain about missing debug-only code:
"def __repr__",
"if self\\.debug",
# Don't complain if tests don't hit defensive assertion code:
"raise AssertionError",
"raise NotImplementedError",
# Don't complain if non-runnable code isn't run:
"if 0:",
"if __name__ == .__main__.:",
# Don't complain about abstract methods, they aren't run:
"@(abc\\.)?abstractmethod",
]
[tool.mypy]
# If we ever refactor, we need to deal with this "no_implicit_optional"
no_implicit_optional = false
no_namespace_packages = true
warn_return_any = true
# Remove "import-untyped" when installing new packages in case it has a type hints package, remove the rest as we refactor.
disable_error_code = ["call-arg", "attr-defined", "arg-type", "valid-type", "import-untyped", "union-attr", "assignment", "no-any-return", "return-value", "import-not-found"]
[tool.uv]
[tool.uv.sources]
[tool.typos]
# The signer API contains certificate data and appears to confuse the spellchecker
files.extend-exclude = ["*.json"]
[tool.typos.default.extend-words]
# $nin is a mongodb query [not in],
# requestor is valid as it is in reference to a technical interface [https://english.stackexchange.com/questions/29254/whats-the-difference-between-requester-and-requestor]
requestor = "requestor"
nin = "nin"
[tool.ruff]
target-version = "py311"