19ca81f5fSMike Bayer[metadata]
29ca81f5fSMike Bayername = SQLAlchemy
3cd03b8f0SMike Bayer# version comes from setup.py; setuptools
4cd03b8f0SMike Bayer# can't read the "attr:" here without importing
5cd03b8f0SMike Bayer# until version 47.0.0 which is too recent
6cd03b8f0SMike Bayer
79ca81f5fSMike Bayerdescription = Database Abstraction Library
8089a8228SMike Bayerlong_description = file: README.rst
99ca81f5fSMike Bayerlong_description_content_type = text/x-rst
10fb81f9c8SFederico Caselliurl = https://www.sqlalchemy.org
119ca81f5fSMike Bayerauthor = Mike Bayer
129ca81f5fSMike Bayerauthor_email = mike_mp@zzzcomputing.com
139ca81f5fSMike Bayerlicense = MIT
149ca81f5fSMike Bayerlicense_file = LICENSE
159ca81f5fSMike Bayerclassifiers =
169ca81f5fSMike Bayer    Development Status :: 5 - Production/Stable
179ca81f5fSMike Bayer    Intended Audience :: Developers
189ca81f5fSMike Bayer    License :: OSI Approved :: MIT License
199ca81f5fSMike Bayer    Operating System :: OS Independent
209ca81f5fSMike Bayer    Programming Language :: Python
219ca81f5fSMike Bayer    Programming Language :: Python :: 3
229ca81f5fSMike Bayer    Programming Language :: Python :: 3.7
239ca81f5fSMike Bayer    Programming Language :: Python :: 3.8
2421e32769SFederico Caselli    Programming Language :: Python :: 3.9
25de9db994SFederico Caselli    Programming Language :: Python :: 3.10
269ca81f5fSMike Bayer    Programming Language :: Python :: Implementation :: CPython
279ca81f5fSMike Bayer    Programming Language :: Python :: Implementation :: PyPy
289ca81f5fSMike Bayer    Topic :: Database :: Front-Ends
299ca81f5fSMike Bayerproject_urls =
309ca81f5fSMike Bayer    Documentation=https://docs.sqlalchemy.org
319ca81f5fSMike Bayer    Issue Tracker=https://github.com/sqlalchemy/sqlalchemy/
329ca81f5fSMike Bayer
339ca81f5fSMike Bayer[options]
349ca81f5fSMike Bayerpackages = find:
35f05d3ddbSMike Bayerpython_requires = >=3.7
369ca81f5fSMike Bayerpackage_dir =
379ca81f5fSMike Bayer    =lib
3810c1b184SMike Bayer
39cd03b8f0SMike Bayerinstall_requires =
405fb0138aSMike Bayer    importlib-metadata;python_version<"3.8"
41778dfdbeSJAMES.DOW    greenlet != 0.4.17;python_version>='3' and (platform_machine=='aarch64' or (platform_machine=='ppc64le' or (platform_machine=='x86_64' or (platform_machine=='amd64' or (platform_machine=='AMD64' or (platform_machine=='win32' or platform_machine=='WIN32'))))))
429ca81f5fSMike Bayer
439ca81f5fSMike Bayer[options.extras_require]
445fb0138aSMike Bayerasyncio =
45b04dcbd7SThomas Grainger    greenlet!=0.4.17;python_version>="3"
465f8ee392SMike Bayermypy =
476f08250bSBryan Forbes    mypy >= 0.910;python_version>="3"
485f8ee392SMike Bayer    sqlalchemy2-stubs
499ca81f5fSMike Bayermssql = pyodbc
509ca81f5fSMike Bayermssql_pymssql = pymssql
519ca81f5fSMike Bayermssql_pyodbc = pyodbc
52897cd176SMike Bayermysql =
53897cd176SMike Bayer    mysqlclient>=1.4.0,<2;python_version<"3"
54897cd176SMike Bayer    mysqlclient>=1.4.0;python_version>="3"
55603f7d30SGeorg Richtermysql_connector =
569ca7be23SMike Bayer    mysql-connector-python
57603f7d30SGeorg Richtermariadb_connector =
58603f7d30SGeorg Richter    mariadb>=1.0.1;python_version>="3"
59897cd176SMike Bayeroracle =
60897cd176SMike Bayer    cx_oracle>=7,<8;python_version<"3"
61897cd176SMike Bayer    cx_oracle>=7;python_version>="3"
62f1a3038fSMike Bayerpostgresql = psycopg2>=2.7
63b2f2bf1aSMike Bayerpostgresql_pg8000 = pg8000>=1.16.6
645fb0138aSMike Bayerpostgresql_asyncpg =
65b04dcbd7SThomas Grainger    %(asyncio)s
665fb0138aSMike Bayer    asyncpg;python_version>="3"
679ca81f5fSMike Bayerpostgresql_psycopg2binary = psycopg2-binary
689ca81f5fSMike Bayerpostgresql_psycopg2cffi = psycopg2cffi
6948930113SMike Bayerpymysql =
7048930113SMike Bayer    pymysql;python_version>="3"
7148930113SMike Bayer    pymysql<1;python_version<"3"
72b04dcbd7SThomas Graingeraiomysql =
73b04dcbd7SThomas Grainger    %(asyncio)s
74b04dcbd7SThomas Grainger    aiomysql;python_version>="3"
7511eecfacSlongasyncmy =
7611eecfacSlong    %(asyncio)s
7723721113SMike Bayer    asyncmy>=0.2.3;python_version>="3"
78502be87aSFederico Caselliaiosqlite =
79502be87aSFederico Caselli    %(asyncio)s
80502be87aSFederico Caselli    aiosqlite;python_version>="3"
819131a520SMike Bayer    typing_extensions!=3.10.0.1
824476dca0SMike Bayersqlcipher =
834476dca0SMike Bayer    sqlcipher3_binary;python_version>="3"
849ca81f5fSMike Bayer
859ac6f289SMichael Trier[egg_info]
869ac6f289SMichael Triertag_build = dev
876a67cb17SMichael Trier
889ca81f5fSMike Bayer[options.packages.find]
899ca81f5fSMike Bayerwhere = lib
9002a58b51SMike Bayer
91f624a3aeSGábor Lipták[tool:pytest]
9292aa35e7SMike Bayeraddopts = --tb native -v -r sfxX --maxfail=250 -p no:warnings -p no:logging
939ca81f5fSMike Bayerpython_files = test/*test_*.py
94ea05a232SMike Bayer
952a20fd85SMike Bayer[upload]
962a20fd85SMike Bayersign = 1
972a20fd85SMike Bayeridentity = C4DAFEE1
982a20fd85SMike Bayer
99d229360aSMike Bayer[flake8]
100478185d0SMike Bayershow-source = false
101d229360aSMike Bayerenable-extensions = G
1029ca81f5fSMike Bayer
103d229360aSMike Bayer# E203 is due to https://github.com/PyCQA/pycodestyle/issues/373
104d229360aSMike Bayerignore =
105d229360aSMike Bayer    A003,
106d229360aSMike Bayer    D,
107d229360aSMike Bayer    E203,E305,E711,E712,E721,E722,E741,
108d229360aSMike Bayer    N801,N802,N806,
109d229360aSMike Bayer    RST304,RST303,RST299,RST399,
110d229360aSMike Bayer    W503,W504
111d229360aSMike Bayerexclude = .venv,.git,.tox,dist,doc,*egg,build
112d229360aSMike Bayerimport-order-style = google
113d229360aSMike Bayerapplication-import-names = sqlalchemy,test
1142afc5380SFederico Caselliper-file-ignores =
11511eecfacSlong    **/__init__.py:F401
11611eecfacSlong    lib/sqlalchemy/events.py:F401
11711eecfacSlong    lib/sqlalchemy/schema.py:F401
11811eecfacSlong    lib/sqlalchemy/types.py:F401
11911eecfacSlong    lib/sqlalchemy/sql/expression.py:F401
120d229360aSMike Bayer
1215f8ee392SMike Bayer[mypy]
1225f8ee392SMike Bayer# min mypy version 0.800
123e2008b55SBryan Forbesstrict = True
124e2008b55SBryan Forbesincremental = True
1250e1a011aSMike Bayerplugins = sqlalchemy.ext.mypy.plugin
126e2008b55SBryan Forbes
127e2008b55SBryan Forbes[mypy-sqlalchemy.*]
128e2008b55SBryan Forbesignore_errors = True
129e2008b55SBryan Forbes
130e2008b55SBryan Forbes[mypy-sqlalchemy.ext.mypy.*]
131e2008b55SBryan Forbesignore_errors = False
1325f8ee392SMike Bayer
133d3c39821SBryan Forbes
13421cac5b5SMike Bayer[sqla_testing]
1359ca81f5fSMike Bayerrequirement_cls = test.requirements:DefaultRequirements
1369ca81f5fSMike Bayerprofile_file = test/profiles.txt
1371a777863SMike Bayer
13870d38af4SMike Bayer# name of a "loopback" link set up on the oracle database.
13970d38af4SMike Bayer# to create this, suppose your DB is scott/tiger@xe.  You'd create it
14070d38af4SMike Bayer# like:
1419ca81f5fSMike Bayer# create public database link test_link connect to scott identified by tiger
1429ca81f5fSMike Bayer# using 'xe';
14370d38af4SMike Bayeroracle_db_link = test_link
14470d38af4SMike Bayer
145649f0675SRodrigo Menezes# host name of a postgres database that has the postgres_fdw extension.
146649f0675SRodrigo Menezes# to create this run:
147649f0675SRodrigo Menezes# CREATE EXTENSION postgres_fdw;
148649f0675SRodrigo Menezes# GRANT USAGE ON FOREIGN DATA WRAPPER postgres_fdw TO public;
149649f0675SRodrigo Menezes# this can be localhost to create a loopback foreign table
1504a4cbe5fSMike Bayer# postgres_test_db_link = localhost
151649f0675SRodrigo Menezes
1521a777863SMike Bayer[db]
1539ca81f5fSMike Bayerdefault = sqlite:///:memory:
1549ca81f5fSMike Bayersqlite = sqlite:///:memory:
155502be87aSFederico Caselliaiosqlite = sqlite+aiosqlite:///:memory:
1569ca81f5fSMike Bayersqlite_file = sqlite:///querytest.db
157502be87aSFederico Caselliaiosqlite_file = sqlite+aiosqlite:///async_querytest.db
1584476dca0SMike Bayerpysqlcipher_file = sqlite+pysqlcipher://:test@/querytest.db.enc
1599ca81f5fSMike Bayerpostgresql = postgresql://scott:tiger@127.0.0.1:5432/test
1602581655cSFederico Caselliasyncpg = postgresql+asyncpg://scott:tiger@127.0.0.1:5432/test
1612581655cSFederico Caselliasyncpg_fallback = postgresql+asyncpg://scott:tiger@127.0.0.1:5432/test?async_fallback=true
1629ca81f5fSMike Bayerpg8000 = postgresql+pg8000://scott:tiger@127.0.0.1:5432/test
1639ca81f5fSMike Bayerpostgresql_psycopg2cffi = postgresql+psycopg2cffi://scott:tiger@127.0.0.1:5432/test
1649ca81f5fSMike Bayermysql = mysql://scott:tiger@127.0.0.1:3306/test?charset=utf8mb4
1659ca81f5fSMike Bayerpymysql = mysql+pymysql://scott:tiger@127.0.0.1:3306/test?charset=utf8mb4
1662581655cSFederico Caselliaiomysql = mysql+aiomysql://scott:tiger@127.0.0.1:3306/test?charset=utf8mb4
1672581655cSFederico Caselliaiomysql_fallback = mysql+aiomysql://scott:tiger@127.0.0.1:3306/test?charset=utf8mb4&async_fallback=true
16811eecfacSlongasyncmy = mysql+asyncmy://scott:tiger@127.0.0.1:3306/test?charset=utf8mb4
16911eecfacSlongasyncmy_fallback = mysql+asyncmy://scott:tiger@127.0.0.1:3306/test?charset=utf8mb4&async_fallback=true
170603f7d30SGeorg Richtermariadb = mariadb://scott:tiger@127.0.0.1:3306/test
1719ca81f5fSMike Bayermssql = mssql+pyodbc://scott:tiger^5HHH@mssql2017:1433/test?driver=ODBC+Driver+13+for+SQL+Server
1729ca81f5fSMike Bayermssql_pymssql = mssql+pymssql://scott:tiger@ms_2008
1739ca81f5fSMike Bayerdocker_mssql = mssql+pymssql://scott:tiger^5HHH@127.0.0.1:1433/test
1749ca81f5fSMike Bayeroracle = oracle://scott:tiger@127.0.0.1:1521
1759ca81f5fSMike Bayeroracle8 = oracle://scott:tiger@127.0.0.1:1521/?use_ansi=0
176