invest/pyproject.toml

91 lines
3.2 KiB
TOML

[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>=61', 'wheel', 'setuptools_scm>=8.0', 'cython>=3.0.0', 'babel',
'oldest-supported-numpy; python_version<="3.8"',
'numpy>=2; python_version>="3.9"', # numpy 2 only available for 3.9+
]
build-backend = "setuptools.build_meta"
[tool.setuptools_scm]
version_scheme = "post-release"
local_scheme = "node-and-date"
[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",
]