content: [project]
  name = "natcap.invest"
  description = "InVEST Ecosystem Service models"
  readme = "README_PYTHON.rst"
  requires-python = ">=3.9"
  license = "Apache-2.0"
  license-files = ["LICENSE.txt"]
  maintainers = [
      {name = "Natural Capital Project Software Team"}
  ]
  keywords = ["gis", "invest", "ecosystem services"]
  classifiers = [
      "Intended Audience :: Developers",
      "Development Status :: 5 - Production/Stable",
      "Intended Audience :: Science/Research",
      "Natural Language :: English",
      "Operating System :: MacOS :: MacOS X",
      "Operating System :: Microsoft",
      "Operating System :: POSIX",
      "Programming Language :: Python :: 3",
      "Programming Language :: Python :: 3.9",
      "Programming Language :: Python :: 3.10",
      "Programming Language :: Python :: 3.11",
      "Programming Language :: Python :: 3.12",
      "Programming Language :: Python :: 3.13",
      "Programming Language :: Cython",
      "Topic :: Scientific/Engineering :: GIS"
  ]
  # the version is provided dynamically by setuptools_scm
  # `dependencies` and `optional-dependencies` are provided by setuptools
  # using the corresponding setup args `install_requires` and `extras_require`
  dynamic = ["version", "dependencies", "optional-dependencies"]
  
  [project.urls]
  homepage = "http://github.com/natcap/invest"
  
  [project.scripts]
  invest = "natcap.invest.cli:main"
  
  [build-system]
  # these are the minimum packages needed in order to execute the natcap.invest
  # build.
  # NOTE: GDAL is *not* required here because the compiled cython module
  # will dynamically import GDAL via python's import system.  This behavior means
  # that we can provide a much easier build experience so long as GDAL is
  # available at runtime.
  requires = [
      'setuptools>=64', 'wheel', 'setuptools_scm>=8.0', 'cython>=3.0.0', 'babel',
      'numpy>=2'
  ]
  build-backend = "setuptools.build_meta"
  
  [tool.setuptools_scm]
  # Use default configuration. A warning is issued if this section is absent.
  
  [tool.isort]
  # isort can be installed from conda-forge
  # flake8-isort can also be used for flake8 linting integration
  #
  # To test isort configuration, run:
  #     isort . --show-config
  # A warning will present if config can't be loaded.
  #
  # Each section of imports will be sorted alphabetically
  force_alphabetical_sort_within_sections = true
  
  # "from osgeo import gdal" and "from osgeo import osr" are on separate lines
  force_single_line = true
  
  # This defines the sections used, and clarifies that we don't want to have
  # lines between the FIRSTPARTY (absolute natcap.invest imports) and the
  # LOCALFOLDER (relative imports, e.g. "from . import validation) section.
  sections = 'FUTURE,STDLIB,THIRDPARTY,FIRSTPARTY,LOCALFOLDER'
  no_lines_before = 'LOCALFOLDER'
  
  [tool.setuptools.packages.find]
  where = ["src"]
  
  [tool.pytest.ini_options]
  # raise warnings to errors, except for deprecation warnings
  filterwarnings = [
      "error",
      "default::DeprecationWarning",
      "default::FutureWarning",
      # don't error on a specific runtime warning coming from a shapely
      # issue on M1: https://github.com/natcap/invest/issues/1562
      "default:invalid value encountered in intersection:RuntimeWarning",
  ]
  