6
6
from functools import wraps
7
7
import re
8
8
import sys
9
+ import warnings
9
10
10
11
11
12
__version__ = "2.9.1"
@@ -27,6 +28,37 @@ def cmp(a, b):
27
28
return (a > b ) - (a < b )
28
29
29
30
31
+ def deprecated (replace = None ):
32
+ """
33
+ Decorates a function to output a deprecation warning.
34
+
35
+ This function will be removed once major version 3 of semver is
36
+ released.
37
+ """
38
+ # we can't use the 'nonlocal' keyword in Python2, so we need
39
+ # to circumvent that with a dictionary:
40
+ r = {"r" : replace }
41
+
42
+ def decorator (func ):
43
+ @wraps (func )
44
+ def wrapper (* args , ** kwargs ):
45
+ # nonlocal replace
46
+ replace = r ["r" ] if r ["r" ] is not None else func .__name__
47
+ msg = (
48
+ "Function 'semver.{f}' is deprecated. "
49
+ "Use the respective 'semver.VersionInfo.{r}' instead."
50
+ )
51
+ warnings .warn (
52
+ msg .format (f = func .__name__ , r = replace ), category = DeprecationWarning
53
+ )
54
+ return func (* args , ** kwargs )
55
+
56
+ return wrapper
57
+
58
+ return decorator
59
+
60
+
61
+ @deprecated ()
30
62
def parse (version ):
31
63
"""
32
64
Parse version to major, minor, patch, pre-release, build parts.
@@ -186,7 +218,7 @@ def bump_major(self):
186
218
VersionInfo(major=4, minor=0, patch=0, prerelease=None, build=None)
187
219
"""
188
220
cls = type (self )
189
- return cls (self ._major + 1 )
221
+ return cls (self ._major + 1 )
190
222
191
223
def bump_minor (self ):
192
224
"""
@@ -201,7 +233,7 @@ def bump_minor(self):
201
233
VersionInfo(major=3, minor=5, patch=0, prerelease=None, build=None)
202
234
"""
203
235
cls = type (self )
204
- return cls (self ._major , self ._minor + 1 )
236
+ return cls (self ._major , self ._minor + 1 )
205
237
206
238
def bump_patch (self ):
207
239
"""
@@ -216,7 +248,7 @@ def bump_patch(self):
216
248
VersionInfo(major=3, minor=4, patch=6, prerelease=None, build=None)
217
249
"""
218
250
cls = type (self )
219
- return cls (self ._major , self ._minor , self ._patch + 1 )
251
+ return cls (self ._major , self ._minor , self ._patch + 1 )
220
252
221
253
def bump_prerelease (self , token = "rc" ):
222
254
"""
@@ -233,9 +265,7 @@ def bump_prerelease(self, token="rc"):
233
265
build=None)
234
266
"""
235
267
cls = type (self )
236
- prerelease = _increment_string (
237
- self ._prerelease or (token or "rc" ) + ".0"
238
- )
268
+ prerelease = _increment_string (self ._prerelease or (token or "rc" ) + ".0" )
239
269
return cls (self ._major , self ._minor , self ._patch , prerelease )
240
270
241
271
def bump_build (self , token = "build" ):
@@ -253,9 +283,7 @@ def bump_build(self, token="build"):
253
283
build='build.10')
254
284
"""
255
285
cls = type (self )
256
- build = _increment_string (
257
- self ._build or (token or "build" ) + ".0"
258
- )
286
+ build = _increment_string (self ._build or (token or "build" ) + ".0" )
259
287
return cls (self ._major , self ._minor , self ._patch , self ._prerelease , build )
260
288
261
289
@comparator
@@ -389,6 +417,7 @@ def _to_dict(obj):
389
417
return obj
390
418
391
419
420
+ @deprecated ("parse" )
392
421
def parse_version_info (version ):
393
422
"""
394
423
Parse version string to a VersionInfo instance.
@@ -569,6 +598,7 @@ def min_ver(ver1, ver2):
569
598
return ver2
570
599
571
600
601
+ @deprecated ()
572
602
def format_version (major , minor , patch , prerelease = None , build = None ):
573
603
"""
574
604
Format a version according to the Semantic Versioning specification.
@@ -601,6 +631,7 @@ def _increment_string(string):
601
631
return string
602
632
603
633
634
+ @deprecated ()
604
635
def bump_major (version ):
605
636
"""
606
637
Raise the major part of the version.
@@ -615,6 +646,7 @@ def bump_major(version):
615
646
return str (VersionInfo .parse (version ).bump_major ())
616
647
617
648
649
+ @deprecated ()
618
650
def bump_minor (version ):
619
651
"""
620
652
Raise the minor part of the version.
@@ -629,6 +661,7 @@ def bump_minor(version):
629
661
return str (VersionInfo .parse (version ).bump_minor ())
630
662
631
663
664
+ @deprecated ()
632
665
def bump_patch (version ):
633
666
"""
634
667
Raise the patch part of the version.
@@ -643,6 +676,7 @@ def bump_patch(version):
643
676
return str (VersionInfo .parse (version ).bump_patch ())
644
677
645
678
679
+ @deprecated ()
646
680
def bump_prerelease (version , token = "rc" ):
647
681
"""
648
682
Raise the prerelease part of the version.
@@ -658,6 +692,7 @@ def bump_prerelease(version, token="rc"):
658
692
return str (VersionInfo .parse (version ).bump_prerelease (token ))
659
693
660
694
695
+ @deprecated ()
661
696
def bump_build (version , token = "build" ):
662
697
"""
663
698
Raise the build part of the version.
@@ -673,6 +708,7 @@ def bump_build(version, token="build"):
673
708
return str (VersionInfo .parse (version ).bump_build (token ))
674
709
675
710
711
+ @deprecated ()
676
712
def finalize_version (version ):
677
713
"""
678
714
Remove any prerelease and build metadata from the version.
@@ -688,6 +724,7 @@ def finalize_version(version):
688
724
return VersionInfo .format_version (verinfo .major , verinfo .minor , verinfo .patch )
689
725
690
726
727
+ @deprecated ()
691
728
def replace (version , ** parts ):
692
729
"""
693
730
Replace one or more parts of a version and return the new string.
0 commit comments