isage-middleware 0.1.4__py3-none-any.whl → 0.1.5.1__py3-none-any.whl

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.

Potentially problematic release.


This version of isage-middleware might be problematic. Click here for more details.

Files changed (666) hide show
  1. isage_middleware-0.1.5.1.dist-info/METADATA +241 -0
  2. isage_middleware-0.1.5.1.dist-info/RECORD +530 -0
  3. sage/__init__.py +3 -36
  4. sage/__pycache__/__init__.cpython-311.opt-2.pyc +0 -0
  5. sage/__pycache__/__init__.cpython-311.pyc +0 -0
  6. sage/middleware/__init__.py +8 -33
  7. sage/middleware/__pycache__/__init__.cpython-311.opt-2.pyc +0 -0
  8. sage/middleware/__pycache__/__init__.cpython-311.pyc +0 -0
  9. sage/middleware/__pycache__/_version.cpython-311.opt-2.pyc +0 -0
  10. sage/middleware/__pycache__/_version.cpython-311.pyc +0 -0
  11. sage/middleware/_version.py +6 -0
  12. sage/middleware/components/__pycache__/extensions_compat.cpython-311.opt-2.pyc +0 -0
  13. sage/middleware/components/__pycache__/extensions_compat.cpython-311.pyc +0 -0
  14. sage/middleware/components/cmake/pybind11_dependency.cmake +34 -0
  15. sage/middleware/components/cmake/sage_shared_dependencies.cmake +64 -0
  16. sage/middleware/components/extensions_compat.py +102 -0
  17. sage/middleware/components/neuromem/__init__.py +12 -32
  18. sage/middleware/components/neuromem/__pycache__/__init__.cpython-311.opt-2.pyc +0 -0
  19. sage/middleware/components/neuromem/__pycache__/__init__.cpython-311.pyc +0 -0
  20. sage/middleware/components/neuromem/__pycache__/memory_manager.cpython-311.opt-2.pyc +0 -0
  21. sage/middleware/components/neuromem/__pycache__/memory_manager.cpython-311.pyc +0 -0
  22. sage/middleware/components/neuromem/memory_collection/__init__.py +8 -33
  23. sage/middleware/components/neuromem/memory_collection/__pycache__/__init__.cpython-311.opt-2.pyc +0 -0
  24. sage/middleware/components/neuromem/memory_collection/__pycache__/__init__.cpython-311.pyc +0 -0
  25. sage/middleware/components/neuromem/memory_collection/__pycache__/base_collection.cpython-311.opt-2.pyc +0 -0
  26. sage/middleware/components/neuromem/memory_collection/__pycache__/base_collection.cpython-311.pyc +0 -0
  27. sage/middleware/components/neuromem/memory_collection/__pycache__/graph_collection.cpython-311.opt-2.pyc +0 -0
  28. sage/middleware/components/neuromem/memory_collection/__pycache__/graph_collection.cpython-311.pyc +0 -0
  29. sage/middleware/components/neuromem/memory_collection/__pycache__/kv_collection.cpython-311.opt-2.pyc +0 -0
  30. sage/middleware/components/neuromem/memory_collection/__pycache__/kv_collection.cpython-311.pyc +0 -0
  31. sage/middleware/components/neuromem/memory_collection/__pycache__/vdb_collection.cpython-311.opt-2.pyc +0 -0
  32. sage/middleware/components/neuromem/memory_collection/__pycache__/vdb_collection.cpython-311.pyc +0 -0
  33. sage/middleware/components/neuromem/memory_collection/base_collection.py +57 -26
  34. sage/middleware/components/neuromem/memory_collection/graph_collection.py +5 -4
  35. sage/middleware/components/neuromem/memory_collection/kv_collection.py +187 -159
  36. sage/middleware/components/neuromem/memory_collection/vdb_collection.py +699 -700
  37. sage/middleware/components/neuromem/memory_manager.py +144 -121
  38. sage/middleware/components/neuromem/micro_service/__init__.py +8 -33
  39. sage/middleware/components/neuromem/micro_service/__pycache__/__init__.cpython-311.opt-2.pyc +0 -0
  40. sage/middleware/components/neuromem/micro_service/__pycache__/__init__.cpython-311.pyc +0 -0
  41. sage/middleware/components/neuromem/micro_service/__pycache__/neuromem_vdb.cpython-311.opt-2.pyc +0 -0
  42. sage/middleware/components/neuromem/micro_service/__pycache__/neuromem_vdb.cpython-311.pyc +0 -0
  43. sage/middleware/components/neuromem/micro_service/__pycache__/neuromem_vdb_service.cpython-311.opt-2.pyc +0 -0
  44. sage/middleware/components/neuromem/micro_service/__pycache__/neuromem_vdb_service.cpython-311.pyc +0 -0
  45. sage/middleware/components/neuromem/micro_service/neuromem_vdb.py +100 -53
  46. sage/middleware/components/neuromem/micro_service/neuromem_vdb_service.py +52 -32
  47. sage/middleware/components/neuromem/search_engine/__init__.py +8 -33
  48. sage/middleware/components/neuromem/search_engine/__pycache__/__init__.cpython-311.opt-2.pyc +0 -0
  49. sage/middleware/components/neuromem/search_engine/__pycache__/__init__.cpython-311.pyc +0 -0
  50. sage/middleware/components/neuromem/search_engine/graph_index/__init__.py +8 -33
  51. sage/middleware/components/neuromem/search_engine/graph_index/__pycache__/__init__.cpython-311.opt-2.pyc +0 -0
  52. sage/middleware/components/neuromem/search_engine/graph_index/__pycache__/__init__.cpython-311.pyc +0 -0
  53. sage/middleware/components/neuromem/search_engine/graph_index/__pycache__/base_graph_index.cpython-311.opt-2.pyc +0 -0
  54. sage/middleware/components/neuromem/search_engine/graph_index/__pycache__/base_graph_index.cpython-311.pyc +0 -0
  55. sage/middleware/components/neuromem/search_engine/graph_index/base_graph_index.py +1 -0
  56. sage/middleware/components/neuromem/search_engine/hybrid_index/__init__.py +12 -0
  57. sage/middleware/components/neuromem/search_engine/hybrid_index/__pycache__/__init__.cpython-311.opt-2.pyc +0 -0
  58. sage/middleware/components/neuromem/search_engine/hybrid_index/__pycache__/__init__.cpython-311.pyc +0 -0
  59. sage/middleware/components/neuromem/search_engine/kv_index/__init__.py +133 -35
  60. sage/middleware/components/neuromem/search_engine/kv_index/__pycache__/__init__.cpython-311.opt-2.pyc +0 -0
  61. sage/middleware/components/neuromem/search_engine/kv_index/__pycache__/__init__.cpython-311.pyc +0 -0
  62. sage/middleware/components/neuromem/search_engine/kv_index/__pycache__/base_kv_index.cpython-311.opt-2.pyc +0 -0
  63. sage/middleware/components/neuromem/search_engine/kv_index/__pycache__/base_kv_index.cpython-311.pyc +0 -0
  64. sage/middleware/components/neuromem/search_engine/kv_index/__pycache__/bm25s_index.cpython-311.opt-2.pyc +0 -0
  65. sage/middleware/components/neuromem/search_engine/kv_index/__pycache__/bm25s_index.cpython-311.pyc +0 -0
  66. sage/middleware/components/neuromem/search_engine/kv_index/base_kv_index.py +3 -2
  67. sage/middleware/components/neuromem/search_engine/kv_index/bm25s_index.py +34 -35
  68. sage/middleware/components/neuromem/search_engine/vdb_index/__init__.py +82 -37
  69. sage/middleware/components/neuromem/search_engine/vdb_index/__pycache__/__init__.cpython-311.opt-2.pyc +0 -0
  70. sage/middleware/components/neuromem/search_engine/vdb_index/__pycache__/__init__.cpython-311.pyc +0 -0
  71. sage/middleware/components/neuromem/search_engine/vdb_index/__pycache__/base_vdb_index.cpython-311.opt-2.pyc +0 -0
  72. sage/middleware/components/neuromem/search_engine/vdb_index/__pycache__/base_vdb_index.cpython-311.pyc +0 -0
  73. sage/middleware/components/neuromem/search_engine/vdb_index/__pycache__/faiss_index.cpython-311.opt-2.pyc +0 -0
  74. sage/middleware/components/neuromem/search_engine/vdb_index/__pycache__/faiss_index.cpython-311.pyc +0 -0
  75. sage/middleware/components/neuromem/search_engine/vdb_index/base_vdb_index.py +8 -6
  76. sage/middleware/components/neuromem/search_engine/vdb_index/faiss_index.py +301 -151
  77. sage/middleware/components/neuromem/storage_engine/__init__.py +8 -33
  78. sage/middleware/components/neuromem/storage_engine/__pycache__/__init__.cpython-311.opt-2.pyc +0 -0
  79. sage/middleware/components/neuromem/storage_engine/__pycache__/__init__.cpython-311.pyc +0 -0
  80. sage/middleware/components/neuromem/storage_engine/__pycache__/metadata_storage.cpython-311.opt-2.pyc +0 -0
  81. sage/middleware/components/neuromem/storage_engine/__pycache__/metadata_storage.cpython-311.pyc +0 -0
  82. sage/middleware/components/neuromem/storage_engine/__pycache__/text_storage.cpython-311.opt-2.pyc +0 -0
  83. sage/middleware/components/neuromem/storage_engine/__pycache__/text_storage.cpython-311.pyc +0 -0
  84. sage/middleware/components/neuromem/storage_engine/__pycache__/vector_storage.cpython-311.opt-2.pyc +0 -0
  85. sage/middleware/components/neuromem/storage_engine/__pycache__/vector_storage.cpython-311.pyc +0 -0
  86. sage/middleware/components/neuromem/storage_engine/kv_backend/__init__.py +8 -33
  87. sage/middleware/components/neuromem/storage_engine/kv_backend/__pycache__/__init__.cpython-311.opt-2.pyc +0 -0
  88. sage/middleware/components/neuromem/storage_engine/kv_backend/__pycache__/__init__.cpython-311.pyc +0 -0
  89. sage/middleware/components/neuromem/storage_engine/kv_backend/__pycache__/base_kv_backend.cpython-311.opt-2.pyc +0 -0
  90. sage/middleware/components/neuromem/storage_engine/kv_backend/__pycache__/base_kv_backend.cpython-311.pyc +0 -0
  91. sage/middleware/components/neuromem/storage_engine/kv_backend/__pycache__/dict_kv_backend.cpython-311.opt-2.pyc +0 -0
  92. sage/middleware/components/neuromem/storage_engine/kv_backend/__pycache__/dict_kv_backend.cpython-311.pyc +0 -0
  93. sage/middleware/components/neuromem/storage_engine/kv_backend/base_kv_backend.py +5 -3
  94. sage/middleware/components/neuromem/storage_engine/kv_backend/dict_kv_backend.py +9 -5
  95. sage/middleware/components/neuromem/storage_engine/metadata_storage.py +22 -21
  96. sage/middleware/components/neuromem/storage_engine/text_storage.py +12 -7
  97. sage/middleware/components/neuromem/storage_engine/vector_storage.py +14 -9
  98. sage/middleware/components/neuromem/utils/__init__.py +8 -33
  99. sage/middleware/components/neuromem/utils/__pycache__/__init__.cpython-311.opt-2.pyc +0 -0
  100. sage/middleware/components/neuromem/utils/__pycache__/__init__.cpython-311.pyc +0 -0
  101. sage/middleware/components/neuromem/utils/__pycache__/path_utils.cpython-311.opt-2.pyc +0 -0
  102. sage/middleware/components/neuromem/utils/__pycache__/path_utils.cpython-311.pyc +0 -0
  103. sage/middleware/components/neuromem/utils/path_utils.py +2 -1
  104. sage/middleware/components/sage_db/__init__.py +8 -33
  105. sage/middleware/components/sage_db/__pycache__/__init__.cpython-311.opt-2.pyc +0 -0
  106. sage/middleware/components/sage_db/__pycache__/__init__.cpython-311.pyc +0 -0
  107. sage/middleware/components/sage_db/cmake/FindBLASLAPACK.cmake +125 -0
  108. sage/middleware/components/sage_db/cmake/gperftools.cmake +24 -0
  109. sage/middleware/components/sage_db/cmake/pybind11_dependency.cmake +27 -0
  110. sage/middleware/components/sage_db/examples/__pycache__/faiss_plugin_demo.cpython-311.opt-2.pyc +0 -0
  111. sage/middleware/components/sage_db/examples/__pycache__/faiss_plugin_demo.cpython-311.pyc +0 -0
  112. sage/middleware/components/sage_db/examples/__pycache__/quickstart.cpython-311.opt-2.pyc +0 -0
  113. sage/middleware/components/sage_db/examples/__pycache__/quickstart.cpython-311.pyc +0 -0
  114. sage/middleware/components/sage_db/examples/faiss_plugin_demo.py +134 -0
  115. sage/middleware/components/sage_db/examples/quickstart.py +160 -0
  116. sage/middleware/components/sage_db/python/__init__.py +8 -33
  117. sage/middleware/components/sage_db/python/__pycache__/__init__.cpython-311.opt-2.pyc +0 -0
  118. sage/middleware/components/sage_db/python/__pycache__/__init__.cpython-311.pyc +0 -0
  119. sage/middleware/components/sage_db/python/__pycache__/multimodal_sage_db.cpython-311.opt-2.pyc +0 -0
  120. sage/middleware/components/sage_db/python/__pycache__/multimodal_sage_db.cpython-311.pyc +0 -0
  121. sage/middleware/components/sage_db/python/__pycache__/sage_db.cpython-311.opt-2.pyc +0 -0
  122. sage/middleware/components/sage_db/python/__pycache__/sage_db.cpython-311.pyc +0 -0
  123. sage/middleware/components/sage_db/python/_sage_db.cpython-311-x86_64-linux-gnu.so +0 -0
  124. sage/middleware/components/sage_db/python/micro_service/__init__.py +8 -0
  125. sage/middleware/components/sage_db/python/micro_service/__pycache__/__init__.cpython-311.opt-2.pyc +0 -0
  126. sage/middleware/components/sage_db/python/micro_service/__pycache__/__init__.cpython-311.pyc +0 -0
  127. sage/middleware/components/sage_db/python/micro_service/__pycache__/sage_db_service.cpython-311.opt-2.pyc +0 -0
  128. sage/middleware/components/sage_db/python/micro_service/__pycache__/sage_db_service.cpython-311.pyc +0 -0
  129. sage/middleware/components/sage_db/python/micro_service/sage_db_service.py +84 -0
  130. sage/middleware/components/sage_db/python/multimodal_sage_db.py +398 -0
  131. sage/middleware/components/sage_db/python/sage_db.py +277 -37
  132. sage/middleware/components/sage_flow/__init__.py +6 -0
  133. sage/middleware/components/sage_flow/__pycache__/__init__.cpython-311.opt-2.pyc +0 -0
  134. sage/middleware/components/sage_flow/__pycache__/__init__.cpython-311.pyc +0 -0
  135. sage/middleware/components/sage_flow/build/_deps/argparse-src/__pycache__/conanfile.cpython-311.opt-2.pyc +0 -0
  136. sage/middleware/components/sage_flow/build/_deps/argparse-src/__pycache__/conanfile.cpython-311.pyc +0 -0
  137. sage/middleware/components/sage_flow/build/_deps/argparse-src/conanfile.py +10 -0
  138. sage/middleware/components/sage_flow/build/_deps/fmt-src/support/__pycache__/docopt.cpython-311.opt-2.pyc +0 -0
  139. sage/middleware/components/sage_flow/build/_deps/fmt-src/support/__pycache__/docopt.cpython-311.pyc +0 -0
  140. sage/middleware/components/sage_flow/build/_deps/fmt-src/support/__pycache__/manage.cpython-311.opt-2.pyc +0 -0
  141. sage/middleware/components/sage_flow/build/_deps/fmt-src/support/__pycache__/manage.cpython-311.pyc +0 -0
  142. sage/middleware/components/sage_flow/build/_deps/fmt-src/support/__pycache__/printable.cpython-311.opt-2.pyc +0 -0
  143. sage/middleware/components/sage_flow/build/_deps/fmt-src/support/__pycache__/printable.cpython-311.pyc +0 -0
  144. sage/middleware/components/sage_flow/build/_deps/fmt-src/support/docopt.py +581 -0
  145. sage/middleware/components/sage_flow/build/_deps/fmt-src/support/manage.py +218 -0
  146. sage/middleware/components/sage_flow/build/_deps/fmt-src/support/printable.py +201 -0
  147. sage/middleware/components/sage_flow/build/_deps/fmt-src/support/python/mkdocstrings_handlers/cxx/__init__.py +317 -0
  148. sage/middleware/components/sage_flow/build/_deps/fmt-src/support/python/mkdocstrings_handlers/cxx/__pycache__/__init__.cpython-311.opt-2.pyc +0 -0
  149. sage/middleware/components/sage_flow/build/_deps/fmt-src/support/python/mkdocstrings_handlers/cxx/__pycache__/__init__.cpython-311.pyc +0 -0
  150. sage/middleware/components/sage_flow/build/_deps/googletest-src/googlemock/test/__pycache__/gmock_leak_test.cpython-311.opt-2.pyc +0 -0
  151. sage/middleware/components/sage_flow/build/_deps/googletest-src/googlemock/test/__pycache__/gmock_leak_test.cpython-311.pyc +0 -0
  152. sage/middleware/components/sage_flow/build/_deps/googletest-src/googlemock/test/__pycache__/gmock_output_test.cpython-311.opt-2.pyc +0 -0
  153. sage/middleware/components/sage_flow/build/_deps/googletest-src/googlemock/test/__pycache__/gmock_output_test.cpython-311.pyc +0 -0
  154. sage/middleware/components/sage_flow/build/_deps/googletest-src/googlemock/test/__pycache__/gmock_test_utils.cpython-311.opt-2.pyc +0 -0
  155. sage/middleware/components/sage_flow/build/_deps/googletest-src/googlemock/test/__pycache__/gmock_test_utils.cpython-311.pyc +0 -0
  156. sage/middleware/components/sage_flow/build/_deps/googletest-src/googlemock/test/gmock_leak_test.py +113 -0
  157. sage/middleware/components/sage_flow/build/_deps/googletest-src/googlemock/test/gmock_output_test.py +190 -0
  158. sage/middleware/components/sage_flow/build/_deps/googletest-src/googlemock/test/gmock_test_utils.py +91 -0
  159. sage/middleware/components/sage_flow/build/_deps/googletest-src/googletest/test/__pycache__/googletest-break-on-failure-unittest.cpython-311.opt-2.pyc +0 -0
  160. sage/middleware/components/sage_flow/build/_deps/googletest-src/googletest/test/__pycache__/googletest-break-on-failure-unittest.cpython-311.pyc +0 -0
  161. sage/middleware/components/sage_flow/build/_deps/googletest-src/googletest/test/__pycache__/googletest-catch-exceptions-test.cpython-311.opt-2.pyc +0 -0
  162. sage/middleware/components/sage_flow/build/_deps/googletest-src/googletest/test/__pycache__/googletest-catch-exceptions-test.cpython-311.pyc +0 -0
  163. sage/middleware/components/sage_flow/build/_deps/googletest-src/googletest/test/__pycache__/googletest-color-test.cpython-311.opt-2.pyc +0 -0
  164. sage/middleware/components/sage_flow/build/_deps/googletest-src/googletest/test/__pycache__/googletest-color-test.cpython-311.pyc +0 -0
  165. sage/middleware/components/sage_flow/build/_deps/googletest-src/googletest/test/__pycache__/googletest-env-var-test.cpython-311.opt-2.pyc +0 -0
  166. sage/middleware/components/sage_flow/build/_deps/googletest-src/googletest/test/__pycache__/googletest-env-var-test.cpython-311.pyc +0 -0
  167. sage/middleware/components/sage_flow/build/_deps/googletest-src/googletest/test/__pycache__/googletest-failfast-unittest.cpython-311.opt-2.pyc +0 -0
  168. sage/middleware/components/sage_flow/build/_deps/googletest-src/googletest/test/__pycache__/googletest-failfast-unittest.cpython-311.pyc +0 -0
  169. sage/middleware/components/sage_flow/build/_deps/googletest-src/googletest/test/__pycache__/googletest-filter-unittest.cpython-311.opt-2.pyc +0 -0
  170. sage/middleware/components/sage_flow/build/_deps/googletest-src/googletest/test/__pycache__/googletest-filter-unittest.cpython-311.pyc +0 -0
  171. sage/middleware/components/sage_flow/build/_deps/googletest-src/googletest/test/__pycache__/googletest-global-environment-unittest.cpython-311.opt-2.pyc +0 -0
  172. sage/middleware/components/sage_flow/build/_deps/googletest-src/googletest/test/__pycache__/googletest-global-environment-unittest.cpython-311.pyc +0 -0
  173. sage/middleware/components/sage_flow/build/_deps/googletest-src/googletest/test/__pycache__/googletest-json-outfiles-test.cpython-311.opt-2.pyc +0 -0
  174. sage/middleware/components/sage_flow/build/_deps/googletest-src/googletest/test/__pycache__/googletest-json-outfiles-test.cpython-311.pyc +0 -0
  175. sage/middleware/components/sage_flow/build/_deps/googletest-src/googletest/test/__pycache__/googletest-json-output-unittest.cpython-311.opt-2.pyc +0 -0
  176. sage/middleware/components/sage_flow/build/_deps/googletest-src/googletest/test/__pycache__/googletest-json-output-unittest.cpython-311.pyc +0 -0
  177. sage/middleware/components/sage_flow/build/_deps/googletest-src/googletest/test/__pycache__/googletest-list-tests-unittest.cpython-311.opt-2.pyc +0 -0
  178. sage/middleware/components/sage_flow/build/_deps/googletest-src/googletest/test/__pycache__/googletest-list-tests-unittest.cpython-311.pyc +0 -0
  179. sage/middleware/components/sage_flow/build/_deps/googletest-src/googletest/test/__pycache__/googletest-output-test.cpython-311.opt-2.pyc +0 -0
  180. sage/middleware/components/sage_flow/build/_deps/googletest-src/googletest/test/__pycache__/googletest-output-test.cpython-311.pyc +0 -0
  181. sage/middleware/components/sage_flow/build/_deps/googletest-src/googletest/test/__pycache__/googletest-param-test-invalid-name1-test.cpython-311.opt-2.pyc +0 -0
  182. sage/middleware/components/sage_flow/build/_deps/googletest-src/googletest/test/__pycache__/googletest-param-test-invalid-name1-test.cpython-311.pyc +0 -0
  183. sage/middleware/components/sage_flow/build/_deps/googletest-src/googletest/test/__pycache__/googletest-param-test-invalid-name2-test.cpython-311.opt-2.pyc +0 -0
  184. sage/middleware/components/sage_flow/build/_deps/googletest-src/googletest/test/__pycache__/googletest-param-test-invalid-name2-test.cpython-311.pyc +0 -0
  185. sage/middleware/components/sage_flow/build/_deps/googletest-src/googletest/test/__pycache__/googletest-setuptestsuite-test.cpython-311.opt-2.pyc +0 -0
  186. sage/middleware/components/sage_flow/build/_deps/googletest-src/googletest/test/__pycache__/googletest-setuptestsuite-test.cpython-311.pyc +0 -0
  187. sage/middleware/components/sage_flow/build/_deps/googletest-src/googletest/test/__pycache__/googletest-shuffle-test.cpython-311.opt-2.pyc +0 -0
  188. sage/middleware/components/sage_flow/build/_deps/googletest-src/googletest/test/__pycache__/googletest-shuffle-test.cpython-311.pyc +0 -0
  189. sage/middleware/components/sage_flow/build/_deps/googletest-src/googletest/test/__pycache__/googletest-throw-on-failure-test.cpython-311.opt-2.pyc +0 -0
  190. sage/middleware/components/sage_flow/build/_deps/googletest-src/googletest/test/__pycache__/googletest-throw-on-failure-test.cpython-311.pyc +0 -0
  191. sage/middleware/components/sage_flow/build/_deps/googletest-src/googletest/test/__pycache__/googletest-uninitialized-test.cpython-311.opt-2.pyc +0 -0
  192. sage/middleware/components/sage_flow/build/_deps/googletest-src/googletest/test/__pycache__/googletest-uninitialized-test.cpython-311.pyc +0 -0
  193. sage/middleware/components/sage_flow/build/_deps/googletest-src/googletest/test/__pycache__/gtest_help_test.cpython-311.opt-2.pyc +0 -0
  194. sage/middleware/components/sage_flow/build/_deps/googletest-src/googletest/test/__pycache__/gtest_help_test.cpython-311.pyc +0 -0
  195. sage/middleware/components/sage_flow/build/_deps/googletest-src/googletest/test/__pycache__/gtest_json_test_utils.cpython-311.opt-2.pyc +0 -0
  196. sage/middleware/components/sage_flow/build/_deps/googletest-src/googletest/test/__pycache__/gtest_json_test_utils.cpython-311.pyc +0 -0
  197. sage/middleware/components/sage_flow/build/_deps/googletest-src/googletest/test/__pycache__/gtest_list_output_unittest.cpython-311.opt-2.pyc +0 -0
  198. sage/middleware/components/sage_flow/build/_deps/googletest-src/googletest/test/__pycache__/gtest_list_output_unittest.cpython-311.pyc +0 -0
  199. sage/middleware/components/sage_flow/build/_deps/googletest-src/googletest/test/__pycache__/gtest_skip_check_output_test.cpython-311.opt-2.pyc +0 -0
  200. sage/middleware/components/sage_flow/build/_deps/googletest-src/googletest/test/__pycache__/gtest_skip_check_output_test.cpython-311.pyc +0 -0
  201. sage/middleware/components/sage_flow/build/_deps/googletest-src/googletest/test/__pycache__/gtest_skip_environment_check_output_test.cpython-311.opt-2.pyc +0 -0
  202. sage/middleware/components/sage_flow/build/_deps/googletest-src/googletest/test/__pycache__/gtest_skip_environment_check_output_test.cpython-311.pyc +0 -0
  203. sage/middleware/components/sage_flow/build/_deps/googletest-src/googletest/test/__pycache__/gtest_test_utils.cpython-311.opt-2.pyc +0 -0
  204. sage/middleware/components/sage_flow/build/_deps/googletest-src/googletest/test/__pycache__/gtest_test_utils.cpython-311.pyc +0 -0
  205. sage/middleware/components/sage_flow/build/_deps/googletest-src/googletest/test/__pycache__/gtest_testbridge_test.cpython-311.opt-2.pyc +0 -0
  206. sage/middleware/components/sage_flow/build/_deps/googletest-src/googletest/test/__pycache__/gtest_testbridge_test.cpython-311.pyc +0 -0
  207. sage/middleware/components/sage_flow/build/_deps/googletest-src/googletest/test/__pycache__/gtest_xml_outfiles_test.cpython-311.opt-2.pyc +0 -0
  208. sage/middleware/components/sage_flow/build/_deps/googletest-src/googletest/test/__pycache__/gtest_xml_outfiles_test.cpython-311.pyc +0 -0
  209. sage/middleware/components/sage_flow/build/_deps/googletest-src/googletest/test/__pycache__/gtest_xml_output_unittest.cpython-311.opt-2.pyc +0 -0
  210. sage/middleware/components/sage_flow/build/_deps/googletest-src/googletest/test/__pycache__/gtest_xml_output_unittest.cpython-311.pyc +0 -0
  211. sage/middleware/components/sage_flow/build/_deps/googletest-src/googletest/test/__pycache__/gtest_xml_test_utils.cpython-311.opt-2.pyc +0 -0
  212. sage/middleware/components/sage_flow/build/_deps/googletest-src/googletest/test/__pycache__/gtest_xml_test_utils.cpython-311.pyc +0 -0
  213. sage/middleware/components/sage_flow/build/_deps/googletest-src/googletest/test/googletest-break-on-failure-unittest.py +195 -0
  214. sage/middleware/components/sage_flow/build/_deps/googletest-src/googletest/test/googletest-catch-exceptions-test.py +315 -0
  215. sage/middleware/components/sage_flow/build/_deps/googletest-src/googletest/test/googletest-color-test.py +130 -0
  216. sage/middleware/components/sage_flow/build/_deps/googletest-src/googletest/test/googletest-env-var-test.py +120 -0
  217. sage/middleware/components/sage_flow/build/_deps/googletest-src/googletest/test/googletest-failfast-unittest.py +461 -0
  218. sage/middleware/components/sage_flow/build/_deps/googletest-src/googletest/test/googletest-filter-unittest.py +746 -0
  219. sage/middleware/components/sage_flow/build/_deps/googletest-src/googletest/test/googletest-global-environment-unittest.py +141 -0
  220. sage/middleware/components/sage_flow/build/_deps/googletest-src/googletest/test/googletest-json-outfiles-test.py +180 -0
  221. sage/middleware/components/sage_flow/build/_deps/googletest-src/googletest/test/googletest-json-output-unittest.py +835 -0
  222. sage/middleware/components/sage_flow/build/_deps/googletest-src/googletest/test/googletest-list-tests-unittest.py +225 -0
  223. sage/middleware/components/sage_flow/build/_deps/googletest-src/googletest/test/googletest-output-test.py +385 -0
  224. sage/middleware/components/sage_flow/build/_deps/googletest-src/googletest/test/googletest-param-test-invalid-name1-test.py +63 -0
  225. sage/middleware/components/sage_flow/build/_deps/googletest-src/googletest/test/googletest-param-test-invalid-name2-test.py +63 -0
  226. sage/middleware/components/sage_flow/build/_deps/googletest-src/googletest/test/googletest-setuptestsuite-test.py +58 -0
  227. sage/middleware/components/sage_flow/build/_deps/googletest-src/googletest/test/googletest-shuffle-test.py +378 -0
  228. sage/middleware/components/sage_flow/build/_deps/googletest-src/googletest/test/googletest-throw-on-failure-test.py +166 -0
  229. sage/middleware/components/sage_flow/build/_deps/googletest-src/googletest/test/googletest-uninitialized-test.py +70 -0
  230. sage/middleware/components/sage_flow/build/_deps/googletest-src/googletest/test/gtest_help_test.py +183 -0
  231. sage/middleware/components/sage_flow/build/_deps/googletest-src/googletest/test/gtest_json_test_utils.py +67 -0
  232. sage/middleware/components/sage_flow/build/_deps/googletest-src/googletest/test/gtest_list_output_unittest.py +289 -0
  233. sage/middleware/components/sage_flow/build/_deps/googletest-src/googletest/test/gtest_skip_check_output_test.py +60 -0
  234. sage/middleware/components/sage_flow/build/_deps/googletest-src/googletest/test/gtest_skip_environment_check_output_test.py +55 -0
  235. sage/middleware/components/sage_flow/build/_deps/googletest-src/googletest/test/gtest_test_utils.py +262 -0
  236. sage/middleware/components/sage_flow/build/_deps/googletest-src/googletest/test/gtest_testbridge_test.py +63 -0
  237. sage/middleware/components/sage_flow/build/_deps/googletest-src/googletest/test/gtest_xml_outfiles_test.py +147 -0
  238. sage/middleware/components/sage_flow/build/_deps/googletest-src/googletest/test/gtest_xml_output_unittest.py +472 -0
  239. sage/middleware/components/sage_flow/build/_deps/googletest-src/googletest/test/gtest_xml_test_utils.py +242 -0
  240. sage/middleware/components/sage_flow/build/_deps/pybind11-src/__pycache__/noxfile.cpython-311.opt-2.pyc +0 -0
  241. sage/middleware/components/sage_flow/build/_deps/pybind11-src/__pycache__/noxfile.cpython-311.pyc +0 -0
  242. sage/middleware/components/sage_flow/build/_deps/pybind11-src/__pycache__/setup.cpython-311.opt-2.pyc +0 -0
  243. sage/middleware/components/sage_flow/build/_deps/pybind11-src/__pycache__/setup.cpython-311.pyc +0 -0
  244. sage/middleware/components/sage_flow/build/_deps/pybind11-src/docs/__pycache__/benchmark.cpython-311.opt-2.pyc +0 -0
  245. sage/middleware/components/sage_flow/build/_deps/pybind11-src/docs/__pycache__/benchmark.cpython-311.pyc +0 -0
  246. sage/middleware/components/sage_flow/build/_deps/pybind11-src/docs/__pycache__/conf.cpython-311.opt-2.pyc +0 -0
  247. sage/middleware/components/sage_flow/build/_deps/pybind11-src/docs/__pycache__/conf.cpython-311.pyc +0 -0
  248. sage/middleware/components/sage_flow/build/_deps/pybind11-src/docs/benchmark.py +89 -0
  249. sage/middleware/components/sage_flow/build/_deps/pybind11-src/docs/conf.py +369 -0
  250. sage/middleware/components/sage_flow/build/_deps/pybind11-src/noxfile.py +107 -0
  251. sage/middleware/components/sage_flow/build/_deps/pybind11-src/pybind11/__init__.py +19 -0
  252. sage/middleware/components/sage_flow/build/_deps/pybind11-src/pybind11/__main__.py +63 -0
  253. sage/middleware/components/sage_flow/build/_deps/pybind11-src/pybind11/__pycache__/__init__.cpython-311.opt-2.pyc +0 -0
  254. sage/middleware/components/sage_flow/build/_deps/pybind11-src/pybind11/__pycache__/__init__.cpython-311.pyc +0 -0
  255. sage/middleware/components/sage_flow/build/_deps/pybind11-src/pybind11/__pycache__/__main__.cpython-311.opt-2.pyc +0 -0
  256. sage/middleware/components/sage_flow/build/_deps/pybind11-src/pybind11/__pycache__/__main__.cpython-311.pyc +0 -0
  257. sage/middleware/components/sage_flow/build/_deps/pybind11-src/pybind11/__pycache__/_version.cpython-311.opt-2.pyc +0 -0
  258. sage/middleware/components/sage_flow/build/_deps/pybind11-src/pybind11/__pycache__/_version.cpython-311.pyc +0 -0
  259. sage/middleware/components/sage_flow/build/_deps/pybind11-src/pybind11/__pycache__/commands.cpython-311.opt-2.pyc +0 -0
  260. sage/middleware/components/sage_flow/build/_deps/pybind11-src/pybind11/__pycache__/commands.cpython-311.pyc +0 -0
  261. sage/middleware/components/sage_flow/build/_deps/pybind11-src/pybind11/__pycache__/setup_helpers.cpython-311.opt-2.pyc +0 -0
  262. sage/middleware/components/sage_flow/build/_deps/pybind11-src/pybind11/__pycache__/setup_helpers.cpython-311.pyc +0 -0
  263. sage/middleware/components/sage_flow/build/_deps/pybind11-src/pybind11/_version.py +12 -0
  264. sage/middleware/components/sage_flow/build/_deps/pybind11-src/pybind11/commands.py +39 -0
  265. sage/middleware/components/sage_flow/build/_deps/pybind11-src/pybind11/setup_helpers.py +500 -0
  266. sage/middleware/components/sage_flow/build/_deps/pybind11-src/setup.py +149 -0
  267. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/conftest.cpython-311.opt-2.pyc +0 -0
  268. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/conftest.cpython-311.pyc +0 -0
  269. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/env.cpython-311.opt-2.pyc +0 -0
  270. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/env.cpython-311.pyc +0 -0
  271. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/test_async.cpython-311.opt-2.pyc +0 -0
  272. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/test_async.cpython-311.pyc +0 -0
  273. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/test_buffers.cpython-311.opt-2.pyc +0 -0
  274. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/test_buffers.cpython-311.pyc +0 -0
  275. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/test_builtin_casters.cpython-311.opt-2.pyc +0 -0
  276. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/test_builtin_casters.cpython-311.pyc +0 -0
  277. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/test_call_policies.cpython-311.opt-2.pyc +0 -0
  278. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/test_call_policies.cpython-311.pyc +0 -0
  279. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/test_callbacks.cpython-311.opt-2.pyc +0 -0
  280. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/test_callbacks.cpython-311.pyc +0 -0
  281. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/test_chrono.cpython-311.opt-2.pyc +0 -0
  282. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/test_chrono.cpython-311.pyc +0 -0
  283. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/test_class.cpython-311.opt-2.pyc +0 -0
  284. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/test_class.cpython-311.pyc +0 -0
  285. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/test_const_name.cpython-311.opt-2.pyc +0 -0
  286. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/test_const_name.cpython-311.pyc +0 -0
  287. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/test_constants_and_functions.cpython-311.opt-2.pyc +0 -0
  288. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/test_constants_and_functions.cpython-311.pyc +0 -0
  289. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/test_copy_move.cpython-311.opt-2.pyc +0 -0
  290. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/test_copy_move.cpython-311.pyc +0 -0
  291. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/test_custom_type_casters.cpython-311.opt-2.pyc +0 -0
  292. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/test_custom_type_casters.cpython-311.pyc +0 -0
  293. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/test_custom_type_setup.cpython-311.opt-2.pyc +0 -0
  294. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/test_custom_type_setup.cpython-311.pyc +0 -0
  295. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/test_docstring_options.cpython-311.opt-2.pyc +0 -0
  296. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/test_docstring_options.cpython-311.pyc +0 -0
  297. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/test_eigen_matrix.cpython-311.opt-2.pyc +0 -0
  298. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/test_eigen_matrix.cpython-311.pyc +0 -0
  299. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/test_eigen_tensor.cpython-311.opt-2.pyc +0 -0
  300. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/test_eigen_tensor.cpython-311.pyc +0 -0
  301. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/test_enum.cpython-311.opt-2.pyc +0 -0
  302. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/test_enum.cpython-311.pyc +0 -0
  303. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/test_eval.cpython-311.opt-2.pyc +0 -0
  304. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/test_eval.cpython-311.pyc +0 -0
  305. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/test_eval_call.cpython-311.opt-2.pyc +0 -0
  306. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/test_eval_call.cpython-311.pyc +0 -0
  307. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/test_exceptions.cpython-311.opt-2.pyc +0 -0
  308. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/test_exceptions.cpython-311.pyc +0 -0
  309. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/test_factory_constructors.cpython-311.opt-2.pyc +0 -0
  310. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/test_factory_constructors.cpython-311.pyc +0 -0
  311. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/test_gil_scoped.cpython-311.opt-2.pyc +0 -0
  312. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/test_gil_scoped.cpython-311.pyc +0 -0
  313. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/test_iostream.cpython-311.opt-2.pyc +0 -0
  314. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/test_iostream.cpython-311.pyc +0 -0
  315. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/test_kwargs_and_defaults.cpython-311.opt-2.pyc +0 -0
  316. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/test_kwargs_and_defaults.cpython-311.pyc +0 -0
  317. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/test_local_bindings.cpython-311.opt-2.pyc +0 -0
  318. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/test_local_bindings.cpython-311.pyc +0 -0
  319. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/test_methods_and_attributes.cpython-311.opt-2.pyc +0 -0
  320. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/test_methods_and_attributes.cpython-311.pyc +0 -0
  321. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/test_modules.cpython-311.opt-2.pyc +0 -0
  322. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/test_modules.cpython-311.pyc +0 -0
  323. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/test_multiple_inheritance.cpython-311.opt-2.pyc +0 -0
  324. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/test_multiple_inheritance.cpython-311.pyc +0 -0
  325. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/test_numpy_array.cpython-311.opt-2.pyc +0 -0
  326. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/test_numpy_array.cpython-311.pyc +0 -0
  327. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/test_numpy_dtypes.cpython-311.opt-2.pyc +0 -0
  328. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/test_numpy_dtypes.cpython-311.pyc +0 -0
  329. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/test_numpy_vectorize.cpython-311.opt-2.pyc +0 -0
  330. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/test_numpy_vectorize.cpython-311.pyc +0 -0
  331. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/test_opaque_types.cpython-311.opt-2.pyc +0 -0
  332. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/test_opaque_types.cpython-311.pyc +0 -0
  333. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/test_operator_overloading.cpython-311.opt-2.pyc +0 -0
  334. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/test_operator_overloading.cpython-311.pyc +0 -0
  335. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/test_pickling.cpython-311.opt-2.pyc +0 -0
  336. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/test_pickling.cpython-311.pyc +0 -0
  337. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/test_python_multiple_inheritance.cpython-311.opt-2.pyc +0 -0
  338. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/test_python_multiple_inheritance.cpython-311.pyc +0 -0
  339. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/test_pytypes.cpython-311.opt-2.pyc +0 -0
  340. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/test_pytypes.cpython-311.pyc +0 -0
  341. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/test_sequences_and_iterators.cpython-311.opt-2.pyc +0 -0
  342. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/test_sequences_and_iterators.cpython-311.pyc +0 -0
  343. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/test_smart_ptr.cpython-311.opt-2.pyc +0 -0
  344. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/test_smart_ptr.cpython-311.pyc +0 -0
  345. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/test_stl.cpython-311.opt-2.pyc +0 -0
  346. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/test_stl.cpython-311.pyc +0 -0
  347. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/test_stl_binders.cpython-311.opt-2.pyc +0 -0
  348. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/test_stl_binders.cpython-311.pyc +0 -0
  349. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/test_tagbased_polymorphic.cpython-311.opt-2.pyc +0 -0
  350. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/test_tagbased_polymorphic.cpython-311.pyc +0 -0
  351. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/test_thread.cpython-311.opt-2.pyc +0 -0
  352. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/test_thread.cpython-311.pyc +0 -0
  353. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/test_type_caster_pyobject_ptr.cpython-311.opt-2.pyc +0 -0
  354. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/test_type_caster_pyobject_ptr.cpython-311.pyc +0 -0
  355. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/test_union.cpython-311.opt-2.pyc +0 -0
  356. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/test_union.cpython-311.pyc +0 -0
  357. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/test_unnamed_namespace_a.cpython-311.opt-2.pyc +0 -0
  358. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/test_unnamed_namespace_a.cpython-311.pyc +0 -0
  359. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/test_unnamed_namespace_b.cpython-311.opt-2.pyc +0 -0
  360. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/test_unnamed_namespace_b.cpython-311.pyc +0 -0
  361. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/test_vector_unique_ptr_member.cpython-311.opt-2.pyc +0 -0
  362. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/test_vector_unique_ptr_member.cpython-311.pyc +0 -0
  363. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/test_virtual_functions.cpython-311.opt-2.pyc +0 -0
  364. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/__pycache__/test_virtual_functions.cpython-311.pyc +0 -0
  365. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/conftest.py +224 -0
  366. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/env.py +31 -0
  367. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/extra_python_package/__pycache__/test_files.cpython-311.opt-2.pyc +0 -0
  368. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/extra_python_package/__pycache__/test_files.cpython-311.pyc +0 -0
  369. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/extra_python_package/test_files.py +296 -0
  370. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/extra_setuptools/__pycache__/test_setuphelper.cpython-311.opt-2.pyc +0 -0
  371. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/extra_setuptools/__pycache__/test_setuphelper.cpython-311.pyc +0 -0
  372. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/extra_setuptools/test_setuphelper.py +153 -0
  373. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/test_async.py +26 -0
  374. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/test_buffers.py +230 -0
  375. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/test_builtin_casters.py +530 -0
  376. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/test_call_policies.py +249 -0
  377. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/test_callbacks.py +227 -0
  378. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/test_chrono.py +207 -0
  379. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/test_class.py +503 -0
  380. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/test_cmake_build/__pycache__/test.cpython-311.opt-2.pyc +0 -0
  381. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/test_cmake_build/__pycache__/test.cpython-311.pyc +0 -0
  382. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/test_cmake_build/test.py +10 -0
  383. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/test_const_name.py +31 -0
  384. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/test_constants_and_functions.py +58 -0
  385. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/test_copy_move.py +140 -0
  386. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/test_custom_type_casters.py +124 -0
  387. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/test_custom_type_setup.py +50 -0
  388. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/test_docstring_options.py +66 -0
  389. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/test_eigen_matrix.py +816 -0
  390. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/test_eigen_tensor.py +290 -0
  391. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/test_embed/__pycache__/test_interpreter.cpython-311.opt-2.pyc +0 -0
  392. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/test_embed/__pycache__/test_interpreter.cpython-311.pyc +0 -0
  393. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/test_embed/__pycache__/test_trampoline.cpython-311.opt-2.pyc +0 -0
  394. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/test_embed/__pycache__/test_trampoline.cpython-311.pyc +0 -0
  395. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/test_embed/test_interpreter.py +16 -0
  396. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/test_embed/test_trampoline.py +18 -0
  397. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/test_enum.py +270 -0
  398. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/test_eval.py +52 -0
  399. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/test_eval_call.py +5 -0
  400. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/test_exceptions.py +434 -0
  401. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/test_factory_constructors.py +518 -0
  402. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/test_gil_scoped.py +244 -0
  403. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/test_iostream.py +293 -0
  404. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/test_kwargs_and_defaults.py +428 -0
  405. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/test_local_bindings.py +259 -0
  406. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/test_methods_and_attributes.py +539 -0
  407. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/test_modules.py +118 -0
  408. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/test_multiple_inheritance.py +495 -0
  409. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/test_numpy_array.py +672 -0
  410. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/test_numpy_dtypes.py +448 -0
  411. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/test_numpy_vectorize.py +268 -0
  412. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/test_opaque_types.py +60 -0
  413. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/test_operator_overloading.py +153 -0
  414. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/test_pickling.py +95 -0
  415. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/test_python_multiple_inheritance.py +36 -0
  416. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/test_pytypes.py +1043 -0
  417. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/test_sequences_and_iterators.py +267 -0
  418. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/test_smart_ptr.py +317 -0
  419. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/test_stl.py +383 -0
  420. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/test_stl_binders.py +395 -0
  421. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/test_tagbased_polymorphic.py +30 -0
  422. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/test_thread.py +44 -0
  423. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/test_type_caster_pyobject_ptr.py +122 -0
  424. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/test_union.py +10 -0
  425. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/test_unnamed_namespace_a.py +36 -0
  426. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/test_unnamed_namespace_b.py +7 -0
  427. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/test_vector_unique_ptr_member.py +16 -0
  428. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tests/test_virtual_functions.py +460 -0
  429. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tools/__pycache__/codespell_ignore_lines_from_errors.cpython-311.opt-2.pyc +0 -0
  430. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tools/__pycache__/codespell_ignore_lines_from_errors.cpython-311.pyc +0 -0
  431. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tools/__pycache__/libsize.cpython-311.opt-2.pyc +0 -0
  432. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tools/__pycache__/libsize.cpython-311.pyc +0 -0
  433. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tools/__pycache__/make_changelog.cpython-311.opt-2.pyc +0 -0
  434. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tools/__pycache__/make_changelog.cpython-311.pyc +0 -0
  435. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tools/codespell_ignore_lines_from_errors.py +40 -0
  436. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tools/libsize.py +38 -0
  437. sage/middleware/components/sage_flow/build/_deps/pybind11-src/tools/make_changelog.py +92 -0
  438. sage/middleware/components/sage_flow/build/_deps/spdlog-src/scripts/__pycache__/extract_version.cpython-311.opt-2.pyc +0 -0
  439. sage/middleware/components/sage_flow/build/_deps/spdlog-src/scripts/__pycache__/extract_version.cpython-311.pyc +0 -0
  440. sage/middleware/components/sage_flow/build/_deps/spdlog-src/scripts/extract_version.py +17 -0
  441. sage/middleware/components/sage_flow/build/_deps/tomlplusplus-src/tools/__pycache__/ci_single_header_check.cpython-311.opt-2.pyc +0 -0
  442. sage/middleware/components/sage_flow/build/_deps/tomlplusplus-src/tools/__pycache__/ci_single_header_check.cpython-311.pyc +0 -0
  443. sage/middleware/components/sage_flow/build/_deps/tomlplusplus-src/tools/__pycache__/generate_conformance_tests.cpython-311.opt-2.pyc +0 -0
  444. sage/middleware/components/sage_flow/build/_deps/tomlplusplus-src/tools/__pycache__/generate_conformance_tests.cpython-311.pyc +0 -0
  445. sage/middleware/components/sage_flow/build/_deps/tomlplusplus-src/tools/__pycache__/generate_single_header.cpython-311.opt-2.pyc +0 -0
  446. sage/middleware/components/sage_flow/build/_deps/tomlplusplus-src/tools/__pycache__/generate_single_header.cpython-311.pyc +0 -0
  447. sage/middleware/components/sage_flow/build/_deps/tomlplusplus-src/tools/__pycache__/generate_windows_test_targets.cpython-311.opt-2.pyc +0 -0
  448. sage/middleware/components/sage_flow/build/_deps/tomlplusplus-src/tools/__pycache__/generate_windows_test_targets.cpython-311.pyc +0 -0
  449. sage/middleware/components/sage_flow/build/_deps/tomlplusplus-src/tools/__pycache__/utils.cpython-311.opt-2.pyc +0 -0
  450. sage/middleware/components/sage_flow/build/_deps/tomlplusplus-src/tools/__pycache__/utils.cpython-311.pyc +0 -0
  451. sage/middleware/components/sage_flow/build/_deps/tomlplusplus-src/tools/__pycache__/version.cpython-311.opt-2.pyc +0 -0
  452. sage/middleware/components/sage_flow/build/_deps/tomlplusplus-src/tools/__pycache__/version.cpython-311.pyc +0 -0
  453. sage/middleware/components/sage_flow/build/_deps/tomlplusplus-src/tools/ci_single_header_check.py +31 -0
  454. sage/middleware/components/sage_flow/build/_deps/tomlplusplus-src/tools/generate_conformance_tests.py +635 -0
  455. sage/middleware/components/sage_flow/build/_deps/tomlplusplus-src/tools/generate_single_header.py +262 -0
  456. sage/middleware/components/sage_flow/build/_deps/tomlplusplus-src/tools/generate_windows_test_targets.py +181 -0
  457. sage/middleware/components/sage_flow/build/_deps/tomlplusplus-src/tools/utils.py +55 -0
  458. sage/middleware/components/sage_flow/build/_deps/tomlplusplus-src/tools/version.py +68 -0
  459. sage/middleware/components/sage_flow/cmake/enableTest.cmake +34 -0
  460. sage/middleware/components/sage_flow/cmake/gperftools.cmake +21 -0
  461. sage/middleware/components/sage_flow/cmake/macros.cmake +11 -0
  462. sage/middleware/components/sage_flow/cmake/pybind11_dependency.cmake +26 -0
  463. sage/middleware/components/sage_flow/data/__pycache__/generate_vectors.cpython-311.opt-2.pyc +0 -0
  464. sage/middleware/components/sage_flow/data/__pycache__/generate_vectors.cpython-311.pyc +0 -0
  465. sage/middleware/components/sage_flow/data/generate_vectors.py +34 -0
  466. sage/middleware/components/sage_flow/python/__init__.py +4 -0
  467. sage/middleware/components/sage_flow/python/__pycache__/__init__.cpython-311.opt-2.pyc +0 -0
  468. sage/middleware/components/sage_flow/python/__pycache__/__init__.cpython-311.pyc +0 -0
  469. sage/middleware/components/sage_flow/python/__pycache__/sage_flow.cpython-311.opt-2.pyc +0 -0
  470. sage/middleware/components/sage_flow/python/__pycache__/sage_flow.cpython-311.pyc +0 -0
  471. sage/middleware/components/sage_flow/python/_sage_flow.cpython-311-x86_64-linux-gnu.so +0 -0
  472. sage/middleware/components/sage_flow/python/micro_service/__init__.py +4 -0
  473. sage/middleware/components/sage_flow/python/micro_service/__pycache__/__init__.cpython-311.opt-2.pyc +0 -0
  474. sage/middleware/components/sage_flow/python/micro_service/__pycache__/__init__.cpython-311.pyc +0 -0
  475. sage/middleware/components/sage_flow/python/micro_service/__pycache__/sage_flow_service.cpython-311.opt-2.pyc +0 -0
  476. sage/middleware/components/sage_flow/python/micro_service/__pycache__/sage_flow_service.cpython-311.pyc +0 -0
  477. sage/middleware/components/sage_flow/python/micro_service/sage_flow_service.py +91 -0
  478. sage/middleware/components/sage_flow/python/sage_flow.py +118 -0
  479. sage/middleware/utils/__init__.py +8 -33
  480. sage/middleware/utils/__pycache__/__init__.cpython-311.opt-2.pyc +0 -0
  481. sage/middleware/utils/__pycache__/__init__.cpython-311.pyc +0 -0
  482. sage/middleware/utils/embedding/__init__.py +8 -33
  483. sage/middleware/utils/embedding/__pycache__/__init__.cpython-311.opt-2.pyc +0 -0
  484. sage/middleware/utils/embedding/__pycache__/__init__.cpython-311.pyc +0 -0
  485. sage/middleware/utils/embedding/__pycache__/_cohere.cpython-311.opt-2.pyc +0 -0
  486. sage/middleware/utils/embedding/__pycache__/_cohere.cpython-311.pyc +0 -0
  487. sage/middleware/utils/embedding/__pycache__/bedrock.cpython-311.opt-2.pyc +0 -0
  488. sage/middleware/utils/embedding/__pycache__/bedrock.cpython-311.pyc +0 -0
  489. sage/middleware/utils/embedding/__pycache__/embedding_api.cpython-311.opt-2.pyc +0 -0
  490. sage/middleware/utils/embedding/__pycache__/embedding_api.cpython-311.pyc +0 -0
  491. sage/middleware/utils/embedding/__pycache__/embedding_model.cpython-311.opt-2.pyc +0 -0
  492. sage/middleware/utils/embedding/__pycache__/embedding_model.cpython-311.pyc +0 -0
  493. sage/middleware/utils/embedding/__pycache__/hf.cpython-311.opt-2.pyc +0 -0
  494. sage/middleware/utils/embedding/__pycache__/hf.cpython-311.pyc +0 -0
  495. sage/middleware/utils/embedding/__pycache__/instructor.cpython-311.opt-2.pyc +0 -0
  496. sage/middleware/utils/embedding/__pycache__/instructor.cpython-311.pyc +0 -0
  497. sage/middleware/utils/embedding/__pycache__/jina.cpython-311.opt-2.pyc +0 -0
  498. sage/middleware/utils/embedding/__pycache__/jina.cpython-311.pyc +0 -0
  499. sage/middleware/utils/embedding/__pycache__/lollms.cpython-311.opt-2.pyc +0 -0
  500. sage/middleware/utils/embedding/__pycache__/lollms.cpython-311.pyc +0 -0
  501. sage/middleware/utils/embedding/__pycache__/mockembedder.cpython-311.opt-2.pyc +0 -0
  502. sage/middleware/utils/embedding/__pycache__/mockembedder.cpython-311.pyc +0 -0
  503. sage/middleware/utils/embedding/__pycache__/nvidia_openai.cpython-311.opt-2.pyc +0 -0
  504. sage/middleware/utils/embedding/__pycache__/nvidia_openai.cpython-311.pyc +0 -0
  505. sage/middleware/utils/embedding/__pycache__/ollama.cpython-311.opt-2.pyc +0 -0
  506. sage/middleware/utils/embedding/__pycache__/ollama.cpython-311.pyc +0 -0
  507. sage/middleware/utils/embedding/__pycache__/openai.cpython-311.opt-2.pyc +0 -0
  508. sage/middleware/utils/embedding/__pycache__/openai.cpython-311.pyc +0 -0
  509. sage/middleware/utils/embedding/__pycache__/siliconcloud.cpython-311.opt-2.pyc +0 -0
  510. sage/middleware/utils/embedding/__pycache__/siliconcloud.cpython-311.pyc +0 -0
  511. sage/middleware/utils/embedding/__pycache__/zhipu.cpython-311.opt-2.pyc +0 -0
  512. sage/middleware/utils/embedding/__pycache__/zhipu.cpython-311.pyc +0 -0
  513. sage/middleware/utils/embedding/_cohere.py +7 -15
  514. sage/middleware/utils/embedding/bedrock.py +32 -35
  515. sage/middleware/utils/embedding/embedding_api.py +6 -2
  516. sage/middleware/utils/embedding/embedding_model.py +58 -29
  517. sage/middleware/utils/embedding/hf.py +8 -11
  518. sage/middleware/utils/embedding/instructor.py +1 -2
  519. sage/middleware/utils/embedding/jina.py +6 -15
  520. sage/middleware/utils/embedding/lollms.py +9 -7
  521. sage/middleware/utils/embedding/mockembedder.py +12 -8
  522. sage/middleware/utils/embedding/nvidia_openai.py +6 -13
  523. sage/middleware/utils/embedding/ollama.py +7 -22
  524. sage/middleware/utils/embedding/openai.py +10 -22
  525. sage/middleware/utils/embedding/siliconcloud.py +10 -28
  526. sage/middleware/utils/embedding/zhipu.py +6 -15
  527. isage_middleware-0.1.4.dist-info/METADATA +0 -115
  528. isage_middleware-0.1.4.dist-info/RECORD +0 -288
  529. sage/middleware/api/__init__.py +0 -37
  530. sage/middleware/api/__pycache__/__init__.cpython-311.opt-2.pyc +0 -0
  531. sage/middleware/api/__pycache__/__init__.cpython-311.pyc +0 -0
  532. sage/middleware/api/__pycache__/graph_api.cpython-311.opt-2.pyc +0 -0
  533. sage/middleware/api/__pycache__/graph_api.cpython-311.pyc +0 -0
  534. sage/middleware/api/__pycache__/kv_api.cpython-311.opt-2.pyc +0 -0
  535. sage/middleware/api/__pycache__/kv_api.cpython-311.pyc +0 -0
  536. sage/middleware/api/__pycache__/memory_api.cpython-311.opt-2.pyc +0 -0
  537. sage/middleware/api/__pycache__/memory_api.cpython-311.pyc +0 -0
  538. sage/middleware/api/__pycache__/vdb_api.cpython-311.opt-2.pyc +0 -0
  539. sage/middleware/api/__pycache__/vdb_api.cpython-311.pyc +0 -0
  540. sage/middleware/api/graph_api.py +0 -74
  541. sage/middleware/api/kv_api.py +0 -45
  542. sage/middleware/api/memory_api.py +0 -64
  543. sage/middleware/api/vdb_api.py +0 -60
  544. sage/middleware/components/enterprise/__init__.py +0 -37
  545. sage/middleware/components/enterprise/__pycache__/__init__.cpython-311.opt-2.pyc +0 -0
  546. sage/middleware/components/enterprise/__pycache__/__init__.cpython-311.pyc +0 -0
  547. sage/middleware/components/neuromem/__pycache__/memory_service.cpython-311.opt-2.pyc +0 -0
  548. sage/middleware/components/neuromem/__pycache__/memory_service.cpython-311.pyc +0 -0
  549. sage/middleware/components/neuromem/memory_service.py +0 -324
  550. sage/middleware/components/neuromem/search_engine/hybird_index/__init__.py +0 -37
  551. sage/middleware/components/neuromem/search_engine/hybird_index/__pycache__/__init__.cpython-311.opt-2.pyc +0 -0
  552. sage/middleware/components/neuromem/search_engine/hybird_index/__pycache__/__init__.cpython-311.pyc +0 -0
  553. sage/middleware/components/neuromem/tests/__init__.py +0 -37
  554. sage/middleware/components/neuromem/tests/__pycache__/__init__.cpython-311.opt-2.pyc +0 -0
  555. sage/middleware/components/neuromem/tests/__pycache__/__init__.cpython-311.pyc +0 -0
  556. sage/middleware/components/neuromem/tests/__pycache__/test_memory_service.cpython-311.opt-2.pyc +0 -0
  557. sage/middleware/components/neuromem/tests/__pycache__/test_memory_service.cpython-311.pyc +0 -0
  558. sage/middleware/components/neuromem/tests/core_test/__init__.py +0 -37
  559. sage/middleware/components/neuromem/tests/core_test/__pycache__/__init__.cpython-311.opt-2.pyc +0 -0
  560. sage/middleware/components/neuromem/tests/core_test/__pycache__/__init__.cpython-311.pyc +0 -0
  561. sage/middleware/components/neuromem/tests/core_test/collection_test/__init__.py +0 -37
  562. sage/middleware/components/neuromem/tests/core_test/collection_test/__pycache__/__init__.cpython-311.opt-2.pyc +0 -0
  563. sage/middleware/components/neuromem/tests/core_test/collection_test/__pycache__/__init__.cpython-311.pyc +0 -0
  564. sage/middleware/components/neuromem/tests/core_test/collection_test/__pycache__/kv_collection_test.cpython-311.opt-2.pyc +0 -0
  565. sage/middleware/components/neuromem/tests/core_test/collection_test/__pycache__/kv_collection_test.cpython-311.pyc +0 -0
  566. sage/middleware/components/neuromem/tests/core_test/collection_test/__pycache__/vdb_collection_test.cpython-311.opt-2.pyc +0 -0
  567. sage/middleware/components/neuromem/tests/core_test/collection_test/__pycache__/vdb_collection_test.cpython-311.pyc +0 -0
  568. sage/middleware/components/neuromem/tests/core_test/collection_test/kv_collection_test.py +0 -60
  569. sage/middleware/components/neuromem/tests/core_test/collection_test/vdb_collection_test.py +0 -88
  570. sage/middleware/components/neuromem/tests/core_test/manager_test.py +0 -154
  571. sage/middleware/components/neuromem/tests/test_memory_service.py +0 -293
  572. sage/middleware/components/sage_db/__pycache__/sage_db.cpython-311.opt-2.pyc +0 -0
  573. sage/middleware/components/sage_db/__pycache__/sage_db.cpython-311.pyc +0 -0
  574. sage/middleware/components/sage_db/sage_db.py +0 -395
  575. sage/middleware/components/sage_db/tests/__pycache__/test_python.cpython-311.opt-2.pyc +0 -0
  576. sage/middleware/components/sage_db/tests/__pycache__/test_python.cpython-311.pyc +0 -0
  577. sage/middleware/components/sage_db/tests/test_python.py +0 -144
  578. sage/middleware/examples/__pycache__/api_usage_tutorial.cpython-311.opt-2.pyc +0 -0
  579. sage/middleware/examples/__pycache__/api_usage_tutorial.cpython-311.pyc +0 -0
  580. sage/middleware/examples/__pycache__/microservices_demo.cpython-311.opt-2.pyc +0 -0
  581. sage/middleware/examples/__pycache__/microservices_demo.cpython-311.pyc +0 -0
  582. sage/middleware/examples/__pycache__/microservices_registration_demo.cpython-311.opt-2.pyc +0 -0
  583. sage/middleware/examples/__pycache__/microservices_registration_demo.cpython-311.pyc +0 -0
  584. sage/middleware/examples/api_usage_tutorial.py +0 -339
  585. sage/middleware/examples/dag_microservices_demo.py +0 -219
  586. sage/middleware/examples/microservices_integration_demo.py +0 -370
  587. sage/middleware/examples/microservices_registration_demo.py +0 -140
  588. sage/middleware/services/__init__.py +0 -37
  589. sage/middleware/services/__pycache__/__init__.cpython-311.opt-2.pyc +0 -0
  590. sage/middleware/services/__pycache__/__init__.cpython-311.pyc +0 -0
  591. sage/middleware/services/graph/__init__.py +0 -37
  592. sage/middleware/services/graph/__pycache__/__init__.cpython-311.opt-2.pyc +0 -0
  593. sage/middleware/services/graph/__pycache__/__init__.cpython-311.pyc +0 -0
  594. sage/middleware/services/graph/__pycache__/graph_index.cpython-311.opt-2.pyc +0 -0
  595. sage/middleware/services/graph/__pycache__/graph_index.cpython-311.pyc +0 -0
  596. sage/middleware/services/graph/__pycache__/graph_service.cpython-311.opt-2.pyc +0 -0
  597. sage/middleware/services/graph/__pycache__/graph_service.cpython-311.pyc +0 -0
  598. sage/middleware/services/graph/examples/__pycache__/graph_demo.cpython-311.opt-2.pyc +0 -0
  599. sage/middleware/services/graph/examples/__pycache__/graph_demo.cpython-311.pyc +0 -0
  600. sage/middleware/services/graph/examples/graph_demo.py +0 -178
  601. sage/middleware/services/graph/graph_index.py +0 -194
  602. sage/middleware/services/graph/graph_service.py +0 -609
  603. sage/middleware/services/graph/search_engine/__init__.py +0 -37
  604. sage/middleware/services/graph/search_engine/__pycache__/__init__.cpython-311.opt-2.pyc +0 -0
  605. sage/middleware/services/graph/search_engine/__pycache__/__init__.cpython-311.pyc +0 -0
  606. sage/middleware/services/graph/search_engine/__pycache__/base_graph_index.cpython-311.opt-2.pyc +0 -0
  607. sage/middleware/services/graph/search_engine/__pycache__/base_graph_index.cpython-311.pyc +0 -0
  608. sage/middleware/services/graph/search_engine/base_graph_index.py +0 -0
  609. sage/middleware/services/kv/__init__.py +0 -37
  610. sage/middleware/services/kv/__pycache__/__init__.cpython-311.opt-2.pyc +0 -0
  611. sage/middleware/services/kv/__pycache__/__init__.cpython-311.pyc +0 -0
  612. sage/middleware/services/kv/__pycache__/kv_service.cpython-311.opt-2.pyc +0 -0
  613. sage/middleware/services/kv/__pycache__/kv_service.cpython-311.pyc +0 -0
  614. sage/middleware/services/kv/examples/__pycache__/kv_demo.cpython-311.opt-2.pyc +0 -0
  615. sage/middleware/services/kv/examples/__pycache__/kv_demo.cpython-311.pyc +0 -0
  616. sage/middleware/services/kv/examples/kv_demo.py +0 -213
  617. sage/middleware/services/kv/kv_service.py +0 -306
  618. sage/middleware/services/kv/search_engine/__init__.py +0 -37
  619. sage/middleware/services/kv/search_engine/__pycache__/__init__.cpython-311.opt-2.pyc +0 -0
  620. sage/middleware/services/kv/search_engine/__pycache__/__init__.cpython-311.pyc +0 -0
  621. sage/middleware/services/kv/search_engine/__pycache__/base_kv_index.cpython-311.opt-2.pyc +0 -0
  622. sage/middleware/services/kv/search_engine/__pycache__/base_kv_index.cpython-311.pyc +0 -0
  623. sage/middleware/services/kv/search_engine/__pycache__/bm25s_index.cpython-311.opt-2.pyc +0 -0
  624. sage/middleware/services/kv/search_engine/__pycache__/bm25s_index.cpython-311.pyc +0 -0
  625. sage/middleware/services/kv/search_engine/base_kv_index.py +0 -75
  626. sage/middleware/services/kv/search_engine/bm25s_index.py +0 -238
  627. sage/middleware/services/memory/__init__.py +0 -37
  628. sage/middleware/services/memory/__pycache__/__init__.cpython-311.opt-2.pyc +0 -0
  629. sage/middleware/services/memory/__pycache__/__init__.cpython-311.pyc +0 -0
  630. sage/middleware/services/memory/__pycache__/memory_service.cpython-311.opt-2.pyc +0 -0
  631. sage/middleware/services/memory/__pycache__/memory_service.cpython-311.pyc +0 -0
  632. sage/middleware/services/memory/examples/__pycache__/memory_demo.cpython-311.opt-2.pyc +0 -0
  633. sage/middleware/services/memory/examples/__pycache__/memory_demo.cpython-311.pyc +0 -0
  634. sage/middleware/services/memory/examples/dag_microservices_demo.py +0 -219
  635. sage/middleware/services/memory/examples/memory_demo.py +0 -490
  636. sage/middleware/services/memory/memory_collection/__pycache__/graph_collection.cpython-311.opt-2.pyc +0 -0
  637. sage/middleware/services/memory/memory_collection/__pycache__/graph_collection.cpython-311.pyc +0 -0
  638. sage/middleware/services/memory/memory_collection/graph_collection.py +0 -0
  639. sage/middleware/services/memory/memory_service.py +0 -477
  640. sage/middleware/services/memory/utils/__init__.py +0 -37
  641. sage/middleware/services/memory/utils/__pycache__/__init__.cpython-311.opt-2.pyc +0 -0
  642. sage/middleware/services/memory/utils/__pycache__/__init__.cpython-311.pyc +0 -0
  643. sage/middleware/services/memory/utils/__pycache__/path_utils.cpython-311.opt-2.pyc +0 -0
  644. sage/middleware/services/memory/utils/__pycache__/path_utils.cpython-311.pyc +0 -0
  645. sage/middleware/services/memory/utils/path_utils.py +0 -0
  646. sage/middleware/services/vdb/__init__.py +0 -37
  647. sage/middleware/services/vdb/__pycache__/__init__.cpython-311.opt-2.pyc +0 -0
  648. sage/middleware/services/vdb/__pycache__/__init__.cpython-311.pyc +0 -0
  649. sage/middleware/services/vdb/__pycache__/vdb_service.cpython-311.opt-2.pyc +0 -0
  650. sage/middleware/services/vdb/__pycache__/vdb_service.cpython-311.pyc +0 -0
  651. sage/middleware/services/vdb/examples/__pycache__/vdb_demo.cpython-311.opt-2.pyc +0 -0
  652. sage/middleware/services/vdb/examples/__pycache__/vdb_demo.cpython-311.pyc +0 -0
  653. sage/middleware/services/vdb/examples/vdb_demo.py +0 -447
  654. sage/middleware/services/vdb/search_engine/__init__.py +0 -37
  655. sage/middleware/services/vdb/search_engine/__pycache__/__init__.cpython-311.opt-2.pyc +0 -0
  656. sage/middleware/services/vdb/search_engine/__pycache__/__init__.cpython-311.pyc +0 -0
  657. sage/middleware/services/vdb/search_engine/__pycache__/base_vdb_index.cpython-311.opt-2.pyc +0 -0
  658. sage/middleware/services/vdb/search_engine/__pycache__/base_vdb_index.cpython-311.pyc +0 -0
  659. sage/middleware/services/vdb/search_engine/__pycache__/faiss_index.cpython-311.opt-2.pyc +0 -0
  660. sage/middleware/services/vdb/search_engine/__pycache__/faiss_index.cpython-311.pyc +0 -0
  661. sage/middleware/services/vdb/search_engine/base_vdb_index.py +0 -58
  662. sage/middleware/services/vdb/search_engine/faiss_index.py +0 -461
  663. sage/middleware/services/vdb/vdb_service.py +0 -436
  664. {isage_middleware-0.1.4.dist-info → isage_middleware-0.1.5.1.dist-info}/WHEEL +0 -0
  665. {isage_middleware-0.1.4.dist-info → isage_middleware-0.1.5.1.dist-info}/top_level.txt +0 -0
  666. /sage/middleware/{examples/microservices_demo.py → components/sage_flow/build/_deps/pybind11-src/pybind11/py.typed} +0 -0
@@ -1,56 +1,71 @@
1
- import os
2
1
  import json
3
- import faiss
2
+ import os
4
3
  import pickle
4
+ from typing import Any, Dict, List, Optional
5
+
6
+ import faiss
5
7
  import numpy as np
6
- from typing import Optional, List, Dict, Any
7
8
  from sage.common.utils.logging.custom_logger import CustomLogger
8
- from sage.middleware.components.neuromem.search_engine.vdb_index.base_vdb_index import BaseVDBIndex
9
+ from sage.middleware.components.neuromem.search_engine.vdb_index.base_vdb_index import (
10
+ BaseVDBIndex,
11
+ )
9
12
 
10
13
 
11
14
  class FaissIndex(BaseVDBIndex):
12
- def __init__(
13
- self,
14
- config: Optional[dict]
15
- ):
15
+ def __init__(self, config: Optional[dict]):
16
16
  super().__init__()
17
17
  """
18
18
  初始化 FaissIndex 实例,支持两种初始化方式:
19
- 1. 直接通过声明来创建:传入 config
19
+ 1. 通过声明来创建:传入 config
20
20
  2. 通过 FaissIndex.load() 来加载:调用load方法
21
-
21
+
22
22
  Initialize the FaissIndex instance with two initialization methods:
23
- 1. Direct creation: pass config
23
+ 1. Creation: by config and new
24
24
  2. Load from disk: use load method
25
25
  """
26
26
  self.logger = CustomLogger()
27
+
28
+ if config is None:
29
+ raise ValueError("Config cannot be None for FaissIndex initialization")
27
30
  self.config = config
28
-
29
- # 从config中获取必要参数,否则使用默认值
31
+
32
+ # 从config中获取必要参数
30
33
  self.index_name = self.config.get("name", None)
31
34
  if self.index_name is None:
32
- self.logger.error("索引名称(name)未在config中指定,无法创建索引")
33
- raise ValueError("索引名称(name)未在config中指定")
34
-
35
+ self.logger.error(
36
+ "The index name is not specified in the config, so the index cannot be created."
37
+ )
38
+ raise ValueError(
39
+ "The index name is not specified in the config, so the index cannot be created."
40
+ )
41
+
35
42
  self.dim = self.config.get("dim", 128)
36
43
  self.id_map: Dict[int, str] = {}
37
44
  self.rev_map: Dict[str, int] = {}
38
45
  self.next_id: int = 1
39
46
  self.tombstones: set[str] = set()
40
- self.tombstone_threshold = self.config.get("tombstone_threshold", 30) # 墓碑阈值
47
+ self.tombstone_threshold = self.config.get("tombstone_threshold", 30)
41
48
  self.index, self._deletion_supported = self._init_index()
42
-
49
+
43
50
  # 确保索引被IndexIDMap包装以支持自定义ID
44
51
  if not isinstance(self.index, faiss.IndexIDMap):
45
52
  self.logger.info("Wrapping index with IndexIDMap")
46
53
  self.index = faiss.IndexIDMap(self.index)
47
-
54
+
48
55
  # 用于检测重复向量的容器
49
56
  self.vector_hashes: Dict[str, str] = {} # vector_hash -> string_id
50
-
57
+
58
+ # 存储向量副本用于重建索引
59
+ self.vector_store: Dict[str, np.ndarray] = {} # string_id -> vector
60
+
51
61
  def _init_index(self):
52
62
  config = self.config # 保持全程都叫config
53
- index_type = config.get("index_type", "IndexFlatL2")
63
+ index_type = config.get(
64
+ "index_type", "IndexFlatIP"
65
+ ) # 默认使用Inner Product以支持归一化向量
66
+
67
+ # 确保index_type被存储到config中,以便后续搜索时使用
68
+ config["index_type"] = index_type
54
69
 
55
70
  # 基础索引
56
71
  if index_type == "IndexFlatL2":
@@ -99,7 +114,9 @@ class FaissIndex(BaseVDBIndex):
99
114
  qtype = getattr(faiss.ScalarQuantizer, qtype_str)
100
115
  metric = self._get_metric(config.get("IVF_METRIC", "L2"))
101
116
  quantizer = faiss.IndexFlatL2(self.dim)
102
- index = faiss.IndexIVFScalarQuantizer(quantizer, self.dim, nlist, qtype, metric)
117
+ index = faiss.IndexIVFScalarQuantizer(
118
+ quantizer, self.dim, nlist, qtype, metric
119
+ )
103
120
  index.nprobe = nprobe
104
121
  return index, True
105
122
 
@@ -169,8 +186,10 @@ class FaissIndex(BaseVDBIndex):
169
186
  计算向量的哈希值用于检测重复
170
187
  Calculate vector hash for duplicate detection
171
188
  """
172
- return str(hash(vector.tobytes()))
173
-
189
+ import hashlib
190
+
191
+ return hashlib.md5(vector.tobytes()).hexdigest()
192
+
174
193
  def _rebuild_index_if_needed(self):
175
194
  """
176
195
  当墓碑数量达到阈值时重建索引
@@ -178,21 +197,61 @@ class FaissIndex(BaseVDBIndex):
178
197
  """
179
198
  if len(self.tombstones) < self.tombstone_threshold:
180
199
  return
181
-
182
- self.logger.warning(f"墓碑数量({len(self.tombstones)})达到阈值({self.tombstone_threshold}),开始重建索引")
183
-
184
- # 由于FAISS不提供直接获取向量的方法,这里只是清空墓碑
185
- # 在实际生产环境中,可能需要维护向量的副本或使用其他策略
200
+
201
+ self.logger.warning(
202
+ f"墓碑数量({len(self.tombstones)})达到阈值({self.tombstone_threshold}),开始重建索引"
203
+ )
204
+
205
+ # 收集有效的向量和ID
206
+ valid_vectors = []
207
+ valid_ids = []
208
+ new_id_map = {}
209
+ new_rev_map = {}
210
+ new_vector_hashes = {}
211
+ new_vector_store = {}
212
+
213
+ next_id = 1
214
+ for string_id, vector in self.vector_store.items():
215
+ if string_id not in self.tombstones:
216
+ valid_vectors.append(vector)
217
+ valid_ids.append(string_id)
218
+
219
+ new_rev_map[string_id] = next_id
220
+ new_id_map[next_id] = string_id
221
+ new_vector_store[string_id] = vector
222
+
223
+ vector_hash = self._get_vector_hash(vector)
224
+ new_vector_hashes[vector_hash] = string_id
225
+
226
+ next_id += 1
227
+
228
+ if valid_vectors:
229
+ # 重新创建索引
230
+ self.index, self._deletion_supported = self._init_index()
231
+ if not isinstance(self.index, faiss.IndexIDMap):
232
+ self.index = faiss.IndexIDMap(self.index)
233
+
234
+ # 批量添加有效向量
235
+ np_vectors = np.vstack(valid_vectors).astype("float32")
236
+ int_ids_np = np.array(
237
+ [new_rev_map[sid] for sid in valid_ids], dtype=np.int64
238
+ )
239
+ self.index.add_with_ids(np_vectors, int_ids_np)
240
+ else:
241
+ # 如果没有有效向量,创建空索引
242
+ self.index, self._deletion_supported = self._init_index()
243
+ if not isinstance(self.index, faiss.IndexIDMap):
244
+ self.index = faiss.IndexIDMap(self.index)
245
+
246
+ # 更新映射关系
247
+ self.id_map = new_id_map
248
+ self.rev_map = new_rev_map
249
+ self.vector_hashes = new_vector_hashes
250
+ self.vector_store = new_vector_store
251
+ self.next_id = next_id
186
252
  self.tombstones.clear()
187
-
188
- # 清理向量哈希中已删除的条目
189
- valid_hashes = {}
190
- for vector_hash, string_id in self.vector_hashes.items():
191
- if string_id in self.rev_map and string_id not in self.tombstones:
192
- valid_hashes[vector_hash] = string_id
193
- self.vector_hashes = valid_hashes
194
-
195
- self.logger.info("索引重建完成,墓碑已清零")
253
+
254
+ self.logger.info(f"索引重建完成,保留{len(valid_ids)}个有效向量,墓碑已清零")
196
255
 
197
256
  def _get_metric(self, metric_str):
198
257
  """
@@ -200,7 +259,7 @@ class FaissIndex(BaseVDBIndex):
200
259
  Get distance metric: L2 or Inner Product
201
260
  """
202
261
  return faiss.METRIC_L2 if metric_str == "L2" else faiss.METRIC_INNER_PRODUCT
203
-
262
+
204
263
  def _build_index(self, vectors: List[np.ndarray], ids: List[str]):
205
264
  """
206
265
  构建初始索引并绑定 string ID → int ID 映射关系
@@ -224,12 +283,18 @@ class FaissIndex(BaseVDBIndex):
224
283
  self.logger.info("Wrapping index with IndexIDMap")
225
284
  self.index = faiss.IndexIDMap(self.index) # 仅当未包装时才包装
226
285
  self.index.add_with_ids(np_vectors, int_ids_np) # type: ignore
227
-
286
+
287
+ # 存储向量副本和哈希
288
+ for vector, string_id in zip(vectors, ids):
289
+ self.vector_store[string_id] = vector.astype("float32").flatten()
290
+ vector_hash = self._get_vector_hash(vector)
291
+ self.vector_hashes[vector_hash] = string_id
292
+
228
293
  def delete(self, string_id: str) -> int:
229
294
  """
230
295
  删除指定ID(物理删除或墓碑标记)
231
296
  Delete by ID (physical removal or tombstone marking)
232
-
297
+
233
298
  Returns:
234
299
  1: 删除成功
235
300
  0: 删除失败(ID不存在)
@@ -239,7 +304,7 @@ class FaissIndex(BaseVDBIndex):
239
304
  return 0
240
305
 
241
306
  int_id = self.rev_map[string_id]
242
-
307
+
243
308
  if self._deletion_supported:
244
309
  try:
245
310
  id_vector = np.array([int_id], dtype=np.int64)
@@ -247,7 +312,7 @@ class FaissIndex(BaseVDBIndex):
247
312
  # 清理映射关系
248
313
  del self.rev_map[string_id]
249
314
  del self.id_map[int_id]
250
- # 清理向量哈希
315
+ # 清理向量哈希和存储
251
316
  vector_hash_to_remove = None
252
317
  for vh, sid in self.vector_hashes.items():
253
318
  if sid == string_id:
@@ -255,6 +320,8 @@ class FaissIndex(BaseVDBIndex):
255
320
  break
256
321
  if vector_hash_to_remove:
257
322
  del self.vector_hashes[vector_hash_to_remove]
323
+ if string_id in self.vector_store:
324
+ del self.vector_store[string_id]
258
325
  self.logger.info(f"成功删除ID: {string_id}")
259
326
  return 1
260
327
  except Exception as e:
@@ -262,17 +329,17 @@ class FaissIndex(BaseVDBIndex):
262
329
  self.tombstones.add(string_id)
263
330
  else:
264
331
  self.tombstones.add(string_id)
265
-
332
+
266
333
  # 检查是否需要重建索引
267
334
  self._rebuild_index_if_needed()
268
335
  self.logger.info(f"ID {string_id} 已标记为墓碑")
269
336
  return 1
270
-
337
+
271
338
  def update(self, string_id: str, new_vector: np.ndarray) -> int:
272
339
  """
273
340
  更新指定 ID 的向量:保持原有映射关系,仅替换向量内容
274
341
  Update the vector for the given ID, preserving the existing ID mapping.
275
-
342
+
276
343
  Returns:
277
344
  1: 更新成功
278
345
  0: 更新失败
@@ -283,23 +350,28 @@ class FaissIndex(BaseVDBIndex):
283
350
  return self.insert(new_vector, string_id)
284
351
 
285
352
  int_id = self.rev_map[string_id]
286
-
353
+
287
354
  # 检查新向量是否与其他向量重复
288
355
  new_vector_hash = self._get_vector_hash(new_vector)
289
- if new_vector_hash in self.vector_hashes and self.vector_hashes[new_vector_hash] != string_id:
290
- self.logger.warning(f"更新失败: 向量与已存在的ID {self.vector_hashes[new_vector_hash]} 重复")
356
+ if (
357
+ new_vector_hash in self.vector_hashes
358
+ and self.vector_hashes[new_vector_hash] != string_id
359
+ ):
360
+ self.logger.warning(
361
+ f"更新失败: 向量与已存在的ID {self.vector_hashes[new_vector_hash]} 重复"
362
+ )
291
363
  return 0
292
364
 
293
365
  if self._deletion_supported:
294
366
  try:
295
- # 删除旧向量并插入新向量 / Remove old vector and insert new one
367
+ # 删除旧向量并插入新向量 / Remove old vector and insert new one
296
368
  id_vector = np.array([int_id], dtype=np.int64)
297
369
  self.index.remove_ids(id_vector) # type: ignore
298
370
  vector = np.expand_dims(new_vector.astype("float32"), axis=0)
299
371
  int_id_np = np.array([int_id], dtype=np.int64)
300
372
  self.index.add_with_ids(vector, int_id_np) # type: ignore
301
-
302
- # 更新向量哈希
373
+
374
+ # 更新向量哈希和存储
303
375
  old_hash_to_remove = None
304
376
  for vh, sid in self.vector_hashes.items():
305
377
  if sid == string_id:
@@ -308,7 +380,8 @@ class FaissIndex(BaseVDBIndex):
308
380
  if old_hash_to_remove:
309
381
  del self.vector_hashes[old_hash_to_remove]
310
382
  self.vector_hashes[new_vector_hash] = string_id
311
-
383
+ self.vector_store[string_id] = new_vector.astype("float32").flatten()
384
+
312
385
  self.logger.info(f"成功更新ID: {string_id}")
313
386
  return 1
314
387
  except Exception as e:
@@ -321,7 +394,7 @@ class FaissIndex(BaseVDBIndex):
321
394
  if old_int_id in self.id_map:
322
395
  del self.id_map[old_int_id]
323
396
  del self.rev_map[string_id]
324
-
397
+
325
398
  new_int_id = self.next_id
326
399
  self.next_id += 1
327
400
  self.rev_map[string_id] = new_int_id
@@ -329,8 +402,8 @@ class FaissIndex(BaseVDBIndex):
329
402
  vector = np.expand_dims(new_vector.astype("float32"), axis=0)
330
403
  int_id_np = np.array([new_int_id], dtype=np.int64)
331
404
  self.index.add_with_ids(vector, int_id_np) # type: ignore
332
-
333
- # 更新向量哈希
405
+
406
+ # 更新向量哈希和存储
334
407
  old_hash_to_remove = None
335
408
  for vh, sid in self.vector_hashes.items():
336
409
  if sid == string_id:
@@ -339,81 +412,109 @@ class FaissIndex(BaseVDBIndex):
339
412
  if old_hash_to_remove:
340
413
  del self.vector_hashes[old_hash_to_remove]
341
414
  self.vector_hashes[new_vector_hash] = string_id
342
-
415
+ self.vector_store[string_id] = new_vector.astype("float32").flatten()
416
+
343
417
  self.logger.info(f"成功更新ID: {string_id}")
344
418
  return 1
345
419
 
346
- def search(self, query_vector: np.ndarray, topk: int = 10, threshold: Optional[float] = None):
420
+ def search(
421
+ self,
422
+ query_vector: np.ndarray,
423
+ topk: int = 10,
424
+ threshold: Optional[float] = None,
425
+ ):
347
426
  """
348
427
  向量检索 / Vector search
349
428
  返回top_k结果(过滤墓碑) / Return top_k results (filter tombstones)
350
-
429
+
351
430
  Args:
352
431
  query_vector: 查询向量
353
432
  topk: 返回结果数量
354
- threshold: 距离阈值,超过此阈值的结果将被过滤
355
-
433
+ threshold: 相似度阈值,低于此阈值的结果将被过滤(适用于归一化向量)
434
+
356
435
  Returns:
357
- tuple: (结果IDs, 距离列表)
436
+ tuple: (结果IDs, 相似度列表)
358
437
  """
359
438
  # 检查索引是否为空
360
439
  if self.index.ntotal == 0:
361
440
  self.logger.warning("索引为空,无法进行检索")
362
441
  return [], []
363
-
442
+
364
443
  query_vector = np.expand_dims(query_vector.astype("float32"), axis=0)
365
-
444
+
366
445
  # 考虑墓碑数量,多查询一些结果
367
446
  search_k = topk + len(self.tombstones)
368
447
  if search_k > self.index.ntotal:
369
448
  search_k = self.index.ntotal
370
-
449
+
371
450
  distances, int_ids = self.index.search(query_vector, search_k) # type: ignore
372
-
451
+
373
452
  results = []
374
453
  filtered_distances = []
375
-
454
+
376
455
  for i, dist in zip(int_ids[0], distances[0]):
377
456
  if i == -1: # FAISS 空槽位标记
378
457
  continue
379
458
  string_id = self.id_map.get(i)
380
459
  if string_id and string_id not in self.tombstones:
381
- # 应用阈值过滤
382
- if threshold is not None and dist > threshold:
383
- continue
384
- results.append(string_id)
385
- filtered_distances.append(float(dist)) # 显式转为Python float
460
+ # 应用阈值过滤:根据索引类型决定过滤逻辑
461
+ should_filter = False
462
+ if threshold is not None:
463
+ # 对于IndexFlatIP(内积),距离越大表示越相似,应该保留距离大于阈值的结果
464
+ # 对于IndexFlatL2(L2距离),距离越小表示越相似,应该保留距离小于阈值的结果
465
+ index_type = self.config.get("index_type", "IndexFlatIP")
466
+ if "IP" in index_type: # Inner Product类型索引
467
+ if dist < threshold: # 内积小于阈值,相似度低,过滤
468
+ should_filter = True
469
+ else: # L2距离类型索引
470
+ if dist > threshold: # L2距离大于阈值,相似度低,过滤
471
+ should_filter = True
472
+ if not should_filter:
473
+ results.append(string_id)
474
+ filtered_distances.append(float(dist)) # 显式转为Python float
386
475
  if len(results) >= topk:
387
476
  break
388
-
477
+
389
478
  # 检查结果数量并给出警告
390
- available_count = len([sid for sid in self.id_map.values() if sid not in self.tombstones])
479
+ available_count = len(
480
+ [sid for sid in self.id_map.values() if sid not in self.tombstones]
481
+ )
391
482
  if len(results) < topk and len(results) < available_count:
392
483
  self.logger.warning(f"期望返回{topk}个结果,实际只找到{len(results)}个结果")
393
-
484
+
394
485
  if threshold is not None and len(results) == 0:
395
486
  self.logger.warning(f"在阈值{threshold}限制下,未找到任何结果")
396
-
487
+
397
488
  return results, filtered_distances
398
489
 
399
490
  def insert(self, vector: np.ndarray, string_id: str) -> int:
400
491
  """
401
492
  插入单个向量及其字符串 ID 到索引中
402
493
  Insert a single vector and its string ID into the index
403
-
494
+
404
495
  Returns:
405
496
  1: 插入成功
406
- 0: 插入失败(向量重复)
497
+ 0: 插入失败(向量重复或ID已存在)
407
498
  """
499
+ # 检查ID是否已存在且不在墓碑中
500
+ if string_id in self.rev_map and string_id not in self.tombstones:
501
+ self.logger.warning(f"ID {string_id} 已存在,无法插入")
502
+ return 0
503
+
408
504
  # 检查向量是否重复
409
505
  vector_hash = self._get_vector_hash(vector)
410
506
  if vector_hash in self.vector_hashes:
411
507
  existing_id = self.vector_hashes[vector_hash]
412
- self.logger.warning(f"向量重复: 尝试插入的向量与已存在的ID {existing_id} 相同")
413
- return 0
414
-
415
- if string_id in self.rev_map:
508
+ if existing_id not in self.tombstones: # 确保现有ID未被删除
509
+ self.logger.warning(
510
+ f"向量重复: 尝试插入的向量与已存在的ID {existing_id} 相同"
511
+ )
512
+ return 0
513
+
514
+ # 如果是墓碑状态的ID,复用其int_id
515
+ if string_id in self.rev_map and string_id in self.tombstones:
416
516
  int_id = self.rev_map[string_id]
517
+ self.tombstones.remove(string_id) # 移除墓碑标记
417
518
  else:
418
519
  int_id = self.next_id
419
520
  self.next_id += 1
@@ -422,43 +523,46 @@ class FaissIndex(BaseVDBIndex):
422
523
 
423
524
  vector = np.expand_dims(vector.astype("float32"), axis=0)
424
525
  int_id_np = np.array([int_id], dtype=np.int64)
425
- self.index.add_with_ids(vector, int_id_np) # type: ignore
426
-
427
- # 记录向量哈希
526
+ self.index.add_with_ids(vector, int_id_np) # type: ignore
527
+
528
+ # 记录向量哈希和存储向量副本
428
529
  self.vector_hashes[vector_hash] = string_id
429
-
530
+ self.vector_store[string_id] = vector.astype("float32").flatten() # 存储1D副本
531
+
430
532
  self.logger.info(f"成功插入向量,ID: {string_id}")
431
533
  return 1
432
-
534
+
433
535
  def batch_insert(self, vectors: List[np.ndarray], string_ids: List[str]) -> int:
434
536
  """
435
537
  批量插入多个向量及其对应的 string_id
436
538
  Batch insert multiple vectors and their corresponding string_id
437
-
539
+
438
540
  Returns:
439
541
  成功插入的向量数量
440
542
  """
441
543
  assert len(vectors) == len(string_ids), "Vectors and IDs must match in length"
442
-
544
+
443
545
  valid_vectors = []
444
546
  valid_ids = []
445
547
  success_count = 0
446
-
548
+
447
549
  for vector, string_id in zip(vectors, string_ids):
448
550
  # 检查向量是否重复
449
551
  vector_hash = self._get_vector_hash(vector)
450
552
  if vector_hash in self.vector_hashes:
451
553
  existing_id = self.vector_hashes[vector_hash]
452
- self.logger.warning(f"跳过重复向量: ID {string_id} 的向量与已存在的ID {existing_id} 相同")
554
+ self.logger.warning(
555
+ f"跳过重复向量: ID {string_id} 的向量与已存在的ID {existing_id} 相同"
556
+ )
453
557
  continue
454
-
558
+
455
559
  valid_vectors.append(vector)
456
560
  valid_ids.append(string_id)
457
-
561
+
458
562
  if not valid_vectors:
459
563
  self.logger.warning("批量插入:所有向量都重复,没有插入任何向量")
460
564
  return 0
461
-
565
+
462
566
  np_vectors = np.vstack(valid_vectors).astype("float32")
463
567
  int_ids = []
464
568
 
@@ -473,51 +577,54 @@ class FaissIndex(BaseVDBIndex):
473
577
  int_ids.append(int_id)
474
578
 
475
579
  int_ids_np = np.array(int_ids, dtype=np.int64)
476
-
580
+
477
581
  # 确保索引被IDMap包装
478
582
  if not isinstance(self.index, faiss.IndexIDMap):
479
583
  self.logger.info("Wrapping index with IndexIDMap")
480
584
  self.index = faiss.IndexIDMap(self.index)
481
-
585
+
482
586
  self.index.add_with_ids(np_vectors, int_ids_np) # type: ignore
483
-
484
- # 记录向量哈希
587
+
588
+ # 记录向量哈希和存储
485
589
  for vector, string_id in zip(valid_vectors, valid_ids):
486
590
  vector_hash = self._get_vector_hash(vector)
487
591
  self.vector_hashes[vector_hash] = string_id
488
-
592
+ self.vector_store[string_id] = vector.astype("float32").flatten()
593
+
489
594
  success_count = len(valid_vectors)
490
595
  self.logger.info(f"批量插入完成,成功插入 {success_count} 个向量")
491
596
  return success_count
492
597
 
493
598
  def store(self, dir_path: str) -> Dict[str, Any]:
494
- """
495
- 将FAISS索引、参数和映射全部保存到指定目录。
496
- """
497
- os.makedirs(dir_path, exist_ok=True)
498
- # 1. 保存faiss主索引
499
- faiss.write_index(self.index, os.path.join(dir_path, "faiss.index"))
500
- # 2. 保存id映射
501
- with open(os.path.join(dir_path, "id_map.pkl"), "wb") as f:
502
- pickle.dump(self.id_map, f)
503
- with open(os.path.join(dir_path, "rev_map.pkl"), "wb") as f:
504
- pickle.dump(self.rev_map, f)
505
- with open(os.path.join(dir_path, "tombstones.pkl"), "wb") as f:
506
- pickle.dump(self.tombstones, f)
507
- with open(os.path.join(dir_path, "vector_hashes.pkl"), "wb") as f:
508
- pickle.dump(self.vector_hashes, f)
509
- # 3. 保存参数(如dim、下一个ID、自定义config等)
510
- meta = {
511
- "index_name": self.index_name,
512
- "dim": self.dim,
513
- "next_id": self.next_id,
514
- "deletion_supported": self._deletion_supported,
515
- "tombstone_threshold": self.tombstone_threshold,
516
- "config": getattr(self, "config", {}), # 若有config则保存
517
- }
518
- with open(os.path.join(dir_path, "meta.json"), "w", encoding="utf-8") as f:
519
- json.dump(meta, f, ensure_ascii=False, indent=2)
520
- return {"index_path": dir_path}
599
+ """
600
+ 将FAISS索引、参数和映射全部保存到指定目录。
601
+ """
602
+ os.makedirs(dir_path, exist_ok=True)
603
+ # 1. 保存faiss主索引
604
+ faiss.write_index(self.index, os.path.join(dir_path, "faiss.index"))
605
+ # 2. 保存id映射
606
+ with open(os.path.join(dir_path, "id_map.pkl"), "wb") as f:
607
+ pickle.dump(self.id_map, f)
608
+ with open(os.path.join(dir_path, "rev_map.pkl"), "wb") as f:
609
+ pickle.dump(self.rev_map, f)
610
+ with open(os.path.join(dir_path, "tombstones.pkl"), "wb") as f:
611
+ pickle.dump(self.tombstones, f)
612
+ with open(os.path.join(dir_path, "vector_hashes.pkl"), "wb") as f:
613
+ pickle.dump(self.vector_hashes, f)
614
+ with open(os.path.join(dir_path, "vector_store.pkl"), "wb") as f:
615
+ pickle.dump(self.vector_store, f)
616
+ # 3. 保存参数(如dim、下一个ID、自定义config等)
617
+ meta = {
618
+ "index_name": self.index_name,
619
+ "dim": self.dim,
620
+ "next_id": self.next_id,
621
+ "deletion_supported": self._deletion_supported,
622
+ "tombstone_threshold": self.tombstone_threshold,
623
+ "config": getattr(self, "config", {}), # 若有config则保存
624
+ }
625
+ with open(os.path.join(dir_path, "meta.json"), "w", encoding="utf-8") as f:
626
+ json.dump(meta, f, ensure_ascii=False, indent=2)
627
+ return {"index_path": dir_path}
521
628
 
522
629
  def _load_data(self, dir_path: str):
523
630
  """
@@ -525,7 +632,7 @@ class FaissIndex(BaseVDBIndex):
525
632
  """
526
633
  # 加载faiss索引
527
634
  self.index = faiss.read_index(os.path.join(dir_path, "faiss.index"))
528
-
635
+
529
636
  # 加载ID映射
530
637
  with open(os.path.join(dir_path, "id_map.pkl"), "rb") as f:
531
638
  self.id_map = pickle.load(f)
@@ -533,7 +640,7 @@ class FaissIndex(BaseVDBIndex):
533
640
  self.rev_map = pickle.load(f)
534
641
  with open(os.path.join(dir_path, "tombstones.pkl"), "rb") as f:
535
642
  self.tombstones = pickle.load(f)
536
-
643
+
537
644
  # 加载向量哈希(如果存在)
538
645
  vector_hashes_path = os.path.join(dir_path, "vector_hashes.pkl")
539
646
  if os.path.exists(vector_hashes_path):
@@ -542,6 +649,14 @@ class FaissIndex(BaseVDBIndex):
542
649
  else:
543
650
  self.vector_hashes = {}
544
651
 
652
+ # 加载向量存储(如果存在)
653
+ vector_store_path = os.path.join(dir_path, "vector_store.pkl")
654
+ if os.path.exists(vector_store_path):
655
+ with open(vector_store_path, "rb") as f:
656
+ self.vector_store = pickle.load(f)
657
+ else:
658
+ self.vector_store = {}
659
+
545
660
  @classmethod
546
661
  def load(cls, name: str, load_path: str) -> "FaissIndex":
547
662
  """
@@ -551,16 +666,16 @@ class FaissIndex(BaseVDBIndex):
551
666
  meta_path = os.path.join(load_path, "meta.json")
552
667
  with open(meta_path, "r", encoding="utf-8") as f:
553
668
  meta = json.load(f)
554
-
669
+
555
670
  # 验证索引名称
556
671
  saved_name = meta["index_name"]
557
672
  if name != saved_name:
558
673
  raise ValueError(f"索引名称不匹配: 期望 {name}, 实际 {saved_name}")
559
-
674
+
560
675
  # 创建实例但不调用__init__,避免重复初始化索引
561
676
  instance = cls.__new__(cls)
562
677
  super(FaissIndex, instance).__init__()
563
-
678
+
564
679
  # 直接设置从存储中恢复的属性
565
680
  instance.config = meta.get("config", {})
566
681
  instance.logger = CustomLogger()
@@ -570,24 +685,36 @@ class FaissIndex(BaseVDBIndex):
570
685
  instance._deletion_supported = meta.get("deletion_supported", True)
571
686
  instance.tombstone_threshold = meta.get("tombstone_threshold", 30)
572
687
  instance.vector_hashes = {} # 将在_load_data中加载
573
-
688
+ instance.vector_store = {} # 将在_load_data中加载
689
+
574
690
  # 加载保存的数据
575
691
  instance._load_data(load_path)
576
692
  return instance
577
693
 
694
+
578
695
  if __name__ == "__main__":
579
696
  import os
580
697
  import shutil
698
+
581
699
  import numpy as np
582
700
 
583
701
  def colored(text, color):
584
702
  # color: "green", "red", "yellow"
585
- colors = {"green": "\033[92m", "red": "\033[91m", "yellow": "\033[93m", "reset": "\033[0m"}
703
+ colors = {
704
+ "green": "\033[92m",
705
+ "red": "\033[91m",
706
+ "yellow": "\033[93m",
707
+ "reset": "\033[0m",
708
+ }
586
709
  return colors.get(color, "") + text + colors["reset"]
587
710
 
588
- def print_test_case(desc, expected_ids, expected_dists, actual_ids, actual_dists, digits=4):
711
+ def print_test_case(
712
+ desc, expected_ids, expected_dists, actual_ids, actual_dists, digits=4
713
+ ):
589
714
  ids_pass = list(expected_ids) == list(actual_ids)
590
- dists_pass = all(abs(e-a) < 10**-digits for e,a in zip(expected_dists, actual_dists))
715
+ dists_pass = all(
716
+ abs(e - a) < 10**-digits for e, a in zip(expected_dists, actual_dists)
717
+ )
591
718
  status = "通过" if ids_pass and dists_pass else "不通过"
592
719
  color = "green" if status == "通过" else "red"
593
720
  print(f"【{desc}】")
@@ -608,13 +735,24 @@ if __name__ == "__main__":
608
735
  vectors = [
609
736
  np.array([1.0, 0.0, 0.0, 0.0]),
610
737
  np.array([0.0, 1.0, 0.0, 0.0]),
611
- np.array([0.0, 0.0, 1.0, 0.0])
738
+ np.array([0.0, 0.0, 1.0, 0.0]),
612
739
  ]
613
740
  ids = ["id1", "id2", "id3"]
614
741
 
615
742
  # 使用新的初始化方式
616
- config = {"name": index_name, "dim": dim, "tombstone_threshold": 2} # 设置较小的墓碑阈值用于测试
617
- index = FaissIndex(config=config, vectors=vectors, ids=ids)
743
+ config = {
744
+ "name": index_name,
745
+ "dim": dim,
746
+ "tombstone_threshold": 2,
747
+ } # 设置较小的墓碑阈值用于测试
748
+ index = FaissIndex(config=config)
749
+
750
+ # 先插入初始数据
751
+ for vector, vector_id in zip(vectors, ids):
752
+ result = index.insert(vector, vector_id)
753
+ if result != 1:
754
+ print(f"初始插入失败: {vector_id}")
755
+
618
756
  # 1. 检索
619
757
  q1 = np.array([1.0, 0.0, 0.0, 0.0])
620
758
  r_ids, r_dists = index.search(q1, 3)
@@ -625,7 +763,9 @@ if __name__ == "__main__":
625
763
  print(f"插入结果: {result} (期望: 1)")
626
764
  q2 = np.array([0.0, 0.0, 0.0, 1.0])
627
765
  r_ids, r_dists = index.search(q2, 4)
628
- print_test_case("插入后检索", ["id4", "id1", "id2", "id3"], [0.0, 2.0, 2.0, 2.0], r_ids, r_dists)
766
+ print_test_case(
767
+ "插入后检索", ["id4", "id1", "id2", "id3"], [0.0, 2.0, 2.0, 2.0], r_ids, r_dists
768
+ )
629
769
 
630
770
  # 3. 测试重复向量插入
631
771
  result = index.insert(np.array([0.0, 0.0, 0.0, 1.0]), "id5") # 重复向量
@@ -636,28 +776,38 @@ if __name__ == "__main__":
636
776
  print(f"更新结果: {result} (期望: 1)")
637
777
  q3 = np.array([0.5, 0.5, 0.0, 0.0])
638
778
  r_ids, r_dists = index.search(q3, 4)
639
- print_test_case("更新后检索", ['id1', 'id2', 'id3', 'id4'], [0.0, 0.5, 1.5, 1.5], r_ids, r_dists)
779
+ print_test_case(
780
+ "更新后检索", ["id1", "id2", "id3", "id4"], [0.0, 0.5, 1.5, 1.5], r_ids, r_dists
781
+ )
640
782
 
641
783
  # 5. 删除向量
642
784
  result = index.delete("id2")
643
785
  print(f"删除结果: {result} (期望: 1)")
644
786
  q4 = np.array([1.0, 0.0, 0.0, 0.0])
645
787
  r_ids, r_dists = index.search(q4, 4)
646
- print_test_case("删除后检索", ['id1', 'id3', 'id4'], [0.5, 2.0, 2.0], r_ids, r_dists)
788
+ print_test_case(
789
+ "删除后检索", ["id1", "id3", "id4"], [0.5, 2.0, 2.0], r_ids, r_dists
790
+ )
647
791
 
648
792
  # 6. 测试阈值检索
649
793
  r_ids, r_dists = index.search(q4, 4, threshold=1.0)
650
- print_test_case("阈值检索(threshold=1.0)", ['id1'], [0.5], r_ids, r_dists)
794
+ print_test_case("阈值检索(threshold=1.0)", ["id1"], [0.5], r_ids, r_dists)
651
795
 
652
796
  # 7. 批量插入
653
- count = index.batch_insert([
654
- np.array([0.1, 0.1, 0.1, 0.1]),
655
- np.array([0.2, 0.2, 0.2, 0.2])
656
- ], ["id5", "id6"])
797
+ count = index.batch_insert(
798
+ [np.array([0.1, 0.1, 0.1, 0.1]), np.array([0.2, 0.2, 0.2, 0.2])], ["id5", "id6"]
799
+ )
657
800
  print(f"批量插入结果: {count} (期望: 2)")
658
801
  q5 = np.array([0.1, 0.1, 0.1, 0.1])
659
802
  r_ids, r_dists = index.search(q5, 6)
660
- print_test_case("批量插入后检索", ['id5', 'id6', 'id1', 'id3', 'id4'], [0.0, 0.04, 0.34, 0.84, 0.84], r_ids[:5], r_dists[:5], 2)
803
+ print_test_case(
804
+ "批量插入后检索",
805
+ ["id5", "id6", "id1", "id3", "id4"],
806
+ [0.0, 0.04, 0.34, 0.84, 0.84],
807
+ r_ids[:5],
808
+ r_dists[:5],
809
+ 2,
810
+ )
661
811
 
662
812
  # 8. 测试墓碑阈值重建(删除多个向量触发重建)
663
813
  print(colored("\n--- 测试墓碑阈值重建 ---", "yellow"))
@@ -681,8 +831,10 @@ if __name__ == "__main__":
681
831
 
682
832
  # 注意:id3和id4已被删除并保存为墓碑,所以恢复后不会出现在结果中
683
833
  r_ids, r_dists = index2.search(np.array([0.1, 0.1, 0.1, 0.1]), 5)
684
- print_test_case("恢复后检索", ["id5", "id6", "id1"], [0.0, 0.04, 0.34], r_ids, r_dists, 2)
685
-
834
+ print_test_case(
835
+ "恢复后检索", ["id5", "id6", "id1"], [0.0, 0.04, 0.34], r_ids, r_dists, 2
836
+ )
837
+
686
838
  # 验证墓碑状态
687
839
  print(f"当前墓碑数量: {len(index2.tombstones)}")
688
840
  print(f"墓碑内容: {index2.tombstones}")
@@ -696,5 +848,3 @@ if __name__ == "__main__":
696
848
  print(colored("所有数据已删除!", "green"))
697
849
  else:
698
850
  print(colored("未执行删除。", "yellow"))
699
-
700
-