Skip to content

Version scheme plugins


Known third-party

VersionSchemeInterface

Example usage:

from hatchling.version.scheme.plugin.interface import VersionSchemeInterface


class SpecialVersionScheme(VersionSchemeInterface):
    PLUGIN_NAME = 'special'
    ...
from hatchling.plugin import hookimpl

from .plugin import SpecialVersionScheme


@hookimpl
def hatch_register_version_scheme():
    return SpecialVersionScheme
Source code in hatchling/version/scheme/plugin/interface.py
class VersionSchemeInterface(ABC):  # no cov
    """
    Example usage:

    === ":octicons-file-code-16: plugin.py"

        ```python
        from hatchling.version.scheme.plugin.interface import VersionSchemeInterface


        class SpecialVersionScheme(VersionSchemeInterface):
            PLUGIN_NAME = 'special'
            ...
        ```

    === ":octicons-file-code-16: hooks.py"

        ```python
        from hatchling.plugin import hookimpl

        from .plugin import SpecialVersionScheme


        @hookimpl
        def hatch_register_version_scheme():
            return SpecialVersionScheme
        ```
    """

    PLUGIN_NAME = ''
    """The name used for selection."""

    def __init__(self, root: str, config: dict) -> None:
        self.__root = root
        self.__config = config

    @property
    def root(self) -> str:
        """
        The root of the project tree as a string.
        """
        return self.__root

    @property
    def config(self) -> dict:
        """
        === ":octicons-file-code-16: pyproject.toml"

            ```toml
            [tool.hatch.version]
            ```

        === ":octicons-file-code-16: hatch.toml"

            ```toml
            [version]
            ```
        """
        return self.__config

    @abstractmethod
    def update(self, desired_version: str, original_version: str, version_data: dict) -> str:
        """
        This should return a normalized form of the desired version and verify that it
        is higher than the original version.
        """

PLUGIN_NAME = '' class-attribute

The name used for selection.

root: str property

The root of the project tree as a string.

config: dict property

[tool.hatch.version]
[version]

update(desired_version: str, original_version: str, version_data: dict) -> str abstractmethod

This should return a normalized form of the desired version and verify that it is higher than the original version.

Source code in hatchling/version/scheme/plugin/interface.py
@abstractmethod
def update(self, desired_version: str, original_version: str, version_data: dict) -> str:
    """
    This should return a normalized form of the desired version and verify that it
    is higher than the original version.
    """