acryl-datahub-gx-plugin 1.3.1.10rc1__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.10rc1 → acryl_datahub_gx_plugin-1.4.0rc1}/PKG-INFO +56 -56
  2. {acryl_datahub_gx_plugin-1.3.1.10rc1 → acryl_datahub_gx_plugin-1.4.0rc1}/src/acryl_datahub_gx_plugin.egg-info/PKG-INFO +56 -56
  3. {acryl_datahub_gx_plugin-1.3.1.10rc1 → acryl_datahub_gx_plugin-1.4.0rc1}/src/acryl_datahub_gx_plugin.egg-info/requires.txt +55 -55
  4. {acryl_datahub_gx_plugin-1.3.1.10rc1 → acryl_datahub_gx_plugin-1.4.0rc1}/src/datahub_gx_plugin/_version.py +1 -1
  5. {acryl_datahub_gx_plugin-1.3.1.10rc1 → acryl_datahub_gx_plugin-1.4.0rc1}/src/datahub_gx_plugin/action.py +83 -4
  6. {acryl_datahub_gx_plugin-1.3.1.10rc1 → acryl_datahub_gx_plugin-1.4.0rc1}/README.md +0 -0
  7. {acryl_datahub_gx_plugin-1.3.1.10rc1 → acryl_datahub_gx_plugin-1.4.0rc1}/pyproject.toml +0 -0
  8. {acryl_datahub_gx_plugin-1.3.1.10rc1 → acryl_datahub_gx_plugin-1.4.0rc1}/setup.cfg +0 -0
  9. {acryl_datahub_gx_plugin-1.3.1.10rc1 → acryl_datahub_gx_plugin-1.4.0rc1}/setup.py +0 -0
  10. {acryl_datahub_gx_plugin-1.3.1.10rc1 → 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.10rc1 → 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.10rc1 → 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.10rc1 → 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.10rc1 → 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.10rc1 → 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.10rc1
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,88 +21,88 @@ 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: traitlets!=5.2.2
25
- Requires-Dist: acryl-datahub[datahub-rest,sql-parser]==1.3.1.10rc1
26
- Requires-Dist: requests_file
27
24
  Requires-Dist: sqlalchemy<2,>=1.4.39
25
+ Requires-Dist: acryl-datahub[datahub-rest,sql-parser]==1.4.0rc1
26
+ Requires-Dist: pydantic>=2.1.0
27
+ Requires-Dist: requests_file
28
28
  Requires-Dist: great-expectations<1.0.0,>=0.17.15
29
+ Requires-Dist: traitlets!=5.2.2
29
30
  Requires-Dist: requests
30
- Requires-Dist: pydantic>=2.1.0
31
31
  Provides-Extra: ignore
32
32
  Provides-Extra: dev
33
- Requires-Dist: requests-mock; extra == "dev"
33
+ Requires-Dist: tox; extra == "dev"
34
34
  Requires-Dist: freezegun; extra == "dev"
35
+ Requires-Dist: great-expectations<1.0.0,>=0.17.15; extra == "dev"
35
36
  Requires-Dist: types-tabulate; extra == "dev"
36
- Requires-Dist: pytest-cov>=2.8.1; extra == "dev"
37
- Requires-Dist: types-dataclasses; extra == "dev"
38
- Requires-Dist: deepdiff!=8.0.0; extra == "dev"
39
- Requires-Dist: sqlalchemy-stubs; extra == "dev"
40
- Requires-Dist: pytest>=6.2.2; extra == "dev"
37
+ Requires-Dist: types-cachetools; extra == "dev"
38
+ Requires-Dist: types-python-dateutil; extra == "dev"
39
+ Requires-Dist: sqlalchemy<2,>=1.4.39; extra == "dev"
41
40
  Requires-Dist: pydantic>=2.1.0; extra == "dev"
42
41
  Requires-Dist: twine; extra == "dev"
43
- Requires-Dist: sqlalchemy<2,>=1.4.39; extra == "dev"
44
- Requires-Dist: types-PyYAML; extra == "dev"
45
- Requires-Dist: coverage>=5.1; 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"
46
45
  Requires-Dist: types-six; extra == "dev"
47
- Requires-Dist: jsonpickle; extra == "dev"
48
- Requires-Dist: types-python-dateutil; extra == "dev"
46
+ Requires-Dist: types-PyYAML; extra == "dev"
47
+ Requires-Dist: build; extra == "dev"
49
48
  Requires-Dist: types-requests; extra == "dev"
50
- Requires-Dist: packaging; extra == "dev"
51
- Requires-Dist: types-setuptools; extra == "dev"
52
- Requires-Dist: traitlets!=5.2.2; extra == "dev"
53
- Requires-Dist: types-toml; extra == "dev"
49
+ Requires-Dist: types-dataclasses; extra == "dev"
54
50
  Requires-Dist: mypy==1.17.1; extra == "dev"
55
- Requires-Dist: types-click==0.1.12; extra == "dev"
56
- Requires-Dist: build; extra == "dev"
57
- Requires-Dist: tox; extra == "dev"
58
- Requires-Dist: great-expectations<1.0.0,>=0.17.15; extra == "dev"
59
- Requires-Dist: types-pytz; extra == "dev"
60
- Requires-Dist: types-freezegun; extra == "dev"
61
- Requires-Dist: types-cachetools; extra == "dev"
62
- Requires-Dist: acryl-datahub[datahub-rest,sql-parser]==1.3.1.10rc1; extra == "dev"
63
51
  Requires-Dist: ruff==0.11.7; extra == "dev"
52
+ Requires-Dist: coverage>=5.1; extra == "dev"
53
+ Requires-Dist: pytest-asyncio>=0.16.0; extra == "dev"
64
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"
61
+ Requires-Dist: pytest-cov>=2.8.1; extra == "dev"
62
+ Requires-Dist: types-pytz; extra == "dev"
63
+ Requires-Dist: jsonpickle; extra == "dev"
64
+ Requires-Dist: types-setuptools; extra == "dev"
65
65
  Requires-Dist: requests; extra == "dev"
66
- Requires-Dist: pytest-asyncio>=0.16.0; extra == "dev"
66
+ Requires-Dist: traitlets!=5.2.2; extra == "dev"
67
67
  Provides-Extra: integration-tests
68
- Requires-Dist: requests-mock; extra == "integration-tests"
68
+ Requires-Dist: tox; extra == "integration-tests"
69
69
  Requires-Dist: freezegun; extra == "integration-tests"
70
+ Requires-Dist: great-expectations<1.0.0,>=0.17.15; extra == "integration-tests"
70
71
  Requires-Dist: types-tabulate; extra == "integration-tests"
71
- Requires-Dist: acryl-datahub[testing-utils]==1.3.1.10rc1; extra == "integration-tests"
72
- Requires-Dist: pytest-cov>=2.8.1; extra == "integration-tests"
73
- Requires-Dist: types-dataclasses; extra == "integration-tests"
74
- Requires-Dist: deepdiff!=8.0.0; extra == "integration-tests"
75
- Requires-Dist: sqlalchemy-stubs; extra == "integration-tests"
76
- Requires-Dist: pytest>=6.2.2; extra == "integration-tests"
72
+ Requires-Dist: types-cachetools; extra == "integration-tests"
73
+ Requires-Dist: types-python-dateutil; extra == "integration-tests"
74
+ Requires-Dist: sqlalchemy<2,>=1.4.39; extra == "integration-tests"
77
75
  Requires-Dist: pydantic>=2.1.0; extra == "integration-tests"
78
76
  Requires-Dist: twine; extra == "integration-tests"
79
- Requires-Dist: sqlalchemy<2,>=1.4.39; 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"
80
+ Requires-Dist: types-six; extra == "integration-tests"
80
81
  Requires-Dist: types-PyYAML; extra == "integration-tests"
82
+ Requires-Dist: build; extra == "integration-tests"
83
+ Requires-Dist: types-requests; extra == "integration-tests"
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"
81
89
  Requires-Dist: coverage>=5.1; extra == "integration-tests"
90
+ Requires-Dist: pytest-asyncio>=0.16.0; extra == "integration-tests"
82
91
  Requires-Dist: pytest-docker>=1.1.0; extra == "integration-tests"
83
- Requires-Dist: types-six; extra == "integration-tests"
84
- Requires-Dist: jsonpickle; extra == "integration-tests"
85
- Requires-Dist: types-python-dateutil; extra == "integration-tests"
86
- Requires-Dist: types-requests; extra == "integration-tests"
87
- Requires-Dist: packaging; extra == "integration-tests"
88
- Requires-Dist: types-setuptools; extra == "integration-tests"
89
- Requires-Dist: traitlets!=5.2.2; extra == "integration-tests"
92
+ Requires-Dist: requests_file; extra == "integration-tests"
93
+ Requires-Dist: sqlalchemy-stubs; extra == "integration-tests"
90
94
  Requires-Dist: types-toml; extra == "integration-tests"
91
- Requires-Dist: mypy==1.17.1; extra == "integration-tests"
95
+ Requires-Dist: types-freezegun; extra == "integration-tests"
96
+ Requires-Dist: packaging; extra == "integration-tests"
92
97
  Requires-Dist: types-click==0.1.12; extra == "integration-tests"
93
- Requires-Dist: build; extra == "integration-tests"
94
- Requires-Dist: pyspark; extra == "integration-tests"
95
- Requires-Dist: tox; extra == "integration-tests"
96
- Requires-Dist: great-expectations<1.0.0,>=0.17.15; extra == "integration-tests"
98
+ Requires-Dist: requests-mock; extra == "integration-tests"
99
+ Requires-Dist: acryl-datahub[testing-utils]==1.4.0rc1; extra == "integration-tests"
100
+ Requires-Dist: pytest-cov>=2.8.1; extra == "integration-tests"
97
101
  Requires-Dist: types-pytz; extra == "integration-tests"
98
- Requires-Dist: types-freezegun; extra == "integration-tests"
99
- Requires-Dist: psycopg2-binary; extra == "integration-tests"
100
- Requires-Dist: types-cachetools; extra == "integration-tests"
101
- Requires-Dist: acryl-datahub[datahub-rest,sql-parser]==1.3.1.10rc1; extra == "integration-tests"
102
- Requires-Dist: ruff==0.11.7; extra == "integration-tests"
103
- Requires-Dist: requests_file; extra == "integration-tests"
102
+ Requires-Dist: jsonpickle; extra == "integration-tests"
103
+ Requires-Dist: types-setuptools; extra == "integration-tests"
104
104
  Requires-Dist: requests; extra == "integration-tests"
105
- Requires-Dist: pytest-asyncio>=0.16.0; extra == "integration-tests"
105
+ Requires-Dist: traitlets!=5.2.2; extra == "integration-tests"
106
106
  Dynamic: classifier
107
107
  Dynamic: description
108
108
  Dynamic: description-content-type
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: acryl-datahub-gx-plugin
3
- Version: 1.3.1.10rc1
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,88 +21,88 @@ 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: traitlets!=5.2.2
25
- Requires-Dist: acryl-datahub[datahub-rest,sql-parser]==1.3.1.10rc1
26
- Requires-Dist: requests_file
27
24
  Requires-Dist: sqlalchemy<2,>=1.4.39
25
+ Requires-Dist: acryl-datahub[datahub-rest,sql-parser]==1.4.0rc1
26
+ Requires-Dist: pydantic>=2.1.0
27
+ Requires-Dist: requests_file
28
28
  Requires-Dist: great-expectations<1.0.0,>=0.17.15
29
+ Requires-Dist: traitlets!=5.2.2
29
30
  Requires-Dist: requests
30
- Requires-Dist: pydantic>=2.1.0
31
31
  Provides-Extra: ignore
32
32
  Provides-Extra: dev
33
- Requires-Dist: requests-mock; extra == "dev"
33
+ Requires-Dist: tox; extra == "dev"
34
34
  Requires-Dist: freezegun; extra == "dev"
35
+ Requires-Dist: great-expectations<1.0.0,>=0.17.15; extra == "dev"
35
36
  Requires-Dist: types-tabulate; extra == "dev"
36
- Requires-Dist: pytest-cov>=2.8.1; extra == "dev"
37
- Requires-Dist: types-dataclasses; extra == "dev"
38
- Requires-Dist: deepdiff!=8.0.0; extra == "dev"
39
- Requires-Dist: sqlalchemy-stubs; extra == "dev"
40
- Requires-Dist: pytest>=6.2.2; extra == "dev"
37
+ Requires-Dist: types-cachetools; extra == "dev"
38
+ Requires-Dist: types-python-dateutil; extra == "dev"
39
+ Requires-Dist: sqlalchemy<2,>=1.4.39; extra == "dev"
41
40
  Requires-Dist: pydantic>=2.1.0; extra == "dev"
42
41
  Requires-Dist: twine; extra == "dev"
43
- Requires-Dist: sqlalchemy<2,>=1.4.39; extra == "dev"
44
- Requires-Dist: types-PyYAML; extra == "dev"
45
- Requires-Dist: coverage>=5.1; 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"
46
45
  Requires-Dist: types-six; extra == "dev"
47
- Requires-Dist: jsonpickle; extra == "dev"
48
- Requires-Dist: types-python-dateutil; extra == "dev"
46
+ Requires-Dist: types-PyYAML; extra == "dev"
47
+ Requires-Dist: build; extra == "dev"
49
48
  Requires-Dist: types-requests; extra == "dev"
50
- Requires-Dist: packaging; extra == "dev"
51
- Requires-Dist: types-setuptools; extra == "dev"
52
- Requires-Dist: traitlets!=5.2.2; extra == "dev"
53
- Requires-Dist: types-toml; extra == "dev"
49
+ Requires-Dist: types-dataclasses; extra == "dev"
54
50
  Requires-Dist: mypy==1.17.1; extra == "dev"
55
- Requires-Dist: types-click==0.1.12; extra == "dev"
56
- Requires-Dist: build; extra == "dev"
57
- Requires-Dist: tox; extra == "dev"
58
- Requires-Dist: great-expectations<1.0.0,>=0.17.15; extra == "dev"
59
- Requires-Dist: types-pytz; extra == "dev"
60
- Requires-Dist: types-freezegun; extra == "dev"
61
- Requires-Dist: types-cachetools; extra == "dev"
62
- Requires-Dist: acryl-datahub[datahub-rest,sql-parser]==1.3.1.10rc1; extra == "dev"
63
51
  Requires-Dist: ruff==0.11.7; extra == "dev"
52
+ Requires-Dist: coverage>=5.1; extra == "dev"
53
+ Requires-Dist: pytest-asyncio>=0.16.0; extra == "dev"
64
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"
61
+ Requires-Dist: pytest-cov>=2.8.1; extra == "dev"
62
+ Requires-Dist: types-pytz; extra == "dev"
63
+ Requires-Dist: jsonpickle; extra == "dev"
64
+ Requires-Dist: types-setuptools; extra == "dev"
65
65
  Requires-Dist: requests; extra == "dev"
66
- Requires-Dist: pytest-asyncio>=0.16.0; extra == "dev"
66
+ Requires-Dist: traitlets!=5.2.2; extra == "dev"
67
67
  Provides-Extra: integration-tests
68
- Requires-Dist: requests-mock; extra == "integration-tests"
68
+ Requires-Dist: tox; extra == "integration-tests"
69
69
  Requires-Dist: freezegun; extra == "integration-tests"
70
+ Requires-Dist: great-expectations<1.0.0,>=0.17.15; extra == "integration-tests"
70
71
  Requires-Dist: types-tabulate; extra == "integration-tests"
71
- Requires-Dist: acryl-datahub[testing-utils]==1.3.1.10rc1; extra == "integration-tests"
72
- Requires-Dist: pytest-cov>=2.8.1; extra == "integration-tests"
73
- Requires-Dist: types-dataclasses; extra == "integration-tests"
74
- Requires-Dist: deepdiff!=8.0.0; extra == "integration-tests"
75
- Requires-Dist: sqlalchemy-stubs; extra == "integration-tests"
76
- Requires-Dist: pytest>=6.2.2; extra == "integration-tests"
72
+ Requires-Dist: types-cachetools; extra == "integration-tests"
73
+ Requires-Dist: types-python-dateutil; extra == "integration-tests"
74
+ Requires-Dist: sqlalchemy<2,>=1.4.39; extra == "integration-tests"
77
75
  Requires-Dist: pydantic>=2.1.0; extra == "integration-tests"
78
76
  Requires-Dist: twine; extra == "integration-tests"
79
- Requires-Dist: sqlalchemy<2,>=1.4.39; 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"
80
+ Requires-Dist: types-six; extra == "integration-tests"
80
81
  Requires-Dist: types-PyYAML; extra == "integration-tests"
82
+ Requires-Dist: build; extra == "integration-tests"
83
+ Requires-Dist: types-requests; extra == "integration-tests"
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"
81
89
  Requires-Dist: coverage>=5.1; extra == "integration-tests"
90
+ Requires-Dist: pytest-asyncio>=0.16.0; extra == "integration-tests"
82
91
  Requires-Dist: pytest-docker>=1.1.0; extra == "integration-tests"
83
- Requires-Dist: types-six; extra == "integration-tests"
84
- Requires-Dist: jsonpickle; extra == "integration-tests"
85
- Requires-Dist: types-python-dateutil; extra == "integration-tests"
86
- Requires-Dist: types-requests; extra == "integration-tests"
87
- Requires-Dist: packaging; extra == "integration-tests"
88
- Requires-Dist: types-setuptools; extra == "integration-tests"
89
- Requires-Dist: traitlets!=5.2.2; extra == "integration-tests"
92
+ Requires-Dist: requests_file; extra == "integration-tests"
93
+ Requires-Dist: sqlalchemy-stubs; extra == "integration-tests"
90
94
  Requires-Dist: types-toml; extra == "integration-tests"
91
- Requires-Dist: mypy==1.17.1; extra == "integration-tests"
95
+ Requires-Dist: types-freezegun; extra == "integration-tests"
96
+ Requires-Dist: packaging; extra == "integration-tests"
92
97
  Requires-Dist: types-click==0.1.12; extra == "integration-tests"
93
- Requires-Dist: build; extra == "integration-tests"
94
- Requires-Dist: pyspark; extra == "integration-tests"
95
- Requires-Dist: tox; extra == "integration-tests"
96
- Requires-Dist: great-expectations<1.0.0,>=0.17.15; extra == "integration-tests"
98
+ Requires-Dist: requests-mock; extra == "integration-tests"
99
+ Requires-Dist: acryl-datahub[testing-utils]==1.4.0rc1; extra == "integration-tests"
100
+ Requires-Dist: pytest-cov>=2.8.1; extra == "integration-tests"
97
101
  Requires-Dist: types-pytz; extra == "integration-tests"
98
- Requires-Dist: types-freezegun; extra == "integration-tests"
99
- Requires-Dist: psycopg2-binary; extra == "integration-tests"
100
- Requires-Dist: types-cachetools; extra == "integration-tests"
101
- Requires-Dist: acryl-datahub[datahub-rest,sql-parser]==1.3.1.10rc1; extra == "integration-tests"
102
- Requires-Dist: ruff==0.11.7; extra == "integration-tests"
103
- Requires-Dist: requests_file; extra == "integration-tests"
102
+ Requires-Dist: jsonpickle; extra == "integration-tests"
103
+ Requires-Dist: types-setuptools; extra == "integration-tests"
104
104
  Requires-Dist: requests; extra == "integration-tests"
105
- Requires-Dist: pytest-asyncio>=0.16.0; extra == "integration-tests"
105
+ Requires-Dist: traitlets!=5.2.2; extra == "integration-tests"
106
106
  Dynamic: classifier
107
107
  Dynamic: description
108
108
  Dynamic: description-content-type
@@ -1,85 +1,85 @@
1
- traitlets!=5.2.2
2
- acryl-datahub[datahub-rest,sql-parser]==1.3.1.10rc1
3
- requests_file
4
1
  sqlalchemy<2,>=1.4.39
2
+ acryl-datahub[datahub-rest,sql-parser]==1.4.0rc1
3
+ pydantic>=2.1.0
4
+ requests_file
5
5
  great-expectations<1.0.0,>=0.17.15
6
+ traitlets!=5.2.2
6
7
  requests
7
- pydantic>=2.1.0
8
8
 
9
9
  [dev]
10
- requests-mock
10
+ tox
11
11
  freezegun
12
+ great-expectations<1.0.0,>=0.17.15
12
13
  types-tabulate
13
- pytest-cov>=2.8.1
14
- types-dataclasses
15
- deepdiff!=8.0.0
16
- sqlalchemy-stubs
17
- pytest>=6.2.2
14
+ types-cachetools
15
+ types-python-dateutil
16
+ sqlalchemy<2,>=1.4.39
18
17
  pydantic>=2.1.0
19
18
  twine
20
- sqlalchemy<2,>=1.4.39
21
- types-PyYAML
22
- coverage>=5.1
19
+ pytest>=6.2.2
20
+ deepdiff!=8.0.0
21
+ acryl-datahub[datahub-rest,sql-parser]==1.4.0rc1
23
22
  types-six
24
- jsonpickle
25
- types-python-dateutil
23
+ types-PyYAML
24
+ build
26
25
  types-requests
27
- packaging
28
- types-setuptools
29
- traitlets!=5.2.2
30
- types-toml
26
+ types-dataclasses
31
27
  mypy==1.17.1
32
- types-click==0.1.12
33
- build
34
- tox
35
- great-expectations<1.0.0,>=0.17.15
36
- types-pytz
37
- types-freezegun
38
- types-cachetools
39
- acryl-datahub[datahub-rest,sql-parser]==1.3.1.10rc1
40
28
  ruff==0.11.7
29
+ coverage>=5.1
30
+ pytest-asyncio>=0.16.0
41
31
  requests_file
32
+ sqlalchemy-stubs
33
+ types-toml
34
+ types-freezegun
35
+ packaging
36
+ types-click==0.1.12
37
+ requests-mock
38
+ pytest-cov>=2.8.1
39
+ types-pytz
40
+ jsonpickle
41
+ types-setuptools
42
42
  requests
43
- pytest-asyncio>=0.16.0
43
+ traitlets!=5.2.2
44
44
 
45
45
  [ignore]
46
46
 
47
47
  [integration-tests]
48
- requests-mock
48
+ tox
49
49
  freezegun
50
+ great-expectations<1.0.0,>=0.17.15
50
51
  types-tabulate
51
- acryl-datahub[testing-utils]==1.3.1.10rc1
52
- pytest-cov>=2.8.1
53
- types-dataclasses
54
- deepdiff!=8.0.0
55
- sqlalchemy-stubs
56
- pytest>=6.2.2
52
+ types-cachetools
53
+ types-python-dateutil
54
+ sqlalchemy<2,>=1.4.39
57
55
  pydantic>=2.1.0
58
56
  twine
59
- sqlalchemy<2,>=1.4.39
57
+ pytest>=6.2.2
58
+ deepdiff!=8.0.0
59
+ acryl-datahub[datahub-rest,sql-parser]==1.4.0rc1
60
+ types-six
60
61
  types-PyYAML
62
+ build
63
+ types-requests
64
+ types-dataclasses
65
+ mypy==1.17.1
66
+ ruff==0.11.7
67
+ psycopg2-binary
68
+ pyspark
61
69
  coverage>=5.1
70
+ pytest-asyncio>=0.16.0
62
71
  pytest-docker>=1.1.0
63
- types-six
64
- jsonpickle
65
- types-python-dateutil
66
- types-requests
67
- packaging
68
- types-setuptools
69
- traitlets!=5.2.2
72
+ requests_file
73
+ sqlalchemy-stubs
70
74
  types-toml
71
- mypy==1.17.1
75
+ types-freezegun
76
+ packaging
72
77
  types-click==0.1.12
73
- build
74
- pyspark
75
- tox
76
- great-expectations<1.0.0,>=0.17.15
78
+ requests-mock
79
+ acryl-datahub[testing-utils]==1.4.0rc1
80
+ pytest-cov>=2.8.1
77
81
  types-pytz
78
- types-freezegun
79
- psycopg2-binary
80
- types-cachetools
81
- acryl-datahub[datahub-rest,sql-parser]==1.3.1.10rc1
82
- ruff==0.11.7
83
- requests_file
82
+ jsonpickle
83
+ types-setuptools
84
84
  requests
85
- pytest-asyncio>=0.16.0
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.10rc1"
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,