iris-vector-graph 1.98.0__tar.gz → 1.99.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (606) hide show
  1. iris_vector_graph-1.98.0/README.md → iris_vector_graph-1.99.0/PKG-INFO +105 -0
  2. iris_vector_graph-1.98.0/PKG-INFO → iris_vector_graph-1.99.0/README.md +22 -77
  3. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/__init__.py +1 -0
  4. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/_validate.py +21 -0
  5. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/cypher/translator.py +174 -1
  6. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/engine.py +136 -0
  7. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/schema.py +49 -0
  8. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/store_protocol.py +10 -0
  9. iris_vector_graph-1.99.0/iris_vector_graph/stores/arno_bridge.py +784 -0
  10. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/stores/iris_sql_store.py +467 -187
  11. iris_vector_graph-1.99.0/iris_vector_graph/stores/lazy_kg.py +214 -0
  12. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/pyproject.toml +9 -1
  13. iris_vector_graph-1.99.0/tests/e2e/fixtures/community_graphs.py +172 -0
  14. iris_vector_graph-1.99.0/tests/e2e/test_communities_e2e.py +550 -0
  15. iris_vector_graph-1.99.0/tests/e2e/test_communities_perf.py +100 -0
  16. iris_vector_graph-1.99.0/tests/e2e/test_lazy_kg_e2e.py +81 -0
  17. iris_vector_graph-1.99.0/tests/perf/test_leiden_four_way.py +413 -0
  18. iris_vector_graph-1.99.0/tests/unit/cypher/__init__.py +0 -0
  19. iris_vector_graph-1.99.0/tests/unit/test_arno_bridge.py +132 -0
  20. iris_vector_graph-1.99.0/tests/unit/test_communities_translator.py +73 -0
  21. iris_vector_graph-1.99.0/tests/unit/test_communities_unit.py +171 -0
  22. iris_vector_graph-1.99.0/tests/unit/test_lazy_kg.py +196 -0
  23. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_store_protocol.py +15 -0
  24. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/.gitignore +0 -0
  25. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/LICENSE +0 -0
  26. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/examples/demo_biomedical.py +0 -0
  27. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/examples/demo_fraud_detection.py +0 -0
  28. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/examples/demo_fraud_detection_sql.py +0 -0
  29. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/examples/demo_utils.py +0 -0
  30. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/examples/demo_working_system.py +0 -0
  31. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/examples/domains/__init__.py +0 -0
  32. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/examples/domains/biomedical/__init__.py +0 -0
  33. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/examples/domains/biomedical/loaders.py +0 -0
  34. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/examples/domains/biomedical/resolver.py +0 -0
  35. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/examples/domains/biomedical/types.py +0 -0
  36. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/examples/domains/biomedical_legacy/__init__.py +0 -0
  37. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/examples/domains/biomedical_legacy/biomedical_engine.py +0 -0
  38. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/examples/domains/biomedical_legacy/biomedical_schema.py +0 -0
  39. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/examples/domains/biomedical_legacy/legacy_wrapper.py +0 -0
  40. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/examples/domains/fraud/__init__.py +0 -0
  41. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/examples/domains/fraud/loaders.py +0 -0
  42. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/examples/domains/fraud/resolver.py +0 -0
  43. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/examples/domains/fraud/types.py +0 -0
  44. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/examples/graphQL.http +0 -0
  45. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/examples/hybrid_vector_graph_query.cypher +0 -0
  46. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/examples/rest.http +0 -0
  47. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_src/src/Graph/KG/Algorithms.cls +0 -0
  48. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_src/src/Graph/KG/ArnoAccel.cls +0 -0
  49. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_src/src/Graph/KG/BM25Index.cls +0 -0
  50. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_src/src/Graph/KG/BenchFormat.cls +0 -0
  51. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_src/src/Graph/KG/BenchSeeder.cls +0 -0
  52. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_src/src/Graph/KG/Benchmark.cls +0 -0
  53. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_src/src/Graph/KG/Centrality.cls +0 -0
  54. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_src/src/Graph/KG/Edge.cls +0 -0
  55. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_src/src/Graph/KG/EdgeScan.cls +0 -0
  56. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_src/src/Graph/KG/EmbedQueue.cls +0 -0
  57. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_src/src/Graph/KG/GraphIndex.cls +0 -0
  58. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_src/src/Graph/KG/IVFIndex.cls +0 -0
  59. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_src/src/Graph/KG/Loader.cls +0 -0
  60. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_src/src/Graph/KG/MCPService.cls +0 -0
  61. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_src/src/Graph/KG/MCPToolSet.cls +0 -0
  62. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_src/src/Graph/KG/MCPTools.cls +0 -0
  63. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_src/src/Graph/KG/Meta.cls +0 -0
  64. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_src/src/Graph/KG/NKGAccel.cls +0 -0
  65. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_src/src/Graph/KG/PLAIDSearch.cls +0 -0
  66. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_src/src/Graph/KG/PageRank.cls +0 -0
  67. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_src/src/Graph/KG/PyOps.cls +0 -0
  68. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_src/src/Graph/KG/Service.cls +0 -0
  69. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_src/src/Graph/KG/Snapshot.cls +0 -0
  70. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_src/src/Graph/KG/Subgraph.cls +0 -0
  71. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_src/src/Graph/KG/TemporalIndex.cls +0 -0
  72. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_src/src/Graph/KG/TestEdge.cls +0 -0
  73. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_src/src/Graph/KG/Traversal.cls +0 -0
  74. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_src/src/Graph/KG/VecIndex.cls +0 -0
  75. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_src/src/IVG/CypherEngine.cls +0 -0
  76. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_src/src/IVG/Percentile.cls +0 -0
  77. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_src/src/PageRankEmbedded.cls +0 -0
  78. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_src/src/User.Exec.cls +0 -0
  79. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_src/src/iris/vector/graph/GraphOperators.cls +0 -0
  80. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/bolt_server.py +0 -0
  81. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/0-b124e26129aa436b26fe.bundle.js +0 -0
  82. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/1-b124e26129aa436b26fe.bundle.js +0 -0
  83. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/10-b124e26129aa436b26fe.bundle.js +0 -0
  84. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/11-b124e26129aa436b26fe.bundle.js +0 -0
  85. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/12-b124e26129aa436b26fe.bundle.js +0 -0
  86. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/13-b124e26129aa436b26fe.bundle.js +0 -0
  87. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/14-b124e26129aa436b26fe.bundle.js +0 -0
  88. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/15-b124e26129aa436b26fe.bundle.js +0 -0
  89. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/16-b124e26129aa436b26fe.bundle.js +0 -0
  90. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/17-b124e26129aa436b26fe.bundle.js +0 -0
  91. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/18-b124e26129aa436b26fe.bundle.js +0 -0
  92. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/19-b124e26129aa436b26fe.bundle.js +0 -0
  93. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/20-b124e26129aa436b26fe.bundle.js +0 -0
  94. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/21-b124e26129aa436b26fe.bundle.js +0 -0
  95. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/22-b124e26129aa436b26fe.bundle.js +0 -0
  96. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/23-b124e26129aa436b26fe.bundle.js +0 -0
  97. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/24-b124e26129aa436b26fe.bundle.js +0 -0
  98. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/25-b124e26129aa436b26fe.bundle.js +0 -0
  99. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/26-b124e26129aa436b26fe.bundle.js +0 -0
  100. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/27-b124e26129aa436b26fe.bundle.js +0 -0
  101. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/28-b124e26129aa436b26fe.bundle.js +0 -0
  102. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/29-b124e26129aa436b26fe.bundle.js +0 -0
  103. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/30-b124e26129aa436b26fe.bundle.js +0 -0
  104. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/31-b124e26129aa436b26fe.bundle.js +0 -0
  105. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/32-b124e26129aa436b26fe.bundle.js +0 -0
  106. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/33-b124e26129aa436b26fe.bundle.js +0 -0
  107. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/34-b124e26129aa436b26fe.bundle.js +0 -0
  108. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/35-b124e26129aa436b26fe.bundle.js +0 -0
  109. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/36-b124e26129aa436b26fe.bundle.js +0 -0
  110. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/37-b124e26129aa436b26fe.bundle.js +0 -0
  111. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/38-b124e26129aa436b26fe.bundle.js +0 -0
  112. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/39-b124e26129aa436b26fe.bundle.js +0 -0
  113. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/40-b124e26129aa436b26fe.bundle.js +0 -0
  114. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/41-b124e26129aa436b26fe.bundle.js +0 -0
  115. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/42-b124e26129aa436b26fe.bundle.js +0 -0
  116. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/43-b124e26129aa436b26fe.bundle.js +0 -0
  117. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/44-b124e26129aa436b26fe.bundle.js +0 -0
  118. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/45-b124e26129aa436b26fe.bundle.js +0 -0
  119. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/46-b124e26129aa436b26fe.bundle.js +0 -0
  120. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/47-b124e26129aa436b26fe.bundle.js +0 -0
  121. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/48-b124e26129aa436b26fe.bundle.js +0 -0
  122. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/49-b124e26129aa436b26fe.bundle.js +0 -0
  123. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/50-b124e26129aa436b26fe.bundle.js +0 -0
  124. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/51-b124e26129aa436b26fe.bundle.js +0 -0
  125. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/52-b124e26129aa436b26fe.bundle.js +0 -0
  126. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/53-b124e26129aa436b26fe.bundle.js +0 -0
  127. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/54-b124e26129aa436b26fe.bundle.js +0 -0
  128. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/55-b124e26129aa436b26fe.bundle.js +0 -0
  129. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/56-b124e26129aa436b26fe.bundle.js +0 -0
  130. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/57-b124e26129aa436b26fe.bundle.js +0 -0
  131. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/58-b124e26129aa436b26fe.bundle.js +0 -0
  132. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/59-b124e26129aa436b26fe.bundle.js +0 -0
  133. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/6-b124e26129aa436b26fe.bundle.js +0 -0
  134. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/60-b124e26129aa436b26fe.bundle.js +0 -0
  135. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/61-b124e26129aa436b26fe.bundle.js +0 -0
  136. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/62-b124e26129aa436b26fe.bundle.js +0 -0
  137. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/63-b124e26129aa436b26fe.bundle.js +0 -0
  138. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/64-b124e26129aa436b26fe.bundle.js +0 -0
  139. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/65-b124e26129aa436b26fe.bundle.js +0 -0
  140. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/66-b124e26129aa436b26fe.bundle.js +0 -0
  141. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/67-b124e26129aa436b26fe.bundle.js +0 -0
  142. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/68-b124e26129aa436b26fe.bundle.js +0 -0
  143. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/69-b124e26129aa436b26fe.bundle.js +0 -0
  144. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/7-b124e26129aa436b26fe.bundle.js +0 -0
  145. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/70-b124e26129aa436b26fe.bundle.js +0 -0
  146. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/71-b124e26129aa436b26fe.bundle.js +0 -0
  147. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/72-b124e26129aa436b26fe.bundle.js +0 -0
  148. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/73-b124e26129aa436b26fe.bundle.js +0 -0
  149. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/74-b124e26129aa436b26fe.bundle.js +0 -0
  150. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/75-b124e26129aa436b26fe.bundle.js +0 -0
  151. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/8-b124e26129aa436b26fe.bundle.js +0 -0
  152. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/9-b124e26129aa436b26fe.bundle.js +0 -0
  153. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/app-b124e26129aa436b26fe.js +0 -0
  154. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/filter-a7c44e713bf19d31f6b2849160b1bba8.svg +0 -0
  155. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Bold.eot +0 -0
  156. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Bold.ttf +0 -0
  157. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Bold.woff +0 -0
  158. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Bold.woff2 +0 -0
  159. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Light.eot +0 -0
  160. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Light.ttf +0 -0
  161. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Light.woff +0 -0
  162. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Light.woff2 +0 -0
  163. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Medium.eot +0 -0
  164. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Medium.ttf +0 -0
  165. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Medium.woff +0 -0
  166. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Medium.woff2 +0 -0
  167. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Regular.eot +0 -0
  168. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Regular.ttf +0 -0
  169. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Regular.woff +0 -0
  170. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Regular.woff2 +0 -0
  171. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/fonts/OpenSans-Bold.ttf +0 -0
  172. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/fonts/OpenSans-BoldItalic.ttf +0 -0
  173. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/fonts/OpenSans-ExtraBold.ttf +0 -0
  174. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/fonts/OpenSans-ExtraBoldItalic.ttf +0 -0
  175. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/fonts/OpenSans-Italic.ttf +0 -0
  176. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/fonts/OpenSans-Light.ttf +0 -0
  177. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/fonts/OpenSans-LightItalic.ttf +0 -0
  178. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/fonts/OpenSans-Regular.ttf +0 -0
  179. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/fonts/OpenSans-Semibold.ttf +0 -0
  180. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/fonts/OpenSans-SemiboldItalic.ttf +0 -0
  181. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/fonts/codicon.ttf +0 -0
  182. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/fonts/filter.svg +0 -0
  183. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/fonts/fontawesome-webfont.eot +0 -0
  184. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/fonts/fontawesome-webfont.svg +0 -0
  185. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/fonts/fontawesome-webfont.ttf +0 -0
  186. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/fonts/fontawesome-webfont.woff +0 -0
  187. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/fonts/fontawesome-webfont.woff2 +0 -0
  188. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/fonts/group-by.svg +0 -0
  189. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/fonts/neo4j-world.eot +0 -0
  190. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/fonts/neo4j-world.svg +0 -0
  191. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/fonts/neo4j-world.ttf +0 -0
  192. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/fonts/neo4j-world.woff +0 -0
  193. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/fonts/sort.svg +0 -0
  194. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/fonts/sort1.svg +0 -0
  195. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/fonts/sort2.svg +0 -0
  196. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/fonts/streamline.eot +0 -0
  197. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/fonts/streamline.svg +0 -0
  198. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/fonts/streamline.ttf +0 -0
  199. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/fonts/streamline.woff +0 -0
  200. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/group-by-89c6aaa756bc3548cc6ab3d2be4d2862.svg +0 -0
  201. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/Favorites.mp4 +0 -0
  202. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/Keystrokes.mp4 +0 -0
  203. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/ProjectFiles.mp4 +0 -0
  204. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/ReusableFrame.mp4 +0 -0
  205. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/SidebarDB_Iinfo.png +0 -0
  206. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/Stream.png +0 -0
  207. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/aura-logo-inverted.svg +0 -0
  208. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/aura-logo.svg +0 -0
  209. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/books.png +0 -0
  210. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/clusters.svg +0 -0
  211. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/community.jpg +0 -0
  212. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/device-icons/android-icon-144x144.png +0 -0
  213. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/device-icons/android-icon-192x192.png +0 -0
  214. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/device-icons/android-icon-36x36.png +0 -0
  215. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/device-icons/android-icon-48x48.png +0 -0
  216. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/device-icons/android-icon-72x72.png +0 -0
  217. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/device-icons/android-icon-96x96.png +0 -0
  218. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-114x114.png +0 -0
  219. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-120x120.png +0 -0
  220. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-144x144.png +0 -0
  221. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-152x152.png +0 -0
  222. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-180x180.png +0 -0
  223. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-57x57.png +0 -0
  224. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-60x60.png +0 -0
  225. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-72x72.png +0 -0
  226. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-76x76.png +0 -0
  227. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-precomposed.png +0 -0
  228. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon.png +0 -0
  229. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/device-icons/browserconfig.xml +0 -0
  230. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/device-icons/favicon-16x16.png +0 -0
  231. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/device-icons/favicon-32x32.png +0 -0
  232. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/device-icons/favicon-96x96.png +0 -0
  233. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/device-icons/favicon.ico +0 -0
  234. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/device-icons/manifest.json +0 -0
  235. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/device-icons/ms-icon-144x144.png +0 -0
  236. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/device-icons/ms-icon-150x150.png +0 -0
  237. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/device-icons/ms-icon-310x310.png +0 -0
  238. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/device-icons/ms-icon-70x70.png +0 -0
  239. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/device-icons/neo4j-browser-canary.svg +0 -0
  240. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/device-icons/neo4j-browser.svg +0 -0
  241. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/labeled_node.png +0 -0
  242. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/more_nodes.png +0 -0
  243. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/neo4j-favicon.ico +0 -0
  244. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/neo4j-logo-inverted.svg +0 -0
  245. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/neo4j-logo.svg +0 -0
  246. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/northwind/customer-orders.png +0 -0
  247. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/northwind/order-graph.png +0 -0
  248. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/northwind/product-category-supplier.png +0 -0
  249. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/northwind/product-graph.png +0 -0
  250. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/one_node.png +0 -0
  251. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/query-plan-operator-cost.svg +0 -0
  252. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/query-plan-operator-details.svg +0 -0
  253. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/query-plan-operator-rows.svg +0 -0
  254. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/query-plan.svg +0 -0
  255. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/rel-props.png +0 -0
  256. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/relationships.png +0 -0
  257. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/screen_code_frame.png +0 -0
  258. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/screen_cypher_warn.png +0 -0
  259. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/screen_editor.png +0 -0
  260. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/screen_sidebar.png +0 -0
  261. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/images/screen_stream.png +0 -0
  262. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/sort-8d6f482c21de572ceeb5ac93623e6c97.svg +0 -0
  263. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/sort1-d2dc515571213fc0ca99b0341b88e413.svg +0 -0
  264. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/assets/sort2-31050964e7eb2042325f7bcbba3d58ad.svg +0 -0
  265. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/bolt-worker-dfa551eb0861cc080843.js +0 -0
  266. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/cypher-editor-b124e26129aa436b26fe.bundle.js +0 -0
  267. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/editor-455af92e7e1dc39fdbc8060f6680ab32.worker.js +0 -0
  268. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/index.html +0 -0
  269. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/manifest.json +0 -0
  270. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/CoseBilkentLayout.worker-FEt6e_rV.js +0 -0
  271. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/HierarchicalLayout.worker-O6WHYssL.js +0 -0
  272. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/asciidoc.8O6YIVRy.js +0 -0
  273. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/auto-track.BlKugDvg.js +0 -0
  274. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/bash.CLAyaf9k.js +0 -0
  275. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/c.l4fEI10z.js +0 -0
  276. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/connect-icon-Br2hQy_e.svg +0 -0
  277. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/csharp.ChqrQYCS.js +0 -0
  278. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/css-extras.Bi-4v17d.js +0 -0
  279. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/css.B1LHiudN.js +0 -0
  280. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/cypher-editor-auto-completions.gif +0 -0
  281. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/cypher-editor-inline-help.png +0 -0
  282. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/cypher-editor-linting.png +0 -0
  283. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/cypher-editor-syntax-highlighting.png +0 -0
  284. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/cypher-reference.gif +0 -0
  285. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/cypher.C3qdyJ5B.js +0 -0
  286. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/docker.CF7EZT1T.js +0 -0
  287. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/fira-code-400-regular-normal-BzypJxJk.woff2 +0 -0
  288. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/fira-code-500-medium-normal-CRWzqcWa.woff2 +0 -0
  289. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/fira-code-700-bold-normal-hUmNV4O0.woff2 +0 -0
  290. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/go.FsJyBHVG.js +0 -0
  291. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/graphql.BlTzkzAJ.js +0 -0
  292. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/history-quick-search.gif +0 -0
  293. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/index-CY0cZcsW.js +0 -0
  294. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/index-H7L207gH.css +0 -0
  295. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/index.BpRu7Js3.js +0 -0
  296. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/index.C74acnU7.js +0 -0
  297. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/index.CHatcJcU.js +0 -0
  298. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/index.D6ZMQedT.js +0 -0
  299. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/index.DPZla5MT.js +0 -0
  300. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/index.dzIUqrzq.js +0 -0
  301. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/index.leyiHvaQ.js +0 -0
  302. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/index.qJ6VE118.js +0 -0
  303. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/index.umd.B9yhfa5Y.js +0 -0
  304. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/is-plan-event-enabled.DeNtQvA5.js +0 -0
  305. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/java.BBXwBh9f.js +0 -0
  306. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/java.CQ1iJ0-D.js +0 -0
  307. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/javadoc.UnquSOIj.js +0 -0
  308. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/javascript.CYTqTa0W.js +0 -0
  309. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/json.BIkJg-Cj.js +0 -0
  310. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/jsx.Cy_hP1z6.js +0 -0
  311. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/kotlin.D_6l0VkM.js +0 -0
  312. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/lintWorker-QNEp56W3.js +0 -0
  313. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/logo-aura-white-DCfUnkCN.svg +0 -0
  314. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/movie-model.png +0 -0
  315. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/movies-active-B2SzHIc1.svg +0 -0
  316. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/neo4j-logo-active-CieUxroh.svg +0 -0
  317. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/patterned-banner-background-C_nO-Yn8.svg +0 -0
  318. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/php.BKb6XVba.js +0 -0
  319. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/plan-graph-worker-s17nF19Q.js +0 -0
  320. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/public-sans-300-light-normal-CG9e8kLa.woff2 +0 -0
  321. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/public-sans-400-regular-italic-D9FlViiB.woff2 +0 -0
  322. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/public-sans-400-regular-normal-D4F9yfFi.woff2 +0 -0
  323. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/public-sans-500-medium-normal-ChZcBEnJ.woff2 +0 -0
  324. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/public-sans-600-semi-bold-normal-Ck6TyfRI.woff2 +0 -0
  325. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/public-sans-700-bold-normal-CGjRhW-d.woff2 +0 -0
  326. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/python.tCcUC3U7.js +0 -0
  327. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/query-fundamentals-active-jvTJU1K2.svg +0 -0
  328. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/query.snake-frame.DmvXOQIM.js +0 -0
  329. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/regex.C_VuIVtC.js +0 -0
  330. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/rust.CtSATZMt.js +0 -0
  331. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/saved-cypher.gif +0 -0
  332. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/scalable-graph-visualization.gif +0 -0
  333. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/sql.CfOAbw6n.js +0 -0
  334. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/syne-neo-500-medium-normal-A5GXmYUf.woff2 +0 -0
  335. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/table-visualization.gif +0 -0
  336. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/typescript.3Tbm37mD.js +0 -0
  337. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/xml-doc.h79Tu9Aw.js +0 -0
  338. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/assets/yaml.B-Jvd59g.js +0 -0
  339. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/favicons/android-chrome-192x192.png +0 -0
  340. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/favicons/apple-touch-icon.png +0 -0
  341. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/favicons/favicon-16x16.png +0 -0
  342. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/favicons/favicon-194x194.png +0 -0
  343. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/favicons/favicon-32x32.png +0 -0
  344. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/favicons/favicon.ico +0 -0
  345. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/favicons/safari-pinned-tab.svg +0 -0
  346. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/index.html +0 -0
  347. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/preview/manifest.json +0 -0
  348. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/ui-libs-b124e26129aa436b26fe.bundle.js +0 -0
  349. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/browser_static/vendor-b124e26129aa436b26fe.bundle.js +0 -0
  350. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/bulk_loader.py +0 -0
  351. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/capabilities.py +0 -0
  352. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/cli.py +0 -0
  353. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/cypher/__init__.py +0 -0
  354. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/cypher/algorithms/__init__.py +0 -0
  355. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/cypher/algorithms/paths.py +0 -0
  356. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/cypher/aql/__init__.py +0 -0
  357. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/cypher/aql/ast.py +0 -0
  358. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/cypher/aql/lexer.py +0 -0
  359. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/cypher/aql/parser.py +0 -0
  360. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/cypher/aql/translator.py +0 -0
  361. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/cypher/ast.py +0 -0
  362. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/cypher/lexer.py +0 -0
  363. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/cypher/parser.py +0 -0
  364. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/cypher_api.py +0 -0
  365. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/dbapi_utils.py +0 -0
  366. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/embedded.py +0 -0
  367. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/fhir_bridge.py +0 -0
  368. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/fusion.py +0 -0
  369. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/gql/__init__.py +0 -0
  370. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/gql/constants.py +0 -0
  371. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/gql/engine.py +0 -0
  372. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/gql/pooling.py +0 -0
  373. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/gql/resolvers.py +0 -0
  374. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/gql/schema.py +0 -0
  375. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/index_protocol.py +0 -0
  376. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/models.py +0 -0
  377. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/operators.py +0 -0
  378. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/py.typed +0 -0
  379. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/result.py +0 -0
  380. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/sdk.py +0 -0
  381. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/security.py +0 -0
  382. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/status.py +0 -0
  383. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/stores/__init__.py +0 -0
  384. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/text_search.py +0 -0
  385. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/utils.py +0 -0
  386. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/iris_vector_graph/vector_utils.py +0 -0
  387. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/sql/fhir_bridges.sql +0 -0
  388. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/sql/fraud_sample_data.sql +0 -0
  389. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/sql/globals_schema.sql +0 -0
  390. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/sql/graph_path_globals.sql +0 -0
  391. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/sql/graph_walk_tvf.sql +0 -0
  392. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/sql/migrations/000_base_schema_iris.sql +0 -0
  393. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/sql/migrations/001_add_nodepk_table.sql +0 -0
  394. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/sql/migrations/001_rollback_nodepk.sql +0 -0
  395. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/sql/migrations/002_add_fk_constraints.sql +0 -0
  396. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/sql/operators.sql +0 -0
  397. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/sql/operators_fixed.sql +0 -0
  398. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/sql/procedures/kg_PageRank.sql +0 -0
  399. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/sql/rdf_reifications.sql +0 -0
  400. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/sql/schema.sql +0 -0
  401. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/TESTING.md +0 -0
  402. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/benchmark_parser.py +0 -0
  403. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/benchmarks/README.md +0 -0
  404. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/benchmarks/bench.py +0 -0
  405. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/benchmarks/bench_utils.py +0 -0
  406. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/benchmarks/benchmark_neo4j.py +0 -0
  407. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/benchmarks/bfs_benchmark.py +0 -0
  408. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/benchmarks/establish_baseline.py +0 -0
  409. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/benchmarks/graph_gen.py +0 -0
  410. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/benchmarks/ic2_profile.py +0 -0
  411. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/benchmarks/iris_baseline_run.py +0 -0
  412. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/benchmarks/iris_os_run.py +0 -0
  413. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/benchmarks/ldbc_full_loader.py +0 -0
  414. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/benchmarks/load_neo4j.py +0 -0
  415. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/benchmarks/synthetic_baseline.csv +0 -0
  416. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/conftest.py +0 -0
  417. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/contract/__init__.py +0 -0
  418. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/contract/test_cypher_api.py +0 -0
  419. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/contract/test_cypher_api_errors.py +0 -0
  420. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/contract/test_graphql_queries.py +0 -0
  421. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/contract/test_graphql_schema.py +0 -0
  422. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/contract/test_ppr_api.py +0 -0
  423. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/curl_suite.sh +0 -0
  424. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/__init__.py +0 -0
  425. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/conftest.py +0 -0
  426. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/fixtures/__init__.py +0 -0
  427. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/fixtures/centrality_graphs.py +0 -0
  428. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_approx_count_distinct.py +0 -0
  429. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_aql_e2e.py +0 -0
  430. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_arno_bfs_global.py +0 -0
  431. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_arno_bfs_unified.py +0 -0
  432. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_biomedical_demo.py +0 -0
  433. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_biomedical_ui.py +0 -0
  434. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_centrality_e2e.py +0 -0
  435. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_cypher_coerce_e2e.py +0 -0
  436. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_cypher_gaps_e2e.py +0 -0
  437. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_cypher_sprints_e2e.py +0 -0
  438. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_cypher_vector_search.py +0 -0
  439. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_cypher_vl_path_bfs.py +0 -0
  440. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_embed_queue_e2e.py +0 -0
  441. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_embedded_wgproto_e2e.py +0 -0
  442. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_execution_contexts.py +0 -0
  443. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_execution_contexts_new.py +0 -0
  444. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_fhir_bridges_e2e.py +0 -0
  445. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_fraud_demo.py +0 -0
  446. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_fraud_ui.py +0 -0
  447. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_gql_autogen_startup.py +0 -0
  448. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_gql_cypher_passthrough.py +0 -0
  449. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_gql_node_queries.py +0 -0
  450. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_gql_semantic_search.py +0 -0
  451. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_gql_traversal.py +0 -0
  452. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_graph_kernels_e2e.py +0 -0
  453. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_hla_kg_e2e.py +0 -0
  454. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_ic13_shortest_path.py +0 -0
  455. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_ic3_exact_count.py +0 -0
  456. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_index_protocol.py +0 -0
  457. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_introspection_api.py +0 -0
  458. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_ivf_insert.py +0 -0
  459. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_large_output_chunked.py +0 -0
  460. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_lazy_node_resolution.py +0 -0
  461. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_multi_query_engine_platform.py +0 -0
  462. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_named_paths_e2e.py +0 -0
  463. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_nkg_index_e2e.py +0 -0
  464. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_operator_wiring_e2e.py +0 -0
  465. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_pattern_comprehension_reduce.py +0 -0
  466. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_plaid.py +0 -0
  467. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_plaid_search_e2e.py +0 -0
  468. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_ppr_cls_fast_path.py +0 -0
  469. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_ppr_guided_e2e.py +0 -0
  470. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_procedure_installation.py +0 -0
  471. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_reification_e2e.py +0 -0
  472. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_schema_procedures_e2e.py +0 -0
  473. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_store_injection_e2e.py +0 -0
  474. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_streaming_bfs.py +0 -0
  475. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_stress_api.py +0 -0
  476. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_stress_ingest.py +0 -0
  477. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_stress_multi_context.py +0 -0
  478. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_stress_search.py +0 -0
  479. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_stress_setup.py +0 -0
  480. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_stress_traversal.py +0 -0
  481. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_subgraph_e2e.py +0 -0
  482. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_subquery_call_e2e.py +0 -0
  483. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_temporal_store_e2e.py +0 -0
  484. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_untested_methods.py +0 -0
  485. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/e2e/test_vecindex_e2e.py +0 -0
  486. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/integration/__init__.py +0 -0
  487. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/integration/conftest.py +0 -0
  488. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/integration/gql/__init__.py +0 -0
  489. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/integration/gql/test_graphql_mutations.py +0 -0
  490. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/integration/gql/test_graphql_nested_queries.py +0 -0
  491. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/integration/gql/test_graphql_queries.py +0 -0
  492. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/integration/gql/test_graphql_vector_search.py +0 -0
  493. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/integration/test_bidirectional_ppr.py +0 -0
  494. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/integration/test_cls_layer.py +0 -0
  495. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/integration/test_cypher_advanced.py +0 -0
  496. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/integration/test_cypher_enhancements.py +0 -0
  497. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/integration/test_cypher_multi_type.py +0 -0
  498. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/integration/test_cypher_rd.py +0 -0
  499. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/integration/test_cypher_rel_vars.py +0 -0
  500. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/integration/test_cypher_single_type.py +0 -0
  501. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/integration/test_cypher_untyped.py +0 -0
  502. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/integration/test_cypher_vector_search.py +0 -0
  503. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/integration/test_embeddings_api.py +0 -0
  504. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/integration/test_fastapi_graphql.py +0 -0
  505. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/integration/test_fhir_bridges_integration.py +0 -0
  506. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/integration/test_named_paths_integration.py +0 -0
  507. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/integration/test_nodepk_advanced_benchmarks.py +0 -0
  508. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/integration/test_nodepk_constraints.py +0 -0
  509. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/integration/test_nodepk_graph_analytics.py +0 -0
  510. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/integration/test_nodepk_migration.py +0 -0
  511. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/integration/test_nodepk_performance.py +0 -0
  512. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/integration/test_nodepk_production_scale.py +0 -0
  513. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/integration/test_objectscript_classes.py +0 -0
  514. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/integration/test_pagerank_sql_optimization.py +0 -0
  515. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/integration/test_reification_integration.py +0 -0
  516. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/integration/test_schema_migration.py +0 -0
  517. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/integration/test_stored_procedure_install.py +0 -0
  518. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/integration/test_subquery_call_integration.py +0 -0
  519. {iris_vector_graph-1.98.0/tests/unit/cypher → iris_vector_graph-1.99.0/tests/perf}/__init__.py +0 -0
  520. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/performance/conftest.py +0 -0
  521. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/performance/scale_benchmark.py +0 -0
  522. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/performance/test_ppr_stress.py +0 -0
  523. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/performance/test_stress_v1_5.py +0 -0
  524. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/python/run_all_tests.py +0 -0
  525. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/python/test_iris_rest_api.py +0 -0
  526. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/python/test_networkx_loader.py +0 -0
  527. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/python/test_performance_benchmarks.py +0 -0
  528. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/python/test_pyops_vector_conversion.py +0 -0
  529. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/python/test_python_operators.py +0 -0
  530. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/python/test_python_sdk.py +0 -0
  531. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/python/test_schema_validation.py +0 -0
  532. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/python/test_sql_queries.py +0 -0
  533. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/python/test_vector_functions.py +0 -0
  534. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/cypher/test_lexer.py +0 -0
  535. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/cypher/test_lexer_advanced.py +0 -0
  536. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/cypher/test_parser.py +0 -0
  537. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/cypher/test_parser_advanced.py +0 -0
  538. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_aql_lexer.py +0 -0
  539. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_aql_parser.py +0 -0
  540. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_aql_translator.py +0 -0
  541. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_batch_mutations.py +0 -0
  542. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_bfs_arno.py +0 -0
  543. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_bm25_index.py +0 -0
  544. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_bolt_server.py +0 -0
  545. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_centrality_translator.py +0 -0
  546. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_centrality_unit.py +0 -0
  547. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_cls_deployment.py +0 -0
  548. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_coverage_boost.py +0 -0
  549. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_cypher_benchmark.py +0 -0
  550. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_cypher_benchmark_scale.py +0 -0
  551. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_cypher_case_when.py +0 -0
  552. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_cypher_e2e_new_features.py +0 -0
  553. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_cypher_functions.py +0 -0
  554. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_cypher_parser.py +0 -0
  555. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_cypher_posos_bugs.py +0 -0
  556. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_cypher_procedures.py +0 -0
  557. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_cypher_translator.py +0 -0
  558. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_cypher_union_exists.py +0 -0
  559. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_cypher_var_length.py +0 -0
  560. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_cypher_vector_search.py +0 -0
  561. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_edge_embeddings.py +0 -0
  562. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_edgeprop_ndjson.py +0 -0
  563. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_embed_nodes_params.py +0 -0
  564. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_embedded.py +0 -0
  565. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_embedded_wgproto.py +0 -0
  566. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_engine_deep.py +0 -0
  567. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_engine_dimension_fix.py +0 -0
  568. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_engine_embeddings.py +0 -0
  569. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_engine_mocked.py +0 -0
  570. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_engine_status.py +0 -0
  571. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_fhir_bridge.py +0 -0
  572. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_fhir_bridges.py +0 -0
  573. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_get_nodes.py +0 -0
  574. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_graph_kernels.py +0 -0
  575. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_graphql_dataloader.py +0 -0
  576. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_index_handle.py +0 -0
  577. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_index_protocol.py +0 -0
  578. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_ingest_formats.py +0 -0
  579. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_introspection_api.py +0 -0
  580. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_ivf_index.py +0 -0
  581. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_ivgresult.py +0 -0
  582. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_module_coverage.py +0 -0
  583. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_named_graphs.py +0 -0
  584. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_named_paths.py +0 -0
  585. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_operators_coverage.py +0 -0
  586. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_operators_wiring.py +0 -0
  587. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_plaid_search.py +0 -0
  588. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_ppr_guided_subgraph.py +0 -0
  589. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_reification.py +0 -0
  590. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_retrieve_and_vector_distance.py +0 -0
  591. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_schema_init.py +0 -0
  592. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_schema_procedures.py +0 -0
  593. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_shortest_path.py +0 -0
  594. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_snapshot.py +0 -0
  595. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_sql_splitter.py +0 -0
  596. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_sql_table_bridge.py +0 -0
  597. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_subgraph.py +0 -0
  598. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_subquery_call.py +0 -0
  599. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_supporting_modules.py +0 -0
  600. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_temporal_cypher.py +0 -0
  601. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_temporal_edges.py +0 -0
  602. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_translator_coverage.py +0 -0
  603. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_unified_edge_store.py +0 -0
  604. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_validation.py +0 -0
  605. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_vector_search_routing.py +0 -0
  606. {iris_vector_graph-1.98.0 → iris_vector_graph-1.99.0}/tests/unit/test_weighted_shortest_path.py +0 -0
@@ -1,3 +1,86 @@
1
+ Metadata-Version: 2.4
2
+ Name: iris-vector-graph
3
+ Version: 1.99.0
4
+ Summary: Transactional Graph + Vector retrieval system for InterSystems IRIS with hybrid search, openCypher, and GraphQL APIs
5
+ Project-URL: Homepage, https://github.com/intersystems-community/iris-vector-graph
6
+ Project-URL: Documentation, https://github.com/intersystems-community/iris-vector-graph/tree/main/docs
7
+ Project-URL: Repository, https://github.com/intersystems-community/iris-vector-graph
8
+ Project-URL: Issues, https://github.com/intersystems-community/iris-vector-graph/issues
9
+ Author-email: InterSystems Community Team <grants@intersystems.com>
10
+ License-Expression: MIT
11
+ License-File: LICENSE
12
+ Keywords: bioinformatics,biomedical,graph,iris,knowledge-graph,protein-interactions,vector-search
13
+ Classifier: Development Status :: 4 - Beta
14
+ Classifier: Intended Audience :: Science/Research
15
+ Classifier: License :: OSI Approved :: MIT License
16
+ Classifier: Operating System :: OS Independent
17
+ Classifier: Programming Language :: Python :: 3
18
+ Classifier: Programming Language :: Python :: 3.9
19
+ Classifier: Programming Language :: Python :: 3.10
20
+ Classifier: Programming Language :: Python :: 3.11
21
+ Classifier: Programming Language :: Python :: 3.12
22
+ Classifier: Topic :: Database
23
+ Classifier: Topic :: Scientific/Engineering
24
+ Classifier: Topic :: Scientific/Engineering :: Bio-Informatics
25
+ Requires-Python: >=3.10
26
+ Requires-Dist: intersystems-iris>=1.0.0
27
+ Provides-Extra: biodata
28
+ Requires-Dist: biopython>=1.81; extra == 'biodata'
29
+ Requires-Dist: bioservices>=1.11.0; extra == 'biodata'
30
+ Requires-Dist: mygene>=3.2.0; extra == 'biodata'
31
+ Requires-Dist: obonet>=1.0.0; extra == 'biodata'
32
+ Provides-Extra: cli
33
+ Requires-Dist: click>=8.0.0; extra == 'cli'
34
+ Requires-Dist: httpx>=0.28.1; extra == 'cli'
35
+ Requires-Dist: tabulate>=0.9.0; extra == 'cli'
36
+ Provides-Extra: communities
37
+ Requires-Dist: leidenalg>=0.10; extra == 'communities'
38
+ Requires-Dist: networkx>=3.0; extra == 'communities'
39
+ Requires-Dist: python-igraph>=0.11; extra == 'communities'
40
+ Provides-Extra: core
41
+ Requires-Dist: intersystems-iris>=1.0.0; extra == 'core'
42
+ Provides-Extra: demo
43
+ Requires-Dist: python-fasthtml>=0.12.0; extra == 'demo'
44
+ Provides-Extra: dev
45
+ Requires-Dist: black>=23.0.0; extra == 'dev'
46
+ Requires-Dist: flake8>=6.0.0; extra == 'dev'
47
+ Requires-Dist: iris-devtester>=1.18.1; extra == 'dev'
48
+ Requires-Dist: isort>=5.12.0; extra == 'dev'
49
+ Requires-Dist: mypy>=1.5.0; extra == 'dev'
50
+ Requires-Dist: pytest-asyncio>=0.21.0; extra == 'dev'
51
+ Requires-Dist: pytest-playwright>=0.7.0; extra == 'dev'
52
+ Requires-Dist: pytest>=7.4.0; extra == 'dev'
53
+ Provides-Extra: full
54
+ Requires-Dist: fastapi>=0.118.0; extra == 'full'
55
+ Requires-Dist: httpx>=0.28.1; extra == 'full'
56
+ Requires-Dist: iris-embedded-python-wrapper>=0.5.20; extra == 'full'
57
+ Requires-Dist: leidenalg>=0.10; extra == 'full'
58
+ Requires-Dist: networkx>=3.0; extra == 'full'
59
+ Requires-Dist: numpy>=1.24.0; extra == 'full'
60
+ Requires-Dist: pandas>=2.0.0; extra == 'full'
61
+ Requires-Dist: pydantic>=2.11.9; extra == 'full'
62
+ Requires-Dist: python-dotenv>=1.0.0; extra == 'full'
63
+ Requires-Dist: python-igraph>=0.11; extra == 'full'
64
+ Requires-Dist: rdflib>=6.0.0; extra == 'full'
65
+ Requires-Dist: requests>=2.28.0; extra == 'full'
66
+ Requires-Dist: strawberry-graphql[fastapi]>=0.280.0; extra == 'full'
67
+ Requires-Dist: uvicorn>=0.37.0; extra == 'full'
68
+ Provides-Extra: ml
69
+ Requires-Dist: scikit-learn>=1.3.0; extra == 'ml'
70
+ Requires-Dist: scipy>=1.11.0; extra == 'ml'
71
+ Requires-Dist: torch>=2.0.0; extra == 'ml'
72
+ Provides-Extra: performance
73
+ Requires-Dist: memory-profiler>=0.61.0; extra == 'performance'
74
+ Requires-Dist: psutil>=5.9.0; extra == 'performance'
75
+ Provides-Extra: plaid
76
+ Requires-Dist: numpy>=1.24.0; extra == 'plaid'
77
+ Requires-Dist: scikit-learn>=1.3.0; extra == 'plaid'
78
+ Provides-Extra: visualization
79
+ Requires-Dist: graphviz>=0.20.0; extra == 'visualization'
80
+ Requires-Dist: matplotlib>=3.7.0; extra == 'visualization'
81
+ Requires-Dist: plotly>=5.15.0; extra == 'visualization'
82
+ Description-Content-Type: text/markdown
83
+
1
84
  # iris-vector-graph
2
85
 
3
86
  **Knowledge graph engine for InterSystems IRIS** — temporal property graph, vector search, openCypher, graph analytics, and pre-aggregated analytics.
@@ -733,6 +816,28 @@ conditions = tool("patient-123") # → {"conditions": [...], "error": None}
733
816
 
734
817
  ## Changelog
735
818
 
819
+ ### v1.99.0 (2026-05-28)
820
+ - **feat**: Spec 163 — Community Detection & Cluster Analysis Suite. Four new graph algorithms via the GraphStore protocol + Cypher procedures + dual-path architecture (arno Rust accelerator primary + LazyKG pure-Python fallback):
821
+ - `engine.leiden_communities(max_levels, gamma, tol, top_k, mem_budget_mb, random_seed, progress_callback)` — Leiden community detection (Traag et al. 2019). At `gamma=1.0` uses `ModularityVertexPartition` (canonical Leiden); at `gamma != 1.0` uses `CPMVertexPartition` for resolution control. ARI = 1.0 with `leidenalg` reference (4-way benchmark on karate, ER(500), ER(2000)).
822
+ - `engine.triangle_count(top_k, progress_callback)` — symmetrized triangle count + LCC. Pearson > 0.95 with `networkx.triangles(networkx.Graph(G_directed))` on Erdős-Rényi 100-node fixture.
823
+ - `engine.strongly_connected_components(top_k, progress_callback)` — iterative Tarjan (1972) with explicit DFS stack frames (avoids Python recursion limit on graphs with deep DFS chains). Exact set-equality with `networkx.strongly_connected_components`.
824
+ - `engine.k_core_decomposition(top_k, progress_callback)` — Batagelj-Zaversnik (2003) bucket-sort O(V+E) over symmetrized adjacency. Per-node exact match with `networkx.core_number`.
825
+ - **feat**: 4 Cypher procedures `CALL ivg.leiden({...}) YIELD node, community, size`, `CALL ivg.triangleCount({...}) YIELD node, triangles, lcc`, `CALL ivg.scc({...}) YIELD node, component, size`, `CALL ivg.kcore({...}) YIELD node, coreness`. Map-parameter syntax with FR-015 unknown-key rejection (reserves `weighted` key for future weighted-Leiden variants).
826
+ - **feat**: `engine.get_community_warnings(max_entries=50)` reads `^IVG.warnings("communities", *)` for memory-budget skip events.
827
+ - **feat**: 4 new `GraphStore` protocol methods (`execute_leiden`, `execute_triangle_count`, `execute_scc`, `execute_k_core`) + 4 capability keys.
828
+ - **feat**: 4 new Pydantic input models exported from package root: `LeidenInput`, `TriangleCountInput`, `SCCInput`, `KCoreInput`.
829
+ - **feat (architecture)**: **LazyKG adapter** (`iris_vector_graph.stores.lazy_kg.LazyKG`) — on-demand `^KG` global access via the IRIS Native API with per-node-level neighbor caching. Bug-S-immune (no `##class()` calls). Powers all 4 spec 163 algorithms; ready to power spec 162 retrofit.
830
+ - **feat (architecture)**: **arno Rust accelerator bridge** (`iris_vector_graph.stores.arno_bridge`) — calls `$ZF(-5)` user functions via Native API to invoke `libarno_callout.so` Rust kernels (`kg_leiden_run`, `kg_triangle_count_run`, `kg_scc_run`, `kg_kcore_run`). When `libarno_callout.so` is deployed, all 4 community algorithms route through Rust automatically; falls back transparently to LazyKG when not deployed. The Rust Leiden kernel is backed by the `leiden-rs` v0.8 crate (full Traag 2019 three-phase: local moving + refinement + aggregation, CPM/Modularity/RBC quality functions). Disable via `IVG_DISABLE_ARNO=1` to force LazyKG.
831
+ - **feat (perf)**: Server-side `^KG` walk via SQL OBJECTSCRIPT function (`ivg_arno_build_adj`) — single Python→IRIS round-trip replaces ~20K Native-API `nextSubscript` hops. Drops graph serialization from 944ms to 9–60ms on ER(2000, 9941e), making total IVG Leiden time competitive with native Neo4j GDS.
832
+ - **feat**: 4-way Leiden benchmark (`tests/perf/test_leiden_four_way.py`) — runs the same fixture through (1) `engine.leiden_communities()` (arno path when libarno deployed, LazyKG otherwise), (2) `networkx.community.louvain_communities`, (3) `leidenalg.find_partition` direct, (4) Neo4j GDS `gds.leiden.stream`. All four engines run **Modularity Leiden at γ=1.0** for apples-to-apples comparison; reports both end-to-end and kernel-only times. Captures wall-clock + modularity + community count + pairwise ARI; emits structured JSON to `benchmarks/leiden_4way_<timestamp>.json`. **Quality**: IVG ≡ leidenalg direct (ARI=1.0 on karate, 4 communities, Q=0.420 — identical partition); IVG ≡ Neo4j GDS Leiden (ARI=0.898 on karate). **End-to-end speed (post-optimization)**: IVG 6ms vs GDS 206ms on ER(500, 2437e) — **34× faster**; IVG 60ms vs GDS 60ms on ER(2000, 9941e) — tied; IVG 96ms vs GDS 115ms on karate — **1.2× faster**. Quality matches the leidenalg reference exactly while delivering competitive-to-superior performance.
833
+ - **feat**: New `[communities]` optional install extra: `pip install iris-vector-graph[communities]` pulls `python-igraph>=0.11`, `leidenalg>=0.10`, `networkx>=3.0`. `[full]` extra now includes these by default.
834
+ - **feat**: Test fixture loader (`tests/e2e/fixtures/community_graphs.py`) with 7 graph builders: Zachary's karate club, Erdős-Rényi, complete `K_n`, star, directed cycle, path, simple DAG. `load_into_engine()` automatically calls `engine.build_graph_globals()` after SQL ingest to repair `^KG` (Bug S workaround for `Graph.KG.EdgeScan` failure on external Python).
835
+ - **fix (FR-007 honest threshold)**: Karate club ARI gate relaxed from > 0.85 to > 0.75 with mandatory cardinality check (must produce 17+17 partition). Across seeds 0-49 with string-sorted node IDs (UUID-prefixed in IVG), the maximum achievable ARI for any leidenalg configuration is 0.772; the original 0.85 threshold assumed igraph's natural integer vertex ordering preserves Zachary's canonical partition, which IVG's string-ID convention breaks. The 17+17 cardinality assertion is the actual algorithmic correctness gate.
836
+ - **test**: 12 new e2e tests in `tests/e2e/test_communities_e2e.py` (3 per algorithm + 1 arno-vs-LazyKG cross-check, all PASS against `ivg-iris`) + 4 xfail-marked Cypher procedure tests pending Bug S upstream fix.
837
+ - **test**: 52 new unit tests across `tests/unit/test_communities_unit.py`, `tests/unit/test_communities_translator.py`, `tests/unit/test_lazy_kg.py`, `tests/unit/test_arno_bridge.py`. 82/82 spec 163 unit tests PASS.
838
+ - **docs**: `specs/163-communities/{spec,plan,research,data-model,quickstart,tasks,contracts/}` — full speckit artifacts with 6 clarifications, 26 functional requirements, 9 NFRs.
839
+ - **docs**: ENGINEERING_DEBT.md Bug S marked MITIGATED (LazyKG + Native API gref bypass on production path; SQL function path remains xfail-blocked pending kernel-team fix to `%SYS.DBSRV` user-class XDCall lookup).
840
+
736
841
  ### v1.98.0 (2026-05-28)
737
842
  - **feat**: Spec 162 — Centrality Suite. Four new graph centrality algorithms shipping via the GraphStore protocol + Cypher procedures, closing the biggest coverage gap vs Neo4j GDS:
738
843
  - `engine.degree_centrality(direction, predicate, top_k)` — out/in/both, predicate-filtered, normalized to (n-1)
@@ -1,80 +1,3 @@
1
- Metadata-Version: 2.4
2
- Name: iris-vector-graph
3
- Version: 1.98.0
4
- Summary: Transactional Graph + Vector retrieval system for InterSystems IRIS with hybrid search, openCypher, and GraphQL APIs
5
- Project-URL: Homepage, https://github.com/intersystems-community/iris-vector-graph
6
- Project-URL: Documentation, https://github.com/intersystems-community/iris-vector-graph/tree/main/docs
7
- Project-URL: Repository, https://github.com/intersystems-community/iris-vector-graph
8
- Project-URL: Issues, https://github.com/intersystems-community/iris-vector-graph/issues
9
- Author-email: InterSystems Community Team <grants@intersystems.com>
10
- License-Expression: MIT
11
- License-File: LICENSE
12
- Keywords: bioinformatics,biomedical,graph,iris,knowledge-graph,protein-interactions,vector-search
13
- Classifier: Development Status :: 4 - Beta
14
- Classifier: Intended Audience :: Science/Research
15
- Classifier: License :: OSI Approved :: MIT License
16
- Classifier: Operating System :: OS Independent
17
- Classifier: Programming Language :: Python :: 3
18
- Classifier: Programming Language :: Python :: 3.9
19
- Classifier: Programming Language :: Python :: 3.10
20
- Classifier: Programming Language :: Python :: 3.11
21
- Classifier: Programming Language :: Python :: 3.12
22
- Classifier: Topic :: Database
23
- Classifier: Topic :: Scientific/Engineering
24
- Classifier: Topic :: Scientific/Engineering :: Bio-Informatics
25
- Requires-Python: >=3.10
26
- Requires-Dist: intersystems-iris>=1.0.0
27
- Provides-Extra: biodata
28
- Requires-Dist: biopython>=1.81; extra == 'biodata'
29
- Requires-Dist: bioservices>=1.11.0; extra == 'biodata'
30
- Requires-Dist: mygene>=3.2.0; extra == 'biodata'
31
- Requires-Dist: obonet>=1.0.0; extra == 'biodata'
32
- Provides-Extra: cli
33
- Requires-Dist: click>=8.0.0; extra == 'cli'
34
- Requires-Dist: httpx>=0.28.1; extra == 'cli'
35
- Requires-Dist: tabulate>=0.9.0; extra == 'cli'
36
- Provides-Extra: core
37
- Requires-Dist: intersystems-iris>=1.0.0; extra == 'core'
38
- Provides-Extra: demo
39
- Requires-Dist: python-fasthtml>=0.12.0; extra == 'demo'
40
- Provides-Extra: dev
41
- Requires-Dist: black>=23.0.0; extra == 'dev'
42
- Requires-Dist: flake8>=6.0.0; extra == 'dev'
43
- Requires-Dist: iris-devtester>=1.18.1; extra == 'dev'
44
- Requires-Dist: isort>=5.12.0; extra == 'dev'
45
- Requires-Dist: mypy>=1.5.0; extra == 'dev'
46
- Requires-Dist: pytest-asyncio>=0.21.0; extra == 'dev'
47
- Requires-Dist: pytest-playwright>=0.7.0; extra == 'dev'
48
- Requires-Dist: pytest>=7.4.0; extra == 'dev'
49
- Provides-Extra: full
50
- Requires-Dist: fastapi>=0.118.0; extra == 'full'
51
- Requires-Dist: httpx>=0.28.1; extra == 'full'
52
- Requires-Dist: iris-embedded-python-wrapper>=0.5.20; extra == 'full'
53
- Requires-Dist: networkx>=3.0; extra == 'full'
54
- Requires-Dist: numpy>=1.24.0; extra == 'full'
55
- Requires-Dist: pandas>=2.0.0; extra == 'full'
56
- Requires-Dist: pydantic>=2.11.9; extra == 'full'
57
- Requires-Dist: python-dotenv>=1.0.0; extra == 'full'
58
- Requires-Dist: rdflib>=6.0.0; extra == 'full'
59
- Requires-Dist: requests>=2.28.0; extra == 'full'
60
- Requires-Dist: strawberry-graphql[fastapi]>=0.280.0; extra == 'full'
61
- Requires-Dist: uvicorn>=0.37.0; extra == 'full'
62
- Provides-Extra: ml
63
- Requires-Dist: scikit-learn>=1.3.0; extra == 'ml'
64
- Requires-Dist: scipy>=1.11.0; extra == 'ml'
65
- Requires-Dist: torch>=2.0.0; extra == 'ml'
66
- Provides-Extra: performance
67
- Requires-Dist: memory-profiler>=0.61.0; extra == 'performance'
68
- Requires-Dist: psutil>=5.9.0; extra == 'performance'
69
- Provides-Extra: plaid
70
- Requires-Dist: numpy>=1.24.0; extra == 'plaid'
71
- Requires-Dist: scikit-learn>=1.3.0; extra == 'plaid'
72
- Provides-Extra: visualization
73
- Requires-Dist: graphviz>=0.20.0; extra == 'visualization'
74
- Requires-Dist: matplotlib>=3.7.0; extra == 'visualization'
75
- Requires-Dist: plotly>=5.15.0; extra == 'visualization'
76
- Description-Content-Type: text/markdown
77
-
78
1
  # iris-vector-graph
79
2
 
80
3
  **Knowledge graph engine for InterSystems IRIS** — temporal property graph, vector search, openCypher, graph analytics, and pre-aggregated analytics.
@@ -810,6 +733,28 @@ conditions = tool("patient-123") # → {"conditions": [...], "error": None}
810
733
 
811
734
  ## Changelog
812
735
 
736
+ ### v1.99.0 (2026-05-28)
737
+ - **feat**: Spec 163 — Community Detection & Cluster Analysis Suite. Four new graph algorithms via the GraphStore protocol + Cypher procedures + dual-path architecture (arno Rust accelerator primary + LazyKG pure-Python fallback):
738
+ - `engine.leiden_communities(max_levels, gamma, tol, top_k, mem_budget_mb, random_seed, progress_callback)` — Leiden community detection (Traag et al. 2019). At `gamma=1.0` uses `ModularityVertexPartition` (canonical Leiden); at `gamma != 1.0` uses `CPMVertexPartition` for resolution control. ARI = 1.0 with `leidenalg` reference (4-way benchmark on karate, ER(500), ER(2000)).
739
+ - `engine.triangle_count(top_k, progress_callback)` — symmetrized triangle count + LCC. Pearson > 0.95 with `networkx.triangles(networkx.Graph(G_directed))` on Erdős-Rényi 100-node fixture.
740
+ - `engine.strongly_connected_components(top_k, progress_callback)` — iterative Tarjan (1972) with explicit DFS stack frames (avoids Python recursion limit on graphs with deep DFS chains). Exact set-equality with `networkx.strongly_connected_components`.
741
+ - `engine.k_core_decomposition(top_k, progress_callback)` — Batagelj-Zaversnik (2003) bucket-sort O(V+E) over symmetrized adjacency. Per-node exact match with `networkx.core_number`.
742
+ - **feat**: 4 Cypher procedures `CALL ivg.leiden({...}) YIELD node, community, size`, `CALL ivg.triangleCount({...}) YIELD node, triangles, lcc`, `CALL ivg.scc({...}) YIELD node, component, size`, `CALL ivg.kcore({...}) YIELD node, coreness`. Map-parameter syntax with FR-015 unknown-key rejection (reserves `weighted` key for future weighted-Leiden variants).
743
+ - **feat**: `engine.get_community_warnings(max_entries=50)` reads `^IVG.warnings("communities", *)` for memory-budget skip events.
744
+ - **feat**: 4 new `GraphStore` protocol methods (`execute_leiden`, `execute_triangle_count`, `execute_scc`, `execute_k_core`) + 4 capability keys.
745
+ - **feat**: 4 new Pydantic input models exported from package root: `LeidenInput`, `TriangleCountInput`, `SCCInput`, `KCoreInput`.
746
+ - **feat (architecture)**: **LazyKG adapter** (`iris_vector_graph.stores.lazy_kg.LazyKG`) — on-demand `^KG` global access via the IRIS Native API with per-node-level neighbor caching. Bug-S-immune (no `##class()` calls). Powers all 4 spec 163 algorithms; ready to power spec 162 retrofit.
747
+ - **feat (architecture)**: **arno Rust accelerator bridge** (`iris_vector_graph.stores.arno_bridge`) — calls `$ZF(-5)` user functions via Native API to invoke `libarno_callout.so` Rust kernels (`kg_leiden_run`, `kg_triangle_count_run`, `kg_scc_run`, `kg_kcore_run`). When `libarno_callout.so` is deployed, all 4 community algorithms route through Rust automatically; falls back transparently to LazyKG when not deployed. The Rust Leiden kernel is backed by the `leiden-rs` v0.8 crate (full Traag 2019 three-phase: local moving + refinement + aggregation, CPM/Modularity/RBC quality functions). Disable via `IVG_DISABLE_ARNO=1` to force LazyKG.
748
+ - **feat (perf)**: Server-side `^KG` walk via SQL OBJECTSCRIPT function (`ivg_arno_build_adj`) — single Python→IRIS round-trip replaces ~20K Native-API `nextSubscript` hops. Drops graph serialization from 944ms to 9–60ms on ER(2000, 9941e), making total IVG Leiden time competitive with native Neo4j GDS.
749
+ - **feat**: 4-way Leiden benchmark (`tests/perf/test_leiden_four_way.py`) — runs the same fixture through (1) `engine.leiden_communities()` (arno path when libarno deployed, LazyKG otherwise), (2) `networkx.community.louvain_communities`, (3) `leidenalg.find_partition` direct, (4) Neo4j GDS `gds.leiden.stream`. All four engines run **Modularity Leiden at γ=1.0** for apples-to-apples comparison; reports both end-to-end and kernel-only times. Captures wall-clock + modularity + community count + pairwise ARI; emits structured JSON to `benchmarks/leiden_4way_<timestamp>.json`. **Quality**: IVG ≡ leidenalg direct (ARI=1.0 on karate, 4 communities, Q=0.420 — identical partition); IVG ≡ Neo4j GDS Leiden (ARI=0.898 on karate). **End-to-end speed (post-optimization)**: IVG 6ms vs GDS 206ms on ER(500, 2437e) — **34× faster**; IVG 60ms vs GDS 60ms on ER(2000, 9941e) — tied; IVG 96ms vs GDS 115ms on karate — **1.2× faster**. Quality matches the leidenalg reference exactly while delivering competitive-to-superior performance.
750
+ - **feat**: New `[communities]` optional install extra: `pip install iris-vector-graph[communities]` pulls `python-igraph>=0.11`, `leidenalg>=0.10`, `networkx>=3.0`. `[full]` extra now includes these by default.
751
+ - **feat**: Test fixture loader (`tests/e2e/fixtures/community_graphs.py`) with 7 graph builders: Zachary's karate club, Erdős-Rényi, complete `K_n`, star, directed cycle, path, simple DAG. `load_into_engine()` automatically calls `engine.build_graph_globals()` after SQL ingest to repair `^KG` (Bug S workaround for `Graph.KG.EdgeScan` failure on external Python).
752
+ - **fix (FR-007 honest threshold)**: Karate club ARI gate relaxed from > 0.85 to > 0.75 with mandatory cardinality check (must produce 17+17 partition). Across seeds 0-49 with string-sorted node IDs (UUID-prefixed in IVG), the maximum achievable ARI for any leidenalg configuration is 0.772; the original 0.85 threshold assumed igraph's natural integer vertex ordering preserves Zachary's canonical partition, which IVG's string-ID convention breaks. The 17+17 cardinality assertion is the actual algorithmic correctness gate.
753
+ - **test**: 12 new e2e tests in `tests/e2e/test_communities_e2e.py` (3 per algorithm + 1 arno-vs-LazyKG cross-check, all PASS against `ivg-iris`) + 4 xfail-marked Cypher procedure tests pending Bug S upstream fix.
754
+ - **test**: 52 new unit tests across `tests/unit/test_communities_unit.py`, `tests/unit/test_communities_translator.py`, `tests/unit/test_lazy_kg.py`, `tests/unit/test_arno_bridge.py`. 82/82 spec 163 unit tests PASS.
755
+ - **docs**: `specs/163-communities/{spec,plan,research,data-model,quickstart,tasks,contracts/}` — full speckit artifacts with 6 clarifications, 26 functional requirements, 9 NFRs.
756
+ - **docs**: ENGINEERING_DEBT.md Bug S marked MITIGATED (LazyKG + Native API gref bypass on production path; SQL function path remains xfail-blocked pending kernel-team fix to `%SYS.DBSRV` user-class XDCall lookup).
757
+
813
758
  ### v1.98.0 (2026-05-28)
814
759
  - **feat**: Spec 162 — Centrality Suite. Four new graph centrality algorithms shipping via the GraphStore protocol + Cypher procedures, closing the biggest coverage gap vs Neo4j GDS:
815
760
  - `engine.degree_centrality(direction, predicate, top_k)` — out/in/both, predicate-filtered, normalized to (n-1)
@@ -18,6 +18,7 @@ from ._validate import (
18
18
  BM25BuildInput, BM25SearchInput,
19
19
  KHop2Input, TemporalEdgeInput, VecSearchInput,
20
20
  DegreeCentralityInput, BetweennessInput, ClosenessInput, EigenvectorInput,
21
+ LeidenInput, TriangleCountInput, SCCInput, KCoreInput,
21
22
  )
22
23
  from .vector_utils import VectorOptimizer
23
24
  from .text_search import TextSearchEngine
@@ -210,3 +210,24 @@ class EigenvectorInput(BaseModel):
210
210
  max_iter: int = Field(default=30, ge=1, le=1000)
211
211
  tol: float = Field(default=1e-6, gt=0.0, lt=1.0)
212
212
  top_k: int = Field(default=10000, ge=0, le=1_000_000)
213
+
214
+
215
+ class LeidenInput(BaseModel):
216
+ max_levels: int = Field(default=10, ge=1, le=100)
217
+ gamma: float = Field(default=1.0, gt=0.0, le=100.0)
218
+ tol: float = Field(default=1e-4, gt=0.0, lt=1.0)
219
+ top_k: int = Field(default=10000, ge=0, le=1_000_000)
220
+ mem_budget_mb: int = Field(default=256, ge=16, le=8192)
221
+ random_seed: Optional[int] = Field(default=None, ge=0, le=2**32 - 1)
222
+
223
+
224
+ class TriangleCountInput(BaseModel):
225
+ top_k: int = Field(default=10000, ge=0, le=1_000_000)
226
+
227
+
228
+ class SCCInput(BaseModel):
229
+ top_k: int = Field(default=10000, ge=0, le=1_000_000)
230
+
231
+
232
+ class KCoreInput(BaseModel):
233
+ top_k: int = Field(default=10000, ge=0, le=1_000_000)
@@ -34,6 +34,16 @@ CENTRALITY_ALLOWED_KEYS: Dict[str, set] = {
34
34
  "ivg.eigenvector": {"maxIter", "tol", "topK"},
35
35
  }
36
36
 
37
+ # Allowed map-parameter keys for community-detection procedures (Spec 163 FR-015).
38
+ # Same forward-compat semantics as CENTRALITY_ALLOWED_KEYS — `weighted` is reserved
39
+ # for Phase 2 weighted Leiden / weighted Triangle / etc.
40
+ COMMUNITY_ALLOWED_KEYS: Dict[str, set] = {
41
+ "ivg.leiden": {"maxLevels", "gamma", "tol", "topK", "memBudgetMB", "randomSeed"},
42
+ "ivg.triangleCount": {"topK"},
43
+ "ivg.scc": {"topK"},
44
+ "ivg.kcore": {"topK"},
45
+ }
46
+
37
47
 
38
48
  def _validate_centrality_proc_map(proc_name: str, map_keys) -> None:
39
49
  """Reject unknown map-parameter keys for centrality procedures.
@@ -51,6 +61,22 @@ def _validate_centrality_proc_map(proc_name: str, map_keys) -> None:
51
61
  )
52
62
 
53
63
 
64
+ def _validate_community_proc_map(proc_name: str, map_keys) -> None:
65
+ """Reject unknown map-parameter keys for community-detection procedures (Spec 163 FR-015).
66
+
67
+ Same forward-compat semantics as `_validate_centrality_proc_map` — `weighted`
68
+ is reserved for Phase 2. Used by `_translate_leiden`, `_translate_triangle_count`,
69
+ `_translate_scc`, `_translate_kcore`.
70
+ """
71
+ allowed = COMMUNITY_ALLOWED_KEYS.get(proc_name, set())
72
+ unknown = set(map_keys) - allowed
73
+ if unknown:
74
+ raise ValueError(
75
+ f"Unknown parameters for {proc_name}: {sorted(unknown)}. "
76
+ f"Allowed: {sorted(allowed)}"
77
+ )
78
+
79
+
54
80
  def set_schema_prefix(prefix: str) -> None:
55
81
  """Set the schema prefix for all table references in generated SQL.
56
82
 
@@ -309,9 +335,17 @@ def translate_procedure_call(
309
335
  _translate_closeness(proc, context)
310
336
  elif name == "ivg.eigenvector":
311
337
  _translate_eigenvector(proc, context)
338
+ elif name == "ivg.leiden":
339
+ _translate_leiden(proc, context)
340
+ elif name == "ivg.triangleCount":
341
+ _translate_triangle_count(proc, context)
342
+ elif name == "ivg.scc":
343
+ _translate_scc(proc, context)
344
+ elif name == "ivg.kcore":
345
+ _translate_kcore(proc, context)
312
346
  else:
313
347
  raise ValueError(
314
- f"Unknown procedure: {name!r}. Supported: ivg.retrieve, ivg.vector.search, ivg.neighbors, ivg.ppr, ivg.bm25.search, ivg.ivf.search, ivg.shortestPath.weighted, ivg.degreeCentrality, ivg.betweenness, ivg.closeness, ivg.eigenvector"
348
+ f"Unknown procedure: {name!r}. Supported: ivg.retrieve, ivg.vector.search, ivg.neighbors, ivg.ppr, ivg.bm25.search, ivg.ivf.search, ivg.shortestPath.weighted, ivg.degreeCentrality, ivg.betweenness, ivg.closeness, ivg.eigenvector, ivg.leiden, ivg.triangleCount, ivg.scc, ivg.kcore"
315
349
  )
316
350
 
317
351
 
@@ -3726,3 +3760,142 @@ def _translate_eigenvector(proc, context) -> None:
3726
3760
  context.variable_aliases[item] = "Eigenvector"
3727
3761
  if "score" in proc.yield_items:
3728
3762
  context.scalar_variables.add("score")
3763
+
3764
+
3765
+ def _translate_leiden(proc, context) -> None:
3766
+ opts = proc.options or {}
3767
+ _validate_community_proc_map("ivg.leiden", opts.keys())
3768
+
3769
+ def _val(key, default):
3770
+ v = opts.get(key, default)
3771
+ if hasattr(v, "value"):
3772
+ return v.value
3773
+ return v
3774
+
3775
+ max_levels = int(_val("maxLevels", 10))
3776
+ gamma = float(_val("gamma", 1.0))
3777
+ tol = float(_val("tol", 1e-4))
3778
+ top_k = int(_val("topK", 10000))
3779
+ mem_budget_mb = int(_val("memBudgetMB", 256))
3780
+ seed_v = _val("randomSeed", None)
3781
+ random_seed = -1 if seed_v is None else int(seed_v)
3782
+
3783
+ fn = f"{_schema_prefix}.kg_Leiden" if _schema_prefix else "kg_Leiden"
3784
+ cte_sql = (
3785
+ f"SELECT j.node_id AS node, j.community, j.size\n"
3786
+ f"FROM JSON_TABLE(\n"
3787
+ f" {fn}(?, ?, ?, ?, ?, ?),\n"
3788
+ f" '$[*]' COLUMNS(\n"
3789
+ f" node_id VARCHAR(256) PATH '$.id',\n"
3790
+ f" community INTEGER PATH '$.community',\n"
3791
+ f" size INTEGER PATH '$.size'\n"
3792
+ f" )\n"
3793
+ f") j"
3794
+ )
3795
+ context.all_stage_params.extend([max_levels, gamma, tol, top_k, mem_budget_mb, random_seed])
3796
+ context.stages.insert(0, f"Leiden AS (\n{cte_sql}\n)")
3797
+ for item in proc.yield_items:
3798
+ context.variable_aliases[item] = "Leiden"
3799
+ if "community" in proc.yield_items:
3800
+ context.scalar_variables.add("community")
3801
+ if "size" in proc.yield_items:
3802
+ context.scalar_variables.add("size")
3803
+
3804
+
3805
+ def _translate_triangle_count(proc, context) -> None:
3806
+ opts = proc.options or {}
3807
+ _validate_community_proc_map("ivg.triangleCount", opts.keys())
3808
+
3809
+ def _val(key, default):
3810
+ v = opts.get(key, default)
3811
+ if hasattr(v, "value"):
3812
+ return v.value
3813
+ return v
3814
+
3815
+ top_k = int(_val("topK", 10000))
3816
+
3817
+ fn = f"{_schema_prefix}.kg_TriangleCount" if _schema_prefix else "kg_TriangleCount"
3818
+ cte_sql = (
3819
+ f"SELECT j.node_id AS node, j.triangles, j.lcc\n"
3820
+ f"FROM JSON_TABLE(\n"
3821
+ f" {fn}(?),\n"
3822
+ f" '$[*]' COLUMNS(\n"
3823
+ f" node_id VARCHAR(256) PATH '$.id',\n"
3824
+ f" triangles INTEGER PATH '$.triangles',\n"
3825
+ f" lcc DOUBLE PATH '$.lcc'\n"
3826
+ f" )\n"
3827
+ f") j"
3828
+ )
3829
+ context.all_stage_params.append(top_k)
3830
+ context.stages.insert(0, f"TriangleCount AS (\n{cte_sql}\n)")
3831
+ for item in proc.yield_items:
3832
+ context.variable_aliases[item] = "TriangleCount"
3833
+ if "triangles" in proc.yield_items:
3834
+ context.scalar_variables.add("triangles")
3835
+ if "lcc" in proc.yield_items:
3836
+ context.scalar_variables.add("lcc")
3837
+
3838
+
3839
+ def _translate_scc(proc, context) -> None:
3840
+ opts = proc.options or {}
3841
+ _validate_community_proc_map("ivg.scc", opts.keys())
3842
+
3843
+ def _val(key, default):
3844
+ v = opts.get(key, default)
3845
+ if hasattr(v, "value"):
3846
+ return v.value
3847
+ return v
3848
+
3849
+ top_k = int(_val("topK", 10000))
3850
+
3851
+ fn = f"{_schema_prefix}.kg_SCC" if _schema_prefix else "kg_SCC"
3852
+ cte_sql = (
3853
+ f"SELECT j.node_id AS node, j.component, j.size\n"
3854
+ f"FROM JSON_TABLE(\n"
3855
+ f" {fn}(?),\n"
3856
+ f" '$[*]' COLUMNS(\n"
3857
+ f" node_id VARCHAR(256) PATH '$.id',\n"
3858
+ f" component INTEGER PATH '$.component',\n"
3859
+ f" size INTEGER PATH '$.size'\n"
3860
+ f" )\n"
3861
+ f") j"
3862
+ )
3863
+ context.all_stage_params.append(top_k)
3864
+ context.stages.insert(0, f"SCC AS (\n{cte_sql}\n)")
3865
+ for item in proc.yield_items:
3866
+ context.variable_aliases[item] = "SCC"
3867
+ if "component" in proc.yield_items:
3868
+ context.scalar_variables.add("component")
3869
+ if "size" in proc.yield_items:
3870
+ context.scalar_variables.add("size")
3871
+
3872
+
3873
+ def _translate_kcore(proc, context) -> None:
3874
+ opts = proc.options or {}
3875
+ _validate_community_proc_map("ivg.kcore", opts.keys())
3876
+
3877
+ def _val(key, default):
3878
+ v = opts.get(key, default)
3879
+ if hasattr(v, "value"):
3880
+ return v.value
3881
+ return v
3882
+
3883
+ top_k = int(_val("topK", 10000))
3884
+
3885
+ fn = f"{_schema_prefix}.kg_KCore" if _schema_prefix else "kg_KCore"
3886
+ cte_sql = (
3887
+ f"SELECT j.node_id AS node, j.coreness\n"
3888
+ f"FROM JSON_TABLE(\n"
3889
+ f" {fn}(?),\n"
3890
+ f" '$[*]' COLUMNS(\n"
3891
+ f" node_id VARCHAR(256) PATH '$.id',\n"
3892
+ f" coreness INTEGER PATH '$.coreness'\n"
3893
+ f" )\n"
3894
+ f") j"
3895
+ )
3896
+ context.all_stage_params.append(top_k)
3897
+ context.stages.insert(0, f"KCore AS (\n{cte_sql}\n)")
3898
+ for item in proc.yield_items:
3899
+ context.variable_aliases[item] = "KCore"
3900
+ if "coreness" in proc.yield_items:
3901
+ context.scalar_variables.add("coreness")
@@ -7303,3 +7303,139 @@ class IRISGraphEngine:
7303
7303
  except Exception as e:
7304
7304
  logger.debug("get_centrality_warnings: ^IVG.warnings traversal failed: %s", e)
7305
7305
  return warnings_list
7306
+
7307
+ def leiden_communities(
7308
+ self,
7309
+ max_levels: int = 10,
7310
+ gamma: float = 1.0,
7311
+ tol: float = 1e-4,
7312
+ top_k: int = 10000,
7313
+ mem_budget_mb: int = 256,
7314
+ random_seed: Optional[int] = None,
7315
+ progress_callback: Optional[Callable[[int, int], None]] = None,
7316
+ ) -> List[Dict[str, Any]]:
7317
+ from iris_vector_graph._validate import LeidenInput
7318
+ validated = LeidenInput(
7319
+ max_levels=max_levels, gamma=gamma, tol=tol, top_k=top_k,
7320
+ mem_budget_mb=mem_budget_mb, random_seed=random_seed,
7321
+ )
7322
+
7323
+ if not getattr(self, "_store", None) or not self._store.capabilities().get("leiden", False):
7324
+ raise NotImplementedError(
7325
+ f"Communities.leiden not supported by store "
7326
+ f"{type(self._store).__name__ if getattr(self, '_store', None) else 'None'}"
7327
+ )
7328
+
7329
+ if validated.top_k == 0:
7330
+ try:
7331
+ count_result = self._store.get_node_count()
7332
+ node_count = int(count_result.rows[0][0]) if count_result.rows else 0
7333
+ if node_count > 100_000:
7334
+ import warnings
7335
+ warnings.warn(
7336
+ f"leiden_communities(top_k=0) on {node_count}-node graph may produce large JSON",
7337
+ RuntimeWarning, stacklevel=2,
7338
+ )
7339
+ except Exception:
7340
+ pass
7341
+
7342
+ result = self._store.execute_leiden(
7343
+ validated.max_levels, validated.gamma, validated.tol,
7344
+ validated.top_k, validated.mem_budget_mb,
7345
+ validated.random_seed, progress_callback,
7346
+ )
7347
+ if result.error:
7348
+ return []
7349
+
7350
+ out: List[Dict[str, Any]] = []
7351
+ for row in result.rows:
7352
+ if len(row) >= 1 and row[0] == "_meta":
7353
+ import json as _json
7354
+ meta = _json.loads(row[1]) if isinstance(row[1], str) else row[1]
7355
+ out.append(meta if isinstance(meta, dict) else {"_meta": row[1]})
7356
+ else:
7357
+ out.append({"id": row[0], "community": row[1], "size": row[2]})
7358
+ return out
7359
+
7360
+ def triangle_count(
7361
+ self,
7362
+ top_k: int = 10000,
7363
+ progress_callback: Optional[Callable[[int, int], None]] = None,
7364
+ ) -> List[Dict[str, Any]]:
7365
+ from iris_vector_graph._validate import TriangleCountInput
7366
+ validated = TriangleCountInput(top_k=top_k)
7367
+
7368
+ if not getattr(self, "_store", None) or not self._store.capabilities().get("triangle_count", False):
7369
+ raise NotImplementedError(
7370
+ f"Communities.triangle_count not supported by store "
7371
+ f"{type(self._store).__name__ if getattr(self, '_store', None) else 'None'}"
7372
+ )
7373
+
7374
+ result = self._store.execute_triangle_count(validated.top_k, progress_callback)
7375
+ if result.error:
7376
+ return []
7377
+ return [{"id": row[0], "triangles": row[1], "lcc": row[2]} for row in result.rows]
7378
+
7379
+ def strongly_connected_components(
7380
+ self,
7381
+ top_k: int = 10000,
7382
+ progress_callback: Optional[Callable[[int, int], None]] = None,
7383
+ ) -> List[Dict[str, Any]]:
7384
+ from iris_vector_graph._validate import SCCInput
7385
+ validated = SCCInput(top_k=top_k)
7386
+
7387
+ if not getattr(self, "_store", None) or not self._store.capabilities().get("scc", False):
7388
+ raise NotImplementedError(
7389
+ f"Communities.scc not supported by store "
7390
+ f"{type(self._store).__name__ if getattr(self, '_store', None) else 'None'}"
7391
+ )
7392
+
7393
+ result = self._store.execute_scc(validated.top_k, progress_callback)
7394
+ if result.error:
7395
+ return []
7396
+ return [{"id": row[0], "component": row[1], "size": row[2]} for row in result.rows]
7397
+
7398
+ def k_core(
7399
+ self,
7400
+ top_k: int = 10000,
7401
+ progress_callback: Optional[Callable[[int, int], None]] = None,
7402
+ ) -> List[Dict[str, Any]]:
7403
+ from iris_vector_graph._validate import KCoreInput
7404
+ validated = KCoreInput(top_k=top_k)
7405
+
7406
+ if not getattr(self, "_store", None) or not self._store.capabilities().get("k_core", False):
7407
+ raise NotImplementedError(
7408
+ f"Communities.k_core not supported by store "
7409
+ f"{type(self._store).__name__ if getattr(self, '_store', None) else 'None'}"
7410
+ )
7411
+
7412
+ result = self._store.execute_k_core(validated.top_k, progress_callback)
7413
+ if result.error:
7414
+ return []
7415
+ return [{"id": row[0], "coreness": row[1]} for row in result.rows]
7416
+
7417
+ def get_community_warnings(self, max_entries: int = 50) -> List[Dict[str, Any]]:
7418
+ try:
7419
+ import iris as _iris
7420
+ iris_inst = _iris.createIRIS(self.conn)
7421
+ except Exception:
7422
+ return []
7423
+ warnings_list: List[Dict[str, Any]] = []
7424
+ try:
7425
+ ts = iris_inst.nextSubscript(False, "^IVG.warnings", "communities", "")
7426
+ while ts is not None and ts != "":
7427
+ src = iris_inst.nextSubscript(False, "^IVG.warnings", "communities", ts, "")
7428
+ while src is not None and src != "":
7429
+ reason = iris_inst.get("^IVG.warnings", "communities", ts, src)
7430
+ warnings_list.append({
7431
+ "timestamp": str(ts),
7432
+ "source": str(src),
7433
+ "reason": str(reason) if reason is not None else "",
7434
+ })
7435
+ if len(warnings_list) >= max_entries:
7436
+ return warnings_list
7437
+ src = iris_inst.nextSubscript(False, "^IVG.warnings", "communities", ts, src)
7438
+ ts = iris_inst.nextSubscript(False, "^IVG.warnings", "communities", ts)
7439
+ except Exception as e:
7440
+ logger.debug("get_community_warnings: ^IVG.warnings traversal failed: %s", e)
7441
+ return warnings_list