apache-airflow-providers-openlineage 2.0.0rc2__py3-none-any.whl → 2.1.0rc1__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.

@@ -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
- ol_parent_job_properties = _get_parent_job_information_as_spark_properties(context)
86
- return {**properties, **ol_parent_job_properties}
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 DAG, BaseOperator, DagRun, MappedOperator, TaskReschedule
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
- if TYPE_CHECKING:
68
- from openlineage.client.event_v2 import Dataset as OpenLineageDataset
69
- from openlineage.client.facet_v2 import RunFacet, processing_engine_run
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.definitions.asset import Asset
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.on_execute_callback,
569
- not task.on_success_callback,
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.0rc2
3
+ Version: 2.1.0rc1
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-providers-common-compat>=1.3.0rc0
24
- Requires-Dist: apache-airflow-providers-common-sql>=1.20.0rc0
25
23
  Requires-Dist: apache-airflow>=2.9.0rc0
24
+ Requires-Dist: apache-airflow-providers-common-sql>=1.20.0rc0
25
+ Requires-Dist: apache-airflow-providers-common-compat>=1.4.0rc0
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.0.0/changelog.html
31
- Project-URL: Documentation, https://airflow.apache.org/docs/apache-airflow-providers-openlineage/2.0.0
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.0.0.rc2``
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.0.0/>`_.
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.3.0``
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.0.0/changelog.html>`_.
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.0rc1.dist-info/entry_points.txt,sha256=GAx0_i2OeZzqaiiiYuA-xchICDXiCT5kVqpKSxsOjt4,214
30
+ apache_airflow_providers_openlineage-2.1.0rc1.dist-info/WHEEL,sha256=CpUCUxeHQbRN5UGRQHYRJorO5Af-Qy_fHMctcQ8DSGI,82
31
+ apache_airflow_providers_openlineage-2.1.0rc1.dist-info/METADATA,sha256=3QzgEPtZiwzHWKBYvANpUShhidTRpaOVgPIGdZNBikk,5807
32
+ apache_airflow_providers_openlineage-2.1.0rc1.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,,