You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
36 lines
973 B
Python
36 lines
973 B
Python
"""EditorConfig version tools
|
|
|
|
Provides ``join_version`` and ``split_version`` classes for converting
|
|
__version__ strings to VERSION tuples and vice versa.
|
|
|
|
"""
|
|
|
|
import re
|
|
|
|
|
|
__all__ = ['join_version', 'split_version']
|
|
|
|
|
|
_version_re = re.compile(r'^(\d+)\.(\d+)\.(\d+)(\..*)?$', re.VERBOSE)
|
|
|
|
|
|
def join_version(version_tuple):
|
|
"""Return a string representation of version from given VERSION tuple"""
|
|
version = "%s.%s.%s" % version_tuple[:3]
|
|
if version_tuple[3] != "final":
|
|
version += "-%s" % version_tuple[3]
|
|
return version
|
|
|
|
|
|
def split_version(version):
|
|
"""Return VERSION tuple for given string representation of version"""
|
|
match = _version_re.search(version)
|
|
if not match:
|
|
return None
|
|
else:
|
|
split_version = list(match.groups())
|
|
if split_version[3] is None:
|
|
split_version[3] = "final"
|
|
split_version = list(map(int, split_version[:3])) + split_version[3:]
|
|
return tuple(split_version)
|