Version scheme plugins¶
Known third-party¶
- hatch-semver - uses semantic versioning
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 backend/src/hatchling/version/scheme/plugin/interface.py
class VersionSchemeInterface(ABC): # no cov
"""
Example usage:
```python tab="plugin.py"
from hatchling.version.scheme.plugin.interface import VersionSchemeInterface
class SpecialVersionScheme(VersionSchemeInterface):
PLUGIN_NAME = 'special'
...
```
```python tab="hooks.py"
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:
"""
```toml config-example
[tool.hatch.version]
```
"""
return self.__config
@cached_property
def validate_bump(self) -> bool:
"""
This is the value of the `validate-bump` option, with the `HATCH_VERSION_VALIDATE_BUMP`
environment variable taking precedence. Validation is enabled by default.
```toml config-example
[tool.hatch.version]
validate-bump = true
```
"""
from hatchling.utils.constants import VersionEnvVars
if VersionEnvVars.VALIDATE_BUMP in os.environ:
return os.environ[VersionEnvVars.VALIDATE_BUMP] not in {'false', '0'}
validate_bump = self.config.get('validate-bump', True)
if not isinstance(validate_bump, bool):
message = 'option `validate-bump` must be a boolean'
raise TypeError(message)
return validate_bump
@abstractmethod
def update(self, desired_version: str, original_version: str, version_data: dict) -> str:
"""
This should return a normalized form of the desired version. If the
[validate_bump](reference.md#hatchling.version.scheme.plugin.interface.VersionSchemeInterface.validate_bump)
property is `True`, this method should also verify that the version is higher than the original version.
"""
PLUGIN_NAME = ''
class-attribute
instance-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]
validate_bump: bool
cached
property
¶
This is the value of the validate-bump
option, with the HATCH_VERSION_VALIDATE_BUMP
environment variable taking precedence. Validation is enabled by default.
[tool.hatch.version]
validate-bump = true
[version]
validate-bump = true
update(desired_version: str, original_version: str, version_data: dict) -> str
abstractmethod
¶
This should return a normalized form of the desired version. If the validate_bump property is True
, this method should also verify that the version is higher than the original version.
Source code in backend/src/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. If the
[validate_bump](reference.md#hatchling.version.scheme.plugin.interface.VersionSchemeInterface.validate_bump)
property is `True`, this method should also verify that the version is higher than the original version.
"""