-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathpyproject.toml
118 lines (101 loc) · 2.69 KB
/
pyproject.toml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
[project]
name = 'pyinaturalist-convert'
version = '0.7.0'
description = 'Data conversion tools for iNaturalist observations and taxonomy'
authors = [
{ name = "Jordan Cook" }
]
readme = 'README.md'
requires-python = '>=3.10'
keywords = [
'inaturalist',
'biodiversity',
'export',
'convert',
'csv',
'darwin-core',
'dataframe',
'gpx',
]
classifiers = [
'Development Status :: 4 - Beta',
'Intended Audience :: Developers',
'Intended Audience :: Education',
'Intended Audience :: Science/Research',
'Typing :: Typed',
]
dependencies = [
'pyinaturalist>=0.20',
'flatten-dict>=0.4',
'tablib>=3.0',
]
[project.urls]
homepage = 'https://github.com/pyinat/pyinaturalist-convert'
repository = 'https://github.com/pyinat/pyinaturalist-convert'
documentation = 'https://pyinaturalist-convert.readthedocs.io'
# Optional dependencies for specific data formats
[project.optional-dependencies]
db = ['sqlalchemy>=2.0']
dwc = ['xmltodict>=0.12']
feather = ['pandas>=1.2', 'pyarrow>=10.0']
geojson = ['geojson>=2.5']
gpx = ['gpxpy>=1.4']
hdf = ['pandas>=1.2', 'tables>=3.6']
html = ['jinja2>=3.0', 'markuppy>=1.12']
odp = ['boto3>=1.20']
parquet = ['pandas>=1.2', 'pyarrow>=10.0']
xlsx = ['pandas>=1.2', 'openpyxl>=2.6']
[dependency-groups]
# Dev dependencies
dev = [
'coverage~=7.0',
'nox~=2024.4',
'pre-commit~=3.5',
'pyparsing~=3.0',
'pytest~=8.0',
'pytest-cov>=5.0',
'pytest-xdist>=2.2',
'sqlalchemy2-stubs>=0.0.2a38',
]
# Documentation dependencies for Readthedocs builds
docs = [
'furo~=2024.5',
'myst-parser>=1.0',
'sphinx~=6.2',
'sphinx-autodoc-typehints==1.20',
'sphinx-copybutton>=0.5',
'sphinx-design>=0.5',
]
[build-system]
requires = ['hatchling>=1.0.0']
build-backend = 'hatchling.build'
[tool.hatch.build]
packages = ['pyinaturalist-convert']
force-include = {'README.md' = 'pyinaturalist_convert/README.md'}
[tool.coverage.html]
directory = 'test-reports'
[tool.coverage.run]
branch = true
source = ['pyinaturalist_convert']
[tool.coverage.report]
exclude_lines = ['pragma: no cover', 'if TYPE_CHECKING:', 'except ImportError:']
[tool.mypy]
ignore_missing_imports = true
files = ['pyinaturalist_convert']
[tool.ruff]
fix = true
unsafe-fixes = true
line-length = 100
output-format = 'grouped'
target-version = 'py38'
exclude = ['examples/']
[tool.ruff.format]
quote-style = 'single'
[tool.ruff.lint]
select = ['B', 'C4', 'C90', 'E', 'F']
ignore = ['B023']
[tool.ruff.lint.isort]
known-first-party = ['test']
# Wrap lines to 100 chars, but don't error on unwrappable lines until 120 chars
[tool.ruff.lint.pycodestyle]
max-line-length = 120