5
5
from typing import Any , Dict , List , MutableMapping , Optional , Tuple
6
6
7
7
from click import UsageError
8
+ from versioning .models import VersionComponentConfig
8
9
9
- from bumpversion .config .models import VersionPartConfig
10
10
from bumpversion .exceptions import FormattingError , MissingValueError
11
11
from bumpversion .ui import get_indented_logger
12
12
from bumpversion .utils import labels_for_format
13
- from bumpversion .versioning .models import Version , VersionPart
13
+ from bumpversion .versioning .models import Version , VersionComponent , VersionSpec
14
14
from bumpversion .versioning .serialization import parse_version
15
15
16
16
logger = get_indented_logger (__name__ )
@@ -27,7 +27,7 @@ def __init__(
27
27
serialize : Tuple [str ],
28
28
search : str ,
29
29
replace : str ,
30
- part_configs : Optional [Dict [str , VersionPartConfig ]] = None ,
30
+ part_configs : Optional [Dict [str , VersionComponentConfig ]] = None ,
31
31
):
32
32
try :
33
33
self .parse_regex = re .compile (parse , re .VERBOSE )
@@ -36,6 +36,7 @@ def __init__(
36
36
37
37
self .serialize_formats = serialize
38
38
self .part_configs = part_configs or {}
39
+ self .version_spec = VersionSpec (self .part_configs )
39
40
# TODO: I think these two should be removed from the config object
40
41
self .search = search
41
42
self .replace = replace
@@ -80,12 +81,16 @@ def parse(self, version_string: Optional[str] = None) -> Optional[Version]:
80
81
if not parsed :
81
82
return None
82
83
83
- _parsed = {
84
- key : VersionPart (self .part_configs [key ], value )
85
- for key , value in parsed .items ()
86
- if key in self .part_configs
87
- }
88
- return Version (_parsed , version_string )
84
+ version = self .version_spec .create_version (parsed )
85
+ version .original = version_string
86
+ return version
87
+
88
+ # _parsed = {
89
+ # key: VersionComponent(self.part_configs[key], value)
90
+ # for key, value in parsed.items()
91
+ # if key in self.part_configs
92
+ # }
93
+ # return Version(_parsed, version_string)
89
94
90
95
def _serialize (
91
96
self , version : Version , serialize_format : str , context : MutableMapping , raise_if_incomplete : bool = False
@@ -128,7 +133,7 @@ def _serialize(
128
133
for i , k in enumerate (keys ):
129
134
v = values [k ]
130
135
131
- if not isinstance (v , VersionPart ):
136
+ if not isinstance (v , VersionComponent ):
132
137
# values coming from environment variables don't need
133
138
# representation
134
139
continue
0 commit comments