-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpyproject.toml
More file actions
132 lines (117 loc) · 4.31 KB
/
Copy pathpyproject.toml
File metadata and controls
132 lines (117 loc) · 4.31 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
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
[project]
name = "majordom-zigbee"
version = "0.1.6"
description = "Zigbee integration for MajorDom — bridges Zigbee devices into the MajorDom language."
authors = [{ name = "Mark Parker", email = "mark@parker-programs.com" }]
readme = "README.md"
# AGPL-3.0 is required, not chosen: this package is effectively a wrapper around the GPL-3.0
# zigpy / zigpy-znp / bellows stack, so the combined work must carry a compatible copyleft
# license. Commercial (non-AGPL) terms are available separately — see the partnership link.
license = "AGPL-3.0-or-later"
license-files = ["LICENSE"]
keywords = ["majordom", "zigbee", "zigpy", "smart-home", "home-automation", "iot", "integration", "coordinator", "802-15-4"]
classifiers = [
"Development Status :: 4 - Beta",
"Intended Audience :: Developers",
"Topic :: Home Automation",
"Programming Language :: Python :: 3",
"Operating System :: POSIX :: Linux",
]
requires-python = ">=3.12,<3.14"
dependencies = [
"majordom-integration-sdk (>=0.1.6,<1.0)",
"zigpy (>=2.0.0,<3.0.0)",
"zigpy-znp (>=1.1.0,<2.0.0)",
"bellows (>=0.49.2,<0.50.0)",
# zha-quirks (zhaquirks) applies per-device quirks at the zigpy layer: it decodes
# manufacturer clusters into named/typed attributes and carries v2 entity metadata.
# Requires zigpy>=2.0, which is why the stack was bumped off the 0.88 line.
"zha-quirks (>=2.1.1,<3.0.0)",
]
[project.optional-dependencies]
# Extra coordinator radios. bellows (Silicon Labs EZSP) and zigpy-znp (TI Z-Stack) ship by
# default; install the extra matching your dongle to switch backends with no source change, e.g.
# pip install 'majordom-zigbee[deconz]'
# The backend is then picked by MAJORDOM_ZIGBEE_RADIO / auto-probe (see majordom_zigbee.radio).
deconz = ["zigpy-deconz (>=0.25.5,<1.0.0)"] # dresden elektronik ConBee/RaspBee
xbee = ["zigpy-xbee (>=0.21.1,<1.0.0)"] # Digi XBee
zigate = ["zigpy-zigate (>=0.14.0,<1.0.0)"] # ZiGate
all-radios = [
"zigpy-deconz (>=0.25.5,<1.0.0)",
"zigpy-xbee (>=0.21.1,<1.0.0)",
"zigpy-zigate (>=0.14.0,<1.0.0)",
]
[project.urls]
Homepage = "https://majordom.io"
Documentation = "https://docs.majordom.io/device-integration"
Repository = "https://github.com/MajorDom-Systems/integration-zigbee"
Issues = "https://github.com/MajorDom-Systems/integration-zigbee/issues"
"Commercial licensing" = "https://parker-industries.org/partnership"
[dependency-groups]
dev = [
"poethepoet (>=0.36.0,<1.0.0)",
"ty", "ruff", "pip-audit",
"pytest", "pytest-asyncio", "pytest-cov", "pytest-timeout", "pytest-repeat",
"pytest-benchmark", "pytest-profiling", "pytest-resource-usage", "coverage",
"pympler", "psutil", "faker",
]
[build-system]
requires = ["poetry-core>=2.0.0,<3.0.0"]
build-backend = "poetry.core.masonry.api"
[tool.poetry]
requires-poetry = ">=2.0"
packages = [{ include = "majordom_zigbee" }]
[tool.pytest.ini_options]
asyncio_mode = "auto"
pythonpath = ["."]
filterwarnings = ["once"]
[tool.coverage.run]
omit = ["tests/*"]
[tool.ruff]
line-length = 120
indent-width = 4
[tool.ruff.lint]
select = ["E", "F", "UP", "B", "SIM", "I"]
fixable = ["ALL"]
[tool.ruff.format]
quote-style = "double"
indent-style = "space"
line-ending = "auto"
docstring-code-format = true
[tool.ruff.lint.per-file-ignores]
"__init__.py" = ["F401"]
"tests/*" = ["E402"]
# The zigpy ControllerApplication test double intentionally uses loose signatures — scoped to
# conftest.py (the only test file that needs it) so the rest of the suite stays fully checked.
[[tool.ty.overrides]]
include = ["tests/conftest.py"]
[tool.ty.overrides.rules]
invalid-method-override = "ignore"
invalid-assignment = "ignore"
invalid-argument-type = "ignore"
[tool.poe.tasks.install]
shell = """
poetry install
echo '#!/bin/sh\npoetry run poe check' > .git/hooks/pre-commit
chmod +x .git/hooks/pre-commit
echo "Pre-commit hook installed."
"""
[tool.poe.tasks.check]
shell = """
code=0
echo "\nRunning ruff lint:"
poetry run ruff check --fix || code=1
echo "\nRunning ruff format:"
poetry run ruff format || code=1
echo "\nRunning ty:"
poetry run ty check || code=1
echo "\nRunning pytest:"
poetry run pytest --cov=majordom_zigbee --cov-report=xml || code=1
echo "\nRunning poetry build:"
poetry build || code=1
echo "\nRunning poetry check:"
poetry check || code=1
${ci:+git diff --exit-code}
exit $code
"""
args = [{ name = "ci", type = "boolean" }]