content: [build-system]
  requires = ["hatchling", "hatch-fancy-pypi-readme"]
  build-backend = "hatchling.build"
  
  [project]
  name = "flopy"
  description = "FloPy is a Python package to create, run, and post-process MODFLOW-based models"
  authors = [
      {name = "FloPy Team", email = "modflow@usgs.gov"},
  ]
  maintainers = [
      {name = "Joseph D. Hughes", email = "jdhughes@usgs.gov"},
  ]
  keywords = ["MODFLOW", "groundwater", "hydrogeology"]
  license = {text = "CC0"}
  classifiers = [
      "Development Status :: 5 - Production/Stable",
      "Intended Audience :: Science/Research",
      "License :: CC0 1.0 Universal (CC0 1.0) Public Domain Dedication",
      "Programming Language :: Python :: 3 :: Only",
      "Programming Language :: Python :: 3.10",
      "Programming Language :: Python :: 3.11",
      "Programming Language :: Python :: 3.12",
      "Programming Language :: Python :: 3.13",
      "Topic :: Scientific/Engineering :: Hydrology",
  ]
  requires-python = ">=3.10"
  dependencies = [
      "numpy>=1.20.3",
      "matplotlib >=1.4.0",
      "pandas >=2.0.0",
  ]
  dynamic = ["version", "readme"]
  
  [project.optional-dependencies]
  dev = ["flopy[codegen,lint,test,optional,doc]", "tach"]
  codegen = [
      "Jinja2>=3.0",
      "boltons",
      "modflow-devtools==1.7.0",
      "tomli",
      "tomli-w"
  ]
  lint = ["cffconvert", "codespell[toml] >=2.2.2", "ruff"]
  test = [
      "flopy[lint]",
      "boltons",
      "coverage !=7.6.5",
      "flaky",
      "filelock",
      "jupyter",
      "jupyter_client >=8.4.0", # avoid datetime.utcnow() deprecation warning
      "jupytext",
      "modflow-devtools==1.7.0",
      "pytest !=8.1.0",
      "pytest-benchmark",
      "pytest-cov",
      "pytest-dotenv",
      "pytest-xdist",
      "pyzmq >=25.1.2",
      "syrupy <5.0.0",
      "tomli",
      "tomli-w",
      "virtualenv"
  ]
  optional = [
      "affine",
      "descartes",
      "fiona",
      "geojson",
      "geopandas",
      "GitPython",
      "imageio",
      "netcdf4",
      "pooch",
      "pymetis ; platform_system != 'Windows'",
      "pyproj",
      "pyshp",
      "pyvista",
      "rasterio",
      "rasterstats",
      "scipy",
      "shapely >=2.0",
      "vtk >=9.4.0",
      "xmipy",
      "h5py",
      "scikit-learn"
  ]
  doc = [
      "flopy[optional]",
      "ipython[kernel]",
      "jupytext",
      "myst-parser",
      "nbconvert <7.14.0",
      "nbsphinx",
      "PyYAML",
      "rtds-action",
      "sphinx ==7.1.2",
      "sphinx-rtd-theme >=1",
  ]
  
  [project.scripts]
  get-modflow = "flopy.utils.get_modflow:cli_main"
  
  [project.urls]
  Documentation = "https://flopy.readthedocs.io"
  "Release Notes" = "https://github.com/modflowpy/flopy/blob/develop/docs/version_changes.md"
  "Bug Tracker" = "https://github.com/modflowpy/flopy/issues"
  "Source Code" = "https://github.com/modflowpy/flopy"
  
  [tool.hatch.build.targets.sdist]
  only-include = [
      "CITATION.cff",
      "README.md",
      "docs",
      "flopy",
  ]
  
  [tool.hatch.build.targets.wheel]
  packages = ["flopy"]
  
  [tool.hatch.metadata.hooks.fancy-pypi-readme]
  content-type = "text/markdown"
  
  [[tool.hatch.metadata.hooks.fancy-pypi-readme.fragments]]
  path = "docs/PyPI_release.md"
  
  [[tool.hatch.metadata.hooks.fancy-pypi-readme.fragments]]
  path = "LICENSE.md"
  
  [tool.hatch.version]
  path = "flopy/version.py"
  
  [tool.ruff]
  line-length = 88
  include = [
      "pyproject.toml",
      "flopy/**/*.py",
      "autotest/**/*.py",
      "examples/**/*.py",
      "scripts/**/*.py",
      ".docs/**/*.py",
  ]
  extend-include = [
      "examples/**/*.ipynb"
  ]
  
  [tool.ruff.format]
  exclude = [
      "flopy/mf6/**/*.py",
  ]
  
  [tool.ruff.lint]
  select = [
      "C4",   # flake8 comprehensions
      "D409", # pydocstyle - section-underline-matches-section-length
      "E",    # pycodestyle error
      "F",    # Pyflakes
      "I001", # isort - unsorted-imports
      # "ISC001",  # implicitly concatenated string literals
      "PLC",  # Pylint - Convention
      "PLE",  # Pylint - Error
      "PLR0402", # Pylint - Refactor - manual-from-import
      "PLR2044", # Pylint - Refactor - empty-comment
      "PLW",  # Pylint - Warning
      "RUF",  # Ruff-specific rules
  ]
  ignore = [
      "E402", # module level import not at top of file
      "E712", # Avoid equality comparisons to `True`
      "E722", # do not use bare `except`
      "E721", # use `is`/`is not` for type comparisons
      "E741", # ambiguous variable name
      "F401", # unused import
      "F403", # unable to detect undefined names (star imports)
      "F524", # `.format` missing argument(s) for placeholder(s)
      "F811", # Redefinition of unused variable
      "F841", # local variable assigned but never used
      "PLC0415", # `import` should be at the top-level of a file
      "PLC1901", # `var == ""` can be simplified to `not var` as an empty string
      "PLW1514", # `open` in text mode without explicit `encoding` argument
      "PLW1641", # Object does not implement `__hash__` method
      "PLW2901", # `for` loop variable `col` overwritten by assignment target
      "RUF005", # collection literal concatenation
      "RUF012", # mutable class default
      "RUF017", # quadratic-list-summation
      "RUF059", # Unpacked variable `name` is never used
      "RUF100", # Unused `noqa` directive
  ]
  
  [tool.ruff.lint.per-file-ignores]
  ".docs/**/*.py" = ["E501"]
  "flopy/mf6/**/*.py" = ["C4", "E", "F", "ISC", "RUF"]
  "flopy/utils/geometry.py" = ["PLW3201"]
  "flopy/utils/geospatial_utils.py" = ["PLW3201"]
  
  [tool.codespell]
  skip = "cliff.toml,./examples/data/*,./autotest/test_modeltime.py"
  ignore-words-list = [
      "alltime",
      "dum",
      "inout",
      "intot",
      "delt",
      "gage",
      "gages",
      "datbase",
      "wel",
      "nam",
      "lke",
      "ist",
      "ninj",
      "drob",
      "thck",
      "vor",
      "yur",
      "localy",
      "vertx",
      "nd",
  ]
  