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.2Entrypoint
Return Type
Python !Arguments
| Name | Type | Default Value | Description |
|---|---|---|---|
| src | Directory ! | - | top-level source code directory |
| base | Container | - | base development container |
| syncArgs | [String ! ] | - | extra arguments for uv sync command |
Example
dagger -m github.com/act3-ai/dagger/python@ffe94d07a42a00191044a6a08b0f5fb1bbac6794 call \
--src DIR_PATHfunc (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 basefunc (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 rufffunc (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
| Name | Type | Default Value | Description |
|---|---|---|---|
| outputFormat | String | - | No description provided |
Example
dagger -m github.com/act3-ai/dagger/python@ffe94d07a42a00191044a6a08b0f5fb1bbac6794 call \
--src DIR_PATH mypyfunc (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
| Name | Type | Default Value | Description |
|---|---|---|---|
| buildArgs | [String ! ] | - | extra args to pass into uv build |
| publishUrl | String ! | - | url to publish python package/wheel to |
| username | String ! | - | username for private publish url |
| password | Secret ! | - | 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:MYSECRETfunc (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 containerfunc (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
| Name | Type | Default Value | Description |
|---|---|---|---|
| name | String ! | - | name of index in pyproject.toml |
| username | String ! | - | username to authenticate with |
| password | Secret ! | - | 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:MYSECRETfunc (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
| Name | Type | Default Value | Description |
|---|---|---|---|
| name | String ! | - | No description provided |
| value | String ! | - | No description provided |
Example
dagger -m github.com/act3-ai/dagger/python@ffe94d07a42a00191044a6a08b0f5fb1bbac6794 call \
--src DIR_PATH with-env-variable --name string --value stringfunc (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
| Name | Type | Default Value | Description |
|---|---|---|---|
| netrc | Secret ! | - | 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:MYSECRETfunc (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-lockfunc (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
| Name | Type | Default Value | Description |
|---|---|---|---|
| outputFormat | String | "text" | No description provided |
Example
dagger -m github.com/act3-ai/dagger/python@ffe94d07a42a00191044a6a08b0f5fb1bbac6794 call \
--src DIR_PATH pylintfunc (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 servicefunc (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
| Name | Type | Default Value | Description |
|---|---|---|---|
| dir | String | "ftest" | function test directory |
Example
dagger -m github.com/act3-ai/dagger/python@ffe94d07a42a00191044a6a08b0f5fb1bbac6794 call \
--src DIR_PATH function-testfunc (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
| Name | Type | Default Value | Description |
|---|---|---|---|
| unitTestDir | String | "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 pytestfunc (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 pyrightfunc (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
| Name | Type | Default Value | Description |
|---|---|---|---|
| outputFormat | String | "full" | No description provided |
Example
dagger -m github.com/act3-ai/dagger/python@ffe94d07a42a00191044a6a08b0f5fb1bbac6794 call \
ruff \
lintfunc (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
| Name | Type | Default Value | Description |
|---|---|---|---|
| exclude | [String ! ] | - | file pattern to exclude from ruff format |
Example
dagger -m github.com/act3-ai/dagger/python@ffe94d07a42a00191044a6a08b0f5fb1bbac6794 call \
ruff \
formatfunc (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 \
resultsfunc (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 \
checkfunc (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 \
resultsfunc (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 \
checkfunc (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 \
xmlfunc (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 \
jsonfunc (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 \
htmlfunc (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 \
mergedfunc (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 \
checkfunc (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 \
resultsfunc (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 \
checkfunc (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 \
resultsfunc (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 \
checkfunc (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 \
changesfunc (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 \
fixfunc (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 \
checkfunc (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()
}