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.
Files changed (15) hide show
  1. {acryl_datahub_gx_plugin-1.3.1.10 → acryl_datahub_gx_plugin-1.4.0rc1}/PKG-INFO +58 -58
  2. {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
  3. {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
  4. {acryl_datahub_gx_plugin-1.3.1.10 → acryl_datahub_gx_plugin-1.4.0rc1}/src/datahub_gx_plugin/_version.py +1 -1
  5. {acryl_datahub_gx_plugin-1.3.1.10 → acryl_datahub_gx_plugin-1.4.0rc1}/src/datahub_gx_plugin/action.py +83 -4
  6. {acryl_datahub_gx_plugin-1.3.1.10 → acryl_datahub_gx_plugin-1.4.0rc1}/README.md +0 -0
  7. {acryl_datahub_gx_plugin-1.3.1.10 → acryl_datahub_gx_plugin-1.4.0rc1}/pyproject.toml +0 -0
  8. {acryl_datahub_gx_plugin-1.3.1.10 → acryl_datahub_gx_plugin-1.4.0rc1}/setup.cfg +0 -0
  9. {acryl_datahub_gx_plugin-1.3.1.10 → acryl_datahub_gx_plugin-1.4.0rc1}/setup.py +0 -0
  10. {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
  11. {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
  12. {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
  13. {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
  14. {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
  15. {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.1.10
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: requests_file
25
+ Requires-Dist: acryl-datahub[datahub-rest,sql-parser]==1.4.0rc1
27
26
  Requires-Dist: pydantic>=2.1.0
28
- Requires-Dist: acryl-datahub[datahub-rest,sql-parser]==1.3.1.10
29
- Requires-Dist: requests
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: pytest-asyncio>=0.16.0; extra == "dev"
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: acryl-datahub[datahub-rest,sql-parser]==1.3.1.10; extra == "dev"
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: ruff==0.11.7; extra == "dev"
51
- Requires-Dist: deepdiff!=8.0.0; extra == "dev"
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: requests; extra == "dev"
54
- Requires-Dist: mypy==1.17.1; extra == "dev"
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-click==0.1.12; extra == "dev"
57
- Requires-Dist: types-pytz; extra == "dev"
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: great-expectations<1.0.0,>=0.17.15; extra == "dev"
62
- Requires-Dist: types-setuptools; extra == "dev"
62
+ Requires-Dist: types-pytz; extra == "dev"
63
63
  Requires-Dist: jsonpickle; extra == "dev"
64
- Requires-Dist: tox; extra == "dev"
65
- Requires-Dist: twine; extra == "dev"
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: pytest-asyncio>=0.16.0; extra == "integration-tests"
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: acryl-datahub[datahub-rest,sql-parser]==1.3.1.10; extra == "integration-tests"
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: ruff==0.11.7; extra == "integration-tests"
86
- Requires-Dist: deepdiff!=8.0.0; extra == "integration-tests"
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: requests; extra == "integration-tests"
89
- Requires-Dist: mypy==1.17.1; extra == "integration-tests"
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-click==0.1.12; extra == "integration-tests"
92
- Requires-Dist: types-pytz; extra == "integration-tests"
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: great-expectations<1.0.0,>=0.17.15; extra == "integration-tests"
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: pyspark; extra == "integration-tests"
102
- Requires-Dist: tox; extra == "integration-tests"
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.1.10
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: requests_file
25
+ Requires-Dist: acryl-datahub[datahub-rest,sql-parser]==1.4.0rc1
27
26
  Requires-Dist: pydantic>=2.1.0
28
- Requires-Dist: acryl-datahub[datahub-rest,sql-parser]==1.3.1.10
29
- Requires-Dist: requests
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: pytest-asyncio>=0.16.0; extra == "dev"
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: acryl-datahub[datahub-rest,sql-parser]==1.3.1.10; extra == "dev"
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: ruff==0.11.7; extra == "dev"
51
- Requires-Dist: deepdiff!=8.0.0; extra == "dev"
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: requests; extra == "dev"
54
- Requires-Dist: mypy==1.17.1; extra == "dev"
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-click==0.1.12; extra == "dev"
57
- Requires-Dist: types-pytz; extra == "dev"
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: great-expectations<1.0.0,>=0.17.15; extra == "dev"
62
- Requires-Dist: types-setuptools; extra == "dev"
62
+ Requires-Dist: types-pytz; extra == "dev"
63
63
  Requires-Dist: jsonpickle; extra == "dev"
64
- Requires-Dist: tox; extra == "dev"
65
- Requires-Dist: twine; extra == "dev"
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: pytest-asyncio>=0.16.0; extra == "integration-tests"
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: acryl-datahub[datahub-rest,sql-parser]==1.3.1.10; extra == "integration-tests"
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: ruff==0.11.7; extra == "integration-tests"
86
- Requires-Dist: deepdiff!=8.0.0; extra == "integration-tests"
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: requests; extra == "integration-tests"
89
- Requires-Dist: mypy==1.17.1; extra == "integration-tests"
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-click==0.1.12; extra == "integration-tests"
92
- Requires-Dist: types-pytz; extra == "integration-tests"
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: great-expectations<1.0.0,>=0.17.15; extra == "integration-tests"
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: pyspark; extra == "integration-tests"
102
- Requires-Dist: tox; extra == "integration-tests"
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
- requests_file
2
+ acryl-datahub[datahub-rest,sql-parser]==1.4.0rc1
4
3
  pydantic>=2.1.0
5
- acryl-datahub[datahub-rest,sql-parser]==1.3.1.10
6
- requests
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
- pytest-asyncio>=0.16.0
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
- acryl-datahub[datahub-rest,sql-parser]==1.3.1.10
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
- ruff==0.11.7
28
- deepdiff!=8.0.0
14
+ types-cachetools
15
+ types-python-dateutil
29
16
  sqlalchemy<2,>=1.4.39
30
- requests
31
- mypy==1.17.1
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-click==0.1.12
34
- types-pytz
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
- great-expectations<1.0.0,>=0.17.15
39
- types-setuptools
39
+ types-pytz
40
40
  jsonpickle
41
- tox
42
- twine
41
+ types-setuptools
42
+ requests
43
43
  traitlets!=5.2.2
44
44
 
45
45
  [ignore]
46
46
 
47
47
  [integration-tests]
48
- pytest-asyncio>=0.16.0
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
- acryl-datahub[datahub-rest,sql-parser]==1.3.1.10
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
- ruff==0.11.7
66
- deepdiff!=8.0.0
52
+ types-cachetools
53
+ types-python-dateutil
67
54
  sqlalchemy<2,>=1.4.39
68
- requests
69
- mypy==1.17.1
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-click==0.1.12
72
- types-pytz
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
- great-expectations<1.0.0,>=0.17.15
78
- acryl-datahub[testing-utils]==1.3.1.10
79
- types-setuptools
81
+ types-pytz
80
82
  jsonpickle
81
- pyspark
82
- tox
83
- twine
84
- psycopg2-binary
83
+ types-setuptools
84
+ requests
85
85
  traitlets!=5.2.2
@@ -1,3 +1,3 @@
1
1
  # Published at https://pypi.org/project/acryl-datahub-gx-plugin/.
2
2
  __package_name__ = "acryl-datahub-gx-plugin"
3
- __version__ = "1.3.1.10"
3
+ __version__ = "1.4.0rc1"
@@ -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 PartitionSpecClass, PartitionTypeClass
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 = MetadataChangeProposalWrapper(
202
- entityUrn=assertion["assertionUrn"],
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,