[fix] missing file in geodata

This commit is contained in:
Al
2016-01-17 22:23:44 -05:00
parent 5fd9dc7e2b
commit fe8f3158f6

62
scripts/geodata/enum.py Normal file
View File

@@ -0,0 +1,62 @@
class EnumValue(object):
def __init__(self, value, name=None):
self.value = value
self.name = name
def __hash__(self):
return self.value
def __cmp__(self, other):
if isinstance(other, EnumValue):
return self.value.__cmp__(other.value)
else:
return self.value.__cmp__(other)
def __unicode__(self):
return self.name
def __str__(self):
return self.name
def __repr__(self):
return self.name
class EnumMeta(type):
def __init__(self, name, bases, dict_):
self.registry = self.registry.copy()
self.name_registry = self.name_registry.copy()
for k, v in dict_.iteritems():
if isinstance(v, EnumValue) and v not in self.registry:
if v.name is None:
v.name = k
self.registry[v.value] = v
self.name_registry[v.name] = v
return super(EnumMeta, self).__init__(name, bases, dict_)
def __iter__(self):
return self.registry.itervalues()
def __getitem__(self, key):
return self.registry[key]
class Enum(object):
__metaclass__ = EnumMeta
registry = {}
name_registry = {}
@classmethod
def from_id(cls, value):
try:
return cls.registry[value]
except KeyError:
raise ValueError('Invalid value for {}: {}'.format(cls.__name__, value))
@classmethod
def from_string(cls, name):
try:
return cls.name_registry[name]
except KeyError:
raise ValueError('Invalid name for {}: {}'.format(cls.__name__, name))