appdaemon/pyproject.toml

151 lines
3.9 KiB
TOML

[project]
name = "appdaemon"
description="Apps for the Home Assistant home automation package."
readme = "README.md"
authors = [
{name = "Andrew I Cockburn", email = "appdaemon@acockburn.com"},
]
dynamic = ["version"] # The verison is computed dynamically. See `tool.setuptools.dynamic` section below.
license= { file = "LICENSE.md" }
requires-python = ">=3.10"
keywords=[ "appdaemon", "home", "automation" ]
dependencies = [
'importlib-metadata; python_version<"3.8"',
'aiohttp >= 3.9.0,< 3.12.0',
'aiohttp_jinja2 >= 1.5.1,< 1.7.0',
'astral ~= 3.2',
'bcrypt >= 4.0.1,< 4.3.0',
'deepdiff == 8.2.0',
'feedparser ~= 6.0.10',
'iso8601 >= 1.1,< 2.2',
'paho-mqtt >= 1.6.1,< 2.2.0',
'pid ~= 3.0.4',
'python-dateutil >= 2.8.2,< 2.10.0',
'python-socketio >= 5.5,< 5.12',
'pytz >= 2022.7.1,< 2025.2.0',
'pyyaml ~= 6.0.1',
'requests >= 2.28.2,< 2.33.0',
'sockjs >= 0.11,< 0.14',
'uvloop==0.21.0; sys_platform != "win32"',
'tomli==2.2.1',
'tomli_w >= 1.0,< 1.3'
]
classifiers= [
"Development Status :: 5 - Production/Stable",
"Intended Audience :: Developers",
"License :: OSI Approved :: Apache Software License",
"Natural Language :: English",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Topic :: Home Automation",
]
[project.urls]
documentation = "https://appdaemon.readthedocs.io"
repository = "https://github.com/AppDaemon"
changelog = "https://github.com/AppDaemon/appdaemon/blob/master/docs/HISTORY.rst"
# Declare development dependencies as optional
[project.optional-dependencies]
dev = [
"pip-tools >= 6.12.3,< 7.5.0",
"build >= 0.10,< 1.3",
"flake8 ~= 7.1.1",
"black >= 23.1,< 25.2",
'pre-commit >= 3.1.1,< 3.9.0; python_version>"3.7"', # pre-commit does not support Python < 3.8
"pytest >= 7.2.1,< 8.4.0",
"ruff>= 0.0.261,< 0.7.0"
]
# Dependencies required to build the documentation using sphinx
doc = [
"sphinx-autobuild >= 2021.3.14,< 2024.10.0",
"sphinx-rtd-theme == 3.0.2",
"pygments >= 2.14,< 2.20",
"myst-parser == 4.0.0",
]
# Define the main CLI script
[project.scripts]
appdaemon = "appdaemon.__main__:main"
# Use setuptools as the build system
[build-system]
requires = ["setuptools >= 61.0.0"]
build-backend = "setuptools.build_meta"
# Tell setuptools how to find the package source files
# https://setuptools.pypa.io/en/latest/userguide/package_discovery.html
[tool.setuptools.packages.find]
exclude = ["contrib", "docs", "docs.*", "tests*"]
# Dynamically read version from version.py module
# https://setuptools.pypa.io/en/latest/userguide/pyproject_config.html#dynamic-metadata
[tool.setuptools.dynamic]
version = {attr = "appdaemon.version.__version__"}
# Taken from: https://docs.pytest.org/en/7.1.x/explanation/goodpractices.html
[tool.pytest.ini_options]
addopts = [
"--import-mode=importlib",
]
# black configuration
[tool.black]
line-length = 120
# Ruff
[tool.ruff]
# Enable pycodestyle (`E`) and Pyflakes (`F`) codes by default.
lint.select = ["E", "F"]
lint.ignore = []
# Allow autofix for all enabled rules (when `--fix`) is provided.
lint.fixable = ["E", "F", "UP"]
lint.unfixable = []
src = ["appdaemon"]
# Exclude a variety of commonly ignored directories.
exclude = [
".bzr",
".direnv",
".eggs",
".git",
".hg",
".mypy_cache",
".nox",
".pants.d",
".pytype",
".ruff_cache",
".svn",
".tox",
".venv",
"__pypackages__",
"_build",
"buck-out",
"build",
"dist",
"node_modules",
"venv",
]
lint.per-file-ignores = {}
line-length = 500
# Allow unused variables when underscore-prefixed.
lint.dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$"
# Assume Python 3.10.
target-version = "py310"
[tool.ruff.lint.mccabe]
# Unlike Flake8, default to a complexity level of 10.
max-complexity = 10