|
| 1 | +[build-system] |
| 2 | +requires = ["setuptools>=68.0", "setuptools-scm>=8.0"] |
| 3 | +build-backend = "setuptools.build_meta" |
| 4 | + |
| 5 | +[project] |
| 6 | +name = "detectree2" |
| 7 | +version = "2.1.1" |
| 8 | +description = "Automatic tree crown delineation in aerial RGB imagery based on Mask R-CNN." |
| 9 | +readme = "README.md" |
| 10 | +license = {text = "MIT"} |
| 11 | +requires-python = ">=3.8" |
| 12 | +authors = [ |
| 13 | + {name = "James G. C. Ball", email = "ball.jgc@gmail.com"}, |
| 14 | +] |
| 15 | +keywords = ["tree-crown", "remote-sensing", "instance-segmentation", "Mask-RCNN", "detectron2"] |
| 16 | +classifiers = [ |
| 17 | + "Development Status :: 5 - Production/Stable", |
| 18 | + "Intended Audience :: Science/Research", |
| 19 | + "License :: OSI Approved :: MIT License", |
| 20 | + "Operating System :: OS Independent", |
| 21 | + "Programming Language :: Python :: 3", |
| 22 | + "Programming Language :: Python :: 3.8", |
| 23 | + "Programming Language :: Python :: 3.9", |
| 24 | + "Programming Language :: Python :: 3.10", |
| 25 | + "Programming Language :: Python :: 3.11", |
| 26 | + "Programming Language :: Python :: 3.12", |
| 27 | + "Topic :: Scientific/Engineering :: GIS", |
| 28 | + "Topic :: Scientific/Engineering :: Image Recognition", |
| 29 | +] |
| 30 | +dependencies = [ |
| 31 | + # Core |
| 32 | + "pyyaml>=5.1", |
| 33 | + "numpy>=1.20", |
| 34 | + "pandas>=1.3", |
| 35 | + "tqdm>=4.60", |
| 36 | + "opencv-python>=4.5", |
| 37 | + # Geospatial — shapely 2.x required by evaluation module (make_valid) |
| 38 | + "shapely>=2.0", |
| 39 | + "geopandas>=0.13", |
| 40 | + "rasterio>=1.2", |
| 41 | + "fiona>=1.8", |
| 42 | + "rtree>=0.9", |
| 43 | + # Evaluation utils |
| 44 | + "pycocotools>=2.0.4", |
| 45 | +] |
| 46 | + |
| 47 | +[project.optional-dependencies] |
| 48 | +dev = [ |
| 49 | + "pre-commit>=3.0", |
| 50 | + "flake8>=6.0", |
| 51 | + "pep8-naming", |
| 52 | + "pydocstyle", |
| 53 | + "isort>=5.0", |
| 54 | + "yapf", |
| 55 | + "mypy>=1.0", |
| 56 | +] |
| 57 | +test = [ |
| 58 | + "pytest>=7.0", |
| 59 | + "pytest-cov>=4.0", |
| 60 | + "pytest-order", |
| 61 | +] |
| 62 | +docs = [ |
| 63 | + "sphinx>=7.0", |
| 64 | + "sphinx-rtd-theme>=2.0", |
| 65 | + "nbsphinx>=0.9", |
| 66 | +] |
| 67 | + |
| 68 | +[project.urls] |
| 69 | +Homepage = "https://github.com/PatBall1/detectree2" |
| 70 | +Documentation = "https://patball1.github.io/detectree2/" |
| 71 | +Repository = "https://github.com/PatBall1/detectree2" |
| 72 | +Issues = "https://github.com/PatBall1/detectree2/issues" |
| 73 | +Demo = "https://huggingface.co/spaces/forestmap-ai/Detectree2" |
| 74 | +Sponsor = "https://forestmap.ai" |
| 75 | + |
| 76 | +[tool.setuptools.packages.find] |
| 77 | +include = ["detectree2*"] |
| 78 | + |
| 79 | +[tool.setuptools.package-data] |
| 80 | +"detectree2" = ["tests/input/**/*.geojson"] |
| 81 | + |
| 82 | +# ---------- Tool configuration (migrated from setup.cfg) ---------- |
| 83 | + |
| 84 | +[tool.flake8] |
| 85 | +max-line-length = 120 |
| 86 | +docstring-convention = "google" |
| 87 | +ignore = ["D100", "D101", "D102", "D103", "D104", "D202", "D212", "W503", "N803", "N806"] |
| 88 | +exclude = ["detectree2/data_loading", "detectree2/models/train_tune.py"] |
| 89 | +max-complexity = 10 |
| 90 | + |
| 91 | +[tool.isort] |
| 92 | +profile = "black" |
| 93 | +multi_line_output = 3 |
| 94 | +include_trailing_comma = true |
| 95 | + |
| 96 | +[tool.mypy] |
| 97 | +disallow_untyped_defs = false |
| 98 | +disallow_any_unimported = false |
| 99 | +no_implicit_optional = false |
| 100 | +check_untyped_defs = false |
| 101 | +warn_unused_ignores = false |
| 102 | +show_error_codes = true |
| 103 | +ignore_missing_imports = true |
| 104 | +mypy_path = ".stubs" |
| 105 | +warn_return_any = true |
| 106 | +warn_unused_configs = true |
| 107 | + |
| 108 | +[[tool.mypy.overrides]] |
| 109 | +module = "detectree2.data_loading.*" |
| 110 | +ignore_errors = true |
| 111 | + |
| 112 | +[tool.pytest.ini_options] |
| 113 | +testpaths = ["detectree2/tests"] |
0 commit comments