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.
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/PKG-INFO +1 -1
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_src/src/Graph/KG/EdgeScan.cls +24 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_src/src/Graph/KG/GraphIndex.cls +8 -4
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_src/src/Graph/KG/Loader.cls +8 -1
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_src/src/Graph/KG/NKGAccelAdjacency.cls +7 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_src/src/Graph/KG/NKGAccelTraversal.cls +8 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/_engine/admin.py +93 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/_engine/fhir.py +15 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/_engine/nodes_edges.py +11 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/_engine/temporal.py +11 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/status.py +34 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/pyproject.toml +1 -1
- iris_vector_graph-2.3.1/tests/integration/test_index_consistency_e2e.py +150 -0
- iris_vector_graph-2.3.1/tests/unit/test_drift_detector.py +146 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/.gitignore +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/LICENSE +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/README.md +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/examples/demo_biomedical.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/examples/demo_fraud_detection.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/examples/demo_fraud_detection_sql.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/examples/demo_rdf_semantic_layer.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/examples/demo_utils.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/examples/demo_working_system.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/examples/domains/__init__.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/examples/domains/biomedical/__init__.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/examples/domains/biomedical/loaders.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/examples/domains/biomedical/resolver.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/examples/domains/biomedical/types.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/examples/domains/biomedical_legacy/__init__.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/examples/domains/biomedical_legacy/biomedical_engine.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/examples/domains/biomedical_legacy/biomedical_schema.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/examples/domains/biomedical_legacy/legacy_wrapper.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/examples/domains/fraud/__init__.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/examples/domains/fraud/loaders.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/examples/domains/fraud/resolver.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/examples/domains/fraud/types.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/examples/graphQL.http +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/examples/hybrid_vector_graph_query.cypher +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/examples/rest.http +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_src/src/Graph/KG/Algorithms.cls +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_src/src/Graph/KG/ArnoAccel.cls +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_src/src/Graph/KG/BM25Index.cls +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_src/src/Graph/KG/BenchFormat.cls +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_src/src/Graph/KG/BenchSeeder.cls +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_src/src/Graph/KG/Benchmark.cls +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_src/src/Graph/KG/Centrality.cls +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_src/src/Graph/KG/Communities.cls +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_src/src/Graph/KG/Edge.cls +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_src/src/Graph/KG/EmbedQueue.cls +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_src/src/Graph/KG/IVFIndex.cls +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_src/src/Graph/KG/MCPService.cls +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_src/src/Graph/KG/MCPToolSet.cls +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_src/src/Graph/KG/MCPTools.cls +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_src/src/Graph/KG/Meta.cls +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_src/src/Graph/KG/NKGAccel.cls +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_src/src/Graph/KG/NKGAccelCentrality.cls +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_src/src/Graph/KG/NKGAccelLoader.cls +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_src/src/Graph/KG/PLAIDSearch.cls +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_src/src/Graph/KG/PageRank.cls +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_src/src/Graph/KG/PyOps.cls +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_src/src/Graph/KG/Service.cls +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_src/src/Graph/KG/Snapshot.cls +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_src/src/Graph/KG/Subgraph.cls +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_src/src/Graph/KG/TemporalIndex.cls +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_src/src/Graph/KG/TestEdge.cls +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_src/src/Graph/KG/Traversal.cls +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_src/src/Graph/KG/TraversalBFS.cls +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_src/src/Graph/KG/TraversalBuild.cls +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_src/src/Graph/KG/TraversalKHop.cls +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_src/src/Graph/KG/TraversalPaths.cls +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_src/src/Graph/KG/VecIndex.cls +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_src/src/IVG/CypherEngine.cls +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_src/src/IVG/Percentile.cls +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_src/src/PageRankEmbedded.cls +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_src/src/User.Exec.cls +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_src/src/iris/vector/graph/GraphOperators.cls +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/__init__.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/_engine/__init__.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/_engine/_rdf_utils.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/_engine/algorithms.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/_engine/embeddings.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/_engine/prov.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/_engine/query.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/_engine/query.py,cover +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/_engine/rdf_export.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/_engine/schema.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/_engine/shacl.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/_engine/snapshot.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/_engine/snapshot.py,cover +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/_engine/vector.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/_validate.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/api_auth.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/bolt_server.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/0-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/1-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/10-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/11-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/12-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/13-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/14-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/15-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/16-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/17-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/18-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/19-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/20-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/21-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/22-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/23-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/24-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/25-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/26-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/27-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/28-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/29-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/30-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/31-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/32-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/33-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/34-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/35-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/36-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/37-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/38-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/39-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/40-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/41-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/42-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/43-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/44-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/45-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/46-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/47-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/48-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/49-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/50-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/51-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/52-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/53-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/54-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/55-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/56-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/57-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/58-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/59-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/6-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/60-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/61-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/62-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/63-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/64-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/65-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/66-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/67-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/68-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/69-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/7-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/70-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/71-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/72-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/73-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/74-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/75-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/8-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/9-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/app-b124e26129aa436b26fe.js +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/filter-a7c44e713bf19d31f6b2849160b1bba8.svg +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Bold.eot +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Bold.ttf +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Bold.woff +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Bold.woff2 +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Light.eot +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Light.ttf +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Light.woff +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Light.woff2 +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Medium.eot +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Medium.ttf +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Medium.woff +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Medium.woff2 +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Regular.eot +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Regular.ttf +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Regular.woff +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Regular.woff2 +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/fonts/OpenSans-Bold.ttf +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/fonts/OpenSans-BoldItalic.ttf +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/fonts/OpenSans-ExtraBold.ttf +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/fonts/OpenSans-ExtraBoldItalic.ttf +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/fonts/OpenSans-Italic.ttf +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/fonts/OpenSans-Light.ttf +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/fonts/OpenSans-LightItalic.ttf +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/fonts/OpenSans-Regular.ttf +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/fonts/OpenSans-Semibold.ttf +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/fonts/OpenSans-SemiboldItalic.ttf +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/fonts/codicon.ttf +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/fonts/filter.svg +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/fonts/fontawesome-webfont.eot +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/fonts/fontawesome-webfont.svg +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/fonts/fontawesome-webfont.ttf +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/fonts/fontawesome-webfont.woff +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/fonts/fontawesome-webfont.woff2 +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/fonts/group-by.svg +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/fonts/neo4j-world.eot +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/fonts/neo4j-world.svg +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/fonts/neo4j-world.ttf +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/fonts/neo4j-world.woff +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/fonts/sort.svg +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/fonts/sort1.svg +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/fonts/sort2.svg +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/fonts/streamline.eot +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/fonts/streamline.svg +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/fonts/streamline.ttf +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/fonts/streamline.woff +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/group-by-89c6aaa756bc3548cc6ab3d2be4d2862.svg +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/images/Favorites.mp4 +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/images/Keystrokes.mp4 +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/images/ProjectFiles.mp4 +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/images/ReusableFrame.mp4 +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/images/SidebarDB_Iinfo.png +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/images/Stream.png +0 -0
- {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
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/images/aura-logo.svg +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/images/books.png +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/images/clusters.svg +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/images/community.jpg +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/images/labeled_node.png +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/images/more_nodes.png +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/images/neo4j-favicon.ico +0 -0
- {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
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/images/neo4j-logo.svg +0 -0
- {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
- {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
- {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
- {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
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/images/one_node.png +0 -0
- {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
- {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
- {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
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/images/query-plan.svg +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/images/rel-props.png +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/images/relationships.png +0 -0
- {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
- {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
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/images/screen_editor.png +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/images/screen_sidebar.png +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/images/screen_stream.png +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/sort-8d6f482c21de572ceeb5ac93623e6c97.svg +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/sort1-d2dc515571213fc0ca99b0341b88e413.svg +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/assets/sort2-31050964e7eb2042325f7bcbba3d58ad.svg +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/bolt-worker-dfa551eb0861cc080843.js +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/cypher-editor-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/editor-455af92e7e1dc39fdbc8060f6680ab32.worker.js +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/index.html +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/manifest.json +0 -0
- {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
- {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
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/asciidoc.8O6YIVRy.js +0 -0
- {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
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/bash.CLAyaf9k.js +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/c.l4fEI10z.js +0 -0
- {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
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/csharp.ChqrQYCS.js +0 -0
- {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
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/css.B1LHiudN.js +0 -0
- {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
- {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
- {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
- {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
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/cypher-reference.gif +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/cypher.C3qdyJ5B.js +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/docker.CF7EZT1T.js +0 -0
- {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
- {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
- {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
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/go.FsJyBHVG.js +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/graphql.BlTzkzAJ.js +0 -0
- {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
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/index-CY0cZcsW.js +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/index-H7L207gH.css +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/index.BpRu7Js3.js +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/index.C74acnU7.js +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/index.CHatcJcU.js +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/index.D6ZMQedT.js +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/index.DPZla5MT.js +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/index.dzIUqrzq.js +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/index.leyiHvaQ.js +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/index.qJ6VE118.js +0 -0
- {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
- {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
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/java.BBXwBh9f.js +0 -0
- {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
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/javadoc.UnquSOIj.js +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/javascript.CYTqTa0W.js +0 -0
- {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
- {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
- {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
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/lintWorker-QNEp56W3.js +0 -0
- {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
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/movie-model.png +0 -0
- {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
- {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
- {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
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/php.BKb6XVba.js +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/python.tCcUC3U7.js +0 -0
- {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
- {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
- {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
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/rust.CtSATZMt.js +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/saved-cypher.gif +0 -0
- {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
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/sql.CfOAbw6n.js +0 -0
- {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
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/table-visualization.gif +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/assets/typescript.3Tbm37mD.js +0 -0
- {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
- {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
- {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
- {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
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/favicons/favicon-16x16.png +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/favicons/favicon-194x194.png +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/favicons/favicon-32x32.png +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/favicons/favicon.ico +0 -0
- {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
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/index.html +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/preview/manifest.json +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/ui-libs-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/browser_static/vendor-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/bulk_loader.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/capabilities.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/cli.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/cypher/__init__.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/cypher/algorithms/__init__.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/cypher/algorithms/paths.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/cypher/aql/__init__.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/cypher/aql/ast.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/cypher/aql/lexer.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/cypher/aql/parser.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/cypher/aql/translator.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/cypher/ast.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/cypher/lexer.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/cypher/parser.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/cypher/translator.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/cypher/translator.py,cover +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/cypher_api.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/dbapi_utils.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/embed_selector.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/embedded.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/engine.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/errors.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/fhir_bridge.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/fusion.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/gql/__init__.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/gql/constants.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/gql/engine.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/gql/pooling.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/gql/resolvers.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/gql/schema.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/index_config.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/index_protocol.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/models.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/operators.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/py.typed +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/result.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/schema.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/sdk.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/security.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/store_protocol.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/stores/__init__.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/stores/arno_bridge.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/stores/iris_sql_store.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/stores/lazy_kg.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/text_search.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/utils.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/vector_utils.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/sql/fhir_bridges.sql +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/sql/fraud_sample_data.sql +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/sql/globals_schema.sql +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/sql/graph_path_globals.sql +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/sql/graph_walk_tvf.sql +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/sql/migrations/000_base_schema_iris.sql +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/sql/migrations/001_add_nodepk_table.sql +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/sql/migrations/001_rollback_nodepk.sql +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/sql/migrations/002_add_fk_constraints.sql +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/sql/operators.sql +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/sql/operators_fixed.sql +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/sql/procedures/kg_PageRank.sql +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/sql/rdf_reifications.sql +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/sql/schema.sql +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/TESTING.md +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/benchmark_parser.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/benchmarks/README.md +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/benchmarks/bench.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/benchmarks/bench_193_full.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/benchmarks/bench_utils.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/benchmarks/benchmark_neo4j.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/benchmarks/bfs_benchmark.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/benchmarks/establish_baseline.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/benchmarks/graph_gen.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/benchmarks/ic2_profile.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/benchmarks/iris_baseline_run.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/benchmarks/iris_os_run.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/benchmarks/ldbc_full_loader.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/benchmarks/load_neo4j.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/benchmarks/synthetic_baseline.csv +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/conftest.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/contract/__init__.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/contract/conftest.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/contract/test_cypher_api.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/contract/test_cypher_api_errors.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/contract/test_graphql_queries.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/contract/test_graphql_schema.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/contract/test_ppr_api.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/curl_suite.sh +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/__init__.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/conftest.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/fixtures/__init__.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/fixtures/centrality_graphs.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/fixtures/community_graphs.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_analytics_dispatch.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_approx_count_distinct.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_aql_e2e.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_arno_bfs_global.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_arno_bfs_unified.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_betweenness_neighborhood_e2e.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_betweenness_os_e2e.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_biomedical_demo.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_biomedical_ui.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_centrality_e2e.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_closeness_os_e2e.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_communities_e2e.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_communities_perf.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_cypher_coerce_e2e.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_cypher_gaps_e2e.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_cypher_sprints_e2e.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_cypher_vector_search.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_cypher_vl_path_bfs.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_edge_weights.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_eigenvector_os_e2e.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_embed_queue_e2e.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_embedded_wgproto_e2e.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_execution_contexts.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_execution_contexts_new.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_fhir_bridges_e2e.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_fraud_demo.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_fraud_ui.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_gql_autogen_startup.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_gql_cypher_passthrough.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_gql_node_queries.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_gql_semantic_search.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_gql_traversal.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_graph_kernels_e2e.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_hla_kg_e2e.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_ic13_shortest_path.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_ic3_exact_count.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_igraph_fastpath_parity.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_index_protocol.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_introspection_api.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_ivf_insert.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_large_output_chunked.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_lazy_kg_e2e.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_lazy_node_resolution.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_msbfs_closeness.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_multi_query_engine_platform.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_named_paths_e2e.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_nkg_index_e2e.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_objectscript_split_resolution.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_operator_wiring_e2e.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_pattern_comprehension_reduce.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_plaid.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_plaid_search_e2e.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_ppr_cls_fast_path.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_ppr_guided_e2e.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_procedure_installation.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_reification_e2e.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_schema_procedures_e2e.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_sdk_ergonomics_178_180_e2e.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_store_injection_e2e.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_streaming_bfs.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_stress_api.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_stress_ingest.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_stress_multi_context.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_stress_search.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_stress_setup.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_stress_traversal.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_subgraph_e2e.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_subquery_call_e2e.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_temporal_store_e2e.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_unified_index_api.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_untested_methods.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/e2e/test_vecindex_e2e.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/__init__.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/conftest.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/gql/__init__.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/gql/test_graphql_mutations.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/gql/test_graphql_nested_queries.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/gql/test_graphql_queries.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/gql/test_graphql_vector_search.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_196_bug_fixes.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_admin_introspection.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_algorithm_branches.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_algorithms_deep_coverage.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_algorithms_error_paths.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_algorithms_integration.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_algorithms_new_paths.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_api_completeness.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_arno_bridge_mock_paths.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_arno_bridge_paths.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_arno_store_layer.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_bidirectional_ppr.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_bulk_load_session.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_bulk_loader_live.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_cls_layer.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_coverage_final_push.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_coverage_push_final.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_cypher_advanced.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_cypher_api_e2e.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_cypher_api_exception_paths.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_cypher_enhancements.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_cypher_multi_type.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_cypher_rd.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_cypher_rel_vars.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_cypher_single_type.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_cypher_untyped.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_cypher_vector_search.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_diabolical_qa.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_doc_claims.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_embeddings_api.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_embeddings_integration.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_embeddings_paths.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_engine_misc_paths.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_engine_utils_paths.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_fastapi_graphql.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_fhir_bridges_integration.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_fhir_event_sidecar.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_fusion_dbapi_bulk.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_gql_resolvers_live.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_lazykg_algorithms.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_lazykg_fallback_forced.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_named_paths_integration.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_nodepk_advanced_benchmarks.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_nodepk_constraints.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_nodepk_graph_analytics.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_nodepk_migration.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_nodepk_performance.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_nodepk_production_scale.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_nodes_edges_and_algo_paths.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_nodes_edges_deep.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_objectscript_classes.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_pagerank_sql_optimization.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_query_deep.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_query_engine_branches.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_query_engine_special.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_query_fastpaths.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_query_paths_deep.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_query_special_patterns.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_rdf_semantic_layer_e2e.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_reification_integration.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_remaining_paths.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_schema_and_engine_procs.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_schema_deep.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_schema_migration.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_snapshot_deep.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_snapshot_import_export.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_snapshot_paths.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_sql_parameterization.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_sql_store_direct.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_sql_store_paths.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_store_algorithms.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_store_bfs_deep.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_store_exception_paths.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_store_write_paths.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_stored_procedure_install.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_subquery_call_integration.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_vector_advanced_paths.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_vector_engine_deep.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_vector_index_paths.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_vector_index_paths2.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_vector_optimizer_live.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/integration/test_vector_paths.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/perf/__init__.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/perf/test_betweenness_vs_gds.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/perf/test_head_to_head.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/perf/test_leiden_four_way.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/performance/conftest.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/performance/scale_benchmark.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/performance/test_ppr_stress.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/performance/test_stress_v1_5.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/python/run_all_tests.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/python/test_iris_rest_api.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/python/test_networkx_loader.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/python/test_performance_benchmarks.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/python/test_pyops_vector_conversion.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/python/test_python_operators.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/python/test_python_sdk.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/python/test_schema_validation.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/python/test_sql_queries.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/python/test_vector_functions.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/regression/__init__.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/regression/engine_api_baseline.json +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/regression/test_complexity.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/regression/test_engine_api.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/regression/test_module_size.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/regression/test_no_silent_swallow.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/test_schema_contract.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/cypher/__init__.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/cypher/test_lexer.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/cypher/test_lexer_advanced.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/cypher/test_parser.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/cypher/test_parser_advanced.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_193_bfs_nkg_fast_path.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_194_readme.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_admin_remaining.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_admin_unit.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_algorithm_warning_paths.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_algorithms_extended_unit.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_algorithms_large_graph_warn.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_algorithms_unit.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_api_security.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_aql_lexer.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_aql_parser.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_aql_translator.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_aql_translator_extra.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_arno_bridge.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_batch_mutations.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_betweenness_os_unit.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_bfs_arno.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_bm25_index.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_bolt_relationship_encoding.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_bolt_server.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_bulk_load_session.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_bulk_loader_coverage.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_bulk_loader_unit.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_centrality_translator.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_centrality_unit.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_cli.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_closeness_os_unit.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_cls_deployment.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_communities_translator.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_communities_unit.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_concept_first_status.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_coverage_boost.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_cypher_api_admin.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_cypher_api_coverage.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_cypher_api_extra.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_cypher_benchmark.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_cypher_benchmark_scale.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_cypher_case_when.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_cypher_e2e_new_features.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_cypher_functions.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_cypher_parser.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_cypher_posos_bugs.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_cypher_procedures.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_cypher_translator.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_cypher_union_exists.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_cypher_var_length.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_cypher_vector_search.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_dbapi_utils_unit.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_edge_embeddings.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_edgeprop_ndjson.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_embed_nodes_params.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_embed_selector.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_embed_selector_unit.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_embedded.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_embedded_wgproto.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_embeddings_remaining.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_embeddings_unit.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_engine_deep.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_engine_dimension_fix.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_engine_embeddings.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_engine_mocked.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_engine_status.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_engine_unit.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_error_model.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_fhir_bridge.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_fhir_bridges.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_fhir_event_sidecar.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_gds_shims.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_get_nodes.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_gql_coverage.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_gql_edge_cases.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_gql_resolver_bodies.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_graph_kernels.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_graphql_dataloader.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_index_config.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_index_handle.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_index_protocol.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_ingest_formats.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_introspection_api.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_ivf_index.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_ivgresult.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_khop_dispatch.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_lazy_kg.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_module_coverage.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_named_graphs.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_named_paths.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_nodes_edges_unit.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_operators_coverage.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_operators_wiring.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_parse_cache.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_plaid_search.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_ppr_guided_subgraph.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_predicate_order.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_prov_export.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_query_extra_unit.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_query_fastpath_unit.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_query_unit.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_rdf_coverage_boost.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_rdf_export.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_reification.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_retrieve_and_vector_distance.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_schema_engine_unit.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_schema_init.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_schema_procedures.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_schema_remaining.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_schema_unit.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_sdk.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_sdk_async.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_sdk_coverage.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_shacl_validation.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_shortest_path.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_snapshot.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_snapshot_restore_unit.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_snapshot_unit.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_sql_splitter.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_sql_store_unit.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_sql_table_bridge.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_store_protocol.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_structural_guard.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_structural_guard_e2e.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_subgraph.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_subquery_call.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_supporting_modules.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_sync_model.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_temporal_cypher.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_temporal_edges.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_temporal_unit.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_translator_coverage.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_translator_deep_coverage.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_translator_extended.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_translator_gaps.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_unified_edge_store.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_utilities_final.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_utils_coverage.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_validation.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_vector_search_routing.py +0 -0
- {iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/tests/unit/test_vector_unit.py +0 -0
- {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.
|
|
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
|
-
|
|
66
|
-
|
|
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
|
|
{iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_src/src/Graph/KG/NKGAccelAdjacency.cls
RENAMED
|
@@ -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
|
|
{iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_src/src/Graph/KG/NKGAccelTraversal.cls
RENAMED
|
@@ -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)
|
{iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/iris_vector_graph/_engine/nodes_edges.py
RENAMED
|
@@ -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.
|
|
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())
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{iris_vector_graph-2.3.0 → iris_vector_graph-2.3.1}/examples/domains/biomedical_legacy/__init__.py
RENAMED
|
File without changes
|