Dagger
Search

uv-workspace

This module has been generated via dagger init and serves as a reference to
basic module structure as you get started with Dagger.

Two functions have been pre-created. You can modify, delete, or add to them,
as needed. They demonstrate usage of arguments and return types using simple
echo and grep commands. The functions can be called from the dagger CLI or
from one of the SDKs.

The first line in this comment block is a short description line and the
rest is a long description with more detail on the module's purpose or usage,
if appropriate. All modules should have a short description.

Installation

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

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@a2f9908dfd8dd2c1873c827fdc3a43cff7871d9f 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)
}

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@a2f9908dfd8dd2c1873c827fdc3a43cff7871d9f 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@a2f9908dfd8dd2c1873c827fdc3a43cff7871d9f 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@a2f9908dfd8dd2c1873c827fdc3a43cff7871d9f 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()
}

build() 🔗

Build a minimal container with deps installed for the given package.

Parses uv.lock to find local workspace dependencies, then builds in two layers: remote deps first (cacheable), then local source. If package is specified, only that package’s deps are installed (for workspaces).

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@a2f9908dfd8dd2c1873c827fdc3a43cff7871d9f 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)
}