iris-vector-graph 2.3.0__tar.gz → 2.3.1__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 (782) hide show
  1. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/PKG-INFO +1 -1
  2. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_src/src/Graph/KG/EdgeScan.cls +24 -0
  3. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_src/src/Graph/KG/GraphIndex.cls +8 -4
  4. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_src/src/Graph/KG/Loader.cls +8 -1
  5. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_src/src/Graph/KG/NKGAccelAdjacency.cls +7 -0
  6. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_src/src/Graph/KG/NKGAccelTraversal.cls +8 -0
  7. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/_engine/admin.py +93 -0
  8. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/_engine/fhir.py +15 -0
  9. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/_engine/nodes_edges.py +11 -0
  10. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/_engine/temporal.py +11 -0
  11. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/status.py +34 -0
  12. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/pyproject.toml +1 -1
  13. iris_vector_graph-2.3.1/tests/integration/test_index_consistency_e2e.py +150 -0
  14. iris_vector_graph-2.3.1/tests/unit/test_drift_detector.py +146 -0
  15. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/.gitignore +0 -0
  16. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/LICENSE +0 -0
  17. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/README.md +0 -0
  18. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/examples/demo_biomedical.py +0 -0
  19. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/examples/demo_fraud_detection.py +0 -0
  20. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/examples/demo_fraud_detection_sql.py +0 -0
  21. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/examples/demo_rdf_semantic_layer.py +0 -0
  22. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/examples/demo_utils.py +0 -0
  23. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/examples/demo_working_system.py +0 -0
  24. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/examples/domains/__init__.py +0 -0
  25. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/examples/domains/biomedical/__init__.py +0 -0
  26. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/examples/domains/biomedical/loaders.py +0 -0
  27. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/examples/domains/biomedical/resolver.py +0 -0
  28. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/examples/domains/biomedical/types.py +0 -0
  29. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/examples/domains/biomedical_legacy/__init__.py +0 -0
  30. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/examples/domains/biomedical_legacy/biomedical_engine.py +0 -0
  31. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/examples/domains/biomedical_legacy/biomedical_schema.py +0 -0
  32. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/examples/domains/biomedical_legacy/legacy_wrapper.py +0 -0
  33. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/examples/domains/fraud/__init__.py +0 -0
  34. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/examples/domains/fraud/loaders.py +0 -0
  35. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/examples/domains/fraud/resolver.py +0 -0
  36. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/examples/domains/fraud/types.py +0 -0
  37. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/examples/graphQL.http +0 -0
  38. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/examples/hybrid_vector_graph_query.cypher +0 -0
  39. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/examples/rest.http +0 -0
  40. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_src/src/Graph/KG/Algorithms.cls +0 -0
  41. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_src/src/Graph/KG/ArnoAccel.cls +0 -0
  42. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_src/src/Graph/KG/BM25Index.cls +0 -0
  43. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_src/src/Graph/KG/BenchFormat.cls +0 -0
  44. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_src/src/Graph/KG/BenchSeeder.cls +0 -0
  45. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_src/src/Graph/KG/Benchmark.cls +0 -0
  46. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_src/src/Graph/KG/Centrality.cls +0 -0
  47. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_src/src/Graph/KG/Communities.cls +0 -0
  48. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_src/src/Graph/KG/Edge.cls +0 -0
  49. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_src/src/Graph/KG/EmbedQueue.cls +0 -0
  50. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_src/src/Graph/KG/IVFIndex.cls +0 -0
  51. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_src/src/Graph/KG/MCPService.cls +0 -0
  52. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_src/src/Graph/KG/MCPToolSet.cls +0 -0
  53. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_src/src/Graph/KG/MCPTools.cls +0 -0
  54. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_src/src/Graph/KG/Meta.cls +0 -0
  55. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_src/src/Graph/KG/NKGAccel.cls +0 -0
  56. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_src/src/Graph/KG/NKGAccelCentrality.cls +0 -0
  57. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_src/src/Graph/KG/NKGAccelLoader.cls +0 -0
  58. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_src/src/Graph/KG/PLAIDSearch.cls +0 -0
  59. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_src/src/Graph/KG/PageRank.cls +0 -0
  60. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_src/src/Graph/KG/PyOps.cls +0 -0
  61. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_src/src/Graph/KG/Service.cls +0 -0
  62. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_src/src/Graph/KG/Snapshot.cls +0 -0
  63. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_src/src/Graph/KG/Subgraph.cls +0 -0
  64. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_src/src/Graph/KG/TemporalIndex.cls +0 -0
  65. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_src/src/Graph/KG/TestEdge.cls +0 -0
  66. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_src/src/Graph/KG/Traversal.cls +0 -0
  67. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_src/src/Graph/KG/TraversalBFS.cls +0 -0
  68. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_src/src/Graph/KG/TraversalBuild.cls +0 -0
  69. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_src/src/Graph/KG/TraversalKHop.cls +0 -0
  70. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_src/src/Graph/KG/TraversalPaths.cls +0 -0
  71. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_src/src/Graph/KG/VecIndex.cls +0 -0
  72. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_src/src/IVG/CypherEngine.cls +0 -0
  73. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_src/src/IVG/Percentile.cls +0 -0
  74. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_src/src/PageRankEmbedded.cls +0 -0
  75. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_src/src/User.Exec.cls +0 -0
  76. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_src/src/iris/vector/graph/GraphOperators.cls +0 -0
  77. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/__init__.py +0 -0
  78. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/_engine/__init__.py +0 -0
  79. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/_engine/_rdf_utils.py +0 -0
  80. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/_engine/algorithms.py +0 -0
  81. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/_engine/embeddings.py +0 -0
  82. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/_engine/prov.py +0 -0
  83. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/_engine/query.py +0 -0
  84. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/_engine/query.py,cover +0 -0
  85. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/_engine/rdf_export.py +0 -0
  86. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/_engine/schema.py +0 -0
  87. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/_engine/shacl.py +0 -0
  88. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/_engine/snapshot.py +0 -0
  89. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/_engine/snapshot.py,cover +0 -0
  90. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/_engine/vector.py +0 -0
  91. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/_validate.py +0 -0
  92. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/api_auth.py +0 -0
  93. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/bolt_server.py +0 -0
  94. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/0-b124e26129aa436b26fe.bundle.js +0 -0
  95. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/1-b124e26129aa436b26fe.bundle.js +0 -0
  96. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/10-b124e26129aa436b26fe.bundle.js +0 -0
  97. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/11-b124e26129aa436b26fe.bundle.js +0 -0
  98. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/12-b124e26129aa436b26fe.bundle.js +0 -0
  99. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/13-b124e26129aa436b26fe.bundle.js +0 -0
  100. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/14-b124e26129aa436b26fe.bundle.js +0 -0
  101. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/15-b124e26129aa436b26fe.bundle.js +0 -0
  102. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/16-b124e26129aa436b26fe.bundle.js +0 -0
  103. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/17-b124e26129aa436b26fe.bundle.js +0 -0
  104. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/18-b124e26129aa436b26fe.bundle.js +0 -0
  105. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/19-b124e26129aa436b26fe.bundle.js +0 -0
  106. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/20-b124e26129aa436b26fe.bundle.js +0 -0
  107. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/21-b124e26129aa436b26fe.bundle.js +0 -0
  108. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/22-b124e26129aa436b26fe.bundle.js +0 -0
  109. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/23-b124e26129aa436b26fe.bundle.js +0 -0
  110. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/24-b124e26129aa436b26fe.bundle.js +0 -0
  111. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/25-b124e26129aa436b26fe.bundle.js +0 -0
  112. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/26-b124e26129aa436b26fe.bundle.js +0 -0
  113. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/27-b124e26129aa436b26fe.bundle.js +0 -0
  114. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/28-b124e26129aa436b26fe.bundle.js +0 -0
  115. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/29-b124e26129aa436b26fe.bundle.js +0 -0
  116. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/30-b124e26129aa436b26fe.bundle.js +0 -0
  117. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/31-b124e26129aa436b26fe.bundle.js +0 -0
  118. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/32-b124e26129aa436b26fe.bundle.js +0 -0
  119. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/33-b124e26129aa436b26fe.bundle.js +0 -0
  120. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/34-b124e26129aa436b26fe.bundle.js +0 -0
  121. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/35-b124e26129aa436b26fe.bundle.js +0 -0
  122. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/36-b124e26129aa436b26fe.bundle.js +0 -0
  123. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/37-b124e26129aa436b26fe.bundle.js +0 -0
  124. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/38-b124e26129aa436b26fe.bundle.js +0 -0
  125. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/39-b124e26129aa436b26fe.bundle.js +0 -0
  126. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/40-b124e26129aa436b26fe.bundle.js +0 -0
  127. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/41-b124e26129aa436b26fe.bundle.js +0 -0
  128. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/42-b124e26129aa436b26fe.bundle.js +0 -0
  129. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/43-b124e26129aa436b26fe.bundle.js +0 -0
  130. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/44-b124e26129aa436b26fe.bundle.js +0 -0
  131. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/45-b124e26129aa436b26fe.bundle.js +0 -0
  132. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/46-b124e26129aa436b26fe.bundle.js +0 -0
  133. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/47-b124e26129aa436b26fe.bundle.js +0 -0
  134. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/48-b124e26129aa436b26fe.bundle.js +0 -0
  135. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/49-b124e26129aa436b26fe.bundle.js +0 -0
  136. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/50-b124e26129aa436b26fe.bundle.js +0 -0
  137. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/51-b124e26129aa436b26fe.bundle.js +0 -0
  138. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/52-b124e26129aa436b26fe.bundle.js +0 -0
  139. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/53-b124e26129aa436b26fe.bundle.js +0 -0
  140. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/54-b124e26129aa436b26fe.bundle.js +0 -0
  141. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/55-b124e26129aa436b26fe.bundle.js +0 -0
  142. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/56-b124e26129aa436b26fe.bundle.js +0 -0
  143. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/57-b124e26129aa436b26fe.bundle.js +0 -0
  144. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/58-b124e26129aa436b26fe.bundle.js +0 -0
  145. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/59-b124e26129aa436b26fe.bundle.js +0 -0
  146. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/6-b124e26129aa436b26fe.bundle.js +0 -0
  147. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/60-b124e26129aa436b26fe.bundle.js +0 -0
  148. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/61-b124e26129aa436b26fe.bundle.js +0 -0
  149. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/62-b124e26129aa436b26fe.bundle.js +0 -0
  150. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/63-b124e26129aa436b26fe.bundle.js +0 -0
  151. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/64-b124e26129aa436b26fe.bundle.js +0 -0
  152. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/65-b124e26129aa436b26fe.bundle.js +0 -0
  153. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/66-b124e26129aa436b26fe.bundle.js +0 -0
  154. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/67-b124e26129aa436b26fe.bundle.js +0 -0
  155. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/68-b124e26129aa436b26fe.bundle.js +0 -0
  156. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/69-b124e26129aa436b26fe.bundle.js +0 -0
  157. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/7-b124e26129aa436b26fe.bundle.js +0 -0
  158. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/70-b124e26129aa436b26fe.bundle.js +0 -0
  159. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/71-b124e26129aa436b26fe.bundle.js +0 -0
  160. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/72-b124e26129aa436b26fe.bundle.js +0 -0
  161. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/73-b124e26129aa436b26fe.bundle.js +0 -0
  162. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/74-b124e26129aa436b26fe.bundle.js +0 -0
  163. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/75-b124e26129aa436b26fe.bundle.js +0 -0
  164. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/8-b124e26129aa436b26fe.bundle.js +0 -0
  165. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/9-b124e26129aa436b26fe.bundle.js +0 -0
  166. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/app-b124e26129aa436b26fe.js +0 -0
  167. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/filter-a7c44e713bf19d31f6b2849160b1bba8.svg +0 -0
  168. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Bold.eot +0 -0
  169. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Bold.ttf +0 -0
  170. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Bold.woff +0 -0
  171. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Bold.woff2 +0 -0
  172. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Light.eot +0 -0
  173. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Light.ttf +0 -0
  174. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Light.woff +0 -0
  175. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Light.woff2 +0 -0
  176. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Medium.eot +0 -0
  177. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Medium.ttf +0 -0
  178. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Medium.woff +0 -0
  179. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Medium.woff2 +0 -0
  180. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Regular.eot +0 -0
  181. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Regular.ttf +0 -0
  182. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Regular.woff +0 -0
  183. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Regular.woff2 +0 -0
  184. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/fonts/OpenSans-Bold.ttf +0 -0
  185. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/fonts/OpenSans-BoldItalic.ttf +0 -0
  186. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/fonts/OpenSans-ExtraBold.ttf +0 -0
  187. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/fonts/OpenSans-ExtraBoldItalic.ttf +0 -0
  188. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/fonts/OpenSans-Italic.ttf +0 -0
  189. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/fonts/OpenSans-Light.ttf +0 -0
  190. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/fonts/OpenSans-LightItalic.ttf +0 -0
  191. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/fonts/OpenSans-Regular.ttf +0 -0
  192. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/fonts/OpenSans-Semibold.ttf +0 -0
  193. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/fonts/OpenSans-SemiboldItalic.ttf +0 -0
  194. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/fonts/codicon.ttf +0 -0
  195. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/fonts/filter.svg +0 -0
  196. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/fonts/fontawesome-webfont.eot +0 -0
  197. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/fonts/fontawesome-webfont.svg +0 -0
  198. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/fonts/fontawesome-webfont.ttf +0 -0
  199. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/fonts/fontawesome-webfont.woff +0 -0
  200. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/fonts/fontawesome-webfont.woff2 +0 -0
  201. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/fonts/group-by.svg +0 -0
  202. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/fonts/neo4j-world.eot +0 -0
  203. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/fonts/neo4j-world.svg +0 -0
  204. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/fonts/neo4j-world.ttf +0 -0
  205. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/fonts/neo4j-world.woff +0 -0
  206. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/fonts/sort.svg +0 -0
  207. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/fonts/sort1.svg +0 -0
  208. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/fonts/sort2.svg +0 -0
  209. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/fonts/streamline.eot +0 -0
  210. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/fonts/streamline.svg +0 -0
  211. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/fonts/streamline.ttf +0 -0
  212. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/fonts/streamline.woff +0 -0
  213. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/group-by-89c6aaa756bc3548cc6ab3d2be4d2862.svg +0 -0
  214. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/images/Favorites.mp4 +0 -0
  215. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/images/Keystrokes.mp4 +0 -0
  216. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/images/ProjectFiles.mp4 +0 -0
  217. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/images/ReusableFrame.mp4 +0 -0
  218. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/images/SidebarDB_Iinfo.png +0 -0
  219. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/images/Stream.png +0 -0
  220. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/images/aura-logo-inverted.svg +0 -0
  221. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/images/aura-logo.svg +0 -0
  222. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/images/books.png +0 -0
  223. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/images/clusters.svg +0 -0
  224. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/images/community.jpg +0 -0
  225. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/images/device-icons/android-icon-144x144.png +0 -0
  226. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/images/device-icons/android-icon-192x192.png +0 -0
  227. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/images/device-icons/android-icon-36x36.png +0 -0
  228. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/images/device-icons/android-icon-48x48.png +0 -0
  229. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/images/device-icons/android-icon-72x72.png +0 -0
  230. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/images/device-icons/android-icon-96x96.png +0 -0
  231. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-114x114.png +0 -0
  232. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-120x120.png +0 -0
  233. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-144x144.png +0 -0
  234. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-152x152.png +0 -0
  235. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-180x180.png +0 -0
  236. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-57x57.png +0 -0
  237. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-60x60.png +0 -0
  238. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-72x72.png +0 -0
  239. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-76x76.png +0 -0
  240. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-precomposed.png +0 -0
  241. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon.png +0 -0
  242. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/images/device-icons/browserconfig.xml +0 -0
  243. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/images/device-icons/favicon-16x16.png +0 -0
  244. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/images/device-icons/favicon-32x32.png +0 -0
  245. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/images/device-icons/favicon-96x96.png +0 -0
  246. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/images/device-icons/favicon.ico +0 -0
  247. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/images/device-icons/manifest.json +0 -0
  248. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/images/device-icons/ms-icon-144x144.png +0 -0
  249. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/images/device-icons/ms-icon-150x150.png +0 -0
  250. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/images/device-icons/ms-icon-310x310.png +0 -0
  251. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/images/device-icons/ms-icon-70x70.png +0 -0
  252. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/images/device-icons/neo4j-browser-canary.svg +0 -0
  253. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/images/device-icons/neo4j-browser.svg +0 -0
  254. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/images/labeled_node.png +0 -0
  255. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/images/more_nodes.png +0 -0
  256. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/images/neo4j-favicon.ico +0 -0
  257. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/images/neo4j-logo-inverted.svg +0 -0
  258. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/images/neo4j-logo.svg +0 -0
  259. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/images/northwind/customer-orders.png +0 -0
  260. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/images/northwind/order-graph.png +0 -0
  261. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/images/northwind/product-category-supplier.png +0 -0
  262. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/images/northwind/product-graph.png +0 -0
  263. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/images/one_node.png +0 -0
  264. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/images/query-plan-operator-cost.svg +0 -0
  265. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/images/query-plan-operator-details.svg +0 -0
  266. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/images/query-plan-operator-rows.svg +0 -0
  267. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/images/query-plan.svg +0 -0
  268. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/images/rel-props.png +0 -0
  269. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/images/relationships.png +0 -0
  270. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/images/screen_code_frame.png +0 -0
  271. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/images/screen_cypher_warn.png +0 -0
  272. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/images/screen_editor.png +0 -0
  273. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/images/screen_sidebar.png +0 -0
  274. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/images/screen_stream.png +0 -0
  275. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/sort-8d6f482c21de572ceeb5ac93623e6c97.svg +0 -0
  276. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/sort1-d2dc515571213fc0ca99b0341b88e413.svg +0 -0
  277. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/sort2-31050964e7eb2042325f7bcbba3d58ad.svg +0 -0
  278. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/bolt-worker-dfa551eb0861cc080843.js +0 -0
  279. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/cypher-editor-b124e26129aa436b26fe.bundle.js +0 -0
  280. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/editor-455af92e7e1dc39fdbc8060f6680ab32.worker.js +0 -0
  281. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/index.html +0 -0
  282. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/manifest.json +0 -0
  283. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/CoseBilkentLayout.worker-FEt6e_rV.js +0 -0
  284. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/HierarchicalLayout.worker-O6WHYssL.js +0 -0
  285. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/asciidoc.8O6YIVRy.js +0 -0
  286. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/auto-track.BlKugDvg.js +0 -0
  287. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/bash.CLAyaf9k.js +0 -0
  288. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/c.l4fEI10z.js +0 -0
  289. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/connect-icon-Br2hQy_e.svg +0 -0
  290. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/csharp.ChqrQYCS.js +0 -0
  291. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/css-extras.Bi-4v17d.js +0 -0
  292. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/css.B1LHiudN.js +0 -0
  293. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/cypher-editor-auto-completions.gif +0 -0
  294. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/cypher-editor-inline-help.png +0 -0
  295. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/cypher-editor-linting.png +0 -0
  296. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/cypher-editor-syntax-highlighting.png +0 -0
  297. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/cypher-reference.gif +0 -0
  298. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/cypher.C3qdyJ5B.js +0 -0
  299. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/docker.CF7EZT1T.js +0 -0
  300. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/fira-code-400-regular-normal-BzypJxJk.woff2 +0 -0
  301. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/fira-code-500-medium-normal-CRWzqcWa.woff2 +0 -0
  302. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/fira-code-700-bold-normal-hUmNV4O0.woff2 +0 -0
  303. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/go.FsJyBHVG.js +0 -0
  304. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/graphql.BlTzkzAJ.js +0 -0
  305. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/history-quick-search.gif +0 -0
  306. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/index-CY0cZcsW.js +0 -0
  307. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/index-H7L207gH.css +0 -0
  308. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/index.BpRu7Js3.js +0 -0
  309. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/index.C74acnU7.js +0 -0
  310. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/index.CHatcJcU.js +0 -0
  311. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/index.D6ZMQedT.js +0 -0
  312. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/index.DPZla5MT.js +0 -0
  313. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/index.dzIUqrzq.js +0 -0
  314. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/index.leyiHvaQ.js +0 -0
  315. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/index.qJ6VE118.js +0 -0
  316. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/index.umd.B9yhfa5Y.js +0 -0
  317. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/is-plan-event-enabled.DeNtQvA5.js +0 -0
  318. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/java.BBXwBh9f.js +0 -0
  319. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/java.CQ1iJ0-D.js +0 -0
  320. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/javadoc.UnquSOIj.js +0 -0
  321. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/javascript.CYTqTa0W.js +0 -0
  322. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/json.BIkJg-Cj.js +0 -0
  323. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/jsx.Cy_hP1z6.js +0 -0
  324. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/kotlin.D_6l0VkM.js +0 -0
  325. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/lintWorker-QNEp56W3.js +0 -0
  326. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/logo-aura-white-DCfUnkCN.svg +0 -0
  327. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/movie-model.png +0 -0
  328. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/movies-active-B2SzHIc1.svg +0 -0
  329. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/neo4j-logo-active-CieUxroh.svg +0 -0
  330. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/patterned-banner-background-C_nO-Yn8.svg +0 -0
  331. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/php.BKb6XVba.js +0 -0
  332. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/plan-graph-worker-s17nF19Q.js +0 -0
  333. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/public-sans-300-light-normal-CG9e8kLa.woff2 +0 -0
  334. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/public-sans-400-regular-italic-D9FlViiB.woff2 +0 -0
  335. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/public-sans-400-regular-normal-D4F9yfFi.woff2 +0 -0
  336. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/public-sans-500-medium-normal-ChZcBEnJ.woff2 +0 -0
  337. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/public-sans-600-semi-bold-normal-Ck6TyfRI.woff2 +0 -0
  338. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/public-sans-700-bold-normal-CGjRhW-d.woff2 +0 -0
  339. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/python.tCcUC3U7.js +0 -0
  340. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/query-fundamentals-active-jvTJU1K2.svg +0 -0
  341. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/query.snake-frame.DmvXOQIM.js +0 -0
  342. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/regex.C_VuIVtC.js +0 -0
  343. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/rust.CtSATZMt.js +0 -0
  344. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/saved-cypher.gif +0 -0
  345. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/scalable-graph-visualization.gif +0 -0
  346. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/sql.CfOAbw6n.js +0 -0
  347. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/syne-neo-500-medium-normal-A5GXmYUf.woff2 +0 -0
  348. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/table-visualization.gif +0 -0
  349. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/typescript.3Tbm37mD.js +0 -0
  350. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/xml-doc.h79Tu9Aw.js +0 -0
  351. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/yaml.B-Jvd59g.js +0 -0
  352. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/favicons/android-chrome-192x192.png +0 -0
  353. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/favicons/apple-touch-icon.png +0 -0
  354. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/favicons/favicon-16x16.png +0 -0
  355. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/favicons/favicon-194x194.png +0 -0
  356. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/favicons/favicon-32x32.png +0 -0
  357. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/favicons/favicon.ico +0 -0
  358. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/favicons/safari-pinned-tab.svg +0 -0
  359. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/index.html +0 -0
  360. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/manifest.json +0 -0
  361. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/ui-libs-b124e26129aa436b26fe.bundle.js +0 -0
  362. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/vendor-b124e26129aa436b26fe.bundle.js +0 -0
  363. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/bulk_loader.py +0 -0
  364. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/capabilities.py +0 -0
  365. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/cli.py +0 -0
  366. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/cypher/__init__.py +0 -0
  367. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/cypher/algorithms/__init__.py +0 -0
  368. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/cypher/algorithms/paths.py +0 -0
  369. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/cypher/aql/__init__.py +0 -0
  370. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/cypher/aql/ast.py +0 -0
  371. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/cypher/aql/lexer.py +0 -0
  372. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/cypher/aql/parser.py +0 -0
  373. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/cypher/aql/translator.py +0 -0
  374. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/cypher/ast.py +0 -0
  375. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/cypher/lexer.py +0 -0
  376. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/cypher/parser.py +0 -0
  377. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/cypher/translator.py +0 -0
  378. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/cypher/translator.py,cover +0 -0
  379. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/cypher_api.py +0 -0
  380. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/dbapi_utils.py +0 -0
  381. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/embed_selector.py +0 -0
  382. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/embedded.py +0 -0
  383. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/engine.py +0 -0
  384. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/errors.py +0 -0
  385. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/fhir_bridge.py +0 -0
  386. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/fusion.py +0 -0
  387. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/gql/__init__.py +0 -0
  388. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/gql/constants.py +0 -0
  389. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/gql/engine.py +0 -0
  390. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/gql/pooling.py +0 -0
  391. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/gql/resolvers.py +0 -0
  392. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/gql/schema.py +0 -0
  393. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/index_config.py +0 -0
  394. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/index_protocol.py +0 -0
  395. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/models.py +0 -0
  396. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/operators.py +0 -0
  397. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/py.typed +0 -0
  398. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/result.py +0 -0
  399. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/schema.py +0 -0
  400. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/sdk.py +0 -0
  401. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/security.py +0 -0
  402. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/store_protocol.py +0 -0
  403. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/stores/__init__.py +0 -0
  404. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/stores/arno_bridge.py +0 -0
  405. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/stores/iris_sql_store.py +0 -0
  406. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/stores/lazy_kg.py +0 -0
  407. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/text_search.py +0 -0
  408. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/utils.py +0 -0
  409. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/vector_utils.py +0 -0
  410. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/sql/fhir_bridges.sql +0 -0
  411. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/sql/fraud_sample_data.sql +0 -0
  412. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/sql/globals_schema.sql +0 -0
  413. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/sql/graph_path_globals.sql +0 -0
  414. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/sql/graph_walk_tvf.sql +0 -0
  415. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/sql/migrations/000_base_schema_iris.sql +0 -0
  416. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/sql/migrations/001_add_nodepk_table.sql +0 -0
  417. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/sql/migrations/001_rollback_nodepk.sql +0 -0
  418. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/sql/migrations/002_add_fk_constraints.sql +0 -0
  419. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/sql/operators.sql +0 -0
  420. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/sql/operators_fixed.sql +0 -0
  421. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/sql/procedures/kg_PageRank.sql +0 -0
  422. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/sql/rdf_reifications.sql +0 -0
  423. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/sql/schema.sql +0 -0
  424. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/TESTING.md +0 -0
  425. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/benchmark_parser.py +0 -0
  426. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/benchmarks/README.md +0 -0
  427. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/benchmarks/bench.py +0 -0
  428. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/benchmarks/bench_193_full.py +0 -0
  429. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/benchmarks/bench_utils.py +0 -0
  430. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/benchmarks/benchmark_neo4j.py +0 -0
  431. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/benchmarks/bfs_benchmark.py +0 -0
  432. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/benchmarks/establish_baseline.py +0 -0
  433. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/benchmarks/graph_gen.py +0 -0
  434. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/benchmarks/ic2_profile.py +0 -0
  435. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/benchmarks/iris_baseline_run.py +0 -0
  436. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/benchmarks/iris_os_run.py +0 -0
  437. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/benchmarks/ldbc_full_loader.py +0 -0
  438. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/benchmarks/load_neo4j.py +0 -0
  439. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/benchmarks/synthetic_baseline.csv +0 -0
  440. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/conftest.py +0 -0
  441. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/contract/__init__.py +0 -0
  442. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/contract/conftest.py +0 -0
  443. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/contract/test_cypher_api.py +0 -0
  444. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/contract/test_cypher_api_errors.py +0 -0
  445. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/contract/test_graphql_queries.py +0 -0
  446. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/contract/test_graphql_schema.py +0 -0
  447. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/contract/test_ppr_api.py +0 -0
  448. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/curl_suite.sh +0 -0
  449. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/__init__.py +0 -0
  450. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/conftest.py +0 -0
  451. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/fixtures/__init__.py +0 -0
  452. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/fixtures/centrality_graphs.py +0 -0
  453. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/fixtures/community_graphs.py +0 -0
  454. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_analytics_dispatch.py +0 -0
  455. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_approx_count_distinct.py +0 -0
  456. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_aql_e2e.py +0 -0
  457. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_arno_bfs_global.py +0 -0
  458. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_arno_bfs_unified.py +0 -0
  459. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_betweenness_neighborhood_e2e.py +0 -0
  460. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_betweenness_os_e2e.py +0 -0
  461. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_biomedical_demo.py +0 -0
  462. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_biomedical_ui.py +0 -0
  463. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_centrality_e2e.py +0 -0
  464. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_closeness_os_e2e.py +0 -0
  465. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_communities_e2e.py +0 -0
  466. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_communities_perf.py +0 -0
  467. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_cypher_coerce_e2e.py +0 -0
  468. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_cypher_gaps_e2e.py +0 -0
  469. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_cypher_sprints_e2e.py +0 -0
  470. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_cypher_vector_search.py +0 -0
  471. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_cypher_vl_path_bfs.py +0 -0
  472. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_edge_weights.py +0 -0
  473. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_eigenvector_os_e2e.py +0 -0
  474. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_embed_queue_e2e.py +0 -0
  475. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_embedded_wgproto_e2e.py +0 -0
  476. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_execution_contexts.py +0 -0
  477. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_execution_contexts_new.py +0 -0
  478. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_fhir_bridges_e2e.py +0 -0
  479. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_fraud_demo.py +0 -0
  480. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_fraud_ui.py +0 -0
  481. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_gql_autogen_startup.py +0 -0
  482. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_gql_cypher_passthrough.py +0 -0
  483. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_gql_node_queries.py +0 -0
  484. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_gql_semantic_search.py +0 -0
  485. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_gql_traversal.py +0 -0
  486. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_graph_kernels_e2e.py +0 -0
  487. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_hla_kg_e2e.py +0 -0
  488. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_ic13_shortest_path.py +0 -0
  489. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_ic3_exact_count.py +0 -0
  490. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_igraph_fastpath_parity.py +0 -0
  491. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_index_protocol.py +0 -0
  492. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_introspection_api.py +0 -0
  493. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_ivf_insert.py +0 -0
  494. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_large_output_chunked.py +0 -0
  495. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_lazy_kg_e2e.py +0 -0
  496. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_lazy_node_resolution.py +0 -0
  497. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_msbfs_closeness.py +0 -0
  498. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_multi_query_engine_platform.py +0 -0
  499. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_named_paths_e2e.py +0 -0
  500. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_nkg_index_e2e.py +0 -0
  501. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_objectscript_split_resolution.py +0 -0
  502. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_operator_wiring_e2e.py +0 -0
  503. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_pattern_comprehension_reduce.py +0 -0
  504. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_plaid.py +0 -0
  505. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_plaid_search_e2e.py +0 -0
  506. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_ppr_cls_fast_path.py +0 -0
  507. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_ppr_guided_e2e.py +0 -0
  508. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_procedure_installation.py +0 -0
  509. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_reification_e2e.py +0 -0
  510. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_schema_procedures_e2e.py +0 -0
  511. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_sdk_ergonomics_178_180_e2e.py +0 -0
  512. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_store_injection_e2e.py +0 -0
  513. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_streaming_bfs.py +0 -0
  514. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_stress_api.py +0 -0
  515. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_stress_ingest.py +0 -0
  516. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_stress_multi_context.py +0 -0
  517. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_stress_search.py +0 -0
  518. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_stress_setup.py +0 -0
  519. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_stress_traversal.py +0 -0
  520. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_subgraph_e2e.py +0 -0
  521. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_subquery_call_e2e.py +0 -0
  522. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_temporal_store_e2e.py +0 -0
  523. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_unified_index_api.py +0 -0
  524. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_untested_methods.py +0 -0
  525. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_vecindex_e2e.py +0 -0
  526. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/__init__.py +0 -0
  527. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/conftest.py +0 -0
  528. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/gql/__init__.py +0 -0
  529. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/gql/test_graphql_mutations.py +0 -0
  530. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/gql/test_graphql_nested_queries.py +0 -0
  531. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/gql/test_graphql_queries.py +0 -0
  532. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/gql/test_graphql_vector_search.py +0 -0
  533. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_196_bug_fixes.py +0 -0
  534. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_admin_introspection.py +0 -0
  535. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_algorithm_branches.py +0 -0
  536. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_algorithms_deep_coverage.py +0 -0
  537. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_algorithms_error_paths.py +0 -0
  538. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_algorithms_integration.py +0 -0
  539. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_algorithms_new_paths.py +0 -0
  540. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_api_completeness.py +0 -0
  541. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_arno_bridge_mock_paths.py +0 -0
  542. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_arno_bridge_paths.py +0 -0
  543. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_arno_store_layer.py +0 -0
  544. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_bidirectional_ppr.py +0 -0
  545. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_bulk_load_session.py +0 -0
  546. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_bulk_loader_live.py +0 -0
  547. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_cls_layer.py +0 -0
  548. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_coverage_final_push.py +0 -0
  549. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_coverage_push_final.py +0 -0
  550. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_cypher_advanced.py +0 -0
  551. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_cypher_api_e2e.py +0 -0
  552. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_cypher_api_exception_paths.py +0 -0
  553. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_cypher_enhancements.py +0 -0
  554. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_cypher_multi_type.py +0 -0
  555. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_cypher_rd.py +0 -0
  556. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_cypher_rel_vars.py +0 -0
  557. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_cypher_single_type.py +0 -0
  558. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_cypher_untyped.py +0 -0
  559. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_cypher_vector_search.py +0 -0
  560. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_diabolical_qa.py +0 -0
  561. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_doc_claims.py +0 -0
  562. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_embeddings_api.py +0 -0
  563. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_embeddings_integration.py +0 -0
  564. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_embeddings_paths.py +0 -0
  565. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_engine_misc_paths.py +0 -0
  566. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_engine_utils_paths.py +0 -0
  567. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_fastapi_graphql.py +0 -0
  568. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_fhir_bridges_integration.py +0 -0
  569. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_fhir_event_sidecar.py +0 -0
  570. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_fusion_dbapi_bulk.py +0 -0
  571. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_gql_resolvers_live.py +0 -0
  572. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_lazykg_algorithms.py +0 -0
  573. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_lazykg_fallback_forced.py +0 -0
  574. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_named_paths_integration.py +0 -0
  575. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_nodepk_advanced_benchmarks.py +0 -0
  576. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_nodepk_constraints.py +0 -0
  577. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_nodepk_graph_analytics.py +0 -0
  578. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_nodepk_migration.py +0 -0
  579. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_nodepk_performance.py +0 -0
  580. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_nodepk_production_scale.py +0 -0
  581. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_nodes_edges_and_algo_paths.py +0 -0
  582. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_nodes_edges_deep.py +0 -0
  583. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_objectscript_classes.py +0 -0
  584. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_pagerank_sql_optimization.py +0 -0
  585. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_query_deep.py +0 -0
  586. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_query_engine_branches.py +0 -0
  587. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_query_engine_special.py +0 -0
  588. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_query_fastpaths.py +0 -0
  589. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_query_paths_deep.py +0 -0
  590. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_query_special_patterns.py +0 -0
  591. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_rdf_semantic_layer_e2e.py +0 -0
  592. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_reification_integration.py +0 -0
  593. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_remaining_paths.py +0 -0
  594. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_schema_and_engine_procs.py +0 -0
  595. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_schema_deep.py +0 -0
  596. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_schema_migration.py +0 -0
  597. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_snapshot_deep.py +0 -0
  598. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_snapshot_import_export.py +0 -0
  599. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_snapshot_paths.py +0 -0
  600. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_sql_parameterization.py +0 -0
  601. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_sql_store_direct.py +0 -0
  602. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_sql_store_paths.py +0 -0
  603. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_store_algorithms.py +0 -0
  604. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_store_bfs_deep.py +0 -0
  605. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_store_exception_paths.py +0 -0
  606. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_store_write_paths.py +0 -0
  607. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_stored_procedure_install.py +0 -0
  608. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_subquery_call_integration.py +0 -0
  609. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_vector_advanced_paths.py +0 -0
  610. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_vector_engine_deep.py +0 -0
  611. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_vector_index_paths.py +0 -0
  612. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_vector_index_paths2.py +0 -0
  613. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_vector_optimizer_live.py +0 -0
  614. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_vector_paths.py +0 -0
  615. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/perf/__init__.py +0 -0
  616. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/perf/test_betweenness_vs_gds.py +0 -0
  617. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/perf/test_head_to_head.py +0 -0
  618. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/perf/test_leiden_four_way.py +0 -0
  619. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/performance/conftest.py +0 -0
  620. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/performance/scale_benchmark.py +0 -0
  621. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/performance/test_ppr_stress.py +0 -0
  622. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/performance/test_stress_v1_5.py +0 -0
  623. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/python/run_all_tests.py +0 -0
  624. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/python/test_iris_rest_api.py +0 -0
  625. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/python/test_networkx_loader.py +0 -0
  626. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/python/test_performance_benchmarks.py +0 -0
  627. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/python/test_pyops_vector_conversion.py +0 -0
  628. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/python/test_python_operators.py +0 -0
  629. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/python/test_python_sdk.py +0 -0
  630. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/python/test_schema_validation.py +0 -0
  631. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/python/test_sql_queries.py +0 -0
  632. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/python/test_vector_functions.py +0 -0
  633. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/regression/__init__.py +0 -0
  634. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/regression/engine_api_baseline.json +0 -0
  635. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/regression/test_complexity.py +0 -0
  636. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/regression/test_engine_api.py +0 -0
  637. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/regression/test_module_size.py +0 -0
  638. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/regression/test_no_silent_swallow.py +0 -0
  639. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/test_schema_contract.py +0 -0
  640. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/cypher/__init__.py +0 -0
  641. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/cypher/test_lexer.py +0 -0
  642. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/cypher/test_lexer_advanced.py +0 -0
  643. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/cypher/test_parser.py +0 -0
  644. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/cypher/test_parser_advanced.py +0 -0
  645. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_193_bfs_nkg_fast_path.py +0 -0
  646. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_194_readme.py +0 -0
  647. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_admin_remaining.py +0 -0
  648. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_admin_unit.py +0 -0
  649. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_algorithm_warning_paths.py +0 -0
  650. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_algorithms_extended_unit.py +0 -0
  651. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_algorithms_large_graph_warn.py +0 -0
  652. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_algorithms_unit.py +0 -0
  653. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_api_security.py +0 -0
  654. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_aql_lexer.py +0 -0
  655. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_aql_parser.py +0 -0
  656. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_aql_translator.py +0 -0
  657. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_aql_translator_extra.py +0 -0
  658. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_arno_bridge.py +0 -0
  659. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_batch_mutations.py +0 -0
  660. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_betweenness_os_unit.py +0 -0
  661. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_bfs_arno.py +0 -0
  662. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_bm25_index.py +0 -0
  663. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_bolt_relationship_encoding.py +0 -0
  664. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_bolt_server.py +0 -0
  665. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_bulk_load_session.py +0 -0
  666. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_bulk_loader_coverage.py +0 -0
  667. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_bulk_loader_unit.py +0 -0
  668. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_centrality_translator.py +0 -0
  669. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_centrality_unit.py +0 -0
  670. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_cli.py +0 -0
  671. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_closeness_os_unit.py +0 -0
  672. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_cls_deployment.py +0 -0
  673. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_communities_translator.py +0 -0
  674. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_communities_unit.py +0 -0
  675. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_concept_first_status.py +0 -0
  676. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_coverage_boost.py +0 -0
  677. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_cypher_api_admin.py +0 -0
  678. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_cypher_api_coverage.py +0 -0
  679. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_cypher_api_extra.py +0 -0
  680. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_cypher_benchmark.py +0 -0
  681. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_cypher_benchmark_scale.py +0 -0
  682. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_cypher_case_when.py +0 -0
  683. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_cypher_e2e_new_features.py +0 -0
  684. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_cypher_functions.py +0 -0
  685. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_cypher_parser.py +0 -0
  686. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_cypher_posos_bugs.py +0 -0
  687. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_cypher_procedures.py +0 -0
  688. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_cypher_translator.py +0 -0
  689. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_cypher_union_exists.py +0 -0
  690. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_cypher_var_length.py +0 -0
  691. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_cypher_vector_search.py +0 -0
  692. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_dbapi_utils_unit.py +0 -0
  693. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_edge_embeddings.py +0 -0
  694. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_edgeprop_ndjson.py +0 -0
  695. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_embed_nodes_params.py +0 -0
  696. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_embed_selector.py +0 -0
  697. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_embed_selector_unit.py +0 -0
  698. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_embedded.py +0 -0
  699. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_embedded_wgproto.py +0 -0
  700. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_embeddings_remaining.py +0 -0
  701. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_embeddings_unit.py +0 -0
  702. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_engine_deep.py +0 -0
  703. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_engine_dimension_fix.py +0 -0
  704. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_engine_embeddings.py +0 -0
  705. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_engine_mocked.py +0 -0
  706. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_engine_status.py +0 -0
  707. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_engine_unit.py +0 -0
  708. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_error_model.py +0 -0
  709. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_fhir_bridge.py +0 -0
  710. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_fhir_bridges.py +0 -0
  711. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_fhir_event_sidecar.py +0 -0
  712. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_gds_shims.py +0 -0
  713. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_get_nodes.py +0 -0
  714. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_gql_coverage.py +0 -0
  715. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_gql_edge_cases.py +0 -0
  716. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_gql_resolver_bodies.py +0 -0
  717. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_graph_kernels.py +0 -0
  718. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_graphql_dataloader.py +0 -0
  719. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_index_config.py +0 -0
  720. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_index_handle.py +0 -0
  721. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_index_protocol.py +0 -0
  722. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_ingest_formats.py +0 -0
  723. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_introspection_api.py +0 -0
  724. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_ivf_index.py +0 -0
  725. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_ivgresult.py +0 -0
  726. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_khop_dispatch.py +0 -0
  727. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_lazy_kg.py +0 -0
  728. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_module_coverage.py +0 -0
  729. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_named_graphs.py +0 -0
  730. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_named_paths.py +0 -0
  731. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_nodes_edges_unit.py +0 -0
  732. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_operators_coverage.py +0 -0
  733. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_operators_wiring.py +0 -0
  734. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_parse_cache.py +0 -0
  735. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_plaid_search.py +0 -0
  736. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_ppr_guided_subgraph.py +0 -0
  737. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_predicate_order.py +0 -0
  738. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_prov_export.py +0 -0
  739. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_query_extra_unit.py +0 -0
  740. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_query_fastpath_unit.py +0 -0
  741. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_query_unit.py +0 -0
  742. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_rdf_coverage_boost.py +0 -0
  743. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_rdf_export.py +0 -0
  744. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_reification.py +0 -0
  745. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_retrieve_and_vector_distance.py +0 -0
  746. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_schema_engine_unit.py +0 -0
  747. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_schema_init.py +0 -0
  748. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_schema_procedures.py +0 -0
  749. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_schema_remaining.py +0 -0
  750. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_schema_unit.py +0 -0
  751. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_sdk.py +0 -0
  752. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_sdk_async.py +0 -0
  753. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_sdk_coverage.py +0 -0
  754. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_shacl_validation.py +0 -0
  755. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_shortest_path.py +0 -0
  756. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_snapshot.py +0 -0
  757. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_snapshot_restore_unit.py +0 -0
  758. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_snapshot_unit.py +0 -0
  759. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_sql_splitter.py +0 -0
  760. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_sql_store_unit.py +0 -0
  761. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_sql_table_bridge.py +0 -0
  762. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_store_protocol.py +0 -0
  763. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_structural_guard.py +0 -0
  764. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_structural_guard_e2e.py +0 -0
  765. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_subgraph.py +0 -0
  766. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_subquery_call.py +0 -0
  767. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_supporting_modules.py +0 -0
  768. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_sync_model.py +0 -0
  769. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_temporal_cypher.py +0 -0
  770. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_temporal_edges.py +0 -0
  771. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_temporal_unit.py +0 -0
  772. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_translator_coverage.py +0 -0
  773. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_translator_deep_coverage.py +0 -0
  774. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_translator_extended.py +0 -0
  775. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_translator_gaps.py +0 -0
  776. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_unified_edge_store.py +0 -0
  777. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_utilities_final.py +0 -0
  778. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_utils_coverage.py +0 -0
  779. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_validation.py +0 -0
  780. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_vector_search_routing.py +0 -0
  781. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_vector_unit.py +0 -0
  782. {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_weighted_shortest_path.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: iris-vector-graph
3
- Version: 2.3.0
3
+ Version: 2.3.1
4
4
  Summary: Transactional Graph + Vector retrieval system for InterSystems IRIS with hybrid search, openCypher, and GraphQL APIs
5
5
  Project-URL: Homepage, https://github.com/intersystems-community/iris-vector-graph
6
6
  Project-URL: Documentation, https://github.com/intersystems-community/iris-vector-graph/tree/main/docs
@@ -1,3 +1,27 @@
1
+ /// Graph.KG.EdgeScan — adjacency-global maintenance + scan procedures.
2
+ ///
3
+ /// ============================================================================
4
+ /// ^KG ADJACENCY LAYOUT OF RECORD (canonical — do not deviate)
5
+ /// ============================================================================
6
+ /// The production adjacency layout is SHARD-PREFIXED:
7
+ ///
8
+ /// ^KG("out", 0, s, p, o) = weight outbound edges
9
+ /// ^KG("in", 0, o, p, s) = weight inbound edges
10
+ /// ^KG("deg", s) = out-degree
11
+ /// ^KG("degp", s, p) = per-predicate out-degree
12
+ ///
13
+ /// Every live reader scans this layout: MatchEdges (here), Graph.KG.Algorithms,
14
+ /// Graph.KG.Centrality, Graph.KG.Subgraph, and the NKG builders. WriteAdjacency
15
+ /// (below), TraversalBuild.BuildKG, TemporalIndex.InsertEdge, and the (currently
16
+ /// undeployed) Graph.KG.GraphIndex functional index all WRITE this exact form.
17
+ ///
18
+ /// There is a LEGACY no-shard layout — ^KG("out", s, p, o) — still written by
19
+ /// the bench harness (Graph.KG.BenchSeeder / BenchFormat) and the standalone CSV
20
+ /// Graph.KG.Loader, and read by dead Else-fallback branches in NKGAccelTraversal
21
+ /// / NKGAccelAdjacency. Nothing in the production write/read path uses it.
22
+ /// DO NOT add new readers or writers of the no-shard form. If you need adjacency,
23
+ /// use ^KG("out", 0, ...). See docs/index-maintenance-architecture-review.md.
24
+ /// ============================================================================
1
25
  Class Graph.KG.EdgeScan Extends %RegisteredObject
2
26
  {
3
27
 
@@ -62,8 +62,12 @@ ClassMethod InsertIndex(pID As %String, s As %Binary, p As %Binary, o As %Binary
62
62
  {
63
63
  Set weight = ##class(Graph.KG.GraphIndex).ExtractWeight(qualifiers)
64
64
 
65
- Set ^KG("out", s, p, o) = weight
66
- Set ^KG("in", o, p, s) = weight
65
+ // Shard-0 layout MUST match EdgeScan.WriteAdjacency / TraversalBuild.BuildKG.
66
+ // Every live reader (MatchEdges, Algorithms, Centrality, NKG BFS) scans
67
+ // ^KG("out", 0, ...). Writing the legacy no-shard layout here would populate
68
+ // globals nothing reads. See Graph.KG.EdgeScan:WriteAdjacency for the canonical form.
69
+ Set ^KG("out", 0, s, p, o) = weight
70
+ Set ^KG("in", 0, o, p, s) = weight
67
71
  Set tmp = $Increment(^KG("deg", s))
68
72
  Set tmp = $Increment(^KG("degp", s, p))
69
73
 
@@ -147,8 +151,8 @@ ClassMethod UpdateIndex(pID As %String, s As %Binary, p As %Binary, o As %Binary
147
151
 
148
152
  ClassMethod DeleteIndex(pID As %String, s As %Binary, p As %Binary, o As %Binary, qualifiers As %Binary = "") As %Status [ ServerOnly = 1 ]
149
153
  {
150
- Kill ^KG("out", s, p, o)
151
- Kill ^KG("in", o, p, s)
154
+ Kill ^KG("out", 0, s, p, o)
155
+ Kill ^KG("in", 0, o, p, s)
152
156
  Set tmp = $Increment(^KG("deg", s), -1)
153
157
  Set tmp = $Increment(^KG("degp", s, p), -1)
154
158
  If $Get(^KG("deg", s)) <= 0 Kill ^KG("deg", s)
@@ -1,4 +1,11 @@
1
- /// Fast CSV loader for Graph data
1
+ /// Fast CSV loader for Graph data.
2
+ ///
3
+ /// WARNING — LEGACY NO-SHARD LAYOUT. This loader writes ^KG("out", s, p, o)
4
+ /// (no shard prefix), which is NOT the production layout. Live readers scan
5
+ /// ^KG("out", 0, s, p, o) (see Graph.KG.EdgeScan for the layout of record), so
6
+ /// data loaded here is invisible to BFS / centrality / Cypher. It has no callers
7
+ /// in the engine. Prefer engine.bulk_load_session() / bulk_create_edges(). If you
8
+ /// must use this, run engine.sync() afterward to rebuild the shard-0 globals.
2
9
  Class Graph.KG.Loader Extends %RegisteredObject
3
10
  {
4
11
 
@@ -1,3 +1,10 @@
1
+ /// NKG-accelerated adjacency lookups over the interned ^NKG index.
2
+ ///
3
+ /// NOTE: the ^KG fallback branches read the LEGACY no-shard
4
+ /// ^KG("out", node, ...) layout, NOT the production shard-0 layout
5
+ /// (^KG("out", 0, ...) — see Graph.KG.EdgeScan for the layout of record).
6
+ /// They are dead in production (UseNKG() is true after any sync()). Fix them to
7
+ /// the shard-0 layout before relying on them.
1
8
  Class Graph.KG.NKGAccelAdjacency Extends %RegisteredObject
2
9
  {
3
10
 
@@ -1,3 +1,11 @@
1
+ /// NKG-accelerated traversal (K-hop, BFS) over the interned ^NKG index.
2
+ ///
3
+ /// NOTE: the `If useNKG { ^NKG... } Else { ^KG... }` fallback branches read the
4
+ /// LEGACY no-shard ^KG("out", node, pred, dst) layout, NOT the production
5
+ /// shard-0 layout (^KG("out", 0, ...) — see Graph.KG.EdgeScan for the layout of
6
+ /// record). These Else branches are effectively dead in production: UseNKG()
7
+ /// returns true whenever ^NKG("$meta") exists, which is true after any sync().
8
+ /// If you ever make them reachable, fix them to scan the shard-0 layout first.
1
9
  Class Graph.KG.NKGAccelTraversal Extends %RegisteredObject
2
10
  {
3
11
 
@@ -305,6 +305,99 @@ class AdminMixin:
305
305
  "^NKG_populated": adjacency.nkg_populated} if internals else None,
306
306
  )
307
307
 
308
+ def verify_sync(self, heal: bool = False) -> "SyncReport":
309
+ """Check whether the ^KG/^NKG adjacency indexes agree with the SQL tables.
310
+
311
+ The authoritative graph state lives in ``Graph_KG.rdf_edges``. The ^KG/^NKG
312
+ globals are a derived acceleration index, maintained inline by
313
+ ``create_edge`` / ``bulk_*`` / ``WriteAdjacency`` but NOT by every write
314
+ path. BYPASS paths — ``drop_graph``, ``delete_node``, raw SQL inserts, the
315
+ ``map_sql_table`` bridge, or an interrupted bulk load — mutate the table
316
+ without touching the globals, leaving BFS / centrality / var-length Cypher
317
+ silently stale. This compares the SQL edge count against the ^NKG edge
318
+ count and reports the divergence.
319
+
320
+ Args:
321
+ heal: When True, run ``sync()`` to rebuild the globals if drift is found.
322
+
323
+ Returns:
324
+ SyncReport. ``report.in_sync`` is False when counts diverge OR the
325
+ in-process ``_nkg_dirty`` flag is set. ``bool(report)`` mirrors
326
+ ``in_sync`` for ``if not engine.verify_sync(): engine.sync()`` usage.
327
+ """
328
+ from iris_vector_graph.status import SyncReport
329
+
330
+ sql_edges = 0
331
+ global_edges = 0
332
+ global_nodes = 0
333
+ detail = None
334
+ indeterminate = False
335
+
336
+ cursor = self.conn.cursor()
337
+ try:
338
+ cursor.execute(f"SELECT COUNT(*) FROM {_table('rdf_edges')}")
339
+ row = cursor.fetchone()
340
+ sql_edges = int(row[0]) if row else 0
341
+ except Exception as e:
342
+ indeterminate = True
343
+ detail = f"SQL edge count failed: {str(e)[:120]}"
344
+
345
+ try:
346
+ iris_obj = self._iris_obj()
347
+ global_edges = int(iris_obj.classMethodValue("Graph.KG.Traversal", "NKGEdgeCount"))
348
+ global_nodes = int(iris_obj.classMethodValue("Graph.KG.Traversal", "NKGNodeCount"))
349
+ except Exception as e:
350
+ indeterminate = True
351
+ detail = f"NKG count failed (globals likely unbuilt): {str(e)[:120]}"
352
+
353
+ pending = bool(getattr(self, "_nkg_dirty", False))
354
+
355
+ # Drift oracle. ``_nkg_dirty`` is the authoritative in-process signal: a
356
+ # write path that bypassed adjacency maintenance set it. The count
357
+ # comparison is a SECONDARY heuristic and is deliberately one-directional:
358
+ # we only flag drift when SQL edges *exceed* indexed edges (the
359
+ # unambiguous "rows exist in the table but not in the index" case).
360
+ #
361
+ # We do NOT flag the reverse (globals > SQL), because ^NKG's meta
362
+ # edgeCount is known to over-count: InternNode/InternLabel are
363
+ # append-only (never decremented on delete) and NKG interning ignores
364
+ # graph_id while the SQL UNIQUE is on (s,p,o,graph_id). Treating
365
+ # globals>SQL as drift would produce false positives on any DB that has
366
+ # seen deletes. A full rebuild (sync()) is the only way to reconcile
367
+ # the meta counter, and verify_sync(heal=True) does exactly that.
368
+ sql_exceeds = sql_edges > global_edges
369
+ in_sync = (not sql_exceeds) and (not pending) and (not indeterminate)
370
+
371
+ if not in_sync and detail is None:
372
+ if pending and not sql_exceeds:
373
+ detail = "pending_sync flag set — writes occurred without sync()"
374
+ else:
375
+ detail = (
376
+ f"drift: {sql_edges} SQL edges vs {global_edges} indexed edges. "
377
+ "A write path bypassed adjacency maintenance — call engine.sync()."
378
+ )
379
+
380
+ report = SyncReport(
381
+ in_sync=in_sync,
382
+ sql_edges=sql_edges,
383
+ global_edges=global_edges,
384
+ global_nodes=global_nodes,
385
+ pending_sync=pending,
386
+ healed=False,
387
+ detail=detail,
388
+ )
389
+
390
+ if heal and not in_sync:
391
+ try:
392
+ self.sync()
393
+ report.healed = True
394
+ report.in_sync = True
395
+ report.detail = (detail or "") + " | healed via sync()"
396
+ except Exception as e:
397
+ report.detail = (detail or "") + f" | heal failed: {str(e)[:120]}"
398
+
399
+ return report
400
+
308
401
  def list_active_queries(self, limit: int = 50) -> List[Dict[str, Any]]:
309
402
  """Return active IRIS SQL queries.
310
403
 
@@ -74,6 +74,21 @@ class FhirMixin:
74
74
  def map_sql_table(
75
75
  self, table: str, id_column: str, label: str, property_columns=None
76
76
  ) -> dict:
77
+ """Map an existing SQL table to a graph label as a read-only projection.
78
+
79
+ Cypher queries against ``label`` are translated to JOINs on ``table`` at
80
+ query time — rows are never copied into rdf_edges/nodes.
81
+
82
+ ADJACENCY CONTRACT: because the rows are not materialized into
83
+ ``Graph_KG.rdf_edges``, edges reached through this mapping (or via
84
+ ``map_sql_relationship``) are NOT present in the ^KG/^NKG adjacency
85
+ globals. Property/pattern Cypher sees them; the global-backed algorithms
86
+ do NOT — BFS, centrality, var-length paths, and the NKG-accelerated
87
+ traversals will not traverse projected edges. There is no automatic
88
+ propagation and ``verify_sync()`` cannot see this gap (nothing was
89
+ written to rdf_edges). If you need these edges in graph algorithms,
90
+ materialize them (create_edge / bulk_create_edges) rather than mapping.
91
+ """
77
92
  from iris_vector_graph.security import sanitize_identifier
78
93
 
79
94
  sanitize_identifier(table)
@@ -569,6 +569,11 @@ class NodesEdgesMixin:
569
569
  self.conn.commit()
570
570
  except Exception:
571
571
  pass
572
+ # BYPASS: this deletes SQL rows without touching ^KG/^NKG. Flag the
573
+ # adjacency index as stale so var-length Cypher guards and verify_sync()
574
+ # surface the drift; caller should sync() to repair.
575
+ if deleted:
576
+ self._nkg_dirty = True
572
577
  return deleted
573
578
 
574
579
 
@@ -881,6 +886,9 @@ class NodesEdgesMixin:
881
886
  f"DELETE FROM {_table('nodes')} WHERE node_id = ?", [node_id]
882
887
  )
883
888
  self.conn.commit()
889
+ # BYPASS: edge rows removed from SQL but ^KG/^NKG still hold them.
890
+ # Flag stale so var-length guards / verify_sync() catch the drift.
891
+ self._nkg_dirty = True
884
892
  return True
885
893
  except Exception as e:
886
894
  logger.warning(f"delete_node({node_id}) failed: {e}")
@@ -919,6 +927,9 @@ class NodesEdgesMixin:
919
927
  logger.warning(f"bulk_delete_nodes batch failed: {e}")
920
928
  finally:
921
929
  cursor.close()
930
+ # BYPASS: SQL edge rows removed without ^KG/^NKG maintenance.
931
+ if deleted:
932
+ self._nkg_dirty = True
922
933
  return deleted
923
934
 
924
935
 
@@ -22,6 +22,17 @@ class TemporalMixin:
22
22
  upsert: bool = False,
23
23
  graph: Optional[str] = None,
24
24
  ) -> bool:
25
+ """Create a timestamped edge in the temporal index.
26
+
27
+ ADJACENCY CONTRACT: TemporalIndex.InsertEdge writes the temporal globals
28
+ (^KG "tout"/"tin"/buckets/aggregates) AND a shadow ^KG("out",0,...)
29
+ adjacency entry — so temporal edges ARE visible to the ^KG-based readers
30
+ (MatchEdges, Algorithms, Centrality). They are NOT written to the
31
+ interned ^NKG(-1,...) index, so the NKG-accelerated (arno/Rust) BFS path
32
+ will not see them until a BuildNKG. Call engine.sync() if you need
33
+ temporal edges in NKG-accelerated traversals. Edges are only mirrored
34
+ into the rdf_edges SQL table when ``graph=`` is supplied.
35
+ """
25
36
  if timestamp is not None:
26
37
  TemporalEdgeInput(source=source, predicate=predicate, target=target,
27
38
  timestamp=int(timestamp), weight=weight)
@@ -46,6 +46,40 @@ class IndexInventory:
46
46
  plaid_indexes: List[str] = field(default_factory=list)
47
47
 
48
48
 
49
+ @dataclass
50
+ class SyncReport:
51
+ """Result of engine.verify_sync() — quantitative ^KG/^NKG drift check.
52
+
53
+ Compares the authoritative SQL edge count (Graph_KG.rdf_edges) against the
54
+ adjacency-global edge count (^NKG "$meta" edgeCount). Divergence means a
55
+ write path bypassed global maintenance (drop_graph, delete_node, raw SQL,
56
+ the SQL table bridge, or an interrupted bulk load) and the acceleration
57
+ indexes are stale. ``pending_sync`` reflects the in-process _nkg_dirty flag.
58
+ """
59
+
60
+ in_sync: bool = True
61
+ sql_edges: int = 0
62
+ global_edges: int = 0
63
+ global_nodes: int = 0
64
+ pending_sync: bool = False
65
+ healed: bool = False
66
+ detail: Optional[str] = None
67
+
68
+ def __bool__(self) -> bool:
69
+ return self.in_sync
70
+
71
+ def to_dict(self) -> Dict[str, Any]:
72
+ return {
73
+ "in_sync": self.in_sync,
74
+ "sql_edges": self.sql_edges,
75
+ "global_edges": self.global_edges,
76
+ "global_nodes": self.global_nodes,
77
+ "pending_sync": self.pending_sync,
78
+ "healed": self.healed,
79
+ "detail": self.detail,
80
+ }
81
+
82
+
49
83
  @dataclass
50
84
  class EngineStatus:
51
85
  tables: TableCounts = field(default_factory=TableCounts)
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "iris-vector-graph"
7
- version = "2.3.0"
7
+ version = "2.3.1"
8
8
  description = "Transactional Graph + Vector retrieval system for InterSystems IRIS with hybrid search, openCypher, and GraphQL APIs"
9
9
  readme = "README.md"
10
10
  license = "MIT"
@@ -0,0 +1,150 @@
1
+ """E2E: the ^KG/^NKG-vs-SQL consistency invariant.
2
+
3
+ This is the test the suite was missing. The existing index tests assert that
4
+ sync() *calls* its sub-methods (mock-level plumbing); none assert that after a
5
+ write the globals actually agree with the SQL tables. These tests exercise the
6
+ real invariant on a live container:
7
+
8
+ 1. A normal write (create_edge) keeps globals and SQL in sync.
9
+ 2. A BYPASS write (raw SQL INSERT) drifts — and verify_sync() catches it.
10
+ 3. verify_sync(heal=True) repairs the drift via sync().
11
+
12
+ Requires live IRIS (iris_vector_graph community container).
13
+ """
14
+ from __future__ import annotations
15
+
16
+ import os
17
+ import uuid
18
+
19
+ import pytest
20
+
21
+ SKIP_IRIS_TESTS = os.environ.get("SKIP_IRIS_TESTS", "false").lower() == "true"
22
+
23
+
24
+ @pytest.mark.skipif(SKIP_IRIS_TESTS, reason="SKIP_IRIS_TESTS=true")
25
+ class TestIndexConsistencyInvariant:
26
+
27
+ @pytest.fixture(autouse=True)
28
+ def setup(self, iris_connection):
29
+ from iris_vector_graph.engine import IRISGraphEngine
30
+ self.conn = iris_connection
31
+ self.engine = IRISGraphEngine(iris_connection, embedding_dimension=4)
32
+ self.run = uuid.uuid4().hex[:8]
33
+ self.prefix = f"drift_{self.run}"
34
+ yield
35
+ cur = iris_connection.cursor()
36
+ try:
37
+ cur.execute(f"DELETE FROM Graph_KG.rdf_edges WHERE s LIKE '{self.prefix}%'")
38
+ cur.execute(f"DELETE FROM Graph_KG.rdf_edges WHERE o_id LIKE '{self.prefix}%'")
39
+ cur.execute(f"DELETE FROM Graph_KG.nodes WHERE node_id LIKE '{self.prefix}%'")
40
+ iris_connection.commit()
41
+ except Exception:
42
+ pass
43
+ finally:
44
+ cur.close()
45
+
46
+ def _n(self, i):
47
+ return f"{self.prefix}_n{i}"
48
+
49
+ # NOTE: assertions are delta-based, not absolute. The shared enterprise DB
50
+ # may already carry drift from other suites/benchmarks (we observed
51
+ # NKG edgeCount=110 vs SQL=108 on a live container — the very drift this
52
+ # detector exists to catch). Absolute COUNT equality is therefore unsafe;
53
+ # we measure how the SQL-vs-global gap *changes* across an operation.
54
+
55
+ def _raw_insert(self, n):
56
+ """Insert n genuinely-new edge rows via raw SQL (bypassing create_edge).
57
+
58
+ Uses run-unique subjects so the UNIQUE (s,p,o_id) constraint never
59
+ silently swallows the insert in a shared/polluted DB. Returns rows added.
60
+ """
61
+ # rdf_edges has a FOREIGN KEY to nodes(node_id) — the endpoints must
62
+ # exist first, or the INSERT fails with SQLCODE -121. (This FK is itself
63
+ # the SQL layer's only built-in guard against orphan edges.)
64
+ cur = self.conn.cursor()
65
+ added = 0
66
+ for i in range(n):
67
+ s, o = f"{self.prefix}_raw{i}", f"{self.prefix}_rawtgt{i}"
68
+ for nid in (s, o):
69
+ cur.execute(
70
+ "INSERT INTO Graph_KG.nodes (node_id) SELECT ? "
71
+ "WHERE NOT EXISTS (SELECT 1 FROM Graph_KG.nodes WHERE node_id=?)",
72
+ [nid, nid],
73
+ )
74
+ cur.execute(
75
+ "INSERT INTO Graph_KG.rdf_edges (s, p, o_id) VALUES (?, ?, ?)",
76
+ [s, "BYPASS", o],
77
+ )
78
+ added += cur.rowcount if cur.rowcount is not None else 1
79
+ self.conn.commit()
80
+ cur.close()
81
+ return added
82
+
83
+ def test_normal_write_then_sync_is_in_sync(self):
84
+ """create_edge + sync() leaves the index covering every SQL edge."""
85
+ for i in range(4):
86
+ self.engine.create_node(self._n(i), labels=["Node"])
87
+ for i in range(3):
88
+ self.engine.create_edge(self._n(i), "LINK", self._n(i + 1))
89
+ self.engine.sync()
90
+
91
+ after = self.engine.verify_sync()
92
+ # Self-maintaining writes + sync: globals cover SQL, flag is clear.
93
+ assert after.global_edges >= after.sql_edges
94
+ assert after.pending_sync is False
95
+ assert after.in_sync is True
96
+
97
+ def test_raw_sql_bypass_widens_the_gap(self):
98
+ """A raw SQL INSERT (SQL-bridge / external-ETL pattern) drifts the index."""
99
+ for i in range(4):
100
+ self.engine.create_node(self._n(i), labels=["Node"])
101
+ self.engine.sync()
102
+ before = self.engine.verify_sync()
103
+
104
+ # Bypass create_edge entirely — write the table directly.
105
+ added = self._raw_insert(3)
106
+ assert added == 3, "raw insert must add genuinely-new rows for this test"
107
+
108
+ after = self.engine.verify_sync()
109
+ # SQL grew by 3; globals did not → the gap widened by exactly 3.
110
+ assert (after.sql_edges - after.global_edges) == \
111
+ (before.sql_edges - before.global_edges) + 3
112
+ assert after.in_sync is False
113
+
114
+ def test_heal_repairs_drift(self):
115
+ """verify_sync(heal=True) rebuilds globals so the gap closes to zero."""
116
+ for i in range(4):
117
+ self.engine.create_node(self._n(i), labels=["Node"])
118
+ self.engine.create_edge(self._n(0), "LINK", self._n(1))
119
+ self.engine.sync()
120
+
121
+ # Introduce a known bypass drift, then confirm the detector sees a gap.
122
+ added = self._raw_insert(2)
123
+ assert added == 2
124
+ drifted = self.engine.verify_sync()
125
+ assert drifted.sql_edges > drifted.global_edges
126
+ assert drifted.in_sync is False
127
+
128
+ # heal=True runs a full BuildKG/BuildNKG rebuild from SQL.
129
+ healed = self.engine.verify_sync(heal=True)
130
+ assert healed.healed is True
131
+ # Post-rebuild every SQL edge is indexed (globals no longer trail SQL).
132
+ # We assert globals >= SQL rather than exact equality: ^NKG's meta
133
+ # edgeCount over-counts on a DB that has seen deletes (documented in
134
+ # verify_sync). The contract that matters — no SQL edge missing from the
135
+ # index — holds.
136
+ post = self.engine.verify_sync()
137
+ assert post.global_edges >= post.sql_edges
138
+ assert post.in_sync is True
139
+
140
+ def test_drop_graph_flags_dirty(self):
141
+ """drop_graph is a BYPASS — it must mark the index stale."""
142
+ g = f"urn:graph:{self.prefix}"
143
+ self.engine.create_node(self._n(0), labels=["Node"])
144
+ self.engine.create_node(self._n(1), labels=["Node"])
145
+ self.engine.create_edge(self._n(0), "LINK", self._n(1), graph=g)
146
+ self.engine.sync()
147
+
148
+ self.engine.drop_graph(g)
149
+ # The in-process dirty flag must now be set even before a count check.
150
+ assert self.engine._nkg_dirty is True
@@ -0,0 +1,146 @@
1
+ """Unit tests for the index drift detector (verify_sync / check_drift).
2
+
3
+ The drift detector closes the gap that the binary _nkg_dirty flag misses:
4
+ BYPASS write paths (drop_graph, delete_node, raw SQL, the SQL table bridge)
5
+ never set _nkg_dirty, so var-length Cypher silently runs on a stale ^KG/^NKG.
6
+ verify_sync() compares the SQL row count of rdf_edges against the global edge
7
+ count and reports (or, when heal=True, repairs via sync()) the divergence.
8
+
9
+ These tests are mock-only — they assert the comparison logic and the public
10
+ contract. The live consistency invariant is exercised in the E2E suite.
11
+ """
12
+ from __future__ import annotations
13
+
14
+ from unittest.mock import MagicMock, patch
15
+
16
+ import pytest
17
+
18
+
19
+ def _make_engine(sql_edges=0, nkg_nodes=0, nkg_edges=0):
20
+ from iris_vector_graph.engine import IRISGraphEngine
21
+
22
+ cursor = MagicMock()
23
+ cursor.fetchone.return_value = (sql_edges,)
24
+ conn = MagicMock()
25
+ conn.cursor.return_value = cursor
26
+
27
+ engine = IRISGraphEngine.__new__(IRISGraphEngine)
28
+ engine.conn = conn
29
+ engine._schema_prefix = "Graph_KG"
30
+ engine.embedding_dimension = 4
31
+ engine._nkg_dirty = False
32
+ engine._store = MagicMock()
33
+
34
+ iris_obj = MagicMock()
35
+
36
+ def _classmethodvalue(cls, method, *args):
37
+ if method == "NKGNodeCount":
38
+ return nkg_nodes
39
+ if method == "NKGEdgeCount":
40
+ return nkg_edges
41
+ return 0
42
+
43
+ iris_obj.classMethodValue.side_effect = _classmethodvalue
44
+ engine._iris_obj = MagicMock(return_value=iris_obj)
45
+ return engine, cursor
46
+
47
+
48
+ class TestVerifySyncContract:
49
+
50
+ def test_verify_sync_exists(self):
51
+ engine, _ = _make_engine()
52
+ assert hasattr(engine, "verify_sync")
53
+ assert callable(engine.verify_sync)
54
+
55
+ def test_returns_report_dataclass(self):
56
+ engine, _ = _make_engine(sql_edges=10, nkg_edges=10)
57
+ report = engine.verify_sync()
58
+ assert hasattr(report, "in_sync")
59
+ assert hasattr(report, "sql_edges")
60
+ assert hasattr(report, "global_edges")
61
+
62
+ def test_clean_when_counts_match(self):
63
+ engine, _ = _make_engine(sql_edges=42, nkg_nodes=20, nkg_edges=42)
64
+ report = engine.verify_sync()
65
+ assert report.in_sync is True
66
+ assert bool(report) is True
67
+
68
+ def test_drift_when_sql_exceeds_globals(self):
69
+ # 100 edges in SQL, only 42 in ^NKG → a BYPASS path wrote SQL only.
70
+ engine, _ = _make_engine(sql_edges=100, nkg_nodes=20, nkg_edges=42)
71
+ report = engine.verify_sync()
72
+ assert report.in_sync is False
73
+ assert bool(report) is False
74
+ assert report.sql_edges == 100
75
+ assert report.global_edges == 42
76
+
77
+ def test_globals_exceeding_sql_is_not_flagged_by_counts_alone(self):
78
+ # globals > SQL is NOT treated as count-drift: ^NKG meta edgeCount
79
+ # over-counts (append-only interning, graph_id-agnostic). The dirty flag
80
+ # is the signal for the delete case, not the count comparison. Here the
81
+ # flag is clean, so by counts alone this is considered in sync.
82
+ engine, _ = _make_engine(sql_edges=10, nkg_nodes=20, nkg_edges=42)
83
+ report = engine.verify_sync()
84
+ assert report.in_sync is True
85
+
86
+ def test_delete_drift_caught_via_dirty_flag(self):
87
+ # drop_graph/delete_node set _nkg_dirty — THAT is how the delete-side
88
+ # drift is surfaced (globals>SQL counts are unreliable, see above).
89
+ engine, _ = _make_engine(sql_edges=10, nkg_edges=42)
90
+ engine._nkg_dirty = True
91
+ report = engine.verify_sync()
92
+ assert report.in_sync is False
93
+ assert report.pending_sync is True
94
+
95
+ def test_dirty_flag_forces_drift_even_if_counts_match(self):
96
+ # _nkg_dirty is the in-process "you wrote but didn't sync" signal.
97
+ engine, _ = _make_engine(sql_edges=10, nkg_edges=10)
98
+ engine._nkg_dirty = True
99
+ report = engine.verify_sync()
100
+ assert report.in_sync is False
101
+ assert report.pending_sync is True
102
+
103
+ def test_empty_graph_is_in_sync(self):
104
+ engine, _ = _make_engine(sql_edges=0, nkg_nodes=0, nkg_edges=0)
105
+ report = engine.verify_sync()
106
+ assert report.in_sync is True
107
+
108
+
109
+ class TestVerifySyncHeal:
110
+
111
+ def test_heal_calls_sync_when_drifted(self):
112
+ engine, _ = _make_engine(sql_edges=100, nkg_edges=42)
113
+ with patch.object(engine, "sync", return_value=True) as mock_sync:
114
+ report = engine.verify_sync(heal=True)
115
+ mock_sync.assert_called_once()
116
+ assert report.healed is True
117
+
118
+ def test_heal_skips_sync_when_clean(self):
119
+ engine, _ = _make_engine(sql_edges=10, nkg_edges=10)
120
+ with patch.object(engine, "sync", return_value=True) as mock_sync:
121
+ report = engine.verify_sync(heal=True)
122
+ mock_sync.assert_not_called()
123
+ assert report.healed is False
124
+
125
+ def test_heal_false_by_default_does_not_sync(self):
126
+ engine, _ = _make_engine(sql_edges=100, nkg_edges=42)
127
+ with patch.object(engine, "sync", return_value=True) as mock_sync:
128
+ engine.verify_sync()
129
+ mock_sync.assert_not_called()
130
+
131
+
132
+ class TestVerifySyncResilience:
133
+
134
+ def test_returns_report_on_global_count_error(self):
135
+ engine, _ = _make_engine(sql_edges=10)
136
+ engine._iris_obj.return_value.classMethodValue.side_effect = Exception("NKG missing")
137
+ # Should not raise — report the indeterminate state.
138
+ report = engine.verify_sync()
139
+ assert report is not None
140
+ assert report.in_sync is False
141
+
142
+ def test_to_dict_is_serializable(self):
143
+ import json
144
+ engine, _ = _make_engine(sql_edges=100, nkg_edges=42)
145
+ report = engine.verify_sync()
146
+ json.dumps(report.to_dict())