altimate-datapilot-cli 0.0.16__py3-none-any.whl → 0.0.18__py3-none-any.whl
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.
- {altimate_datapilot_cli-0.0.16.dist-info → altimate_datapilot_cli-0.0.18.dist-info}/METADATA +2 -2
- {altimate_datapilot_cli-0.0.16.dist-info → altimate_datapilot_cli-0.0.18.dist-info}/RECORD +14 -14
- datapilot/__init__.py +1 -1
- datapilot/clients/altimate/client.py +6 -0
- datapilot/clients/altimate/utils.py +10 -0
- datapilot/core/platforms/dbt/cli/cli.py +31 -1
- datapilot/core/platforms/dbt/wrappers/manifest/v10/wrapper.py +1 -1
- datapilot/core/platforms/dbt/wrappers/manifest/v11/wrapper.py +1 -1
- datapilot/core/platforms/dbt/wrappers/manifest/v12/wrapper.py +1 -1
- {altimate_datapilot_cli-0.0.16.dist-info → altimate_datapilot_cli-0.0.18.dist-info}/AUTHORS.rst +0 -0
- {altimate_datapilot_cli-0.0.16.dist-info → altimate_datapilot_cli-0.0.18.dist-info}/LICENSE +0 -0
- {altimate_datapilot_cli-0.0.16.dist-info → altimate_datapilot_cli-0.0.18.dist-info}/WHEEL +0 -0
- {altimate_datapilot_cli-0.0.16.dist-info → altimate_datapilot_cli-0.0.18.dist-info}/entry_points.txt +0 -0
- {altimate_datapilot_cli-0.0.16.dist-info → altimate_datapilot_cli-0.0.18.dist-info}/top_level.txt +0 -0
{altimate_datapilot_cli-0.0.16.dist-info → altimate_datapilot_cli-0.0.18.dist-info}/METADATA
RENAMED
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: altimate-datapilot-cli
|
3
|
-
Version: 0.0.
|
3
|
+
Version: 0.0.18
|
4
4
|
Summary: Assistant for Data Teams
|
5
5
|
Home-page: https://github.com/AltimateAI/datapilot-cli
|
6
6
|
Author: Altimate Inc
|
@@ -34,7 +34,7 @@ Requires-Dist: click~=8.1.7
|
|
34
34
|
Requires-Dist: dbt-artifacts-parser~=0.8.1
|
35
35
|
Requires-Dist: ruamel.yaml~=0.18.6
|
36
36
|
Requires-Dist: tabulate~=0.9.0
|
37
|
-
Requires-Dist: requests
|
37
|
+
Requires-Dist: requests>=2.31
|
38
38
|
Requires-Dist: sqlglot~=25.30.0
|
39
39
|
|
40
40
|
========
|
@@ -1,11 +1,11 @@
|
|
1
|
-
datapilot/__init__.py,sha256=
|
1
|
+
datapilot/__init__.py,sha256=qgKF-lRlzaBqf95e1sodHCZkSUCbz7ECKSeYHwXfAvI,23
|
2
2
|
datapilot/__main__.py,sha256=I9USmeNnK-cAHb6LZfydJC0LeNSE8enieeY55wpR6uw,380
|
3
3
|
datapilot/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
4
4
|
datapilot/cli/main.py,sha256=VSdqlkCiu8GSG9qQh8q0BzyocsQc4lKWxZAPEsjXF18,181
|
5
5
|
datapilot/clients/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
6
6
|
datapilot/clients/altimate/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
7
|
-
datapilot/clients/altimate/client.py,sha256=
|
8
|
-
datapilot/clients/altimate/utils.py,sha256=
|
7
|
+
datapilot/clients/altimate/client.py,sha256=00TRe_ck8UgbhFMAnrLBmug3fAWxAggNl2do5Um_4oU,4083
|
8
|
+
datapilot/clients/altimate/utils.py,sha256=URxGzmaJdXWEOQrRJtTK3te6BzkfOGlSfrNGGdGtak4,4549
|
9
9
|
datapilot/config/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
10
10
|
datapilot/config/config.py,sha256=kyj53Qsb85V4iGQsX0vSwULOjscMOSFrJDJ3tnagJpo,403
|
11
11
|
datapilot/config/utils.py,sha256=DIAVX-OZ5Lc0Ky_A7dvdbPcD1QSg2DRxZcuaIIZ2rhw,1146
|
@@ -30,7 +30,7 @@ datapilot/core/platforms/dbt/factory.py,sha256=YIQtb-FQQAJsifJ3KiLjjk0WIKTHtEPTN
|
|
30
30
|
datapilot/core/platforms/dbt/formatting.py,sha256=bpfa7XmVghTq4WnGDGYC6DruwOwH8YmjFHghoo5cPD8,1638
|
31
31
|
datapilot/core/platforms/dbt/utils.py,sha256=ozFHprR6LTLXQdrGyaRoyIBTua4P1NkP8T7LGgN-9c0,18577
|
32
32
|
datapilot/core/platforms/dbt/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
33
|
-
datapilot/core/platforms/dbt/cli/cli.py,sha256=
|
33
|
+
datapilot/core/platforms/dbt/cli/cli.py,sha256=ZrTneNStGtwbH2zDavDItR-ZbLSQomJYkpcMyEcU9Rc,7236
|
34
34
|
datapilot/core/platforms/dbt/hooks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
35
35
|
datapilot/core/platforms/dbt/hooks/executor_hook.py,sha256=gSM50vAO7C-f1rdnHogWbqc87aCXPXysZepjp5L2qzw,2966
|
36
36
|
datapilot/core/platforms/dbt/insights/__init__.py,sha256=hk7BAzCTDkY8WNV6L0v-CPn9mrsDyJJusoQxNxGyzAY,7634
|
@@ -120,13 +120,13 @@ datapilot/core/platforms/dbt/wrappers/manifest/__init__.py,sha256=47DEQpj8HBSa-_
|
|
120
120
|
datapilot/core/platforms/dbt/wrappers/manifest/wrapper.py,sha256=Q9DG-OEyJAa4ePoVhxG78pehfNotNc9A3xtz171fLhU,1189
|
121
121
|
datapilot/core/platforms/dbt/wrappers/manifest/v10/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
122
122
|
datapilot/core/platforms/dbt/wrappers/manifest/v10/schemas.py,sha256=VxqIFQbAL88ObQW1E8wPpiuooCdawdACJUFhgAYBxmo,1523
|
123
|
-
datapilot/core/platforms/dbt/wrappers/manifest/v10/wrapper.py,sha256=
|
123
|
+
datapilot/core/platforms/dbt/wrappers/manifest/v10/wrapper.py,sha256=5nqROcsXLkZrv-DwewF-_HYsknL4AMO9UC_ACP2_AOY,18140
|
124
124
|
datapilot/core/platforms/dbt/wrappers/manifest/v11/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
125
125
|
datapilot/core/platforms/dbt/wrappers/manifest/v11/schemas.py,sha256=Mb0N48czcwQTz5mxQx2QlVINzz50A5FUm0kMJ-Nzs6A,1523
|
126
|
-
datapilot/core/platforms/dbt/wrappers/manifest/v11/wrapper.py,sha256=
|
126
|
+
datapilot/core/platforms/dbt/wrappers/manifest/v11/wrapper.py,sha256=L9f5uMlwCg4Tu_uR--1KakN-4gvzf6Yspd1uX5ZPQWc,18074
|
127
127
|
datapilot/core/platforms/dbt/wrappers/manifest/v12/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
128
128
|
datapilot/core/platforms/dbt/wrappers/manifest/v12/schemas.py,sha256=2rMEQ_BCcjiibfrlDKwgCE8vFX_6BzSInpilpVTWrNE,1269
|
129
|
-
datapilot/core/platforms/dbt/wrappers/manifest/v12/wrapper.py,sha256=
|
129
|
+
datapilot/core/platforms/dbt/wrappers/manifest/v12/wrapper.py,sha256=knhwCPXqHA4XWr4tAETsS23g7QOG6hGEPjnrhdarG2Q,18009
|
130
130
|
datapilot/core/platforms/dbt/wrappers/run_results/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
131
131
|
datapilot/core/platforms/dbt/wrappers/run_results/run_results.py,sha256=3E_y1gAF491WmXt-Z_Fqhr5BU-kVnzjHpZZv5UpOx-s,1267
|
132
132
|
datapilot/exceptions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -139,10 +139,10 @@ datapilot/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
139
139
|
datapilot/utils/utils.py,sha256=MY8q6ZBJ0hkrTuH7gWMxAlEAQGrajXFMabEhtGtT7sc,11524
|
140
140
|
datapilot/utils/formatting/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
141
141
|
datapilot/utils/formatting/utils.py,sha256=rAVmIYuldvw9VvCSwG2kMTEgiT7cEconp_F1sAWVyCo,1377
|
142
|
-
altimate_datapilot_cli-0.0.
|
143
|
-
altimate_datapilot_cli-0.0.
|
144
|
-
altimate_datapilot_cli-0.0.
|
145
|
-
altimate_datapilot_cli-0.0.
|
146
|
-
altimate_datapilot_cli-0.0.
|
147
|
-
altimate_datapilot_cli-0.0.
|
148
|
-
altimate_datapilot_cli-0.0.
|
142
|
+
altimate_datapilot_cli-0.0.18.dist-info/AUTHORS.rst,sha256=S4H4zw_v3GVyz5_55jF5Gf_YNG3s5Y0VgbQaEov9PFk,50
|
143
|
+
altimate_datapilot_cli-0.0.18.dist-info/LICENSE,sha256=Mf7VqpsmU2QR5_s2Cb_ZeeMB2Q9KW7YXJENZPFZRK1k,1100
|
144
|
+
altimate_datapilot_cli-0.0.18.dist-info/METADATA,sha256=9JiGuTvDzD4ltREDSNTP8Cb5qXQT4GH8spkpFwtzD4w,2380
|
145
|
+
altimate_datapilot_cli-0.0.18.dist-info/WHEEL,sha256=eOLhNAGa2EW3wWl_TU484h7q1UNgy0JXjjoqKoxAAQc,92
|
146
|
+
altimate_datapilot_cli-0.0.18.dist-info/entry_points.txt,sha256=0zwgKxN40RLVB5jSmlJz7IH_FBqRtpFdbrdZn-xuQIY,141
|
147
|
+
altimate_datapilot_cli-0.0.18.dist-info/top_level.txt,sha256=gAOFOdwB00vcxv74y4M1J-nQtPvEatU8-mYViEBcToo,10
|
148
|
+
altimate_datapilot_cli-0.0.18.dist-info/RECORD,,
|
datapilot/__init__.py
CHANGED
@@ -1 +1 @@
|
|
1
|
-
__version__ = "0.0.
|
1
|
+
__version__ = "0.0.18"
|
@@ -104,3 +104,9 @@ class APIClient:
|
|
104
104
|
"check_names": check_names,
|
105
105
|
}
|
106
106
|
return self.post(endpoint, data=data)
|
107
|
+
|
108
|
+
def get_all_dbt_configs(self):
|
109
|
+
"""Get all DBT configs with a page size of 100."""
|
110
|
+
endpoint = "/dbtconfig/"
|
111
|
+
params = {"size": 100}
|
112
|
+
return self.get(endpoint, params=params)
|
@@ -124,3 +124,13 @@ def run_project_governance_llm_checks(
|
|
124
124
|
):
|
125
125
|
api_client = APIClient(api_token=api_token, base_url=backend_url, tenant=tenant)
|
126
126
|
return api_client.run_project_governance_llm_checks(manifest, catalog, check_names)
|
127
|
+
|
128
|
+
|
129
|
+
def get_all_dbt_configs(
|
130
|
+
api_token,
|
131
|
+
tenant,
|
132
|
+
backend_url,
|
133
|
+
):
|
134
|
+
"""Get all DBT configs from the API."""
|
135
|
+
api_client = APIClient(api_token=api_token, base_url=backend_url, tenant=tenant)
|
136
|
+
return api_client.get_all_dbt_configs()
|
@@ -3,6 +3,7 @@ import logging
|
|
3
3
|
import click
|
4
4
|
|
5
5
|
from datapilot.clients.altimate.utils import check_token_and_instance
|
6
|
+
from datapilot.clients.altimate.utils import get_all_dbt_configs
|
6
7
|
from datapilot.clients.altimate.utils import onboard_file
|
7
8
|
from datapilot.clients.altimate.utils import start_dbt_ingestion
|
8
9
|
from datapilot.clients.altimate.utils import validate_credentials
|
@@ -45,6 +46,11 @@ def dbt():
|
|
45
46
|
required=False,
|
46
47
|
help="Path to the DBT config file",
|
47
48
|
)
|
49
|
+
@click.option(
|
50
|
+
"--config-name",
|
51
|
+
required=False,
|
52
|
+
help="Name of the DBT config to use from the API",
|
53
|
+
)
|
48
54
|
@click.option(
|
49
55
|
"--select",
|
50
56
|
required=False,
|
@@ -53,7 +59,14 @@ def dbt():
|
|
53
59
|
)
|
54
60
|
@click.option("--backend-url", required=False, help="Altimate's Backend URL", default="https://api.myaltimate.com")
|
55
61
|
def project_health(
|
56
|
-
token,
|
62
|
+
token,
|
63
|
+
instance_name,
|
64
|
+
manifest_path,
|
65
|
+
catalog_path,
|
66
|
+
config_path=None,
|
67
|
+
config_name=None,
|
68
|
+
select=None,
|
69
|
+
backend_url="https://api.myaltimate.com",
|
57
70
|
):
|
58
71
|
"""
|
59
72
|
Validate the DBT project's configuration and structure.
|
@@ -62,6 +75,23 @@ def project_health(
|
|
62
75
|
config = None
|
63
76
|
if config_path:
|
64
77
|
config = load_config(config_path)
|
78
|
+
elif config_name and token and instance_name:
|
79
|
+
# Get configs from API
|
80
|
+
configs = get_all_dbt_configs(token, instance_name, backend_url)
|
81
|
+
if configs and "items" in configs:
|
82
|
+
# Find config by name
|
83
|
+
matching_configs = [c for c in configs["items"] if c["name"] == config_name]
|
84
|
+
if matching_configs:
|
85
|
+
# Get the config directly from the API response
|
86
|
+
click.echo(f"Using config: {config_name}")
|
87
|
+
config = matching_configs[0].get("config", {})
|
88
|
+
else:
|
89
|
+
click.echo(f"No config found with name: {config_name}")
|
90
|
+
return
|
91
|
+
else:
|
92
|
+
click.echo("Failed to fetch configs from API")
|
93
|
+
return
|
94
|
+
|
65
95
|
selected_models = []
|
66
96
|
if select:
|
67
97
|
selected_models = select.split(" ")
|
@@ -116,7 +116,7 @@ class ManifestV10Wrapper(BaseManifestWrapper):
|
|
116
116
|
contract=contract,
|
117
117
|
meta=node.meta,
|
118
118
|
patch_path=node.patch_path,
|
119
|
-
access=node.access
|
119
|
+
access=getattr(node.access, "value", None) if hasattr(node, "access") and node.access is not None else None,
|
120
120
|
)
|
121
121
|
|
122
122
|
def _get_source(self, source: SourceNode) -> AltimateManifestSourceNode:
|
@@ -116,7 +116,7 @@ class ManifestV11Wrapper(BaseManifestWrapper):
|
|
116
116
|
contract=contract,
|
117
117
|
meta=node.meta,
|
118
118
|
patch_path=node.patch_path,
|
119
|
-
access=node.access
|
119
|
+
access=getattr(node.access, "value", None) if hasattr(node, "access") and node.access is not None else None,
|
120
120
|
)
|
121
121
|
|
122
122
|
def _get_source(self, source: SourceNode) -> AltimateManifestSourceNode:
|
@@ -116,7 +116,7 @@ class ManifestV12Wrapper(BaseManifestWrapper):
|
|
116
116
|
contract=contract,
|
117
117
|
meta=node.meta,
|
118
118
|
patch_path=node.patch_path,
|
119
|
-
access=node.access
|
119
|
+
access=getattr(node.access, "value", None) if hasattr(node, "access") and node.access is not None else None,
|
120
120
|
)
|
121
121
|
|
122
122
|
def _get_source(self, source: SourceNode) -> AltimateManifestSourceNode:
|
{altimate_datapilot_cli-0.0.16.dist-info → altimate_datapilot_cli-0.0.18.dist-info}/AUTHORS.rst
RENAMED
File without changes
|
File without changes
|
File without changes
|
{altimate_datapilot_cli-0.0.16.dist-info → altimate_datapilot_cli-0.0.18.dist-info}/entry_points.txt
RENAMED
File without changes
|
{altimate_datapilot_cli-0.0.16.dist-info → altimate_datapilot_cli-0.0.18.dist-info}/top_level.txt
RENAMED
File without changes
|