Skip to content

clean up install cli #696

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 4 commits into from
Apr 8, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions guardrails/cli/hub/console.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
from rich.console import Console

console = Console()
62 changes: 46 additions & 16 deletions guardrails/cli/hub/install.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@
from guardrails.cli.server.hub_client import get_validator_manifest
from guardrails.cli.server.module_manifest import ModuleManifest

from .console import console


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

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

Expand Down Expand Up @@ -240,28 +242,56 @@ def install(
if not package_uri.startswith("hub://"):
logger.error("Invalid URI!")
sys.exit(1)

console.print(f"\nInstalling {package_uri}...\n")
logger.log(
level=LEVELS.get("NOTICE"), msg=f"Installing {package_uri}..." # type: ignore
level=LEVELS.get("SPAM"), msg=f"Installing {package_uri}..." # type: ignore
)

# Validation
module_name = package_uri.replace("hub://", "")

# Prep
module_manifest = get_validator_manifest(module_name)
site_packages = get_site_packages_location()
with console.status("Fetching manifest", spinner="bouncingBar"):
module_manifest = get_validator_manifest(module_name)
site_packages = get_site_packages_location()

# Install
install_hub_module(module_manifest, site_packages)
with console.status("Downloading dependencies", spinner="bouncingBar"):
install_hub_module(module_manifest, site_packages)

# Post-install
run_post_install(module_manifest, site_packages)
add_to_hub_inits(module_manifest, site_packages)
success_message = Template(
"""

Successfully installed ${module_name}!

See how to use it here: https://hub.guardrailsai.com/validator/${id}
"""
).safe_substitute(module_name=module_name, id=module_manifest.id)
logger.log(level=LEVELS.get("SUCCESS"), msg=success_message) # type: ignore
with console.status("Running post-install setup", spinner="bouncingBar"):
run_post_install(module_manifest, site_packages)
add_to_hub_inits(module_manifest, site_packages)

success_message_cli = Template(
"""✅Successfully installed ${module_name}!

[bold]Import validator:[/bold]
from guardrails.hub import ${export}

[bold]Get more info:[/bold]
https://hub.guardrailsai.com/validator/${id}
"""
).safe_substitute(
module_name=package_uri,
id=module_manifest.id,
export=module_manifest.exports[0],
)
success_message_logger = Template(
"""✅Successfully installed ${module_name}!

Import validator:
from guardrails.hub import ${export}

Get more info:
https://hub.guardrailsai.com/validator/${id}
"""
).safe_substitute(
module_name=package_uri,
id=module_manifest.id,
export=module_manifest.exports[0],
)
console.print(success_message_cli) # type: ignore
logger.log(level=LEVELS.get("SPAM"), msg=success_message_logger) # type: ignore
3 changes: 0 additions & 3 deletions guardrails/cli/logger.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
import logging
import os

import coloredlogs

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


logger = logging.getLogger("guardrails-cli")
coloredlogs.install(level="INFO", logger=logger)
8 changes: 4 additions & 4 deletions tests/unit_tests/cli/hub/test_install.py
Original file line number Diff line number Diff line change
Expand Up @@ -63,10 +63,10 @@ def test_happy_path(self, mocker):
install("hub://guardrails/test-validator")

log_calls = [
call(level=25, msg="Installing hub://guardrails/test-validator..."),
call(level=5, msg="Installing hub://guardrails/test-validator..."),
call(
level=35,
msg="\n\n Successfully installed guardrails/test-validator!\n\n See how to use it here: https://hub.guardrailsai.com/validator/id\n ", # noqa
level=5,
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
), # noqa
]
assert mock_logger_log.call_count == 2
Expand Down Expand Up @@ -698,7 +698,7 @@ def test_install_hub_module(mocker):
call(
"install",
"mock-install-url",
["--target=mock/install/directory", "--no-deps"],
["--target=mock/install/directory", "--no-deps", "-q"],
),
call("inspect", flags=["--path=mock/install/directory"], format="json"),
call("install", "rstr"),
Expand Down