Dagger
Search

python

This module only supports python apps using UV for builds.
Current linters supported: pylint, ruff, mypy, pytest, pyright

Installation

dagger install github.com/act3-ai/dagger/python@v0.3.2

Entrypoint

Return Type
Python !
Arguments
NameTypeDefault ValueDescription
srcDirectory !-top-level source code directory
baseContainer -base development container
syncArgs[String ! ] -extra arguments for uv sync command
Example
dagger -m github.com/act3-ai/dagger/python@ffe94d07a42a00191044a6a08b0f5fb1bbac6794 call \
 --src DIR_PATH
func (m *MyModule) Example(src *dagger.Directory) *dagger.Python  {
	return dag.
			Python(src)
}
@function
def example(src: dagger.Directory, ) -> dagger.Python:
	return (
		dag.python(src)
	)
@func()
example(src: Directory, ): Python {
	return dag
		.python(src)
}

Types

Python 🔗

base() 🔗

Base container (with cache mounts added)

Return Type
Container !
Example
dagger -m github.com/act3-ai/dagger/python@ffe94d07a42a00191044a6a08b0f5fb1bbac6794 call \
 --src DIR_PATH base
func (m *MyModule) Example(src *dagger.Directory) *dagger.Container  {
	return dag.
			Python(src).
			Base()
}
@function
def example(src: dagger.Directory, ) -> dagger.Container:
	return (
		dag.python(src)
		.base()
	)
@func()
example(src: Directory, ): Container {
	return dag
		.python(src)
		.base()
}

ruff() 🔗

run ruff commands on a given source directory.

Return Type
Ruff !
Example
dagger -m github.com/act3-ai/dagger/python@ffe94d07a42a00191044a6a08b0f5fb1bbac6794 call \
 --src DIR_PATH ruff
func (m *MyModule) Example(src *dagger.Directory) *dagger.PythonRuff  {
	return dag.
			Python(src).
			Ruff()
}
@function
def example(src: dagger.Directory, ) -> dagger.PythonRuff:
	return (
		dag.python(src)
		.ruff()
	)
@func()
example(src: Directory, ): PythonRuff {
	return dag
		.python(src)
		.ruff()
}

mypy() 🔗

Runs mypy on a given source directory. Returns a results file and an exit-code.

Return Type
MypyResults !
Arguments
NameTypeDefault ValueDescription
outputFormatString -No description provided
Example
dagger -m github.com/act3-ai/dagger/python@ffe94d07a42a00191044a6a08b0f5fb1bbac6794 call \
 --src DIR_PATH mypy
func (m *MyModule) Example(src *dagger.Directory) *dagger.PythonMypyResults  {
	return dag.
			Python(src).
			Mypy()
}
@function
def example(src: dagger.Directory, ) -> dagger.PythonMypyResults:
	return (
		dag.python(src)
		.mypy()
	)
@func()
example(src: Directory, ): PythonMypyResults {
	return dag
		.python(src)
		.mypy()
}

publish() 🔗

publish python package/wheel

Return Type
Container !
Arguments
NameTypeDefault ValueDescription
buildArgs[String ! ] -extra args to pass into uv build
publishUrlString !-url to publish python package/wheel to
usernameString !-username for private publish url
passwordSecret !-password for private publish url, must be given in dagger.Secret format, in ex. env://MY_TOKEN
Example
dagger -m github.com/act3-ai/dagger/python@ffe94d07a42a00191044a6a08b0f5fb1bbac6794 call \
 --src DIR_PATH publish --publish-url string --username string --password env:MYSECRET
func (m *MyModule) Example(src *dagger.Directory, publishUrl string, username string, password *dagger.Secret) *dagger.Container  {
	return dag.
			Python(src).
			Publish(publishUrl, username, password)
}
@function
def example(src: dagger.Directory, publish_url: str, username: str, password: dagger.Secret) -> dagger.Container:
	return (
		dag.python(src)
		.publish(publish_url, username, password)
	)
@func()
example(src: Directory, publishUrl: string, username: string, password: Secret): Container {
	return dag
		.python(src)
		.publish(publishUrl, username, password)
}

container() 🔗

returns a base UV container and builds dev dependencies using uv sync

Return Type
Container !
Example
dagger -m github.com/act3-ai/dagger/python@ffe94d07a42a00191044a6a08b0f5fb1bbac6794 call \
 --src DIR_PATH container
func (m *MyModule) Example(src *dagger.Directory) *dagger.Container  {
	return dag.
			Python(src).
			Container()
}
@function
def example(src: dagger.Directory, ) -> dagger.Container:
	return (
		dag.python(src)
		.container()
	)
@func()
example(src: Directory, ): Container {
	return dag
		.python(src)
		.container()
}

withIndexAuth() 🔗

Add creds for private python package index

Return Type
Python !
Arguments
NameTypeDefault ValueDescription
nameString !-name of index in pyproject.toml
usernameString !-username to authenticate with
passwordSecret !-password to authenticate with
Example
dagger -m github.com/act3-ai/dagger/python@ffe94d07a42a00191044a6a08b0f5fb1bbac6794 call \
 --src DIR_PATH with-index-auth --name string --username string --password env:MYSECRET
func (m *MyModule) Example(src *dagger.Directory, name string, username string, password *dagger.Secret) *dagger.Python  {
	return dag.
			Python(src).
			WithIndexAuth(name, username, password)
}
@function
def example(src: dagger.Directory, name: str, username: str, password: dagger.Secret) -> dagger.Python:
	return (
		dag.python(src)
		.with_index_auth(name, username, password)
	)
@func()
example(src: Directory, name: string, username: string, password: Secret): Python {
	return dag
		.python(src)
		.withIndexAuth(name, username, password)
}

withEnvVariable() 🔗

add an environment variable to the base container

Return Type
Python !
Arguments
NameTypeDefault ValueDescription
nameString !-No description provided
valueString !-No description provided
Example
dagger -m github.com/act3-ai/dagger/python@ffe94d07a42a00191044a6a08b0f5fb1bbac6794 call \
 --src DIR_PATH with-env-variable --name string --value string
func (m *MyModule) Example(src *dagger.Directory, name string, value string) *dagger.Python  {
	return dag.
			Python(src).
			WithEnvVariable(name, value)
}
@function
def example(src: dagger.Directory, name: str, value: str) -> dagger.Python:
	return (
		dag.python(src)
		.with_env_variable(name, value)
	)
@func()
example(src: Directory, name: string, value: string): Python {
	return dag
		.python(src)
		.withEnvVariable(name, value)
}

withNetrc() 🔗

adds a netrc file as a secret to the base container

Return Type
Python !
Arguments
NameTypeDefault ValueDescription
netrcSecret !-netrc file to add, in format of dagger.secret (--netrc file://mynetrc)
Example
dagger -m github.com/act3-ai/dagger/python@ffe94d07a42a00191044a6a08b0f5fb1bbac6794 call \
 --src DIR_PATH with-netrc --netrc env:MYSECRET
func (m *MyModule) Example(src *dagger.Directory, netrc *dagger.Secret) *dagger.Python  {
	return dag.
			Python(src).
			WithNetrc(netrc)
}
@function
def example(src: dagger.Directory, netrc: dagger.Secret) -> dagger.Python:
	return (
		dag.python(src)
		.with_netrc(netrc)
	)
@func()
example(src: Directory, netrc: Secret): Python {
	return dag
		.python(src)
		.withNetrc(netrc)
}

checkLock() 🔗

check that the lockfile is in sync with pyproject.toml

Return Type
String !
Example
dagger -m github.com/act3-ai/dagger/python@ffe94d07a42a00191044a6a08b0f5fb1bbac6794 call \
 --src DIR_PATH check-lock
func (m *MyModule) Example(ctx context.Context, src *dagger.Directory) string  {
	return dag.
			Python(src).
			CheckLock(ctx)
}
@function
async def example(src: dagger.Directory, ) -> str:
	return await (
		dag.python(src)
		.check_lock()
	)
@func()
async example(src: Directory, ): Promise<string> {
	return dag
		.python(src)
		.checkLock()
}

pylint() 🔗

Runs pylint on a given source directory. Returns a results file and an exit-code.

Return Type
PylintResults !
Arguments
NameTypeDefault ValueDescription
outputFormatString "text"No description provided
Example
dagger -m github.com/act3-ai/dagger/python@ffe94d07a42a00191044a6a08b0f5fb1bbac6794 call \
 --src DIR_PATH pylint
func (m *MyModule) Example(src *dagger.Directory) *dagger.PythonPylintResults  {
	return dag.
			Python(src).
			Pylint()
}
@function
def example(src: dagger.Directory, ) -> dagger.PythonPylintResults:
	return (
		dag.python(src)
		.pylint()
	)
@func()
example(src: Directory, ): PythonPylintResults {
	return dag
		.python(src)
		.pylint()
}

service() 🔗

create function test service

Return Type
Service !
Example
dagger -m github.com/act3-ai/dagger/python@ffe94d07a42a00191044a6a08b0f5fb1bbac6794 call \
 --src DIR_PATH service
func (m *MyModule) Example(src *dagger.Directory) *dagger.Service  {
	return dag.
			Python(src).
			Service()
}
@function
def example(src: dagger.Directory, ) -> dagger.Service:
	return (
		dag.python(src)
		.service()
	)
@func()
example(src: Directory, ): Service {
	return dag
		.python(src)
		.service()
}

functionTest() 🔗

Return the result of running function test

Return Type
String !
Arguments
NameTypeDefault ValueDescription
dirString "ftest"function test directory
Example
dagger -m github.com/act3-ai/dagger/python@ffe94d07a42a00191044a6a08b0f5fb1bbac6794 call \
 --src DIR_PATH function-test
func (m *MyModule) Example(ctx context.Context, src *dagger.Directory) string  {
	return dag.
			Python(src).
			FunctionTest(ctx)
}
@function
async def example(src: dagger.Directory, ) -> str:
	return await (
		dag.python(src)
		.function_test()
	)
@func()
async example(src: Directory, ): Promise<string> {
	return dag
		.python(src)
		.functionTest()
}

pytest() 🔗

Runs pytest and returns results in multiple file formats. Current formats: CombinedOutput, json, xml, and html.

Return Type
PytestResults !
Arguments
NameTypeDefault ValueDescription
unitTestDirString "test"unit test directory
extraArgs[String ! ] -extra arguments to pytest, e.g., add "--cov-fail-under=80" to fail if coverage is below 80%
Example
dagger -m github.com/act3-ai/dagger/python@ffe94d07a42a00191044a6a08b0f5fb1bbac6794 call \
 --src DIR_PATH pytest
func (m *MyModule) Example(src *dagger.Directory) *dagger.PythonPytestResults  {
	return dag.
			Python(src).
			Pytest()
}
@function
def example(src: dagger.Directory, ) -> dagger.PythonPytestResults:
	return (
		dag.python(src)
		.pytest()
	)
@func()
example(src: Directory, ): PythonPytestResults {
	return dag
		.python(src)
		.pytest()
}

pyright() 🔗

Runs pyright on a given source directory. Returns a results file and an exit-code.

Return Type
PyrightResults !
Example
dagger -m github.com/act3-ai/dagger/python@ffe94d07a42a00191044a6a08b0f5fb1bbac6794 call \
 --src DIR_PATH pyright
func (m *MyModule) Example(src *dagger.Directory) *dagger.PythonPyrightResults  {
	return dag.
			Python(src).
			Pyright()
}
@function
def example(src: dagger.Directory, ) -> dagger.PythonPyrightResults:
	return (
		dag.python(src)
		.pyright()
	)
@func()
example(src: Directory, ): PythonPyrightResults {
	return dag
		.python(src)
		.pyright()
}

Ruff 🔗

lint() 🔗

Runs ruff check on a given source directory. Returns a results file and an exit-code.

Return Type
RuffLintResults !
Arguments
NameTypeDefault ValueDescription
outputFormatString "full"No description provided
Example
dagger -m github.com/act3-ai/dagger/python@ffe94d07a42a00191044a6a08b0f5fb1bbac6794 call \
 ruff \
 lint
func (m *MyModule) Example() *dagger.PythonRuffLintResults  {
	return dag.
			Python().
			Ruff().
			Lint()
}
@function
def example() -> dagger.PythonRuffLintResults:
	return (
		dag.python()
		.ruff()
		.lint()
	)
@func()
example(): PythonRuffLintResults {
	return dag
		.python()
		.ruff()
		.lint()
}

format() 🔗

Runs ruff format against a given source directory. Returns a Changeset that can be used to apply any changes found to the host.

Return Type
RuffFormatResults !
Arguments
NameTypeDefault ValueDescription
exclude[String ! ] -file pattern to exclude from ruff format
Example
dagger -m github.com/act3-ai/dagger/python@ffe94d07a42a00191044a6a08b0f5fb1bbac6794 call \
 ruff \
 format
func (m *MyModule) Example() *dagger.PythonRuffFormatResults  {
	return dag.
			Python().
			Ruff().
			Format()
}
@function
def example() -> dagger.PythonRuffFormatResults:
	return (
		dag.python()
		.ruff()
		.format()
	)
@func()
example(): PythonRuffFormatResults {
	return dag
		.python()
		.ruff()
		.format()
}

MypyResults 🔗

results() 🔗

returns results of mypy check as a file

Return Type
File !
Example
dagger -m github.com/act3-ai/dagger/python@ffe94d07a42a00191044a6a08b0f5fb1bbac6794 call \
 mypy \
 results
func (m *MyModule) Example() *dagger.File  {
	return dag.
			Python().
			Mypy().
			Results()
}
@function
def example() -> dagger.File:
	return (
		dag.python()
		.mypy()
		.results()
	)
@func()
example(): File {
	return dag
		.python()
		.mypy()
		.results()
}

check() 🔗

Check for any errors running mypy

Return Type
Void !
Example
dagger -m github.com/act3-ai/dagger/python@ffe94d07a42a00191044a6a08b0f5fb1bbac6794 call \
 mypy \
 check
func (m *MyModule) Example(ctx context.Context)   {
	return dag.
			Python().
			Mypy().
			Check(ctx)
}
@function
async def example() -> None:
	return await (
		dag.python()
		.mypy()
		.check()
	)
@func()
async example(): Promise<void> {
	return dag
		.python()
		.mypy()
		.check()
}

PylintResults 🔗

results() 🔗

returns results of pylint as a file

Return Type
File !
Example
dagger -m github.com/act3-ai/dagger/python@ffe94d07a42a00191044a6a08b0f5fb1bbac6794 call \
 pylint \
 results
func (m *MyModule) Example() *dagger.File  {
	return dag.
			Python().
			Pylint().
			Results()
}
@function
def example() -> dagger.File:
	return (
		dag.python()
		.pylint()
		.results()
	)
@func()
example(): File {
	return dag
		.python()
		.pylint()
		.results()
}

check() 🔗

Check for any errors running pylint

Return Type
Void !
Example
dagger -m github.com/act3-ai/dagger/python@ffe94d07a42a00191044a6a08b0f5fb1bbac6794 call \
 pylint \
 check
func (m *MyModule) Example(ctx context.Context)   {
	return dag.
			Python().
			Pylint().
			Check(ctx)
}
@function
async def example() -> None:
	return await (
		dag.python()
		.pylint()
		.check()
	)
@func()
async example(): Promise<void> {
	return dag
		.python()
		.pylint()
		.check()
}

PytestResults 🔗

xml() 🔗

returns results of unit-test as xml in a file.

Return Type
File !
Example
dagger -m github.com/act3-ai/dagger/python@ffe94d07a42a00191044a6a08b0f5fb1bbac6794 call \
 pytest \
 xml
func (m *MyModule) Example() *dagger.File  {
	return dag.
			Python().
			Pytest().
			Xml()
}
@function
def example() -> dagger.File:
	return (
		dag.python()
		.pytest()
		.xml()
	)
@func()
example(): File {
	return dag
		.python()
		.pytest()
		.xml()
}

json() 🔗

returns results of unit-test as json in a file.

Return Type
File !
Example
dagger -m github.com/act3-ai/dagger/python@ffe94d07a42a00191044a6a08b0f5fb1bbac6794 call \
 pytest \
 json
func (m *MyModule) Example() *dagger.File  {
	return dag.
			Python().
			Pytest().
			Json()
}
@function
def example() -> dagger.File:
	return (
		dag.python()
		.pytest()
		.json()
	)
@func()
example(): File {
	return dag
		.python()
		.pytest()
		.json()
}

html() 🔗

returns results of unit-test as html in a directory

Return Type
Directory !
Example
dagger -m github.com/act3-ai/dagger/python@ffe94d07a42a00191044a6a08b0f5fb1bbac6794 call \
 pytest \
 html
func (m *MyModule) Example() *dagger.Directory  {
	return dag.
			Python().
			Pytest().
			Html()
}
@function
def example() -> dagger.Directory:
	return (
		dag.python()
		.pytest()
		.html()
	)
@func()
example(): Directory {
	return dag
		.python()
		.pytest()
		.html()
}

merged() 🔗

A directory with all results merged in

Return Type
Directory !
Example
dagger -m github.com/act3-ai/dagger/python@ffe94d07a42a00191044a6a08b0f5fb1bbac6794 call \
 pytest \
 merged
func (m *MyModule) Example() *dagger.Directory  {
	return dag.
			Python().
			Pytest().
			Merged()
}
@function
def example() -> dagger.Directory:
	return (
		dag.python()
		.pytest()
		.merged()
	)
@func()
example(): Directory {
	return dag
		.python()
		.pytest()
		.merged()
}

check() 🔗

Return Type
Void !
Example
dagger -m github.com/act3-ai/dagger/python@ffe94d07a42a00191044a6a08b0f5fb1bbac6794 call \
 pytest \
 check
func (m *MyModule) Example(ctx context.Context)   {
	return dag.
			Python().
			Pytest().
			Check(ctx)
}
@function
async def example() -> None:
	return await (
		dag.python()
		.pytest()
		.check()
	)
@func()
async example(): Promise<void> {
	return dag
		.python()
		.pytest()
		.check()
}

PyrightResults 🔗

results() 🔗

returns results of pyright as a file

Return Type
File !
Example
dagger -m github.com/act3-ai/dagger/python@ffe94d07a42a00191044a6a08b0f5fb1bbac6794 call \
 pyright \
 results
func (m *MyModule) Example() *dagger.File  {
	return dag.
			Python().
			Pyright().
			Results()
}
@function
def example() -> dagger.File:
	return (
		dag.python()
		.pyright()
		.results()
	)
@func()
example(): File {
	return dag
		.python()
		.pyright()
		.results()
}

check() 🔗

Check for any errors running pyright

Return Type
Void !
Example
dagger -m github.com/act3-ai/dagger/python@ffe94d07a42a00191044a6a08b0f5fb1bbac6794 call \
 pyright \
 check
func (m *MyModule) Example(ctx context.Context)   {
	return dag.
			Python().
			Pyright().
			Check(ctx)
}
@function
async def example() -> None:
	return await (
		dag.python()
		.pyright()
		.check()
	)
@func()
async example(): Promise<void> {
	return dag
		.python()
		.pyright()
		.check()
}

RuffLintResults 🔗

results() 🔗

returns results of ruff lint as a file

Return Type
File !
Example
dagger -m github.com/act3-ai/dagger/python@ffe94d07a42a00191044a6a08b0f5fb1bbac6794 call \
 ruff \
 lint \
 results
func (m *MyModule) Example() *dagger.File  {
	return dag.
			Python().
			Ruff().
			Lint().
			Results()
}
@function
def example() -> dagger.File:
	return (
		dag.python()
		.ruff()
		.lint()
		.results()
	)
@func()
example(): File {
	return dag
		.python()
		.ruff()
		.lint()
		.results()
}

check() 🔗

Check for any errors running ruff lint

Return Type
Void !
Example
dagger -m github.com/act3-ai/dagger/python@ffe94d07a42a00191044a6a08b0f5fb1bbac6794 call \
 ruff \
 lint \
 check
func (m *MyModule) Example(ctx context.Context)   {
	return dag.
			Python().
			Ruff().
			Lint().
			Check(ctx)
}
@function
async def example() -> None:
	return await (
		dag.python()
		.ruff()
		.lint()
		.check()
	)
@func()
async example(): Promise<void> {
	return dag
		.python()
		.ruff()
		.lint()
		.check()
}

RuffFormatResults 🔗

changes() 🔗

Return Type
Changeset !
Example
dagger -m github.com/act3-ai/dagger/python@ffe94d07a42a00191044a6a08b0f5fb1bbac6794 call \
 ruff \
 format \
 changes
func (m *MyModule) Example() *dagger.Changeset  {
	return dag.
			Python().
			Ruff().
			Format().
			Changes()
}
@function
def example() -> dagger.Changeset:
	return (
		dag.python()
		.ruff()
		.format()
		.changes()
	)
@func()
example(): Changeset {
	return dag
		.python()
		.ruff()
		.format()
		.changes()
}

fix() 🔗

returns the results of ruff format as a changeset that can be applied to the host.

Return Type
Changeset !
Example
dagger -m github.com/act3-ai/dagger/python@ffe94d07a42a00191044a6a08b0f5fb1bbac6794 call \
 ruff \
 format \
 fix
func (m *MyModule) Example() *dagger.Changeset  {
	return dag.
			Python().
			Ruff().
			Format().
			Fix()
}
@function
def example() -> dagger.Changeset:
	return (
		dag.python()
		.ruff()
		.format()
		.fix()
	)
@func()
example(): Changeset {
	return dag
		.python()
		.ruff()
		.format()
		.fix()
}

check() 🔗

Returns an error if ruff format made any changes

Return Type
Void !
Example
dagger -m github.com/act3-ai/dagger/python@ffe94d07a42a00191044a6a08b0f5fb1bbac6794 call \
 ruff \
 format \
 check
func (m *MyModule) Example(ctx context.Context)   {
	return dag.
			Python().
			Ruff().
			Format().
			Check(ctx)
}
@function
async def example() -> None:
	return await (
		dag.python()
		.ruff()
		.format()
		.check()
	)
@func()
async example(): Promise<void> {
	return dag
		.python()
		.ruff()
		.format()
		.check()
}