dlt._workspace.deployment.requirements
Export, save, load, and migrate TWorkspaceRequirementsManifest — the wire format for workspace dependencies shipped to the runtime.
Supports requirements.txt and requirements.in. If uv installed - supports pyproject with dependency groups and uv/PEP lock files.
poetry/PDM support can be easily added.
TInstallSpec Objects
class TInstallSpec(TypedDict)
How a Python package is installed, derived from PEP 610 direct_url.json.
WorkspaceRequirementsError Objects
class WorkspaceRequirementsError(Exception)
Raised when a workspace's dependency files cannot be exported.
get_dlt_requirement_spec
def get_dlt_requirement_spec() -> str
PEP 508 spec for the currently installed dlt distribution, deployment-mode.
get_pkg_install_spec
def get_pkg_install_spec(pkg_name: str,
*,
extras: Optional[List[str]] = None) -> TInstallSpec
Classify the install of pkg_name as pypi / path / editable / git.
render_pep508
def render_pep508(spec: TInstallSpec, *, for_deployment: bool) -> str
PEP 508 line for [project.dependencies] / top-of-requirements.txt.
Arguments:
spec- Install spec to render.for_deployment- When True, render a portable line (editable becomes a version pin; path/git become PEP 508 direct refs). When False (used for scaffolding), emit a version pin so[tool.uv.sources]can carry the override.
render_uv_source
def render_uv_source(spec: TInstallSpec) -> Optional[Dict[str, Any]]
[tool.uv.sources][<name>] value, or None when a direct ref in deps suffices.
render_requirements_lines
def render_requirements_lines(spec: TInstallSpec) -> List[str]
Lines for requirements.txt reproducing spec. Editable becomes -e <path>.
get_workspace_install_specs
def get_workspace_install_specs() -> List[TInstallSpec]
Specs for dlt[hub] + dlthub + dlthub-client, skipping ones not installed.
python_version
def python_version() -> str
Current interpreter's major.minor version, e.g. "3.12".
build_launcher_requirements
def build_launcher_requirements() -> Dict[str, List[str]]
Per-launcher mandatory specs. dlt is injected separately at build time.
build_dashboard_group
def build_dashboard_group() -> List[str]
Specs for the DASHBOARD_JOB_REF group.
default_requirements_manifest
def default_requirements_manifest() -> TWorkspaceRequirementsManifest
Minimal manifest: empty main, dashboard group, launcher specs with dlt injected.
export_workspace_requirements
def export_workspace_requirements(
workspace_root: Path,
default_groups: Optional[List[str]] = None
) -> TWorkspaceRequirementsManifest
Export a workspace's dependencies as a TWorkspaceRequirementsManifest.
If no default group names dlt, the installed dlt spec is injected into the launcher baseline so every job gets it.
Arguments:
workspace_rootPath - Workspace directory.default_groupsOptional[List[str]] - Manifest-leveldefault_groups. Defaults to["main"].
Returns:
TWorkspaceRequirementsManifest- Always contains amainentry ingroups.
Raises:
WorkspaceRequirementsError-uv.lockout of sync,uvfailure, or parse error.
migrate_requirements
def migrate_requirements(manifest_dict: DictStrAny, from_engine: int,
to_engine: int) -> TWorkspaceRequirementsManifest
Migrate a requirements manifest dict between engine versions.
save_requirements
def save_requirements(req: TWorkspaceRequirementsManifest,
f: BinaryIO) -> None
Serialize a requirements manifest as typed JSON.
load_requirements
def load_requirements(f: BinaryIO) -> TWorkspaceRequirementsManifest
Read, migrate, and validate a requirements manifest.
is_uv_available
def is_uv_available() -> bool
Return True if the uv binary is on PATH.