content: [build-system]
  requires = ["setuptools>=67", "wheel", "setuptools-git-versioning>=2.0,<3"]
  build-backend = "setuptools.build_meta"
  
  [project]
  name = "quartz_solar_forecast"
  dynamic = ["version"]
  description = "Open Source Solar Forecasting for a Site"
  authors = [{ name = "Peter Dudfield", email = "info@openclimatefix.org" }]
  readme = "README.md"
  requires-python = ">=3.11"
  license = { text = "MIT" }
  
  dependencies = [
      # Keep core dependencies that are needed for the app to run
      "xarray==2022.12.0",
      "pv-site-prediction==0.1.19",
      "pydantic==2.6.2",
      "python-dotenv==1.0.1",
      "openmeteo-requests==1.2.0",
      "requests-cache==1.2.0",
      "retry-requests==2.0.0",
      "xgboost==2.0.3",
      "typer",
      "async_timeout",
      "uvicorn",
      "pydantic_settings",
      "httpx",
      "sentry_sdk",
      "huggingface_hub==0.17.3"
  ]
  
  [project.urls]
  "Source Code" = "https://github.com/openclimatefix/Open-Source-Quartz-Solar-Forecast.git"
  
  [tool.setuptools]
  packages = { find = { include = ["*"] } }
  package-data = { "quartz_solar_forecast" = ["*"] }
  
  [tool.setuptools-git-versioning]
  enabled = true
  dirty_template = "{tag}"
  
  [dependency-groups]
  dev = [
      "ruff",
      "streamlit",
      "plotly",
      "gdown==5.1.0",
      "fastapi",
      "matplotlib",
      "zipfile36",
      "pytest",
  ]
  inverters = ["ocf_vrmapi"] # victron
  all = [
      "ocf_vrmapi",
      "streamlit",
      "plotly",
      "gdown==5.1.0",
      "fastapi",
      "pytest",
  ]
  
  [tool.mypy]
  disallow-untyped-defs = true
  disallow-any-unimported = true
  no-implicit-optional = true
  check-untyped-defs = true
  warn-return-any = true
  warn-unused-ignores = true
  show-error-codes = true
  warn-unreachable = true
  
  [tool.ruff]
  line-length = 100
  exclude = ["tests", "data", "scripts", "**/*.ipynb"]
  
  [tool.ruff.lint]
  select = [
      "E",   # pycodestyle errors
      "W",   # pycodestyle warnings
      "F",   # pyflakes
      "I",   # isort
      "B",   # flake8-bugbear
      "C4",  # flake8-comprehensions
      "UP",  # pyupgrade
  ]
  ignore = []
  
  [tool.ruff.format]
  quote-style = "double"
  indent-style = "space"
  
  [tool.uv]
  default-groups = ["dev"]
  
  