trustgraph-base 2.4.28__tar.gz → 2.4.30__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_base-2.4.28 → trustgraph_base-2.4.30}/PKG-INFO +1 -1
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/consumer.py +16 -10
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/pubsub.py +10 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/pulsar_backend.py +125 -11
- trustgraph_base-2.4.30/trustgraph/base_version.py +1 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph_base.egg-info/PKG-INFO +1 -1
- trustgraph_base-2.4.28/trustgraph/base_version.py +0 -1
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/README.md +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/pyproject.toml +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/setup.cfg +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/api/__init__.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/api/api.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/api/async_bulk_client.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/api/async_flow.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/api/async_metrics.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/api/async_socket_client.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/api/bulk_client.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/api/collection.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/api/config.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/api/exceptions.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/api/explainability.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/api/flow.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/api/knowledge.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/api/library.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/api/metrics.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/api/socket_client.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/api/types.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/__init__.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/agent_client.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/agent_service.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/async_processor.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/backend.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/cassandra_config.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/chunking_service.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/collection_config_handler.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/config_client.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/consumer_spec.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/document_embeddings_client.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/document_embeddings_query_service.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/document_embeddings_store_service.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/dynamic_tool_service.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/embeddings_client.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/embeddings_service.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/flow.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/flow_processor.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/graph_embeddings_client.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/graph_embeddings_query_service.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/graph_embeddings_store_service.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/graph_rag_client.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/iam_client.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/kafka_backend.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/librarian_client.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/librarian_spec.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/llm_service.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/logging.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/metrics.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/parameter_spec.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/processor_group.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/producer.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/producer_spec.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/prompt_client.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/publisher.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/rabbitmq_backend.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/request_response_spec.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/row_embeddings_query_client.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/serialization.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/spec.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/structured_query_client.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/subscriber.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/subscriber_spec.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/text_completion_client.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/tool_client.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/tool_service.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/tool_service_client.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/triples_client.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/triples_query_service.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/triples_store_service.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/workspace_processor.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/clients/__init__.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/clients/agent_client.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/clients/base.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/clients/config_client.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/clients/document_embeddings_client.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/clients/document_rag_client.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/clients/embeddings_client.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/clients/graph_embeddings_client.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/clients/graph_rag_client.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/clients/llm_client.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/clients/prompt_client.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/clients/row_embeddings_client.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/clients/triples_query_client.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/exceptions.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/i18n/__init__.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/i18n/packs/__init__.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/i18n/packs/ar.json +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/i18n/packs/en.json +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/i18n/packs/es.json +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/i18n/packs/he.json +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/i18n/packs/hi.json +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/i18n/packs/pt.json +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/i18n/packs/ru.json +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/i18n/packs/sw.json +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/i18n/packs/tr.json +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/i18n/packs/zh-cn.json +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/knowledge/__init__.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/knowledge/defs.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/knowledge/document.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/knowledge/identifier.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/knowledge/organization.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/knowledge/publication.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/log_level.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/messaging/__init__.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/messaging/registry.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/messaging/translators/__init__.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/messaging/translators/agent.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/messaging/translators/base.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/messaging/translators/collection.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/messaging/translators/config.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/messaging/translators/diagnosis.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/messaging/translators/document_loading.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/messaging/translators/embeddings.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/messaging/translators/embeddings_query.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/messaging/translators/flow.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/messaging/translators/iam.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/messaging/translators/knowledge.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/messaging/translators/library.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/messaging/translators/metadata.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/messaging/translators/nlp_query.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/messaging/translators/primitives.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/messaging/translators/prompt.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/messaging/translators/retrieval.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/messaging/translators/rows_query.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/messaging/translators/sparql_query.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/messaging/translators/structured_query.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/messaging/translators/text_completion.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/messaging/translators/tool.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/messaging/translators/triples.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/objects/__init__.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/objects/field.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/objects/object.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/provenance/__init__.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/provenance/agent.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/provenance/namespaces.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/provenance/triples.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/provenance/uris.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/provenance/vocabulary.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/rdf.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/schema/__init__.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/schema/core/__init__.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/schema/core/metadata.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/schema/core/primitives.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/schema/core/topic.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/schema/knowledge/__init__.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/schema/knowledge/document.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/schema/knowledge/embeddings.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/schema/knowledge/graph.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/schema/knowledge/knowledge.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/schema/knowledge/nlp.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/schema/knowledge/object.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/schema/knowledge/rows.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/schema/knowledge/structured.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/schema/services/__init__.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/schema/services/agent.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/schema/services/collection.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/schema/services/config.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/schema/services/diagnosis.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/schema/services/flow.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/schema/services/iam.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/schema/services/library.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/schema/services/llm.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/schema/services/lookup.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/schema/services/nlp_query.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/schema/services/prompt.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/schema/services/query.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/schema/services/retrieval.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/schema/services/rows_query.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/schema/services/sparql_query.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/schema/services/storage.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/schema/services/structured_query.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/schema/services/tool_service.py +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph_base.egg-info/SOURCES.txt +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph_base.egg-info/dependency_links.txt +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph_base.egg-info/entry_points.txt +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph_base.egg-info/requires.txt +0 -0
- {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph_base.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: trustgraph-base
|
|
3
|
-
Version: 2.4.
|
|
3
|
+
Version: 2.4.30
|
|
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
|
Author-email: "trustgraph.ai" <security@trustgraph.ai>
|
|
6
6
|
Project-URL: Homepage, https://github.com/trustgraph-ai/trustgraph
|
|
@@ -76,8 +76,10 @@ class Consumer:
|
|
|
76
76
|
|
|
77
77
|
if hasattr(self, "consumer"):
|
|
78
78
|
if self.consumer:
|
|
79
|
-
|
|
80
|
-
|
|
79
|
+
try:
|
|
80
|
+
self.consumer.close()
|
|
81
|
+
except Exception:
|
|
82
|
+
pass
|
|
81
83
|
self.consumer = None
|
|
82
84
|
|
|
83
85
|
async def stop(self):
|
|
@@ -157,12 +159,14 @@ class Consumer:
|
|
|
157
159
|
except Exception as e:
|
|
158
160
|
|
|
159
161
|
logger.error(f"Consumer loop exception: {e}", exc_info=True)
|
|
160
|
-
for c in consumers:
|
|
162
|
+
for i, c in enumerate(consumers):
|
|
161
163
|
try:
|
|
162
|
-
c.unsubscribe()
|
|
163
164
|
c.close()
|
|
164
|
-
except Exception:
|
|
165
|
-
|
|
165
|
+
except Exception as ce:
|
|
166
|
+
logger.warning(
|
|
167
|
+
f"Consumer {i} close failed (error path): "
|
|
168
|
+
f"{type(ce).__name__}: {ce}"
|
|
169
|
+
)
|
|
166
170
|
for ex in executors:
|
|
167
171
|
ex.shutdown(wait=False)
|
|
168
172
|
consumers = []
|
|
@@ -171,12 +175,14 @@ class Consumer:
|
|
|
171
175
|
continue
|
|
172
176
|
|
|
173
177
|
finally:
|
|
174
|
-
for c in consumers:
|
|
178
|
+
for i, c in enumerate(consumers):
|
|
175
179
|
try:
|
|
176
|
-
c.unsubscribe()
|
|
177
180
|
c.close()
|
|
178
|
-
except Exception:
|
|
179
|
-
|
|
181
|
+
except Exception as ce:
|
|
182
|
+
logger.warning(
|
|
183
|
+
f"Consumer {i} close failed: "
|
|
184
|
+
f"{type(ce).__name__}: {ce}"
|
|
185
|
+
)
|
|
180
186
|
for ex in executors:
|
|
181
187
|
ex.shutdown(wait=False)
|
|
182
188
|
|
|
@@ -10,6 +10,7 @@ logger = logging.getLogger(__name__)
|
|
|
10
10
|
# Default connection settings from environment
|
|
11
11
|
DEFAULT_PULSAR_HOST = os.getenv("PULSAR_HOST", 'pulsar://pulsar:6650')
|
|
12
12
|
DEFAULT_PULSAR_API_KEY = os.getenv("PULSAR_API_KEY", None)
|
|
13
|
+
DEFAULT_PULSAR_ADMIN_URL = os.getenv("PULSAR_ADMIN_URL", 'http://pulsar:8080')
|
|
13
14
|
|
|
14
15
|
DEFAULT_RABBITMQ_HOST = os.getenv("RABBITMQ_HOST", 'rabbitmq')
|
|
15
16
|
DEFAULT_RABBITMQ_PORT = int(os.getenv("RABBITMQ_PORT", '5672'))
|
|
@@ -43,6 +44,7 @@ def get_pubsub(**config: Any) -> Any:
|
|
|
43
44
|
host=config.get('pulsar_host', DEFAULT_PULSAR_HOST),
|
|
44
45
|
api_key=config.get('pulsar_api_key', DEFAULT_PULSAR_API_KEY),
|
|
45
46
|
listener=config.get('pulsar_listener'),
|
|
47
|
+
admin_url=config.get('pulsar_admin_url', DEFAULT_PULSAR_ADMIN_URL),
|
|
46
48
|
)
|
|
47
49
|
elif backend_type == 'rabbitmq':
|
|
48
50
|
from .rabbitmq_backend import RabbitMQBackend
|
|
@@ -77,6 +79,7 @@ def get_pubsub(**config: Any) -> Any:
|
|
|
77
79
|
|
|
78
80
|
|
|
79
81
|
STANDALONE_PULSAR_HOST = 'pulsar://localhost:6650'
|
|
82
|
+
STANDALONE_PULSAR_ADMIN_URL = 'http://localhost:8080'
|
|
80
83
|
|
|
81
84
|
|
|
82
85
|
def add_pubsub_args(parser: ArgumentParser, standalone: bool = False) -> None:
|
|
@@ -88,6 +91,7 @@ def add_pubsub_args(parser: ArgumentParser, standalone: bool = False) -> None:
|
|
|
88
91
|
that run outside containers)
|
|
89
92
|
"""
|
|
90
93
|
pulsar_host = STANDALONE_PULSAR_HOST if standalone else DEFAULT_PULSAR_HOST
|
|
94
|
+
pulsar_admin_url = STANDALONE_PULSAR_ADMIN_URL if standalone else DEFAULT_PULSAR_ADMIN_URL
|
|
91
95
|
pulsar_listener = 'localhost' if standalone else None
|
|
92
96
|
rabbitmq_host = 'localhost' if standalone else DEFAULT_RABBITMQ_HOST
|
|
93
97
|
kafka_bootstrap = 'localhost:9092' if standalone else DEFAULT_KAFKA_BOOTSTRAP
|
|
@@ -105,6 +109,12 @@ def add_pubsub_args(parser: ArgumentParser, standalone: bool = False) -> None:
|
|
|
105
109
|
help=f'Pulsar host (default: {pulsar_host})',
|
|
106
110
|
)
|
|
107
111
|
|
|
112
|
+
parser.add_argument(
|
|
113
|
+
'--pulsar-admin-url',
|
|
114
|
+
default=pulsar_admin_url,
|
|
115
|
+
help=f'Pulsar admin REST API URL (default: {pulsar_admin_url})',
|
|
116
|
+
)
|
|
117
|
+
|
|
108
118
|
parser.add_argument(
|
|
109
119
|
'--pulsar-api-key',
|
|
110
120
|
default=DEFAULT_PULSAR_API_KEY,
|
|
@@ -7,8 +7,12 @@ handling topic mapping, serialization, and Pulsar client management.
|
|
|
7
7
|
|
|
8
8
|
import pulsar
|
|
9
9
|
import _pulsar
|
|
10
|
+
import asyncio
|
|
10
11
|
import json
|
|
11
12
|
import logging
|
|
13
|
+
import urllib.request
|
|
14
|
+
import urllib.error
|
|
15
|
+
import urllib.parse
|
|
12
16
|
from typing import Any
|
|
13
17
|
|
|
14
18
|
from .backend import PubSubBackend, BackendProducer, BackendConsumer, Message
|
|
@@ -117,7 +121,10 @@ class PulsarBackend:
|
|
|
117
121
|
producers and consumers.
|
|
118
122
|
"""
|
|
119
123
|
|
|
120
|
-
def __init__(
|
|
124
|
+
def __init__(
|
|
125
|
+
self, host: str, api_key: str = None, listener: str = None,
|
|
126
|
+
admin_url: str = None,
|
|
127
|
+
):
|
|
121
128
|
"""
|
|
122
129
|
Initialize Pulsar backend.
|
|
123
130
|
|
|
@@ -125,10 +132,12 @@ class PulsarBackend:
|
|
|
125
132
|
host: Pulsar broker URL (e.g., pulsar://localhost:6650)
|
|
126
133
|
api_key: Optional API key for authentication
|
|
127
134
|
listener: Optional listener name for multi-homed setups
|
|
135
|
+
admin_url: Pulsar admin REST API URL (e.g., http://pulsar:8080)
|
|
128
136
|
"""
|
|
129
137
|
self.host = host
|
|
130
138
|
self.api_key = api_key
|
|
131
139
|
self.listener = listener
|
|
140
|
+
self.admin_url = admin_url
|
|
132
141
|
|
|
133
142
|
# Create Pulsar client
|
|
134
143
|
client_args = {'service_url': host}
|
|
@@ -270,24 +279,129 @@ class PulsarBackend:
|
|
|
270
279
|
|
|
271
280
|
return PulsarBackendConsumer(pulsar_consumer, schema)
|
|
272
281
|
|
|
282
|
+
def _admin_api_path(self, pulsar_uri: str) -> str:
|
|
283
|
+
"""
|
|
284
|
+
Convert a Pulsar topic URI to an admin REST API path.
|
|
285
|
+
|
|
286
|
+
persistent://tg/flow/triples-store:default:explain-flow
|
|
287
|
+
-> /admin/v2/persistent/tg/flow/triples-store%3Adefault%3Aexplain-flow
|
|
288
|
+
"""
|
|
289
|
+
scheme, rest = pulsar_uri.split('://', 1)
|
|
290
|
+
tenant, namespace, topic = rest.split('/', 2)
|
|
291
|
+
encoded_topic = urllib.parse.quote(topic, safe='')
|
|
292
|
+
return f"/admin/v2/{scheme}/{tenant}/{namespace}/{encoded_topic}"
|
|
293
|
+
|
|
294
|
+
def _admin_request(self, method, path):
|
|
295
|
+
"""
|
|
296
|
+
Make a synchronous admin REST API request.
|
|
297
|
+
|
|
298
|
+
Returns parsed JSON for GET, None for DELETE/PUT.
|
|
299
|
+
Raises urllib.error.HTTPError for non-404 errors.
|
|
300
|
+
404 is treated as success (idempotent deletion).
|
|
301
|
+
"""
|
|
302
|
+
url = f"{self.admin_url}{path}"
|
|
303
|
+
req = urllib.request.Request(url, method=method)
|
|
304
|
+
|
|
305
|
+
try:
|
|
306
|
+
with urllib.request.urlopen(req) as resp:
|
|
307
|
+
if method == 'GET':
|
|
308
|
+
return json.loads(resp.read().decode('utf-8'))
|
|
309
|
+
return None
|
|
310
|
+
except urllib.error.HTTPError as e:
|
|
311
|
+
if e.code == 404:
|
|
312
|
+
return None
|
|
313
|
+
raise
|
|
314
|
+
|
|
315
|
+
def _delete_topic_sync(self, topic: str):
|
|
316
|
+
"""
|
|
317
|
+
Delete a persistent topic and all its subscriptions.
|
|
318
|
+
|
|
319
|
+
Subscriptions must be removed first — Pulsar rejects topic
|
|
320
|
+
deletion while subscriptions exist. Force-deletes each
|
|
321
|
+
subscription to disconnect any lingering consumers.
|
|
322
|
+
"""
|
|
323
|
+
pulsar_uri = self.map_topic(topic)
|
|
324
|
+
|
|
325
|
+
if pulsar_uri.startswith('non-persistent://'):
|
|
326
|
+
return
|
|
327
|
+
|
|
328
|
+
api_path = self._admin_api_path(pulsar_uri)
|
|
329
|
+
|
|
330
|
+
try:
|
|
331
|
+
subs = self._admin_request('GET', f"{api_path}/subscriptions")
|
|
332
|
+
except Exception as e:
|
|
333
|
+
logger.warning(f"Failed to list subscriptions for {topic}: {e}")
|
|
334
|
+
return
|
|
335
|
+
|
|
336
|
+
if subs:
|
|
337
|
+
for sub in subs:
|
|
338
|
+
encoded_sub = urllib.parse.quote(sub, safe='')
|
|
339
|
+
try:
|
|
340
|
+
self._admin_request(
|
|
341
|
+
'DELETE',
|
|
342
|
+
f"{api_path}/subscription/{encoded_sub}"
|
|
343
|
+
f"?force=true"
|
|
344
|
+
)
|
|
345
|
+
logger.info(
|
|
346
|
+
f"Deleted subscription {sub} from {topic}"
|
|
347
|
+
)
|
|
348
|
+
except Exception as e:
|
|
349
|
+
logger.warning(
|
|
350
|
+
f"Failed to delete subscription {sub} "
|
|
351
|
+
f"from {topic}: {e}"
|
|
352
|
+
)
|
|
353
|
+
|
|
354
|
+
try:
|
|
355
|
+
self._admin_request('DELETE', api_path)
|
|
356
|
+
logger.info(f"Deleted topic: {topic}")
|
|
357
|
+
except Exception as e:
|
|
358
|
+
logger.warning(f"Failed to delete topic {topic}: {e}")
|
|
359
|
+
|
|
360
|
+
def _topic_exists_sync(self, topic: str) -> bool:
|
|
361
|
+
"""Check topic existence via admin API."""
|
|
362
|
+
pulsar_uri = self.map_topic(topic)
|
|
363
|
+
|
|
364
|
+
if pulsar_uri.startswith('non-persistent://'):
|
|
365
|
+
return False
|
|
366
|
+
|
|
367
|
+
api_path = self._admin_api_path(pulsar_uri)
|
|
368
|
+
|
|
369
|
+
try:
|
|
370
|
+
result = self._admin_request('GET', f"{api_path}/stats")
|
|
371
|
+
return result is not None
|
|
372
|
+
except Exception:
|
|
373
|
+
return False
|
|
374
|
+
|
|
273
375
|
async def create_topic(self, topic: str) -> None:
|
|
274
|
-
"""No-op — Pulsar auto-creates topics on first use.
|
|
275
|
-
TODO: Use admin REST API for explicit persistent topic creation."""
|
|
376
|
+
"""No-op — Pulsar auto-creates topics on first use."""
|
|
276
377
|
pass
|
|
277
378
|
|
|
278
379
|
async def delete_topic(self, topic: str) -> None:
|
|
279
|
-
"""
|
|
280
|
-
|
|
281
|
-
|
|
380
|
+
"""
|
|
381
|
+
Delete a persistent topic and all its subscriptions via
|
|
382
|
+
the admin REST API.
|
|
383
|
+
|
|
384
|
+
Called by the flow controller during deliberate flow deletion.
|
|
385
|
+
Non-persistent topics are skipped. Idempotent.
|
|
386
|
+
"""
|
|
387
|
+
if not self.admin_url:
|
|
388
|
+
logger.warning(
|
|
389
|
+
f"Cannot delete topic {topic}: "
|
|
390
|
+
f"no admin URL configured"
|
|
391
|
+
)
|
|
392
|
+
return
|
|
393
|
+
|
|
394
|
+
await asyncio.to_thread(self._delete_topic_sync, topic)
|
|
282
395
|
|
|
283
396
|
async def topic_exists(self, topic: str) -> bool:
|
|
284
|
-
"""
|
|
285
|
-
|
|
286
|
-
|
|
397
|
+
"""Check whether a persistent topic exists via the admin API."""
|
|
398
|
+
if not self.admin_url:
|
|
399
|
+
return True
|
|
400
|
+
|
|
401
|
+
return await asyncio.to_thread(self._topic_exists_sync, topic)
|
|
287
402
|
|
|
288
403
|
async def ensure_topic(self, topic: str) -> None:
|
|
289
|
-
"""No-op — Pulsar auto-creates topics on first use.
|
|
290
|
-
TODO: Use admin REST API for explicit creation."""
|
|
404
|
+
"""No-op — Pulsar auto-creates topics on first use."""
|
|
291
405
|
pass
|
|
292
406
|
|
|
293
407
|
def close(self) -> None:
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "2.4.30"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: trustgraph-base
|
|
3
|
-
Version: 2.4.
|
|
3
|
+
Version: 2.4.30
|
|
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
|
Author-email: "trustgraph.ai" <security@trustgraph.ai>
|
|
6
6
|
Project-URL: Homepage, https://github.com/trustgraph-ai/trustgraph
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "2.4.28"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/collection_config_handler.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/document_embeddings_client.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/graph_embeddings_client.py
RENAMED
|
File without changes
|
{trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/graph_embeddings_query_service.py
RENAMED
|
File without changes
|
{trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/graph_embeddings_store_service.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/row_embeddings_query_client.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/structured_query_client.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/clients/document_embeddings_client.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/clients/graph_embeddings_client.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/clients/row_embeddings_client.py
RENAMED
|
File without changes
|
{trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/clients/triples_query_client.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/messaging/translators/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/messaging/translators/collection.py
RENAMED
|
File without changes
|
{trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/messaging/translators/config.py
RENAMED
|
File without changes
|
{trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/messaging/translators/diagnosis.py
RENAMED
|
File without changes
|
|
File without changes
|
{trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/messaging/translators/embeddings.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/messaging/translators/knowledge.py
RENAMED
|
File without changes
|
{trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/messaging/translators/library.py
RENAMED
|
File without changes
|
{trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/messaging/translators/metadata.py
RENAMED
|
File without changes
|
{trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/messaging/translators/nlp_query.py
RENAMED
|
File without changes
|
{trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/messaging/translators/primitives.py
RENAMED
|
File without changes
|
{trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/messaging/translators/prompt.py
RENAMED
|
File without changes
|
{trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/messaging/translators/retrieval.py
RENAMED
|
File without changes
|
{trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/messaging/translators/rows_query.py
RENAMED
|
File without changes
|
{trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/messaging/translators/sparql_query.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/messaging/translators/triples.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/schema/services/sparql_query.py
RENAMED
|
File without changes
|
|
File without changes
|
{trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/schema/services/structured_query.py
RENAMED
|
File without changes
|
{trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/schema/services/tool_service.py
RENAMED
|
File without changes
|
|
File without changes
|
{trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph_base.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|