Dagger
Search

uv-workspace

No long description provided.

Installation

dagger install github.com/typesafe-ai/daggerverse/uv-workspace@0e972af73dfe0168e3f68b57e1cb21816c695c5e

Entrypoint

Return Type
UvWorkspace !
Arguments
NameTypeDefault ValueDescription
sourceDirDirectory !-Source directory containing the workspace
baseContainerContainer !-Pre-configured container (with auth, system packages, etc.)
workspacePathString !"."Path to workspace root (holding uv.lock and pyproject.toml) within source_dir
Example
dagger -m github.com/typesafe-ai/daggerverse/uv-workspace@0e972af73dfe0168e3f68b57e1cb21816c695c5e call \
 --source-dir DIR_PATH --base-container IMAGE:TAG --workspace-path string
func (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
NameTypeDefault ValueDescription
containerContainer !-Container with remote deps installed
planUvWorkspaceUvSyncPlan !-Build configuration carried through the pipeline
Example
dagger -m github.com/typesafe-ai/daggerverse/uv-workspace@0e972af73dfe0168e3f68b57e1cb21816c695c5e call \
 --container IMAGE:TAG
func (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
NameTypeDefault ValueDescription
sourceDirDirectory !-No description provided
workspacePathString !"."No description provided
packageString nullNo description provided
extra[String ! ] nullNo description provided
group[String ! ] nullNo description provided
allExtrasBoolean !falseNo description provided
allGroupsBoolean !falseNo description provided
allPackagesBoolean !falseNo description provided
daggerCodegenBoolean !trueNo description provided
Example
Function UvWorkspaceUvSyncPlan.Constructor is not accessible from the uv-workspace module
Function UvWorkspaceUvSyncPlan.Constructor is not accessible from the uv-workspace module
Function UvWorkspaceUvSyncPlan.Constructor is not accessible from the uv-workspace module
Function UvWorkspaceUvSyncPlan.Constructor is not accessible from the uv-workspace module

Types

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@0e972af73dfe0168e3f68b57e1cb21816c695c5e call \
 --source-dir DIR_PATH --base-container IMAGE:TAG --workspace-path string source-dir
func (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@0e972af73dfe0168e3f68b57e1cb21816c695c5e call \
 --source-dir DIR_PATH --base-container IMAGE:TAG --workspace-path string base-container
func (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@0e972af73dfe0168e3f68b57e1cb21816c695c5e call \
 --source-dir DIR_PATH --base-container IMAGE:TAG --workspace-path string workspace-path
func (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() 🔗

Install remote (non-local) dependencies.

Copies the root pyproject.toml and uv.lock into the container and runs uv sync --no-install-local. Returns a UvRemoteBuild for the next pipeline steps: with_workspace_files() to scaffold local packages, then with_local_dependencies() to install them.

Return Type
UvWorkspaceUvRemoteBuild !
Arguments
NameTypeDefault ValueDescription
packageString nullPackage name; if set, only that package's transitive local deps are scaffolded. Maps to `uv sync --package`
extra[String ! ] nullExtras to install; passed to `uv sync` as repeated `--extra`
group[String ! ] nullDependency groups to install; passed to `uv sync` as repeated `--group`
allExtrasBoolean !falseInstall every extra; maps to `uv sync --all-extras`
allGroupsBoolean !falseInstall every dependency group; maps to `uv sync --all-groups`
allPackagesBoolean !falseInstall every workspace member; maps to `uv sync --all-packages`
daggerCodegenBoolean !trueIf 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@0e972af73dfe0168e3f68b57e1cb21816c695c5e 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 boolean
func (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, with_workspace_files, 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
NameTypeDefault ValueDescription
packageString nullPackage name; if set, only that package's transitive local deps are installed. Maps to `uv sync --package`
extra[String ! ] nullExtras to install; passed to `uv sync` as repeated `--extra`
group[String ! ] nullDependency groups to install; passed to `uv sync` as repeated `--group`
allExtrasBoolean !falseInstall every extra; maps to `uv sync --all-extras`
allGroupsBoolean !falseInstall every dependency group; maps to `uv sync --all-groups`
allPackagesBoolean !falseInstall every workspace member; maps to `uv sync --all-packages`. Only meaningful in workspaces
daggerCodegenBoolean !trueIf 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@0e972af73dfe0168e3f68b57e1cb21816c695c5e call \
 --source-dir DIR_PATH --base-container IMAGE:TAG --workspace-path string build --all-extras boolean --all-groups boolean --all-packages boolean --dagger-codegen boolean
func (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 remote deps installed. Returned by `UvWorkspace.with_remote_dependencies()`. Call `with_workspace_files()` to scaffold local packages, then `with_local_dependencies()` to copy real source and install them. Use `with_container()` to inject custom steps at any point.

container() 🔗

Container with remote deps installed

Return Type
Container !
Example
dagger -m github.com/typesafe-ai/daggerverse/uv-workspace@0e972af73dfe0168e3f68b57e1cb21816c695c5e call \
 with-remote-dependencies --all-extras boolean --all-groups boolean --all-packages boolean --dagger-codegen boolean \
 container
func (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@0e972af73dfe0168e3f68b57e1cb21816c695c5e call \
 with-remote-dependencies --all-extras boolean --all-groups boolean --all-packages boolean --dagger-codegen boolean \
 plan
func (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()
}

withWorkspaceFiles() 🔗

Scaffold local package stubs into the container.

For each needed local package, copies its pyproject.toml and creates empty stub source trees (README.md, src/pkg/init.py). This prepares the workspace structure so that uv sync can resolve local dependencies in the next step.

Return Type
UvWorkspaceUvRemoteBuild !
Example
dagger -m github.com/typesafe-ai/daggerverse/uv-workspace@0e972af73dfe0168e3f68b57e1cb21816c695c5e call \
 with-remote-dependencies --all-extras boolean --all-groups boolean --all-packages boolean --dagger-codegen boolean \
 with-workspace-files
func (m *MyModule) Example(allExtras bool, allGroups bool, allPackages bool, daggerCodegen bool) *dagger.UvWorkspaceUvRemoteBuild  {
	return dag.
			UvWorkspace().
			WithRemoteDependencies(allExtras, allGroups, allPackages, daggerCodegen).
			WithWorkspaceFiles()
}
@function
def example(all_extras: bool, all_groups: bool, all_packages: bool, dagger_codegen: bool) -> dagger.UvWorkspaceUvRemoteBuild:
	return (
		dag.uv_workspace()
		.with_remote_dependencies(all_extras, all_groups, all_packages, dagger_codegen)
		.with_workspace_files()
	)
@func()
example(allExtras: boolean, allGroups: boolean, allPackages: boolean, daggerCodegen: boolean): UvWorkspaceUvRemoteBuild {
	return dag
		.uvWorkspace()
		.withRemoteDependencies(allExtras, allGroups, allPackages, daggerCodegen)
		.withWorkspaceFiles()
}

withAllWorkspaceMembers() 🔗

Scaffold stubs for every local package in the workspace.

Unlike with_workspace_files() which only scaffolds packages the target transitively depends on, this scaffolds every local package found in uv.lock (editable or directory). Needed when an external tool (e.g. pulumi install) runs a full workspace resolve that requires all local packages to exist on disk.

Return Type
UvWorkspaceUvRemoteBuild !
Example
dagger -m github.com/typesafe-ai/daggerverse/uv-workspace@0e972af73dfe0168e3f68b57e1cb21816c695c5e call \
 with-remote-dependencies --all-extras boolean --all-groups boolean --all-packages boolean --dagger-codegen boolean \
 with-all-workspace-members
func (m *MyModule) Example(allExtras bool, allGroups bool, allPackages bool, daggerCodegen bool) *dagger.UvWorkspaceUvRemoteBuild  {
	return dag.
			UvWorkspace().
			WithRemoteDependencies(allExtras, allGroups, allPackages, daggerCodegen).
			WithAllWorkspaceMembers()
}
@function
def example(all_extras: bool, all_groups: bool, all_packages: bool, dagger_codegen: bool) -> dagger.UvWorkspaceUvRemoteBuild:
	return (
		dag.uv_workspace()
		.with_remote_dependencies(all_extras, all_groups, all_packages, dagger_codegen)
		.with_all_workspace_members()
	)
@func()
example(allExtras: boolean, allGroups: boolean, allPackages: boolean, daggerCodegen: boolean): UvWorkspaceUvRemoteBuild {
	return dag
		.uvWorkspace()
		.withRemoteDependencies(allExtras, allGroups, allPackages, daggerCodegen)
		.withAllWorkspaceMembers()
}

withContainer() 🔗

Return a new UvRemoteBuild with a different container but the same plan.

Return Type
UvWorkspaceUvRemoteBuild !
Arguments
NameTypeDefault ValueDescription
containerContainer !-Replacement container (e.g. after installing non-Python packages)
Example
dagger -m github.com/typesafe-ai/daggerverse/uv-workspace@0e972af73dfe0168e3f68b57e1cb21816c695c5e call \
 with-remote-dependencies --all-extras boolean --all-groups boolean --all-packages boolean --dagger-codegen boolean \
 with-container --container IMAGE:TAG
func (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@0e972af73dfe0168e3f68b57e1cb21816c695c5e call \
 with-remote-dependencies --all-extras boolean --all-groups boolean --all-packages boolean --dagger-codegen boolean \
 with-local-dependencies
func (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 module
Function UvWorkspaceUvSyncPlan.wsDir is not accessible from the uv-workspace module
Function UvWorkspaceUvSyncPlan.wsDir is not accessible from the uv-workspace module
Function UvWorkspaceUvSyncPlan.wsDir is not accessible from the uv-workspace module

allLocalNames() 🔗

Names of every local package in the workspace (sorted)

Return Type
[String ! ] !
Example
Function UvWorkspaceUvSyncPlan.allLocalNames is not accessible from the uv-workspace module
Function UvWorkspaceUvSyncPlan.allLocalNames is not accessible from the uv-workspace module
Function UvWorkspaceUvSyncPlan.allLocalNames is not accessible from the uv-workspace module
Function UvWorkspaceUvSyncPlan.allLocalNames is not accessible from the uv-workspace module

allLocalPaths() 🔗

Workspace-relative paths corresponding to all_local_names

Return Type
[String ! ] !
Example
Function UvWorkspaceUvSyncPlan.allLocalPaths is not accessible from the uv-workspace module
Function UvWorkspaceUvSyncPlan.allLocalPaths is not accessible from the uv-workspace module
Function UvWorkspaceUvSyncPlan.allLocalPaths is not accessible from the uv-workspace module
Function UvWorkspaceUvSyncPlan.allLocalPaths is not accessible from the uv-workspace module

neededLocalNames() 🔗

Names of needed local packages (sorted)

Return Type
[String ! ] !
Example
Function UvWorkspaceUvSyncPlan.neededLocalNames is not accessible from the uv-workspace module
Function UvWorkspaceUvSyncPlan.neededLocalNames is not accessible from the uv-workspace module
Function UvWorkspaceUvSyncPlan.neededLocalNames is not accessible from the uv-workspace module
Function UvWorkspaceUvSyncPlan.neededLocalNames is not accessible from the uv-workspace module

neededLocalPaths() 🔗

Workspace-relative paths corresponding to needed_local_names

Return Type
[String ! ] !
Example
Function UvWorkspaceUvSyncPlan.neededLocalPaths is not accessible from the uv-workspace module
Function UvWorkspaceUvSyncPlan.neededLocalPaths is not accessible from the uv-workspace module
Function UvWorkspaceUvSyncPlan.neededLocalPaths is not accessible from the uv-workspace module
Function UvWorkspaceUvSyncPlan.neededLocalPaths is not accessible from the uv-workspace module

flatPackage() 🔗

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 module
Function UvWorkspaceUvSyncPlan.flatPackage is not accessible from the uv-workspace module
Function UvWorkspaceUvSyncPlan.flatPackage is not accessible from the uv-workspace module
Function UvWorkspaceUvSyncPlan.flatPackage is not accessible from the uv-workspace module

package() 🔗

Target package name (None means all packages)

Return Type
String 
Example
Function UvWorkspaceUvSyncPlan.package is not accessible from the uv-workspace module
Function UvWorkspaceUvSyncPlan.package is not accessible from the uv-workspace module
Function UvWorkspaceUvSyncPlan.package is not accessible from the uv-workspace module
Function UvWorkspaceUvSyncPlan.package is not accessible from the uv-workspace module

uvSyncArgs() 🔗

Precomputed uv sync argv

Return Type
[String ! ] !
Example
Function UvWorkspaceUvSyncPlan.uvSyncArgs is not accessible from the uv-workspace module
Function UvWorkspaceUvSyncPlan.uvSyncArgs is not accessible from the uv-workspace module
Function UvWorkspaceUvSyncPlan.uvSyncArgs is not accessible from the uv-workspace module
Function UvWorkspaceUvSyncPlan.uvSyncArgs is not accessible from the uv-workspace module