click>=8.1
pyyaml>=6.0
jsonschema>=4.22
rich>=13.7
pydantic>=2.7
typing-extensions>=4.8
jinja2>=3.1.6
httpx>=0.27
h11>=0.16
requests>=2.32.5
litellm<2,>=1.83.7
python-dotenv>=1.0
cryptography>=46.0.7
keyring>=24.0
pydantic-settings>=2.0
mcp<2.0,>=1.20
sqlglot>=25.0
open-data-contract-standard>=3.1.2

[:platform_system == "Windows"]
colorama>=0.4.6

[all]
data-product-forge[aws,copilot,dev,docs,gcp,local,odps,postgres,snowflake,tui,vector,viz]

[aws]
boto3>=1.34

[catalogs]
data-product-forge[snowflake]
data-product-forge[gcp]
data-product-forge[aws]
data-product-forge[databricks]
data-product-forge[datahub]
data-product-forge[keyring]

[copilot]
pyarrow>=14
fastavro>=1.9

[databricks]
databricks-sdk>=0.20

[datahub]
acryl-datahub>=0.13

[dev]
pytest>=7.4
pytest-cov>=4.1
pytest-asyncio>=0.23
pytest-randomly>=3.15
pytest-timeout>=2.3
pytest-xdist>=3.5
respx>=0.21
hypothesis>=6.100
deepdiff>=7.0
mypy>=1.10
ruff>=0.5
types-PyYAML>=6.0.12
black==26.5.1
requests>=2.32.5
import-linter>=2.0

[docs]
mkdocs>=1.6
mkdocs-material>=9.5

[gcp]
google-auth>=2.29
google-auth-oauthlib>=1.2
google-cloud-bigquery>=3.20
google-cloud-storage>=2.16
google-cloud-dataplex>=1.0

[gcp:python_version >= "3.10"]
google-cloud-iam>=2.15
dbt-bigquery>=1.7

[keyring]

[litellm]

[local]
duckdb>=1.0
pandas>=2.2

[odcs-strict]
vowl>=0.0.2

[odps]
ruamel.yaml>=0.18

[opds]
data-product-forge[odps]

[postgres]
psycopg[binary]>=3.1

[sdk]
data-product-forge-sdk<1,>=0.9

[snowflake]
snowflake-connector-python>=4.4

[snowflake:python_version >= "3.10"]
dbt-snowflake>=1.7

[test-emulators]
moto[glue,server]>=5
fakesnow>=0.9

[test-emulators-heavy]
google-auth>=2.29
google-cloud-bigquery>=3.20
google-cloud-storage>=2.16
google-cloud-pubsub>=2.38
boto3>=1.34

[tui]
textual>=0.58

[vector]
sqlite-vec>=0.1

[viz]
graphviz>=0.20
