Spaces:
Runtime error
Runtime error
| from pathlib import Path | |
| from typing import Any, Dict, Optional, Set, TypedDict | |
| from tomlkit import load | |
| def get_package_root(cwd: Optional[Path] = None) -> Path: | |
| # traverse path for routes to host (any directory holding a pyproject.toml file) | |
| package_root = Path.cwd() if cwd is None else cwd | |
| visited: Set[Path] = set() | |
| while package_root not in visited: | |
| visited.add(package_root) | |
| pyproject_path = package_root / "pyproject.toml" | |
| if pyproject_path.exists(): | |
| return package_root | |
| package_root = package_root.parent | |
| raise FileNotFoundError("No pyproject.toml found") | |
| class LangServeExport(TypedDict): | |
| """ | |
| Fields from pyproject.toml that are relevant to LangServe | |
| Attributes: | |
| module: The module to import from, tool.langserve.export_module | |
| attr: The attribute to import from the module, tool.langserve.export_attr | |
| package_name: The name of the package, tool.poetry.name | |
| """ | |
| module: str | |
| attr: str | |
| package_name: str | |
| def get_langserve_export(filepath: Path) -> LangServeExport: | |
| with open(filepath) as f: | |
| data: Dict[str, Any] = load(f) | |
| try: | |
| module = data["tool"]["langserve"]["export_module"] | |
| attr = data["tool"]["langserve"]["export_attr"] | |
| package_name = data["tool"]["poetry"]["name"] | |
| except KeyError as e: | |
| raise KeyError("Invalid LangServe PyProject.toml") from e | |
| return LangServeExport(module=module, attr=attr, package_name=package_name) | |