You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
amcrest2mqtt/pyproject.toml

178 lines
3.1 KiB
TOML

[build-system]
requires = ["setuptools>=68", "setuptools-scm>=8", "wheel"]
build-backend = "setuptools.build_meta"
[project]
name = "amcrest2mqtt"
dynamic = ["version"]
license = "MIT"
license-files = ["LICENSE"]
requires-python = ">=3.14"
dependencies = [
"deepmerge==2.0",
"paho-mqtt>=2.1.0",
"pyyaml>=6.0.3",
"requests>=2.32.5",
"pathlib>=1.0.1",
"amcrest>=1.9.9",
"json-logging-graystorm",
"mqtt-helper-graystorm",
]
[project.scripts]
amcrest2mqtt = "amcrest2mqtt.app:main"
[project.optional-dependencies]
dev = [
# linting/formating
"black>=24.10.0",
"ruff>=0.6.9",
# testing/coverage
"pytest>=8.4.2",
"pytest-asyncio>=1.2.0",
"pytest-cov>=7.0.0",
# misc
"jsonschema>=4.25.1",
"packaging>=25.0",
"attrs>=25.4.0",
]
[tool.setuptools]
package-dir = {"" = "src"}
[tool.setuptools.package-data]
qtt = ["VERSION"]
[tool.setuptools.packages.find]
where = ["src"]
include = ["amcrest2mqtt*"]
[tool.setuptools_scm]
[tool.ruff]
# Exclude a variety of commonly ignored directories.
exclude = [
".bzr",
".direnv",
".eggs",
".git",
".git-rewrite",
".hg",
".ipynb_checkpoints",
".mypy_cache",
".nox",
".pants.d",
".pyenv",
".pytest_cache",
".pytype",
".ruff_cache",
".svn",
".tox",
".venv",
".vscode",
"__pypackages__",
"_build",
"buck-out",
"build",
"dist",
"node_modules",
"site-packages",
"venv",
]
# Same as Black.
line-length = 160
indent-width = 4
# Assume Python 3.13
target-version = "py313"
[tool.pyright]
include = [ "src" ]
extraPaths = [ "src" ]
venvPath = "./.venv"
typeCheckingMode = "basic"
venv = ".venv"
[tool.pytest.ini_options]
asyncio_mode = "auto"
addopts = "--quiet"
testpaths = "tests"
pythonpath = "src"
[tool.coverage.run]
# .coveragerc
branch = true
source = [
"amcrest_api",
"qtt",
"util",
]
omit = [
"tests/*",
"*/__init__.py",
"*/venv/*",
"*/.venv/*",
"*/site-packages/*"
]
[tool.coverage.report]
fail_under = 75
show_missing = true
skip_covered = false
precision = 1
exclude_lines = [
"pragma: no cover"
]
[tool.black]
line-length = 160
target-version = ["py313"]
extend-exclude = '''
/(
\.venv
|\.ruff_cache
|\.pytest_cache
|node_modules
|dist
|build
)/
'''
[tool.uv.sources]
json-logging-graystorm = { git = "https://github.com/weirdtangent/json_logging.git", branch = "main" }
mqtt-helper-graystorm = { git = "https://github.com/weirdtangent/mqtt-helper.git", branch = "main" }
[dependency-groups]
dev = [
"black>=25.9.0",
"mypy>=1.18.2",
"pytest>=8.4.2",
"ruff>=0.14.1",
"types-pyyaml>=6.0.12.20250915",
]
[tool.mypy]
python_version = "3.12"
ignore_missing_imports = true
check_untyped_defs = true
disallow_incomplete_defs = true
disallow_untyped_defs = true
warn_unused_ignores = true
warn_return_any = true
warn_redundant_casts = true
warn_unreachable = true
strict_equality = true
allow_untyped_globals = false
allow_redefinition = false
# Temporarily quiet noisy files or folders
[[tool.mypy.overrides]]
module = [
"aiohttp.*",
"paho.*",
]
ignore_missing_imports = true