Module
Experimental Dagger modules support.
- @dagger.object_type(cls: T | None = None) T | Callable[[T], T]
Exposes a Python class as a
dagger.ObjectTypeDef
.Used with
field()
andfunction()
to expose the object’s members.Example usage:
>>> @object_type >>> class Foo: >>> @function >>> def bar(self) -> str: >>> return "foobar"
- dagger.field(*, default: Callable[[], Any] | object = Ellipsis, name: str | None = None, init: bool = True) Any
Exposes an attribute as a
dagger.FieldTypeDef
.Should be used in a class decorated with
object_type()
.Example usage:
>>> @object_type >>> class Foo: >>> bar: str = field(default="foobar") >>> args: list[str] = field(default=list)
- Parameters:
default – The default value for the field or a 0-argument callable to initialize a field’s value.
name – An alternative name for the API. Useful to avoid conflicts with reserved words.
init – Whether the field should be included in the constructor. Defaults to True.
- @dagger.function(func: Callable[[P], R] | None = None, *, name: str | None = None, doc: str | None = None) Callable[[P], R] | Callable[[Callable[[P], R]], Callable[[P], R]]
Exposes a Python function as a
dagger.Function
.Example usage:
>>> @function >>> def foo() -> str: >>> return "bar"
- Parameters:
func – Should be a top-level function or instance method in a class decorated with
object_type()
. Can be an async function or a class, to use it’s constructor.name – An alternative name for the API. Useful to avoid conflicts with reserved words.
doc – An alternative description for the API. Useful to use the docstring for other purposes.
- class dagger.Arg(name: str)
Bases:
object
An alternative name when exposing a function argument to the API.
Useful to avoid conflicts with reserved words.
Example usage:
>>> @function ... def pull(from_: Annotated[str, Arg("from")]): ...
- class dagger.Doc(documentation: str, /)[source]
Bases:
object
- Define the documentation of a type annotation using
Annotated
, to be used in class attributes, function and method parameters, return values, and variables.
The value should be a positional-only string literal to allow static tools like editors and documentation generators to use it.
This complements docstrings.
The string value passed is available in the attribute
documentation
.Example:
>>> from typing_extensions import Annotated, Doc >>> def hi(to: Annotated[str, Doc("Who to say hi to")]) -> None: ...
- Define the documentation of a type annotation using