acryl-datahub-gx-plugin 1.3.1.10__tar.gz → 1.4.0rc1__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.
- {acryl_datahub_gx_plugin-1.3.1.10 → acryl_datahub_gx_plugin-1.4.0rc1}/PKG-INFO +58 -58
- {acryl_datahub_gx_plugin-1.3.1.10 → acryl_datahub_gx_plugin-1.4.0rc1}/src/acryl_datahub_gx_plugin.egg-info/PKG-INFO +58 -58
- {acryl_datahub_gx_plugin-1.3.1.10 → acryl_datahub_gx_plugin-1.4.0rc1}/src/acryl_datahub_gx_plugin.egg-info/requires.txt +57 -57
- {acryl_datahub_gx_plugin-1.3.1.10 → acryl_datahub_gx_plugin-1.4.0rc1}/src/datahub_gx_plugin/_version.py +1 -1
- {acryl_datahub_gx_plugin-1.3.1.10 → acryl_datahub_gx_plugin-1.4.0rc1}/src/datahub_gx_plugin/action.py +83 -4
- {acryl_datahub_gx_plugin-1.3.1.10 → acryl_datahub_gx_plugin-1.4.0rc1}/README.md +0 -0
- {acryl_datahub_gx_plugin-1.3.1.10 → acryl_datahub_gx_plugin-1.4.0rc1}/pyproject.toml +0 -0
- {acryl_datahub_gx_plugin-1.3.1.10 → acryl_datahub_gx_plugin-1.4.0rc1}/setup.cfg +0 -0
- {acryl_datahub_gx_plugin-1.3.1.10 → acryl_datahub_gx_plugin-1.4.0rc1}/setup.py +0 -0
- {acryl_datahub_gx_plugin-1.3.1.10 → acryl_datahub_gx_plugin-1.4.0rc1}/src/acryl_datahub_gx_plugin.egg-info/SOURCES.txt +0 -0
- {acryl_datahub_gx_plugin-1.3.1.10 → acryl_datahub_gx_plugin-1.4.0rc1}/src/acryl_datahub_gx_plugin.egg-info/dependency_links.txt +0 -0
- {acryl_datahub_gx_plugin-1.3.1.10 → acryl_datahub_gx_plugin-1.4.0rc1}/src/acryl_datahub_gx_plugin.egg-info/entry_points.txt +0 -0
- {acryl_datahub_gx_plugin-1.3.1.10 → acryl_datahub_gx_plugin-1.4.0rc1}/src/acryl_datahub_gx_plugin.egg-info/not-zip-safe +0 -0
- {acryl_datahub_gx_plugin-1.3.1.10 → acryl_datahub_gx_plugin-1.4.0rc1}/src/acryl_datahub_gx_plugin.egg-info/top_level.txt +0 -0
- {acryl_datahub_gx_plugin-1.3.1.10 → acryl_datahub_gx_plugin-1.4.0rc1}/src/datahub_gx_plugin/__init__.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: acryl-datahub-gx-plugin
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.4.0rc1
|
|
4
4
|
Summary: Datahub GX plugin to capture executions and send to Datahub
|
|
5
5
|
Home-page: https://docs.datahub.com/
|
|
6
6
|
License: Apache-2.0
|
|
@@ -21,87 +21,87 @@ Classifier: Environment :: MacOS X
|
|
|
21
21
|
Classifier: Topic :: Software Development
|
|
22
22
|
Requires-Python: >=3.10
|
|
23
23
|
Description-Content-Type: text/markdown
|
|
24
|
-
Requires-Dist: great-expectations<1.0.0,>=0.17.15
|
|
25
24
|
Requires-Dist: sqlalchemy<2,>=1.4.39
|
|
26
|
-
Requires-Dist:
|
|
25
|
+
Requires-Dist: acryl-datahub[datahub-rest,sql-parser]==1.4.0rc1
|
|
27
26
|
Requires-Dist: pydantic>=2.1.0
|
|
28
|
-
Requires-Dist:
|
|
29
|
-
Requires-Dist:
|
|
27
|
+
Requires-Dist: requests_file
|
|
28
|
+
Requires-Dist: great-expectations<1.0.0,>=0.17.15
|
|
30
29
|
Requires-Dist: traitlets!=5.2.2
|
|
30
|
+
Requires-Dist: requests
|
|
31
31
|
Provides-Extra: ignore
|
|
32
32
|
Provides-Extra: dev
|
|
33
|
-
Requires-Dist:
|
|
34
|
-
Requires-Dist: types-cachetools; extra == "dev"
|
|
35
|
-
Requires-Dist: sqlalchemy-stubs; extra == "dev"
|
|
36
|
-
Requires-Dist: packaging; extra == "dev"
|
|
37
|
-
Requires-Dist: types-requests; extra == "dev"
|
|
38
|
-
Requires-Dist: build; extra == "dev"
|
|
39
|
-
Requires-Dist: types-PyYAML; extra == "dev"
|
|
40
|
-
Requires-Dist: types-toml; extra == "dev"
|
|
33
|
+
Requires-Dist: tox; extra == "dev"
|
|
41
34
|
Requires-Dist: freezegun; extra == "dev"
|
|
42
|
-
Requires-Dist:
|
|
43
|
-
Requires-Dist: types-freezegun; extra == "dev"
|
|
44
|
-
Requires-Dist: requests-mock; extra == "dev"
|
|
45
|
-
Requires-Dist: pytest>=6.2.2; extra == "dev"
|
|
46
|
-
Requires-Dist: pydantic>=2.1.0; extra == "dev"
|
|
47
|
-
Requires-Dist: requests_file; extra == "dev"
|
|
48
|
-
Requires-Dist: types-python-dateutil; extra == "dev"
|
|
35
|
+
Requires-Dist: great-expectations<1.0.0,>=0.17.15; extra == "dev"
|
|
49
36
|
Requires-Dist: types-tabulate; extra == "dev"
|
|
50
|
-
Requires-Dist:
|
|
51
|
-
Requires-Dist:
|
|
37
|
+
Requires-Dist: types-cachetools; extra == "dev"
|
|
38
|
+
Requires-Dist: types-python-dateutil; extra == "dev"
|
|
52
39
|
Requires-Dist: sqlalchemy<2,>=1.4.39; extra == "dev"
|
|
53
|
-
Requires-Dist:
|
|
54
|
-
Requires-Dist:
|
|
40
|
+
Requires-Dist: pydantic>=2.1.0; extra == "dev"
|
|
41
|
+
Requires-Dist: twine; extra == "dev"
|
|
42
|
+
Requires-Dist: pytest>=6.2.2; extra == "dev"
|
|
43
|
+
Requires-Dist: deepdiff!=8.0.0; extra == "dev"
|
|
44
|
+
Requires-Dist: acryl-datahub[datahub-rest,sql-parser]==1.4.0rc1; extra == "dev"
|
|
55
45
|
Requires-Dist: types-six; extra == "dev"
|
|
56
|
-
Requires-Dist: types-
|
|
57
|
-
Requires-Dist:
|
|
46
|
+
Requires-Dist: types-PyYAML; extra == "dev"
|
|
47
|
+
Requires-Dist: build; extra == "dev"
|
|
48
|
+
Requires-Dist: types-requests; extra == "dev"
|
|
58
49
|
Requires-Dist: types-dataclasses; extra == "dev"
|
|
50
|
+
Requires-Dist: mypy==1.17.1; extra == "dev"
|
|
51
|
+
Requires-Dist: ruff==0.11.7; extra == "dev"
|
|
59
52
|
Requires-Dist: coverage>=5.1; extra == "dev"
|
|
53
|
+
Requires-Dist: pytest-asyncio>=0.16.0; extra == "dev"
|
|
54
|
+
Requires-Dist: requests_file; extra == "dev"
|
|
55
|
+
Requires-Dist: sqlalchemy-stubs; extra == "dev"
|
|
56
|
+
Requires-Dist: types-toml; extra == "dev"
|
|
57
|
+
Requires-Dist: types-freezegun; extra == "dev"
|
|
58
|
+
Requires-Dist: packaging; extra == "dev"
|
|
59
|
+
Requires-Dist: types-click==0.1.12; extra == "dev"
|
|
60
|
+
Requires-Dist: requests-mock; extra == "dev"
|
|
60
61
|
Requires-Dist: pytest-cov>=2.8.1; extra == "dev"
|
|
61
|
-
Requires-Dist:
|
|
62
|
-
Requires-Dist: types-setuptools; extra == "dev"
|
|
62
|
+
Requires-Dist: types-pytz; extra == "dev"
|
|
63
63
|
Requires-Dist: jsonpickle; extra == "dev"
|
|
64
|
-
Requires-Dist:
|
|
65
|
-
Requires-Dist:
|
|
64
|
+
Requires-Dist: types-setuptools; extra == "dev"
|
|
65
|
+
Requires-Dist: requests; extra == "dev"
|
|
66
66
|
Requires-Dist: traitlets!=5.2.2; extra == "dev"
|
|
67
67
|
Provides-Extra: integration-tests
|
|
68
|
-
Requires-Dist:
|
|
69
|
-
Requires-Dist: types-cachetools; extra == "integration-tests"
|
|
70
|
-
Requires-Dist: sqlalchemy-stubs; extra == "integration-tests"
|
|
71
|
-
Requires-Dist: packaging; extra == "integration-tests"
|
|
72
|
-
Requires-Dist: types-requests; extra == "integration-tests"
|
|
73
|
-
Requires-Dist: build; extra == "integration-tests"
|
|
74
|
-
Requires-Dist: types-PyYAML; extra == "integration-tests"
|
|
75
|
-
Requires-Dist: types-toml; extra == "integration-tests"
|
|
68
|
+
Requires-Dist: tox; extra == "integration-tests"
|
|
76
69
|
Requires-Dist: freezegun; extra == "integration-tests"
|
|
77
|
-
Requires-Dist:
|
|
78
|
-
Requires-Dist: types-freezegun; extra == "integration-tests"
|
|
79
|
-
Requires-Dist: requests-mock; extra == "integration-tests"
|
|
80
|
-
Requires-Dist: pytest>=6.2.2; extra == "integration-tests"
|
|
81
|
-
Requires-Dist: pydantic>=2.1.0; extra == "integration-tests"
|
|
82
|
-
Requires-Dist: requests_file; extra == "integration-tests"
|
|
83
|
-
Requires-Dist: types-python-dateutil; extra == "integration-tests"
|
|
70
|
+
Requires-Dist: great-expectations<1.0.0,>=0.17.15; extra == "integration-tests"
|
|
84
71
|
Requires-Dist: types-tabulate; extra == "integration-tests"
|
|
85
|
-
Requires-Dist:
|
|
86
|
-
Requires-Dist:
|
|
72
|
+
Requires-Dist: types-cachetools; extra == "integration-tests"
|
|
73
|
+
Requires-Dist: types-python-dateutil; extra == "integration-tests"
|
|
87
74
|
Requires-Dist: sqlalchemy<2,>=1.4.39; extra == "integration-tests"
|
|
88
|
-
Requires-Dist:
|
|
89
|
-
Requires-Dist:
|
|
75
|
+
Requires-Dist: pydantic>=2.1.0; extra == "integration-tests"
|
|
76
|
+
Requires-Dist: twine; extra == "integration-tests"
|
|
77
|
+
Requires-Dist: pytest>=6.2.2; extra == "integration-tests"
|
|
78
|
+
Requires-Dist: deepdiff!=8.0.0; extra == "integration-tests"
|
|
79
|
+
Requires-Dist: acryl-datahub[datahub-rest,sql-parser]==1.4.0rc1; extra == "integration-tests"
|
|
90
80
|
Requires-Dist: types-six; extra == "integration-tests"
|
|
91
|
-
Requires-Dist: types-
|
|
92
|
-
Requires-Dist:
|
|
81
|
+
Requires-Dist: types-PyYAML; extra == "integration-tests"
|
|
82
|
+
Requires-Dist: build; extra == "integration-tests"
|
|
83
|
+
Requires-Dist: types-requests; extra == "integration-tests"
|
|
93
84
|
Requires-Dist: types-dataclasses; extra == "integration-tests"
|
|
85
|
+
Requires-Dist: mypy==1.17.1; extra == "integration-tests"
|
|
86
|
+
Requires-Dist: ruff==0.11.7; extra == "integration-tests"
|
|
87
|
+
Requires-Dist: psycopg2-binary; extra == "integration-tests"
|
|
88
|
+
Requires-Dist: pyspark; extra == "integration-tests"
|
|
94
89
|
Requires-Dist: coverage>=5.1; extra == "integration-tests"
|
|
90
|
+
Requires-Dist: pytest-asyncio>=0.16.0; extra == "integration-tests"
|
|
95
91
|
Requires-Dist: pytest-docker>=1.1.0; extra == "integration-tests"
|
|
92
|
+
Requires-Dist: requests_file; extra == "integration-tests"
|
|
93
|
+
Requires-Dist: sqlalchemy-stubs; extra == "integration-tests"
|
|
94
|
+
Requires-Dist: types-toml; extra == "integration-tests"
|
|
95
|
+
Requires-Dist: types-freezegun; extra == "integration-tests"
|
|
96
|
+
Requires-Dist: packaging; extra == "integration-tests"
|
|
97
|
+
Requires-Dist: types-click==0.1.12; extra == "integration-tests"
|
|
98
|
+
Requires-Dist: requests-mock; extra == "integration-tests"
|
|
99
|
+
Requires-Dist: acryl-datahub[testing-utils]==1.4.0rc1; extra == "integration-tests"
|
|
96
100
|
Requires-Dist: pytest-cov>=2.8.1; extra == "integration-tests"
|
|
97
|
-
Requires-Dist:
|
|
98
|
-
Requires-Dist: acryl-datahub[testing-utils]==1.3.1.10; extra == "integration-tests"
|
|
99
|
-
Requires-Dist: types-setuptools; extra == "integration-tests"
|
|
101
|
+
Requires-Dist: types-pytz; extra == "integration-tests"
|
|
100
102
|
Requires-Dist: jsonpickle; extra == "integration-tests"
|
|
101
|
-
Requires-Dist:
|
|
102
|
-
Requires-Dist:
|
|
103
|
-
Requires-Dist: twine; extra == "integration-tests"
|
|
104
|
-
Requires-Dist: psycopg2-binary; extra == "integration-tests"
|
|
103
|
+
Requires-Dist: types-setuptools; extra == "integration-tests"
|
|
104
|
+
Requires-Dist: requests; extra == "integration-tests"
|
|
105
105
|
Requires-Dist: traitlets!=5.2.2; extra == "integration-tests"
|
|
106
106
|
Dynamic: classifier
|
|
107
107
|
Dynamic: description
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: acryl-datahub-gx-plugin
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.4.0rc1
|
|
4
4
|
Summary: Datahub GX plugin to capture executions and send to Datahub
|
|
5
5
|
Home-page: https://docs.datahub.com/
|
|
6
6
|
License: Apache-2.0
|
|
@@ -21,87 +21,87 @@ Classifier: Environment :: MacOS X
|
|
|
21
21
|
Classifier: Topic :: Software Development
|
|
22
22
|
Requires-Python: >=3.10
|
|
23
23
|
Description-Content-Type: text/markdown
|
|
24
|
-
Requires-Dist: great-expectations<1.0.0,>=0.17.15
|
|
25
24
|
Requires-Dist: sqlalchemy<2,>=1.4.39
|
|
26
|
-
Requires-Dist:
|
|
25
|
+
Requires-Dist: acryl-datahub[datahub-rest,sql-parser]==1.4.0rc1
|
|
27
26
|
Requires-Dist: pydantic>=2.1.0
|
|
28
|
-
Requires-Dist:
|
|
29
|
-
Requires-Dist:
|
|
27
|
+
Requires-Dist: requests_file
|
|
28
|
+
Requires-Dist: great-expectations<1.0.0,>=0.17.15
|
|
30
29
|
Requires-Dist: traitlets!=5.2.2
|
|
30
|
+
Requires-Dist: requests
|
|
31
31
|
Provides-Extra: ignore
|
|
32
32
|
Provides-Extra: dev
|
|
33
|
-
Requires-Dist:
|
|
34
|
-
Requires-Dist: types-cachetools; extra == "dev"
|
|
35
|
-
Requires-Dist: sqlalchemy-stubs; extra == "dev"
|
|
36
|
-
Requires-Dist: packaging; extra == "dev"
|
|
37
|
-
Requires-Dist: types-requests; extra == "dev"
|
|
38
|
-
Requires-Dist: build; extra == "dev"
|
|
39
|
-
Requires-Dist: types-PyYAML; extra == "dev"
|
|
40
|
-
Requires-Dist: types-toml; extra == "dev"
|
|
33
|
+
Requires-Dist: tox; extra == "dev"
|
|
41
34
|
Requires-Dist: freezegun; extra == "dev"
|
|
42
|
-
Requires-Dist:
|
|
43
|
-
Requires-Dist: types-freezegun; extra == "dev"
|
|
44
|
-
Requires-Dist: requests-mock; extra == "dev"
|
|
45
|
-
Requires-Dist: pytest>=6.2.2; extra == "dev"
|
|
46
|
-
Requires-Dist: pydantic>=2.1.0; extra == "dev"
|
|
47
|
-
Requires-Dist: requests_file; extra == "dev"
|
|
48
|
-
Requires-Dist: types-python-dateutil; extra == "dev"
|
|
35
|
+
Requires-Dist: great-expectations<1.0.0,>=0.17.15; extra == "dev"
|
|
49
36
|
Requires-Dist: types-tabulate; extra == "dev"
|
|
50
|
-
Requires-Dist:
|
|
51
|
-
Requires-Dist:
|
|
37
|
+
Requires-Dist: types-cachetools; extra == "dev"
|
|
38
|
+
Requires-Dist: types-python-dateutil; extra == "dev"
|
|
52
39
|
Requires-Dist: sqlalchemy<2,>=1.4.39; extra == "dev"
|
|
53
|
-
Requires-Dist:
|
|
54
|
-
Requires-Dist:
|
|
40
|
+
Requires-Dist: pydantic>=2.1.0; extra == "dev"
|
|
41
|
+
Requires-Dist: twine; extra == "dev"
|
|
42
|
+
Requires-Dist: pytest>=6.2.2; extra == "dev"
|
|
43
|
+
Requires-Dist: deepdiff!=8.0.0; extra == "dev"
|
|
44
|
+
Requires-Dist: acryl-datahub[datahub-rest,sql-parser]==1.4.0rc1; extra == "dev"
|
|
55
45
|
Requires-Dist: types-six; extra == "dev"
|
|
56
|
-
Requires-Dist: types-
|
|
57
|
-
Requires-Dist:
|
|
46
|
+
Requires-Dist: types-PyYAML; extra == "dev"
|
|
47
|
+
Requires-Dist: build; extra == "dev"
|
|
48
|
+
Requires-Dist: types-requests; extra == "dev"
|
|
58
49
|
Requires-Dist: types-dataclasses; extra == "dev"
|
|
50
|
+
Requires-Dist: mypy==1.17.1; extra == "dev"
|
|
51
|
+
Requires-Dist: ruff==0.11.7; extra == "dev"
|
|
59
52
|
Requires-Dist: coverage>=5.1; extra == "dev"
|
|
53
|
+
Requires-Dist: pytest-asyncio>=0.16.0; extra == "dev"
|
|
54
|
+
Requires-Dist: requests_file; extra == "dev"
|
|
55
|
+
Requires-Dist: sqlalchemy-stubs; extra == "dev"
|
|
56
|
+
Requires-Dist: types-toml; extra == "dev"
|
|
57
|
+
Requires-Dist: types-freezegun; extra == "dev"
|
|
58
|
+
Requires-Dist: packaging; extra == "dev"
|
|
59
|
+
Requires-Dist: types-click==0.1.12; extra == "dev"
|
|
60
|
+
Requires-Dist: requests-mock; extra == "dev"
|
|
60
61
|
Requires-Dist: pytest-cov>=2.8.1; extra == "dev"
|
|
61
|
-
Requires-Dist:
|
|
62
|
-
Requires-Dist: types-setuptools; extra == "dev"
|
|
62
|
+
Requires-Dist: types-pytz; extra == "dev"
|
|
63
63
|
Requires-Dist: jsonpickle; extra == "dev"
|
|
64
|
-
Requires-Dist:
|
|
65
|
-
Requires-Dist:
|
|
64
|
+
Requires-Dist: types-setuptools; extra == "dev"
|
|
65
|
+
Requires-Dist: requests; extra == "dev"
|
|
66
66
|
Requires-Dist: traitlets!=5.2.2; extra == "dev"
|
|
67
67
|
Provides-Extra: integration-tests
|
|
68
|
-
Requires-Dist:
|
|
69
|
-
Requires-Dist: types-cachetools; extra == "integration-tests"
|
|
70
|
-
Requires-Dist: sqlalchemy-stubs; extra == "integration-tests"
|
|
71
|
-
Requires-Dist: packaging; extra == "integration-tests"
|
|
72
|
-
Requires-Dist: types-requests; extra == "integration-tests"
|
|
73
|
-
Requires-Dist: build; extra == "integration-tests"
|
|
74
|
-
Requires-Dist: types-PyYAML; extra == "integration-tests"
|
|
75
|
-
Requires-Dist: types-toml; extra == "integration-tests"
|
|
68
|
+
Requires-Dist: tox; extra == "integration-tests"
|
|
76
69
|
Requires-Dist: freezegun; extra == "integration-tests"
|
|
77
|
-
Requires-Dist:
|
|
78
|
-
Requires-Dist: types-freezegun; extra == "integration-tests"
|
|
79
|
-
Requires-Dist: requests-mock; extra == "integration-tests"
|
|
80
|
-
Requires-Dist: pytest>=6.2.2; extra == "integration-tests"
|
|
81
|
-
Requires-Dist: pydantic>=2.1.0; extra == "integration-tests"
|
|
82
|
-
Requires-Dist: requests_file; extra == "integration-tests"
|
|
83
|
-
Requires-Dist: types-python-dateutil; extra == "integration-tests"
|
|
70
|
+
Requires-Dist: great-expectations<1.0.0,>=0.17.15; extra == "integration-tests"
|
|
84
71
|
Requires-Dist: types-tabulate; extra == "integration-tests"
|
|
85
|
-
Requires-Dist:
|
|
86
|
-
Requires-Dist:
|
|
72
|
+
Requires-Dist: types-cachetools; extra == "integration-tests"
|
|
73
|
+
Requires-Dist: types-python-dateutil; extra == "integration-tests"
|
|
87
74
|
Requires-Dist: sqlalchemy<2,>=1.4.39; extra == "integration-tests"
|
|
88
|
-
Requires-Dist:
|
|
89
|
-
Requires-Dist:
|
|
75
|
+
Requires-Dist: pydantic>=2.1.0; extra == "integration-tests"
|
|
76
|
+
Requires-Dist: twine; extra == "integration-tests"
|
|
77
|
+
Requires-Dist: pytest>=6.2.2; extra == "integration-tests"
|
|
78
|
+
Requires-Dist: deepdiff!=8.0.0; extra == "integration-tests"
|
|
79
|
+
Requires-Dist: acryl-datahub[datahub-rest,sql-parser]==1.4.0rc1; extra == "integration-tests"
|
|
90
80
|
Requires-Dist: types-six; extra == "integration-tests"
|
|
91
|
-
Requires-Dist: types-
|
|
92
|
-
Requires-Dist:
|
|
81
|
+
Requires-Dist: types-PyYAML; extra == "integration-tests"
|
|
82
|
+
Requires-Dist: build; extra == "integration-tests"
|
|
83
|
+
Requires-Dist: types-requests; extra == "integration-tests"
|
|
93
84
|
Requires-Dist: types-dataclasses; extra == "integration-tests"
|
|
85
|
+
Requires-Dist: mypy==1.17.1; extra == "integration-tests"
|
|
86
|
+
Requires-Dist: ruff==0.11.7; extra == "integration-tests"
|
|
87
|
+
Requires-Dist: psycopg2-binary; extra == "integration-tests"
|
|
88
|
+
Requires-Dist: pyspark; extra == "integration-tests"
|
|
94
89
|
Requires-Dist: coverage>=5.1; extra == "integration-tests"
|
|
90
|
+
Requires-Dist: pytest-asyncio>=0.16.0; extra == "integration-tests"
|
|
95
91
|
Requires-Dist: pytest-docker>=1.1.0; extra == "integration-tests"
|
|
92
|
+
Requires-Dist: requests_file; extra == "integration-tests"
|
|
93
|
+
Requires-Dist: sqlalchemy-stubs; extra == "integration-tests"
|
|
94
|
+
Requires-Dist: types-toml; extra == "integration-tests"
|
|
95
|
+
Requires-Dist: types-freezegun; extra == "integration-tests"
|
|
96
|
+
Requires-Dist: packaging; extra == "integration-tests"
|
|
97
|
+
Requires-Dist: types-click==0.1.12; extra == "integration-tests"
|
|
98
|
+
Requires-Dist: requests-mock; extra == "integration-tests"
|
|
99
|
+
Requires-Dist: acryl-datahub[testing-utils]==1.4.0rc1; extra == "integration-tests"
|
|
96
100
|
Requires-Dist: pytest-cov>=2.8.1; extra == "integration-tests"
|
|
97
|
-
Requires-Dist:
|
|
98
|
-
Requires-Dist: acryl-datahub[testing-utils]==1.3.1.10; extra == "integration-tests"
|
|
99
|
-
Requires-Dist: types-setuptools; extra == "integration-tests"
|
|
101
|
+
Requires-Dist: types-pytz; extra == "integration-tests"
|
|
100
102
|
Requires-Dist: jsonpickle; extra == "integration-tests"
|
|
101
|
-
Requires-Dist:
|
|
102
|
-
Requires-Dist:
|
|
103
|
-
Requires-Dist: twine; extra == "integration-tests"
|
|
104
|
-
Requires-Dist: psycopg2-binary; extra == "integration-tests"
|
|
103
|
+
Requires-Dist: types-setuptools; extra == "integration-tests"
|
|
104
|
+
Requires-Dist: requests; extra == "integration-tests"
|
|
105
105
|
Requires-Dist: traitlets!=5.2.2; extra == "integration-tests"
|
|
106
106
|
Dynamic: classifier
|
|
107
107
|
Dynamic: description
|
|
@@ -1,85 +1,85 @@
|
|
|
1
|
-
great-expectations<1.0.0,>=0.17.15
|
|
2
1
|
sqlalchemy<2,>=1.4.39
|
|
3
|
-
|
|
2
|
+
acryl-datahub[datahub-rest,sql-parser]==1.4.0rc1
|
|
4
3
|
pydantic>=2.1.0
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
requests_file
|
|
5
|
+
great-expectations<1.0.0,>=0.17.15
|
|
7
6
|
traitlets!=5.2.2
|
|
7
|
+
requests
|
|
8
8
|
|
|
9
9
|
[dev]
|
|
10
|
-
|
|
11
|
-
types-cachetools
|
|
12
|
-
sqlalchemy-stubs
|
|
13
|
-
packaging
|
|
14
|
-
types-requests
|
|
15
|
-
build
|
|
16
|
-
types-PyYAML
|
|
17
|
-
types-toml
|
|
10
|
+
tox
|
|
18
11
|
freezegun
|
|
19
|
-
|
|
20
|
-
types-freezegun
|
|
21
|
-
requests-mock
|
|
22
|
-
pytest>=6.2.2
|
|
23
|
-
pydantic>=2.1.0
|
|
24
|
-
requests_file
|
|
25
|
-
types-python-dateutil
|
|
12
|
+
great-expectations<1.0.0,>=0.17.15
|
|
26
13
|
types-tabulate
|
|
27
|
-
|
|
28
|
-
|
|
14
|
+
types-cachetools
|
|
15
|
+
types-python-dateutil
|
|
29
16
|
sqlalchemy<2,>=1.4.39
|
|
30
|
-
|
|
31
|
-
|
|
17
|
+
pydantic>=2.1.0
|
|
18
|
+
twine
|
|
19
|
+
pytest>=6.2.2
|
|
20
|
+
deepdiff!=8.0.0
|
|
21
|
+
acryl-datahub[datahub-rest,sql-parser]==1.4.0rc1
|
|
32
22
|
types-six
|
|
33
|
-
types-
|
|
34
|
-
|
|
23
|
+
types-PyYAML
|
|
24
|
+
build
|
|
25
|
+
types-requests
|
|
35
26
|
types-dataclasses
|
|
27
|
+
mypy==1.17.1
|
|
28
|
+
ruff==0.11.7
|
|
36
29
|
coverage>=5.1
|
|
30
|
+
pytest-asyncio>=0.16.0
|
|
31
|
+
requests_file
|
|
32
|
+
sqlalchemy-stubs
|
|
33
|
+
types-toml
|
|
34
|
+
types-freezegun
|
|
35
|
+
packaging
|
|
36
|
+
types-click==0.1.12
|
|
37
|
+
requests-mock
|
|
37
38
|
pytest-cov>=2.8.1
|
|
38
|
-
|
|
39
|
-
types-setuptools
|
|
39
|
+
types-pytz
|
|
40
40
|
jsonpickle
|
|
41
|
-
|
|
42
|
-
|
|
41
|
+
types-setuptools
|
|
42
|
+
requests
|
|
43
43
|
traitlets!=5.2.2
|
|
44
44
|
|
|
45
45
|
[ignore]
|
|
46
46
|
|
|
47
47
|
[integration-tests]
|
|
48
|
-
|
|
49
|
-
types-cachetools
|
|
50
|
-
sqlalchemy-stubs
|
|
51
|
-
packaging
|
|
52
|
-
types-requests
|
|
53
|
-
build
|
|
54
|
-
types-PyYAML
|
|
55
|
-
types-toml
|
|
48
|
+
tox
|
|
56
49
|
freezegun
|
|
57
|
-
|
|
58
|
-
types-freezegun
|
|
59
|
-
requests-mock
|
|
60
|
-
pytest>=6.2.2
|
|
61
|
-
pydantic>=2.1.0
|
|
62
|
-
requests_file
|
|
63
|
-
types-python-dateutil
|
|
50
|
+
great-expectations<1.0.0,>=0.17.15
|
|
64
51
|
types-tabulate
|
|
65
|
-
|
|
66
|
-
|
|
52
|
+
types-cachetools
|
|
53
|
+
types-python-dateutil
|
|
67
54
|
sqlalchemy<2,>=1.4.39
|
|
68
|
-
|
|
69
|
-
|
|
55
|
+
pydantic>=2.1.0
|
|
56
|
+
twine
|
|
57
|
+
pytest>=6.2.2
|
|
58
|
+
deepdiff!=8.0.0
|
|
59
|
+
acryl-datahub[datahub-rest,sql-parser]==1.4.0rc1
|
|
70
60
|
types-six
|
|
71
|
-
types-
|
|
72
|
-
|
|
61
|
+
types-PyYAML
|
|
62
|
+
build
|
|
63
|
+
types-requests
|
|
73
64
|
types-dataclasses
|
|
65
|
+
mypy==1.17.1
|
|
66
|
+
ruff==0.11.7
|
|
67
|
+
psycopg2-binary
|
|
68
|
+
pyspark
|
|
74
69
|
coverage>=5.1
|
|
70
|
+
pytest-asyncio>=0.16.0
|
|
75
71
|
pytest-docker>=1.1.0
|
|
72
|
+
requests_file
|
|
73
|
+
sqlalchemy-stubs
|
|
74
|
+
types-toml
|
|
75
|
+
types-freezegun
|
|
76
|
+
packaging
|
|
77
|
+
types-click==0.1.12
|
|
78
|
+
requests-mock
|
|
79
|
+
acryl-datahub[testing-utils]==1.4.0rc1
|
|
76
80
|
pytest-cov>=2.8.1
|
|
77
|
-
|
|
78
|
-
acryl-datahub[testing-utils]==1.3.1.10
|
|
79
|
-
types-setuptools
|
|
81
|
+
types-pytz
|
|
80
82
|
jsonpickle
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
twine
|
|
84
|
-
psycopg2-binary
|
|
83
|
+
types-setuptools
|
|
84
|
+
requests
|
|
85
85
|
traitlets!=5.2.2
|
|
@@ -38,9 +38,11 @@ from sqlalchemy.engine.url import make_url
|
|
|
38
38
|
|
|
39
39
|
import datahub.emitter.mce_builder as builder
|
|
40
40
|
from datahub.cli.env_utils import get_boolean_env_variable
|
|
41
|
+
from datahub.emitter.aspect import JSON_PATCH_CONTENT_TYPE
|
|
41
42
|
from datahub.emitter.mcp import MetadataChangeProposalWrapper
|
|
42
43
|
from datahub.emitter.rest_emitter import DatahubRestEmitter
|
|
43
44
|
from datahub.emitter.serialization_helper import pre_json_transform
|
|
45
|
+
from datahub.ingestion.graph.client import DataHubGraph
|
|
44
46
|
from datahub.ingestion.graph.config import ClientMode
|
|
45
47
|
from datahub.ingestion.source.sql.sqlalchemy_uri_mapper import (
|
|
46
48
|
get_platform_from_sqlalchemy_uri,
|
|
@@ -62,9 +64,16 @@ from datahub.metadata.com.linkedin.pegasus2avro.assertion import (
|
|
|
62
64
|
DatasetAssertionScope,
|
|
63
65
|
)
|
|
64
66
|
from datahub.metadata.com.linkedin.pegasus2avro.common import DataPlatformInstance
|
|
65
|
-
from datahub.metadata.schema_classes import
|
|
67
|
+
from datahub.metadata.schema_classes import (
|
|
68
|
+
ChangeTypeClass,
|
|
69
|
+
GenericAspectClass,
|
|
70
|
+
MetadataChangeProposalClass,
|
|
71
|
+
PartitionSpecClass,
|
|
72
|
+
PartitionTypeClass,
|
|
73
|
+
)
|
|
66
74
|
from datahub.sql_parsing.sqlglot_lineage import create_lineage_sql_parsed_result
|
|
67
75
|
from datahub.utilities.urns.dataset_urn import DatasetUrn
|
|
76
|
+
from datahub.utilities.urns.urn import guess_entity_type
|
|
68
77
|
|
|
69
78
|
# TODO: move this and version check used in tests to some common module
|
|
70
79
|
try:
|
|
@@ -192,15 +201,16 @@ class DataHubValidationAction(ValidationAction):
|
|
|
192
201
|
logger.info("Sending metadata to datahub ...")
|
|
193
202
|
logger.info("Dataset URN - {urn}".format(urn=datasets[0]["dataset_urn"]))
|
|
194
203
|
|
|
204
|
+
graph = emitter.to_graph()
|
|
205
|
+
|
|
195
206
|
for assertion in assertions:
|
|
196
207
|
logger.info(
|
|
197
208
|
"Assertion URN - {urn}".format(urn=assertion["assertionUrn"])
|
|
198
209
|
)
|
|
199
210
|
|
|
200
211
|
# Construct a MetadataChangeProposalWrapper object.
|
|
201
|
-
assertion_info_mcp =
|
|
202
|
-
|
|
203
|
-
aspect=assertion["assertionInfo"],
|
|
212
|
+
assertion_info_mcp = self._build_assertion_info_mcp(
|
|
213
|
+
graph, assertion["assertionUrn"], assertion["assertionInfo"]
|
|
204
214
|
)
|
|
205
215
|
emitter.emit_mcp(assertion_info_mcp)
|
|
206
216
|
|
|
@@ -231,6 +241,75 @@ class DataHubValidationAction(ValidationAction):
|
|
|
231
241
|
|
|
232
242
|
return {"datahub_notification_result": result}
|
|
233
243
|
|
|
244
|
+
def _build_assertion_info_mcp(
|
|
245
|
+
self,
|
|
246
|
+
graph: DataHubGraph,
|
|
247
|
+
assertion_urn: str,
|
|
248
|
+
assertion_info: AssertionInfo,
|
|
249
|
+
) -> Union[MetadataChangeProposalWrapper, MetadataChangeProposalClass]:
|
|
250
|
+
try:
|
|
251
|
+
existing_info = graph.get_aspect(assertion_urn, AssertionInfo)
|
|
252
|
+
except Exception:
|
|
253
|
+
logger.warning(
|
|
254
|
+
"Failed to check existing assertionInfo. Falling back to upsert.",
|
|
255
|
+
exc_info=True,
|
|
256
|
+
)
|
|
257
|
+
existing_info = None
|
|
258
|
+
|
|
259
|
+
if existing_info is None:
|
|
260
|
+
return MetadataChangeProposalWrapper(
|
|
261
|
+
entityUrn=assertion_urn,
|
|
262
|
+
aspect=assertion_info,
|
|
263
|
+
)
|
|
264
|
+
|
|
265
|
+
return self._build_assertion_info_patch(assertion_urn, assertion_info)
|
|
266
|
+
|
|
267
|
+
def _build_assertion_info_patch(
|
|
268
|
+
self,
|
|
269
|
+
assertion_urn: str,
|
|
270
|
+
assertion_info: AssertionInfo,
|
|
271
|
+
) -> MetadataChangeProposalClass:
|
|
272
|
+
assertion_info_obj = assertion_info.to_obj()
|
|
273
|
+
patch_ops = []
|
|
274
|
+
|
|
275
|
+
if "type" in assertion_info_obj:
|
|
276
|
+
patch_ops.append(
|
|
277
|
+
{"op": "add", "path": "/type", "value": assertion_info_obj["type"]}
|
|
278
|
+
)
|
|
279
|
+
if "datasetAssertion" in assertion_info_obj:
|
|
280
|
+
patch_ops.append(
|
|
281
|
+
{
|
|
282
|
+
"op": "add",
|
|
283
|
+
"path": "/datasetAssertion",
|
|
284
|
+
"value": assertion_info_obj["datasetAssertion"],
|
|
285
|
+
}
|
|
286
|
+
)
|
|
287
|
+
custom_properties = assertion_info_obj.get("customProperties") or {}
|
|
288
|
+
expectation_suite_name = custom_properties.get("expectation_suite_name")
|
|
289
|
+
if expectation_suite_name is not None:
|
|
290
|
+
patch_ops.append(
|
|
291
|
+
{
|
|
292
|
+
"op": "add",
|
|
293
|
+
"path": "/customProperties/expectation_suite_name",
|
|
294
|
+
"value": expectation_suite_name,
|
|
295
|
+
}
|
|
296
|
+
)
|
|
297
|
+
|
|
298
|
+
aspect_payload = {
|
|
299
|
+
"patch": pre_json_transform(patch_ops),
|
|
300
|
+
"forceGenericPatch": True,
|
|
301
|
+
}
|
|
302
|
+
return MetadataChangeProposalClass(
|
|
303
|
+
entityUrn=assertion_urn,
|
|
304
|
+
entityType=guess_entity_type(assertion_urn),
|
|
305
|
+
changeType=ChangeTypeClass.PATCH,
|
|
306
|
+
aspectName="assertionInfo",
|
|
307
|
+
aspect=GenericAspectClass(
|
|
308
|
+
value=json.dumps(pre_json_transform(aspect_payload)).encode(),
|
|
309
|
+
contentType=JSON_PATCH_CONTENT_TYPE,
|
|
310
|
+
),
|
|
311
|
+
)
|
|
312
|
+
|
|
234
313
|
def get_assertions_with_results(
|
|
235
314
|
self,
|
|
236
315
|
validation_result_suite,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|