Environment collector¶
Environment collectors allow for dynamically modifying environments or adding environments beyond those defined in config. Users can override default values provided by each environment.
Built-in¶
Default¶
This adds the default environment with type set to virtual and will always be applied.
Configuration¶
The environment plugin name is default.
[tool.hatch.env.collectors.default]
[env.collectors.default]
  EnvironmentCollectorInterface (ABC)  ¶
 Example usage:
from hatch.env.collectors.plugin.interface import EnvironmentCollectorInterface
class SpecialEnvironmentCollector(EnvironmentCollectorInterface):
    PLUGIN_NAME = 'special'
    ...
from hatchling.plugin import hookimpl
from .plugin import SpecialEnvironmentCollector
@hookimpl
def hatch_register_environment_collector():
    return SpecialEnvironmentCollector
Source code in hatch/env/collectors/plugin/interface.py
 class EnvironmentCollectorInterface(ABC):
    """
    Example usage:
    === ":octicons-file-code-16: plugin.py"
        ```python
        from hatch.env.collectors.plugin.interface import EnvironmentCollectorInterface
        class SpecialEnvironmentCollector(EnvironmentCollectorInterface):
            PLUGIN_NAME = 'special'
            ...
        ```
    === ":octicons-file-code-16: hooks.py"
        ```python
        from hatchling.plugin import hookimpl
        from .plugin import SpecialEnvironmentCollector
        @hookimpl
        def hatch_register_environment_collector():
            return SpecialEnvironmentCollector
        ```
    """
    PLUGIN_NAME = ''
    """The name used for selection."""
    def __init__(self, root, config):
        self.__root = root
        self.__config = config
    @property
    def root(self):
        """
        The root of the project tree as a path-like object.
        """
        return self.__root
    @property
    def config(self) -> dict:
        """
        === ":octicons-file-code-16: pyproject.toml"
            ```toml
            [tool.hatch.env.collectors.<PLUGIN_NAME>]
            ```
        === ":octicons-file-code-16: hatch.toml"
            ```toml
            [env.collectors.<PLUGIN_NAME>]
            ```
        """
        return self.__config
    def get_initial_config(self) -> dict[str, dict]:
        """
        Returns configuration for environments keyed by the environment or matrix name.
        """
        return {}
    def finalize_config(self, config: dict[str, dict]):
        """
        Finalizes configuration for environments keyed by the environment or matrix name. This will override
        any user-defined settings and any collectors that ran before this call.
        This is called before matrices are turned into concrete environments.
        """
    def finalize_environments(self, config: dict[str, dict]):
        """
        Finalizes configuration for environments keyed by the environment name. This will override
        any user-defined settings and any collectors that ran before this call.
        This is called after matrices are turned into concrete environments.
        """
 PLUGIN_NAME ¶
 The name used for selection.
 config: dict  property readonly  ¶
 [tool.hatch.env.collectors.<PLUGIN_NAME>]
[env.collectors.<PLUGIN_NAME>]
 root  property readonly  ¶
 The root of the project tree as a path-like object.
 finalize_config(self, config: dict[str, dict]) ¶
 Finalizes configuration for environments keyed by the environment or matrix name. This will override any user-defined settings and any collectors that ran before this call.
This is called before matrices are turned into concrete environments.
Source code in hatch/env/collectors/plugin/interface.py
 def finalize_config(self, config: dict[str, dict]):
    """
    Finalizes configuration for environments keyed by the environment or matrix name. This will override
    any user-defined settings and any collectors that ran before this call.
    This is called before matrices are turned into concrete environments.
    """
 finalize_environments(self, config: dict[str, dict]) ¶
 Finalizes configuration for environments keyed by the environment name. This will override any user-defined settings and any collectors that ran before this call.
This is called after matrices are turned into concrete environments.
Source code in hatch/env/collectors/plugin/interface.py
 def finalize_environments(self, config: dict[str, dict]):
    """
    Finalizes configuration for environments keyed by the environment name. This will override
    any user-defined settings and any collectors that ran before this call.
    This is called after matrices are turned into concrete environments.
    """
 get_initial_config(self) -> dict[str, dict] ¶
 Returns configuration for environments keyed by the environment or matrix name.
Source code in hatch/env/collectors/plugin/interface.py
 def get_initial_config(self) -> dict[str, dict]:
    """
    Returns configuration for environments keyed by the environment or matrix name.
    """
    return {}