dagster-datacontract 0.2.2__tar.gz → 0.2.3__tar.gz
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.
- {dagster_datacontract-0.2.2 → dagster_datacontract-0.2.3}/PKG-INFO +5 -4
- {dagster_datacontract-0.2.2 → dagster_datacontract-0.2.3}/README.md +3 -3
- {dagster_datacontract-0.2.2 → dagster_datacontract-0.2.3}/dagster_datacontract/__init__.py +22 -6
- {dagster_datacontract-0.2.2 → dagster_datacontract-0.2.3}/dagster_datacontract.egg-info/PKG-INFO +5 -4
- {dagster_datacontract-0.2.2 → dagster_datacontract-0.2.3}/dagster_datacontract.egg-info/requires.txt +1 -0
- {dagster_datacontract-0.2.2 → dagster_datacontract-0.2.3}/pyproject.toml +8 -1
- {dagster_datacontract-0.2.2 → dagster_datacontract-0.2.3}/LICENSE +0 -0
- {dagster_datacontract-0.2.2 → dagster_datacontract-0.2.3}/dagster_datacontract.egg-info/SOURCES.txt +0 -0
- {dagster_datacontract-0.2.2 → dagster_datacontract-0.2.3}/dagster_datacontract.egg-info/dependency_links.txt +0 -0
- {dagster_datacontract-0.2.2 → dagster_datacontract-0.2.3}/dagster_datacontract.egg-info/top_level.txt +0 -0
- {dagster_datacontract-0.2.2 → dagster_datacontract-0.2.3}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: dagster-datacontract
|
3
|
-
Version: 0.2.
|
3
|
+
Version: 0.2.3
|
4
4
|
Summary: Load metadata and asset check spesifications from data contracts.
|
5
5
|
Author-email: Fredrik Bakken <fredrik@dataheim.io>
|
6
6
|
Requires-Python: >=3.10.0
|
@@ -8,6 +8,7 @@ Description-Content-Type: text/markdown
|
|
8
8
|
License-File: LICENSE
|
9
9
|
Requires-Dist: dagster>=1.10.10
|
10
10
|
Requires-Dist: datacontract-cli>=0.10.23
|
11
|
+
Requires-Dist: loguru>=0.7.3
|
11
12
|
Dynamic: license-file
|
12
13
|
|
13
14
|
# dagster-datacontract
|
@@ -31,18 +32,18 @@ from datetime import timedelta
|
|
31
32
|
from pathlib import Path
|
32
33
|
|
33
34
|
import dagster as dg
|
34
|
-
import requests
|
35
35
|
import polars as pl
|
36
|
+
import requests
|
36
37
|
from datacontract.data_contract import DataContract
|
37
38
|
|
38
39
|
from dagster_datacontract import DataContractLoader
|
39
40
|
|
40
|
-
|
41
41
|
asset_name = "yellow_taxi_trip_records"
|
42
42
|
data_contract = DataContractLoader(
|
43
43
|
asset_name=asset_name,
|
44
44
|
data_contract=DataContract(
|
45
45
|
data_contract_file="./example/datacontract.yml",
|
46
|
+
server="production",
|
46
47
|
),
|
47
48
|
)
|
48
49
|
|
@@ -51,7 +52,7 @@ data_contract = DataContractLoader(
|
|
51
52
|
name=asset_name,
|
52
53
|
metadata=data_contract.metadata,
|
53
54
|
tags=data_contract.tags,
|
54
|
-
description=data_contract.
|
55
|
+
description=data_contract.description,
|
55
56
|
owners=data_contract.owner,
|
56
57
|
code_version=data_contract.version,
|
57
58
|
)
|
@@ -19,18 +19,18 @@ from datetime import timedelta
|
|
19
19
|
from pathlib import Path
|
20
20
|
|
21
21
|
import dagster as dg
|
22
|
-
import requests
|
23
22
|
import polars as pl
|
23
|
+
import requests
|
24
24
|
from datacontract.data_contract import DataContract
|
25
25
|
|
26
26
|
from dagster_datacontract import DataContractLoader
|
27
27
|
|
28
|
-
|
29
28
|
asset_name = "yellow_taxi_trip_records"
|
30
29
|
data_contract = DataContractLoader(
|
31
30
|
asset_name=asset_name,
|
32
31
|
data_contract=DataContract(
|
33
32
|
data_contract_file="./example/datacontract.yml",
|
33
|
+
server="production",
|
34
34
|
),
|
35
35
|
)
|
36
36
|
|
@@ -39,7 +39,7 @@ data_contract = DataContractLoader(
|
|
39
39
|
name=asset_name,
|
40
40
|
metadata=data_contract.metadata,
|
41
41
|
tags=data_contract.tags,
|
42
|
-
description=data_contract.
|
42
|
+
description=data_contract.description,
|
43
43
|
owners=data_contract.owner,
|
44
44
|
code_version=data_contract.version,
|
45
45
|
)
|
@@ -1,4 +1,5 @@
|
|
1
1
|
import json
|
2
|
+
import re
|
2
3
|
import textwrap
|
3
4
|
from datetime import timedelta
|
4
5
|
from typing import Any
|
@@ -7,6 +8,7 @@ import dagster as dg
|
|
7
8
|
from dagster import TableColumnLineage, TableSchema
|
8
9
|
from datacontract.data_contract import DataContract
|
9
10
|
from datacontract.model.run import ResultEnum
|
11
|
+
from loguru import logger
|
10
12
|
|
11
13
|
|
12
14
|
class DataContractLoader:
|
@@ -67,12 +69,26 @@ class DataContractLoader:
|
|
67
69
|
}
|
68
70
|
|
69
71
|
def _load_tags(self) -> dict[str, str]:
|
70
|
-
tags
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
}
|
72
|
+
"""Safely load tags from data contract.
|
73
|
+
|
74
|
+
More information about Dagster tags:
|
75
|
+
https://docs.dagster.io/guides/build/assets/metadata-and-tags/tags
|
76
|
+
"""
|
77
|
+
key_pattern = re.compile(r"^[\w.-]{1,63}$")
|
78
|
+
val_pattern = re.compile(r"^[\w.-]{0,63}$")
|
79
|
+
|
80
|
+
tags = {}
|
81
|
+
|
82
|
+
for item in self.data_contract_specification.tags:
|
83
|
+
if ":" in item:
|
84
|
+
key, val = map(str.strip, item.split(":", 1))
|
85
|
+
else:
|
86
|
+
key, val = item.strip(), ""
|
87
|
+
|
88
|
+
if key_pattern.match(key) and val_pattern.match(val):
|
89
|
+
tags[key] = val
|
90
|
+
else:
|
91
|
+
logger.warning(f"Ignoring invalid tag: {item}")
|
76
92
|
|
77
93
|
return tags
|
78
94
|
|
{dagster_datacontract-0.2.2 → dagster_datacontract-0.2.3}/dagster_datacontract.egg-info/PKG-INFO
RENAMED
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: dagster-datacontract
|
3
|
-
Version: 0.2.
|
3
|
+
Version: 0.2.3
|
4
4
|
Summary: Load metadata and asset check spesifications from data contracts.
|
5
5
|
Author-email: Fredrik Bakken <fredrik@dataheim.io>
|
6
6
|
Requires-Python: >=3.10.0
|
@@ -8,6 +8,7 @@ Description-Content-Type: text/markdown
|
|
8
8
|
License-File: LICENSE
|
9
9
|
Requires-Dist: dagster>=1.10.10
|
10
10
|
Requires-Dist: datacontract-cli>=0.10.23
|
11
|
+
Requires-Dist: loguru>=0.7.3
|
11
12
|
Dynamic: license-file
|
12
13
|
|
13
14
|
# dagster-datacontract
|
@@ -31,18 +32,18 @@ from datetime import timedelta
|
|
31
32
|
from pathlib import Path
|
32
33
|
|
33
34
|
import dagster as dg
|
34
|
-
import requests
|
35
35
|
import polars as pl
|
36
|
+
import requests
|
36
37
|
from datacontract.data_contract import DataContract
|
37
38
|
|
38
39
|
from dagster_datacontract import DataContractLoader
|
39
40
|
|
40
|
-
|
41
41
|
asset_name = "yellow_taxi_trip_records"
|
42
42
|
data_contract = DataContractLoader(
|
43
43
|
asset_name=asset_name,
|
44
44
|
data_contract=DataContract(
|
45
45
|
data_contract_file="./example/datacontract.yml",
|
46
|
+
server="production",
|
46
47
|
),
|
47
48
|
)
|
48
49
|
|
@@ -51,7 +52,7 @@ data_contract = DataContractLoader(
|
|
51
52
|
name=asset_name,
|
52
53
|
metadata=data_contract.metadata,
|
53
54
|
tags=data_contract.tags,
|
54
|
-
description=data_contract.
|
55
|
+
description=data_contract.description,
|
55
56
|
owners=data_contract.owner,
|
56
57
|
code_version=data_contract.version,
|
57
58
|
)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
[project]
|
2
2
|
name = "dagster-datacontract"
|
3
|
-
version = "0.2.
|
3
|
+
version = "0.2.3"
|
4
4
|
description = "Load metadata and asset check spesifications from data contracts."
|
5
5
|
authors = [
|
6
6
|
{ name = "Fredrik Bakken", email = "fredrik@dataheim.io" }
|
@@ -10,6 +10,7 @@ requires-python = ">=3.10.0"
|
|
10
10
|
dependencies = [
|
11
11
|
"dagster>=1.10.10",
|
12
12
|
"datacontract-cli>=0.10.23",
|
13
|
+
"loguru>=0.7.3",
|
13
14
|
]
|
14
15
|
|
15
16
|
[dependency-groups]
|
@@ -23,3 +24,9 @@ dev = [
|
|
23
24
|
[build-system]
|
24
25
|
requires = ["setuptools"]
|
25
26
|
build-backend = "setuptools.build_meta"
|
27
|
+
|
28
|
+
[tool.ruff.lint]
|
29
|
+
extend-select = [
|
30
|
+
"UP", # pyupgrade
|
31
|
+
"I", # re-order imports in alphabetic order
|
32
|
+
]
|
File without changes
|
{dagster_datacontract-0.2.2 → dagster_datacontract-0.2.3}/dagster_datacontract.egg-info/SOURCES.txt
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|