iris-vector-graph 2.3.1__tar.gz → 2.4.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.1 → iris_vector_graph-2.4.1}/PKG-INFO +2 -1
- iris_vector_graph-2.4.1/iris_src/src/Graph/KG/EmbedQueue.cls +210 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/_engine/embeddings.py +152 -20
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/cypher_api.py +5 -2
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/engine.py +4 -2
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/pyproject.toml +9 -2
- iris_vector_graph-2.4.1/tests/integration/test_embed_queue_e2e.py +146 -0
- iris_vector_graph-2.4.1/tests/unit/test_embed_queue_unit.py +268 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_embeddings_unit.py +79 -35
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_engine_unit.py +34 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_ivf_index.py +9 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_vector_unit.py +2 -0
- iris_vector_graph-2.3.1/iris_src/src/Graph/KG/EmbedQueue.cls +0 -114
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/.gitignore +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/LICENSE +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/README.md +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/examples/demo_biomedical.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/examples/demo_fraud_detection.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/examples/demo_fraud_detection_sql.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/examples/demo_rdf_semantic_layer.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/examples/demo_utils.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/examples/demo_working_system.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/examples/domains/__init__.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/examples/domains/biomedical/__init__.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/examples/domains/biomedical/loaders.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/examples/domains/biomedical/resolver.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/examples/domains/biomedical/types.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/examples/domains/biomedical_legacy/__init__.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/examples/domains/biomedical_legacy/biomedical_engine.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/examples/domains/biomedical_legacy/biomedical_schema.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/examples/domains/biomedical_legacy/legacy_wrapper.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/examples/domains/fraud/__init__.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/examples/domains/fraud/loaders.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/examples/domains/fraud/resolver.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/examples/domains/fraud/types.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/examples/graphQL.http +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/examples/hybrid_vector_graph_query.cypher +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/examples/rest.http +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_src/src/Graph/KG/Algorithms.cls +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_src/src/Graph/KG/ArnoAccel.cls +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_src/src/Graph/KG/BM25Index.cls +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_src/src/Graph/KG/BenchFormat.cls +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_src/src/Graph/KG/BenchSeeder.cls +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_src/src/Graph/KG/Benchmark.cls +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_src/src/Graph/KG/Centrality.cls +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_src/src/Graph/KG/Communities.cls +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_src/src/Graph/KG/Edge.cls +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_src/src/Graph/KG/EdgeScan.cls +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_src/src/Graph/KG/GraphIndex.cls +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_src/src/Graph/KG/IVFIndex.cls +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_src/src/Graph/KG/Loader.cls +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_src/src/Graph/KG/MCPService.cls +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_src/src/Graph/KG/MCPToolSet.cls +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_src/src/Graph/KG/MCPTools.cls +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_src/src/Graph/KG/Meta.cls +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_src/src/Graph/KG/NKGAccel.cls +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_src/src/Graph/KG/NKGAccelAdjacency.cls +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_src/src/Graph/KG/NKGAccelCentrality.cls +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_src/src/Graph/KG/NKGAccelLoader.cls +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_src/src/Graph/KG/NKGAccelTraversal.cls +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_src/src/Graph/KG/PLAIDSearch.cls +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_src/src/Graph/KG/PageRank.cls +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_src/src/Graph/KG/PyOps.cls +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_src/src/Graph/KG/Service.cls +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_src/src/Graph/KG/Snapshot.cls +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_src/src/Graph/KG/Subgraph.cls +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_src/src/Graph/KG/TemporalIndex.cls +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_src/src/Graph/KG/TestEdge.cls +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_src/src/Graph/KG/Traversal.cls +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_src/src/Graph/KG/TraversalBFS.cls +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_src/src/Graph/KG/TraversalBuild.cls +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_src/src/Graph/KG/TraversalKHop.cls +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_src/src/Graph/KG/TraversalPaths.cls +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_src/src/Graph/KG/VecIndex.cls +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_src/src/IVG/CypherEngine.cls +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_src/src/IVG/Percentile.cls +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_src/src/PageRankEmbedded.cls +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_src/src/User.Exec.cls +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_src/src/iris/vector/graph/GraphOperators.cls +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/__init__.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/_engine/__init__.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/_engine/_rdf_utils.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/_engine/admin.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/_engine/algorithms.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/_engine/fhir.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/_engine/nodes_edges.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/_engine/prov.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/_engine/query.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/_engine/query.py,cover +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/_engine/rdf_export.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/_engine/schema.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/_engine/shacl.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/_engine/snapshot.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/_engine/snapshot.py,cover +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/_engine/temporal.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/_engine/vector.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/_validate.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/api_auth.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/bolt_server.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/0-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/1-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/10-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/11-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/12-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/13-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/14-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/15-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/16-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/17-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/18-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/19-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/20-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/21-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/22-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/23-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/24-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/25-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/26-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/27-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/28-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/29-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/30-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/31-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/32-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/33-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/34-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/35-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/36-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/37-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/38-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/39-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/40-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/41-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/42-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/43-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/44-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/45-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/46-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/47-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/48-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/49-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/50-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/51-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/52-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/53-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/54-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/55-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/56-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/57-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/58-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/59-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/6-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/60-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/61-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/62-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/63-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/64-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/65-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/66-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/67-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/68-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/69-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/7-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/70-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/71-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/72-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/73-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/74-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/75-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/8-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/9-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/app-b124e26129aa436b26fe.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/filter-a7c44e713bf19d31f6b2849160b1bba8.svg +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Bold.eot +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Bold.ttf +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Bold.woff +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Bold.woff2 +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Light.eot +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Light.ttf +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Light.woff +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Light.woff2 +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Medium.eot +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Medium.ttf +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Medium.woff +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Medium.woff2 +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Regular.eot +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Regular.ttf +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Regular.woff +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Regular.woff2 +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/fonts/OpenSans-Bold.ttf +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/fonts/OpenSans-BoldItalic.ttf +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/fonts/OpenSans-ExtraBold.ttf +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/fonts/OpenSans-ExtraBoldItalic.ttf +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/fonts/OpenSans-Italic.ttf +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/fonts/OpenSans-Light.ttf +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/fonts/OpenSans-LightItalic.ttf +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/fonts/OpenSans-Regular.ttf +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/fonts/OpenSans-Semibold.ttf +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/fonts/OpenSans-SemiboldItalic.ttf +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/fonts/codicon.ttf +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/fonts/filter.svg +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/fonts/fontawesome-webfont.eot +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/fonts/fontawesome-webfont.svg +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/fonts/fontawesome-webfont.ttf +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/fonts/fontawesome-webfont.woff +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/fonts/fontawesome-webfont.woff2 +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/fonts/group-by.svg +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/fonts/neo4j-world.eot +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/fonts/neo4j-world.svg +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/fonts/neo4j-world.ttf +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/fonts/neo4j-world.woff +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/fonts/sort.svg +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/fonts/sort1.svg +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/fonts/sort2.svg +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/fonts/streamline.eot +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/fonts/streamline.svg +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/fonts/streamline.ttf +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/fonts/streamline.woff +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/group-by-89c6aaa756bc3548cc6ab3d2be4d2862.svg +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/images/Favorites.mp4 +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/images/Keystrokes.mp4 +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/images/ProjectFiles.mp4 +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/images/ReusableFrame.mp4 +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/images/SidebarDB_Iinfo.png +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/images/Stream.png +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/images/aura-logo-inverted.svg +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/images/aura-logo.svg +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/images/books.png +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/images/clusters.svg +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/images/community.jpg +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/images/device-icons/android-icon-144x144.png +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/images/device-icons/android-icon-192x192.png +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/images/device-icons/android-icon-36x36.png +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/images/device-icons/android-icon-48x48.png +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/images/device-icons/android-icon-72x72.png +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/images/device-icons/android-icon-96x96.png +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-114x114.png +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-120x120.png +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-144x144.png +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-152x152.png +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-180x180.png +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-57x57.png +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-60x60.png +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-72x72.png +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-76x76.png +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-precomposed.png +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon.png +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/images/device-icons/browserconfig.xml +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/images/device-icons/favicon-16x16.png +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/images/device-icons/favicon-32x32.png +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/images/device-icons/favicon-96x96.png +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/images/device-icons/favicon.ico +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/images/device-icons/manifest.json +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/images/device-icons/ms-icon-144x144.png +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/images/device-icons/ms-icon-150x150.png +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/images/device-icons/ms-icon-310x310.png +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/images/device-icons/ms-icon-70x70.png +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/images/device-icons/neo4j-browser-canary.svg +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/images/device-icons/neo4j-browser.svg +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/images/labeled_node.png +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/images/more_nodes.png +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/images/neo4j-favicon.ico +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/images/neo4j-logo-inverted.svg +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/images/neo4j-logo.svg +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/images/northwind/customer-orders.png +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/images/northwind/order-graph.png +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/images/northwind/product-category-supplier.png +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/images/northwind/product-graph.png +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/images/one_node.png +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/images/query-plan-operator-cost.svg +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/images/query-plan-operator-details.svg +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/images/query-plan-operator-rows.svg +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/images/query-plan.svg +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/images/rel-props.png +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/images/relationships.png +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/images/screen_code_frame.png +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/images/screen_cypher_warn.png +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/images/screen_editor.png +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/images/screen_sidebar.png +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/images/screen_stream.png +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/sort-8d6f482c21de572ceeb5ac93623e6c97.svg +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/sort1-d2dc515571213fc0ca99b0341b88e413.svg +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/assets/sort2-31050964e7eb2042325f7bcbba3d58ad.svg +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/bolt-worker-dfa551eb0861cc080843.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/cypher-editor-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/editor-455af92e7e1dc39fdbc8060f6680ab32.worker.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/index.html +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/manifest.json +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/preview/assets/CoseBilkentLayout.worker-FEt6e_rV.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/preview/assets/HierarchicalLayout.worker-O6WHYssL.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/preview/assets/asciidoc.8O6YIVRy.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/preview/assets/auto-track.BlKugDvg.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/preview/assets/bash.CLAyaf9k.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/preview/assets/c.l4fEI10z.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/preview/assets/connect-icon-Br2hQy_e.svg +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/preview/assets/csharp.ChqrQYCS.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/preview/assets/css-extras.Bi-4v17d.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/preview/assets/css.B1LHiudN.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/preview/assets/cypher-editor-auto-completions.gif +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/preview/assets/cypher-editor-inline-help.png +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/preview/assets/cypher-editor-linting.png +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/preview/assets/cypher-editor-syntax-highlighting.png +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/preview/assets/cypher-reference.gif +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/preview/assets/cypher.C3qdyJ5B.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/preview/assets/docker.CF7EZT1T.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/preview/assets/fira-code-400-regular-normal-BzypJxJk.woff2 +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/preview/assets/fira-code-500-medium-normal-CRWzqcWa.woff2 +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/preview/assets/fira-code-700-bold-normal-hUmNV4O0.woff2 +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/preview/assets/go.FsJyBHVG.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/preview/assets/graphql.BlTzkzAJ.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/preview/assets/history-quick-search.gif +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/preview/assets/index-CY0cZcsW.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/preview/assets/index-H7L207gH.css +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/preview/assets/index.BpRu7Js3.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/preview/assets/index.C74acnU7.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/preview/assets/index.CHatcJcU.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/preview/assets/index.D6ZMQedT.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/preview/assets/index.DPZla5MT.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/preview/assets/index.dzIUqrzq.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/preview/assets/index.leyiHvaQ.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/preview/assets/index.qJ6VE118.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/preview/assets/index.umd.B9yhfa5Y.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/preview/assets/is-plan-event-enabled.DeNtQvA5.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/preview/assets/java.BBXwBh9f.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/preview/assets/java.CQ1iJ0-D.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/preview/assets/javadoc.UnquSOIj.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/preview/assets/javascript.CYTqTa0W.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/preview/assets/json.BIkJg-Cj.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/preview/assets/jsx.Cy_hP1z6.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/preview/assets/kotlin.D_6l0VkM.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/preview/assets/lintWorker-QNEp56W3.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/preview/assets/logo-aura-white-DCfUnkCN.svg +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/preview/assets/movie-model.png +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/preview/assets/movies-active-B2SzHIc1.svg +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/preview/assets/neo4j-logo-active-CieUxroh.svg +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/preview/assets/patterned-banner-background-C_nO-Yn8.svg +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/preview/assets/php.BKb6XVba.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/preview/assets/plan-graph-worker-s17nF19Q.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/preview/assets/public-sans-300-light-normal-CG9e8kLa.woff2 +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/preview/assets/public-sans-400-regular-italic-D9FlViiB.woff2 +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/preview/assets/public-sans-400-regular-normal-D4F9yfFi.woff2 +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/preview/assets/public-sans-500-medium-normal-ChZcBEnJ.woff2 +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/preview/assets/public-sans-600-semi-bold-normal-Ck6TyfRI.woff2 +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/preview/assets/public-sans-700-bold-normal-CGjRhW-d.woff2 +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/preview/assets/python.tCcUC3U7.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/preview/assets/query-fundamentals-active-jvTJU1K2.svg +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/preview/assets/query.snake-frame.DmvXOQIM.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/preview/assets/regex.C_VuIVtC.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/preview/assets/rust.CtSATZMt.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/preview/assets/saved-cypher.gif +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/preview/assets/scalable-graph-visualization.gif +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/preview/assets/sql.CfOAbw6n.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/preview/assets/syne-neo-500-medium-normal-A5GXmYUf.woff2 +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/preview/assets/table-visualization.gif +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/preview/assets/typescript.3Tbm37mD.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/preview/assets/xml-doc.h79Tu9Aw.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/preview/assets/yaml.B-Jvd59g.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/preview/favicons/android-chrome-192x192.png +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/preview/favicons/apple-touch-icon.png +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/preview/favicons/favicon-16x16.png +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/preview/favicons/favicon-194x194.png +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/preview/favicons/favicon-32x32.png +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/preview/favicons/favicon.ico +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/preview/favicons/safari-pinned-tab.svg +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/preview/index.html +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/preview/manifest.json +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/ui-libs-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/browser_static/vendor-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/bulk_loader.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/capabilities.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/cli.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/cypher/__init__.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/cypher/algorithms/__init__.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/cypher/algorithms/paths.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/cypher/aql/__init__.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/cypher/aql/ast.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/cypher/aql/lexer.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/cypher/aql/parser.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/cypher/aql/translator.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/cypher/ast.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/cypher/lexer.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/cypher/parser.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/cypher/translator.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/cypher/translator.py,cover +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/dbapi_utils.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/embed_selector.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/embedded.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/errors.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/fhir_bridge.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/fusion.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/gql/__init__.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/gql/constants.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/gql/engine.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/gql/pooling.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/gql/resolvers.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/gql/schema.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/index_config.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/index_protocol.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/models.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/operators.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/py.typed +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/result.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/schema.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/sdk.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/security.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/status.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/store_protocol.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/stores/__init__.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/stores/arno_bridge.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/stores/iris_sql_store.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/stores/lazy_kg.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/text_search.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/utils.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/iris_vector_graph/vector_utils.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/sql/fhir_bridges.sql +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/sql/fraud_sample_data.sql +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/sql/globals_schema.sql +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/sql/graph_path_globals.sql +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/sql/graph_walk_tvf.sql +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/sql/migrations/000_base_schema_iris.sql +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/sql/migrations/001_add_nodepk_table.sql +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/sql/migrations/001_rollback_nodepk.sql +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/sql/migrations/002_add_fk_constraints.sql +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/sql/operators.sql +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/sql/operators_fixed.sql +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/sql/procedures/kg_PageRank.sql +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/sql/rdf_reifications.sql +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/sql/schema.sql +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/TESTING.md +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/benchmark_parser.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/benchmarks/README.md +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/benchmarks/bench.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/benchmarks/bench_193_full.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/benchmarks/bench_utils.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/benchmarks/benchmark_neo4j.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/benchmarks/bfs_benchmark.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/benchmarks/establish_baseline.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/benchmarks/graph_gen.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/benchmarks/ic2_profile.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/benchmarks/iris_baseline_run.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/benchmarks/iris_os_run.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/benchmarks/ldbc_full_loader.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/benchmarks/load_neo4j.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/benchmarks/synthetic_baseline.csv +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/conftest.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/contract/__init__.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/contract/conftest.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/contract/test_cypher_api.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/contract/test_cypher_api_errors.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/contract/test_graphql_queries.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/contract/test_graphql_schema.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/contract/test_ppr_api.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/curl_suite.sh +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/e2e/__init__.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/e2e/conftest.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/e2e/fixtures/__init__.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/e2e/fixtures/centrality_graphs.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/e2e/fixtures/community_graphs.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/e2e/test_analytics_dispatch.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/e2e/test_approx_count_distinct.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/e2e/test_aql_e2e.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/e2e/test_arno_bfs_global.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/e2e/test_arno_bfs_unified.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/e2e/test_betweenness_neighborhood_e2e.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/e2e/test_betweenness_os_e2e.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/e2e/test_biomedical_demo.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/e2e/test_biomedical_ui.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/e2e/test_centrality_e2e.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/e2e/test_closeness_os_e2e.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/e2e/test_communities_e2e.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/e2e/test_communities_perf.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/e2e/test_cypher_coerce_e2e.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/e2e/test_cypher_gaps_e2e.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/e2e/test_cypher_sprints_e2e.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/e2e/test_cypher_vector_search.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/e2e/test_cypher_vl_path_bfs.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/e2e/test_edge_weights.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/e2e/test_eigenvector_os_e2e.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/e2e/test_embed_queue_e2e.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/e2e/test_embedded_wgproto_e2e.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/e2e/test_execution_contexts.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/e2e/test_execution_contexts_new.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/e2e/test_fhir_bridges_e2e.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/e2e/test_fraud_demo.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/e2e/test_fraud_ui.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/e2e/test_gql_autogen_startup.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/e2e/test_gql_cypher_passthrough.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/e2e/test_gql_node_queries.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/e2e/test_gql_semantic_search.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/e2e/test_gql_traversal.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/e2e/test_graph_kernels_e2e.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/e2e/test_hla_kg_e2e.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/e2e/test_ic13_shortest_path.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/e2e/test_ic3_exact_count.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/e2e/test_igraph_fastpath_parity.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/e2e/test_index_protocol.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/e2e/test_introspection_api.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/e2e/test_ivf_insert.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/e2e/test_large_output_chunked.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/e2e/test_lazy_kg_e2e.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/e2e/test_lazy_node_resolution.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/e2e/test_msbfs_closeness.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/e2e/test_multi_query_engine_platform.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/e2e/test_named_paths_e2e.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/e2e/test_nkg_index_e2e.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/e2e/test_objectscript_split_resolution.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/e2e/test_operator_wiring_e2e.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/e2e/test_pattern_comprehension_reduce.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/e2e/test_plaid.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/e2e/test_plaid_search_e2e.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/e2e/test_ppr_cls_fast_path.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/e2e/test_ppr_guided_e2e.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/e2e/test_procedure_installation.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/e2e/test_reification_e2e.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/e2e/test_schema_procedures_e2e.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/e2e/test_sdk_ergonomics_178_180_e2e.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/e2e/test_store_injection_e2e.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/e2e/test_streaming_bfs.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/e2e/test_stress_api.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/e2e/test_stress_ingest.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/e2e/test_stress_multi_context.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/e2e/test_stress_search.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/e2e/test_stress_setup.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/e2e/test_stress_traversal.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/e2e/test_subgraph_e2e.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/e2e/test_subquery_call_e2e.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/e2e/test_temporal_store_e2e.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/e2e/test_unified_index_api.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/e2e/test_untested_methods.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/e2e/test_vecindex_e2e.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/integration/__init__.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/integration/conftest.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/integration/gql/__init__.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/integration/gql/test_graphql_mutations.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/integration/gql/test_graphql_nested_queries.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/integration/gql/test_graphql_queries.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/integration/gql/test_graphql_vector_search.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/integration/test_196_bug_fixes.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/integration/test_admin_introspection.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/integration/test_algorithm_branches.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/integration/test_algorithms_deep_coverage.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/integration/test_algorithms_error_paths.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/integration/test_algorithms_integration.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/integration/test_algorithms_new_paths.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/integration/test_api_completeness.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/integration/test_arno_bridge_mock_paths.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/integration/test_arno_bridge_paths.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/integration/test_arno_store_layer.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/integration/test_bidirectional_ppr.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/integration/test_bulk_load_session.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/integration/test_bulk_loader_live.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/integration/test_cls_layer.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/integration/test_coverage_final_push.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/integration/test_coverage_push_final.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/integration/test_cypher_advanced.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/integration/test_cypher_api_e2e.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/integration/test_cypher_api_exception_paths.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/integration/test_cypher_enhancements.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/integration/test_cypher_multi_type.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/integration/test_cypher_rd.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/integration/test_cypher_rel_vars.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/integration/test_cypher_single_type.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/integration/test_cypher_untyped.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/integration/test_cypher_vector_search.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/integration/test_diabolical_qa.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/integration/test_doc_claims.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/integration/test_embeddings_api.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/integration/test_embeddings_integration.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/integration/test_embeddings_paths.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/integration/test_engine_misc_paths.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/integration/test_engine_utils_paths.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/integration/test_fastapi_graphql.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/integration/test_fhir_bridges_integration.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/integration/test_fhir_event_sidecar.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/integration/test_fusion_dbapi_bulk.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/integration/test_gql_resolvers_live.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/integration/test_index_consistency_e2e.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/integration/test_lazykg_algorithms.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/integration/test_lazykg_fallback_forced.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/integration/test_named_paths_integration.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/integration/test_nodepk_advanced_benchmarks.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/integration/test_nodepk_constraints.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/integration/test_nodepk_graph_analytics.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/integration/test_nodepk_migration.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/integration/test_nodepk_performance.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/integration/test_nodepk_production_scale.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/integration/test_nodes_edges_and_algo_paths.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/integration/test_nodes_edges_deep.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/integration/test_objectscript_classes.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/integration/test_pagerank_sql_optimization.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/integration/test_query_deep.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/integration/test_query_engine_branches.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/integration/test_query_engine_special.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/integration/test_query_fastpaths.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/integration/test_query_paths_deep.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/integration/test_query_special_patterns.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/integration/test_rdf_semantic_layer_e2e.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/integration/test_reification_integration.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/integration/test_remaining_paths.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/integration/test_schema_and_engine_procs.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/integration/test_schema_deep.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/integration/test_schema_migration.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/integration/test_snapshot_deep.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/integration/test_snapshot_import_export.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/integration/test_snapshot_paths.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/integration/test_sql_parameterization.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/integration/test_sql_store_direct.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/integration/test_sql_store_paths.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/integration/test_store_algorithms.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/integration/test_store_bfs_deep.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/integration/test_store_exception_paths.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/integration/test_store_write_paths.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/integration/test_stored_procedure_install.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/integration/test_subquery_call_integration.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/integration/test_vector_advanced_paths.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/integration/test_vector_engine_deep.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/integration/test_vector_index_paths.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/integration/test_vector_index_paths2.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/integration/test_vector_optimizer_live.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/integration/test_vector_paths.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/perf/__init__.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/perf/test_betweenness_vs_gds.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/perf/test_head_to_head.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/perf/test_leiden_four_way.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/performance/conftest.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/performance/scale_benchmark.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/performance/test_ppr_stress.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/performance/test_stress_v1_5.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/python/run_all_tests.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/python/test_iris_rest_api.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/python/test_networkx_loader.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/python/test_performance_benchmarks.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/python/test_pyops_vector_conversion.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/python/test_python_operators.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/python/test_python_sdk.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/python/test_schema_validation.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/python/test_sql_queries.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/python/test_vector_functions.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/regression/__init__.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/regression/engine_api_baseline.json +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/regression/test_complexity.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/regression/test_engine_api.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/regression/test_module_size.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/regression/test_no_silent_swallow.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/test_schema_contract.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/cypher/__init__.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/cypher/test_lexer.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/cypher/test_lexer_advanced.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/cypher/test_parser.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/cypher/test_parser_advanced.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_193_bfs_nkg_fast_path.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_194_readme.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_admin_remaining.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_admin_unit.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_algorithm_warning_paths.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_algorithms_extended_unit.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_algorithms_large_graph_warn.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_algorithms_unit.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_api_security.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_aql_lexer.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_aql_parser.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_aql_translator.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_aql_translator_extra.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_arno_bridge.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_batch_mutations.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_betweenness_os_unit.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_bfs_arno.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_bm25_index.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_bolt_relationship_encoding.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_bolt_server.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_bulk_load_session.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_bulk_loader_coverage.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_bulk_loader_unit.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_centrality_translator.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_centrality_unit.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_cli.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_closeness_os_unit.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_cls_deployment.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_communities_translator.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_communities_unit.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_concept_first_status.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_coverage_boost.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_cypher_api_admin.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_cypher_api_coverage.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_cypher_api_extra.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_cypher_benchmark.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_cypher_benchmark_scale.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_cypher_case_when.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_cypher_e2e_new_features.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_cypher_functions.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_cypher_parser.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_cypher_posos_bugs.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_cypher_procedures.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_cypher_translator.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_cypher_union_exists.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_cypher_var_length.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_cypher_vector_search.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_dbapi_utils_unit.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_drift_detector.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_edge_embeddings.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_edgeprop_ndjson.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_embed_nodes_params.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_embed_selector.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_embed_selector_unit.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_embedded.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_embedded_wgproto.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_embeddings_remaining.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_engine_deep.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_engine_dimension_fix.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_engine_embeddings.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_engine_mocked.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_engine_status.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_error_model.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_fhir_bridge.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_fhir_bridges.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_fhir_event_sidecar.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_gds_shims.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_get_nodes.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_gql_coverage.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_gql_edge_cases.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_gql_resolver_bodies.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_graph_kernels.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_graphql_dataloader.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_index_config.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_index_handle.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_index_protocol.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_ingest_formats.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_introspection_api.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_ivgresult.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_khop_dispatch.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_lazy_kg.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_module_coverage.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_named_graphs.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_named_paths.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_nodes_edges_unit.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_operators_coverage.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_operators_wiring.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_parse_cache.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_plaid_search.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_ppr_guided_subgraph.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_predicate_order.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_prov_export.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_query_extra_unit.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_query_fastpath_unit.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_query_unit.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_rdf_coverage_boost.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_rdf_export.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_reification.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_retrieve_and_vector_distance.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_schema_engine_unit.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_schema_init.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_schema_procedures.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_schema_remaining.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_schema_unit.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_sdk.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_sdk_async.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_sdk_coverage.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_shacl_validation.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_shortest_path.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_snapshot.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_snapshot_restore_unit.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_snapshot_unit.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_sql_splitter.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_sql_store_unit.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_sql_table_bridge.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_store_protocol.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_structural_guard.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_structural_guard_e2e.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_subgraph.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_subquery_call.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_supporting_modules.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_sync_model.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_temporal_cypher.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_temporal_edges.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_temporal_unit.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_translator_coverage.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_translator_deep_coverage.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_translator_extended.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_translator_gaps.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_unified_edge_store.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_utilities_final.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_utils_coverage.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_validation.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.1}/tests/unit/test_vector_search_routing.py +0 -0
- {iris_vector_graph-2.3.1 → iris_vector_graph-2.4.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
|
+
Version: 2.4.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
|
|
@@ -25,6 +25,7 @@ Classifier: Topic :: Scientific/Engineering
|
|
|
25
25
|
Classifier: Topic :: Scientific/Engineering :: Bio-Informatics
|
|
26
26
|
Requires-Python: >=3.10
|
|
27
27
|
Requires-Dist: intersystems-iris>=1.0.0
|
|
28
|
+
Requires-Dist: iris-embedded-python-wrapper>=0.5.20
|
|
28
29
|
Provides-Extra: biodata
|
|
29
30
|
Requires-Dist: biopython>=1.81; extra == 'biodata'
|
|
30
31
|
Requires-Dist: bioservices>=1.11.0; extra == 'biodata'
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
Class Graph.KG.EmbedQueue Extends %RegisteredObject
|
|
2
|
+
{
|
|
3
|
+
|
|
4
|
+
/// Enhanced embedding queue (spec 199). Entries are subscripted:
|
|
5
|
+
/// ^EmbedQueue(reqId, "status") = "PENDING" | "DONE" | "ERROR"
|
|
6
|
+
/// ^EmbedQueue(reqId, "text") = text to embed
|
|
7
|
+
/// ^EmbedQueue(reqId, "node_id") = node id (node-keyed entries) or ""
|
|
8
|
+
/// ^EmbedQueue(reqId, "result") = "<f1>,<f2>,...,<fN>" comma-joined vector (on DONE)
|
|
9
|
+
/// ^EmbedQueue(reqId, "error") = message (on ERROR)
|
|
10
|
+
/// ^EmbedQueue(reqId, "queued_at") = $ZDateTime timestamp
|
|
11
|
+
///
|
|
12
|
+
/// reqId = node_id (node-keyed enqueue; re-enqueue overwrites — one entry per node)
|
|
13
|
+
/// or "txt:<n>" (free-text enqueue; always-new, never deduplicated).
|
|
14
|
+
///
|
|
15
|
+
/// Single-processor: ClaimPendingBatch is a plain ordered scan (no atomic claim state).
|
|
16
|
+
/// Statuses are written UPPERCASE; reads tolerate legacy lowercase pending/done/error.
|
|
17
|
+
/// The actual batched embedding is performed Python-side (process_embed_queue), which
|
|
18
|
+
/// claims a batch, encodes all texts in one model call, and writes results via SetResult.
|
|
19
|
+
|
|
20
|
+
/// Normalize a stored status value to UPPERCASE canonical form (back-compat).
|
|
21
|
+
ClassMethod NormStatus(s As %String) As %String [ Private ]
|
|
22
|
+
{
|
|
23
|
+
Quit $ZConvert(s, "U")
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/// Node-keyed enqueue (one entry per node id; overwrite). The text to embed defaults
|
|
27
|
+
/// to the node id; pass an explicit ``text`` to embed something else for the node.
|
|
28
|
+
ClassMethod Enqueue(nodeId As %String, embeddingConfig As %String = "", text As %String = "") As %Status
|
|
29
|
+
{
|
|
30
|
+
If text = "" { Set text = nodeId }
|
|
31
|
+
Set ^EmbedQueue(nodeId, "status") = "PENDING"
|
|
32
|
+
Set ^EmbedQueue(nodeId, "text") = text
|
|
33
|
+
Set ^EmbedQueue(nodeId, "node_id") = nodeId
|
|
34
|
+
Set ^EmbedQueue(nodeId, "result") = ""
|
|
35
|
+
Set ^EmbedQueue(nodeId, "error") = ""
|
|
36
|
+
Set ^EmbedQueue(nodeId, "config") = embeddingConfig
|
|
37
|
+
Set ^EmbedQueue(nodeId, "queued_at") = $ZDateTime($Horolog, 3)
|
|
38
|
+
Quit $$$OK
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/// nodeIds may be a JSON array string (as sent by the Python client) or a
|
|
42
|
+
/// %DynamicArray. Returns count enqueued.
|
|
43
|
+
ClassMethod BulkEnqueue(nodeIds As %String, embeddingConfig As %String = "") As %Integer
|
|
44
|
+
{
|
|
45
|
+
Set arr = nodeIds
|
|
46
|
+
If '$IsObject(arr) { Set arr = ##class(%DynamicArray).%FromJSON(nodeIds) }
|
|
47
|
+
Set count = 0
|
|
48
|
+
Set iter = arr.%GetIterator()
|
|
49
|
+
While iter.%GetNext(.idx, .nodeId) {
|
|
50
|
+
Set sc = ..Enqueue(nodeId, embeddingConfig)
|
|
51
|
+
If $$$ISOK(sc) { Set count = count + 1 }
|
|
52
|
+
}
|
|
53
|
+
Quit count
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/// Free-text enqueue (always-new entry; reqId = "txt:<seq>"). texts may be a JSON
|
|
57
|
+
/// array string (Python client) or a %DynamicArray. Returns count enqueued.
|
|
58
|
+
ClassMethod BulkEnqueueText(texts As %String, embeddingConfig As %String = "") As %Integer
|
|
59
|
+
{
|
|
60
|
+
Set arr = texts
|
|
61
|
+
If '$IsObject(arr) { Set arr = ##class(%DynamicArray).%FromJSON(texts) }
|
|
62
|
+
Set count = 0
|
|
63
|
+
Set iter = arr.%GetIterator()
|
|
64
|
+
While iter.%GetNext(.idx, .text) {
|
|
65
|
+
Continue:text=""
|
|
66
|
+
Set seq = $Increment(^EmbedQueue("$seq"))
|
|
67
|
+
Set reqId = "txt:" _ seq
|
|
68
|
+
Set ^EmbedQueue(reqId, "status") = "PENDING"
|
|
69
|
+
Set ^EmbedQueue(reqId, "text") = text
|
|
70
|
+
Set ^EmbedQueue(reqId, "node_id") = ""
|
|
71
|
+
Set ^EmbedQueue(reqId, "result") = ""
|
|
72
|
+
Set ^EmbedQueue(reqId, "error") = ""
|
|
73
|
+
Set ^EmbedQueue(reqId, "config") = embeddingConfig
|
|
74
|
+
Set ^EmbedQueue(reqId, "queued_at") = $ZDateTime($Horolog, 3)
|
|
75
|
+
Set count = count + 1
|
|
76
|
+
}
|
|
77
|
+
Quit count
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/// Return up to batchSize PENDING entries as JSON [{reqId,text,node_id}, ...].
|
|
81
|
+
/// Plain ordered scan (single-processor; no claim state).
|
|
82
|
+
ClassMethod ClaimPendingBatch(batchSize As %Integer = 100) As %String
|
|
83
|
+
{
|
|
84
|
+
Set arr = []
|
|
85
|
+
Set reqId = ""
|
|
86
|
+
Set n = 0
|
|
87
|
+
For {
|
|
88
|
+
Set reqId = $Order(^EmbedQueue(reqId))
|
|
89
|
+
Quit:reqId=""
|
|
90
|
+
Continue:reqId="$seq"
|
|
91
|
+
Set st = ..NormStatus($Get(^EmbedQueue(reqId, "status")))
|
|
92
|
+
Continue:st'="PENDING"
|
|
93
|
+
Set obj = {}
|
|
94
|
+
Set obj.reqId = reqId
|
|
95
|
+
Set obj.text = $Get(^EmbedQueue(reqId, "text"))
|
|
96
|
+
Set obj."node_id" = $Get(^EmbedQueue(reqId, "node_id"))
|
|
97
|
+
Do arr.%Push(obj)
|
|
98
|
+
Set n = n + 1
|
|
99
|
+
Quit:n>=batchSize
|
|
100
|
+
}
|
|
101
|
+
Quit arr.%ToJSON()
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/// Set an entry's result. status="DONE" → payload is the result vector string;
|
|
105
|
+
/// status="ERROR" → payload is the error message.
|
|
106
|
+
ClassMethod SetResult(reqId As %String, status As %String, payload As %String = "") As %Status
|
|
107
|
+
{
|
|
108
|
+
If '$Data(^EmbedQueue(reqId, "status")) { Quit $$$ERROR($$$GeneralError, "unknown reqId") }
|
|
109
|
+
Set up = $ZConvert(status, "U")
|
|
110
|
+
Set ^EmbedQueue(reqId, "status") = up
|
|
111
|
+
If up = "DONE" {
|
|
112
|
+
Set ^EmbedQueue(reqId, "result") = payload
|
|
113
|
+
Set ^EmbedQueue(reqId, "error") = ""
|
|
114
|
+
} ElseIf up = "ERROR" {
|
|
115
|
+
Set ^EmbedQueue(reqId, "error") = payload
|
|
116
|
+
}
|
|
117
|
+
Quit $$$OK
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
ClassMethod PendingCount() As %Integer
|
|
121
|
+
{
|
|
122
|
+
Set count = 0
|
|
123
|
+
Set reqId = ""
|
|
124
|
+
For {
|
|
125
|
+
Set reqId = $Order(^EmbedQueue(reqId))
|
|
126
|
+
Quit:reqId=""
|
|
127
|
+
Continue:reqId="$seq"
|
|
128
|
+
If ..NormStatus($Get(^EmbedQueue(reqId, "status"))) = "PENDING" { Set count = count + 1 }
|
|
129
|
+
}
|
|
130
|
+
Quit count
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
/// Remove DONE entries; leave PENDING and ERROR intact. Returns number cleared.
|
|
134
|
+
ClassMethod ClearDone() As %Integer
|
|
135
|
+
{
|
|
136
|
+
Set cleared = 0
|
|
137
|
+
Set reqId = ""
|
|
138
|
+
For {
|
|
139
|
+
Set reqId = $Order(^EmbedQueue(reqId))
|
|
140
|
+
Quit:reqId=""
|
|
141
|
+
Continue:reqId="$seq"
|
|
142
|
+
If ..NormStatus($Get(^EmbedQueue(reqId, "status"))) = "DONE" {
|
|
143
|
+
Kill ^EmbedQueue(reqId)
|
|
144
|
+
Set cleared = cleared + 1
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
Quit cleared
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
/// Legacy native-EMBEDDING() per-row processing path, retained for callers that do not
|
|
151
|
+
/// use the Python batched path. Reads the subscripted schema.
|
|
152
|
+
ClassMethod ProcessBatch(batchSize As %Integer = 100, timeout As %Integer = 30) As %String
|
|
153
|
+
{
|
|
154
|
+
Set processed = 0
|
|
155
|
+
Set errors = 0
|
|
156
|
+
Set reqId = ""
|
|
157
|
+
For {
|
|
158
|
+
Set reqId = $Order(^EmbedQueue(reqId))
|
|
159
|
+
Quit:reqId=""
|
|
160
|
+
Continue:reqId="$seq"
|
|
161
|
+
Quit:processed>=batchSize
|
|
162
|
+
Continue:..NormStatus($Get(^EmbedQueue(reqId, "status")))'="PENDING"
|
|
163
|
+
|
|
164
|
+
Set nodeId = $Get(^EmbedQueue(reqId, "node_id"))
|
|
165
|
+
Set embConfig = $Get(^EmbedQueue(reqId, "config"))
|
|
166
|
+
Set text = $Get(^EmbedQueue(reqId, "text"))
|
|
167
|
+
Try {
|
|
168
|
+
Set sql = "SELECT EMBEDDING(?, ?) FROM (SELECT 1)"
|
|
169
|
+
Set stmt = ##class(%SQL.Statement).%New()
|
|
170
|
+
Set sc = stmt.%Prepare(sql)
|
|
171
|
+
If $$$ISOK(sc) {
|
|
172
|
+
Set rs = stmt.%Execute(text, embConfig)
|
|
173
|
+
If rs.%SQLCODE = 0 && rs.%Next() {
|
|
174
|
+
Set embVal = rs.%GetData(1)
|
|
175
|
+
If (embVal '= "") && (nodeId '= "") {
|
|
176
|
+
Set insertSql = "INSERT OR REPLACE INTO Graph_KG.kg_NodeEmbeddings (id, emb) VALUES (?, TO_VECTOR(?, DOUBLE))"
|
|
177
|
+
Set stmt2 = ##class(%SQL.Statement).%New()
|
|
178
|
+
Do stmt2.%Prepare(insertSql)
|
|
179
|
+
Do stmt2.%Execute(nodeId, embVal)
|
|
180
|
+
}
|
|
181
|
+
If embVal '= "" { Set ^EmbedQueue(reqId, "result") = embVal }
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
Set ^EmbedQueue(reqId, "status") = "DONE"
|
|
185
|
+
Set processed = processed + 1
|
|
186
|
+
} Catch ex {
|
|
187
|
+
Set ^EmbedQueue(reqId, "status") = "ERROR"
|
|
188
|
+
Set ^EmbedQueue(reqId, "error") = ex.DisplayString()
|
|
189
|
+
Set errors = errors + 1
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
Set result = {"processed": (processed), "errors": (errors)}
|
|
193
|
+
Quit result.%ToJSON()
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
/// Start a background IRIS Task to process the queue.
|
|
197
|
+
ClassMethod StartBackgroundTask(batchSize As %Integer = 100) As %String
|
|
198
|
+
{
|
|
199
|
+
Set task = ##class(%SYSTEM.Task).%New()
|
|
200
|
+
Set task.Name = "IVG EmbedQueue Worker"
|
|
201
|
+
Set task.NameSpace = $ZNamespace
|
|
202
|
+
Set task.TaskClass = "Graph.KG.EmbedQueueTask"
|
|
203
|
+
Set sc = task.%Save()
|
|
204
|
+
If $$$ISERR(sc) { Quit "error: "_$System.Status.GetErrorText(sc) }
|
|
205
|
+
Set taskId = task.%Id()
|
|
206
|
+
Do ##class(%SYSTEM.Task).RunNow(taskId)
|
|
207
|
+
Quit taskId
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
}
|
|
@@ -52,6 +52,10 @@ class EmbeddingsMixin:
|
|
|
52
52
|
_logging.getLogger("safetensors").setLevel(_logging.ERROR)
|
|
53
53
|
except Exception:
|
|
54
54
|
pass
|
|
55
|
+
# Local import avoids a circular import (engine.py imports this
|
|
56
|
+
# mixin at module load); function-local matches the pattern used
|
|
57
|
+
# elsewhere in this file (embed_selector, get_schema_prefix).
|
|
58
|
+
from iris_vector_graph.engine import _load_sentence_transformer, _is_sentence_transformer
|
|
55
59
|
self.embedder = _load_sentence_transformer("all-MiniLM-L6-v2")
|
|
56
60
|
logger.info("Auto-initialized SentenceTransformer('all-MiniLM-L6-v2')")
|
|
57
61
|
except ImportError:
|
|
@@ -272,6 +276,7 @@ class EmbeddingsMixin:
|
|
|
272
276
|
) -> dict:
|
|
273
277
|
from iris_vector_graph.embed_selector import EmbedSelector, build_node_where
|
|
274
278
|
from iris_vector_graph.cypher import get_schema_prefix
|
|
279
|
+
from iris_vector_graph.engine import _load_sentence_transformer, _is_sentence_transformer
|
|
275
280
|
|
|
276
281
|
sel = EmbedSelector(
|
|
277
282
|
label=label,
|
|
@@ -436,6 +441,7 @@ class EmbeddingsMixin:
|
|
|
436
441
|
) -> dict:
|
|
437
442
|
from iris_vector_graph.embed_selector import EmbedSelector, build_edge_where
|
|
438
443
|
from iris_vector_graph.cypher import get_schema_prefix
|
|
444
|
+
from iris_vector_graph.engine import _load_sentence_transformer, _is_sentence_transformer
|
|
439
445
|
|
|
440
446
|
sel = EmbedSelector(
|
|
441
447
|
predicate=predicate,
|
|
@@ -655,45 +661,171 @@ class EmbeddingsMixin:
|
|
|
655
661
|
|
|
656
662
|
def enqueue_for_embedding(
|
|
657
663
|
self,
|
|
658
|
-
node_ids: List[str],
|
|
664
|
+
node_ids: Optional[List[str]] = None,
|
|
659
665
|
embedding_config: str = "",
|
|
666
|
+
texts: Optional[List[str]] = None,
|
|
660
667
|
) -> int:
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
668
|
+
"""Enqueue embedding work onto the async queue. Returns the number enqueued.
|
|
669
|
+
|
|
670
|
+
Two modes (spec 199):
|
|
671
|
+
- ``node_ids``: node-keyed entries (re-enqueue overwrites — one entry per
|
|
672
|
+
node; backward compatible with the prior signature).
|
|
673
|
+
- ``texts``: free-text entries (always-new; never deduplicated).
|
|
674
|
+
Both may be supplied; an empty/None pair returns 0. Degrades gracefully
|
|
675
|
+
(returns 0 + warns) when the queue backend is unavailable.
|
|
676
|
+
"""
|
|
677
|
+
from iris_vector_graph.schema import _call_classmethod
|
|
678
|
+
import json as _json
|
|
679
|
+
total = 0
|
|
680
|
+
if node_ids:
|
|
681
|
+
try:
|
|
682
|
+
ids_json = _json.dumps(node_ids)
|
|
683
|
+
result = _call_classmethod(
|
|
684
|
+
self.conn, "Graph.KG.EmbedQueue", "BulkEnqueue",
|
|
685
|
+
ids_json, embedding_config,
|
|
686
|
+
)
|
|
687
|
+
total += int(str(result))
|
|
688
|
+
except Exception as e:
|
|
689
|
+
logger.warning("enqueue_for_embedding (node_ids) failed: %s", e)
|
|
690
|
+
if texts:
|
|
691
|
+
try:
|
|
692
|
+
texts_json = _json.dumps(texts)
|
|
693
|
+
result = _call_classmethod(
|
|
694
|
+
self.conn, "Graph.KG.EmbedQueue", "BulkEnqueueText",
|
|
695
|
+
texts_json, embedding_config,
|
|
696
|
+
)
|
|
697
|
+
total += int(str(result))
|
|
698
|
+
except Exception as e:
|
|
699
|
+
logger.warning("enqueue_for_embedding (texts) failed: %s", e)
|
|
700
|
+
return total
|
|
672
701
|
|
|
673
702
|
|
|
674
703
|
def process_embed_queue(self, batch_size: int = 100) -> dict:
|
|
704
|
+
"""Process up to ``batch_size`` PENDING queue entries (spec 199).
|
|
705
|
+
|
|
706
|
+
Claims a batch of pending entries, embeds ALL of their texts in a SINGLE
|
|
707
|
+
embedder call (the batched performance win), writes each result back to the
|
|
708
|
+
queue entry, and — for node-keyed entries — upserts the vector into
|
|
709
|
+
``kg_NodeEmbeddings`` so semantic search finds it. A per-entry embedding
|
|
710
|
+
failure marks only that entry ERROR; the rest of the batch still completes.
|
|
711
|
+
Returns ``{"processed": int, "errors": int}``. Degrades gracefully when the
|
|
712
|
+
backend is unavailable.
|
|
713
|
+
"""
|
|
714
|
+
import json as _json
|
|
715
|
+
from iris_vector_graph.schema import _call_classmethod
|
|
675
716
|
try:
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
"Graph.KG.EmbedQueue", "ProcessBatch",
|
|
679
|
-
batch_size, 30,
|
|
717
|
+
claim_json = str(_call_classmethod(
|
|
718
|
+
self.conn, "Graph.KG.EmbedQueue", "ClaimPendingBatch", batch_size,
|
|
680
719
|
))
|
|
681
|
-
|
|
720
|
+
entries = _json.loads(claim_json) if claim_json else []
|
|
682
721
|
except Exception as e:
|
|
683
|
-
logger.warning("process_embed_queue failed: %s", e)
|
|
722
|
+
logger.warning("process_embed_queue claim failed: %s", e)
|
|
684
723
|
return {"processed": 0, "errors": 0}
|
|
685
724
|
|
|
725
|
+
if not entries:
|
|
726
|
+
return {"processed": 0, "errors": 0}
|
|
727
|
+
|
|
728
|
+
texts = [e.get("text", "") for e in entries]
|
|
729
|
+
# Single batched embedder call (SC-002). If the whole call fails, fall back to
|
|
730
|
+
# per-entry so one poison text does not fail the entire batch (FR-007).
|
|
731
|
+
vectors = None
|
|
732
|
+
try:
|
|
733
|
+
vectors = self._encode_batch(texts)
|
|
734
|
+
except Exception as e:
|
|
735
|
+
logger.warning("batch encode failed, falling back per-entry: %s", e)
|
|
736
|
+
|
|
737
|
+
processed = 0
|
|
738
|
+
errors = 0
|
|
739
|
+
for idx, entry in enumerate(entries):
|
|
740
|
+
req_id = entry.get("reqId", "")
|
|
741
|
+
node_id = entry.get("node_id", "") or ""
|
|
742
|
+
try:
|
|
743
|
+
if vectors is not None:
|
|
744
|
+
vec = vectors[idx]
|
|
745
|
+
else:
|
|
746
|
+
vec = self._encode_batch([entry.get("text", "")])[0]
|
|
747
|
+
vec_str = ",".join(str(float(x)) for x in vec)
|
|
748
|
+
_call_classmethod(
|
|
749
|
+
self.conn, "Graph.KG.EmbedQueue", "SetResult",
|
|
750
|
+
req_id, "DONE", vec_str,
|
|
751
|
+
)
|
|
752
|
+
if node_id:
|
|
753
|
+
self._upsert_node_embedding(node_id, vec)
|
|
754
|
+
processed += 1
|
|
755
|
+
except Exception as e:
|
|
756
|
+
errors += 1
|
|
757
|
+
try:
|
|
758
|
+
_call_classmethod(
|
|
759
|
+
self.conn, "Graph.KG.EmbedQueue", "SetResult",
|
|
760
|
+
req_id, "ERROR", str(e)[:500],
|
|
761
|
+
)
|
|
762
|
+
except Exception as se:
|
|
763
|
+
logger.warning("SetResult ERROR failed for %s: %s", req_id, se)
|
|
764
|
+
return {"processed": processed, "errors": errors}
|
|
765
|
+
|
|
766
|
+
def _encode_batch(self, texts: List[str]) -> list:
|
|
767
|
+
"""Embed a list of texts in one embedder call, resolving the engine embedder
|
|
768
|
+
(same auto-init path used by embed_text). Returns a list of vectors."""
|
|
769
|
+
if not self.embedder:
|
|
770
|
+
# Reuse embed_text's auto-init by embedding the first item, then encode all.
|
|
771
|
+
# embed_text resolves/sets self.embedder (or raises a clear RuntimeError).
|
|
772
|
+
if texts:
|
|
773
|
+
self.embed_text(texts[0])
|
|
774
|
+
embedder = self.embedder
|
|
775
|
+
if hasattr(embedder, "encode"):
|
|
776
|
+
result = embedder.encode(texts)
|
|
777
|
+
return [r.tolist() if hasattr(r, "tolist") else list(r) for r in result]
|
|
778
|
+
if hasattr(embedder, "embed"):
|
|
779
|
+
return [embedder.embed(t) for t in texts]
|
|
780
|
+
if callable(embedder):
|
|
781
|
+
return [embedder(t) for t in texts]
|
|
782
|
+
raise TypeError(f"Embedder {type(embedder)} has no encode/embed and is not callable")
|
|
783
|
+
|
|
784
|
+
def _upsert_node_embedding(self, node_id: str, vec) -> None:
|
|
785
|
+
"""Write a node's embedding into kg_NodeEmbeddings so vector search finds it."""
|
|
786
|
+
emb_str = ",".join(str(float(x)) for x in vec)
|
|
787
|
+
cursor = self.conn.cursor()
|
|
788
|
+
try:
|
|
789
|
+
cursor.execute(
|
|
790
|
+
f"DELETE FROM {_table('kg_NodeEmbeddings')} WHERE id=?", [node_id]
|
|
791
|
+
)
|
|
792
|
+
cursor.execute(
|
|
793
|
+
f"INSERT INTO {_table('kg_NodeEmbeddings')} (id, emb) "
|
|
794
|
+
f"VALUES (?, TO_VECTOR('{emb_str}', {self.vector_dtype}))",
|
|
795
|
+
[node_id],
|
|
796
|
+
)
|
|
797
|
+
self.conn.commit()
|
|
798
|
+
finally:
|
|
799
|
+
try:
|
|
800
|
+
cursor.close()
|
|
801
|
+
except Exception:
|
|
802
|
+
pass
|
|
803
|
+
|
|
804
|
+
def clear_done(self) -> int:
|
|
805
|
+
"""Remove completed (DONE) queue entries; leave PENDING/ERROR intact (spec 199,
|
|
806
|
+
FR-009). Returns the number cleared; 0 when the backend is unavailable."""
|
|
807
|
+
from iris_vector_graph.schema import _call_classmethod
|
|
808
|
+
try:
|
|
809
|
+
return int(str(_call_classmethod(
|
|
810
|
+
self.conn, "Graph.KG.EmbedQueue", "ClearDone",
|
|
811
|
+
)))
|
|
812
|
+
except Exception as e:
|
|
813
|
+
logger.warning("clear_done failed: %s", e)
|
|
814
|
+
return 0
|
|
815
|
+
|
|
686
816
|
|
|
687
817
|
def embed_queue_pending(self) -> int:
|
|
688
818
|
try:
|
|
689
|
-
|
|
819
|
+
from iris_vector_graph.schema import _call_classmethod
|
|
820
|
+
return int(str(_call_classmethod(self.conn, "Graph.KG.EmbedQueue", "PendingCount")))
|
|
690
821
|
except Exception:
|
|
691
822
|
return 0
|
|
692
823
|
|
|
693
824
|
|
|
694
825
|
def start_background_embedding(self, batch_size: int = 100) -> str:
|
|
695
826
|
try:
|
|
696
|
-
|
|
827
|
+
from iris_vector_graph.schema import _call_classmethod
|
|
828
|
+
return str(_call_classmethod(self.conn, "Graph.KG.EmbedQueue", "StartBackgroundTask", batch_size))
|
|
697
829
|
except Exception as e:
|
|
698
830
|
logger.warning("start_background_embedding failed: %s", e)
|
|
699
831
|
return ""
|
|
@@ -138,14 +138,17 @@ def _make_engine() -> IRISGraphEngine:
|
|
|
138
138
|
namespace = os.environ.get("IRIS_NAMESPACE", "USER")
|
|
139
139
|
username = os.environ.get("IRIS_USERNAME", "_SYSTEM")
|
|
140
140
|
password = os.environ.get("IRIS_PASSWORD", "SYS")
|
|
141
|
+
# Standard seam: the iris wrapper's dbapi.connect (base dependency). The
|
|
142
|
+
# fallback also routes through dbapi.connect since the wrapper's top-level
|
|
143
|
+
# `iris` always provides it.
|
|
141
144
|
if _iris_wrapper and hasattr(_iris_wrapper, "dbapi"):
|
|
142
145
|
conn = _iris_wrapper.dbapi.connect(
|
|
143
146
|
hostname=host, port=port, namespace=namespace,
|
|
144
147
|
username=username, password=password,
|
|
145
148
|
)
|
|
146
149
|
else:
|
|
147
|
-
conn = iris.connect(hostname=host, port=port, namespace=namespace,
|
|
148
|
-
|
|
150
|
+
conn = iris.dbapi.connect(hostname=host, port=port, namespace=namespace,
|
|
151
|
+
username=username, password=password)
|
|
149
152
|
return IRISGraphEngine(conn)
|
|
150
153
|
|
|
151
154
|
if _state.startswith("embedded") and _iris_wrapper and hasattr(_iris_wrapper, "dbapi"):
|
|
@@ -170,7 +170,9 @@ class IRISGraphEngine(RdfExportMixin, ShaclMixin, ProvMixin, TemporalMixin, Snap
|
|
|
170
170
|
) -> "IRISGraphEngine":
|
|
171
171
|
import iris as _iris
|
|
172
172
|
conn_params = dict(hostname=hostname, port=port, namespace=namespace, username=username, password=password)
|
|
173
|
-
|
|
173
|
+
# Standard connection seam: iris-embedded-python-wrapper's dbapi.connect
|
|
174
|
+
# (drop-in for iris.connect with DB-API exception semantics).
|
|
175
|
+
conn = _iris.dbapi.connect(**conn_params)
|
|
174
176
|
engine = cls(conn, embedding_dimension=embedding_dimension, **kwargs)
|
|
175
177
|
engine._connection_params = conn_params
|
|
176
178
|
return engine
|
|
@@ -216,7 +218,7 @@ class IRISGraphEngine(RdfExportMixin, ShaclMixin, ProvMixin, TemporalMixin, Snap
|
|
|
216
218
|
if any(x in err_str for x in ("epipe", "broken pipe", "connection reset", "closed")):
|
|
217
219
|
if self._connection_params:
|
|
218
220
|
import iris as _iris
|
|
219
|
-
self.conn = _iris.connect(**self._connection_params)
|
|
221
|
+
self.conn = _iris.dbapi.connect(**self._connection_params)
|
|
220
222
|
logger.info("IRIS connection re-established after EPIPE")
|
|
221
223
|
else:
|
|
222
224
|
raise RuntimeError(
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "iris-vector-graph"
|
|
7
|
-
version = "2.
|
|
7
|
+
version = "2.4.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"
|
|
@@ -40,6 +40,12 @@ requires-python = ">=3.10"
|
|
|
40
40
|
# Core dependencies
|
|
41
41
|
dependencies = [
|
|
42
42
|
"intersystems-iris>=1.0.0",
|
|
43
|
+
# iris-embedded-python-wrapper provides a unified top-level `iris` module that
|
|
44
|
+
# works both as an external SDK client (iris.dbapi.connect / iris.connect) and
|
|
45
|
+
# inside IRIS embedded Python (iris.sql / iris.gref / runtime.state). It is the
|
|
46
|
+
# standard connection seam — base dependency so `import iris` always resolves to
|
|
47
|
+
# the superset. See iris_vector_graph/embedded.py for the embedded context.
|
|
48
|
+
"iris-embedded-python-wrapper>=0.5.20",
|
|
43
49
|
]
|
|
44
50
|
|
|
45
51
|
[project.optional-dependencies]
|
|
@@ -216,7 +222,8 @@ markers = [
|
|
|
216
222
|
"perf: marks tests as opt-in performance benchmarks (run with '-m perf')",
|
|
217
223
|
"requires_iris: marks tests that require IRIS database connection",
|
|
218
224
|
"requires_database: marks tests that require database connection (alias for requires_iris)",
|
|
219
|
-
"e2e: marks tests as end-to-end system tests (all query engines)"
|
|
225
|
+
"e2e: marks tests as end-to-end system tests (all query engines)",
|
|
226
|
+
"requires_clean_isolation: marks tests needing an unpolluted database (run in isolation)"
|
|
220
227
|
]
|
|
221
228
|
|
|
222
229
|
[tool.coverage.run]
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
"""E2E tests for the enhanced embedding queue (spec 199) against a live IRIS container.
|
|
2
|
+
|
|
3
|
+
Models the real consumer (mindwalk) flow: create nodes → enqueue text → process in
|
|
4
|
+
batches (one embedder call per batch) → results land → vector search finds them.
|
|
5
|
+
|
|
6
|
+
Constitution IV: live-container E2E, non-optional. SKIP_IRIS_TESTS defaults to "false";
|
|
7
|
+
no hardcoded ports (uses the `engine` fixture from tests/integration/conftest.py).
|
|
8
|
+
|
|
9
|
+
A deterministic stand-in embedder is used so the test does not depend on
|
|
10
|
+
sentence-transformers being installed, while still exercising the REAL queue → encode →
|
|
11
|
+
SetResult → kg_NodeEmbeddings → vector search path (the path no unit mock can fool).
|
|
12
|
+
"""
|
|
13
|
+
import os
|
|
14
|
+
import uuid
|
|
15
|
+
import pytest
|
|
16
|
+
|
|
17
|
+
SKIP_IRIS_TESTS = os.environ.get("SKIP_IRIS_TESTS", "false").lower() == "true"
|
|
18
|
+
|
|
19
|
+
pytestmark = pytest.mark.skipif(SKIP_IRIS_TESTS, reason="SKIP_IRIS_TESTS=true")
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def _deterministic_embedder(dim=384):
|
|
23
|
+
"""A stable stand-in: hashes text into a fixed-dim vector. Same text → same vector,
|
|
24
|
+
so vector search is meaningful. `encode([...])` returns one vector per input."""
|
|
25
|
+
import hashlib
|
|
26
|
+
|
|
27
|
+
def _vec(text):
|
|
28
|
+
h = hashlib.sha256(text.encode("utf-8")).digest()
|
|
29
|
+
# tile hash bytes to dim floats in [0,1)
|
|
30
|
+
return [(h[i % len(h)] / 255.0) for i in range(dim)]
|
|
31
|
+
|
|
32
|
+
class _Emb:
|
|
33
|
+
def encode(self, texts):
|
|
34
|
+
if isinstance(texts, str):
|
|
35
|
+
return _vec(texts)
|
|
36
|
+
return [_vec(t) for t in texts]
|
|
37
|
+
|
|
38
|
+
return _Emb()
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
def _unique(prefix):
|
|
42
|
+
return f"{prefix}:{uuid.uuid4().hex[:8]}"
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
def _make_nodes(engine, node_ids):
|
|
46
|
+
"""Create nodes so node-keyed embeddings have a home."""
|
|
47
|
+
for nid in node_ids:
|
|
48
|
+
try:
|
|
49
|
+
engine.create_node(nid)
|
|
50
|
+
except Exception:
|
|
51
|
+
pass
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
class TestEmbedQueueE2E:
|
|
55
|
+
# ----- US1: enqueue → batched process → search (T016, the MVP gate) -----
|
|
56
|
+
def test_enqueue_process_search_roundtrip(self, engine):
|
|
57
|
+
engine.embedder = _deterministic_embedder(384)
|
|
58
|
+
ids = [_unique("eqn1"), _unique("eqn2"), _unique("eqn3")]
|
|
59
|
+
_make_nodes(engine, ids)
|
|
60
|
+
|
|
61
|
+
n = engine.enqueue_for_embedding(node_ids=ids)
|
|
62
|
+
assert n == len(ids)
|
|
63
|
+
|
|
64
|
+
# process in batches until drained
|
|
65
|
+
total_processed = 0
|
|
66
|
+
guard = 0
|
|
67
|
+
while engine.embed_queue_pending() > 0 and guard < 20:
|
|
68
|
+
rep = engine.process_embed_queue(batch_size=2)
|
|
69
|
+
total_processed += rep["processed"]
|
|
70
|
+
assert rep["errors"] == 0
|
|
71
|
+
guard += 1
|
|
72
|
+
assert total_processed >= len(ids)
|
|
73
|
+
|
|
74
|
+
# embeddings landed in kg_NodeEmbeddings
|
|
75
|
+
cur = engine.conn.cursor()
|
|
76
|
+
placeholders = ",".join(["?"] * len(ids))
|
|
77
|
+
cur.execute(
|
|
78
|
+
f"SELECT COUNT(*) FROM Graph_KG.kg_NodeEmbeddings WHERE id IN ({placeholders})",
|
|
79
|
+
ids,
|
|
80
|
+
)
|
|
81
|
+
assert int(cur.fetchone()[0]) == len(ids)
|
|
82
|
+
|
|
83
|
+
def test_process_respects_batch_size_live(self, engine):
|
|
84
|
+
engine.embedder = _deterministic_embedder(384)
|
|
85
|
+
ids = [_unique("eqb") for _ in range(5)]
|
|
86
|
+
_make_nodes(engine, ids)
|
|
87
|
+
engine.enqueue_for_embedding(node_ids=ids)
|
|
88
|
+
rep = engine.process_embed_queue(batch_size=2)
|
|
89
|
+
assert rep["processed"] <= 2 # at most B per call
|
|
90
|
+
assert engine.embed_queue_pending() >= 1 # remainder still pending
|
|
91
|
+
|
|
92
|
+
# ----- US2: pending count + clear_done (T021) -----
|
|
93
|
+
def test_pending_count_and_clear_done(self, engine):
|
|
94
|
+
# Shared ^EmbedQueue global → use deltas, not absolute counts (other tests may
|
|
95
|
+
# leave entries). Clear DONE up front so our run starts from a known floor.
|
|
96
|
+
engine.embedder = _deterministic_embedder(384)
|
|
97
|
+
engine.clear_done()
|
|
98
|
+
ids = [_unique("eqm") for _ in range(3)]
|
|
99
|
+
_make_nodes(engine, ids)
|
|
100
|
+
before = engine.embed_queue_pending()
|
|
101
|
+
engine.enqueue_for_embedding(node_ids=ids)
|
|
102
|
+
assert engine.embed_queue_pending() >= before + 3 # our 3 are pending now
|
|
103
|
+
|
|
104
|
+
# process until our 3 are done (pending returns to <= baseline)
|
|
105
|
+
guard = 0
|
|
106
|
+
while engine.embed_queue_pending() > before and guard < 30:
|
|
107
|
+
engine.process_embed_queue(batch_size=10)
|
|
108
|
+
guard += 1
|
|
109
|
+
assert engine.embed_queue_pending() <= before # our entries no longer pending
|
|
110
|
+
|
|
111
|
+
cleared = engine.clear_done()
|
|
112
|
+
assert cleared >= 3 # at least our 3 DONE entries removed
|
|
113
|
+
|
|
114
|
+
# ----- US3: per-entry failure isolation (T025) -----
|
|
115
|
+
def test_one_failure_does_not_sink_batch(self, engine):
|
|
116
|
+
# An embedder that raises on a specific poison text, succeeds otherwise.
|
|
117
|
+
base = _deterministic_embedder(384)
|
|
118
|
+
|
|
119
|
+
class _Poison:
|
|
120
|
+
def encode(self, texts):
|
|
121
|
+
if isinstance(texts, str):
|
|
122
|
+
if texts == "POISON":
|
|
123
|
+
raise ValueError("cannot embed poison")
|
|
124
|
+
return base.encode(texts)
|
|
125
|
+
# batch: raise so the engine falls back per-entry
|
|
126
|
+
if any(t == "POISON" for t in texts):
|
|
127
|
+
raise ValueError("poison in batch")
|
|
128
|
+
return base.encode(texts)
|
|
129
|
+
|
|
130
|
+
engine.embedder = _Poison()
|
|
131
|
+
good1, bad, good2 = _unique("eqg1"), _unique("eqbad"), _unique("eqg2")
|
|
132
|
+
_make_nodes(engine, [good1, bad, good2])
|
|
133
|
+
# enqueue node-keyed with controlled text by enqueuing free text won't attach to
|
|
134
|
+
# node; instead set node display so the queue text differs. Simplest: enqueue
|
|
135
|
+
# free text where one is POISON, assert per-entry isolation via the report.
|
|
136
|
+
engine.enqueue_for_embedding(texts=["fine one", "POISON", "fine two"])
|
|
137
|
+
|
|
138
|
+
rep = {"processed": 0, "errors": 0}
|
|
139
|
+
guard = 0
|
|
140
|
+
while engine.embed_queue_pending() > 0 and guard < 20:
|
|
141
|
+
r = engine.process_embed_queue(batch_size=10)
|
|
142
|
+
rep["processed"] += r["processed"]
|
|
143
|
+
rep["errors"] += r["errors"]
|
|
144
|
+
guard += 1
|
|
145
|
+
assert rep["errors"] >= 1 # the poison entry failed
|
|
146
|
+
assert rep["processed"] >= 2 # the two good entries succeeded
|