PublishModule

mill.pythonlib.PublishModule
See thePublishModule companion object
@Scaladoc(value = "/**\n * A python module which also defines how to build and publish source distributions and wheels.\n */")
trait PublishModule extends PythonModule

A python module which also defines how to build and publish source distributions and wheels.

Attributes

Companion
object
Graph
Supertypes
trait PythonModule
trait TaskModule
trait PipModule
trait Module
trait ModuleApi
trait Wrapper
class BaseClass
trait Cacher
trait Cacher
class Object
trait Matchable
class Any
Show all

Members list

Type members

Inherited classlikes

trait PythonTests extends PythonModule

Attributes

Inherited from:
PythonModule
Supertypes
trait PythonModule
trait TaskModule
trait PipModule
trait Module
trait ModuleApi
trait Wrapper
class BaseClass
trait Cacher
trait Cacher
class Object
trait Matchable
class Any
Show all
@Scaladoc(value = "/**\n * Miscellaneous machinery around traversing & querying the build hierarchy,\n * that should not be needed by normal users of Mill\n */")
object moduleInternal extends Internal

Miscellaneous machinery around traversing & querying the build hierarchy, that should not be needed by normal users of Mill

Miscellaneous machinery around traversing & querying the build hierarchy, that should not be needed by normal users of Mill

Attributes

Inherited from:
Module
Supertypes
class Internal
class Object
trait Matchable
class Any

Value members

Abstract methods

@Scaladoc(value = "/**\n * Metadata about your project, required to build and publish.\n *\n * This is roughly equivalent to what you\'d find in the general section of a `pyproject.toml` file\n * https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#about-your-project.\n */")
def publishMeta: Target[PublishMeta]

Metadata about your project, required to build and publish.

Metadata about your project, required to build and publish.

This is roughly equivalent to what you'd find in the general section of a pyproject.toml file https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#about-your-project.

Attributes

@Scaladoc(value = "/**\n * The artifact version that this module would be published as.\n */")
def publishVersion: Target[String]

The artifact version that this module would be published as.

The artifact version that this module would be published as.

Attributes

Concrete methods

@Scaladoc(value = "/**\n * Files to be included in the directory used during the packaging process, apart from\n * [[pyproject]].\n *\n * The format is ` -> `. Where ` ` is relative to\n * some build directory, where you\'ll also find `src` and `pyproject.toml`.\n *\n * @see [[pyproject]]\n */")
def buildFiles: Target[Map[String, PathRef]]

Files to be included in the directory used during the packaging process, apart from pyproject.

Files to be included in the directory used during the packaging process, apart from pyproject.

The format is <destination path> -> <source path>. Where <destination path> is relative to some build directory, where you'll also find src and pyproject.toml.

Attributes

See also
@Scaladoc(value = "/** Run `twine check` to catch some common packaging errors. */")
def checkPublish(): Command[Unit]

Run twine check to catch some common packaging errors.

Run twine check to catch some common packaging errors.

Attributes

override def moduleDeps: Seq[PublishModule]

The direct dependencies of this module. This is meant to be overridden to add dependencies.

The direct dependencies of this module. This is meant to be overridden to add dependencies.

Attributes

Definition Classes
@Scaladoc(value = "/**\n * Publish the [[sdist]] and [[wheel]] to the package repository (index)\n * defined in this module.\n *\n * You can configure this command by setting any environment variables\n * understood by `twine`, prefixed with `MILL_`. For example, to change the\n * repository URL:\n *\n * ```\n * MILL_TWINE_REPOSITORY_URL=https://test.pypi.org/legacy/\n * ```\n *\n * @see [[publishRepositoryUrl]]\n */")
def publish(): Command[Unit]

Publish the sdist and wheel to the package repository (index) defined in this module.

Publish the sdist and wheel to the package repository (index) defined in this module.

You can configure this command by setting any environment variables understood by twine, prefixed with MILL_. For example, to change the repository URL:

MILL_TWINE_REPOSITORY_URL=https://test.pypi.org/legacy/

Attributes

See also
@Scaladoc(value = "/** All artifacts that should be published. */")
def publishArtifacts: Target[Seq[PathRef]]

All artifacts that should be published.

All artifacts that should be published.

Attributes

@Scaladoc(value = "/**\n * The readme file to include in the published distribution.\n */")
def publishReadme: Target[PathRef]

The readme file to include in the published distribution.

The readme file to include in the published distribution.

Attributes

@Scaladoc(value = "/** The repository (index) URL to publish packages to. */")
def publishRepositoryUrl: Target[String]

The repository (index) URL to publish packages to.

The repository (index) URL to publish packages to.

Attributes

@Scaladoc(value = "/**\n * The content of the PEP-518-compliant `pyproject.toml` file, which describes how to package this\n * module into a distribution (sdist and wheel).\n *\n * By default, Mill will generate this file for you from the information it knows (e.g.\n * dependencies declared in [[pythonDeps]] and metadata from [[publishMeta]]). It will use\n * `setuptools` as the build backend, and `build` as the frontend.\n *\n * You can however override this task to read your own `pyproject.toml` file, if you need to. In\n * this case, please note the following:\n *\n * - Mill will create a source distribution first, and then use that to build a binary\n * distribution (aka wheel). Going through this intermediary step, rather than building a wheel\n * directly, ensures that end users can rebuild wheels on their systems, for example if a\n * platform-dependent wheel is not available pre-made.\n *\n * - Hence, the source distribution will need to be \"self contained\". In particular this means\n * that you can\'t reference files by absolute path within it.\n *\n * - Mill creates a \"staging\" directory in the [[sdist]] task, which will be used to bundle\n * everything up into an sdist (via the `build` python command, although this is an\n * implementation detail). You can include additional files in this directory via the\n * [[buildFiles]] task.\n */")
def pyproject: Target[String]

The content of the PEP-518-compliant pyproject.toml file, which describes how to package this module into a distribution (sdist and wheel).

The content of the PEP-518-compliant pyproject.toml file, which describes how to package this module into a distribution (sdist and wheel).

By default, Mill will generate this file for you from the information it knows (e.g. dependencies declared in pythonDeps and metadata from publishMeta). It will use setuptools as the build backend, and build as the frontend.

You can however override this task to read your own pyproject.toml file, if you need to. In this case, please note the following:

  • Mill will create a source distribution first, and then use that to build a binary distribution (aka wheel). Going through this intermediary step, rather than building a wheel directly, ensures that end users can rebuild wheels on their systems, for example if a platform-dependent wheel is not available pre-made.

  • Hence, the source distribution will need to be "self contained". In particular this means that you can't reference files by absolute path within it.

  • Mill creates a "staging" directory in the sdist task, which will be used to bundle everything up into an sdist (via the build python command, although this is an implementation detail). You can include additional files in this directory via the buildFiles task.

Attributes

override def pythonToolDeps: Target[Seq[String]]

Any python dependencies for development tools you want to add to this module.

Any python dependencies for development tools you want to add to this module.

These dependencies are similar to pythonDeps, but will not be required to install this module, only to work on it. For example, type checkers, linters, and bundlers should be declared here.

Attributes

See also
Definition Classes
@Scaladoc(value = "/**\n * Bundle everything up into a source distribution (sdist).\n *\n * @see [[pyproject]]\n */")
def sdist: Target[PathRef]

Bundle everything up into a source distribution (sdist).

Bundle everything up into a source distribution (sdist).

Attributes

See also
@Scaladoc(value = "/**\n * Build a binary distribution of this module.\n *\n * @see [[pyproject]]\n */")
def wheel: Target[PathRef]

Build a binary distribution of this module.

Build a binary distribution of this module.

Attributes

See also

Inherited methods

@Scaladoc(value = "/** Bundles the project into a single PEX executable(bundle.pex). */")
def bundle: Target[PathRef]

Bundles the project into a single PEX executable(bundle.pex).

Bundles the project into a single PEX executable(bundle.pex).

Attributes

Inherited from:
PythonModule
@Scaladoc(value = "/**\n * Command-line options to pass as bundle configuration defined by the user.\n */")
def bundleOptions: Target[Seq[String]]

Command-line options to pass as bundle configuration defined by the user.

Command-line options to pass as bundle configuration defined by the user.

Attributes

Inherited from:
PythonModule
@Scaladoc(value = "/**\n * Opens up a Python console with your module and all dependencies present,\n * for you to test and operate your code interactively.\n */")
def console(): Command[Unit]

Opens up a Python console with your module and all dependencies present, for you to test and operate your code interactively.

Opens up a Python console with your module and all dependencies present, for you to test and operate your code interactively.

Attributes

Inherited from:
PythonModule
override def defaultCommandName(): String

The name of the default command, which will be automatically executed if the module name is provided at the Mill command line.

The name of the default command, which will be automatically executed if the module name is provided at the Mill command line.

Attributes

Definition Classes
PythonModule -> TaskModule
Inherited from:
PythonModule
@Scaladoc(value = "/**\n * Any environment variables you want to pass to the forked Env\n */")
def forkEnv: Target[Map[String, String]]

Any environment variables you want to pass to the forked Env

Any environment variables you want to pass to the forked Env

Attributes

Inherited from:
PythonModule
@Scaladoc(value = "/**\n * Folders containing source files that are generated rather than\n * handwritten; these files can be generated in this target itself,\n * or can refer to files generated from other targets\n */")
def generatedSources: Target[Seq[PathRef]]

Folders containing source files that are generated rather than handwritten; these files can be generated in this target itself, or can refer to files generated from other targets

Folders containing source files that are generated rather than handwritten; these files can be generated in this target itself, or can refer to files generated from other targets

Attributes

Inherited from:
PythonModule
@Scaladoc(value = "/**\n * Python interpreter found on the host system. This will be used to create a\n * new virtual environment, which will be used by all tasks in this module.\n *\n * If you\'d like to use a specific python version, override this task to\n * point to a specific python executable.\n *\n * Examples:\n *\n * ```\n * // use whatever python version is installed on the host system (default)\n * def hostPythonCommand = T{ \"python3\" }\n *\n * // use a specific minor release\n * def hostPythonCommand = T{ \"python3.12\" }\n *\n * // use a specific executable file\n * def hostPythonCommand = T{ \"/usr/bin/python3\" }\n * ```\n */")
def hostPythonCommand: Target[String]

Python interpreter found on the host system. This will be used to create a new virtual environment, which will be used by all tasks in this module.

Python interpreter found on the host system. This will be used to create a new virtual environment, which will be used by all tasks in this module.

If you'd like to use a specific python version, override this task to point to a specific python executable.

Examples:

// use whatever python version is installed on the host system (default)
def hostPythonCommand = T{ "python3" }

// use a specific minor release
def hostPythonCommand = T{ "python3.12" }

// use a specific executable file
def hostPythonCommand = T{ "/usr/bin/python3" }

Attributes

Inherited from:
PythonModule
@Scaladoc(value = "/**\n * Base URLs of the Python Package Indexes to search for packages. Defaults to\n * https://pypi.org/simple.\n *\n * These should point to repositories compliant with PEP 503 (the simple\n * repository API) or local directories laid out in the same format.\n */")
def indexes: Target[Seq[String]]

Base URLs of the Python Package Indexes to search for packages. Defaults to https://pypi.org/simple.

Base URLs of the Python Package Indexes to search for packages. Defaults to https://pypi.org/simple.

These should point to repositories compliant with PEP 503 (the simple repository API) or local directories laid out in the same format.

Attributes

Inherited from:
PipModule
@Scaladoc(value = "/**\n * The directories used to construct the PYTHONPATH for this module, used for\n * execution, excluding upstream modules.\n *\n * This includes source directories, resources and other unmanaged\n * directories.\n */")
def localPythonPath: Target[Seq[PathRef]]

The directories used to construct the PYTHONPATH for this module, used for execution, excluding upstream modules.

The directories used to construct the PYTHONPATH for this module, used for execution, excluding upstream modules.

This includes source directories, resources and other unmanaged directories.

Attributes

Inherited from:
PythonModule
@Scaladoc(value = "/**\n * The python script to run. This file may not exist if this module is only a library.\n */")
def mainScript: Target[PathRef]

The python script to run. This file may not exist if this module is only a library.

The python script to run. This file may not exist if this module is only a library.

Attributes

Inherited from:
PythonModule
def moduleCtx: ModuleCtx

Attributes

Inherited from:
BaseClass
def moduleDir: Path

Attributes

Inherited from:
Module
def moduleDirJava: Path

Attributes

Inherited from:
Module
def moduleDirectChildren: Seq[Module]

Attributes

Inherited from:
Module
def moduleSegments: Segments

Attributes

Inherited from:
Module
@Scaladoc(value = "/**\n * Arguments to be passed to `pip install` when preparing the environment.\n *\n * This task is called by `pythonExe`. It serves as an escape hatch, should\n * you need to override it for some reason. Normally, you should not need to\n * edit this task directly. Instead, prefer editing the other tasks of this\n * module which influence how the arguments are created.\n *\n * @see [[indexes]]\n * @see [[pythonDeps]]\n * @see [[unmanagedWheels]]\n * @see [[pythonToolDeps]]\n */")

Arguments to be passed to pip install when preparing the environment.

Arguments to be passed to pip install when preparing the environment.

This task is called by pythonExe. It serves as an escape hatch, should you need to override it for some reason. Normally, you should not need to edit this task directly. Instead, prefer editing the other tasks of this module which influence how the arguments are created.

Attributes

See also
Inherited from:
PipModule
@Scaladoc(value = "/**\n * Any python dependencies you want to add to this module. The format of each\n * dependency should be the same as used with `pip install`, or as you would\n * find in a `requirements.txt` file. E.g. `def pythonDeps =\n * Seq(\"numpy==2.1.3\")`.\n *\n * Dependencies declared here will also be required when installing this module.\n */")
def pythonDeps: Target[Seq[String]]

Any python dependencies you want to add to this module. The format of each dependency should be the same as used with pip install, or as you would find in a requirements.txt file. E.g. def pythonDeps = Seq("numpy==2.1.3").

Any python dependencies you want to add to this module. The format of each dependency should be the same as used with pip install, or as you would find in a requirements.txt file. E.g. def pythonDeps = Seq("numpy==2.1.3").

Dependencies declared here will also be required when installing this module.

Attributes

Inherited from:
PipModule
@Scaladoc(value = "/**\n * An executable python interpreter. This interpreter is set up to run in a\n * virtual environment which has been initialized to contain all libraries and\n * tools needed by this module and its dependencies.\n */")
def pythonExe: Target[PathRef]

An executable python interpreter. This interpreter is set up to run in a virtual environment which has been initialized to contain all libraries and tools needed by this module and its dependencies.

An executable python interpreter. This interpreter is set up to run in a virtual environment which has been initialized to contain all libraries and tools needed by this module and its dependencies.

Attributes

Inherited from:
PythonModule
@Scaladoc(value = "/**\n * Command-line options to pass to the Python Interpreter defined by the user.\n */")
def pythonOptions: Target[Seq[String]]

Command-line options to pass to the Python Interpreter defined by the user.

Command-line options to pass to the Python Interpreter defined by the user.

Attributes

Inherited from:
PythonModule
@Scaladoc(value = "/**\n * Python dependencies declared in `requirements.txt` files. This is similar\n * to `pythonDeps`, but reads dependencies from a text file, allowing you to\n * reuse requirements files from existing projects.\n *\n * @see [[pythonDeps]]\n */")
def pythonRequirementFiles: Target[Seq[PathRef]]

Python dependencies declared in requirements.txt files. This is similar to pythonDeps, but reads dependencies from a text file, allowing you to reuse requirements files from existing projects.

Python dependencies declared in requirements.txt files. This is similar to pythonDeps, but reads dependencies from a text file, allowing you to reuse requirements files from existing projects.

Attributes

See also
Inherited from:
PipModule
@Scaladoc(value = "/**\n * The folders where the resource files for this module live.\n */")
def resources: Target[Seq[PathRef]]

The folders where the resource files for this module live.

The folders where the resource files for this module live.

Attributes

Inherited from:
PythonModule
@Scaladoc(value = "/**\n * Run the main python script of this module.\n *\n * @see [[mainScript]]\n */")
def run(args: Args): Command[Unit]

Run the main python script of this module.

Run the main python script of this module.

Attributes

See also
Inherited from:
PythonModule
@Scaladoc(value = "/**\n * Run the main python script of this module.\n *\n * @see [[mainScript]]\n */")
def runBackground(args: Args): Command[Unit]

Run the main python script of this module.

Run the main python script of this module.

Attributes

See also
Inherited from:
PythonModule
def runner: Task[Runner]

Attributes

Inherited from:
PythonModule
@Scaladoc(value = "/**\n * The folders where the source files for this mill module live.\n *\n * Python modules will be defined relative to these directories.\n */")
def sources: Target[Seq[PathRef]]

The folders where the source files for this mill module live.

The folders where the source files for this mill module live.

Python modules will be defined relative to these directories.

Attributes

Inherited from:
PythonModule
override def toString: String

Returns a string representation of the object.

Returns a string representation of the object.

The default representation is platform dependent.

Attributes

Returns

a string representation of the object.

Definition Classes
Module -> Any
Inherited from:
Module
@Scaladoc(value = "/**\n * Python dependencies of this module, and all other modules that this module\n * depends on, recursively.\n */")
def transitivePythonDeps: Target[Seq[String]]

Python dependencies of this module, and all other modules that this module depends on, recursively.

Python dependencies of this module, and all other modules that this module depends on, recursively.

Attributes

Inherited from:
PipModule
@Scaladoc(value = "/**\n * The transitive version of [[localPythonPath]]: this includes the\n * directories of all upstream modules as well.\n */")
def transitivePythonPath: Target[Seq[PathRef]]

The transitive version of localPythonPath: this includes the directories of all upstream modules as well.

The transitive version of localPythonPath: this includes the directories of all upstream modules as well.

Attributes

Inherited from:
PythonModule
@Scaladoc(value = "/**\n * requirements.txt of this module, and all other modules that this module\n * depends on, recursively.\n *\n * @see [[pythonRequirementFiles]]\n */")
def transitivePythonRequirementFiles: Target[Seq[PathRef]]

requirements.txt of this module, and all other modules that this module depends on, recursively.

requirements.txt of this module, and all other modules that this module depends on, recursively.

Attributes

See also
Inherited from:
PipModule
@Scaladoc(value = "/**\n * Any python wheels to install directly, for this module and all upstream modules, recursively.\n *\n * @see [[unmanagedWheels]]\n */")
def transitiveUnmanagedWheels: Target[Seq[PathRef]]

Any python wheels to install directly, for this module and all upstream modules, recursively.

Any python wheels to install directly, for this module and all upstream modules, recursively.

Attributes

See also
Inherited from:
PipModule
@Scaladoc(value = "/**\n * Run a typechecker on this module.\n */")
def typeCheck: Target[Unit]

Run a typechecker on this module.

Run a typechecker on this module.

Attributes

Inherited from:
PythonModule
@Scaladoc(value = "/**\n * Additional directories to include in the PYTHONPATH directly. These paths\n * are \"unmanaged\": they\'ll be included as they are on disk.\n */")
def unmanagedPythonPath: Target[Seq[PathRef]]

Additional directories to include in the PYTHONPATH directly. These paths are "unmanaged": they'll be included as they are on disk.

Additional directories to include in the PYTHONPATH directly. These paths are "unmanaged": they'll be included as they are on disk.

Attributes

Inherited from:
PythonModule
@Scaladoc(value = "/**\n * Any python wheels to install directly.\n *\n * Note: you can also include wheels by using [direct\n * references](https://peps.python.org/pep-0440/#direct-references) in [[pythonRequirementFiles]], for\n * example `\"pip @ file:///localbuilds/pip-1.3.1-py33-none-any.whl\"`. However, if you do that then\n * changes to these files won\'t get picked up and you are on the hook for cache invalidation.\n * Therefore, if you have any wheels that you wish to install directly, it is recommended to add\n * them here.\n */")
def unmanagedWheels: Target[Seq[PathRef]]

Any python wheels to install directly.

Any python wheels to install directly.

Note: you can also include wheels by using direct references in pythonRequirementFiles, for example "pip @ file:///localbuilds/pip-1.3.1-py33-none-any.whl". However, if you do that then changes to these files won't get picked up and you are on the hook for cache invalidation. Therefore, if you have any wheels that you wish to install directly, it is recommended to add them here.

Attributes

Inherited from:
PipModule

Implicits

Inherited implicits

implicit def moduleNestedCtx: Nested

Attributes

Inherited from:
Module