apache-airflow-providers-openlineage 2.0.0rc2__py3-none-any.whl → 2.1.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of apache-airflow-providers-openlineage might be problematic. Click here for more details.
- airflow/providers/openlineage/LICENSE +0 -52
- airflow/providers/openlineage/__init__.py +1 -1
- airflow/providers/openlineage/conf.py +6 -0
- airflow/providers/openlineage/extractors/base.py +2 -2
- airflow/providers/openlineage/extractors/bash.py +1 -2
- airflow/providers/openlineage/extractors/manager.py +3 -5
- airflow/providers/openlineage/extractors/python.py +1 -2
- airflow/providers/openlineage/get_provider_info.py +21 -13
- airflow/providers/openlineage/plugins/adapter.py +24 -13
- airflow/providers/openlineage/plugins/facets.py +1 -0
- airflow/providers/openlineage/plugins/listener.py +176 -93
- airflow/providers/openlineage/sqlparser.py +111 -10
- airflow/providers/openlineage/utils/selective_enable.py +16 -3
- airflow/providers/openlineage/utils/spark.py +70 -2
- airflow/providers/openlineage/utils/sql.py +2 -1
- airflow/providers/openlineage/utils/utils.py +55 -21
- {apache_airflow_providers_openlineage-2.0.0rc2.dist-info → apache_airflow_providers_openlineage-2.1.0.dist-info}/METADATA +14 -29
- apache_airflow_providers_openlineage-2.1.0.dist-info/RECORD +32 -0
- apache_airflow_providers_openlineage-2.0.0rc2.dist-info/RECORD +0 -32
- {apache_airflow_providers_openlineage-2.0.0rc2.dist-info → apache_airflow_providers_openlineage-2.1.0.dist-info}/WHEEL +0 -0
- {apache_airflow_providers_openlineage-2.0.0rc2.dist-info → apache_airflow_providers_openlineage-2.1.0.dist-info}/entry_points.txt +0 -0
|
@@ -20,6 +20,7 @@ from __future__ import annotations
|
|
|
20
20
|
import logging
|
|
21
21
|
from typing import TYPE_CHECKING
|
|
22
22
|
|
|
23
|
+
from airflow.providers.openlineage.plugins.listener import get_openlineage_listener
|
|
23
24
|
from airflow.providers.openlineage.plugins.macros import (
|
|
24
25
|
lineage_job_name,
|
|
25
26
|
lineage_job_namespace,
|
|
@@ -50,6 +51,39 @@ def _get_parent_job_information_as_spark_properties(context: Context) -> dict:
|
|
|
50
51
|
}
|
|
51
52
|
|
|
52
53
|
|
|
54
|
+
def _get_transport_information_as_spark_properties() -> dict:
|
|
55
|
+
"""Retrieve transport information as Spark properties."""
|
|
56
|
+
transport = get_openlineage_listener().adapter.get_or_create_openlineage_client().transport
|
|
57
|
+
if transport.kind != "http":
|
|
58
|
+
log.info(
|
|
59
|
+
"OpenLineage transport type `%s` does not support automatic "
|
|
60
|
+
"injection of OpenLineage transport information into Spark properties.",
|
|
61
|
+
transport.kind,
|
|
62
|
+
)
|
|
63
|
+
return {}
|
|
64
|
+
|
|
65
|
+
properties = {
|
|
66
|
+
"spark.openlineage.transport.type": transport.kind,
|
|
67
|
+
"spark.openlineage.transport.url": transport.url,
|
|
68
|
+
"spark.openlineage.transport.endpoint": transport.endpoint,
|
|
69
|
+
"spark.openlineage.transport.timeoutInMillis": str(
|
|
70
|
+
int(transport.timeout * 1000) # convert to milliseconds, as required by Spark integration
|
|
71
|
+
),
|
|
72
|
+
}
|
|
73
|
+
if transport.compression:
|
|
74
|
+
properties["spark.openlineage.transport.compression"] = str(transport.compression)
|
|
75
|
+
|
|
76
|
+
if hasattr(transport.config.auth, "api_key") and transport.config.auth.get_bearer():
|
|
77
|
+
properties["spark.openlineage.transport.auth.type"] = "api_key"
|
|
78
|
+
properties["spark.openlineage.transport.auth.apiKey"] = transport.config.auth.get_bearer()
|
|
79
|
+
|
|
80
|
+
if hasattr(transport.config, "custom_headers") and transport.config.custom_headers:
|
|
81
|
+
for key, value in transport.config.custom_headers.items():
|
|
82
|
+
properties[f"spark.openlineage.transport.headers.{key}"] = value
|
|
83
|
+
|
|
84
|
+
return properties
|
|
85
|
+
|
|
86
|
+
|
|
53
87
|
def _is_parent_job_information_present_in_spark_properties(properties: dict) -> bool:
|
|
54
88
|
"""
|
|
55
89
|
Check if any parent job information is present in Spark properties.
|
|
@@ -63,6 +97,19 @@ def _is_parent_job_information_present_in_spark_properties(properties: dict) ->
|
|
|
63
97
|
return any(str(key).startswith("spark.openlineage.parent") for key in properties)
|
|
64
98
|
|
|
65
99
|
|
|
100
|
+
def _is_transport_information_present_in_spark_properties(properties: dict) -> bool:
|
|
101
|
+
"""
|
|
102
|
+
Check if any transport information is present in Spark properties.
|
|
103
|
+
|
|
104
|
+
Args:
|
|
105
|
+
properties: Spark properties.
|
|
106
|
+
|
|
107
|
+
Returns:
|
|
108
|
+
True if transport information is present, False otherwise.
|
|
109
|
+
"""
|
|
110
|
+
return any(str(key).startswith("spark.openlineage.transport") for key in properties)
|
|
111
|
+
|
|
112
|
+
|
|
66
113
|
def inject_parent_job_information_into_spark_properties(properties: dict, context: Context) -> dict:
|
|
67
114
|
"""
|
|
68
115
|
Inject parent job information into Spark properties if not already present.
|
|
@@ -82,5 +129,26 @@ def inject_parent_job_information_into_spark_properties(properties: dict, contex
|
|
|
82
129
|
)
|
|
83
130
|
return properties
|
|
84
131
|
|
|
85
|
-
|
|
86
|
-
|
|
132
|
+
return {**properties, **_get_parent_job_information_as_spark_properties(context)}
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
def inject_transport_information_into_spark_properties(properties: dict, context: Context) -> dict:
|
|
136
|
+
"""
|
|
137
|
+
Inject transport information into Spark properties if not already present.
|
|
138
|
+
|
|
139
|
+
Args:
|
|
140
|
+
properties: Spark properties.
|
|
141
|
+
context: The context containing task instance information.
|
|
142
|
+
|
|
143
|
+
Returns:
|
|
144
|
+
Modified Spark properties with OpenLineage transport information properties injected, if applicable.
|
|
145
|
+
"""
|
|
146
|
+
if _is_transport_information_present_in_spark_properties(properties):
|
|
147
|
+
log.info(
|
|
148
|
+
"Some OpenLineage properties with transport information are already present "
|
|
149
|
+
"in Spark properties. Skipping the injection of OpenLineage "
|
|
150
|
+
"transport information into Spark properties."
|
|
151
|
+
)
|
|
152
|
+
return properties
|
|
153
|
+
|
|
154
|
+
return {**properties, **_get_transport_information_as_spark_properties()}
|
|
@@ -23,9 +23,10 @@ from enum import IntEnum
|
|
|
23
23
|
from typing import TYPE_CHECKING, Optional
|
|
24
24
|
|
|
25
25
|
from attrs import define
|
|
26
|
+
from sqlalchemy import Column, MetaData, Table, and_, or_, union_all
|
|
27
|
+
|
|
26
28
|
from openlineage.client.event_v2 import Dataset
|
|
27
29
|
from openlineage.client.facet_v2 import schema_dataset
|
|
28
|
-
from sqlalchemy import Column, MetaData, Table, and_, or_, union_all
|
|
29
30
|
|
|
30
31
|
if TYPE_CHECKING:
|
|
31
32
|
from sqlalchemy.engine import Engine
|
|
@@ -26,13 +26,11 @@ from importlib import metadata
|
|
|
26
26
|
from typing import TYPE_CHECKING, Any, Callable
|
|
27
27
|
|
|
28
28
|
import attrs
|
|
29
|
-
from openlineage.client.utils import RedactMixin
|
|
30
|
-
from sqlalchemy import exists
|
|
31
29
|
|
|
32
30
|
from airflow import __version__ as AIRFLOW_VERSION
|
|
33
31
|
|
|
34
32
|
# TODO: move this maybe to Airflow's logic?
|
|
35
|
-
from airflow.models import
|
|
33
|
+
from airflow.models import BaseOperator, DagRun, TaskReschedule
|
|
36
34
|
from airflow.providers.openlineage import (
|
|
37
35
|
__version__ as OPENLINEAGE_PROVIDER_VERSION,
|
|
38
36
|
conf,
|
|
@@ -54,33 +52,58 @@ from airflow.providers.openlineage.utils.selective_enable import (
|
|
|
54
52
|
from airflow.providers.openlineage.version_compat import AIRFLOW_V_2_10_PLUS, AIRFLOW_V_3_0_PLUS
|
|
55
53
|
from airflow.sensors.base import BaseSensorOperator
|
|
56
54
|
from airflow.serialization.serialized_objects import SerializedBaseOperator
|
|
57
|
-
from airflow.utils.context import AirflowContextDeprecationWarning
|
|
58
|
-
from airflow.utils.log.secrets_masker import (
|
|
59
|
-
Redactable,
|
|
60
|
-
Redacted,
|
|
61
|
-
SecretsMasker,
|
|
62
|
-
should_hide_value_for_key,
|
|
63
|
-
)
|
|
64
55
|
from airflow.utils.module_loading import import_string
|
|
65
56
|
from airflow.utils.session import NEW_SESSION, provide_session
|
|
57
|
+
from openlineage.client.utils import RedactMixin
|
|
66
58
|
|
|
67
|
-
|
|
68
|
-
from
|
|
69
|
-
|
|
59
|
+
try:
|
|
60
|
+
from airflow.sdk import BaseOperator as SdkBaseOperator
|
|
61
|
+
except ImportError:
|
|
62
|
+
SdkBaseOperator = BaseOperator # type: ignore[misc]
|
|
70
63
|
|
|
64
|
+
if TYPE_CHECKING:
|
|
71
65
|
from airflow.models import TaskInstance
|
|
72
66
|
from airflow.providers.common.compat.assets import Asset
|
|
67
|
+
from airflow.sdk import DAG, MappedOperator
|
|
68
|
+
from airflow.sdk.execution_time.secrets_masker import (
|
|
69
|
+
Redactable,
|
|
70
|
+
Redacted,
|
|
71
|
+
SecretsMasker,
|
|
72
|
+
should_hide_value_for_key,
|
|
73
|
+
)
|
|
73
74
|
from airflow.utils.state import DagRunState, TaskInstanceState
|
|
75
|
+
from openlineage.client.event_v2 import Dataset as OpenLineageDataset
|
|
76
|
+
from openlineage.client.facet_v2 import RunFacet, processing_engine_run
|
|
74
77
|
else:
|
|
78
|
+
try:
|
|
79
|
+
from airflow.sdk import DAG, MappedOperator
|
|
80
|
+
except ImportError:
|
|
81
|
+
from airflow.models import DAG, MappedOperator
|
|
82
|
+
|
|
75
83
|
try:
|
|
76
84
|
from airflow.providers.common.compat.assets import Asset
|
|
77
85
|
except ImportError:
|
|
78
86
|
if AIRFLOW_V_3_0_PLUS:
|
|
79
|
-
from airflow.sdk
|
|
87
|
+
from airflow.sdk import Asset
|
|
80
88
|
else:
|
|
81
89
|
# dataset is renamed to asset since Airflow 3.0
|
|
82
90
|
from airflow.datasets import Dataset as Asset
|
|
83
91
|
|
|
92
|
+
try:
|
|
93
|
+
from airflow.sdk.execution_time.secrets_masker import (
|
|
94
|
+
Redactable,
|
|
95
|
+
Redacted,
|
|
96
|
+
SecretsMasker,
|
|
97
|
+
should_hide_value_for_key,
|
|
98
|
+
)
|
|
99
|
+
except ImportError:
|
|
100
|
+
from airflow.utils.log.secrets_masker import (
|
|
101
|
+
Redactable,
|
|
102
|
+
Redacted,
|
|
103
|
+
SecretsMasker,
|
|
104
|
+
should_hide_value_for_key,
|
|
105
|
+
)
|
|
106
|
+
|
|
84
107
|
log = logging.getLogger(__name__)
|
|
85
108
|
_NOMINAL_TIME_FORMAT = "%Y-%m-%dT%H:%M:%S.%fZ"
|
|
86
109
|
|
|
@@ -90,7 +113,7 @@ def try_import_from_string(string: str) -> Any:
|
|
|
90
113
|
return import_string(string)
|
|
91
114
|
|
|
92
115
|
|
|
93
|
-
def get_operator_class(task: BaseOperator) -> type:
|
|
116
|
+
def get_operator_class(task: BaseOperator | SdkBaseOperator) -> type:
|
|
94
117
|
if task.__class__.__name__ in ("DecoratedMappedOperator", "MappedOperator"):
|
|
95
118
|
return task.operator_class
|
|
96
119
|
return task.__class__
|
|
@@ -153,7 +176,7 @@ def get_user_provided_run_facets(ti: TaskInstance, ti_state: TaskInstanceState)
|
|
|
153
176
|
return custom_facets
|
|
154
177
|
|
|
155
178
|
|
|
156
|
-
def get_fully_qualified_class_name(operator: BaseOperator | MappedOperator) -> str:
|
|
179
|
+
def get_fully_qualified_class_name(operator: BaseOperator | MappedOperator | SdkBaseOperator) -> str:
|
|
157
180
|
if isinstance(operator, (MappedOperator, SerializedBaseOperator)):
|
|
158
181
|
# as in airflow.api_connexion.schemas.common_schema.ClassReferenceSchema
|
|
159
182
|
return operator._task_module + "." + operator._task_type # type: ignore
|
|
@@ -161,17 +184,17 @@ def get_fully_qualified_class_name(operator: BaseOperator | MappedOperator) -> s
|
|
|
161
184
|
return op_class.__module__ + "." + op_class.__name__
|
|
162
185
|
|
|
163
186
|
|
|
164
|
-
def is_operator_disabled(operator: BaseOperator | MappedOperator) -> bool:
|
|
187
|
+
def is_operator_disabled(operator: BaseOperator | MappedOperator | SdkBaseOperator) -> bool:
|
|
165
188
|
return get_fully_qualified_class_name(operator) in conf.disabled_operators()
|
|
166
189
|
|
|
167
190
|
|
|
168
|
-
def is_selective_lineage_enabled(obj: DAG | BaseOperator | MappedOperator) -> bool:
|
|
191
|
+
def is_selective_lineage_enabled(obj: DAG | BaseOperator | MappedOperator | SdkBaseOperator) -> bool:
|
|
169
192
|
"""If selective enable is active check if DAG or Task is enabled to emit events."""
|
|
170
193
|
if not conf.selective_enable():
|
|
171
194
|
return True
|
|
172
195
|
if isinstance(obj, DAG):
|
|
173
196
|
return is_dag_lineage_enabled(obj)
|
|
174
|
-
elif isinstance(obj, (BaseOperator, MappedOperator)):
|
|
197
|
+
elif isinstance(obj, (BaseOperator, MappedOperator, SdkBaseOperator)):
|
|
175
198
|
return is_task_lineage_enabled(obj)
|
|
176
199
|
else:
|
|
177
200
|
raise TypeError("is_selective_lineage_enabled can only be used on DAG or Operator objects")
|
|
@@ -179,6 +202,8 @@ def is_selective_lineage_enabled(obj: DAG | BaseOperator | MappedOperator) -> bo
|
|
|
179
202
|
|
|
180
203
|
@provide_session
|
|
181
204
|
def is_ti_rescheduled_already(ti: TaskInstance, session=NEW_SESSION):
|
|
205
|
+
from sqlalchemy import exists
|
|
206
|
+
|
|
182
207
|
if not isinstance(ti.task, BaseSensorOperator):
|
|
183
208
|
return False
|
|
184
209
|
|
|
@@ -565,8 +590,8 @@ def _emits_ol_events(task: BaseOperator | MappedOperator) -> bool:
|
|
|
565
590
|
is_skipped_as_empty_operator = all(
|
|
566
591
|
(
|
|
567
592
|
task.inherits_from_empty_operator,
|
|
568
|
-
not task
|
|
569
|
-
not task
|
|
593
|
+
not getattr(task, "on_execute_callback", None),
|
|
594
|
+
not getattr(task, "on_success_callback", None),
|
|
570
595
|
not task.outlets,
|
|
571
596
|
)
|
|
572
597
|
)
|
|
@@ -620,6 +645,15 @@ class OpenLineageRedactor(SecretsMasker):
|
|
|
620
645
|
return instance
|
|
621
646
|
|
|
622
647
|
def _redact(self, item: Redactable, name: str | None, depth: int, max_depth: int) -> Redacted:
|
|
648
|
+
if AIRFLOW_V_3_0_PLUS:
|
|
649
|
+
# Keep compatibility for Airflow 2.x, remove when Airflow 3.0 is the minimum version
|
|
650
|
+
class AirflowContextDeprecationWarning(UserWarning):
|
|
651
|
+
pass
|
|
652
|
+
else:
|
|
653
|
+
from airflow.utils.context import ( # type: ignore[attr-defined,no-redef]
|
|
654
|
+
AirflowContextDeprecationWarning,
|
|
655
|
+
)
|
|
656
|
+
|
|
623
657
|
if depth > max_depth:
|
|
624
658
|
return item
|
|
625
659
|
try:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: apache-airflow-providers-openlineage
|
|
3
|
-
Version: 2.0
|
|
3
|
+
Version: 2.1.0
|
|
4
4
|
Summary: Provider package apache-airflow-providers-openlineage for Apache Airflow
|
|
5
5
|
Keywords: airflow-provider,openlineage,airflow,integration
|
|
6
6
|
Author-email: Apache Software Foundation <dev@airflow.apache.org>
|
|
@@ -20,38 +20,22 @@ Classifier: Programming Language :: Python :: 3.10
|
|
|
20
20
|
Classifier: Programming Language :: Python :: 3.11
|
|
21
21
|
Classifier: Programming Language :: Python :: 3.12
|
|
22
22
|
Classifier: Topic :: System :: Monitoring
|
|
23
|
-
Requires-Dist: apache-airflow
|
|
24
|
-
Requires-Dist: apache-airflow-providers-common-sql>=1.20.
|
|
25
|
-
Requires-Dist: apache-airflow>=
|
|
23
|
+
Requires-Dist: apache-airflow>=2.9.0
|
|
24
|
+
Requires-Dist: apache-airflow-providers-common-sql>=1.20.0
|
|
25
|
+
Requires-Dist: apache-airflow-providers-common-compat>=1.4.0
|
|
26
26
|
Requires-Dist: attrs>=22.2
|
|
27
27
|
Requires-Dist: openlineage-integration-common>=1.24.2
|
|
28
28
|
Requires-Dist: openlineage-python>=1.24.2
|
|
29
|
+
Requires-Dist: uuid6>=2024.7.10
|
|
29
30
|
Project-URL: Bug Tracker, https://github.com/apache/airflow/issues
|
|
30
|
-
Project-URL: Changelog, https://airflow.apache.org/docs/apache-airflow-providers-openlineage/2.
|
|
31
|
-
Project-URL: Documentation, https://airflow.apache.org/docs/apache-airflow-providers-openlineage/2.
|
|
31
|
+
Project-URL: Changelog, https://airflow.apache.org/docs/apache-airflow-providers-openlineage/2.1.0/changelog.html
|
|
32
|
+
Project-URL: Documentation, https://airflow.apache.org/docs/apache-airflow-providers-openlineage/2.1.0
|
|
32
33
|
Project-URL: Slack Chat, https://s.apache.org/airflow-slack
|
|
33
34
|
Project-URL: Source Code, https://github.com/apache/airflow
|
|
34
35
|
Project-URL: Twitter, https://x.com/ApacheAirflow
|
|
35
36
|
Project-URL: YouTube, https://www.youtube.com/channel/UCSXwxpWZQ7XZ1WL3wqevChA/
|
|
36
37
|
|
|
37
38
|
|
|
38
|
-
.. Licensed to the Apache Software Foundation (ASF) under one
|
|
39
|
-
or more contributor license agreements. See the NOTICE file
|
|
40
|
-
distributed with this work for additional information
|
|
41
|
-
regarding copyright ownership. The ASF licenses this file
|
|
42
|
-
to you under the Apache License, Version 2.0 (the
|
|
43
|
-
"License"); you may not use this file except in compliance
|
|
44
|
-
with the License. You may obtain a copy of the License at
|
|
45
|
-
|
|
46
|
-
.. http://www.apache.org/licenses/LICENSE-2.0
|
|
47
|
-
|
|
48
|
-
.. Unless required by applicable law or agreed to in writing,
|
|
49
|
-
software distributed under the License is distributed on an
|
|
50
|
-
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
51
|
-
KIND, either express or implied. See the License for the
|
|
52
|
-
specific language governing permissions and limitations
|
|
53
|
-
under the License.
|
|
54
|
-
|
|
55
39
|
.. Licensed to the Apache Software Foundation (ASF) under one
|
|
56
40
|
or more contributor license agreements. See the NOTICE file
|
|
57
41
|
distributed with this work for additional information
|
|
@@ -69,8 +53,7 @@ Project-URL: YouTube, https://www.youtube.com/channel/UCSXwxpWZQ7XZ1WL3wqevChA/
|
|
|
69
53
|
specific language governing permissions and limitations
|
|
70
54
|
under the License.
|
|
71
55
|
|
|
72
|
-
.. NOTE! THIS FILE IS AUTOMATICALLY GENERATED AND WILL BE
|
|
73
|
-
OVERWRITTEN WHEN PREPARING PACKAGES.
|
|
56
|
+
.. NOTE! THIS FILE IS AUTOMATICALLY GENERATED AND WILL BE OVERWRITTEN!
|
|
74
57
|
|
|
75
58
|
.. IF YOU WANT TO MODIFY TEMPLATE FOR THIS FILE, YOU SHOULD MODIFY THE TEMPLATE
|
|
76
59
|
`PROVIDER_README_TEMPLATE.rst.jinja2` IN the `dev/breeze/src/airflow_breeze/templates` DIRECTORY
|
|
@@ -78,7 +61,7 @@ Project-URL: YouTube, https://www.youtube.com/channel/UCSXwxpWZQ7XZ1WL3wqevChA/
|
|
|
78
61
|
|
|
79
62
|
Package ``apache-airflow-providers-openlineage``
|
|
80
63
|
|
|
81
|
-
Release: ``2.
|
|
64
|
+
Release: ``2.1.0``
|
|
82
65
|
|
|
83
66
|
|
|
84
67
|
`OpenLineage <https://openlineage.io/>`__
|
|
@@ -91,7 +74,7 @@ This is a provider package for ``openlineage`` provider. All classes for this pr
|
|
|
91
74
|
are in ``airflow.providers.openlineage`` python package.
|
|
92
75
|
|
|
93
76
|
You can find package information and changelog for the provider
|
|
94
|
-
in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-openlineage/2.
|
|
77
|
+
in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-openlineage/2.1.0/>`_.
|
|
95
78
|
|
|
96
79
|
Installation
|
|
97
80
|
------------
|
|
@@ -110,10 +93,11 @@ PIP package Version required
|
|
|
110
93
|
========================================== ==================
|
|
111
94
|
``apache-airflow`` ``>=2.9.0``
|
|
112
95
|
``apache-airflow-providers-common-sql`` ``>=1.20.0``
|
|
113
|
-
``apache-airflow-providers-common-compat`` ``>=1.
|
|
96
|
+
``apache-airflow-providers-common-compat`` ``>=1.4.0``
|
|
114
97
|
``attrs`` ``>=22.2``
|
|
115
98
|
``openlineage-integration-common`` ``>=1.24.2``
|
|
116
99
|
``openlineage-python`` ``>=1.24.2``
|
|
100
|
+
``uuid6`` ``>=2024.7.10``
|
|
117
101
|
========================================== ==================
|
|
118
102
|
|
|
119
103
|
Cross provider package dependencies
|
|
@@ -137,4 +121,5 @@ Dependent package
|
|
|
137
121
|
================================================================================================================== =================
|
|
138
122
|
|
|
139
123
|
The changelog for the provider package can be found in the
|
|
140
|
-
`changelog <https://airflow.apache.org/docs/apache-airflow-providers-openlineage/2.
|
|
124
|
+
`changelog <https://airflow.apache.org/docs/apache-airflow-providers-openlineage/2.1.0/changelog.html>`_.
|
|
125
|
+
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
airflow/providers/openlineage/LICENSE,sha256=gXPVwptPlW1TJ4HSuG5OMPg-a3h43OGMkZRR1rpwfJA,10850
|
|
2
|
+
airflow/providers/openlineage/__init__.py,sha256=G6A7J4TdV67VWbO5i6nVUMQzuBsvCeRIj9paG5Sxn-k,1498
|
|
3
|
+
airflow/providers/openlineage/conf.py,sha256=aYdLU7iHBdGIU8ZAC5iUiIDgXP9gvP9r_z5hTAbXPOU,5535
|
|
4
|
+
airflow/providers/openlineage/get_provider_info.py,sha256=TV9L58PKSQasYrvTsonyu7Eplbl4gnujkHzXSpqEX6s,9938
|
|
5
|
+
airflow/providers/openlineage/sqlparser.py,sha256=U6JBr-CtFCWbpH6Oc4MZFHNW4eF6q12s1AqW30yO1ng,20340
|
|
6
|
+
airflow/providers/openlineage/version_compat.py,sha256=aHg90_DtgoSnQvILFICexMyNlHlALBdaeWqkX3dFDug,1605
|
|
7
|
+
airflow/providers/openlineage/extractors/__init__.py,sha256=I0X4f6zUniclyD9zT0DFHRImpCpJVP4MkPJT3cd7X5I,1081
|
|
8
|
+
airflow/providers/openlineage/extractors/base.py,sha256=nDBqqDDXAp7kDtlxVO_wb5M4Q3q1zUh_ZDzNXz_NH0Q,6623
|
|
9
|
+
airflow/providers/openlineage/extractors/bash.py,sha256=kF0poDlW-HoAOFINSAd0k3FMU085xzQDtfoSCaE0VxM,2582
|
|
10
|
+
airflow/providers/openlineage/extractors/manager.py,sha256=ZxhmC7k_qDCDHZXqDZUTFIVYD5GM1eyLtFdoju0D6W4,12429
|
|
11
|
+
airflow/providers/openlineage/extractors/python.py,sha256=0IL_9VnCn4Dp3hbVCjWVEUlA9F5PH1c2PqN91ZdyzZs,3170
|
|
12
|
+
airflow/providers/openlineage/facets/AirflowDagRunFacet.json,sha256=ie6c-J3-wGgk80WDTGWePz18o6DbW--TNM7BMF4WfcU,2251
|
|
13
|
+
airflow/providers/openlineage/facets/AirflowDebugRunFacet.json,sha256=_zA5gFqGje5MOH1SmdMeA5ViOHvW_pV4oijEAvkuBbY,768
|
|
14
|
+
airflow/providers/openlineage/facets/AirflowJobFacet.json,sha256=rS9PuPWOi1Jc5B4a5qLxS_Az7Q9Eb3jVYQnN41iXDC0,1187
|
|
15
|
+
airflow/providers/openlineage/facets/AirflowRunFacet.json,sha256=70mEaZShgSJp-2xr0bVvw3ljiGOPEaXD591fhuAQm_o,5953
|
|
16
|
+
airflow/providers/openlineage/facets/AirflowStateRunFacet.json,sha256=xhHQEKD9Jopw-oqbkCCrrwFjfXnxvuJAritsmegKjuQ,937
|
|
17
|
+
airflow/providers/openlineage/facets/__init__.py,sha256=9hdXHABrVpkbpjZgUft39kOFL2xSGeG4GEua0Hmelus,785
|
|
18
|
+
airflow/providers/openlineage/plugins/__init__.py,sha256=9hdXHABrVpkbpjZgUft39kOFL2xSGeG4GEua0Hmelus,785
|
|
19
|
+
airflow/providers/openlineage/plugins/adapter.py,sha256=7LSrXWrDKb8Henv1E6QiS1FcRoYaPhU2MmTC9EPS1-k,20304
|
|
20
|
+
airflow/providers/openlineage/plugins/facets.py,sha256=f0uY9k4bRAN1_n04O8l3PyS9Nys5rPH-eHURGMDZ5Jw,4162
|
|
21
|
+
airflow/providers/openlineage/plugins/listener.py,sha256=z6k1O3OITYO0A6DC0CaA8NwJj_7rjW3I6idKd8NAC50,25450
|
|
22
|
+
airflow/providers/openlineage/plugins/macros.py,sha256=YuS0SlpZ3j2yaMepjNzQ6HCpnM2xTEuixA-0wra-EKU,3260
|
|
23
|
+
airflow/providers/openlineage/plugins/openlineage.py,sha256=HD3mYNPfXd-buZydEpuAY-naVBXhausU2LYUNhL48QA,1906
|
|
24
|
+
airflow/providers/openlineage/utils/__init__.py,sha256=9hdXHABrVpkbpjZgUft39kOFL2xSGeG4GEua0Hmelus,785
|
|
25
|
+
airflow/providers/openlineage/utils/selective_enable.py,sha256=ZJUH_iS0thup2qYAVcjOgNIru6E8bKc56_pNQHuc8Fg,3451
|
|
26
|
+
airflow/providers/openlineage/utils/spark.py,sha256=3JS3Din4pAFyTmetWgCrLS-kYQEEYarIUW-vZnTaGwo,5826
|
|
27
|
+
airflow/providers/openlineage/utils/sql.py,sha256=M8TG5LGlKlfTsuuyrIf2Wx5FI0NJwoCvaECPiZC55jA,9572
|
|
28
|
+
airflow/providers/openlineage/utils/utils.py,sha256=wKK_zojGjbpBZsdB5CPnw6mXvEdaxcljIMpuIzhAb5Y,27443
|
|
29
|
+
apache_airflow_providers_openlineage-2.1.0.dist-info/entry_points.txt,sha256=GAx0_i2OeZzqaiiiYuA-xchICDXiCT5kVqpKSxsOjt4,214
|
|
30
|
+
apache_airflow_providers_openlineage-2.1.0.dist-info/WHEEL,sha256=CpUCUxeHQbRN5UGRQHYRJorO5Af-Qy_fHMctcQ8DSGI,82
|
|
31
|
+
apache_airflow_providers_openlineage-2.1.0.dist-info/METADATA,sha256=urnQSRlYJxFkhlPbBls4ixjMSxKKJlPDOERBioGW3VA,5795
|
|
32
|
+
apache_airflow_providers_openlineage-2.1.0.dist-info/RECORD,,
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
airflow/providers/openlineage/LICENSE,sha256=FFb4jd2AXnOOf7XLP04pQW6jbdhG49TxlGY6fFpCV1Y,13609
|
|
2
|
-
airflow/providers/openlineage/__init__.py,sha256=vYVl7FekcvxnYsRvBd0OwekBxEeFc2Y07L_siKy99Bs,1498
|
|
3
|
-
airflow/providers/openlineage/conf.py,sha256=V6owus58UeqYOBrnSelXgzx4DU-zp0t96LI0phK4cFo,5337
|
|
4
|
-
airflow/providers/openlineage/get_provider_info.py,sha256=jfiqRTfwTWquZHGBKeBddHYyq3GpsoyNgB5RLDeD9AQ,9504
|
|
5
|
-
airflow/providers/openlineage/sqlparser.py,sha256=ENhO_B0tlf5nL7QWlg47TBRl1F-UkJ19IRKCLv-JIo8,15708
|
|
6
|
-
airflow/providers/openlineage/version_compat.py,sha256=aHg90_DtgoSnQvILFICexMyNlHlALBdaeWqkX3dFDug,1605
|
|
7
|
-
airflow/providers/openlineage/extractors/__init__.py,sha256=I0X4f6zUniclyD9zT0DFHRImpCpJVP4MkPJT3cd7X5I,1081
|
|
8
|
-
airflow/providers/openlineage/extractors/base.py,sha256=vaIg8HBj0crvzqoxiD252rG4IHMKJ81pGYmcDOlqJXk,6623
|
|
9
|
-
airflow/providers/openlineage/extractors/bash.py,sha256=3aR0PXs8fzRLibRxXN1R8wMZnGzyCur7mjpy8e5GC4A,2583
|
|
10
|
-
airflow/providers/openlineage/extractors/manager.py,sha256=E48sKXko0xwdDesMzboorMNvk8nPg4qBNXw_g_NDLJg,12383
|
|
11
|
-
airflow/providers/openlineage/extractors/python.py,sha256=hVWOplMlBimrpPKPeW6vm75a8OmAYMU1oJzqMz8Jh90,3171
|
|
12
|
-
airflow/providers/openlineage/facets/AirflowDagRunFacet.json,sha256=ie6c-J3-wGgk80WDTGWePz18o6DbW--TNM7BMF4WfcU,2251
|
|
13
|
-
airflow/providers/openlineage/facets/AirflowDebugRunFacet.json,sha256=_zA5gFqGje5MOH1SmdMeA5ViOHvW_pV4oijEAvkuBbY,768
|
|
14
|
-
airflow/providers/openlineage/facets/AirflowJobFacet.json,sha256=rS9PuPWOi1Jc5B4a5qLxS_Az7Q9Eb3jVYQnN41iXDC0,1187
|
|
15
|
-
airflow/providers/openlineage/facets/AirflowRunFacet.json,sha256=70mEaZShgSJp-2xr0bVvw3ljiGOPEaXD591fhuAQm_o,5953
|
|
16
|
-
airflow/providers/openlineage/facets/AirflowStateRunFacet.json,sha256=xhHQEKD9Jopw-oqbkCCrrwFjfXnxvuJAritsmegKjuQ,937
|
|
17
|
-
airflow/providers/openlineage/facets/__init__.py,sha256=9hdXHABrVpkbpjZgUft39kOFL2xSGeG4GEua0Hmelus,785
|
|
18
|
-
airflow/providers/openlineage/plugins/__init__.py,sha256=9hdXHABrVpkbpjZgUft39kOFL2xSGeG4GEua0Hmelus,785
|
|
19
|
-
airflow/providers/openlineage/plugins/adapter.py,sha256=Q88_OlbWM40GAgDgMsdS-fgnnWXh8PPZtX4GzBF5_XE,19694
|
|
20
|
-
airflow/providers/openlineage/plugins/facets.py,sha256=VvyMYR6ONkC95q5FdNmohv0scbA1Ej_B5cQ97as5GvA,4161
|
|
21
|
-
airflow/providers/openlineage/plugins/listener.py,sha256=4CPJdqkdSssKIh18W-yKuACm2Sr619bAT7vZzavxnHU,22424
|
|
22
|
-
airflow/providers/openlineage/plugins/macros.py,sha256=YuS0SlpZ3j2yaMepjNzQ6HCpnM2xTEuixA-0wra-EKU,3260
|
|
23
|
-
airflow/providers/openlineage/plugins/openlineage.py,sha256=HD3mYNPfXd-buZydEpuAY-naVBXhausU2LYUNhL48QA,1906
|
|
24
|
-
airflow/providers/openlineage/utils/__init__.py,sha256=9hdXHABrVpkbpjZgUft39kOFL2xSGeG4GEua0Hmelus,785
|
|
25
|
-
airflow/providers/openlineage/utils/selective_enable.py,sha256=dFJ7wK7J_-BFwcOKp9tqFOSrASV3lmLv7HtRkEuMk3Q,3087
|
|
26
|
-
airflow/providers/openlineage/utils/spark.py,sha256=kP-qFHPBPeymXKRv2O-JCY9PpPA-sMp5AnazNgmHzOM,3027
|
|
27
|
-
airflow/providers/openlineage/utils/sql.py,sha256=vkKrrdENEMVG8gtzV6yuTXMa2Z9fBAEXmxDVIDaVncI,9571
|
|
28
|
-
airflow/providers/openlineage/utils/utils.py,sha256=sj-VOrPKSVeNDscMpwOaK8R6aqu2Z_nnTtkpffP5zRE,26278
|
|
29
|
-
apache_airflow_providers_openlineage-2.0.0rc2.dist-info/entry_points.txt,sha256=GAx0_i2OeZzqaiiiYuA-xchICDXiCT5kVqpKSxsOjt4,214
|
|
30
|
-
apache_airflow_providers_openlineage-2.0.0rc2.dist-info/WHEEL,sha256=CpUCUxeHQbRN5UGRQHYRJorO5Af-Qy_fHMctcQ8DSGI,82
|
|
31
|
-
apache_airflow_providers_openlineage-2.0.0rc2.dist-info/METADATA,sha256=PkeGL8P2TuDsH1j1sI3FlTjVqlC_Kp9f0Ef2Ajo8z0Y,6544
|
|
32
|
-
apache_airflow_providers_openlineage-2.0.0rc2.dist-info/RECORD,,
|
|
File without changes
|