timeout_decorator
PyYAML>=3.10
db-facts>=5
chardet>=3
tenacity>=8.0.1
config-resolver<6,>=5.0.1
typing_inspect
typing-extensions

[airflow]
apache-airflow>=2
apache-airflow-providers-amazon
apache-airflow-providers-google

[alldb]
records-mover[bigquery,mysql,postgres-binary,redshift-binary,vertica]

[aws]
awscli>=1.32.14
boto3
s3-concat>=0.1.7
records-mover[smart-open]

[bigquery]
sqlalchemy-bigquery
records-mover[db,gcs]

[cli]
odictliteral
jsonschema
docstring_parser
requests

[db]
sqlalchemy<2,>=1.4
sqlalchemy_privileges>=0.2.0

[docs]
sphinx>=5
sphinx-rtd-theme>=1
sphinx-argparse
readthedocs-sphinx-ext>=2
recommonmark
records-mover[airflow,aws,cli,db]

[gcs]
google-cloud-storage
records-mover[smart-open]

[google-api-client]
google-api-python-client>=1.8.0
grpcio<2.0dev,>=1.29.0

[gsheets]
google
google_auth_httplib2
PyOpenSSL
records-mover[google-api-client]

[itest]
jsonschema
pytz
wheel
parameterized
records-mover[google-api-client,pytest]

[mysql]
pymysql
records-mover[db]

[pandas]
pandas<2,>=1.3.5

[parquet]
pyarrow

[postgres-base]
records-mover[db]

[postgres-binary]
psycopg2-binary
records-mover[postgres-base]

[postgres-source]
psycopg2
records-mover[postgres-base]

[pytest]
pytest<8.2
pytest-cov

[redshift-base]
sqlalchemy-redshift>=0.7.7
records-mover[aws,db]

[redshift-binary]
psycopg2-binary
records-mover[redshift-base]

[redshift-source]
psycopg2
records-mover[redshift-base]

[smart-open]
smart_open>=2

[typecheck]
mypy>=1.7.1
lxml
sqlalchemy-stubs>=0.3
types-pytz
types-mock

[unittest]
coverage
mock
records-mover[airflow,alldb,aws,cli,gcs,gsheets,pandas,pytest]

[vertica]
sqlalchemy-vertica-python>=0.5.5
records-mover[db]
