|
1 | 1 | import os |
2 | 2 | import re |
3 | 3 | import time |
4 | | -import webbrowser |
5 | 4 | from typing import List, Optional, Dict, Tuple, Union |
6 | 5 | import keyring |
7 | 6 | import pydantic |
8 | 7 | import rich |
9 | | -from rich.prompt import Confirm, Prompt |
| 8 | +from rich.prompt import Prompt |
10 | 9 |
|
11 | | -from data_diff.errors import DataDiffCustomSchemaNoConfigError, DataDiffDbtProjectVarsNotFoundError |
| 10 | +from data_diff.errors import DataDiffCustomSchemaNoConfigError, DataDiffDbtProjectVarsNotFoundError, DataDiffNoAPIKeyError, DataDiffNoDatasourceIdError |
12 | 11 |
|
13 | 12 | from . import connect_to_table, diff_tables, Algorithm |
14 | 13 | from .cloud import DatafoldAPI, TCloudApiDataDiff, TCloudApiOrgMeta, get_or_create_data_source |
15 | | -from .dbt_parser import DbtParser, PROJECT_FILE, TDatadiffConfig |
| 14 | +from .dbt_parser import DbtParser, TDatadiffConfig |
16 | 15 | from .tracking import ( |
17 | 16 | bool_ask_for_email, |
18 | 17 | create_email_signup_event_json, |
|
38 | 37 | ) |
39 | 38 |
|
40 | 39 | logger = getLogger(__name__) |
| 40 | +CLOUD_DOC_URL = "https://docs.datafold.com/development_testing/cloud" |
41 | 41 |
|
42 | 42 |
|
43 | 43 | class TDiffVars(pydantic.BaseModel): |
@@ -81,11 +81,9 @@ def dbt_diff( |
81 | 81 | org_meta = api.get_org_meta() |
82 | 82 |
|
83 | 83 | if config.datasource_id is None: |
84 | | - cloud_doc_url = "https://docs.datafold.com/development_testing/cloud" |
85 | 84 | rich.print("[red]Data source ID not found in dbt_project.yml") |
86 | | - raise ValueError( |
87 | | - "Datasource ID not found. Please include it as a dbt variable in the dbt_project.yml. Instructions: {cloud_doc_url}" |
88 | | - "\nvars:\n data_diff:\n datasource_id: 1234" |
| 85 | + raise DataDiffNoDatasourceIdError( |
| 86 | + f"Datasource ID not found. Please include it as a dbt variable in the dbt_project.yml. \nInstructions: {CLOUD_DOC_URL}\n\nvars:\n data_diff:\n datasource_id: 1234" |
89 | 87 | ) |
90 | 88 |
|
91 | 89 | data_source = api.get_data_source(config.datasource_id) |
@@ -283,8 +281,9 @@ def _initialize_api() -> Optional[DatafoldAPI]: |
283 | 281 | rich.print("[red]API key not found. Getting from the keyring service") |
284 | 282 | api_key = keyring.get_password("data-diff", "DATAFOLD_API_KEY") |
285 | 283 | if not api_key: |
286 | | - cloud_doc_url = "https://docs.datafold.com/development_testing/cloud" |
287 | | - rich.print("[red]API key not found. Please follow the steps at {cloud_doc_url} to use the --cloud flag.") |
| 284 | + raise DataDiffNoAPIKeyError( |
| 285 | + f"API key not found. Please follow the steps at {CLOUD_DOC_URL} to use the --cloud flag." |
| 286 | + ) |
288 | 287 | rich.print("Saving the API key to the system keyring service") |
289 | 288 | try: |
290 | 289 | keyring.set_password("data-diff", "DATAFOLD_API_KEY", api_key) |
|
0 commit comments