ufoLib/utils: define _VersionTupleEnumMixin class

This commit is contained in:
Cosimo Lupo 2020-05-05 18:15:51 +01:00
parent c066cfc4d5
commit f120be17e4
No known key found for this signature in database
GPG Key ID: 179A8F0895A02F4F

View File

@ -36,6 +36,39 @@ def deprecated(msg=""):
return deprecated_decorator
# To be mixed with enum.Enum in UFOFormatVersion and GLIFFormatVersion
class _VersionTupleEnumMixin:
@property
def major(self):
return self.value[0]
@property
def minor(self):
return self.value[1]
@classmethod
def _missing_(cls, value):
# allow to initialize a version enum from a single (major) integer
if isinstance(value, int):
return cls((value, 0))
# or from None to obtain the current default version
if value is None:
return cls.default()
return super()._missing_(value)
def __str__(self):
return f"{self.major}.{self.minor}"
@classmethod
def default(cls):
# get the latest defined version (i.e. the max of all versions)
return max(cls.__members__.values())
@classmethod
def supported_versions(cls):
return frozenset(cls.__members__.values())
if __name__ == "__main__":
import doctest