Coverage for /Users/OORDCOR/Documents/code/bump-my-version/bumpversion/config/utils.py: 0%
25 statements
« prev ^ index » next coverage.py v7.3.2, created at 2023-12-10 08:09 -0600
« prev ^ index » next coverage.py v7.3.2, created at 2023-12-10 08:09 -0600
1"""Helper functions for the config module."""
2from __future__ import annotations
4import glob
5import itertools
6from typing import Dict, List
8from bumpversion.config.models import FileChange, VersionPartConfig
9from bumpversion.utils import labels_for_format
12def get_all_file_configs(config_dict: dict) -> List[FileChange]:
13 """Make sure all version parts are included."""
14 defaults = {
15 "parse": config_dict["parse"],
16 "serialize": config_dict["serialize"],
17 "search": config_dict["search"],
18 "replace": config_dict["replace"],
19 "ignore_missing_version": config_dict["ignore_missing_version"],
20 "regex": config_dict["regex"],
21 }
22 files = [{k: v for k, v in filecfg.items() if v is not None} for filecfg in config_dict["files"]]
23 for f in files:
24 f.update({k: v for k, v in defaults.items() if k not in f})
25 return [FileChange(**f) for f in files]
28def get_all_part_configs(config_dict: dict) -> Dict[str, VersionPartConfig]:
29 """Make sure all version parts are included."""
30 serialize = config_dict["serialize"]
31 parts = config_dict["parts"]
32 all_labels = set(itertools.chain.from_iterable([labels_for_format(fmt) for fmt in serialize]))
33 return {
34 label: VersionPartConfig(**parts[label]) if label in parts else VersionPartConfig() # type: ignore[call-arg]
35 for label in all_labels
36 }
39def resolve_glob_files(file_cfg: FileChange) -> List[FileChange]:
40 """
41 Return a list of file configurations that match the glob pattern.
43 Args:
44 file_cfg: The file configuration containing the glob pattern
46 Returns:
47 A list of resolved file configurations according to the pattern.
48 """
49 files = []
50 for filename_glob in glob.glob(file_cfg.glob, recursive=True):
51 new_file_cfg = file_cfg.model_copy()
52 new_file_cfg.filename = filename_glob
53 new_file_cfg.glob = None
54 files.append(new_file_cfg)
55 return files