trustgraph-flow 0.18.7__tar.gz → 0.18.9__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/PKG-INFO +2 -2
- trustgraph-flow-0.18.9/trustgraph/flow_version.py +1 -0
- trustgraph-flow-0.18.9/trustgraph/gateway/document_load.py +42 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/gateway/embeddings.py +0 -1
- trustgraph-flow-0.18.9/trustgraph/gateway/mux.py +169 -0
- trustgraph-flow-0.18.9/trustgraph/gateway/sender.py +49 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/gateway/service.py +16 -111
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/gateway/socket.py +7 -22
- trustgraph-flow-0.18.9/trustgraph/gateway/text_load.py +45 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph_flow.egg-info/PKG-INFO +2 -2
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph_flow.egg-info/SOURCES.txt +3 -0
- trustgraph-flow-0.18.7/trustgraph/flow_version.py +0 -1
- trustgraph-flow-0.18.7/trustgraph/gateway/mux.py +0 -94
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/README.md +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/scripts/agent-manager-react +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/scripts/api-gateway +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/scripts/chunker-recursive +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/scripts/chunker-token +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/scripts/de-query-milvus +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/scripts/de-query-pinecone +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/scripts/de-query-qdrant +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/scripts/de-write-milvus +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/scripts/de-write-pinecone +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/scripts/de-write-qdrant +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/scripts/document-rag +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/scripts/embeddings-ollama +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/scripts/embeddings-vectorize +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/scripts/ge-query-milvus +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/scripts/ge-query-pinecone +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/scripts/ge-query-qdrant +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/scripts/ge-write-milvus +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/scripts/ge-write-pinecone +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/scripts/ge-write-qdrant +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/scripts/graph-rag +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/scripts/kg-extract-definitions +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/scripts/kg-extract-relationships +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/scripts/kg-extract-topics +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/scripts/metering +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/scripts/object-extract-row +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/scripts/oe-write-milvus +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/scripts/pdf-decoder +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/scripts/prompt-generic +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/scripts/prompt-template +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/scripts/rows-write-cassandra +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/scripts/run-processing +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/scripts/text-completion-azure +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/scripts/text-completion-azure-openai +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/scripts/text-completion-claude +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/scripts/text-completion-cohere +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/scripts/text-completion-googleaistudio +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/scripts/text-completion-llamafile +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/scripts/text-completion-ollama +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/scripts/text-completion-openai +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/scripts/triples-query-cassandra +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/scripts/triples-query-falkordb +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/scripts/triples-query-memgraph +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/scripts/triples-query-neo4j +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/scripts/triples-write-cassandra +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/scripts/triples-write-falkordb +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/scripts/triples-write-memgraph +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/scripts/triples-write-neo4j +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/scripts/wikipedia-lookup +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/setup.cfg +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/setup.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/__init__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/agent/__init__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/agent/react/__init__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/agent/react/__main__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/agent/react/agent_manager.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/agent/react/service.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/agent/react/tools.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/agent/react/types.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/chunking/__init__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/chunking/recursive/__init__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/chunking/recursive/__main__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/chunking/recursive/chunker.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/chunking/token/__init__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/chunking/token/__main__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/chunking/token/chunker.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/decoding/__init__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/decoding/pdf/__init__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/decoding/pdf/__main__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/decoding/pdf/pdf_decoder.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/direct/__init__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/direct/cassandra.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/direct/milvus_doc_embeddings.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/direct/milvus_graph_embeddings.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/direct/milvus_object_embeddings.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/document_rag.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/embeddings/__init__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/embeddings/ollama/__init__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/embeddings/ollama/__main__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/embeddings/ollama/processor.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/embeddings/vectorize/__init__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/embeddings/vectorize/__main__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/embeddings/vectorize/vectorize.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/external/__init__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/external/wikipedia/__init__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/external/wikipedia/__main__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/external/wikipedia/service.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/extract/__init__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/extract/kg/__init__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/extract/kg/definitions/__init__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/extract/kg/definitions/__main__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/extract/kg/definitions/extract.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/extract/kg/relationships/__init__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/extract/kg/relationships/__main__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/extract/kg/relationships/extract.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/extract/kg/topics/__init__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/extract/kg/topics/__main__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/extract/kg/topics/extract.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/extract/object/__init__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/extract/object/row/__init__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/extract/object/row/__main__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/extract/object/row/extract.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/gateway/__init__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/gateway/__main__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/gateway/agent.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/gateway/auth.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/gateway/dbpedia.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/gateway/encyclopedia.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/gateway/endpoint.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/gateway/graph_embeddings_load.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/gateway/graph_embeddings_query.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/gateway/graph_embeddings_stream.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/gateway/graph_rag.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/gateway/internet_search.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/gateway/prompt.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/gateway/publisher.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/gateway/requestor.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/gateway/running.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/gateway/serialize.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/gateway/subscriber.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/gateway/text_completion.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/gateway/triples_load.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/gateway/triples_query.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/gateway/triples_stream.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/graph_rag.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/metering/__init__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/metering/__main__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/metering/counter.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/metering/pricelist.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/model/__init__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/model/prompt/__init__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/model/prompt/generic/__init__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/model/prompt/generic/__main__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/model/prompt/generic/prompts.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/model/prompt/generic/service.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/model/prompt/template/__init__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/model/prompt/template/__main__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/model/prompt/template/prompt_manager.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/model/prompt/template/service.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/model/text_completion/__init__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/model/text_completion/azure/__init__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/model/text_completion/azure/__main__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/model/text_completion/azure/llm.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/model/text_completion/azure_openai/__init__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/model/text_completion/azure_openai/__main__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/model/text_completion/azure_openai/llm.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/model/text_completion/claude/__init__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/model/text_completion/claude/__main__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/model/text_completion/claude/llm.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/model/text_completion/cohere/__init__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/model/text_completion/cohere/__main__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/model/text_completion/cohere/llm.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/model/text_completion/googleaistudio/__init__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/model/text_completion/googleaistudio/__main__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/model/text_completion/googleaistudio/llm.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/model/text_completion/llamafile/__init__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/model/text_completion/llamafile/__main__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/model/text_completion/llamafile/llm.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/model/text_completion/ollama/__init__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/model/text_completion/ollama/__main__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/model/text_completion/ollama/llm.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/model/text_completion/openai/__init__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/model/text_completion/openai/__main__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/model/text_completion/openai/llm.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/processing/__init__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/processing/__main__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/processing/processing.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/query/__init__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/query/doc_embeddings/__init__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/query/doc_embeddings/milvus/__init__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/query/doc_embeddings/milvus/__main__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/query/doc_embeddings/milvus/service.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/query/doc_embeddings/pinecone/__init__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/query/doc_embeddings/pinecone/__main__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/query/doc_embeddings/pinecone/service.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/query/doc_embeddings/qdrant/__init__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/query/doc_embeddings/qdrant/__main__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/query/doc_embeddings/qdrant/service.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/query/graph_embeddings/__init__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/query/graph_embeddings/milvus/__init__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/query/graph_embeddings/milvus/__main__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/query/graph_embeddings/milvus/service.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/query/graph_embeddings/pinecone/__init__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/query/graph_embeddings/pinecone/__main__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/query/graph_embeddings/pinecone/service.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/query/graph_embeddings/qdrant/__init__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/query/graph_embeddings/qdrant/__main__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/query/graph_embeddings/qdrant/service.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/query/triples/__init__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/query/triples/cassandra/__init__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/query/triples/cassandra/__main__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/query/triples/cassandra/service.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/query/triples/falkordb/__init__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/query/triples/falkordb/__main__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/query/triples/falkordb/service.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/query/triples/memgraph/__init__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/query/triples/memgraph/__main__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/query/triples/memgraph/service.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/query/triples/neo4j/__init__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/query/triples/neo4j/__main__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/query/triples/neo4j/service.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/retrieval/__init__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/retrieval/document_rag/__init__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/retrieval/document_rag/__main__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/retrieval/document_rag/rag.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/retrieval/graph_rag/__init__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/retrieval/graph_rag/__main__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/retrieval/graph_rag/rag.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/storage/__init__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/storage/doc_embeddings/__init__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/storage/doc_embeddings/milvus/__init__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/storage/doc_embeddings/milvus/__main__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/storage/doc_embeddings/milvus/write.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/storage/doc_embeddings/pinecone/__init__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/storage/doc_embeddings/pinecone/__main__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/storage/doc_embeddings/pinecone/write.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/storage/doc_embeddings/qdrant/__init__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/storage/doc_embeddings/qdrant/__main__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/storage/doc_embeddings/qdrant/write.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/storage/graph_embeddings/__init__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/storage/graph_embeddings/milvus/__init__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/storage/graph_embeddings/milvus/__main__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/storage/graph_embeddings/milvus/write.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/storage/graph_embeddings/pinecone/__init__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/storage/graph_embeddings/pinecone/__main__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/storage/graph_embeddings/pinecone/write.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/storage/graph_embeddings/qdrant/__init__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/storage/graph_embeddings/qdrant/__main__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/storage/graph_embeddings/qdrant/write.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/storage/object_embeddings/__init__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/storage/object_embeddings/milvus/__init__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/storage/object_embeddings/milvus/__main__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/storage/object_embeddings/milvus/write.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/storage/rows/__init__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/storage/rows/cassandra/__init__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/storage/rows/cassandra/__main__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/storage/rows/cassandra/write.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/storage/triples/__init__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/storage/triples/cassandra/__init__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/storage/triples/cassandra/__main__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/storage/triples/cassandra/write.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/storage/triples/falkordb/__init__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/storage/triples/falkordb/__main__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/storage/triples/falkordb/write.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/storage/triples/memgraph/__init__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/storage/triples/memgraph/__main__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/storage/triples/memgraph/write.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/storage/triples/neo4j/__init__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/storage/triples/neo4j/__main__.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph/storage/triples/neo4j/write.py +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph_flow.egg-info/dependency_links.txt +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph_flow.egg-info/requires.txt +0 -0
- {trustgraph-flow-0.18.7 → trustgraph-flow-0.18.9}/trustgraph_flow.egg-info/top_level.txt +0 -0
@@ -1,12 +1,12 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: trustgraph-flow
|
3
|
-
Version: 0.18.
|
3
|
+
Version: 0.18.9
|
4
4
|
Summary: TrustGraph provides a means to run a pipeline of flexible AI processing components in a flexible means to achieve a processing pipeline.
|
5
5
|
Home-page: https://github.com/trustgraph-ai/trustgraph
|
6
6
|
Author: trustgraph.ai
|
7
7
|
Author-email: security@trustgraph.ai
|
8
8
|
License: UNKNOWN
|
9
|
-
Download-URL: https://github.com/trustgraph-ai/trustgraph/archive/refs/tags/v0.18.
|
9
|
+
Download-URL: https://github.com/trustgraph-ai/trustgraph/archive/refs/tags/v0.18.9.tar.gz
|
10
10
|
Platform: UNKNOWN
|
11
11
|
Classifier: Programming Language :: Python :: 3
|
12
12
|
Classifier: License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)
|
@@ -0,0 +1 @@
|
|
1
|
+
__version__ = "0.18.9"
|
@@ -0,0 +1,42 @@
|
|
1
|
+
|
2
|
+
import base64
|
3
|
+
|
4
|
+
from .. schema import Document
|
5
|
+
from .. schema import document_ingest_queue
|
6
|
+
|
7
|
+
from . sender import ServiceSender
|
8
|
+
from . serialize import to_subgraph
|
9
|
+
|
10
|
+
class DocumentLoadSender(ServiceSender):
|
11
|
+
def __init__(self, pulsar_host):
|
12
|
+
|
13
|
+
super(DocumentLoadSender, self).__init__(
|
14
|
+
pulsar_host=pulsar_host,
|
15
|
+
request_queue=document_ingest_queue,
|
16
|
+
request_schema=Document,
|
17
|
+
)
|
18
|
+
|
19
|
+
def to_request(self, body):
|
20
|
+
|
21
|
+
if "metadata" in data:
|
22
|
+
metadata = to_subgraph(data["metadata"])
|
23
|
+
else:
|
24
|
+
metadata = []
|
25
|
+
|
26
|
+
# Doing a base64 decoe/encode here to make sure the
|
27
|
+
# content is valid base64
|
28
|
+
doc = base64.b64decode(data["data"])
|
29
|
+
|
30
|
+
print("Document received")
|
31
|
+
|
32
|
+
return Document(
|
33
|
+
metadata=Metadata(
|
34
|
+
id=data.get("id"),
|
35
|
+
metadata=metadata,
|
36
|
+
user=data.get("user", "trustgraph"),
|
37
|
+
collection=data.get("collection", "default"),
|
38
|
+
),
|
39
|
+
data=base64.b64encode(doc).decode("utf-8")
|
40
|
+
)
|
41
|
+
|
42
|
+
|
@@ -0,0 +1,169 @@
|
|
1
|
+
|
2
|
+
import asyncio
|
3
|
+
import queue
|
4
|
+
from pulsar.schema import JsonSchema
|
5
|
+
import uuid
|
6
|
+
from aiohttp import web, WSMsgType
|
7
|
+
|
8
|
+
from . socket import SocketEndpoint
|
9
|
+
from . text_completion import TextCompletionRequestor
|
10
|
+
|
11
|
+
MAX_OUTSTANDING_REQUESTS = 15
|
12
|
+
WORKER_CLOSE_WAIT = 0.01
|
13
|
+
START_REQUEST_WAIT = 0.1
|
14
|
+
|
15
|
+
# This buffers requests until task start, so short-lived
|
16
|
+
MAX_QUEUE_SIZE = 10
|
17
|
+
|
18
|
+
class MuxEndpoint(SocketEndpoint):
|
19
|
+
|
20
|
+
def __init__(
|
21
|
+
self, pulsar_host, auth,
|
22
|
+
services,
|
23
|
+
path="/api/v1/socket",
|
24
|
+
):
|
25
|
+
|
26
|
+
super(MuxEndpoint, self).__init__(
|
27
|
+
endpoint_path=path, auth=auth,
|
28
|
+
)
|
29
|
+
|
30
|
+
self.services = services
|
31
|
+
|
32
|
+
async def start(self):
|
33
|
+
pass
|
34
|
+
|
35
|
+
async def maybe_tidy_workers(self, workers):
|
36
|
+
|
37
|
+
while True:
|
38
|
+
|
39
|
+
try:
|
40
|
+
|
41
|
+
await asyncio.wait_for(
|
42
|
+
asyncio.shield(workers[0]),
|
43
|
+
WORKER_CLOSE_WAIT
|
44
|
+
)
|
45
|
+
|
46
|
+
# worker[0] now stopped
|
47
|
+
# FIXME: Delete reference???
|
48
|
+
|
49
|
+
workers.pop(0)
|
50
|
+
|
51
|
+
if len(workers) == 0:
|
52
|
+
break
|
53
|
+
|
54
|
+
# Loop iterates to try the next worker
|
55
|
+
|
56
|
+
except TimeoutError:
|
57
|
+
# worker[0] still running, move on
|
58
|
+
break
|
59
|
+
|
60
|
+
async def start_request_task(self, ws, id, svc, request, workers):
|
61
|
+
|
62
|
+
if svc not in self.services:
|
63
|
+
await ws.send_json({"id": id, "error": "Service not recognised"})
|
64
|
+
return
|
65
|
+
|
66
|
+
requestor = self.services[svc]
|
67
|
+
|
68
|
+
async def responder(resp, fin):
|
69
|
+
await ws.send_json({
|
70
|
+
"id": id,
|
71
|
+
"response": resp,
|
72
|
+
"complete": fin,
|
73
|
+
})
|
74
|
+
|
75
|
+
# Wait for outstanding requests to go below MAX_OUTSTANDING_REQUESTS
|
76
|
+
while len(workers) > MAX_OUTSTANDING_REQUESTS:
|
77
|
+
|
78
|
+
# Fixes deadlock
|
79
|
+
# FIXME: Put it in its own loop
|
80
|
+
await asyncio.sleep(START_REQUEST_WAIT)
|
81
|
+
|
82
|
+
await self.maybe_tidy_workers(workers)
|
83
|
+
|
84
|
+
worker = asyncio.create_task(
|
85
|
+
requestor.process(request, responder)
|
86
|
+
)
|
87
|
+
|
88
|
+
workers.append(worker)
|
89
|
+
|
90
|
+
async def async_thread(self, ws, running, q):
|
91
|
+
|
92
|
+
# Worker threads, servicing
|
93
|
+
workers = []
|
94
|
+
|
95
|
+
while running.get():
|
96
|
+
|
97
|
+
try:
|
98
|
+
|
99
|
+
if len(workers) > 0:
|
100
|
+
await self.maybe_tidy_workers(workers)
|
101
|
+
|
102
|
+
# Get next request on queue
|
103
|
+
id, svc, request = await asyncio.wait_for(q.get(), 1)
|
104
|
+
|
105
|
+
except TimeoutError:
|
106
|
+
continue
|
107
|
+
|
108
|
+
except Exception as e:
|
109
|
+
# This is an internal working error, may not be recoverable
|
110
|
+
print("Exception:", e)
|
111
|
+
await ws.send_json({"id": id, "error": str(e)})
|
112
|
+
break
|
113
|
+
|
114
|
+
try:
|
115
|
+
print(id, svc, request)
|
116
|
+
await self.start_request_task(ws, id, svc, request, workers)
|
117
|
+
|
118
|
+
except Exception as e:
|
119
|
+
print("Exception2:", e)
|
120
|
+
await ws.send_json({"error": str(e)})
|
121
|
+
|
122
|
+
running.stop()
|
123
|
+
|
124
|
+
async def listener(self, ws, running):
|
125
|
+
|
126
|
+
# The outstanding request queue, max size is MAX_QUEUE_SIZE
|
127
|
+
q = asyncio.Queue(maxsize=MAX_QUEUE_SIZE)
|
128
|
+
|
129
|
+
async_task = asyncio.create_task(self.async_thread(
|
130
|
+
ws, running, q
|
131
|
+
))
|
132
|
+
|
133
|
+
async for msg in ws:
|
134
|
+
|
135
|
+
# On error, finish
|
136
|
+
if msg.type == WSMsgType.TEXT:
|
137
|
+
|
138
|
+
try:
|
139
|
+
|
140
|
+
data = msg.json()
|
141
|
+
|
142
|
+
if data["service"] not in self.services:
|
143
|
+
raise RuntimeError("Bad service")
|
144
|
+
|
145
|
+
if "request" not in data:
|
146
|
+
raise RuntimeError("Bad message")
|
147
|
+
|
148
|
+
if "id" not in data:
|
149
|
+
raise RuntimeError("Bad message")
|
150
|
+
|
151
|
+
await q.put(
|
152
|
+
(data["id"], data["service"], data["request"])
|
153
|
+
)
|
154
|
+
|
155
|
+
except Exception as e:
|
156
|
+
|
157
|
+
await ws.send_json({"error": str(e)})
|
158
|
+
continue
|
159
|
+
|
160
|
+
elif msg.type == WSMsgType.ERROR:
|
161
|
+
break
|
162
|
+
elif msg.type == WSMsgType.CLOSE:
|
163
|
+
break
|
164
|
+
else:
|
165
|
+
break
|
166
|
+
|
167
|
+
running.stop()
|
168
|
+
|
169
|
+
await async_task
|
@@ -0,0 +1,49 @@
|
|
1
|
+
|
2
|
+
# Like ServiceRequestor, but just fire-and-forget instead of request/response
|
3
|
+
|
4
|
+
import asyncio
|
5
|
+
from pulsar.schema import JsonSchema
|
6
|
+
import uuid
|
7
|
+
import logging
|
8
|
+
|
9
|
+
from . publisher import Publisher
|
10
|
+
|
11
|
+
logger = logging.getLogger("sender")
|
12
|
+
logger.setLevel(logging.INFO)
|
13
|
+
|
14
|
+
class ServiceSender:
|
15
|
+
|
16
|
+
def __init__(
|
17
|
+
self,
|
18
|
+
pulsar_host,
|
19
|
+
request_queue, request_schema,
|
20
|
+
):
|
21
|
+
|
22
|
+
self.pub = Publisher(
|
23
|
+
pulsar_host, request_queue,
|
24
|
+
schema=JsonSchema(request_schema)
|
25
|
+
)
|
26
|
+
|
27
|
+
async def start(self):
|
28
|
+
|
29
|
+
self.pub.start()
|
30
|
+
|
31
|
+
def to_request(self, request):
|
32
|
+
raise RuntimeError("Not defined")
|
33
|
+
|
34
|
+
async def process(self, request, responder=None):
|
35
|
+
|
36
|
+
try:
|
37
|
+
|
38
|
+
await asyncio.to_thread(
|
39
|
+
self.pub.send, None, self.to_request(request)
|
40
|
+
)
|
41
|
+
|
42
|
+
return {}
|
43
|
+
|
44
|
+
except Exception as e:
|
45
|
+
|
46
|
+
logging.error(f"Exception: {e}")
|
47
|
+
|
48
|
+
return { "error": str(e) }
|
49
|
+
|
@@ -24,9 +24,6 @@ from prometheus_client import start_http_server
|
|
24
24
|
|
25
25
|
from .. log_level import LogLevel
|
26
26
|
|
27
|
-
from .. schema import Metadata, Document, TextDocument
|
28
|
-
from .. schema import document_ingest_queue, text_ingest_queue
|
29
|
-
|
30
27
|
from . serialize import to_subgraph
|
31
28
|
from . running import Running
|
32
29
|
from . publisher import Publisher
|
@@ -46,6 +43,8 @@ from . graph_embeddings_stream import GraphEmbeddingsStreamEndpoint
|
|
46
43
|
from . triples_load import TriplesLoadEndpoint
|
47
44
|
from . graph_embeddings_load import GraphEmbeddingsLoadEndpoint
|
48
45
|
from . mux import MuxEndpoint
|
46
|
+
from . document_load import DocumentLoadSender
|
47
|
+
from . text_load import TextLoadSender
|
49
48
|
|
50
49
|
from . endpoint import ServiceEndpoint
|
51
50
|
from . auth import Authenticator
|
@@ -120,6 +119,12 @@ class Api:
|
|
120
119
|
pulsar_host=self.pulsar_host, timeout=self.timeout,
|
121
120
|
auth = self.auth,
|
122
121
|
),
|
122
|
+
"document-load": DocumentLoadSender(
|
123
|
+
pulsar_host=self.pulsar_host,
|
124
|
+
),
|
125
|
+
"text-load": TextLoadSender(
|
126
|
+
pulsar_host=self.pulsar_host,
|
127
|
+
),
|
123
128
|
}
|
124
129
|
|
125
130
|
self.endpoints = [
|
@@ -164,6 +169,14 @@ class Api:
|
|
164
169
|
endpoint_path = "/api/v1/internet-search", auth=self.auth,
|
165
170
|
requestor = self.services["internet-search"],
|
166
171
|
),
|
172
|
+
ServiceEndpoint(
|
173
|
+
endpoint_path = "/api/v1/load/document", auth=self.auth,
|
174
|
+
requestor = self.services["document-load"],
|
175
|
+
),
|
176
|
+
ServiceEndpoint(
|
177
|
+
endpoint_path = "/api/v1/load/text", auth=self.auth,
|
178
|
+
requestor = self.services["text-load"],
|
179
|
+
),
|
167
180
|
TriplesStreamEndpoint(
|
168
181
|
pulsar_host=self.pulsar_host,
|
169
182
|
auth = self.auth,
|
@@ -187,122 +200,14 @@ class Api:
|
|
187
200
|
),
|
188
201
|
]
|
189
202
|
|
190
|
-
self.document_out = Publisher(
|
191
|
-
self.pulsar_host, document_ingest_queue,
|
192
|
-
schema=JsonSchema(Document),
|
193
|
-
chunking_enabled=True,
|
194
|
-
)
|
195
|
-
|
196
|
-
self.text_out = Publisher(
|
197
|
-
self.pulsar_host, text_ingest_queue,
|
198
|
-
schema=JsonSchema(TextDocument),
|
199
|
-
chunking_enabled=True,
|
200
|
-
)
|
201
|
-
|
202
203
|
for ep in self.endpoints:
|
203
204
|
ep.add_routes(self.app)
|
204
205
|
|
205
|
-
self.app.add_routes([
|
206
|
-
web.post("/api/v1/load/document", self.load_document),
|
207
|
-
web.post("/api/v1/load/text", self.load_text),
|
208
|
-
])
|
209
|
-
|
210
|
-
async def load_document(self, request):
|
211
|
-
|
212
|
-
try:
|
213
|
-
|
214
|
-
data = await request.json()
|
215
|
-
|
216
|
-
if "metadata" in data:
|
217
|
-
metadata = to_subgraph(data["metadata"])
|
218
|
-
else:
|
219
|
-
metadata = []
|
220
|
-
|
221
|
-
# Doing a base64 decoe/encode here to make sure the
|
222
|
-
# content is valid base64
|
223
|
-
doc = base64.b64decode(data["data"])
|
224
|
-
|
225
|
-
resp = await asyncio.to_thread(
|
226
|
-
self.document_out.send,
|
227
|
-
None,
|
228
|
-
Document(
|
229
|
-
metadata=Metadata(
|
230
|
-
id=data.get("id"),
|
231
|
-
metadata=metadata,
|
232
|
-
user=data.get("user", "trustgraph"),
|
233
|
-
collection=data.get("collection", "default"),
|
234
|
-
),
|
235
|
-
data=base64.b64encode(doc).decode("utf-8")
|
236
|
-
)
|
237
|
-
)
|
238
|
-
|
239
|
-
print("Document loaded.")
|
240
|
-
|
241
|
-
return web.json_response(
|
242
|
-
{ }
|
243
|
-
)
|
244
|
-
|
245
|
-
except Exception as e:
|
246
|
-
logging.error(f"Exception: {e}")
|
247
|
-
|
248
|
-
return web.json_response(
|
249
|
-
{ "error": str(e) }
|
250
|
-
)
|
251
|
-
|
252
|
-
async def load_text(self, request):
|
253
|
-
|
254
|
-
try:
|
255
|
-
|
256
|
-
data = await request.json()
|
257
|
-
|
258
|
-
if "metadata" in data:
|
259
|
-
metadata = to_subgraph(data["metadata"])
|
260
|
-
else:
|
261
|
-
metadata = []
|
262
|
-
|
263
|
-
if "charset" in data:
|
264
|
-
charset = data["charset"]
|
265
|
-
else:
|
266
|
-
charset = "utf-8"
|
267
|
-
|
268
|
-
# Text is base64 encoded
|
269
|
-
text = base64.b64decode(data["text"]).decode(charset)
|
270
|
-
|
271
|
-
resp = await asyncio.to_thread(
|
272
|
-
self.text_out.send,
|
273
|
-
None,
|
274
|
-
TextDocument(
|
275
|
-
metadata=Metadata(
|
276
|
-
id=data.get("id"),
|
277
|
-
metadata=metadata,
|
278
|
-
user=data.get("user", "trustgraph"),
|
279
|
-
collection=data.get("collection", "default"),
|
280
|
-
),
|
281
|
-
text=text,
|
282
|
-
)
|
283
|
-
)
|
284
|
-
|
285
|
-
print("Text document loaded.")
|
286
|
-
|
287
|
-
return web.json_response(
|
288
|
-
{ }
|
289
|
-
)
|
290
|
-
|
291
|
-
except Exception as e:
|
292
|
-
logging.error(f"Exception: {e}")
|
293
|
-
|
294
|
-
return web.json_response(
|
295
|
-
{ "error": str(e) }
|
296
|
-
)
|
297
|
-
|
298
206
|
async def app_factory(self):
|
299
207
|
|
300
208
|
for ep in self.endpoints:
|
301
209
|
await ep.start()
|
302
210
|
|
303
|
-
self.document_out.start()
|
304
|
-
self.text_out.start()
|
305
|
-
|
306
211
|
return self.app
|
307
212
|
|
308
213
|
def run(self):
|
@@ -22,25 +22,16 @@ class SocketEndpoint:
|
|
22
22
|
|
23
23
|
async for msg in ws:
|
24
24
|
# On error, finish
|
25
|
-
if msg.type == WSMsgType.
|
26
|
-
|
25
|
+
if msg.type == WSMsgType.TEXT:
|
26
|
+
# Ignore incoming message
|
27
|
+
continue
|
28
|
+
elif msg.type == WSMsgType.BINARY:
|
29
|
+
# Ignore incoming message
|
30
|
+
continue
|
27
31
|
else:
|
28
|
-
|
29
|
-
pass
|
32
|
+
break
|
30
33
|
|
31
34
|
running.stop()
|
32
|
-
|
33
|
-
async def async_thread(self, ws, running):
|
34
|
-
|
35
|
-
while running.get():
|
36
|
-
try:
|
37
|
-
await asyncio.sleep(1)
|
38
|
-
|
39
|
-
except TimeoutError:
|
40
|
-
continue
|
41
|
-
|
42
|
-
except Exception as e:
|
43
|
-
print(f"Exception: {str(e)}", flush=True)
|
44
35
|
|
45
36
|
async def handle(self, request):
|
46
37
|
|
@@ -56,12 +47,8 @@ class SocketEndpoint:
|
|
56
47
|
ws = web.WebSocketResponse()
|
57
48
|
await ws.prepare(request)
|
58
49
|
|
59
|
-
task = asyncio.create_task(self.async_thread(ws, running))
|
60
|
-
|
61
50
|
try:
|
62
|
-
|
63
51
|
await self.listener(ws, running)
|
64
|
-
|
65
52
|
except Exception as e:
|
66
53
|
print(e, flush=True)
|
67
54
|
|
@@ -69,8 +56,6 @@ class SocketEndpoint:
|
|
69
56
|
|
70
57
|
await ws.close()
|
71
58
|
|
72
|
-
await task
|
73
|
-
|
74
59
|
return ws
|
75
60
|
|
76
61
|
async def start(self):
|
@@ -0,0 +1,45 @@
|
|
1
|
+
|
2
|
+
import base64
|
3
|
+
|
4
|
+
from .. schema import TextDocument, Metadata
|
5
|
+
from .. schema import text_ingest_queue
|
6
|
+
|
7
|
+
from . sender import ServiceSender
|
8
|
+
from . serialize import to_subgraph
|
9
|
+
|
10
|
+
class TextLoadSender(ServiceSender):
|
11
|
+
def __init__(self, pulsar_host):
|
12
|
+
|
13
|
+
super(TextLoadSender, self).__init__(
|
14
|
+
pulsar_host=pulsar_host,
|
15
|
+
request_queue=text_ingest_queue,
|
16
|
+
request_schema=TextDocument,
|
17
|
+
)
|
18
|
+
|
19
|
+
def to_request(self, body):
|
20
|
+
|
21
|
+
if "metadata" in body:
|
22
|
+
metadata = to_subgraph(body["metadata"])
|
23
|
+
else:
|
24
|
+
metadata = []
|
25
|
+
|
26
|
+
if "charset" in body:
|
27
|
+
charset = body["charset"]
|
28
|
+
else:
|
29
|
+
charset = "utf-8"
|
30
|
+
|
31
|
+
# Text is base64 encoded
|
32
|
+
text = base64.b64decode(body["text"]).decode(charset)
|
33
|
+
|
34
|
+
print("Text document received")
|
35
|
+
|
36
|
+
return TextDocument(
|
37
|
+
metadata=Metadata(
|
38
|
+
id=body.get("id"),
|
39
|
+
metabody=metadata,
|
40
|
+
user=body.get("user", "trustgraph"),
|
41
|
+
collection=body.get("collection", "default"),
|
42
|
+
),
|
43
|
+
text=text,
|
44
|
+
)
|
45
|
+
|
@@ -1,12 +1,12 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: trustgraph-flow
|
3
|
-
Version: 0.18.
|
3
|
+
Version: 0.18.9
|
4
4
|
Summary: TrustGraph provides a means to run a pipeline of flexible AI processing components in a flexible means to achieve a processing pipeline.
|
5
5
|
Home-page: https://github.com/trustgraph-ai/trustgraph
|
6
6
|
Author: trustgraph.ai
|
7
7
|
Author-email: security@trustgraph.ai
|
8
8
|
License: UNKNOWN
|
9
|
-
Download-URL: https://github.com/trustgraph-ai/trustgraph/archive/refs/tags/v0.18.
|
9
|
+
Download-URL: https://github.com/trustgraph-ai/trustgraph/archive/refs/tags/v0.18.9.tar.gz
|
10
10
|
Platform: UNKNOWN
|
11
11
|
Classifier: Programming Language :: Python :: 3
|
12
12
|
Classifier: License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)
|
@@ -106,6 +106,7 @@ trustgraph/gateway/__main__.py
|
|
106
106
|
trustgraph/gateway/agent.py
|
107
107
|
trustgraph/gateway/auth.py
|
108
108
|
trustgraph/gateway/dbpedia.py
|
109
|
+
trustgraph/gateway/document_load.py
|
109
110
|
trustgraph/gateway/embeddings.py
|
110
111
|
trustgraph/gateway/encyclopedia.py
|
111
112
|
trustgraph/gateway/endpoint.py
|
@@ -119,11 +120,13 @@ trustgraph/gateway/prompt.py
|
|
119
120
|
trustgraph/gateway/publisher.py
|
120
121
|
trustgraph/gateway/requestor.py
|
121
122
|
trustgraph/gateway/running.py
|
123
|
+
trustgraph/gateway/sender.py
|
122
124
|
trustgraph/gateway/serialize.py
|
123
125
|
trustgraph/gateway/service.py
|
124
126
|
trustgraph/gateway/socket.py
|
125
127
|
trustgraph/gateway/subscriber.py
|
126
128
|
trustgraph/gateway/text_completion.py
|
129
|
+
trustgraph/gateway/text_load.py
|
127
130
|
trustgraph/gateway/triples_load.py
|
128
131
|
trustgraph/gateway/triples_query.py
|
129
132
|
trustgraph/gateway/triples_stream.py
|
@@ -1 +0,0 @@
|
|
1
|
-
__version__ = "0.18.7"
|
@@ -1,94 +0,0 @@
|
|
1
|
-
|
2
|
-
import asyncio
|
3
|
-
import queue
|
4
|
-
from pulsar.schema import JsonSchema
|
5
|
-
import uuid
|
6
|
-
from aiohttp import web, WSMsgType
|
7
|
-
|
8
|
-
from . socket import SocketEndpoint
|
9
|
-
from . text_completion import TextCompletionRequestor
|
10
|
-
|
11
|
-
class MuxEndpoint(SocketEndpoint):
|
12
|
-
|
13
|
-
def __init__(
|
14
|
-
self, pulsar_host, auth,
|
15
|
-
services,
|
16
|
-
path="/api/v1/socket",
|
17
|
-
):
|
18
|
-
|
19
|
-
super(MuxEndpoint, self).__init__(
|
20
|
-
endpoint_path=path, auth=auth,
|
21
|
-
)
|
22
|
-
|
23
|
-
self.q = asyncio.Queue(maxsize=10)
|
24
|
-
|
25
|
-
self.services = services
|
26
|
-
|
27
|
-
async def start(self):
|
28
|
-
pass
|
29
|
-
|
30
|
-
async def async_thread(self, ws, running):
|
31
|
-
|
32
|
-
while running.get():
|
33
|
-
|
34
|
-
try:
|
35
|
-
id, svc, request = await asyncio.wait_for(self.q.get(), 1)
|
36
|
-
except TimeoutError:
|
37
|
-
continue
|
38
|
-
except Exception as e:
|
39
|
-
await ws.send_json({"id": id, "error": str(e)})
|
40
|
-
|
41
|
-
try:
|
42
|
-
|
43
|
-
print(svc, request)
|
44
|
-
|
45
|
-
requestor = self.services[svc]
|
46
|
-
|
47
|
-
async def responder(resp, fin):
|
48
|
-
await ws.send_json({
|
49
|
-
"id": id,
|
50
|
-
"response": resp,
|
51
|
-
"complete": fin,
|
52
|
-
})
|
53
|
-
|
54
|
-
resp = await requestor.process(request, responder)
|
55
|
-
|
56
|
-
except Exception as e:
|
57
|
-
|
58
|
-
await ws.send_json({"error": str(e)})
|
59
|
-
|
60
|
-
running.stop()
|
61
|
-
|
62
|
-
async def listener(self, ws, running):
|
63
|
-
|
64
|
-
async for msg in ws:
|
65
|
-
|
66
|
-
# On error, finish
|
67
|
-
if msg.type == WSMsgType.ERROR:
|
68
|
-
break
|
69
|
-
else:
|
70
|
-
|
71
|
-
try:
|
72
|
-
|
73
|
-
data = msg.json()
|
74
|
-
|
75
|
-
if data["service"] not in self.services:
|
76
|
-
raise RuntimeError("Bad service")
|
77
|
-
|
78
|
-
if "request" not in data:
|
79
|
-
raise RuntimeError("Bad message")
|
80
|
-
|
81
|
-
if "id" not in data:
|
82
|
-
raise RuntimeError("Bad message")
|
83
|
-
|
84
|
-
await self.q.put(
|
85
|
-
(data["id"], data["service"], data["request"])
|
86
|
-
)
|
87
|
-
|
88
|
-
except Exception as e:
|
89
|
-
|
90
|
-
await ws.send_json({"error": str(e)})
|
91
|
-
continue
|
92
|
-
|
93
|
-
running.stop()
|
94
|
-
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|