Skip to content

Commit a00e761

Browse files
ShreyaRzsimjee
andauthored
clean up install cli (#696)
* clean up install cli * lint * fixing tests & comments * lint --------- Co-authored-by: Zayd Simjee <[email protected]>
1 parent 2a19f9a commit a00e761

File tree

4 files changed

+53
-23
lines changed

4 files changed

+53
-23
lines changed

guardrails/cli/hub/console.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
from rich.console import Console
2+
3+
console = Console()

guardrails/cli/hub/install.py

Lines changed: 46 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515
from guardrails.cli.server.hub_client import get_validator_manifest
1616
from guardrails.cli.server.module_manifest import ModuleManifest
1717

18+
from .console import console
19+
1820

1921
def removesuffix(string: str, suffix: str) -> str:
2022
if sys.version_info.minor >= 9:
@@ -199,7 +201,7 @@ def install_hub_module(module_manifest: ModuleManifest, site_packages: str):
199201

200202
# Install validator module in namespaced directory under guardrails.hub
201203
download_output = pip_process(
202-
"install", install_url, [f"--target={install_directory}", "--no-deps"]
204+
"install", install_url, [f"--target={install_directory}", "--no-deps", "-q"]
203205
)
204206
logger.info(download_output)
205207

@@ -240,28 +242,56 @@ def install(
240242
if not package_uri.startswith("hub://"):
241243
logger.error("Invalid URI!")
242244
sys.exit(1)
245+
246+
console.print(f"\nInstalling {package_uri}...\n")
243247
logger.log(
244-
level=LEVELS.get("NOTICE"), msg=f"Installing {package_uri}..." # type: ignore
248+
level=LEVELS.get("SPAM"), msg=f"Installing {package_uri}..." # type: ignore
245249
)
250+
246251
# Validation
247252
module_name = package_uri.replace("hub://", "")
248253

249254
# Prep
250-
module_manifest = get_validator_manifest(module_name)
251-
site_packages = get_site_packages_location()
255+
with console.status("Fetching manifest", spinner="bouncingBar"):
256+
module_manifest = get_validator_manifest(module_name)
257+
site_packages = get_site_packages_location()
252258

253259
# Install
254-
install_hub_module(module_manifest, site_packages)
260+
with console.status("Downloading dependencies", spinner="bouncingBar"):
261+
install_hub_module(module_manifest, site_packages)
255262

256263
# Post-install
257-
run_post_install(module_manifest, site_packages)
258-
add_to_hub_inits(module_manifest, site_packages)
259-
success_message = Template(
260-
"""
261-
262-
Successfully installed ${module_name}!
263-
264-
See how to use it here: https://hub.guardrailsai.com/validator/${id}
265-
"""
266-
).safe_substitute(module_name=module_name, id=module_manifest.id)
267-
logger.log(level=LEVELS.get("SUCCESS"), msg=success_message) # type: ignore
264+
with console.status("Running post-install setup", spinner="bouncingBar"):
265+
run_post_install(module_manifest, site_packages)
266+
add_to_hub_inits(module_manifest, site_packages)
267+
268+
success_message_cli = Template(
269+
"""✅Successfully installed ${module_name}!
270+
271+
[bold]Import validator:[/bold]
272+
from guardrails.hub import ${export}
273+
274+
[bold]Get more info:[/bold]
275+
https://hub.guardrailsai.com/validator/${id}
276+
"""
277+
).safe_substitute(
278+
module_name=package_uri,
279+
id=module_manifest.id,
280+
export=module_manifest.exports[0],
281+
)
282+
success_message_logger = Template(
283+
"""✅Successfully installed ${module_name}!
284+
285+
Import validator:
286+
from guardrails.hub import ${export}
287+
288+
Get more info:
289+
https://hub.guardrailsai.com/validator/${id}
290+
"""
291+
).safe_substitute(
292+
module_name=package_uri,
293+
id=module_manifest.id,
294+
export=module_manifest.exports[0],
295+
)
296+
console.print(success_message_cli) # type: ignore
297+
logger.log(level=LEVELS.get("SPAM"), msg=success_message_logger) # type: ignore

guardrails/cli/logger.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
import logging
22
import os
33

4-
import coloredlogs
5-
64
os.environ[
75
"COLOREDLOGS_LEVEL_STYLES"
86
] = "spam=white,faint;success=green,bold;debug=magenta;verbose=blue;notice=cyan,bold;warning=yellow;error=red;critical=background=red" # noqa
@@ -17,4 +15,3 @@
1715

1816

1917
logger = logging.getLogger("guardrails-cli")
20-
coloredlogs.install(level="INFO", logger=logger)

tests/unit_tests/cli/hub/test_install.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -63,10 +63,10 @@ def test_happy_path(self, mocker):
6363
install("hub://guardrails/test-validator")
6464

6565
log_calls = [
66-
call(level=25, msg="Installing hub://guardrails/test-validator..."),
66+
call(level=5, msg="Installing hub://guardrails/test-validator..."),
6767
call(
68-
level=35,
69-
msg="\n\n Successfully installed guardrails/test-validator!\n\n See how to use it here: https://hub.guardrailsai.com/validator/id\n ", # noqa
68+
level=5,
69+
msg="Successfully installed hub://guardrails/test-validator!\n\nImport validator:\nfrom guardrails.hub import TestValidator\n\nGet more info:\nhttps://hub.guardrailsai.com/validator/id\n", # noqa
7070
), # noqa
7171
]
7272
assert mock_logger_log.call_count == 2
@@ -698,7 +698,7 @@ def test_install_hub_module(mocker):
698698
call(
699699
"install",
700700
"mock-install-url",
701-
["--target=mock/install/directory", "--no-deps"],
701+
["--target=mock/install/directory", "--no-deps", "-q"],
702702
),
703703
call("inspect", flags=["--path=mock/install/directory"], format="json"),
704704
call("install", "rstr"),

0 commit comments

Comments
 (0)