iris-vector-graph 1.88.0__tar.gz → 1.90.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/PKG-INFO +40 -1
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/README.md +39 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_src/src/Graph/KG/NKGAccel.cls +57 -8
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_src/src/Graph/KG/Traversal.cls +8 -8
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/engine.py +22 -19
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/index_protocol.py +5 -1
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/pyproject.toml +1 -1
- iris_vector_graph-1.90.0/tests/e2e/test_arno_bfs_unified.py +137 -0
- iris_vector_graph-1.90.0/tests/e2e/test_untested_methods.py +364 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/.gitignore +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/LICENSE +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/examples/demo_biomedical.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/examples/demo_fraud_detection.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/examples/demo_fraud_detection_sql.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/examples/demo_utils.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/examples/demo_working_system.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/examples/domains/__init__.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/examples/domains/biomedical/__init__.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/examples/domains/biomedical/loaders.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/examples/domains/biomedical/resolver.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/examples/domains/biomedical/types.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/examples/domains/biomedical_legacy/__init__.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/examples/domains/biomedical_legacy/biomedical_engine.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/examples/domains/biomedical_legacy/biomedical_schema.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/examples/domains/biomedical_legacy/legacy_wrapper.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/examples/domains/fraud/__init__.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/examples/domains/fraud/loaders.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/examples/domains/fraud/resolver.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/examples/domains/fraud/types.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/examples/graphQL.http +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/examples/hybrid_vector_graph_query.cypher +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/examples/rest.http +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_src/src/Graph/KG/Algorithms.cls +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_src/src/Graph/KG/ArnoAccel.cls +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_src/src/Graph/KG/BM25Index.cls +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_src/src/Graph/KG/BenchFormat.cls +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_src/src/Graph/KG/BenchSeeder.cls +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_src/src/Graph/KG/Benchmark.cls +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_src/src/Graph/KG/Edge.cls +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_src/src/Graph/KG/EdgeScan.cls +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_src/src/Graph/KG/GraphIndex.cls +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_src/src/Graph/KG/IVFIndex.cls +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_src/src/Graph/KG/Loader.cls +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_src/src/Graph/KG/MCPService.cls +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_src/src/Graph/KG/MCPToolSet.cls +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_src/src/Graph/KG/MCPTools.cls +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_src/src/Graph/KG/Meta.cls +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_src/src/Graph/KG/PLAIDSearch.cls +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_src/src/Graph/KG/PageRank.cls +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_src/src/Graph/KG/PyOps.cls +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_src/src/Graph/KG/Service.cls +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_src/src/Graph/KG/Snapshot.cls +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_src/src/Graph/KG/Subgraph.cls +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_src/src/Graph/KG/TemporalIndex.cls +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_src/src/Graph/KG/TestEdge.cls +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_src/src/Graph/KG/VecIndex.cls +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_src/src/IVG/CypherEngine.cls +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_src/src/IVG/Percentile.cls +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_src/src/PageRankEmbedded.cls +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_src/src/User.Exec.cls +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_src/src/iris/vector/graph/GraphOperators.cls +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/__init__.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/_validate.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/bolt_server.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/0-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/1-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/10-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/11-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/12-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/13-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/14-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/15-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/16-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/17-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/18-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/19-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/20-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/21-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/22-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/23-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/24-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/25-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/26-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/27-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/28-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/29-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/30-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/31-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/32-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/33-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/34-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/35-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/36-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/37-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/38-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/39-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/40-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/41-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/42-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/43-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/44-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/45-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/46-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/47-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/48-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/49-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/50-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/51-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/52-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/53-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/54-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/55-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/56-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/57-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/58-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/59-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/6-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/60-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/61-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/62-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/63-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/64-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/65-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/66-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/67-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/68-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/69-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/7-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/70-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/71-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/72-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/73-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/74-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/75-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/8-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/9-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/app-b124e26129aa436b26fe.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/filter-a7c44e713bf19d31f6b2849160b1bba8.svg +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Bold.eot +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Bold.ttf +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Bold.woff +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Bold.woff2 +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Light.eot +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Light.ttf +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Light.woff +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Light.woff2 +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Medium.eot +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Medium.ttf +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Medium.woff +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Medium.woff2 +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Regular.eot +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Regular.ttf +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Regular.woff +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Regular.woff2 +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/fonts/OpenSans-Bold.ttf +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/fonts/OpenSans-BoldItalic.ttf +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/fonts/OpenSans-ExtraBold.ttf +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/fonts/OpenSans-ExtraBoldItalic.ttf +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/fonts/OpenSans-Italic.ttf +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/fonts/OpenSans-Light.ttf +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/fonts/OpenSans-LightItalic.ttf +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/fonts/OpenSans-Regular.ttf +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/fonts/OpenSans-Semibold.ttf +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/fonts/OpenSans-SemiboldItalic.ttf +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/fonts/codicon.ttf +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/fonts/filter.svg +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/fonts/fontawesome-webfont.eot +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/fonts/fontawesome-webfont.svg +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/fonts/fontawesome-webfont.ttf +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/fonts/fontawesome-webfont.woff +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/fonts/fontawesome-webfont.woff2 +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/fonts/group-by.svg +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/fonts/neo4j-world.eot +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/fonts/neo4j-world.svg +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/fonts/neo4j-world.ttf +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/fonts/neo4j-world.woff +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/fonts/sort.svg +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/fonts/sort1.svg +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/fonts/sort2.svg +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/fonts/streamline.eot +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/fonts/streamline.svg +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/fonts/streamline.ttf +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/fonts/streamline.woff +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/group-by-89c6aaa756bc3548cc6ab3d2be4d2862.svg +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/images/Favorites.mp4 +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/images/Keystrokes.mp4 +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/images/ProjectFiles.mp4 +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/images/ReusableFrame.mp4 +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/images/SidebarDB_Iinfo.png +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/images/Stream.png +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/images/aura-logo-inverted.svg +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/images/aura-logo.svg +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/images/books.png +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/images/clusters.svg +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/images/community.jpg +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/images/device-icons/android-icon-144x144.png +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/images/device-icons/android-icon-192x192.png +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/images/device-icons/android-icon-36x36.png +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/images/device-icons/android-icon-48x48.png +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/images/device-icons/android-icon-72x72.png +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/images/device-icons/android-icon-96x96.png +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-114x114.png +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-120x120.png +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-144x144.png +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-152x152.png +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-180x180.png +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-57x57.png +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-60x60.png +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-72x72.png +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-76x76.png +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-precomposed.png +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon.png +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/images/device-icons/browserconfig.xml +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/images/device-icons/favicon-16x16.png +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/images/device-icons/favicon-32x32.png +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/images/device-icons/favicon-96x96.png +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/images/device-icons/favicon.ico +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/images/device-icons/manifest.json +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/images/device-icons/ms-icon-144x144.png +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/images/device-icons/ms-icon-150x150.png +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/images/device-icons/ms-icon-310x310.png +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/images/device-icons/ms-icon-70x70.png +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/images/device-icons/neo4j-browser-canary.svg +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/images/device-icons/neo4j-browser.svg +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/images/labeled_node.png +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/images/more_nodes.png +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/images/neo4j-favicon.ico +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/images/neo4j-logo-inverted.svg +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/images/neo4j-logo.svg +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/images/northwind/customer-orders.png +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/images/northwind/order-graph.png +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/images/northwind/product-category-supplier.png +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/images/northwind/product-graph.png +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/images/one_node.png +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/images/query-plan-operator-cost.svg +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/images/query-plan-operator-details.svg +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/images/query-plan-operator-rows.svg +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/images/query-plan.svg +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/images/rel-props.png +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/images/relationships.png +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/images/screen_code_frame.png +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/images/screen_cypher_warn.png +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/images/screen_editor.png +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/images/screen_sidebar.png +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/images/screen_stream.png +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/sort-8d6f482c21de572ceeb5ac93623e6c97.svg +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/sort1-d2dc515571213fc0ca99b0341b88e413.svg +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/assets/sort2-31050964e7eb2042325f7bcbba3d58ad.svg +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/bolt-worker-dfa551eb0861cc080843.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/cypher-editor-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/editor-455af92e7e1dc39fdbc8060f6680ab32.worker.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/index.html +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/manifest.json +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/preview/assets/CoseBilkentLayout.worker-FEt6e_rV.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/preview/assets/HierarchicalLayout.worker-O6WHYssL.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/preview/assets/asciidoc.8O6YIVRy.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/preview/assets/auto-track.BlKugDvg.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/preview/assets/bash.CLAyaf9k.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/preview/assets/c.l4fEI10z.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/preview/assets/connect-icon-Br2hQy_e.svg +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/preview/assets/csharp.ChqrQYCS.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/preview/assets/css-extras.Bi-4v17d.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/preview/assets/css.B1LHiudN.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/preview/assets/cypher-editor-auto-completions.gif +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/preview/assets/cypher-editor-inline-help.png +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/preview/assets/cypher-editor-linting.png +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/preview/assets/cypher-editor-syntax-highlighting.png +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/preview/assets/cypher-reference.gif +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/preview/assets/cypher.C3qdyJ5B.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/preview/assets/docker.CF7EZT1T.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/preview/assets/fira-code-400-regular-normal-BzypJxJk.woff2 +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/preview/assets/fira-code-500-medium-normal-CRWzqcWa.woff2 +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/preview/assets/fira-code-700-bold-normal-hUmNV4O0.woff2 +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/preview/assets/go.FsJyBHVG.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/preview/assets/graphql.BlTzkzAJ.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/preview/assets/history-quick-search.gif +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/preview/assets/index-CY0cZcsW.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/preview/assets/index-H7L207gH.css +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/preview/assets/index.BpRu7Js3.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/preview/assets/index.C74acnU7.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/preview/assets/index.CHatcJcU.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/preview/assets/index.D6ZMQedT.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/preview/assets/index.DPZla5MT.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/preview/assets/index.dzIUqrzq.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/preview/assets/index.leyiHvaQ.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/preview/assets/index.qJ6VE118.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/preview/assets/index.umd.B9yhfa5Y.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/preview/assets/is-plan-event-enabled.DeNtQvA5.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/preview/assets/java.BBXwBh9f.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/preview/assets/java.CQ1iJ0-D.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/preview/assets/javadoc.UnquSOIj.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/preview/assets/javascript.CYTqTa0W.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/preview/assets/json.BIkJg-Cj.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/preview/assets/jsx.Cy_hP1z6.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/preview/assets/kotlin.D_6l0VkM.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/preview/assets/lintWorker-QNEp56W3.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/preview/assets/logo-aura-white-DCfUnkCN.svg +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/preview/assets/movie-model.png +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/preview/assets/movies-active-B2SzHIc1.svg +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/preview/assets/neo4j-logo-active-CieUxroh.svg +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/preview/assets/patterned-banner-background-C_nO-Yn8.svg +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/preview/assets/php.BKb6XVba.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/preview/assets/plan-graph-worker-s17nF19Q.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/preview/assets/public-sans-300-light-normal-CG9e8kLa.woff2 +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/preview/assets/public-sans-400-regular-italic-D9FlViiB.woff2 +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/preview/assets/public-sans-400-regular-normal-D4F9yfFi.woff2 +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/preview/assets/public-sans-500-medium-normal-ChZcBEnJ.woff2 +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/preview/assets/public-sans-600-semi-bold-normal-Ck6TyfRI.woff2 +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/preview/assets/public-sans-700-bold-normal-CGjRhW-d.woff2 +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/preview/assets/python.tCcUC3U7.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/preview/assets/query-fundamentals-active-jvTJU1K2.svg +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/preview/assets/query.snake-frame.DmvXOQIM.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/preview/assets/regex.C_VuIVtC.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/preview/assets/rust.CtSATZMt.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/preview/assets/saved-cypher.gif +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/preview/assets/scalable-graph-visualization.gif +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/preview/assets/sql.CfOAbw6n.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/preview/assets/syne-neo-500-medium-normal-A5GXmYUf.woff2 +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/preview/assets/table-visualization.gif +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/preview/assets/typescript.3Tbm37mD.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/preview/assets/xml-doc.h79Tu9Aw.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/preview/assets/yaml.B-Jvd59g.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/preview/favicons/android-chrome-192x192.png +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/preview/favicons/apple-touch-icon.png +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/preview/favicons/favicon-16x16.png +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/preview/favicons/favicon-194x194.png +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/preview/favicons/favicon-32x32.png +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/preview/favicons/favicon.ico +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/preview/favicons/safari-pinned-tab.svg +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/preview/index.html +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/preview/manifest.json +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/ui-libs-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/browser_static/vendor-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/bulk_loader.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/capabilities.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/cypher/__init__.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/cypher/algorithms/__init__.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/cypher/algorithms/paths.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/cypher/ast.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/cypher/lexer.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/cypher/parser.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/cypher/translator.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/cypher_api.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/dbapi_utils.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/embedded.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/fusion.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/gql/__init__.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/gql/constants.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/gql/engine.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/gql/pooling.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/gql/resolvers.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/gql/schema.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/models.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/operators.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/py.typed +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/result.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/schema.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/security.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/status.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/text_search.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/utils.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/iris_vector_graph/vector_utils.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/sql/fhir_bridges.sql +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/sql/fraud_sample_data.sql +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/sql/globals_schema.sql +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/sql/graph_path_globals.sql +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/sql/graph_walk_tvf.sql +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/sql/migrations/000_base_schema_iris.sql +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/sql/migrations/001_add_nodepk_table.sql +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/sql/migrations/001_rollback_nodepk.sql +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/sql/migrations/002_add_fk_constraints.sql +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/sql/operators.sql +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/sql/operators_fixed.sql +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/sql/procedures/kg_PageRank.sql +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/sql/rdf_reifications.sql +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/sql/schema.sql +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/TESTING.md +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/benchmark_parser.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/benchmarks/README.md +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/benchmarks/bench.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/benchmarks/bench_utils.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/benchmarks/benchmark_neo4j.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/benchmarks/bfs_benchmark.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/benchmarks/establish_baseline.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/benchmarks/graph_gen.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/benchmarks/ic2_profile.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/benchmarks/iris_baseline_run.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/benchmarks/iris_os_run.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/benchmarks/ldbc_full_loader.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/benchmarks/load_neo4j.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/benchmarks/synthetic_baseline.csv +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/conftest.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/contract/__init__.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/contract/test_cypher_api.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/contract/test_cypher_api_errors.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/contract/test_graphql_queries.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/contract/test_graphql_schema.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/contract/test_ppr_api.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/curl_suite.sh +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/e2e/__init__.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/e2e/conftest.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/e2e/test_approx_count_distinct.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/e2e/test_arno_bfs_global.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/e2e/test_biomedical_demo.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/e2e/test_biomedical_ui.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/e2e/test_cypher_coerce_e2e.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/e2e/test_cypher_sprints_e2e.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/e2e/test_cypher_vector_search.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/e2e/test_cypher_vl_path_bfs.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/e2e/test_execution_contexts.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/e2e/test_execution_contexts_new.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/e2e/test_fhir_bridges_e2e.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/e2e/test_fraud_demo.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/e2e/test_fraud_ui.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/e2e/test_gql_autogen_startup.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/e2e/test_gql_cypher_passthrough.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/e2e/test_gql_node_queries.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/e2e/test_gql_semantic_search.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/e2e/test_gql_traversal.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/e2e/test_graph_kernels_e2e.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/e2e/test_hla_kg_e2e.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/e2e/test_ic13_shortest_path.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/e2e/test_ic3_exact_count.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/e2e/test_index_protocol.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/e2e/test_introspection_api.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/e2e/test_ivf_insert.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/e2e/test_large_output_chunked.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/e2e/test_lazy_node_resolution.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/e2e/test_multi_query_engine_platform.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/e2e/test_named_paths_e2e.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/e2e/test_nkg_index_e2e.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/e2e/test_operator_wiring_e2e.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/e2e/test_pattern_comprehension_reduce.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/e2e/test_plaid.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/e2e/test_plaid_search_e2e.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/e2e/test_ppr_cls_fast_path.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/e2e/test_ppr_guided_e2e.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/e2e/test_procedure_installation.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/e2e/test_reification_e2e.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/e2e/test_schema_procedures_e2e.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/e2e/test_streaming_bfs.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/e2e/test_stress_api.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/e2e/test_stress_ingest.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/e2e/test_stress_multi_context.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/e2e/test_stress_search.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/e2e/test_stress_setup.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/e2e/test_stress_traversal.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/e2e/test_subgraph_e2e.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/e2e/test_subquery_call_e2e.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/e2e/test_vecindex_e2e.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/integration/__init__.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/integration/conftest.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/integration/gql/__init__.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/integration/gql/test_graphql_mutations.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/integration/gql/test_graphql_nested_queries.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/integration/gql/test_graphql_queries.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/integration/gql/test_graphql_vector_search.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/integration/test_bidirectional_ppr.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/integration/test_cls_layer.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/integration/test_cypher_advanced.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/integration/test_cypher_enhancements.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/integration/test_cypher_multi_type.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/integration/test_cypher_rd.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/integration/test_cypher_rel_vars.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/integration/test_cypher_single_type.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/integration/test_cypher_untyped.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/integration/test_cypher_vector_search.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/integration/test_embeddings_api.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/integration/test_fastapi_graphql.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/integration/test_fhir_bridges_integration.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/integration/test_named_paths_integration.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/integration/test_nodepk_advanced_benchmarks.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/integration/test_nodepk_constraints.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/integration/test_nodepk_graph_analytics.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/integration/test_nodepk_migration.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/integration/test_nodepk_performance.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/integration/test_nodepk_production_scale.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/integration/test_objectscript_classes.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/integration/test_pagerank_sql_optimization.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/integration/test_reification_integration.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/integration/test_schema_migration.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/integration/test_stored_procedure_install.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/integration/test_subquery_call_integration.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/performance/conftest.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/performance/scale_benchmark.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/performance/test_ppr_stress.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/performance/test_stress_v1_5.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/python/run_all_tests.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/python/test_iris_rest_api.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/python/test_networkx_loader.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/python/test_performance_benchmarks.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/python/test_pyops_vector_conversion.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/python/test_python_operators.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/python/test_python_sdk.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/python/test_schema_validation.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/python/test_sql_queries.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/python/test_vector_functions.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/unit/cypher/__init__.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/unit/cypher/test_lexer.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/unit/cypher/test_lexer_advanced.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/unit/cypher/test_parser.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/unit/cypher/test_parser_advanced.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/unit/test_batch_mutations.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/unit/test_bfs_arno.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/unit/test_bm25_index.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/unit/test_bolt_server.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/unit/test_cls_deployment.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/unit/test_cypher_benchmark.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/unit/test_cypher_benchmark_scale.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/unit/test_cypher_case_when.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/unit/test_cypher_e2e_new_features.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/unit/test_cypher_functions.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/unit/test_cypher_parser.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/unit/test_cypher_posos_bugs.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/unit/test_cypher_procedures.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/unit/test_cypher_translator.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/unit/test_cypher_union_exists.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/unit/test_cypher_var_length.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/unit/test_cypher_vector_search.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/unit/test_edge_embeddings.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/unit/test_edgeprop_ndjson.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/unit/test_embed_nodes_params.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/unit/test_embedded.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/unit/test_engine_dimension_fix.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/unit/test_engine_embeddings.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/unit/test_engine_status.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/unit/test_fhir_bridges.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/unit/test_get_nodes.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/unit/test_graph_kernels.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/unit/test_graphql_dataloader.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/unit/test_index_handle.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/unit/test_index_protocol.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/unit/test_ingest_formats.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/unit/test_introspection_api.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/unit/test_ivf_index.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/unit/test_ivgresult.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/unit/test_named_graphs.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/unit/test_named_paths.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/unit/test_operators_wiring.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/unit/test_plaid_search.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/unit/test_ppr_guided_subgraph.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/unit/test_reification.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/unit/test_schema_init.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/unit/test_schema_procedures.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/unit/test_shortest_path.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/unit/test_snapshot.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/unit/test_sql_splitter.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/unit/test_sql_table_bridge.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/unit/test_subgraph.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/unit/test_subquery_call.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/unit/test_temporal_cypher.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/unit/test_temporal_edges.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/unit/test_unified_edge_store.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/unit/test_validation.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/tests/unit/test_vector_search_routing.py +0 -0
- {iris_vector_graph-1.88.0 → iris_vector_graph-1.90.0}/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: 1.
|
|
3
|
+
Version: 1.90.0
|
|
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
|
|
@@ -753,6 +753,45 @@ anchors = engine.get_kg_anchors(icd_codes=["J18.0", "E11.9"])
|
|
|
753
753
|
|
|
754
754
|
## Changelog
|
|
755
755
|
|
|
756
|
+
### v1.88.0 (2026-05-07)
|
|
757
|
+
- **feat**: `ffi_kg_build_2hop_exact_int` Rust function — integer-indexed single-pass 2-hop dedup from `^KG("out")`. Writes results to `^ArnoKG("2h")` temp global; `DecodeBuildResults()` ObjectScript method converts to `^KG("deg2p_exact")`
|
|
758
|
+
- **feat**: `KHop2CountExact(src, pred)` ObjectScript method — O(1) `$Get(^KG("deg2p_exact"))`, fallback to `KHop2Count` when not populated. 0.14ms p50 on SF10 (was 70ms)
|
|
759
|
+
- **feat**: `Build2HopExactStats()` — Rust-first (tries `kg_build_2hop_exact_int`), ObjectScript fallback. Called automatically by `BuildNKG` and `engine.rebuild_nkg()`
|
|
760
|
+
- **feat**: `engine.khop2_count_exact(node_id, pred)` — public method with `KHop2Input` validation
|
|
761
|
+
- **feat**: `engine.backfill_deg2p_exact()` — populate `^KG("deg2p_exact")` for graphs loaded via `BulkIngestEdges`
|
|
762
|
+
- **feat**: `execute_cypher` `[:P*2] RETURN count(n)` fast path now routes to `KHop2CountExact` (exact, not upper bound)
|
|
763
|
+
- **test**: `tests/e2e/test_ic3_exact_count.py` — correctness + perf validation for 2-hop exact COUNT
|
|
764
|
+
- **test**: `tests/e2e/test_untested_methods.py` — 113/113 public engine methods now have at least one test (100% coverage)
|
|
765
|
+
|
|
766
|
+
### v1.87.0 (2026-05-07)
|
|
767
|
+
- **feat**: `iris_vector_graph/_validate.py` — 10 Pydantic `BaseModel` input schemas for high-risk engine methods: `NodeIdInput`, `EdgeInput`, `CypherInput`, `IVFBuildInput`, `VectorSearchInput`, `BM25BuildInput`, `BM25SearchInput`, `KHop2Input`, `TemporalEdgeInput`, `VecSearchInput`
|
|
768
|
+
- **feat**: Input validation at call entry on `execute_cypher`, `create_node`, `create_edge`, `ivf_build`, `ivf_search`, `bm25_build`, `bm25_search`, `khop2_count_fast`, `create_edge_temporal`, `search_nodes_by_vector`
|
|
769
|
+
- All 10 schemas exported from `iris_vector_graph.__init__`; 44/44 unit tests in `test_validation.py`
|
|
770
|
+
- **chore**: `BulkIngestEdges` marked `[ Internal ]` in `EdgeScan.cls` — safe path is `engine.bulk_ingest_edges()`
|
|
771
|
+
|
|
772
|
+
### v1.86.0 (2026-05-07)
|
|
773
|
+
- **feat**: `IVGResult` Pydantic `BaseModel` replaces `Dict[str, Any]` as return type of `execute_cypher`
|
|
774
|
+
- Backward-compatible: `result["columns"]`, `result.get("error")`, `"error" in result` all work
|
|
775
|
+
- `bool(result)` = `True` on success, `False` on error
|
|
776
|
+
- `result.columns`, `result.rows`, `result.error`, `result.metadata`, `result.sql` via dot notation
|
|
777
|
+
- 23 unit tests in `test_ivgresult.py`; all 189+ existing call sites pass unchanged
|
|
778
|
+
- **feat**: Fourth Pydantic increment — `IVGResult` joins `SQLQuery`, `QueryMetadata`, `IndexHandle`
|
|
779
|
+
|
|
780
|
+
### v1.85.0 (2026-05-06)
|
|
781
|
+
- **fix**: Unbounded variable-length path queries (no LIMIT) now always route to `_bfs_stream_pages` (cursor-based `ReadBFSPage`) instead of `ReadBFSResults` (single JSON string that hits `<MAXSTRING>` at 93K+ results). Bounded queries (LIMIT present) keep `ReadBFSResults` fast path.
|
|
782
|
+
- **fix**: `test_sc003_results_match_bfs` — replaced raw `NKGAccel.BFSJson` call (bypassed engine, `^NKG` stale) with engine determinism check; `knows_data` fixture calls `engine.rebuild_nkg()` for sync guarantee
|
|
783
|
+
- **test**: `tests/e2e/test_streaming_bfs.py` — 3 e2e + 2 routing unit tests for streaming BFS
|
|
784
|
+
|
|
785
|
+
### v1.84.0 (2026-05-06)
|
|
786
|
+
- **feat**: `engine.index(name)` → `IndexHandle` (Pydantic `BaseModel`) — unified entry point for all index types (`ivf`, `bm25`, `vec`, `plaid`) via `.search()`, `.insert()`, `.info()`, `.drop()`
|
|
787
|
+
- **feat**: `IVGIndex` `@runtime_checkable` Protocol — structural subtyping, no inheritance required
|
|
788
|
+
- **feat**: `_build_index_registry()` — auto-populates `{name: type}` from `^IVF`, `^VecIdx`, `^BM25Idx`, `^PLAID` on `IRISGraphEngine.__init__`; updated by `*_build` methods
|
|
789
|
+
- **feat**: `PLAIDSearch.Build` public ClassMethod — calls `StoreCentroids`+`StoreDocTokensBatch`+`BuildInvertedIndex` internally; helpers marked `[ Private ]`
|
|
790
|
+
- **feat**: `plaid_build()` now calls `PLAIDSearch.Build` (single round-trip); `plaid_info()` returns `{"type":"plaid","indexed":N,"nlist":L,"dim":D}`
|
|
791
|
+
- **feat**: All `*_info()` methods return `"type"` key — `ivf_info()`, `bm25_info()`, `vec_info()`, `plaid_info()`
|
|
792
|
+
- **feat**: `IVGIndex` and `IndexHandle` exported from `iris_vector_graph.__init__`
|
|
793
|
+
- **test**: Full PLAID e2e coverage (5/5); `engine.index()` dispatch tests (5 pass, 1 skip)
|
|
794
|
+
|
|
756
795
|
### v1.83.0 (2026-05-06)
|
|
757
796
|
- **feat**: `KHop2Count` + `KHop2NeighborIds(maxResults)` on `Graph.KG.Traversal` — pure ObjectScript 2-hop traversal with process-private dedup, no JSON serialization
|
|
758
797
|
- **feat**: `execute_cypher` routes `[:PRED*2]` COUNT and LIMIT patterns to fast paths — IC3 LIMIT 1000 now **1.2ms p50** (was 14-22ms; 3.5x faster than GES 4.19ms)
|
|
@@ -681,6 +681,45 @@ anchors = engine.get_kg_anchors(icd_codes=["J18.0", "E11.9"])
|
|
|
681
681
|
|
|
682
682
|
## Changelog
|
|
683
683
|
|
|
684
|
+
### v1.88.0 (2026-05-07)
|
|
685
|
+
- **feat**: `ffi_kg_build_2hop_exact_int` Rust function — integer-indexed single-pass 2-hop dedup from `^KG("out")`. Writes results to `^ArnoKG("2h")` temp global; `DecodeBuildResults()` ObjectScript method converts to `^KG("deg2p_exact")`
|
|
686
|
+
- **feat**: `KHop2CountExact(src, pred)` ObjectScript method — O(1) `$Get(^KG("deg2p_exact"))`, fallback to `KHop2Count` when not populated. 0.14ms p50 on SF10 (was 70ms)
|
|
687
|
+
- **feat**: `Build2HopExactStats()` — Rust-first (tries `kg_build_2hop_exact_int`), ObjectScript fallback. Called automatically by `BuildNKG` and `engine.rebuild_nkg()`
|
|
688
|
+
- **feat**: `engine.khop2_count_exact(node_id, pred)` — public method with `KHop2Input` validation
|
|
689
|
+
- **feat**: `engine.backfill_deg2p_exact()` — populate `^KG("deg2p_exact")` for graphs loaded via `BulkIngestEdges`
|
|
690
|
+
- **feat**: `execute_cypher` `[:P*2] RETURN count(n)` fast path now routes to `KHop2CountExact` (exact, not upper bound)
|
|
691
|
+
- **test**: `tests/e2e/test_ic3_exact_count.py` — correctness + perf validation for 2-hop exact COUNT
|
|
692
|
+
- **test**: `tests/e2e/test_untested_methods.py` — 113/113 public engine methods now have at least one test (100% coverage)
|
|
693
|
+
|
|
694
|
+
### v1.87.0 (2026-05-07)
|
|
695
|
+
- **feat**: `iris_vector_graph/_validate.py` — 10 Pydantic `BaseModel` input schemas for high-risk engine methods: `NodeIdInput`, `EdgeInput`, `CypherInput`, `IVFBuildInput`, `VectorSearchInput`, `BM25BuildInput`, `BM25SearchInput`, `KHop2Input`, `TemporalEdgeInput`, `VecSearchInput`
|
|
696
|
+
- **feat**: Input validation at call entry on `execute_cypher`, `create_node`, `create_edge`, `ivf_build`, `ivf_search`, `bm25_build`, `bm25_search`, `khop2_count_fast`, `create_edge_temporal`, `search_nodes_by_vector`
|
|
697
|
+
- All 10 schemas exported from `iris_vector_graph.__init__`; 44/44 unit tests in `test_validation.py`
|
|
698
|
+
- **chore**: `BulkIngestEdges` marked `[ Internal ]` in `EdgeScan.cls` — safe path is `engine.bulk_ingest_edges()`
|
|
699
|
+
|
|
700
|
+
### v1.86.0 (2026-05-07)
|
|
701
|
+
- **feat**: `IVGResult` Pydantic `BaseModel` replaces `Dict[str, Any]` as return type of `execute_cypher`
|
|
702
|
+
- Backward-compatible: `result["columns"]`, `result.get("error")`, `"error" in result` all work
|
|
703
|
+
- `bool(result)` = `True` on success, `False` on error
|
|
704
|
+
- `result.columns`, `result.rows`, `result.error`, `result.metadata`, `result.sql` via dot notation
|
|
705
|
+
- 23 unit tests in `test_ivgresult.py`; all 189+ existing call sites pass unchanged
|
|
706
|
+
- **feat**: Fourth Pydantic increment — `IVGResult` joins `SQLQuery`, `QueryMetadata`, `IndexHandle`
|
|
707
|
+
|
|
708
|
+
### v1.85.0 (2026-05-06)
|
|
709
|
+
- **fix**: Unbounded variable-length path queries (no LIMIT) now always route to `_bfs_stream_pages` (cursor-based `ReadBFSPage`) instead of `ReadBFSResults` (single JSON string that hits `<MAXSTRING>` at 93K+ results). Bounded queries (LIMIT present) keep `ReadBFSResults` fast path.
|
|
710
|
+
- **fix**: `test_sc003_results_match_bfs` — replaced raw `NKGAccel.BFSJson` call (bypassed engine, `^NKG` stale) with engine determinism check; `knows_data` fixture calls `engine.rebuild_nkg()` for sync guarantee
|
|
711
|
+
- **test**: `tests/e2e/test_streaming_bfs.py` — 3 e2e + 2 routing unit tests for streaming BFS
|
|
712
|
+
|
|
713
|
+
### v1.84.0 (2026-05-06)
|
|
714
|
+
- **feat**: `engine.index(name)` → `IndexHandle` (Pydantic `BaseModel`) — unified entry point for all index types (`ivf`, `bm25`, `vec`, `plaid`) via `.search()`, `.insert()`, `.info()`, `.drop()`
|
|
715
|
+
- **feat**: `IVGIndex` `@runtime_checkable` Protocol — structural subtyping, no inheritance required
|
|
716
|
+
- **feat**: `_build_index_registry()` — auto-populates `{name: type}` from `^IVF`, `^VecIdx`, `^BM25Idx`, `^PLAID` on `IRISGraphEngine.__init__`; updated by `*_build` methods
|
|
717
|
+
- **feat**: `PLAIDSearch.Build` public ClassMethod — calls `StoreCentroids`+`StoreDocTokensBatch`+`BuildInvertedIndex` internally; helpers marked `[ Private ]`
|
|
718
|
+
- **feat**: `plaid_build()` now calls `PLAIDSearch.Build` (single round-trip); `plaid_info()` returns `{"type":"plaid","indexed":N,"nlist":L,"dim":D}`
|
|
719
|
+
- **feat**: All `*_info()` methods return `"type"` key — `ivf_info()`, `bm25_info()`, `vec_info()`, `plaid_info()`
|
|
720
|
+
- **feat**: `IVGIndex` and `IndexHandle` exported from `iris_vector_graph.__init__`
|
|
721
|
+
- **test**: Full PLAID e2e coverage (5/5); `engine.index()` dispatch tests (5 pass, 1 skip)
|
|
722
|
+
|
|
684
723
|
### v1.83.0 (2026-05-06)
|
|
685
724
|
- **feat**: `KHop2Count` + `KHop2NeighborIds(maxResults)` on `Graph.KG.Traversal` — pure ObjectScript 2-hop traversal with process-private dedup, no JSON serialization
|
|
686
725
|
- **feat**: `execute_cypher` routes `[:PRED*2]` COUNT and LIMIT patterns to fast paths — IC3 LIMIT 1000 now **1.2ms p50** (was 14-22ms; 3.5x faster than GES 4.19ms)
|
|
@@ -559,7 +559,7 @@ ClassMethod BFSJson(seed As %String, predicatesJson As %String = "[]", maxHops A
|
|
|
559
559
|
If '$Data(^||NKGAccel("compute_fn")) {
|
|
560
560
|
Set dllid = $ZF(-4, 1, dllPath)
|
|
561
561
|
If dllid = 0 {
|
|
562
|
-
Return ##class(Graph.KG.Traversal).
|
|
562
|
+
Return ##class(Graph.KG.Traversal).BFSFastJsonSorted(seed, predicatesJson, maxHops, "", "out", maxResults)
|
|
563
563
|
}
|
|
564
564
|
Set ^||NKGAccel("dllid") = dllid
|
|
565
565
|
Set ^||NKGAccel("compute_fn") = $ZF(-4, 3, dllid, "kg_bfs_compute")
|
|
@@ -569,11 +569,11 @@ ClassMethod BFSJson(seed As %String, predicatesJson As %String = "[]", maxHops A
|
|
|
569
569
|
Set dllid = ^||NKGAccel("dllid")
|
|
570
570
|
Set computeFn = ^||NKGAccel("compute_fn")
|
|
571
571
|
If computeFn = 0 {
|
|
572
|
-
Return ##class(Graph.KG.Traversal).
|
|
572
|
+
Return ##class(Graph.KG.Traversal).BFSFastJsonSorted(seed, predicatesJson, maxHops, "", "out", maxResults)
|
|
573
573
|
}
|
|
574
574
|
Do ..CacheNKGAdj()
|
|
575
575
|
If '$Data(^ArnoKG("KG", "nkg_adj")) {
|
|
576
|
-
Return ##class(Graph.KG.Traversal).
|
|
576
|
+
Return ##class(Graph.KG.Traversal).BFSFastJsonSorted(seed, predicatesJson, maxHops, "", "out", maxResults)
|
|
577
577
|
}
|
|
578
578
|
Kill ^ArnoKG("bfs_result")
|
|
579
579
|
Set raw = $ZF(-5, dllid, computeFn, "^ArnoKG", "^ArnoKG", seed, predicatesJson, maxHops, maxResults)
|
|
@@ -583,15 +583,27 @@ ClassMethod BFSJson(seed As %String, predicatesJson As %String = "[]", maxHops A
|
|
|
583
583
|
Set n = +$Piece(raw, ":", 3)
|
|
584
584
|
Set readFn = ^||NKGAccel("read_fn")
|
|
585
585
|
If readFn = 0 {
|
|
586
|
-
Return ##class(Graph.KG.Traversal).
|
|
586
|
+
Return ##class(Graph.KG.Traversal).BFSFastJsonSorted(seed, predicatesJson, maxHops, "", "out", maxResults)
|
|
587
587
|
}
|
|
588
|
-
Set
|
|
588
|
+
Set assembled = ""
|
|
589
589
|
For i = 1:1:n {
|
|
590
|
-
Set
|
|
591
|
-
Set result = result _ chunk
|
|
590
|
+
Set assembled = assembled _ $ZF(-5, dllid, readFn, "^ArnoKG", i)
|
|
592
591
|
}
|
|
593
592
|
Kill ^ArnoKG("bfs_result")
|
|
594
|
-
|
|
593
|
+
Set tag = $Job _ "_bfs"
|
|
594
|
+
Kill ^ArnoKG("bfs_r", tag)
|
|
595
|
+
Set arr = ##class(%DynamicArray).%FromJSON(assembled)
|
|
596
|
+
Set sz = arr.%Size()
|
|
597
|
+
For i = 0:1:(sz-1) {
|
|
598
|
+
Set item = arr.%Get(i)
|
|
599
|
+
Set step = +item.%Get("step")
|
|
600
|
+
Set o = item.%Get("o")
|
|
601
|
+
Set s = item.%Get("s")
|
|
602
|
+
Set p = item.%Get("p")
|
|
603
|
+
Set w = +item.%Get("w")
|
|
604
|
+
Set ^ArnoKG("bfs_r", tag, step, o) = $ListBuild(s, p, w)
|
|
605
|
+
}
|
|
606
|
+
Return "SORTED:" _ tag
|
|
595
607
|
}
|
|
596
608
|
|
|
597
609
|
ClassMethod InvalidateAdjCache()
|
|
@@ -1035,4 +1047,41 @@ ClassMethod CountDistinctKHop(srcId As %String, predsJson As %String = "", maxHo
|
|
|
1035
1047
|
Return "{""estimate"":"_estimate_",""registers"":256,""std_error"":0.065}"
|
|
1036
1048
|
}
|
|
1037
1049
|
|
|
1050
|
+
ClassMethod Build2HopExact() As %Boolean
|
|
1051
|
+
{
|
|
1052
|
+
If '..IsLoaded() {
|
|
1053
|
+
Do ..Load("/tmp/libarno_callout.so")
|
|
1054
|
+
If '..IsLoaded() {
|
|
1055
|
+
If ##class(Graph.KG.ArnoAccel).IsAvailable() {
|
|
1056
|
+
Set ^||NKGAccel("dllid") = $Get(^||ArnoAccel("dllid"), 0)
|
|
1057
|
+
}
|
|
1058
|
+
}
|
|
1059
|
+
}
|
|
1060
|
+
If '..IsLoaded() Return 0
|
|
1061
|
+
Set dllid = $Get(^||NKGAccel("dllid"), 0)
|
|
1062
|
+
If dllid = 0 Return 0
|
|
1063
|
+
Set fid = $ZF(-4, 3, dllid, "kg_build_2hop_exact_stream")
|
|
1064
|
+
If fid = 0 Return 0
|
|
1065
|
+
Kill ^ArnoKG("2hs")
|
|
1066
|
+
Set raw = $ZF(-5, dllid, fid)
|
|
1067
|
+
If $Extract(raw, 1, 8) '= "CHUNKED:" Return 0
|
|
1068
|
+
Set n = +$Piece(raw, ":", 3)
|
|
1069
|
+
Set data = ""
|
|
1070
|
+
For i = 1:1:n {
|
|
1071
|
+
Set data = data _ $Get(^ArnoKG("2hs", i), "")
|
|
1072
|
+
}
|
|
1073
|
+
Kill ^ArnoKG("2hs")
|
|
1074
|
+
For pos = 1:1:$Length(data, $Char(10)) {
|
|
1075
|
+
Set line = $Piece(data, $Char(10), pos)
|
|
1076
|
+
If line = "" Continue
|
|
1077
|
+
Set s = $Piece(line, $Char(31), 1)
|
|
1078
|
+
Set p = $Piece(line, $Char(31), 2)
|
|
1079
|
+
Set cnt = +$Piece(line, $Char(31), 3)
|
|
1080
|
+
If (s '= "") && (p '= "") && (cnt > 0) {
|
|
1081
|
+
Set ^KG("deg2p_exact", s, p) = cnt
|
|
1082
|
+
}
|
|
1083
|
+
}
|
|
1084
|
+
Return 1
|
|
1085
|
+
}
|
|
1086
|
+
|
|
1038
1087
|
}
|
|
@@ -1179,15 +1179,15 @@ ClassMethod KHop2CountExact(srcId As %String, pred As %String = "") As %Integer
|
|
|
1179
1179
|
ClassMethod Build2HopExactStats() As %Integer
|
|
1180
1180
|
{
|
|
1181
1181
|
Kill ^KG("deg2p_exact")
|
|
1182
|
-
If ##class(Graph.KG.
|
|
1183
|
-
Set
|
|
1184
|
-
|
|
1185
|
-
|
|
1186
|
-
|
|
1187
|
-
|
|
1188
|
-
|
|
1189
|
-
}
|
|
1182
|
+
If ##class(Graph.KG.NKGAccel).Build2HopExact() {
|
|
1183
|
+
Set n = ""
|
|
1184
|
+
Set cnt = 0
|
|
1185
|
+
For {
|
|
1186
|
+
Set n = $Order(^KG("deg2p_exact", n))
|
|
1187
|
+
Quit:n=""
|
|
1188
|
+
Set cnt = cnt + 1
|
|
1190
1189
|
}
|
|
1190
|
+
Return cnt
|
|
1191
1191
|
}
|
|
1192
1192
|
Set src = ""
|
|
1193
1193
|
Set cnt = 0
|
|
@@ -1536,12 +1536,26 @@ class IRISGraphEngine:
|
|
|
1536
1536
|
max_hops,
|
|
1537
1537
|
max_results,
|
|
1538
1538
|
)
|
|
1539
|
-
|
|
1539
|
+
bfs_str = str(bfs_json) if bfs_json else ""
|
|
1540
|
+
if bfs_str.startswith("SORTED:") and bfs_str != "SORTED:0":
|
|
1541
|
+
tag = bfs_str.split(":")[1]
|
|
1542
|
+
if max_results == 0:
|
|
1543
|
+
bfs_results = list(_bfs_stream_pages(self.conn, tag))
|
|
1544
|
+
else:
|
|
1545
|
+
try:
|
|
1546
|
+
results_str = str(_call_classmethod(
|
|
1547
|
+
self.conn, "Graph.KG.Traversal", "ReadBFSResults", tag
|
|
1548
|
+
))
|
|
1549
|
+
bfs_results = _json.loads(results_str)
|
|
1550
|
+
except Exception:
|
|
1551
|
+
bfs_results = list(_bfs_stream_pages(self.conn, tag))
|
|
1552
|
+
elif bfs_str:
|
|
1553
|
+
bfs_results = _json.loads(bfs_str)
|
|
1554
|
+
else:
|
|
1555
|
+
bfs_results = []
|
|
1540
1556
|
logger.debug("Arno BFSJson: %d results for %s", len(bfs_results), source_id)
|
|
1541
|
-
if not bfs_results and not self._arno_capabilities.get("rust_callout"):
|
|
1542
|
-
bfs_results = None
|
|
1543
1557
|
except Exception as e:
|
|
1544
|
-
logger.warning(f"Arno BFSJson failed, falling back to
|
|
1558
|
+
logger.warning(f"Arno BFSJson failed, falling back to BFSFastJsonSorted: {e}")
|
|
1545
1559
|
bfs_results = None
|
|
1546
1560
|
|
|
1547
1561
|
if bfs_results is None:
|
|
@@ -1566,21 +1580,8 @@ class IRISGraphEngine:
|
|
|
1566
1580
|
else:
|
|
1567
1581
|
bfs_results = []
|
|
1568
1582
|
except Exception as e:
|
|
1569
|
-
logger.warning(f"BFSFastJsonSorted failed
|
|
1570
|
-
|
|
1571
|
-
resp = str(_call_classmethod(
|
|
1572
|
-
self.conn, "Graph.KG.Traversal", "BFSFastJsonChunked",
|
|
1573
|
-
source_id, predicates_json, max_hops, "", direction, max_results,
|
|
1574
|
-
))
|
|
1575
|
-
if resp.startswith("CHUNKED:") and resp != "CHUNKED:0":
|
|
1576
|
-
tag, n_chunks = resp.split(":")[1], int(resp.split(":")[2])
|
|
1577
|
-
parts = [str(_call_classmethod(self.conn, "Graph.KG.Traversal", "ReadBFSChunk", tag, str(i))) for i in range(1, n_chunks + 1)]
|
|
1578
|
-
bfs_results = _json.loads("[" + "".join(parts) + "]")
|
|
1579
|
-
else:
|
|
1580
|
-
bfs_results = []
|
|
1581
|
-
except Exception as e2:
|
|
1582
|
-
logger.warning(f"BFSFastJsonChunked also failed: {e2}")
|
|
1583
|
-
return IVGResult(columns=[], rows=[], sql="", params=[], metadata=sql_query.query_metadata)
|
|
1583
|
+
logger.warning(f"BFSFastJsonSorted failed: {e}")
|
|
1584
|
+
return IVGResult(columns=[], rows=[], sql="", params=[], metadata=sql_query.query_metadata)
|
|
1584
1585
|
|
|
1585
1586
|
|
|
1586
1587
|
if min_hops > 1:
|
|
@@ -3088,6 +3089,8 @@ class IRISGraphEngine:
|
|
|
3088
3089
|
registry[name_str] = type_str
|
|
3089
3090
|
except Exception:
|
|
3090
3091
|
pass
|
|
3092
|
+
if self._probe_native_vec():
|
|
3093
|
+
registry["hnsw"] = "hnsw"
|
|
3091
3094
|
return registry
|
|
3092
3095
|
|
|
3093
3096
|
def index(self, name: str) -> "IndexHandle":
|
|
@@ -21,30 +21,34 @@ _SEARCH = {
|
|
|
21
21
|
"bm25": lambda e, name, q, k, kw: e.bm25_search(name, q, k),
|
|
22
22
|
"vec": lambda e, name, q, k, kw: e.vec_search(name, q, k, **kw),
|
|
23
23
|
"plaid": lambda e, name, q, k, kw: e.plaid_search(name, q, k),
|
|
24
|
+
"hnsw": lambda e, name, q, k, kw: e.search_nodes_by_vector(q, k=k, **kw),
|
|
24
25
|
}
|
|
25
26
|
_INSERT = {
|
|
26
27
|
"ivf": lambda e, name, id_, vec: e.ivf_insert(name, id_, vec),
|
|
27
28
|
"bm25": lambda e, name, id_, vec: e.bm25_insert(name, id_, vec),
|
|
28
29
|
"vec": lambda e, name, id_, vec: e.vec_insert(name, id_, vec),
|
|
29
30
|
"plaid": lambda e, name, id_, vec: e.plaid_insert(name, id_, vec),
|
|
31
|
+
"hnsw": lambda e, name, id_, vec: e.store_embedding(id_, vec),
|
|
30
32
|
}
|
|
31
33
|
_DROP = {
|
|
32
34
|
"ivf": lambda e, name: e.ivf_drop(name),
|
|
33
35
|
"bm25": lambda e, name: e.bm25_drop(name),
|
|
34
36
|
"vec": lambda e, name: e.vec_drop(name),
|
|
35
37
|
"plaid": lambda e, name: e.plaid_drop(name),
|
|
38
|
+
"hnsw": lambda e, name: None,
|
|
36
39
|
}
|
|
37
40
|
_INFO = {
|
|
38
41
|
"ivf": lambda e, name: e.ivf_info(name),
|
|
39
42
|
"bm25": lambda e, name: e.bm25_info(name),
|
|
40
43
|
"vec": lambda e, name: e.vec_info(name),
|
|
41
44
|
"plaid": lambda e, name: e.plaid_info(name),
|
|
45
|
+
"hnsw": lambda e, name: {"type": "hnsw", "available": e._probe_native_vec()},
|
|
42
46
|
}
|
|
43
47
|
|
|
44
48
|
|
|
45
49
|
class IndexHandle(BaseModel):
|
|
46
50
|
name: str = Field(min_length=1)
|
|
47
|
-
type: Literal["ivf", "bm25", "vec", "plaid"]
|
|
51
|
+
type: Literal["ivf", "bm25", "vec", "plaid", "hnsw"]
|
|
48
52
|
engine: Any
|
|
49
53
|
|
|
50
54
|
model_config = {"arbitrary_types_allowed": True}
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "iris-vector-graph"
|
|
7
|
-
version = "1.
|
|
7
|
+
version = "1.90.0"
|
|
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,137 @@
|
|
|
1
|
+
import os
|
|
2
|
+
import time
|
|
3
|
+
import statistics
|
|
4
|
+
import pytest
|
|
5
|
+
|
|
6
|
+
IRIS_HOST = os.environ.get("IRIS_HOST", "localhost")
|
|
7
|
+
IRIS_ENT_PORT = int(os.environ.get("IRIS_ENT_PORT", "4972"))
|
|
8
|
+
IRIS_COM_PORT = int(os.environ.get("IRIS_COM_PORT", "1972"))
|
|
9
|
+
SKIP = os.environ.get("SKIP_IRIS_TESTS", "false").lower() == "true"
|
|
10
|
+
PRED = "KNOWS"
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
@pytest.fixture(scope="module")
|
|
14
|
+
def community_engine():
|
|
15
|
+
try:
|
|
16
|
+
import iris
|
|
17
|
+
from iris_vector_graph.engine import IRISGraphEngine
|
|
18
|
+
conn = iris.connect(IRIS_HOST, IRIS_COM_PORT, "USER", "_SYSTEM", "SYS")
|
|
19
|
+
yield IRISGraphEngine(conn), iris.createIRIS(conn)
|
|
20
|
+
conn.close()
|
|
21
|
+
except Exception as e:
|
|
22
|
+
pytest.skip(f"Community IRIS unavailable: {e}")
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
@pytest.fixture(scope="module")
|
|
26
|
+
def enterprise_engine():
|
|
27
|
+
try:
|
|
28
|
+
import iris
|
|
29
|
+
from iris_vector_graph.engine import IRISGraphEngine
|
|
30
|
+
conn = iris.connect(IRIS_HOST, IRIS_ENT_PORT, "USER", "_SYSTEM", "SYS")
|
|
31
|
+
o = iris.createIRIS(conn)
|
|
32
|
+
o.classMethodValue("Graph.KG.ArnoAccel", "Load")
|
|
33
|
+
eng = IRISGraphEngine(conn)
|
|
34
|
+
eng._detect_arno()
|
|
35
|
+
if not eng._arno_capabilities.get("rust_callout") or \
|
|
36
|
+
"bfs" not in eng._arno_capabilities.get("rust_algorithms", []):
|
|
37
|
+
pytest.skip("Arno Rust BFS not available on enterprise container")
|
|
38
|
+
cur = conn.cursor()
|
|
39
|
+
cur.execute("SELECT TOP 1 s FROM Graph_KG.rdf_edges WHERE p = ?", [PRED])
|
|
40
|
+
row = cur.fetchone()
|
|
41
|
+
if not row:
|
|
42
|
+
pytest.skip("No KNOWS edges in enterprise — LDBC data not loaded")
|
|
43
|
+
yield eng, o, str(row[0])
|
|
44
|
+
conn.close()
|
|
45
|
+
except Exception as e:
|
|
46
|
+
pytest.skip(f"Enterprise IRIS unavailable or Rust BFS inactive: {e}")
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
@pytest.fixture(scope="module")
|
|
50
|
+
def bfs_test_graph(community_engine):
|
|
51
|
+
eng, o = community_engine
|
|
52
|
+
cur = eng.conn.cursor()
|
|
53
|
+
nodes = ["bfs_hub", "bfs_a", "bfs_b", "bfs_c"]
|
|
54
|
+
for n in nodes:
|
|
55
|
+
cur.execute("SELECT COUNT(*) FROM Graph_KG.nodes WHERE node_id=?", [n])
|
|
56
|
+
if cur.fetchone()[0] == 0:
|
|
57
|
+
cur.execute("INSERT INTO Graph_KG.nodes (node_id) VALUES (?)", [n])
|
|
58
|
+
eng.conn.commit()
|
|
59
|
+
from iris_vector_graph.schema import _call_classmethod
|
|
60
|
+
for s, t in [("bfs_hub", "bfs_a"), ("bfs_hub", "bfs_b"), ("bfs_a", "bfs_c")]:
|
|
61
|
+
cur.execute("SELECT COUNT(*) FROM Graph_KG.rdf_edges WHERE s=? AND p=? AND o_id=?", [s, "BFS_R", t])
|
|
62
|
+
if cur.fetchone()[0] == 0:
|
|
63
|
+
cur.execute("INSERT INTO Graph_KG.rdf_edges (s,p,o_id) VALUES (?,?,?)", [s, "BFS_R", t])
|
|
64
|
+
eng.conn.commit()
|
|
65
|
+
_call_classmethod(eng.conn, "Graph.KG.Traversal", "BuildKG")
|
|
66
|
+
yield
|
|
67
|
+
for n in nodes:
|
|
68
|
+
cur.execute("DELETE FROM Graph_KG.rdf_edges WHERE s=? OR o_id=?", [n, n])
|
|
69
|
+
cur.execute("DELETE FROM Graph_KG.nodes WHERE node_id=?", [n])
|
|
70
|
+
eng.conn.commit()
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
@pytest.mark.skipif(SKIP, reason="SKIP_IRIS_TESTS=true")
|
|
74
|
+
@pytest.mark.e2e
|
|
75
|
+
def test_nkgaccel_bfs_json_output_format_is_sorted(enterprise_engine):
|
|
76
|
+
eng, o, seed = enterprise_engine
|
|
77
|
+
result = str(o.classMethodString("Graph.KG.NKGAccel", "BFSJson", seed, '["KNOWS"]', 2, 100))
|
|
78
|
+
assert result.startswith("SORTED:"), \
|
|
79
|
+
f"NKGAccel.BFSJson must return 'SORTED:tag' after spec 153, got: {result[:40]}"
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
@pytest.mark.skipif(SKIP, reason="SKIP_IRIS_TESTS=true")
|
|
83
|
+
@pytest.mark.e2e
|
|
84
|
+
def test_rust_bfs_result_matches_objectscript(enterprise_engine):
|
|
85
|
+
eng, o, seed = enterprise_engine
|
|
86
|
+
from iris_vector_graph.schema import _call_classmethod_large
|
|
87
|
+
import json
|
|
88
|
+
|
|
89
|
+
rust_raw = str(o.classMethodString("Graph.KG.NKGAccel", "BFSJson", seed, '["KNOWS"]', 2, 0))
|
|
90
|
+
if rust_raw.startswith("SORTED:"):
|
|
91
|
+
tag = rust_raw.split(":")[1]
|
|
92
|
+
rust_results = json.loads(str(o.classMethodString("Graph.KG.Traversal", "ReadBFSResults", tag)))
|
|
93
|
+
else:
|
|
94
|
+
rust_results = json.loads(rust_raw)
|
|
95
|
+
|
|
96
|
+
obj_results = json.loads(_call_classmethod_large(o, "Graph.KG.Traversal", "BFSFastJson", seed, "KNOWS", 2))
|
|
97
|
+
assert len(rust_results) > 0
|
|
98
|
+
assert abs(len(rust_results) - len(obj_results)) <= 1, \
|
|
99
|
+
f"Rust ({len(rust_results)}) and ObjectScript ({len(obj_results)}) BFS counts differ by >1"
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
@pytest.mark.skipif(SKIP, reason="SKIP_IRIS_TESTS=true")
|
|
103
|
+
@pytest.mark.e2e
|
|
104
|
+
def test_engine_execute_cypher_bfs_via_rust(enterprise_engine):
|
|
105
|
+
eng, o, seed = enterprise_engine
|
|
106
|
+
result = eng.execute_cypher(
|
|
107
|
+
"MATCH (s {node_id:$id})-[:KNOWS*1..2]->(n) RETURN n.node_id LIMIT 100",
|
|
108
|
+
{"id": seed}
|
|
109
|
+
)
|
|
110
|
+
assert result, "execute_cypher must succeed"
|
|
111
|
+
assert len(result.rows) > 0, "Must return results"
|
|
112
|
+
assert len(result.rows) <= 100
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
@pytest.mark.skipif(SKIP, reason="SKIP_IRIS_TESTS=true")
|
|
116
|
+
@pytest.mark.e2e
|
|
117
|
+
def test_engine_chunked_branch_removed():
|
|
118
|
+
import iris_vector_graph.engine as eng_mod
|
|
119
|
+
import inspect
|
|
120
|
+
src = inspect.getsource(eng_mod.IRISGraphEngine._execute_var_length_cypher)
|
|
121
|
+
assert "BFSFastJsonChunked" not in src, \
|
|
122
|
+
"Legacy BFSFastJsonChunked branch must be removed from _execute_var_length_cypher"
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
@pytest.mark.skipif(SKIP, reason="SKIP_IRIS_TESTS=true")
|
|
126
|
+
@pytest.mark.e2e
|
|
127
|
+
def test_objectscript_bfs_still_works_after_change(community_engine, bfs_test_graph):
|
|
128
|
+
eng, o = community_engine
|
|
129
|
+
result = eng.execute_cypher(
|
|
130
|
+
"MATCH (s {node_id:$id})-[:BFS_R*1..2]->(n) RETURN n.node_id",
|
|
131
|
+
{"id": "bfs_hub"}
|
|
132
|
+
)
|
|
133
|
+
assert result
|
|
134
|
+
ids = {r[0] for r in result.rows}
|
|
135
|
+
assert "bfs_a" in ids
|
|
136
|
+
assert "bfs_b" in ids
|
|
137
|
+
assert "bfs_c" in ids
|