Skip to content

Commit b867a74

Browse files
committed
[DOP-32998] Make tag facets immutable
1 parent 75608d2 commit b867a74

File tree

5 files changed

+23
-10
lines changed

5 files changed

+23
-10
lines changed

data_rentgen/consumer/extractors/generic/run.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
OpenLineageParentJob,
2121
OpenLineageParentRunFacet,
2222
)
23+
from data_rentgen.openlineage.run_facets.run_tags import OpenLineageRunTagsFacetField
2324

2425

2526
class RunExtractorMixin(ABC):
@@ -103,8 +104,10 @@ def _add_openlineage_client_version_tag(self, run: RunDTO, event: OpenLineageRun
103104
if not event.run.facets.tags:
104105
return run
105106

106-
for i, raw_tag in enumerate(event.run.facets.tags.tags.copy()):
107+
run_tags: list[OpenLineageRunTagsFacetField] = []
108+
for raw_tag in event.run.facets.tags.tags:
107109
if raw_tag.key != "openlineage_client_version":
110+
run_tags.append(raw_tag)
108111
continue
109112

110113
# https://github.com/OpenLineage/OpenLineage/blob/1.42.1/client/python/src/openlineage/client/client.py#L460
@@ -113,8 +116,9 @@ def _add_openlineage_client_version_tag(self, run: RunDTO, event: OpenLineageRun
113116
value=raw_tag.value,
114117
)
115118
run.job.tag_values.add(client_tag_value)
116-
# avoid passing this tag to _enrich_run_tags
117-
event.run.facets.tags.tags.pop(i)
119+
120+
# avoid passing this tag to _enrich_run_tags
121+
event.run.facets.tags.tags[:] = run_tags
118122
return run
119123

120124
# Job and Run tags are different from OpenLineage spec perspective,

data_rentgen/consumer/extractors/impl/dbt.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
OpenLineageSymlinkIdentifier,
1212
)
1313
from data_rentgen.openlineage.run_event import OpenLineageRunEvent
14+
from data_rentgen.openlineage.run_facets import OpenLineageRunTagsFacet, OpenLineageRunTagsFacetField
1415

1516

1617
class DbtExtractor(GenericExtractor):
@@ -62,14 +63,19 @@ def _enrich_run_tags(self, run: RunDTO, event: OpenLineageRunEvent) -> RunDTO:
6263
if not event.run.facets.tags:
6364
return run
6465

66+
run_tags: list[OpenLineageRunTagsFacetField] = []
6567
for raw_tag in event.run.facets.tags.tags:
6668
if raw_tag.value == "true" and ":" in raw_tag.key:
6769
# not implemented in OpenLineage yet
6870
# https://github.com/OpenLineage/OpenLineage/issues/4281
6971

70-
raw_tag.key, raw_tag.value, raw_tag.source = parse_kv_tag(
72+
key, value, source = parse_kv_tag(
7173
raw_tag.key,
7274
default_source=raw_tag.source or "DBT",
7375
)
76+
run_tags.append(OpenLineageRunTagsFacetField(key=key, value=value, source=source))
77+
else:
78+
run_tags.append(raw_tag)
7479

80+
object.__setattr__(event.run.facets, "tags", OpenLineageRunTagsFacet(tags=run_tags))
7581
return super()._enrich_run_tags(run, event)

data_rentgen/openlineage/dataset_facets/dataset_tags.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
# SPDX-FileCopyrightText: 2024-present MTS PJSC
22
# SPDX-License-Identifier: Apache-2.0
33

4-
from pydantic import BaseModel, Field
4+
from pydantic import Field
55

6+
from data_rentgen.openlineage.base import OpenLineageBase
67
from data_rentgen.openlineage.dataset_facets.base import OpenLineageDatasetFacet
78

89

9-
class OpenLineageDatasetTagsFacetField(BaseModel):
10+
class OpenLineageDatasetTagsFacetField(OpenLineageBase):
1011
"""Dataset tags field type.
1112
See [TagsDatasetFacet](https://github.com/OpenLineage/OpenLineage/blob/main/spec/facets/TagsDatasetFacet.json).
1213
"""

data_rentgen/openlineage/job_facets/job_tags.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
# SPDX-FileCopyrightText: 2024-present MTS PJSC
22
# SPDX-License-Identifier: Apache-2.0
33

4-
from pydantic import BaseModel, Field
4+
from pydantic import Field
55

6+
from data_rentgen.openlineage.base import OpenLineageBase
67
from data_rentgen.openlineage.job_facets.base import OpenLineageJobFacet
78

89

9-
class OpenLineageJobTagsFacetField(BaseModel):
10+
class OpenLineageJobTagsFacetField(OpenLineageBase):
1011
"""Job tags field type.
1112
See [TagsJobFacet](https://github.com/OpenLineage/OpenLineage/blob/main/spec/facets/TagsJobFacet.json).
1213
"""

data_rentgen/openlineage/run_facets/run_tags.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
# SPDX-FileCopyrightText: 2024-present MTS PJSC
22
# SPDX-License-Identifier: Apache-2.0
33

4-
from pydantic import BaseModel, Field
4+
from pydantic import Field
55

6+
from data_rentgen.openlineage.base import OpenLineageBase
67
from data_rentgen.openlineage.run_facets.base import OpenLineageRunFacet
78

89

9-
class OpenLineageRunTagsFacetField(BaseModel):
10+
class OpenLineageRunTagsFacetField(OpenLineageBase):
1011
"""Run tags field type.
1112
See [TagsRunFacet](https://github.com/OpenLineage/OpenLineage/blob/main/spec/facets/TagsRunFacet.json).
1213
"""

0 commit comments

Comments
 (0)