[build-system] requires = ["setuptools>=61.0", "wheel"] build-backend = "setuptools.build_meta" [project] name = "northern-thailand-ping-river-monitor" version = "3.1.3" description = "Ping River Monitor: flood-model training, evaluation and archive backfills (the service, ping-collector, is in rust/)" readme = "README.md" license = {text = "MIT"} authors = [ {name = "buildfor.life"} ] keywords = [ "water monitoring", "hydrology", "flood forecasting", "thailand", "ping river", "time series", ] classifiers = [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Science/Research", "Topic :: Scientific/Engineering :: Hydrology", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.11", "Operating System :: OS Independent", ] # 3.11 only: pandas 2.0.3 ships no 3.12 wheels; psycopg2-binary 2.9.9 breaks on 3.13 requires-python = ">=3.11,<3.12" dependencies = [ "requests==2.34.2", "pandas==2.0.3", "numpy>=1.24,<2", # pandas 2.0.3 wheels are ABI-incompatible with numpy 2.x "scikit-learn==1.9.0", "sqlalchemy==2.0.23", "psycopg2-binary==2.9.9", # .env loading; rust/collector/src/envfile.rs ports exactly this version "python-dotenv==1.1.1", ] [project.urls] Homepage = "https://water.buildfor.life/" Repository = "https://git.b4l.co.th/B4L/Northern-Thailand-Ping-River-Monitor" Issues = "https://git.b4l.co.th/B4L/Northern-Thailand-Ping-River-Monitor/issues" [dependency-groups] dev = [ "pytest==9.1.1", "pytest-cov==4.1.0", "black==26.5.1", "flake8==6.1.0", "isort==5.12.0", "pre-commit==3.5.0", "ipython==8.17.2", "jupyter==1.0.0", ] [tool.setuptools.packages.find] where = ["src"] [tool.setuptools.package-dir] "" = "src" # One formatting contract for CI, pre-commit and editors. Black's default 88 # columns; isort in black-compatible mode. Run `make format` before committing. [tool.black] line-length = 88 target-version = ["py311"] extend-exclude = '/(\.venv|venv|models|\.claude-flow|\.swarm)/' [tool.isort] profile = "black" line_length = 88 known_first_party = ["src"] skip_gitignore = true