AmmarFahmy
adding all files
105b369
from typing import Optional
from pathlib import Path
from phi.utils.log import logger
def get_workspace_dir_from_env() -> Optional[Path]:
from os import getenv
from phi.constants import WORKSPACE_DIR_ENV_VAR
logger.debug(f"Reading {WORKSPACE_DIR_ENV_VAR} from environment variables")
workspace_dir = getenv(WORKSPACE_DIR_ENV_VAR, None)
if workspace_dir is not None:
return Path(workspace_dir)
return None
def get_workspace_dir_path(ws_root_path: Path) -> Path:
"""
Get the workspace directory path from the given workspace root path.
Phidata workspace dir can be found at:
1. subdirectory: workspace
2. In a folder defined by the pyproject.toml file
"""
from phi.utils.pyproject import read_pyproject_phidata
logger.debug(f"Searching for a workspace directory in {ws_root_path}")
# Case 1: Look for a subdirectory with name: workspace
ws_workspace_dir = ws_root_path.joinpath("workspace")
logger.debug(f"Searching {ws_workspace_dir}")
if ws_workspace_dir.exists() and ws_workspace_dir.is_dir():
return ws_workspace_dir
# Case 2: Look for a folder defined by the pyproject.toml file
ws_pyproject_toml = ws_root_path.joinpath("pyproject.toml")
if ws_pyproject_toml.exists() and ws_pyproject_toml.is_file():
phidata_conf = read_pyproject_phidata(ws_pyproject_toml)
if phidata_conf is not None:
phidata_conf_workspace_dir_str = phidata_conf.get("workspace", None)
phidata_conf_workspace_dir_path = ws_root_path.joinpath(phidata_conf_workspace_dir_str)
logger.debug(f"Searching {phidata_conf_workspace_dir_path}")
if phidata_conf_workspace_dir_path.exists() and phidata_conf_workspace_dir_path.is_dir():
return phidata_conf_workspace_dir_path
logger.error(f"Could not find a workspace dir at {ws_root_path}")
exit(0)
def generate_workspace_name(ws_dir_name: str) -> str:
import uuid
formatted_ws_name = ws_dir_name.replace(" ", "-").replace("_", "-").lower()
random_suffix = str(uuid.uuid4())[:4]
return f"{formatted_ws_name}-{random_suffix}"