# pyproject.toml [build-system] requires = [ "setuptools>=45", "wheel", "setuptools_scm[toml]>=6.2", "meson-python", "pybind11" ] build-backend = "mesonpy" # enable setuptools_scm version [tool.setuptools_scm] # package setup main metadata [project] name = "cars" dynamic = ["version"] authors = [{ name = "CNES", email = "cars@cnes.fr" }] description = "A satellite multi view stereo pipeline" readme = "README.md" # license = "Apache License 2.0" # license-files = ["LICENSE"] keywords = ["cars", "3D", "DEM", "pandora", "photogrammetry"] classifiers = [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "Intended Audience :: End Users/Desktop", "Intended Audience :: Science/Research", "Environment :: Console", "Topic :: Software Development :: Libraries :: Python Modules", "License :: OSI Approved :: Apache Software License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 3.10", ] requires-python = ">= 3.10" # cars packages dependencies dependencies = [ "numpy>=1.17.0", "scipy>=1.7.1,!=1.10.0", "matplotlib", "affine", "rasterio>=1.3.0", "dask>=2021.10.0", "distributed>=2021.10.0", "dask-jobqueue>=0.7.3", "json-checker", "pyyaml", "xarray", "tqdm", "netCDF4>=1.5.3", "Shapely", "Fiona", "pyproj", "utm", "pandas", "urllib3<2.0,>=1.21.1", "laspy[laszip]", "pandora[sgm]==1.7.2", "cars-rasterize==0.2.*", "cars-resample==0.1.*", "cars-filter==0.2.*", "vlsift==0.1.*", "shareloc==0.2.12", "bulldozer-dtm==1.2.*", "xdem==0.2.*", "geopandas<=1.0.1" # Temporary fix while geoutils is not compatible with v1.1.0 ] [project.urls] Documentation = "https://cars.readthedocs.io/en/latest/" Repository = "https://github.com/CNES/cars" [project.optional-dependencies] # [dev] mode dependencies: include doc dev = [ "pytest", "pytest-cov", "pytest-check", "pre-commit", "isort>=5.8.0", # Check imports "black==25.*", # PEP8 format code "flake8>=3.9.1", # General linter "flake8-pyproject", # Support configuration in pyproject.toml "flake8-comprehensions>=3.4.0", # Check list/dict/set "flake8-bugbear>=21.4.3,<24.0.0", # Add some rules to flake8 "pylint>=2.8.12,<4.0.0", # General linter with more rules "setuptools_scm", # version from git tag "virtualenv", "configupdater", "twine", # for pypi upload "sphinx", # for cars doc "sphinx-rtd-theme", # for cars doc "graphviz", # for cars doc "dash", "plotly", "build", # for cars build ] # [docs] mode dependencies docs = [ "astroid<4.0.0", "sphinx", "sphinx-rtd-theme", "sphinx_autoapi", "graphviz", "sphinx_tabs", "sphinx-copybutton", ] # [pandora_mccnn] add heavy mccnn capability for dense matching pandora already install in main requires pandora_mccnn = [ "pandora_plugin_mccnn==1.3.5" ] bundleadjustment = [ "rpcfit" ] [tool.black] # https://github.com/psf/black line-length = 80 exclude = "(.eggs|.git|.mypy_cache|.nox|.tox|_build|build|dist|venv)" [tool.isort] profile = 'black' line_length = 80 known_third_party = [ "dask" ] [tool.flake8] exclude = [".git", "venv", "build", "dist", "tests/test_output"] extend-ignore = ["E203", "W503"] max-complexity = 15 max-line-length = 80 select = ["E", "F", "W", "C", "B9", "C4", "B"] [tool.setuptools.package-data] cars = ["orchestrator/cluster/dask_config/*.yaml", "conf/geoid/*.grd", "conf/geoid/*.hdr", "applications/dense_matching/loaders/*.json", "applications/dsm_filling/bulldozer_config/*.yaml", "pipelines/conf_resolution/*.json", "applications/dense_matching/loaders/global_land_cover_map.tif"] # Specify no universal wheel supported (only Python3) [tool.wheel] universal = false # cars entry points cli scripts [project.scripts] cars = "cars.cars:main" cars-starter = "cars.starter:cli" cars-extractroi = "cars.extractroi:main" cars-dashboard = "cars.orchestrator.tiles_profiler:main" cars-devibrate = "cars.devibrate:cli" cars-bundleadjustment = "cars.bundleadjustment:cli" [tool.cibuildwheel] skip = ["pp*", "*-win32"] [tool.cibuildwheel.windows] before-build = "pip install delvewheel" repair-wheel-command = "delvewheel repair -w {dest_dir} {wheel}"