@@ -45,6 +45,24 @@ pandas = ["pandas>=1.3.0"]
4545arrow = [" pyarrow>=7.0.0" ]
4646fastparquet = [" fastparquet>=0.4.0" ]
4747
48+ [dependency-groups ]
49+ dev = [
50+ " sqlalchemy>=1.0.0" ,
51+ " pandas>=1.3.0" ,
52+ " numpy>=1.26.0;python_version>=\" 3.9\" " ,
53+ " numpy>=1.24.0,<1.26.0;python_version<\" 3.9\" " ,
54+ " pyarrow>=7.0.0" ,
55+ " fastparquet>=0.4.0" ,
56+ " Jinja2>=3.1.0" ,
57+ " mypy>=0.900" ,
58+ " pytest>=3.5" ,
59+ " pytest-cov" ,
60+ " pytest-xdist" ,
61+ " pytest-dependency" ,
62+ " sphinx" ,
63+ " types-python-dateutil" ,
64+ ]
65+
4866[build-system ]
4967requires = [" hatchling" ]
5068build-backend = " hatchling.build"
@@ -67,68 +85,12 @@ packages = ["pyathena"]
6785[tool .hatch .version ]
6886path = " pyathena/__init__.py"
6987
70- [tool .hatch .env ]
71- requires = [
72- " hatch-pip-compile"
73- ]
74-
75- [tool .hatch .envs .default ]
76- python = " 3.11"
77- type = " pip-compile"
78- lock-filename = " requirements/requirements.txt"
79- pip-compile-verbose = true
80- pip-compile-hashes = true
81- pip-compile-install-args = [
82- " --no-deps"
83- ]
84- dependencies = [
85- " wheel" ,
86- " twine" ,
87- " sqlalchemy>=1.0.0" ,
88- " pandas>=1.3.0" ,
89- " numpy>=1.26.0;python_version>=\" 3.9\" " ,
90- " numpy>=1.24.0,<1.26.0;python_version<\" 3.9\" " ,
91- " pyarrow>=7.0.0" ,
92- " fastparquet>=0.4.0" ,
93- " Jinja2>=3.1.0" ,
94- " mypy>=0.900" ,
95- " pytest>=3.5" ,
96- " pytest-cov" ,
97- " pytest-xdist" ,
98- " pytest-dependency" ,
99- " ruff>=0.1.13" ,
100- " hatch-pip-compile" ,
101- " sphinx" ,
102- " types-python-dateutil" ,
103- ]
104-
105- [tool .hatch .envs .default .scripts ]
106- test = " pytest -n 8 --cov pyathena --cov-report html --cov-report term tests/pyathena/"
107- test-sqla = " pytest -n 8 --cov pyathena --cov-report html --cov-report term tests/sqlalchemy/"
108- fmt = [
109- " ruff check --select I --fix ." ,
110- " ruff format ."
111- ]
112- chk = [
113- " ruff check ." ,
114- " ruff format --check ." ,
115- " mypy ."
116- ]
117-
118- [tool .hatch .envs .test ]
119- template = " default"
120- lock-filename = " requirements/requirements-{env_name}.txt"
121- pip-compile-verbose = true
122- pip-compile-hashes = true
123- pip-compile-install-args = [
124- " --no-deps"
125- ]
126-
127- [[tool .hatch .envs .test .matrix ]]
128- python = [" 3.9" , " 3.10" , " 3.11" , " 3.12" , " 3.13" ]
129-
13088[tool .pytest .ini_options ]
131- norecursedirs = [" benchmarks" , " .venv" ]
89+ norecursedirs = [
90+ " benchmarks" ,
91+ " .venv" ,
92+ " .tox"
93+ ]
13294
13395[tool .sqla_testing ]
13496requirement_cls = " pyathena.sqlalchemy.requirements:Requirements"
@@ -138,6 +100,7 @@ profile_file = "tests/sqlalchemy/profiles.txt"
138100line-length = 100
139101exclude = [
140102 " .venv" ,
103+ " .tox" ,
141104]
142105target-version = " py38"
143106
@@ -168,4 +131,38 @@ warn_no_return = true
168131warn_return_any = true
169132warn_unreachable = true
170133warn_unused_configs = true
171- exclude = [" benchmarks.*" , " tests.*" , " .tox.*" , " .venv.*" ]
134+ exclude = [
135+ " benchmarks.*" ,
136+ " tests.*" ,
137+ " .venv.*" ,
138+ " .tox.*" ,
139+ ]
140+
141+ [tool .tox ]
142+ legacy_tox_ini = """
143+ [tox]
144+ isolated_build = true
145+ envlist = py{39,310,311,312,313}
146+
147+ [gh-actions]
148+ python =
149+ 3.9: py39
150+ 3.10: py310
151+ 3.11: py311
152+ 3.12: py312
153+ 3.13: py313
154+
155+ [testenv]
156+ allowlist_externals =
157+ uv
158+ uvx
159+ make
160+ commands =
161+ uv sync --group dev
162+ make test
163+ make test-sqla
164+ passenv =
165+ TOXENV
166+ AWS_*
167+ GITHUB_*
168+ """
0 commit comments