[project] name = "bmspy" version = "2.1" description = "bmspy is a tool to get information from a xiaoxiang-type BMS system" authors = [{name = "Timothy Allen", email = "tim@treehouse.org.za"}] license = "CC-BY-NC-SA-4.0" license-files = ["LICENSE"] readme = "README.md" requires-python = ">=3.12,<4.0" dependencies = [ "pyserial>=3.5", ] [project.optional-dependencies] influxdb = [ "influxdb3-python>=0.19.0", "typing-extensions>=4.13", ] prometheus = ["prometheus-client>=0.11.0"] ecoflow-bt = [ "bleak>=0.21.0", "ecdsa>=0.19.0", "pycryptodome>=3.20.0", ] [project.scripts] bmspy = "bmspy:main" bmspy-server = "bmspy.server:main" bmspy-influxdb = "bmspy.influxdb:main" bmspy-prometheus = "bmspy.prometheus:main" bmspy-ups = "bmspy.ups:main" bmspy-ecoflow-login = "bmspy.ecoflow_login:main" [dependency-groups] dev = [ "pytest>=8.0", "pytest-cov>=7.1.0", ] [build-system] requires = ["uv_build>=0.12.5,<0.13"] build-backend = "uv_build" [tool.uv.build-backend] module-root = "" source-include = [ "tests/**", "docs/ecoflow-river2-fields.md", "docs/ecoflow-river3-fields.md", "tools/generate_ecoflow_river3_schema.py", "tools/ecoflow-bt.py", "*.service", "uv.lock", "docs/grafana-ups.md", "tools/generate_grafana_ups.py", ] # Do not distribute the external Type 7 table or the unfinished local USB stub. source-exclude = ["/bmspy/ecoflow_keydata.py", "/bmspy/usbhid.py"] [tool.coverage.report] exclude_lines = [ "pragma: no cover", "if __name__ == .__main__.:", ]