Skip to content

Commit f86281d

Browse files
Add version warnings in CLI commands (start, configure, install)
1 parent 7e157bd commit f86281d

File tree

6 files changed

+53
-2
lines changed

6 files changed

+53
-2
lines changed

guardrails/cli/configure.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
from guardrails.cli.hub.console import console
1313
from guardrails.cli.server.hub_client import AuthenticationError, get_auth
1414
from guardrails.cli.telemetry import trace_if_enabled
15-
15+
from guardrails.cli.version import version_warnings_if_applicable
1616

1717
DEFAULT_TOKEN = ""
1818
DEFAULT_ENABLE_METRICS = True
@@ -78,6 +78,7 @@ def configure(
7878
help="Clear the existing token from the configuration file.",
7979
),
8080
):
81+
version_warnings_if_applicable(console)
8182
trace_if_enabled("configure")
8283
existing_token = _get_default_token()
8384
last4 = existing_token[-4:] if existing_token else ""

guardrails/cli/hub/install.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@
55

66
from guardrails.cli.hub.hub import hub_command
77
from guardrails.cli.logger import logger
8+
from guardrails.cli.hub.console import console
89
from guardrails.cli.telemetry import trace_if_enabled
10+
from guardrails.cli.version import version_warnings_if_applicable
911

1012

1113
@hub_command.command()
@@ -40,6 +42,8 @@ def confirm():
4042
" local models for local inference?",
4143
)
4244

45+
version_warnings_if_applicable(console)
46+
4347
install_multiple(
4448
package_uris,
4549
install_local_models=local_models,

guardrails/cli/start.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
from guardrails.cli.hub.utils import pip_process
66
from guardrails.cli.logger import logger
77
from guardrails.cli.telemetry import trace_if_enabled
8+
from guardrails.cli.version import version_warnings_if_applicable
9+
from guardrails.cli.hub.console import console
810

911

1012
def api_is_installed() -> bool:
@@ -39,5 +41,6 @@ def start(
3941
from guardrails_api.cli.start import start # type: ignore
4042

4143
logger.info("Starting Guardrails server")
44+
version_warnings_if_applicable(console)
4245
trace_if_enabled("start")
4346
start(env, config, port)

guardrails/cli/version.py

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
import contextlib
2+
import requests
3+
import semver
4+
from importlib.metadata import version
5+
from rich.console import Console
6+
7+
8+
GUARDRAILS_PACKAGE_NAME = "guardrails-ai"
9+
10+
11+
def get_guardrails_version():
12+
return version(GUARDRAILS_PACKAGE_NAME)
13+
14+
15+
def version_warnings_if_applicable(console: Console):
16+
current_version = "0.1.0" or get_guardrails_version()
17+
18+
with contextlib.suppress(Exception):
19+
res = requests.get(f"https://pypi.org/pypi/{GUARDRAILS_PACKAGE_NAME}/json")
20+
version_info = res.json()
21+
info = version_info.get("info", {})
22+
latest_version = info.get("version")
23+
24+
is_update_available = semver.compare(latest_version, current_version) > 0
25+
26+
if is_update_available:
27+
console.print(
28+
"[yellow]There is a newer version of Guardrails "
29+
f"available {latest_version}. Your current version "
30+
f"is {current_version}[/yellow]!"
31+
)

poetry.lock

Lines changed: 12 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pyproject.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ diff-match-patch = "^20230430"
6161
guardrails-api = ">=0.0.1"
6262
mlflow = {version = ">=2.0.1", optional = true}
6363
uvloop = {version = "^0.20.0", optional = true}
64+
semver = "^3.0.2"
6465

6566
[tool.poetry.extras]
6667
sql = ["sqlvalidator", "sqlalchemy", "sqlglot"]

0 commit comments

Comments
 (0)