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.
Files changed (185) hide show
  1. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/PKG-INFO +1 -1
  2. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/consumer.py +16 -10
  3. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/pubsub.py +10 -0
  4. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/pulsar_backend.py +125 -11
  5. trustgraph_base-2.4.30/trustgraph/base_version.py +1 -0
  6. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph_base.egg-info/PKG-INFO +1 -1
  7. trustgraph_base-2.4.28/trustgraph/base_version.py +0 -1
  8. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/README.md +0 -0
  9. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/pyproject.toml +0 -0
  10. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/setup.cfg +0 -0
  11. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/api/__init__.py +0 -0
  12. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/api/api.py +0 -0
  13. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/api/async_bulk_client.py +0 -0
  14. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/api/async_flow.py +0 -0
  15. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/api/async_metrics.py +0 -0
  16. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/api/async_socket_client.py +0 -0
  17. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/api/bulk_client.py +0 -0
  18. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/api/collection.py +0 -0
  19. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/api/config.py +0 -0
  20. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/api/exceptions.py +0 -0
  21. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/api/explainability.py +0 -0
  22. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/api/flow.py +0 -0
  23. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/api/knowledge.py +0 -0
  24. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/api/library.py +0 -0
  25. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/api/metrics.py +0 -0
  26. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/api/socket_client.py +0 -0
  27. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/api/types.py +0 -0
  28. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/__init__.py +0 -0
  29. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/agent_client.py +0 -0
  30. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/agent_service.py +0 -0
  31. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/async_processor.py +0 -0
  32. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/backend.py +0 -0
  33. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/cassandra_config.py +0 -0
  34. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/chunking_service.py +0 -0
  35. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/collection_config_handler.py +0 -0
  36. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/config_client.py +0 -0
  37. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/consumer_spec.py +0 -0
  38. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/document_embeddings_client.py +0 -0
  39. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/document_embeddings_query_service.py +0 -0
  40. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/document_embeddings_store_service.py +0 -0
  41. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/dynamic_tool_service.py +0 -0
  42. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/embeddings_client.py +0 -0
  43. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/embeddings_service.py +0 -0
  44. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/flow.py +0 -0
  45. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/flow_processor.py +0 -0
  46. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/graph_embeddings_client.py +0 -0
  47. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/graph_embeddings_query_service.py +0 -0
  48. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/graph_embeddings_store_service.py +0 -0
  49. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/graph_rag_client.py +0 -0
  50. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/iam_client.py +0 -0
  51. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/kafka_backend.py +0 -0
  52. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/librarian_client.py +0 -0
  53. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/librarian_spec.py +0 -0
  54. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/llm_service.py +0 -0
  55. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/logging.py +0 -0
  56. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/metrics.py +0 -0
  57. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/parameter_spec.py +0 -0
  58. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/processor_group.py +0 -0
  59. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/producer.py +0 -0
  60. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/producer_spec.py +0 -0
  61. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/prompt_client.py +0 -0
  62. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/publisher.py +0 -0
  63. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/rabbitmq_backend.py +0 -0
  64. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/request_response_spec.py +0 -0
  65. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/row_embeddings_query_client.py +0 -0
  66. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/serialization.py +0 -0
  67. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/spec.py +0 -0
  68. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/structured_query_client.py +0 -0
  69. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/subscriber.py +0 -0
  70. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/subscriber_spec.py +0 -0
  71. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/text_completion_client.py +0 -0
  72. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/tool_client.py +0 -0
  73. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/tool_service.py +0 -0
  74. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/tool_service_client.py +0 -0
  75. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/triples_client.py +0 -0
  76. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/triples_query_service.py +0 -0
  77. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/triples_store_service.py +0 -0
  78. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/base/workspace_processor.py +0 -0
  79. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/clients/__init__.py +0 -0
  80. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/clients/agent_client.py +0 -0
  81. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/clients/base.py +0 -0
  82. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/clients/config_client.py +0 -0
  83. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/clients/document_embeddings_client.py +0 -0
  84. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/clients/document_rag_client.py +0 -0
  85. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/clients/embeddings_client.py +0 -0
  86. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/clients/graph_embeddings_client.py +0 -0
  87. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/clients/graph_rag_client.py +0 -0
  88. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/clients/llm_client.py +0 -0
  89. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/clients/prompt_client.py +0 -0
  90. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/clients/row_embeddings_client.py +0 -0
  91. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/clients/triples_query_client.py +0 -0
  92. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/exceptions.py +0 -0
  93. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/i18n/__init__.py +0 -0
  94. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/i18n/packs/__init__.py +0 -0
  95. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/i18n/packs/ar.json +0 -0
  96. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/i18n/packs/en.json +0 -0
  97. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/i18n/packs/es.json +0 -0
  98. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/i18n/packs/he.json +0 -0
  99. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/i18n/packs/hi.json +0 -0
  100. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/i18n/packs/pt.json +0 -0
  101. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/i18n/packs/ru.json +0 -0
  102. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/i18n/packs/sw.json +0 -0
  103. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/i18n/packs/tr.json +0 -0
  104. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/i18n/packs/zh-cn.json +0 -0
  105. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/knowledge/__init__.py +0 -0
  106. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/knowledge/defs.py +0 -0
  107. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/knowledge/document.py +0 -0
  108. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/knowledge/identifier.py +0 -0
  109. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/knowledge/organization.py +0 -0
  110. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/knowledge/publication.py +0 -0
  111. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/log_level.py +0 -0
  112. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/messaging/__init__.py +0 -0
  113. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/messaging/registry.py +0 -0
  114. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/messaging/translators/__init__.py +0 -0
  115. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/messaging/translators/agent.py +0 -0
  116. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/messaging/translators/base.py +0 -0
  117. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/messaging/translators/collection.py +0 -0
  118. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/messaging/translators/config.py +0 -0
  119. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/messaging/translators/diagnosis.py +0 -0
  120. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/messaging/translators/document_loading.py +0 -0
  121. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/messaging/translators/embeddings.py +0 -0
  122. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/messaging/translators/embeddings_query.py +0 -0
  123. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/messaging/translators/flow.py +0 -0
  124. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/messaging/translators/iam.py +0 -0
  125. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/messaging/translators/knowledge.py +0 -0
  126. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/messaging/translators/library.py +0 -0
  127. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/messaging/translators/metadata.py +0 -0
  128. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/messaging/translators/nlp_query.py +0 -0
  129. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/messaging/translators/primitives.py +0 -0
  130. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/messaging/translators/prompt.py +0 -0
  131. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/messaging/translators/retrieval.py +0 -0
  132. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/messaging/translators/rows_query.py +0 -0
  133. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/messaging/translators/sparql_query.py +0 -0
  134. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/messaging/translators/structured_query.py +0 -0
  135. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/messaging/translators/text_completion.py +0 -0
  136. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/messaging/translators/tool.py +0 -0
  137. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/messaging/translators/triples.py +0 -0
  138. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/objects/__init__.py +0 -0
  139. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/objects/field.py +0 -0
  140. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/objects/object.py +0 -0
  141. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/provenance/__init__.py +0 -0
  142. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/provenance/agent.py +0 -0
  143. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/provenance/namespaces.py +0 -0
  144. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/provenance/triples.py +0 -0
  145. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/provenance/uris.py +0 -0
  146. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/provenance/vocabulary.py +0 -0
  147. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/rdf.py +0 -0
  148. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/schema/__init__.py +0 -0
  149. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/schema/core/__init__.py +0 -0
  150. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/schema/core/metadata.py +0 -0
  151. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/schema/core/primitives.py +0 -0
  152. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/schema/core/topic.py +0 -0
  153. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/schema/knowledge/__init__.py +0 -0
  154. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/schema/knowledge/document.py +0 -0
  155. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/schema/knowledge/embeddings.py +0 -0
  156. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/schema/knowledge/graph.py +0 -0
  157. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/schema/knowledge/knowledge.py +0 -0
  158. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/schema/knowledge/nlp.py +0 -0
  159. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/schema/knowledge/object.py +0 -0
  160. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/schema/knowledge/rows.py +0 -0
  161. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/schema/knowledge/structured.py +0 -0
  162. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/schema/services/__init__.py +0 -0
  163. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/schema/services/agent.py +0 -0
  164. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/schema/services/collection.py +0 -0
  165. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/schema/services/config.py +0 -0
  166. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/schema/services/diagnosis.py +0 -0
  167. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/schema/services/flow.py +0 -0
  168. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/schema/services/iam.py +0 -0
  169. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/schema/services/library.py +0 -0
  170. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/schema/services/llm.py +0 -0
  171. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/schema/services/lookup.py +0 -0
  172. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/schema/services/nlp_query.py +0 -0
  173. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/schema/services/prompt.py +0 -0
  174. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/schema/services/query.py +0 -0
  175. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/schema/services/retrieval.py +0 -0
  176. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/schema/services/rows_query.py +0 -0
  177. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/schema/services/sparql_query.py +0 -0
  178. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/schema/services/storage.py +0 -0
  179. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/schema/services/structured_query.py +0 -0
  180. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph/schema/services/tool_service.py +0 -0
  181. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph_base.egg-info/SOURCES.txt +0 -0
  182. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph_base.egg-info/dependency_links.txt +0 -0
  183. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph_base.egg-info/entry_points.txt +0 -0
  184. {trustgraph_base-2.4.28 → trustgraph_base-2.4.30}/trustgraph_base.egg-info/requires.txt +0 -0
  185. {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.28
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
- self.consumer.unsubscribe()
80
- self.consumer.close()
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
- pass
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
- pass
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__(self, host: str, api_key: str = None, listener: str = None):
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
- """No-op — to be replaced with admin REST API calls.
280
- TODO: Delete persistent topic via admin API."""
281
- pass
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
- """Returns True Pulsar auto-creates on subscribe.
285
- TODO: Use admin REST API for actual existence check."""
286
- return True
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.28
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"