Metadata-Version: 2.3
Name: openlineage-integration-common
Version: 1.55.0
Summary: OpenLineage common python library for integrations
Keywords: openlineage
Author: OpenLineage
License: Apache-2.0
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Requires-Dist: attrs>=19.3.0
Requires-Dist: jinja2>=2.11.3
Requires-Dist: openlineage-python
Requires-Dist: openlineage-sql>=1.55.0
Requires-Dist: pyyaml>=5.3.1
Requires-Dist: google-api-core>=1.26.3 ; extra == 'bigquery'
Requires-Dist: google-auth>=1.30.0 ; extra == 'bigquery'
Requires-Dist: google-cloud-bigquery>=3,<4.0.0 ; extra == 'bigquery'
Requires-Dist: google-cloud-core>=1.6.0 ; extra == 'bigquery'
Requires-Dist: google-crc32c>=1.1.2 ; extra == 'bigquery'
Requires-Dist: google-api-core>=1.26.3 ; extra == 'dev'
Requires-Dist: google-auth>=1.30.0 ; extra == 'dev'
Requires-Dist: google-cloud-bigquery>=3,<4.0.0 ; extra == 'dev'
Requires-Dist: google-cloud-core>=1.6.0 ; extra == 'dev'
Requires-Dist: google-crc32c>=1.1.2 ; extra == 'dev'
Requires-Dist: great-expectations>=1.0.0 ; extra == 'dev'
Requires-Dist: sqlalchemy>=1.3.24,<2.0.0 ; extra == 'dev'
Requires-Dist: boto3>=1.15.0 ; extra == 'dev'
Requires-Dist: pytest ; extra == 'dev'
Requires-Dist: pytest-cov ; extra == 'dev'
Requires-Dist: pytest-mock ; extra == 'dev'
Requires-Dist: mock ; extra == 'dev'
Requires-Dist: pandas ; extra == 'dev'
Requires-Dist: jinja2 ; extra == 'dev'
Requires-Dist: python-dateutil ; extra == 'dev'
Requires-Dist: mypy>=0.960 ; extra == 'dev'
Requires-Dist: types-python-dateutil ; extra == 'dev'
Requires-Dist: types-pyyaml ; extra == 'dev'
Requires-Dist: ruff ; extra == 'dev'
Requires-Dist: google-api-core>=1.26.3 ; extra == 'dev-no-parser'
Requires-Dist: google-auth>=1.30.0 ; extra == 'dev-no-parser'
Requires-Dist: google-cloud-bigquery>=3,<4.0.0 ; extra == 'dev-no-parser'
Requires-Dist: google-cloud-core>=1.6.0 ; extra == 'dev-no-parser'
Requires-Dist: google-crc32c>=1.1.2 ; extra == 'dev-no-parser'
Requires-Dist: great-expectations>=1.0.0 ; extra == 'dev-no-parser'
Requires-Dist: sqlalchemy>=1.3.24,<2.0.0 ; extra == 'dev-no-parser'
Requires-Dist: boto3>=1.15.0 ; extra == 'dev-no-parser'
Requires-Dist: pytest ; extra == 'dev-no-parser'
Requires-Dist: pytest-cov ; extra == 'dev-no-parser'
Requires-Dist: pytest-mock ; extra == 'dev-no-parser'
Requires-Dist: mock ; extra == 'dev-no-parser'
Requires-Dist: pandas ; extra == 'dev-no-parser'
Requires-Dist: jinja2 ; extra == 'dev-no-parser'
Requires-Dist: python-dateutil ; extra == 'dev-no-parser'
Requires-Dist: mypy>=0.960 ; extra == 'dev-no-parser'
Requires-Dist: types-python-dateutil ; extra == 'dev-no-parser'
Requires-Dist: types-pyyaml ; extra == 'dev-no-parser'
Requires-Dist: great-expectations>=1.0.0 ; extra == 'great-expectations'
Requires-Dist: sqlalchemy>=1.3.24,<2.0.0 ; extra == 'great-expectations'
Requires-Dist: boto3>=1.15.0 ; extra == 'redshift'
Requires-Python: >=3.10
Project-URL: Homepage, https://openlineage.io/
Project-URL: Source, https://github.com/OpenLineage/OpenLineage/tree/main/integration/common
Provides-Extra: bigquery
Provides-Extra: dbt
Provides-Extra: dev
Provides-Extra: dev-no-parser
Provides-Extra: great-expectations
Provides-Extra: redshift
Provides-Extra: tests
Description-Content-Type: text/markdown

# OpenLineage Integration Common

Common modules for OpenLineage integrations.

For setting up a development environment, see the [Python development setup guide](https://openlineage.io/docs/client/python/development/setup).

## SQL parser defaults

Integrations can pass their active database and schema to qualify unqualified
tables and input column origins:

```python
from openlineage.common.sql import parse

metadata = parse(
    "INSERT INTO target SELECT id FROM source",
    dialect="postgres",
    default_schema="public",
    default_database="mydb",
)
```

Explicit SQL qualifiers and dialect-specific `USE` statements take precedence
over the supplied defaults. Defaults are scoped to each parse call; callers must
provide their current connection context explicitly.

`default_database` is the third (database) level of a `database.schema.table`
name. For dialects with only one namespace level above the table, such as MySQL,
Hive, or Spark without a catalog, the parser reads a two-part name `x.t` as
schema `x`. For these dialects, pass the connection's database or namespace as
`default_schema`, not `default_database`:

```python
# MySQL connection to database "mydb"
parse("INSERT INTO mydb.t SELECT * FROM t", dialect="mysql", default_schema="mydb")
# input and output are both mydb.t
```

Passing `default_database="mydb"` instead would name the input `mydb.t` and the
output `mydb.mydb.t`.
