11
11
from distutils import log
12
12
from pkg_resources import parse_version
13
13
14
+ SEMVER_MINOR = 2
15
+ SEMVER_PATCH = 3
16
+ SEMVER_LEN = 3
17
+
14
18
15
19
def _pad (iterable , size , padding = None ):
16
20
padded = chain (iterable , repeat (padding ))
@@ -106,6 +110,10 @@ def format_choice(self, clean_format, dirty_format, **kw):
106
110
return self .format_with (
107
111
dirty_format if self .dirty else clean_format , ** kw )
108
112
113
+ def format_next_version (self , guess_next , fmt = "{guessed}.dev{distance}" , ** kw ):
114
+ guessed = guess_next (self .tag , ** kw )
115
+ return self .format_with (fmt , guessed = guessed )
116
+
109
117
110
118
def _parse_tag (tag , preformatted ):
111
119
if preformatted :
@@ -122,11 +130,9 @@ def meta(tag, distance=None, dirty=False, node=None, preformatted=False, **kw):
122
130
return ScmVersion (tag , distance , node , dirty , preformatted , ** kw )
123
131
124
132
125
- def guess_next_version (tag_version , distance ):
133
+ def guess_next_version (tag_version ):
126
134
version = _strip_local (str (tag_version ))
127
- bumped = _bump_dev (version ) or _bump_regex (version )
128
- suffix = '.dev%s' % distance
129
- return bumped + suffix
135
+ return _bump_dev (version ) or _bump_regex (version )
130
136
131
137
132
138
def _strip_local (version_string ):
@@ -152,28 +158,29 @@ def guess_next_dev_version(version):
152
158
if version .exact :
153
159
return version .format_with ("{tag}" )
154
160
else :
155
- return guess_next_version ( version .tag , version . distance )
161
+ return version .format_next_version ( guess_next_version )
156
162
157
163
158
- def guess_next_simple_semver (version , distance , retain , increment = True ):
164
+ def guess_next_simple_semver (version , retain , increment = True ):
159
165
parts = map (int , str (version ).split ('.' ))
160
- parts = _pad (parts , size = retain , padding = 0 )
166
+ parts = _pad (parts , retain , 0 )
161
167
if increment :
162
168
parts [- 1 ] += 1
163
- parts = _pad (parts , 3 , 0 )
164
- if distance :
165
- parts .append ("dev" + str (distance ))
169
+ parts = _pad (parts , SEMVER_LEN , 0 )
166
170
return '.' .join (map (str , parts ))
167
171
168
172
169
173
def simplified_semver_version (version ):
170
174
if version .exact :
171
- return guess_next_simple_semver (version .tag , 0 , 3 , increment = False )
175
+ return guess_next_simple_semver (
176
+ version .tag , retain = SEMVER_LEN , increment = False )
172
177
else :
173
178
if version .branch is not None and 'feature' in version .branch :
174
- return guess_next_simple_semver (version .tag , version .distance , retain = 2 )
179
+ return version .format_next_version (
180
+ guess_next_simple_semver , retain = SEMVER_MINOR )
175
181
else :
176
- return guess_next_simple_semver (version .tag , version .distance , retain = 3 )
182
+ return version .format_next_version (
183
+ guess_next_simple_semver , retain = SEMVER_PATCH )
177
184
178
185
179
186
def _format_local_with_time (version , time_format ):
0 commit comments