versiontools.py 973 B

1234567891011121314151617181920212223242526272829303132333435
  1. """EditorConfig version tools
  2. Provides ``join_version`` and ``split_version`` classes for converting
  3. __version__ strings to VERSION tuples and vice versa.
  4. """
  5. import re
  6. __all__ = ['join_version', 'split_version']
  7. _version_re = re.compile(r'^(\d+)\.(\d+)\.(\d+)(\..*)?$', re.VERBOSE)
  8. def join_version(version_tuple):
  9. """Return a string representation of version from given VERSION tuple"""
  10. version = "%s.%s.%s" % version_tuple[:3]
  11. if version_tuple[3] != "final":
  12. version += "-%s" % version_tuple[3]
  13. return version
  14. def split_version(version):
  15. """Return VERSION tuple for given string representation of version"""
  16. match = _version_re.search(version)
  17. if not match:
  18. return None
  19. else:
  20. split_version = list(match.groups())
  21. if split_version[3] is None:
  22. split_version[3] = "final"
  23. split_version = list(map(int, split_version[:3])) + split_version[3:]
  24. return tuple(split_version)