trustgraph-base 2.3.10__tar.gz → 2.3.12__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 (178) hide show
  1. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/PKG-INFO +2 -1
  2. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/pyproject.toml +2 -1
  3. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/base/logging.py +76 -17
  4. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/base/processor_group.py +8 -1
  5. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/base/rabbitmq_backend.py +27 -10
  6. trustgraph_base-2.3.12/trustgraph/base_version.py +1 -0
  7. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph_base.egg-info/PKG-INFO +2 -1
  8. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph_base.egg-info/requires.txt +1 -0
  9. trustgraph_base-2.3.10/trustgraph/base_version.py +0 -1
  10. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/README.md +0 -0
  11. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/setup.cfg +0 -0
  12. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/api/__init__.py +0 -0
  13. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/api/api.py +0 -0
  14. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/api/async_bulk_client.py +0 -0
  15. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/api/async_flow.py +0 -0
  16. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/api/async_metrics.py +0 -0
  17. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/api/async_socket_client.py +0 -0
  18. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/api/bulk_client.py +0 -0
  19. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/api/collection.py +0 -0
  20. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/api/config.py +0 -0
  21. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/api/exceptions.py +0 -0
  22. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/api/explainability.py +0 -0
  23. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/api/flow.py +0 -0
  24. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/api/knowledge.py +0 -0
  25. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/api/library.py +0 -0
  26. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/api/metrics.py +0 -0
  27. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/api/socket_client.py +0 -0
  28. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/api/types.py +0 -0
  29. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/base/__init__.py +0 -0
  30. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/base/agent_client.py +0 -0
  31. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/base/agent_service.py +0 -0
  32. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/base/async_processor.py +0 -0
  33. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/base/backend.py +0 -0
  34. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/base/cassandra_config.py +0 -0
  35. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/base/chunking_service.py +0 -0
  36. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/base/collection_config_handler.py +0 -0
  37. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/base/consumer.py +0 -0
  38. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/base/consumer_spec.py +0 -0
  39. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/base/document_embeddings_client.py +0 -0
  40. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/base/document_embeddings_query_service.py +0 -0
  41. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/base/document_embeddings_store_service.py +0 -0
  42. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/base/dynamic_tool_service.py +0 -0
  43. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/base/embeddings_client.py +0 -0
  44. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/base/embeddings_service.py +0 -0
  45. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/base/flow.py +0 -0
  46. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/base/flow_processor.py +0 -0
  47. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/base/graph_embeddings_client.py +0 -0
  48. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/base/graph_embeddings_query_service.py +0 -0
  49. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/base/graph_embeddings_store_service.py +0 -0
  50. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/base/graph_rag_client.py +0 -0
  51. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/base/librarian_client.py +0 -0
  52. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/base/llm_service.py +0 -0
  53. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/base/metrics.py +0 -0
  54. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/base/parameter_spec.py +0 -0
  55. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/base/producer.py +0 -0
  56. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/base/producer_spec.py +0 -0
  57. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/base/prompt_client.py +0 -0
  58. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/base/publisher.py +0 -0
  59. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/base/pubsub.py +0 -0
  60. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/base/pulsar_backend.py +0 -0
  61. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/base/request_response_spec.py +0 -0
  62. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/base/row_embeddings_query_client.py +0 -0
  63. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/base/serialization.py +0 -0
  64. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/base/spec.py +0 -0
  65. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/base/structured_query_client.py +0 -0
  66. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/base/subscriber.py +0 -0
  67. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/base/subscriber_spec.py +0 -0
  68. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/base/text_completion_client.py +0 -0
  69. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/base/tool_client.py +0 -0
  70. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/base/tool_service.py +0 -0
  71. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/base/tool_service_client.py +0 -0
  72. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/base/triples_client.py +0 -0
  73. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/base/triples_query_service.py +0 -0
  74. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/base/triples_store_service.py +0 -0
  75. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/clients/__init__.py +0 -0
  76. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/clients/agent_client.py +0 -0
  77. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/clients/base.py +0 -0
  78. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/clients/config_client.py +0 -0
  79. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/clients/document_embeddings_client.py +0 -0
  80. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/clients/document_rag_client.py +0 -0
  81. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/clients/embeddings_client.py +0 -0
  82. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/clients/graph_embeddings_client.py +0 -0
  83. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/clients/graph_rag_client.py +0 -0
  84. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/clients/llm_client.py +0 -0
  85. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/clients/prompt_client.py +0 -0
  86. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/clients/row_embeddings_client.py +0 -0
  87. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/clients/triples_query_client.py +0 -0
  88. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/exceptions.py +0 -0
  89. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/i18n/__init__.py +0 -0
  90. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/i18n/packs/__init__.py +0 -0
  91. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/i18n/packs/ar.json +0 -0
  92. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/i18n/packs/en.json +0 -0
  93. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/i18n/packs/es.json +0 -0
  94. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/i18n/packs/he.json +0 -0
  95. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/i18n/packs/hi.json +0 -0
  96. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/i18n/packs/pt.json +0 -0
  97. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/i18n/packs/ru.json +0 -0
  98. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/i18n/packs/sw.json +0 -0
  99. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/i18n/packs/tr.json +0 -0
  100. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/i18n/packs/zh-cn.json +0 -0
  101. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/knowledge/__init__.py +0 -0
  102. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/knowledge/defs.py +0 -0
  103. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/knowledge/document.py +0 -0
  104. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/knowledge/identifier.py +0 -0
  105. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/knowledge/organization.py +0 -0
  106. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/knowledge/publication.py +0 -0
  107. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/log_level.py +0 -0
  108. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/messaging/__init__.py +0 -0
  109. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/messaging/registry.py +0 -0
  110. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/messaging/translators/__init__.py +0 -0
  111. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/messaging/translators/agent.py +0 -0
  112. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/messaging/translators/base.py +0 -0
  113. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/messaging/translators/collection.py +0 -0
  114. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/messaging/translators/config.py +0 -0
  115. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/messaging/translators/diagnosis.py +0 -0
  116. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/messaging/translators/document_loading.py +0 -0
  117. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/messaging/translators/embeddings.py +0 -0
  118. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/messaging/translators/embeddings_query.py +0 -0
  119. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/messaging/translators/flow.py +0 -0
  120. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/messaging/translators/knowledge.py +0 -0
  121. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/messaging/translators/library.py +0 -0
  122. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/messaging/translators/metadata.py +0 -0
  123. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/messaging/translators/nlp_query.py +0 -0
  124. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/messaging/translators/primitives.py +0 -0
  125. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/messaging/translators/prompt.py +0 -0
  126. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/messaging/translators/retrieval.py +0 -0
  127. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/messaging/translators/rows_query.py +0 -0
  128. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/messaging/translators/sparql_query.py +0 -0
  129. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/messaging/translators/structured_query.py +0 -0
  130. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/messaging/translators/text_completion.py +0 -0
  131. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/messaging/translators/tool.py +0 -0
  132. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/messaging/translators/triples.py +0 -0
  133. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/objects/__init__.py +0 -0
  134. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/objects/field.py +0 -0
  135. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/objects/object.py +0 -0
  136. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/provenance/__init__.py +0 -0
  137. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/provenance/agent.py +0 -0
  138. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/provenance/namespaces.py +0 -0
  139. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/provenance/triples.py +0 -0
  140. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/provenance/uris.py +0 -0
  141. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/provenance/vocabulary.py +0 -0
  142. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/rdf.py +0 -0
  143. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/schema/__init__.py +0 -0
  144. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/schema/core/__init__.py +0 -0
  145. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/schema/core/metadata.py +0 -0
  146. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/schema/core/primitives.py +0 -0
  147. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/schema/core/topic.py +0 -0
  148. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/schema/knowledge/__init__.py +0 -0
  149. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/schema/knowledge/document.py +0 -0
  150. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/schema/knowledge/embeddings.py +0 -0
  151. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/schema/knowledge/graph.py +0 -0
  152. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/schema/knowledge/knowledge.py +0 -0
  153. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/schema/knowledge/nlp.py +0 -0
  154. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/schema/knowledge/object.py +0 -0
  155. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/schema/knowledge/rows.py +0 -0
  156. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/schema/knowledge/structured.py +0 -0
  157. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/schema/services/__init__.py +0 -0
  158. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/schema/services/agent.py +0 -0
  159. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/schema/services/collection.py +0 -0
  160. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/schema/services/config.py +0 -0
  161. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/schema/services/diagnosis.py +0 -0
  162. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/schema/services/flow.py +0 -0
  163. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/schema/services/library.py +0 -0
  164. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/schema/services/llm.py +0 -0
  165. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/schema/services/lookup.py +0 -0
  166. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/schema/services/nlp_query.py +0 -0
  167. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/schema/services/prompt.py +0 -0
  168. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/schema/services/query.py +0 -0
  169. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/schema/services/retrieval.py +0 -0
  170. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/schema/services/rows_query.py +0 -0
  171. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/schema/services/sparql_query.py +0 -0
  172. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/schema/services/storage.py +0 -0
  173. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/schema/services/structured_query.py +0 -0
  174. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph/schema/services/tool_service.py +0 -0
  175. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph_base.egg-info/SOURCES.txt +0 -0
  176. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph_base.egg-info/dependency_links.txt +0 -0
  177. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/trustgraph_base.egg-info/entry_points.txt +0 -0
  178. {trustgraph_base-2.3.10 → trustgraph_base-2.3.12}/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.3.10
3
+ Version: 2.3.12
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
@@ -13,5 +13,6 @@ Requires-Dist: prometheus-client
13
13
  Requires-Dist: requests
14
14
  Requires-Dist: python-logging-loki
15
15
  Requires-Dist: pika
16
+ Requires-Dist: pyyaml
16
17
 
17
18
  See https://trustgraph.ai/
@@ -15,6 +15,7 @@ dependencies = [
15
15
  "requests",
16
16
  "python-logging-loki",
17
17
  "pika",
18
+ "pyyaml",
18
19
  ]
19
20
  classifiers = [
20
21
  "Programming Language :: Python :: 3",
@@ -34,4 +35,4 @@ include = ["trustgraph*"]
34
35
  "trustgraph.i18n.packs" = ["*.json"]
35
36
 
36
37
  [tool.setuptools.dynamic]
37
- version = {attr = "trustgraph.base_version.__version__"}
38
+ version = {attr = "trustgraph.base_version.__version__"}
@@ -8,12 +8,51 @@ ensuring consistent log formats, levels, and command-line arguments.
8
8
  Supports dual output to console and Loki for centralized log aggregation.
9
9
  """
10
10
 
11
+ import contextvars
11
12
  import logging
12
13
  import logging.handlers
13
14
  from queue import Queue
14
15
  import os
15
16
 
16
17
 
18
+ # The current processor id for this task context. Read by
19
+ # _ProcessorIdFilter to stamp every LogRecord with its owning
20
+ # processor, and read by logging_loki's emitter via record.tags
21
+ # to label log lines in Loki. ContextVar so asyncio subtasks
22
+ # inherit their parent supervisor's processor id automatically.
23
+ current_processor_id = contextvars.ContextVar(
24
+ "current_processor_id", default="unknown"
25
+ )
26
+
27
+
28
+ def set_processor_id(pid):
29
+ """Set the processor id for the current task context.
30
+
31
+ All subsequent log records emitted from this task — and any
32
+ asyncio tasks spawned from it — will be tagged with this id
33
+ in the console format and in Loki labels.
34
+ """
35
+ current_processor_id.set(pid)
36
+
37
+
38
+ class _ProcessorIdFilter(logging.Filter):
39
+ """Stamps every LogRecord with processor_id from the contextvar.
40
+
41
+ Attaches two fields to each record:
42
+ record.processor_id — used by the console format string
43
+ record.tags — merged into Loki labels by logging_loki's
44
+ emitter (it reads record.tags and combines
45
+ with the handler's static tags)
46
+ """
47
+
48
+ def filter(self, record):
49
+ pid = current_processor_id.get()
50
+ record.processor_id = pid
51
+ existing = getattr(record, "tags", None) or {}
52
+ record.tags = {**existing, "processor": pid}
53
+ return True
54
+
55
+
17
56
  def add_logging_args(parser):
18
57
  """
19
58
  Add standard logging arguments to an argument parser.
@@ -87,12 +126,15 @@ def setup_logging(args):
87
126
  loki_url = args.get('loki_url', 'http://loki:3100/loki/api/v1/push')
88
127
  loki_username = args.get('loki_username')
89
128
  loki_password = args.get('loki_password')
90
- processor_id = args.get('id') # Processor identity (e.g., "config-svc", "text-completion")
91
129
 
92
130
  try:
93
131
  from logging_loki import LokiHandler
94
132
 
95
- # Create Loki handler with optional authentication and processor label
133
+ # Create Loki handler with optional authentication. The
134
+ # processor label is NOT baked in here — it's stamped onto
135
+ # each record by _ProcessorIdFilter reading the task-local
136
+ # contextvar, and logging_loki's emitter reads record.tags
137
+ # to build per-record Loki labels.
96
138
  loki_handler_kwargs = {
97
139
  'url': loki_url,
98
140
  'version': "1",
@@ -101,10 +143,6 @@ def setup_logging(args):
101
143
  if loki_username and loki_password:
102
144
  loki_handler_kwargs['auth'] = (loki_username, loki_password)
103
145
 
104
- # Add processor label if available (for consistency with Prometheus metrics)
105
- if processor_id:
106
- loki_handler_kwargs['tags'] = {'processor': processor_id}
107
-
108
146
  loki_handler = LokiHandler(**loki_handler_kwargs)
109
147
 
110
148
  # Wrap in QueueHandler for non-blocking operation
@@ -133,23 +171,44 @@ def setup_logging(args):
133
171
  print(f"WARNING: Failed to setup Loki logging: {e}")
134
172
  print("Continuing with console-only logging")
135
173
 
136
- # Get processor ID for log formatting (use 'unknown' if not available)
137
- processor_id = args.get('id', 'unknown')
138
-
139
- # Configure logging with all handlers
140
- # Use processor ID as the primary identifier in logs
174
+ # Configure logging with all handlers. The processor id comes
175
+ # from _ProcessorIdFilter (via contextvar) and is injected into
176
+ # each record as record.processor_id. The format string reads
177
+ # that attribute on every emit.
141
178
  logging.basicConfig(
142
179
  level=getattr(logging, log_level.upper()),
143
- format=f'%(asctime)s - {processor_id} - %(levelname)s - %(message)s',
180
+ format='%(asctime)s - %(processor_id)s - %(levelname)s - %(message)s',
144
181
  handlers=handlers,
145
182
  force=True # Force reconfiguration if already configured
146
183
  )
147
184
 
148
- # Prevent recursive logging from Loki's HTTP client
149
- if loki_enabled and queue_listener:
150
- # Disable urllib3 logging to prevent infinite loop
151
- logging.getLogger('urllib3').setLevel(logging.WARNING)
152
- logging.getLogger('urllib3.connectionpool').setLevel(logging.WARNING)
185
+ # Attach the processor-id filter to every handler so all records
186
+ # passing through any sink get stamped (console, queue→loki,
187
+ # future handlers). Filters on handlers run regardless of which
188
+ # logger originated the record, so logs from pika, cassandra,
189
+ # processor code, etc. all pass through it.
190
+ processor_filter = _ProcessorIdFilter()
191
+ for h in handlers:
192
+ h.addFilter(processor_filter)
193
+
194
+ # Seed the contextvar from --id if one was supplied. In group
195
+ # mode --id isn't present; the processor_group supervisor sets
196
+ # it per task. In standalone mode AsyncProcessor.launch provides
197
+ # it via argparse default.
198
+ if args.get('id'):
199
+ set_processor_id(args['id'])
200
+
201
+ # Silence noisy third-party library loggers. These emit INFO-level
202
+ # chatter (connection churn, channel open/close, driver warnings) that
203
+ # drowns the useful signal and can't be attributed to a specific
204
+ # processor anyway. WARNING and above still propagate.
205
+ for noisy in (
206
+ 'pika',
207
+ 'cassandra',
208
+ 'urllib3',
209
+ 'urllib3.connectionpool',
210
+ ):
211
+ logging.getLogger(noisy).setLevel(logging.WARNING)
153
212
 
154
213
  logger = logging.getLogger(__name__)
155
214
  logger.info(f"Logging configured with level: {log_level}")
@@ -29,7 +29,7 @@ import time
29
29
 
30
30
  from prometheus_client import start_http_server
31
31
 
32
- from . logging import add_logging_args, setup_logging
32
+ from . logging import add_logging_args, setup_logging, set_processor_id
33
33
 
34
34
  logger = logging.getLogger(__name__)
35
35
 
@@ -64,6 +64,13 @@ async def _supervise(entry):
64
64
  pid = entry["params"]["id"]
65
65
  class_path = entry["class"]
66
66
 
67
+ # Stamp the contextvar for this supervisor task. Every log
68
+ # record emitted from this task — and from any inner TaskGroup
69
+ # child created by the processor — inherits this id via
70
+ # contextvar propagation. Siblings in the outer group set
71
+ # their own id in their own task context and do not interfere.
72
+ set_processor_id(pid)
73
+
67
74
  while True:
68
75
 
69
76
  try:
@@ -227,15 +227,30 @@ class RabbitMQBackendConsumer:
227
227
  self._connect()
228
228
 
229
229
  def receive(self, timeout_millis: int = 2000) -> Message:
230
- """Receive a message. Raises TimeoutError if none available."""
230
+ """Receive a message. Raises TimeoutError if none available.
231
+
232
+ Loop ordering matters: check _incoming at the TOP of each
233
+ iteration, not as the loop condition. process_data_events
234
+ may dispatch a message via the _on_message callback during
235
+ the pump; we must re-check _incoming on the next iteration
236
+ before giving up on the deadline. The previous control
237
+ flow (`while deadline: check; pump`) could lose a wakeup if
238
+ the pump consumed the remainder of the window — the
239
+ `while` check would fail before `_incoming` was re-read,
240
+ leaving a just-dispatched message stranded until the next
241
+ receive() call one full poll cycle later.
242
+ """
231
243
  if not self._is_alive():
232
244
  self._connect()
233
245
 
234
246
  timeout_seconds = timeout_millis / 1000.0
235
247
  deadline = time.monotonic() + timeout_seconds
236
248
 
237
- while time.monotonic() < deadline:
238
- # Check if a message was already delivered
249
+ while True:
250
+ # Check if a message has been dispatched to our queue.
251
+ # This catches both (a) messages dispatched before this
252
+ # receive() was called and (b) messages dispatched
253
+ # during the previous iteration's process_data_events.
239
254
  try:
240
255
  method, properties, body = self._incoming.get_nowait()
241
256
  return RabbitMQMessage(
@@ -244,14 +259,16 @@ class RabbitMQBackendConsumer:
244
259
  except queue.Empty:
245
260
  pass
246
261
 
247
- # Drive pika's I/O — delivers messages and processes heartbeats
248
262
  remaining = deadline - time.monotonic()
249
- if remaining > 0:
250
- self._connection.process_data_events(
251
- time_limit=min(0.1, remaining),
252
- )
253
-
254
- raise TimeoutError("No message received within timeout")
263
+ if remaining <= 0:
264
+ raise TimeoutError("No message received within timeout")
265
+
266
+ # Drive pika's I/O. Any messages delivered during this
267
+ # call land in _incoming via _on_message; the next
268
+ # iteration of this loop catches them at the top.
269
+ self._connection.process_data_events(
270
+ time_limit=min(0.1, remaining),
271
+ )
255
272
 
256
273
  def acknowledge(self, message: Message) -> None:
257
274
  if isinstance(message, RabbitMQMessage) and message._method:
@@ -0,0 +1 @@
1
+ __version__ = "2.3.12"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: trustgraph-base
3
- Version: 2.3.10
3
+ Version: 2.3.12
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
@@ -13,5 +13,6 @@ Requires-Dist: prometheus-client
13
13
  Requires-Dist: requests
14
14
  Requires-Dist: python-logging-loki
15
15
  Requires-Dist: pika
16
+ Requires-Dist: pyyaml
16
17
 
17
18
  See https://trustgraph.ai/
@@ -3,3 +3,4 @@ prometheus-client
3
3
  requests
4
4
  python-logging-loki
5
5
  pika
6
+ pyyaml
@@ -1 +0,0 @@
1
- __version__ = "2.3.10"