Files
ashvale-station/pyproject.toml
T

85 lines
2.7 KiB
TOML

[build-system]
requires = ["setuptools>=68", "wheel"]
build-backend = "setuptools.build_meta"
[project]
name = "ashvale-station"
version = "1.0.0"
description = "Online machine learning weather forecasting for a Raspberry Pi and Sense HAT, with calibrated uncertainty and public self-verification."
readme = "README.md"
requires-python = ">=3.9"
license = { text = "Apache-2.0" }
authors = [
{ name = "Kemal Yaylali", email = "[email protected]" },
]
maintainers = [
{ name = "Kemal Yaylali", email = "[email protected]" },
]
keywords = [
"weather", "forecasting", "raspberry-pi", "sense-hat", "kalman-filter",
"recursive-least-squares", "conformal-prediction", "online-learning",
"time-series", "state-estimation", "edge-ml", "iot",
]
classifiers = [
"Development Status :: 4 - Beta",
"Intended Audience :: Science/Research",
"Intended Audience :: Developers",
"License :: OSI Approved :: Apache Software License",
"Operating System :: POSIX :: Linux",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Topic :: Scientific/Engineering :: Atmospheric Science",
"Topic :: Scientific/Engineering :: Artificial Intelligence",
"Topic :: System :: Monitoring",
]
# Deliberately minimal. The learners are pure numpy so the whole process fits
# in about 150 MB of RSS on a 512 MB board. Anything added here should be
# justified against that budget.
dependencies = [
"fastapi>=0.110",
"uvicorn>=0.29",
"pydantic>=2.6",
"numpy>=1.24",
"PyYAML>=6.0",
]
[project.optional-dependencies]
# Hardware access. Prefer the apt packages on a Pi: sense-hat pulls in
# RTIMULib, which is a genuine ordeal to build inside a clean venv.
hardware = [
"sense-hat>=2.6.0",
"smbus2>=0.4.3",
]
dev = [
"httpx>=0.27",
"pytest>=8.0",
"ruff>=0.4",
]
[project.urls]
Homepage = "https://github.com/lynchaos/ashvale-station"
Repository = "https://github.com/lynchaos/ashvale-station"
Issues = "https://github.com/lynchaos/ashvale-station/issues"
Changelog = "https://github.com/lynchaos/ashvale-station/blob/main/CHANGELOG.md"
Documentation = "https://github.com/lynchaos/ashvale-station/blob/main/docs/DESIGN.md"
[project.scripts]
ashvale = "run:main"
[tool.setuptools]
packages = ["ashvale", "ashvale.models"]
[tool.ruff]
line-length = 100
target-version = "py39"
[tool.ruff.lint]
# UP is deliberately absent. With target-version = "py39" it fights the
# `from __future__ import annotations` style used throughout and generates
# several hundred findings for no behavioural gain. B currently finds nothing.
select = ["E", "F", "W", "I"]
ignore = ["E501"]