Source code for datacatalog.identifiers.identifier

import random
import string

__all__ = ['IdentifierFactory', 'Identifier', 'InvalidIdentifierValue',
           'InvalidIdentifierType', 'random_string']

[docs]class InvalidIdentifierValue(ValueError): pass
[docs]class InvalidIdentifierType(TypeError): pass
[docs]class Identifier(str): """Human-readable string identifier""" def __new__(cls, value): value = str(value).lower() return str.__new__(cls, value)
[docs]class IdentifierFactory(object):
[docs] def generate(self): return Identifier("identifier")
[docs] def mock(self): return self.generate()
[docs] def validate(self, value, permissive=True): if self.do_validate(value) is True: return True else: if permissive is False: raise ValueError( '{} is not a valid identifier'.format(value)) else: return False
[docs] def do_validate(self, value, permissive=True): if isinstance(value, str): return True else: if permissive: return False else: raise InvalidIdentifierType("Identifier must be a string")
[docs]def random_string(size=64, chars=string.ascii_uppercase + string.digits): return ''.join(random.choice(chars) for x in range(size))