Skip to content
This repository was archived by the owner on May 17, 2024. It is now read-only.

Commit 8fccfff

Browse files
authored
Merge pull request #587 from dlawin/dx-708
add warning when using outdated data-diff version
2 parents 0cef306 + 2c8142d commit 8fccfff

File tree

3 files changed

+39
-22
lines changed

3 files changed

+39
-22
lines changed

data_diff/dbt.py

Lines changed: 18 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,16 @@
11
import os
22
import time
33
import webbrowser
4+
from typing import List, Optional, Dict
5+
import keyring
6+
47
import pydantic
58
import rich
69
from rich.prompt import Confirm
710

8-
from typing import List, Optional, Dict
9-
from .utils import (
10-
dbt_diff_string_template,
11-
getLogger,
12-
columns_added_template,
13-
columns_removed_template,
14-
no_differences_template,
15-
columns_type_changed_template,
16-
)
17-
18-
import keyring
19-
11+
from . import connect_to_table, diff_tables, Algorithm
2012
from .cloud import DatafoldAPI, TCloudApiDataDiff, TCloudApiOrgMeta, get_or_create_data_source
2113
from .dbt_parser import DbtParser, PROJECT_FILE
22-
23-
24-
logger = getLogger(__name__)
25-
26-
2714
from .tracking import (
2815
set_entrypoint_name,
2916
set_dbt_user_id,
@@ -34,8 +21,19 @@
3421
send_event_json,
3522
is_tracking_enabled,
3623
)
37-
from .utils import run_as_daemon, truncate_error
38-
from . import connect_to_table, diff_tables, Algorithm
24+
from .utils import (
25+
dbt_diff_string_template,
26+
getLogger,
27+
columns_added_template,
28+
columns_removed_template,
29+
no_differences_template,
30+
columns_type_changed_template,
31+
run_as_daemon,
32+
truncate_error,
33+
print_version_info,
34+
)
35+
36+
logger = getLogger(__name__)
3937

4038

4139
class TDiffVars(pydantic.BaseModel):
@@ -55,6 +53,7 @@ def dbt_diff(
5553
is_cloud: bool = False,
5654
dbt_selection: Optional[str] = None,
5755
) -> None:
56+
print_version_info()
5857
diff_threads = []
5958
set_entrypoint_name("CLI-dbt")
6059
dbt_parser = DbtParser(profiles_dir_override, project_dir_override)

data_diff/dbt_parser.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
from argparse import Namespace
22
from collections import defaultdict
33
import json
4-
import os
54
from pathlib import Path
65
from typing import List, Dict, Tuple, Set, Optional
76
import yaml
@@ -12,7 +11,6 @@
1211
from dbt.config.renderer import ProfileRenderer
1312

1413
from .utils import getLogger, get_from_dict_with_raise
15-
from .version import __version__
1614

1715

1816
logger = getLogger(__name__)
@@ -187,7 +185,6 @@ def get_run_results_models(self):
187185
if not models:
188186
raise ValueError("Expected > 0 successful models runs from the last dbt command.")
189187

190-
print(f"Running with data-diff={__version__}\n")
191188
return models
192189

193190
def get_manifest_obj(self):

data_diff/utils.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,10 @@
66
import operator
77
import threading
88
from datetime import datetime
9+
from packaging.version import parse as parse_version
10+
import requests
911
from tabulate import tabulate
12+
from .version import __version__
1013

1114

1215
def safezip(*args):
@@ -188,3 +191,21 @@ def columns_type_changed_template(columns_type_changed) -> str:
188191

189192
def no_differences_template() -> str:
190193
return "[bold][green]No row differences[/][/]\n"
194+
195+
196+
def print_version_info() -> None:
197+
base_version_string = f"Running with data-diff={__version__}"
198+
logger = getLogger(__name__)
199+
latest_version = None
200+
try:
201+
response = requests.get(url="https://pypi.org/pypi/data-diff/json", timeout=3)
202+
response.raise_for_status()
203+
response_json = response.json()
204+
latest_version = response_json["info"]["version"]
205+
except Exception as ex:
206+
logger.debug(f"Failed checking version: {ex}")
207+
208+
if latest_version and parse_version(__version__) < parse_version(latest_version):
209+
print(f"{base_version_string} (Update {latest_version} is available!)")
210+
else:
211+
print(base_version_string)

0 commit comments

Comments
 (0)