def build_conifurable_data_sink_enum() -> ConfigurableComponent:
    """
    Build an enum of configurable data sinks.
    But conditional on if the corresponding vector store is available.
    """
    enum_members = []

    try:
        from llama_index.vector_stores.chroma import (
            ChromaVectorStore,
        )  # pants: no-infer-dep

        enum_members.append(
            (
                "CHROMA",
                DataSink(
                    name="Chroma",
                    component_type=ChromaVectorStore,
                ),
            )
        )
    except (ImportError, ValidationError):
        pass

    try:
        from llama_index.vector_stores.pinecone import (
            PineconeVectorStore,
        )  # pants: no-infer-dep

        enum_members.append(
            (
                "PINECONE",
                DataSink(
                    name="Pinecone",
                    component_type=PineconeVectorStore,
                ),
            )
        )
    except (ImportError, ValidationError):
        pass

    try:
        from llama_index.vector_stores.postgres import (
            PGVectorStore,
        )  # pants: no-infer-dep

        enum_members.append(
            (
                "POSTGRES",
                DataSink(
                    name="PostgreSQL",
                    component_type=PGVectorStore,
                ),
            )
        )
    except (ImportError, ValidationError):
        pass

    try:
        from llama_index.vector_stores.qdrant import (
            QdrantVectorStore,
        )  # pants: no-infer-dep

        enum_members.append(
            (
                "QDRANT",
                DataSink(
                    name="Qdrant",
                    component_type=QdrantVectorStore,
                ),
            )
        )
    except (ImportError, ValidationError):
        pass

    try:
        from llama_index.vector_stores.weaviate import (
            WeaviateVectorStore,
        )  # pants: no-infer-dep

        enum_members.append(
            (
                "WEAVIATE",
                DataSink(
                    name="Weaviate",
                    component_type=WeaviateVectorStore,
                ),
            )
        )
    except (ImportError, ValidationError):
        pass

    return ConfigurableComponent("ConfigurableDataSinks", enum_members)  # type: ignore

    Build an enum of configurable data sinks.
    But conditional on if the corresponding vector store is available.
    
llama-index-core/llama_index/core/ingestion/data_sinks.py