content: [build-system]
  requires = ["hatchling"]
  build-backend = "hatchling.build"
  
  [project]
  name = "climate_indices"
  version = '2.2.0'
  description = 'Reference implementations of various climate indices typically used for drought monitoring'
  authors = [{name = "James Adams", email = "monocongo@gmail.com"}]
  readme = 'README.md'
  classifiers = [
       'Development Status :: 5 - Production/Stable',
       'Intended Audience :: Developers',
       'Intended Audience :: Education',
       'Intended Audience :: Science/Research',
       'License :: OSI Approved :: BSD License',
       'Programming Language :: Python :: 3.10',
       'Programming Language :: Python :: 3.11',
       'Programming Language :: Python :: 3.12',
       'Programming Language :: Python :: 3.13',
       'Topic :: Software Development :: Libraries :: Python Modules',
       'Topic :: Scientific/Engineering :: Atmospheric Science',
  ]
  packages = [{include = 'climate_indices', from = 'src'}]
  requires-python = ">=3.10,<3.14"
  dependencies = [
      "scipy>=1.15.3",
      # remaining dependencies are required for the CLI (console) scripts
      "cftime>=1.6.4.post1",
      "dask>=2025.7.0",
      "h5netcdf>=1.6.3",
      "xarray>=2025.6.1",
  ]
  [project.optional-dependencies]
  dev = [
      "cartopy>=0.24.1",
      "coverage>=7.10.1",
      "jupyter>=1.1.1",
      "matplotlib>=3.10.3",
      "pytest>=8.4.1",
      "pytest-cov>=6.2.1",
      "ruff>=0.12.7",
      "toml>=0.10.2",
      "sphinx-autodoc-typehints>=3.0.1",
  ]
  docs = [
      "sphinx>=8.1.3",
      "sphinx-rtd-theme>=1.0",
  ]
  
  [project.scripts]
  climate_indices = "climate_indices.__main__:main"
  process_climate_indices = "climate_indices.__main__:main"
  spi = "climate_indices.__spi__:main"
  
  [project.urls]
  'Homepage' = 'https://github.com/monocongo/climate_indices'
  'Bug Tracker' = 'https://github.com/monocongo/climate_indices/issues'
  
  [tool.black]
  line-length = 120
  target-version = ['py310', 'py311', 'py312', 'py313']
  include = '\.pyi?$'
  exclude = '''
  /(
      \.git
    | \.mypy_cache
    | \.tox
    | \.venv
    | build
    | dist
  )/
  '''
  
  [tool.ruff]
  target-version = "py310"
  line-length = 120
  exclude = [
      "notebooks",  # Jupyter notebooks
  ]
  
  [tool.ruff.lint]
  select = [
      "E",  # pycodestyle errors
      "W",  # pycodestyle warnings
      "F",  # pyflakes
      "I",  # isort
      "B",  # flake8-bugbear
      "C4", # flake8-comprehensions
      "UP", # pyupgrade
  ]
  ignore = [
      "E501",  # line too long, handled by black
      "B008",  # do not perform function calls in argument defaults
  ]
  per-file-ignores = {"__init__.py" = ["F401"], "tests/**/*" = ["B011"]}
  
  [tool.mypy]
  python_version = "3.10"
  warn_return_any = true
  warn_unused_configs = true
  disallow_untyped_defs = true
  disallow_incomplete_defs = true
  check_untyped_defs = true
  disallow_untyped_decorators = true
  no_implicit_optional = true
  warn_redundant_casts = true
  warn_unused_ignores = true
  warn_no_return = true
  warn_unreachable = true
  strict_equality = true
  
  [[tool.mypy.overrides]]
  module = [
      "scipy.*",
      "netCDF4.*",
      "xarray.*",
      "dask.*",
  ]
  ignore_missing_imports = true
  
  
  [tool.pytest.ini_options]
  filterwarnings = [
      'ignore::FutureWarning',
  ]
  
  [tool.hatch.build.targets.sdist]
  exclude = [
      "tests/",
      "notebooks/",
      "assets/",
      "docs/",
      "htmlcov/",
      ".github/",
      ".venv/",
      ".pytest_cache/",
      ".ruff_cache/",
      ".mypy_cache/",
      ".idea/",
      ".claude/",
      "*.coverage*",
      "*.log",
  ]
  
  [tool.hatch.build.targets.wheel]
  exclude = [
      "tests/",
      "notebooks/",
      "assets/",
      "docs/",
      "htmlcov/",
      ".github/",
      ".venv/",
      ".pytest_cache/",
      ".ruff_cache/",
      ".mypy_cache/",
      ".idea/",
      ".claude/",
  ]
  
  [dependency-groups]
  dev = [
      "build>=1.3.0",
      "coverage>=7.10.1",
      "markdown",
      "pytest>=8.4.1",
      "pytest-cov>=6.2.1",
      "ruff>=0.12.7",
      "sphinx-autodoc-typehints>=3.0.1",
      "twine>=6.1.0",
  ]
  