code: def enum(enum_type='enum', base_classes=None, methods=None, **attrs):
      
      # Enumerations can not be initalized as a new instance
      def __init__(instance, *args, **kwargs):
          raise RuntimeError('%s types can not be initialized.' % enum_type)
  
      if base_classes is None:
          base_classes = ()
  
      if methods is None:
          methods = {}
  
      base_classes = base_classes + (object,)
      for k, v in methods.items():
          methods[k] = classmethod(v)
  
      attrs['enums'] = attrs.copy()
      methods.update(attrs)
      methods['__init__'] = __init__
      return type(to_string(enum_type), base_classes, methods)
docs: Generates a enumeration with the given attributes.