uv-workspace
No long description provided.
Installation
dagger install github.com/typesafe-ai/daggerverse/uv-workspace@7bc45c368b129dcbbec5aa9cbfdd9ff00f1a1187Entrypoint
Return Type
UvWorkspace !Arguments
| Name | Type | Default Value | Description |
|---|---|---|---|
| sourceDir | Directory ! | - | Source directory containing the workspace |
| baseContainer | Container ! | - | Pre-configured container (with auth, system packages, etc.) |
| workspacePath | String ! | "." | Path to workspace root (holding uv.lock and pyproject.toml) within source_dir |
Example
dagger -m github.com/typesafe-ai/daggerverse/uv-workspace@7bc45c368b129dcbbec5aa9cbfdd9ff00f1a1187 call \
--source-dir DIR_PATH --base-container IMAGE:TAG --workspace-path stringfunc (m *MyModule) Example(sourceDir *dagger.Directory, baseContainer *dagger.Container, workspacePath string) *dagger.UvWorkspace {
return dag.
UvWorkspace(sourceDir, baseContainer, workspacePath)
}@function
def example(source_dir: dagger.Directory, base_container: dagger.Container, workspace_path: str) -> dagger.UvWorkspace:
return (
dag.uv_workspace(source_dir, base_container, workspace_path)
)@func()
example(sourceDir: Directory, baseContainer: Container, workspacePath: string): UvWorkspace {
return dag
.uvWorkspace(sourceDir, baseContainer, workspacePath)
}Entrypoint
Return Type
UvWorkspaceUvRemoteBuild !Arguments
| Name | Type | Default Value | Description |
|---|---|---|---|
| container | Container ! | - | Container with remote deps installed and local packages stubbed out |
| plan | UvWorkspaceUvSyncPlan ! | - | Build configuration carried through the pipeline |
Example
dagger -m github.com/typesafe-ai/daggerverse/uv-workspace@7bc45c368b129dcbbec5aa9cbfdd9ff00f1a1187 call \
--container IMAGE:TAGfunc (m *MyModule) Example(container *dagger.Container, plan *dagger.UvWorkspaceUvSyncPlan) *dagger.UvWorkspaceUvRemoteBuild {
return dag.
UvWorkspace(container, plan)
}@function
def example(container: dagger.Container, plan: dagger.UvWorkspaceUvSyncPlan) -> dagger.UvWorkspaceUvRemoteBuild:
return (
dag.uv_workspace(container, plan)
)@func()
example(container: Container, plan: UvWorkspaceUvSyncPlan): UvWorkspaceUvRemoteBuild {
return dag
.uvWorkspace(container, plan)
}Entrypoint
Return Type
UvWorkspaceUvSyncPlan !Arguments
| Name | Type | Default Value | Description |
|---|---|---|---|
| sourceDir | Directory ! | - | No description provided |
| workspacePath | String ! | "." | No description provided |
| package | String | null | No description provided |
| extra | [String ! ] | null | No description provided |
| group | [String ! ] | null | No description provided |
| allExtras | Boolean ! | false | No description provided |
| allGroups | Boolean ! | false | No description provided |
| allPackages | Boolean ! | false | No description provided |
| daggerCodegen | Boolean ! | true | No description provided |
Example
Function UvWorkspaceUvSyncPlan.Constructor is not accessible from the uv-workspace moduleFunction UvWorkspaceUvSyncPlan.Constructor is not accessible from the uv-workspace moduleFunction UvWorkspaceUvSyncPlan.Constructor is not accessible from the uv-workspace moduleFunction UvWorkspaceUvSyncPlan.Constructor is not accessible from the uv-workspace moduleTypes
UvWorkspace 🔗
Builds minimal project containers by parsing uv.lock to resolve local dependencies.
sourceDir() 🔗
Source directory containing the workspace
Return Type
Directory ! Example
dagger -m github.com/typesafe-ai/daggerverse/uv-workspace@7bc45c368b129dcbbec5aa9cbfdd9ff00f1a1187 call \
--source-dir DIR_PATH --base-container IMAGE:TAG --workspace-path string source-dirfunc (m *MyModule) Example(sourceDir *dagger.Directory, baseContainer *dagger.Container, workspacePath string) *dagger.Directory {
return dag.
UvWorkspace(sourceDir, baseContainer, workspacePath).
SourceDir()
}@function
def example(source_dir: dagger.Directory, base_container: dagger.Container, workspace_path: str) -> dagger.Directory:
return (
dag.uv_workspace(source_dir, base_container, workspace_path)
.source_dir()
)@func()
example(sourceDir: Directory, baseContainer: Container, workspacePath: string): Directory {
return dag
.uvWorkspace(sourceDir, baseContainer, workspacePath)
.sourceDir()
}baseContainer() 🔗
Pre-configured container (with auth, system packages, etc.)
Return Type
Container ! Example
dagger -m github.com/typesafe-ai/daggerverse/uv-workspace@7bc45c368b129dcbbec5aa9cbfdd9ff00f1a1187 call \
--source-dir DIR_PATH --base-container IMAGE:TAG --workspace-path string base-containerfunc (m *MyModule) Example(sourceDir *dagger.Directory, baseContainer *dagger.Container, workspacePath string) *dagger.Container {
return dag.
UvWorkspace(sourceDir, baseContainer, workspacePath).
BaseContainer()
}@function
def example(source_dir: dagger.Directory, base_container: dagger.Container, workspace_path: str) -> dagger.Container:
return (
dag.uv_workspace(source_dir, base_container, workspace_path)
.base_container()
)@func()
example(sourceDir: Directory, baseContainer: Container, workspacePath: string): Container {
return dag
.uvWorkspace(sourceDir, baseContainer, workspacePath)
.baseContainer()
}workspacePath() 🔗
Path to workspace root (holding uv.lock and pyproject.toml) within source_dir
Return Type
String ! Example
dagger -m github.com/typesafe-ai/daggerverse/uv-workspace@7bc45c368b129dcbbec5aa9cbfdd9ff00f1a1187 call \
--source-dir DIR_PATH --base-container IMAGE:TAG --workspace-path string workspace-pathfunc (m *MyModule) Example(ctx context.Context, sourceDir *dagger.Directory, baseContainer *dagger.Container, workspacePath string) string {
return dag.
UvWorkspace(sourceDir, baseContainer, workspacePath).
WorkspacePath(ctx)
}@function
async def example(source_dir: dagger.Directory, base_container: dagger.Container, workspace_path: str) -> str:
return await (
dag.uv_workspace(source_dir, base_container, workspace_path)
.workspace_path()
)@func()
async example(sourceDir: Directory, baseContainer: Container, workspacePath: string): Promise<string> {
return dag
.uvWorkspace(sourceDir, baseContainer, workspacePath)
.workspacePath()
}withRemoteDependencies() 🔗
Scaffold workspace files and install remote (non-local) dependencies.
Parses uv.lock to find local workspace dependencies, mounts
pyproject.toml/uv.lock, scaffolds stubs for local packages, and
runs uv sync --no-install-local. Returns a UvRemoteBuild
whose container field holds the result. Callers can swap the
container via with_container() (e.g. to add Pulumi binaries)
before calling with_local_dependencies() to finish the build.
Return Type
UvWorkspaceUvRemoteBuild !Arguments
| Name | Type | Default Value | Description |
|---|---|---|---|
| package | String | null | Package name; if set, only that package's transitive local deps are scaffolded. Maps to `uv sync --package` |
| extra | [String ! ] | null | Extras to install; passed to `uv sync` as repeated `--extra` |
| group | [String ! ] | null | Dependency groups to install; passed to `uv sync` as repeated `--group` |
| allExtras | Boolean ! | false | Install every extra; maps to `uv sync --all-extras` |
| allGroups | Boolean ! | false | Install every dependency group; maps to `uv sync --all-groups` |
| allPackages | Boolean ! | false | Install every workspace member; maps to `uv sync --all-packages` |
| daggerCodegen | Boolean ! | true | If True (default), and the package being built has a `dagger.json`, run Dagger codegen and overlay the generated SDK before `uv sync`. No-op for non-Dagger projects. |
Example
dagger -m github.com/typesafe-ai/daggerverse/uv-workspace@7bc45c368b129dcbbec5aa9cbfdd9ff00f1a1187 call \
--source-dir DIR_PATH --base-container IMAGE:TAG --workspace-path string with-remote-dependencies --all-extras boolean --all-groups boolean --all-packages boolean --dagger-codegen booleanfunc (m *MyModule) Example(sourceDir *dagger.Directory, baseContainer *dagger.Container, workspacePath string, allExtras bool, allGroups bool, allPackages bool, daggerCodegen bool) *dagger.UvWorkspaceUvRemoteBuild {
return dag.
UvWorkspace(sourceDir, baseContainer, workspacePath).
WithRemoteDependencies(allExtras, allGroups, allPackages, daggerCodegen)
}@function
def example(source_dir: dagger.Directory, base_container: dagger.Container, workspace_path: str, all_extras: bool, all_groups: bool, all_packages: bool, dagger_codegen: bool) -> dagger.UvWorkspaceUvRemoteBuild:
return (
dag.uv_workspace(source_dir, base_container, workspace_path)
.with_remote_dependencies(all_extras, all_groups, all_packages, dagger_codegen)
)@func()
example(sourceDir: Directory, baseContainer: Container, workspacePath: string, allExtras: boolean, allGroups: boolean, allPackages: boolean, daggerCodegen: boolean): UvWorkspaceUvRemoteBuild {
return dag
.uvWorkspace(sourceDir, baseContainer, workspacePath)
.withRemoteDependencies(allExtras, allGroups, allPackages, daggerCodegen)
}build() 🔗
Build a minimal container with deps installed for the given package.
Convenience method composing with_remote_dependencies and
with_local_dependencies. For fine-grained control (e.g. running
pulumi install between remote deps and local source), call them
individually.
Return Type
Container !Arguments
| Name | Type | Default Value | Description |
|---|---|---|---|
| package | String | null | Package name; if set, only that package's transitive local deps are installed. Maps to `uv sync --package` |
| extra | [String ! ] | null | Extras to install; passed to `uv sync` as repeated `--extra` |
| group | [String ! ] | null | Dependency groups to install; passed to `uv sync` as repeated `--group` |
| allExtras | Boolean ! | false | Install every extra; maps to `uv sync --all-extras` |
| allGroups | Boolean ! | false | Install every dependency group; maps to `uv sync --all-groups` |
| allPackages | Boolean ! | false | Install every workspace member; maps to `uv sync --all-packages`. Only meaningful in workspaces |
| daggerCodegen | Boolean ! | true | If True (default), and the package being built has a `dagger.json`, run Dagger codegen and overlay the generated SDK before `uv sync`. This makes `[tool.uv.sources]` entries pointing at the generated tree (e.g. `dagger-io = { path = "sdk" }`) install correctly even though those paths are gitignored. No-op for non-Dagger projects. Pass False to skip. |
Example
dagger -m github.com/typesafe-ai/daggerverse/uv-workspace@7bc45c368b129dcbbec5aa9cbfdd9ff00f1a1187 call \
--source-dir DIR_PATH --base-container IMAGE:TAG --workspace-path string build --all-extras boolean --all-groups boolean --all-packages boolean --dagger-codegen booleanfunc (m *MyModule) Example(sourceDir *dagger.Directory, baseContainer *dagger.Container, workspacePath string, allExtras bool, allGroups bool, allPackages bool, daggerCodegen bool) *dagger.Container {
return dag.
UvWorkspace(sourceDir, baseContainer, workspacePath).
Build(allExtras, allGroups, allPackages, daggerCodegen)
}@function
def example(source_dir: dagger.Directory, base_container: dagger.Container, workspace_path: str, all_extras: bool, all_groups: bool, all_packages: bool, dagger_codegen: bool) -> dagger.Container:
return (
dag.uv_workspace(source_dir, base_container, workspace_path)
.build(all_extras, all_groups, all_packages, dagger_codegen)
)@func()
example(sourceDir: Directory, baseContainer: Container, workspacePath: string, allExtras: boolean, allGroups: boolean, allPackages: boolean, daggerCodegen: boolean): Container {
return dag
.uvWorkspace(sourceDir, baseContainer, workspacePath)
.build(allExtras, allGroups, allPackages, daggerCodegen)
}UvWorkspaceUvRemoteBuild 🔗
Container with workspace scaffolded and remote deps installed. Returned by `UvWorkspace.with_remote_dependencies()`. To inject custom steps (e.g. `pulumi install`) between remote and local dep installation, read `.container`, modify it, then create a new `UvRemoteBuild` via `.with_container()` before calling `.with_local_dependencies()`.
container() 🔗
Container with remote deps installed and local packages stubbed out
Return Type
Container ! Example
dagger -m github.com/typesafe-ai/daggerverse/uv-workspace@7bc45c368b129dcbbec5aa9cbfdd9ff00f1a1187 call \
with-remote-dependencies --all-extras boolean --all-groups boolean --all-packages boolean --dagger-codegen boolean \
containerfunc (m *MyModule) Example(allExtras bool, allGroups bool, allPackages bool, daggerCodegen bool) *dagger.Container {
return dag.
UvWorkspace().
WithRemoteDependencies(allExtras, allGroups, allPackages, daggerCodegen).
Container()
}@function
def example(all_extras: bool, all_groups: bool, all_packages: bool, dagger_codegen: bool) -> dagger.Container:
return (
dag.uv_workspace()
.with_remote_dependencies(all_extras, all_groups, all_packages, dagger_codegen)
.container()
)@func()
example(allExtras: boolean, allGroups: boolean, allPackages: boolean, daggerCodegen: boolean): Container {
return dag
.uvWorkspace()
.withRemoteDependencies(allExtras, allGroups, allPackages, daggerCodegen)
.container()
}plan() 🔗
Build configuration carried through the pipeline
Return Type
UvWorkspaceUvSyncPlan ! Example
dagger -m github.com/typesafe-ai/daggerverse/uv-workspace@7bc45c368b129dcbbec5aa9cbfdd9ff00f1a1187 call \
with-remote-dependencies --all-extras boolean --all-groups boolean --all-packages boolean --dagger-codegen boolean \
planfunc (m *MyModule) Example(allExtras bool, allGroups bool, allPackages bool, daggerCodegen bool) *dagger.UvWorkspaceUvSyncPlan {
return dag.
UvWorkspace().
WithRemoteDependencies(allExtras, allGroups, allPackages, daggerCodegen).
Plan()
}@function
def example(all_extras: bool, all_groups: bool, all_packages: bool, dagger_codegen: bool) -> dagger.UvWorkspaceUvSyncPlan:
return (
dag.uv_workspace()
.with_remote_dependencies(all_extras, all_groups, all_packages, dagger_codegen)
.plan()
)@func()
example(allExtras: boolean, allGroups: boolean, allPackages: boolean, daggerCodegen: boolean): UvWorkspaceUvSyncPlan {
return dag
.uvWorkspace()
.withRemoteDependencies(allExtras, allGroups, allPackages, daggerCodegen)
.plan()
}withContainer() 🔗
Return a new UvRemoteBuild with a different container but the same plan.
Return Type
UvWorkspaceUvRemoteBuild !Arguments
| Name | Type | Default Value | Description |
|---|---|---|---|
| container | Container ! | - | Replacement container (e.g. after installing non-Python packages) |
Example
dagger -m github.com/typesafe-ai/daggerverse/uv-workspace@7bc45c368b129dcbbec5aa9cbfdd9ff00f1a1187 call \
with-remote-dependencies --all-extras boolean --all-groups boolean --all-packages boolean --dagger-codegen boolean \
with-container --container IMAGE:TAGfunc (m *MyModule) Example(allExtras bool, allGroups bool, allPackages bool, daggerCodegen bool, container *dagger.Container) *dagger.UvWorkspaceUvRemoteBuild {
return dag.
UvWorkspace().
WithRemoteDependencies(allExtras, allGroups, allPackages, daggerCodegen).
WithContainer(container)
}@function
def example(all_extras: bool, all_groups: bool, all_packages: bool, dagger_codegen: bool, container: dagger.Container) -> dagger.UvWorkspaceUvRemoteBuild:
return (
dag.uv_workspace()
.with_remote_dependencies(all_extras, all_groups, all_packages, dagger_codegen)
.with_container(container)
)@func()
example(allExtras: boolean, allGroups: boolean, allPackages: boolean, daggerCodegen: boolean, container: Container): UvWorkspaceUvRemoteBuild {
return dag
.uvWorkspace()
.withRemoteDependencies(allExtras, allGroups, allPackages, daggerCodegen)
.withContainer(container)
}withLocalDependencies() 🔗
Copy real local source code and install local packages.
Overlays actual src/ directories for each needed local package,
runs a final uv sync to install them, and strips the build-time
cache mount from the returned container.
Return Type
Container ! Example
dagger -m github.com/typesafe-ai/daggerverse/uv-workspace@7bc45c368b129dcbbec5aa9cbfdd9ff00f1a1187 call \
with-remote-dependencies --all-extras boolean --all-groups boolean --all-packages boolean --dagger-codegen boolean \
with-local-dependenciesfunc (m *MyModule) Example(allExtras bool, allGroups bool, allPackages bool, daggerCodegen bool) *dagger.Container {
return dag.
UvWorkspace().
WithRemoteDependencies(allExtras, allGroups, allPackages, daggerCodegen).
WithLocalDependencies()
}@function
def example(all_extras: bool, all_groups: bool, all_packages: bool, dagger_codegen: bool) -> dagger.Container:
return (
dag.uv_workspace()
.with_remote_dependencies(all_extras, all_groups, all_packages, dagger_codegen)
.with_local_dependencies()
)@func()
example(allExtras: boolean, allGroups: boolean, allPackages: boolean, daggerCodegen: boolean): Container {
return dag
.uvWorkspace()
.withRemoteDependencies(allExtras, allGroups, allPackages, daggerCodegen)
.withLocalDependencies()
}UvWorkspaceUvSyncPlan 🔗
Resolved build configuration for a uv workspace sync. Use the `create()` constructor to parse uv.lock and resolve dependencies once. The resolved state is carried through the builder pipeline without re-parsing.
wsDir() 🔗
Resolved workspace directory (with codegen overlay if applicable)
Return Type
Directory ! Example
Function UvWorkspaceUvSyncPlan.wsDir is not accessible from the uv-workspace moduleFunction UvWorkspaceUvSyncPlan.wsDir is not accessible from the uv-workspace moduleFunction UvWorkspaceUvSyncPlan.wsDir is not accessible from the uv-workspace moduleFunction UvWorkspaceUvSyncPlan.wsDir is not accessible from the uv-workspace moduleneededLocalNames() 🔗
Names of needed local packages (sorted)
Return Type
[String ! ] ! Example
Function UvWorkspaceUvSyncPlan.neededLocalNames is not accessible from the uv-workspace moduleFunction UvWorkspaceUvSyncPlan.neededLocalNames is not accessible from the uv-workspace moduleFunction UvWorkspaceUvSyncPlan.neededLocalNames is not accessible from the uv-workspace moduleFunction UvWorkspaceUvSyncPlan.neededLocalNames is not accessible from the uv-workspace moduleneededLocalPaths() 🔗
Workspace-relative paths corresponding to needed_local_names
Return Type
[String ! ] ! Example
Function UvWorkspaceUvSyncPlan.neededLocalPaths is not accessible from the uv-workspace moduleFunction UvWorkspaceUvSyncPlan.neededLocalPaths is not accessible from the uv-workspace moduleFunction UvWorkspaceUvSyncPlan.neededLocalPaths is not accessible from the uv-workspace moduleFunction UvWorkspaceUvSyncPlan.neededLocalPaths is not accessible from the uv-workspace moduleflatPackage() 🔗
Whether the target package uses a flat layout (no build-system)
Return Type
Boolean ! Example
Function UvWorkspaceUvSyncPlan.flatPackage is not accessible from the uv-workspace moduleFunction UvWorkspaceUvSyncPlan.flatPackage is not accessible from the uv-workspace moduleFunction UvWorkspaceUvSyncPlan.flatPackage is not accessible from the uv-workspace moduleFunction UvWorkspaceUvSyncPlan.flatPackage is not accessible from the uv-workspace modulepackage() 🔗
Target package name (None means all packages)
Return Type
String Example
Function UvWorkspaceUvSyncPlan.package is not accessible from the uv-workspace moduleFunction UvWorkspaceUvSyncPlan.package is not accessible from the uv-workspace moduleFunction UvWorkspaceUvSyncPlan.package is not accessible from the uv-workspace moduleFunction UvWorkspaceUvSyncPlan.package is not accessible from the uv-workspace moduleuvSyncArgs() 🔗
Precomputed uv sync argv
Return Type
[String ! ] ! Example
Function UvWorkspaceUvSyncPlan.uvSyncArgs is not accessible from the uv-workspace moduleFunction UvWorkspaceUvSyncPlan.uvSyncArgs is not accessible from the uv-workspace moduleFunction UvWorkspaceUvSyncPlan.uvSyncArgs is not accessible from the uv-workspace moduleFunction UvWorkspaceUvSyncPlan.uvSyncArgs is not accessible from the uv-workspace module