Coverage for src/hatch_ci/version_hook.py: 0%

# Coverage for src/hatch_ci/version_hook.py : 0%

## 40 statements 0 run 40 missing 0 excluded

Hot-keys on this page

r m x p toggle line displays

j k next/prev highlighted chunk

0 (zero) top of page

1 (one) first highlighted chunk

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | from __future__ import annotations from typing import Any from hatchling.version.source.plugin.interface import VersionSourceInterface from .common import PLUGIN_NAME class ValidationError(Exception): pass class _NO: pass def extract( config: dict[str, str], var: str, typ: Any = _NO, fallback: Any = _NO ) -> Any: value = config.get(var, fallback) if value is _NO: raise ValidationError(f"cannot find variable '{var}' for plugin 'ci'") try: new_value = typ(value) if typ is not _NO else value except Exception as exc: raise ValidationError(f"cannot convert to {typ=} the {value=}") from exc return new_value def get_fixers(txt: str) -> dict[str, str]: if not txt: return {} if not isinstance(txt, list): raise ValidationError("fixers must be list of dicts") if not all(isinstance(t, list) for t in txt): raise ValidationError("fixers elements must be lists") if not all(len(t) == 2 for t in txt): raise ValidationError("all fixers list elements must be of length 2") return dict(txt) class CIVersionSource(VersionSourceInterface): PLUGIN_NAME = PLUGIN_NAME def get_version_data(self): from os import getenv from pathlib import Path from hatch_ci import tools paths = extract(self.config, "paths", typ=tools.list_of_paths, fallback=[]) fixers = extract(self.config, "fixers", typ=get_fixers, fallback={}) version_file = Path(self.root) / extract(self.config, "version-file") if not version_file.exists(): raise ValidationError( f"no 'version-file' key for plugin {self.PLUGIN_NAME}" ) gdata = tools.process( version_file, getenv("GITHUB_DUMP"), paths=paths, fixers=fixers ) return {"version": gdata["version"]}