[tool.poetry] name = "elementary-data" version = "0.26.1" description = "Data monitoring and lineage" authors = ["Elementary"] keywords = ["data", "lineage", "data lineage", "data warehouse", "DWH", "observability", "data monitoring", "data observability", "Snowflake", "BigQuery", "Redshift", "data reliability", "analytics engineering"] license = "Apache-2.0" readme = "README.md" homepage = "https://www.elementary-data.com" repository = "https://github.com/elementary-data/elementary" documentation = "https://docs.elementary-data.com" classifiers = [ "Natural Language :: English", "Intended Audience :: Developers", "License :: OSI Approved :: Apache Software License", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Topic :: Software Development :: Libraries", ] packages = [{include = "elementary"}] [tool.poetry.dependencies] python = ">=3.10,<3.14" click = ">=7.0,<9.0" requests = ">=2.28.1,<3.0.0" urllib3 = ">=2.8.0" # transitive dependency via requests, which caps the major itself idna = ">=3.15" # transitive dependency via requests, floored to address CVE-2026-45409 (GHSA-65pc-fj4g-8rjx) ReDoS in idna.encode() pyasn1 = ">=0.6.4" # transitive dependency via google-auth/pyasn1-modules, floored to address BER/CER/DER decoder DoS advisories cryptography = ">=50.0.0" # transitive dependency via google-auth/azure-storage-blob, floored to address CVE-2026-69247 (PKCS#7 Bleichenbacher oracle) oauthlib = ">=4.0.0" # transitive dependency via databricks-sql-connector/requests-oauthlib, floored to address GHSA-hj66-6f7g-4r5v and GHSA-xpv3-w29h-x7cv beautifulsoup4 = "<5.0.0" ratelimit = "*" posthog = "<3.0.0" boto3 = "<2.0.0" google-cloud-storage = ">=2.4,<3.2" "ruamel.yaml" = "<1.0.0" alive-progress = "<=2.3.1" slack-sdk = ">=3.20.1,<4.0.0" lxml = ">=6.1.0" pydantic = "<3.0" networkx = ">=2.3,<3" packaging = ">=20.9" azure-storage-blob = ">=12.11.0" pymsteams = ">=0.2.2,<1.0.0" tabulate = ">= 0.9.0" tenacity = ">=8.0,<10.0" pytz = ">= 2025.1" # There is intentionally no mandatory dbt dependency: dbt v2 ships as the `dbt` / # `dbt-oss` packages (dbt-core stays on 1.x) and requires no extra alongside # elementary-data, while dbt-core 1.x comes through the adapter extras below. # dbt-core is explicitly constrained in the extras so they can never resolve a # dbt-core 2.x release (the adapters themselves only lower-bound dbt-core). dbt-core = {version = ">=1.8,<2.0.0", optional = true} dbt-snowflake = {version = ">=1.8,<2.0.0", optional = true} dbt-bigquery = {version = ">=1.8,<2.0.0", optional = true} dbt-redshift = {version = ">=1.8,<2.0.0", optional = true} dbt-postgres = {version = ">=1.8,<2.0.0", optional = true} dbt-databricks = {version = ">=1.8,<2.0.0", optional = true} dbt-spark = {version = ">=1.8,<2.0.0", optional = true} dbt-athena-community = {version = ">=1.8,<2.0.0", optional = true} # dbt-athena 1.10.x is incompatible with PyAthena 3.35+; remove when dbt-athena ships boto3 connection manager. pyathena = {version = ">=2.25,<3.35", optional = true} dbt-trino = {version = ">=1.8,<2.0.0", optional = true} dbt-clickhouse = {version = ">=1.8,<2.0.0", optional = true} dbt-duckdb = {version = ">=1.8,<2.0.0", optional = true} dbt-dremio = {version = ">=1.8,<2.0.0", optional = true} dbt-fabric = {version = ">=1.8,<2.0.0", optional = true} # dbt-sqlserver 1.12 moved pyodbc (still its default backend) to the [pyodbc] extra. dbt-sqlserver = {version = ">=1.8,<2.0.0", optional = true, extras = ["pyodbc"]} [tool.poetry.extras] # The extras install the dbt-core 1.x stack (adapter + dbt-core) for a warehouse. # They are not needed with dbt v2 (`pip install dbt` / `dbt-oss`), which has the # adapters built in. The dbt1-* names are the documented ones; the plain # warehouse names are kept as aliases for backward compatibility. dbt1-snowflake = ["dbt-core", "dbt-snowflake"] dbt1-bigquery = ["dbt-core", "dbt-bigquery"] dbt1-redshift = ["dbt-core", "dbt-redshift"] dbt1-postgres = ["dbt-core", "dbt-postgres"] dbt1-databricks = ["dbt-core", "dbt-databricks"] dbt1-spark = ["dbt-core", "dbt-spark"] dbt1-athena = ["dbt-core", "dbt-athena-community", "pyathena"] dbt1-clickhouse = ["dbt-core", "dbt-clickhouse"] dbt1-trino = ["dbt-core", "dbt-trino"] dbt1-duckdb = ["dbt-core", "dbt-duckdb"] dbt1-dremio = ["dbt-core", "dbt-dremio"] dbt1-fabric = ["dbt-core", "dbt-fabric"] dbt1-sqlserver = ["dbt-core", "dbt-sqlserver"] snowflake = ["dbt-core", "dbt-snowflake"] bigquery = ["dbt-core", "dbt-bigquery"] redshift = ["dbt-core", "dbt-redshift"] postgres = ["dbt-core", "dbt-postgres"] databricks = ["dbt-core", "dbt-databricks"] spark = ["dbt-core", "dbt-spark"] athena = ["dbt-core", "dbt-athena-community", "pyathena"] clickhouse = ["dbt-core", "dbt-clickhouse"] trino = ["dbt-core", "dbt-trino"] duckdb = ["dbt-core", "dbt-duckdb"] dremio = ["dbt-core", "dbt-dremio"] fabric = ["dbt-core", "dbt-fabric"] sqlserver = ["dbt-core", "dbt-sqlserver"] # dbt-fabricspark and dbt-vertica are removed from the lockfile resolution because they pin # outdated transitive dependencies (dbt-core==1.8.5, azure-cli pre-release) that block # security patches for deepdiff, protobuf, and pyopenssl. Users who need these adapters # can still install them directly (e.g. pip install dbt-fabricspark dbt-vertica). dbt1-all = ["dbt-core", "dbt-snowflake", "dbt-bigquery", "dbt-redshift", "dbt-postgres", "dbt-databricks", "dbt-spark", "dbt-athena-community", "pyathena", "dbt-trino", "dbt-clickhouse", "dbt-duckdb", "dbt-dremio", "dbt-fabric", "dbt-sqlserver"] all = ["dbt-core", "dbt-snowflake", "dbt-bigquery", "dbt-redshift", "dbt-postgres", "dbt-databricks", "dbt-spark", "dbt-athena-community", "pyathena", "dbt-trino", "dbt-clickhouse", "dbt-duckdb", "dbt-dremio", "dbt-fabric", "dbt-sqlserver"] [build-system] requires = ["poetry-core>=1.0.0"] build-backend = "poetry.core.masonry.api" [tool.poetry.scripts] edr = "elementary.cli.cli:cli"