Skip to content

Commit

Permalink
Reorganize Package.from_string.
Browse files Browse the repository at this point in the history
  • Loading branch information
rohinb2 committed Jul 3, 2024
1 parent 221f3b6 commit 67b2c20
Showing 1 changed file with 19 additions and 35 deletions.
54 changes: 19 additions & 35 deletions runhouse/resources/packages/package.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
from runhouse.utils import locate_working_dir


INSTALL_METHODS = {"local", "reqs", "pip", "conda"}
INSTALL_METHODS = {"local", "reqs", "pip", "conda", "rh"}

from runhouse.logger import logger

Expand Down Expand Up @@ -414,9 +414,7 @@ def from_string(specifier: str, dryrun=False):
git_url=url, install_method=install_method, dryrun=dryrun
)

target_and_args = specifier
if Package.split_req_install_method(target_and_args)[0] in INSTALL_METHODS:
target_and_args = Package.split_req_install_method(target_and_args)[1]
install_method, target_and_args = Package.split_req_install_method(specifier)

# Handles a case like "torch --index-url https://download.pytorch.org/whl/cu113"
rel_target, args = (
Expand All @@ -438,47 +436,33 @@ def from_string(specifier: str, dryrun=False):
else:
target = rel_target

if specifier.startswith("local:"):
return Package(install_target=target, install_method="local", dryrun=dryrun)
elif specifier.startswith("reqs:"):
return Package(
install_target=target,
install_args=args,
install_method="reqs",
dryrun=dryrun,
)
elif specifier.startswith("pip:"):
# If install method is not provided, we need to infer it
if not install_method:
if Path(specifier).resolve().exists():
install_method = "reqs"
else:
install_method = "pip"

# "Local" install method is a special case where we just copy a local folder and add to path
if install_method == "local":
return Package(
install_target=target,
install_args=args,
install_method="pip",
dryrun=dryrun,
install_target=target, install_method=install_method, dryrun=dryrun
)
elif specifier.startswith("conda:"):

elif install_method in ["reqs", "pip", "conda"]:
return Package(
install_target=target,
install_args=args,
install_method="conda",
install_method=install_method,
dryrun=dryrun,
)
elif specifier.startswith("rh:"):
elif install_method == "rh":
# Calling the factory method below
return package(name=specifier[len("rh:") :], dryrun=dryrun)
else:
if Path(specifier).resolve().exists():
return Package(
install_target=target,
install_args=args,
install_method="reqs",
dryrun=dryrun,
)
else:
return Package(
install_target=target,
install_args=args,
install_method="pip",
dryrun=dryrun,
)
raise ValueError(
f"Unknown install method {install_method}. Must be one of {INSTALL_METHODS}"
)


def package(
Expand Down

0 comments on commit 67b2c20

Please sign in to comment.