2
2
[tox]
3
3
envlist = py
4
4
5
+ [greenletextras]
6
+ extras =
7
+ asyncio
8
+ sqlite: aiosqlite
9
+ sqlite_file: aiosqlite
10
+ postgresql: postgresql_asyncpg
11
+ mysql: asyncmy
12
+ mysql: aiomysql
13
+ mssql: aioodbc
14
+
15
+ # not greenlet, but tends to not have packaging until the py version
16
+ # has been fully released
17
+ mssql: mssql_pymssql
18
+
5
19
[testenv]
6
20
cov_args =--cov =sqlalchemy --cov-report term --cov-append --cov-report xml --exclude-tag memory-intensive --exclude-tag timing-intensive -k " not aaa_profiling"
7
21
@@ -14,26 +28,20 @@ usedevelop=
14
28
cov: True
15
29
16
30
extras =
17
- asyncio
18
- sqlite: aiosqlite
19
- sqlite_file: aiosqlite
20
- sqlite_file: sqlcipher; python_version < '3.10'
31
+ py{3,38,39,310,311,312}: {[greenletextras]extras}
32
+
33
+ py{38,39,310}-sqlite_file: sqlcipher
21
34
postgresql: postgresql
22
- postgresql: postgresql_asyncpg
23
35
postgresql: postgresql_pg8000
24
36
postgresql: postgresql_psycopg
25
37
26
38
mysql: mysql
27
39
mysql: pymysql
28
- mysql: asyncmy
29
- mysql: aiomysql
30
40
mysql: mariadb_connector
31
41
32
42
oracle: oracle
33
43
oracle: oracle_oracledb
34
44
mssql: mssql
35
- mssql: aioodbc
36
- py{3,37,38,39,310,311}-mssql: mssql_pymssql
37
45
38
46
install_command =
39
47
# TODO: I can find no way to get pip / tox / anyone to have this
46
54
# tracked by https://github.com/pytest-dev/pytest-xdist/issues/907
47
55
pytest-xdist!=3.3.0
48
56
49
- py312: greenlet>=3.0.0a1
50
-
51
57
dbapimain-sqlite: git+https://github.com/omnilib/aiosqlite.git\# egg=aiosqlite
52
58
dbapimain-sqlite: git+https://github.com/coleifer/sqlcipher3.git\# egg=sqlcipher3
53
59
64
70
65
71
dbapimain-oracle: git+https://github.com/oracle/python-cx_Oracle.git\# egg=cx_Oracle
66
72
67
- py312 -mssql: git+https://github.com/mkleehammer/pyodbc.git\# egg=pyodbc
73
+ py313 -mssql: git+https://github.com/mkleehammer/pyodbc.git\# egg=pyodbc
68
74
dbapimain-mssql: git+https://github.com/mkleehammer/pyodbc.git\# egg=pyodbc
69
75
70
76
cov: pytest-cov
@@ -101,8 +107,6 @@ setenv=
101
107
102
108
WORKERS ={env:TOX_WORKERS:-n4 --max-worker-restart =5}
103
109
104
-
105
-
106
110
nocext: DISABLE_SQLALCHEMY_CEXT =1
107
111
cext: REQUIRE_SQLALCHEMY_CEXT =1
108
112
cov: COVERAGE ={[testenv]cov_args}
@@ -111,12 +115,16 @@ setenv=
111
115
112
116
oracle: WORKERS ={env:TOX_WORKERS:-n2 --max-worker-restart =5}
113
117
oracle: ORACLE ={env:TOX_ORACLE:--db oracle}
118
+
114
119
oracle: EXTRA_ORACLE_DRIVERS ={env:EXTRA_ORACLE_DRIVERS:--dbdriver cx_oracle --dbdriver oracledb --dbdriver oracledb_async}
120
+ py{313,314}-oracle: EXTRA_ORACLE_DRIVERS ={env:EXTRA_ORACLE_DRIVERS:--dbdriver cx_oracle --dbdriver oracledb}
115
121
116
122
sqlite: SQLITE ={env:TOX_SQLITE:--db sqlite}
117
123
sqlite_file: SQLITE ={env:TOX_SQLITE_FILE:--db sqlite_file}
118
124
119
125
sqlite: EXTRA_SQLITE_DRIVERS ={env:EXTRA_SQLITE_DRIVERS:--dbdriver sqlite --dbdriver pysqlite_numeric --dbdriver aiosqlite}
126
+ py{313,314}-sqlite: EXTRA_SQLITE_DRIVERS ={env:EXTRA_SQLITE_DRIVERS:--dbdriver sqlite --dbdriver pysqlite_numeric}
127
+
120
128
sqlite-nogreenlet: EXTRA_SQLITE_DRIVERS ={env:EXTRA_SQLITE_DRIVERS:--dbdriver sqlite --dbdriver pysqlite_numeric}
121
129
122
130
py{37,38,39}-sqlite_file: EXTRA_SQLITE_DRIVERS ={env:EXTRA_SQLITE_DRIVERS:--dbdriver sqlite --dbdriver aiosqlite --dbdriver pysqlcipher}
@@ -140,10 +148,12 @@ setenv=
140
148
mysql-nogreenlet: EXTRA_MYSQL_DRIVERS ={env:EXTRA_MYSQL_DRIVERS:--dbdriver mysqldb --dbdriver pymysql --dbdriver mariadbconnector}
141
149
142
150
mssql: MSSQL ={env:TOX_MSSQL:--db mssql}
143
- py{3,38,39,310,311}-mssql: EXTRA_MSSQL_DRIVERS ={env:EXTRA_MSSQL_DRIVERS:--dbdriver pyodbc --dbdriver aioodbc --dbdriver pymssql}
144
- py{3,38,39,310,311}-mssql-nogreenlet: EXTRA_MSSQL_DRIVERS ={env:EXTRA_MSSQL_DRIVERS:--dbdriver pyodbc --dbdriver pymssql}
145
- py312-mssql: EXTRA_MSSQL_DRIVERS ={env:EXTRA_MSSQL_DRIVERS:--dbdriver pyodbc --dbdriver aioodbc}
146
- py312-mssql-nogreenlet: EXTRA_MSSQL_DRIVERS ={env:EXTRA_MSSQL_DRIVERS:--dbdriver pyodbc}
151
+
152
+ mssql: EXTRA_MSSQL_DRIVERS ={env:EXTRA_MSSQL_DRIVERS:--dbdriver pyodbc --dbdriver aioodbc --dbdriver pymssql}
153
+ py{313,314}-mssql: EXTRA_MSSQL_DRIVERS ={env:EXTRA_MSSQL_DRIVERS:--dbdriver pyodbc --dbdriver aioodbc}
154
+
155
+ mssql-nogreenlet: EXTRA_MSSQL_DRIVERS ={env:EXTRA_MSSQL_DRIVERS:--dbdriver pyodbc --dbdriver pymssql}
156
+ py{313,314}-mssql-nogreenlet: EXTRA_MSSQL_DRIVERS ={env:EXTRA_MSSQL_DRIVERS:--dbdriver pyodbc}
147
157
148
158
oracle,mssql,sqlite_file: IDENTS =--write-idents db_idents.txt
149
159
@@ -188,6 +198,9 @@ commands =
188
198
# suddently appearing for it to be stable enough for CI
189
199
# pyright
190
200
201
+ extras =
202
+ {[greenletextras]extras}
203
+
191
204
[testenv:mypy]
192
205
deps =
193
206
pytest>=7.0.0rc1,<8
@@ -196,6 +209,9 @@ deps=
196
209
mypy >= 1.7.0
197
210
patch ==1.*
198
211
types-greenlet
212
+ extras =
213
+ {[greenletextras]extras}
214
+
199
215
commands =
200
216
pytest {env:PYTEST_COLOR} -m mypy {posargs}
201
217
@@ -205,6 +221,9 @@ deps=
205
221
{[testenv:mypy]deps}
206
222
pytest-cov
207
223
224
+ extras =
225
+ {[greenletextras]extras}
226
+
208
227
commands =
209
228
pytest {env:PYTEST_COLOR} -m mypy {env:COVERAGE} {posargs}
210
229
@@ -214,6 +233,10 @@ setenv=
214
233
# thanks to https://julien.danjou.info/the-best-flake8-extensions/
215
234
[testenv:lint]
216
235
basepython = python3
236
+
237
+ extras =
238
+ {[greenletextras]extras}
239
+
217
240
deps =
218
241
flake8 ==6.1.0
219
242
flake8-import-order
@@ -259,10 +282,15 @@ basepython = {[testenv:lint]basepython}
259
282
deps = {[testenv:lint]deps}
260
283
allowlist_externals = {[testenv:lint]allowlist_externals}
261
284
commands = {[testenv:lint]commands}
285
+ extras = {[testenv:lint]extras}
286
+
262
287
263
288
264
289
# command run in the github action when cext are active.
90FA
265
290
[testenv:github-cext]
291
+ extras =
292
+ {[greenletextras]extras}
293
+
266
294
deps = {[testenv]deps}
267
295
.[aiosqlite]
268
296
commands =
@@ -271,6 +299,9 @@ commands=
271
299
272
300
# command run in the github action when cext are not active.
273
301
[testenv:github-nocext]
302
+ extras =
303
+ {[greenletextras]extras}
304
+
274
305
deps = {[testenv]deps}
275
306
.[aiosqlite]
276
307
commands =
0 commit comments