Spaces:
Sleeping
Sleeping
from enum import Enum, EnumMeta | |
from typing import Union | |
class EnumMetaClass(Enum): | |
def __eq__(self, other): | |
if self.__class__ is other.__class__: | |
return self.value.upper() == other.value.upper() | |
return self.value == other | |
def __hash__(self): | |
return hash(self._name_) | |
def __str__(self): | |
return self.value | |
def get_enum(cls, value: str) -> Union[EnumMeta, None]: | |
return next( | |
( | |
enum_val | |
for enum_val in cls | |
if (enum_val.value == value) | |
or ( | |
isinstance(value, str) | |
and isinstance(enum_val.value, str) | |
and (value.lower() == enum_val.value.lower() or value.upper() == enum_val.name.upper()) | |
) | |
), | |
None, | |
) | |
def _missing_(cls, name): | |
for member in cls: | |
if isinstance(member.name, str) and isinstance(name, str) and member.name.lower() == name.lower(): | |
return member | |
class EmbeddingTypes(EnumMetaClass): | |
NA = "NA" | |
OPENAI = "OpenAI" | |
HUGGING_FACE = "Hugging Face" | |
COHERE = "Cohere" | |
class TransformType(EnumMetaClass): | |
RecursiveTransform = "Recursive Text Splitter" | |
CharacterTransform = "Character Text Splitter" | |
SpacyTransform = "Spacy Text Splitter" | |
NLTKTransform = "NLTK Text Splitter" | |
class IndexerType(EnumMetaClass): | |
FAISS = "FAISS" | |
CHROMA = "Chroma" | |
ELASTICSEARCH = "Elastic Search" | |
class BotType(EnumMetaClass): | |
qna = "Question Answering Bot β" | |
conversational = "Chatbot π€" | |