iris-vector-graph 2.1.1__tar.gz → 2.2.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/.gitignore +1 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/PKG-INFO +2 -1
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/__init__.py +3 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/_engine/query.py +13 -11
- iris_vector_graph-2.2.0/iris_vector_graph/api_auth.py +133 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/cypher/translator.py +22 -12
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/cypher_api.py +4 -12
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/stores/iris_sql_store.py +1 -1
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/pyproject.toml +10 -2
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/conftest.py +32 -24
- iris_vector_graph-2.2.0/tests/integration/test_sql_parameterization.py +80 -0
- iris_vector_graph-2.2.0/tests/unit/test_api_security.py +421 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_bfs_arno.py +4 -3
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_cypher_benchmark.py +1 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_cypher_posos_bugs.py +4 -4
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_cypher_translator.py +1 -1
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_retrieve_and_vector_distance.py +7 -2
- iris_vector_graph-2.2.0/tests/unit/test_sdk_coverage.py +252 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/LICENSE +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/README.md +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/examples/demo_biomedical.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/examples/demo_fraud_detection.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/examples/demo_fraud_detection_sql.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/examples/demo_utils.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/examples/demo_working_system.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/examples/domains/__init__.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/examples/domains/biomedical/__init__.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/examples/domains/biomedical/loaders.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/examples/domains/biomedical/resolver.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/examples/domains/biomedical/types.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/examples/domains/biomedical_legacy/__init__.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/examples/domains/biomedical_legacy/biomedical_engine.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/examples/domains/biomedical_legacy/biomedical_schema.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/examples/domains/biomedical_legacy/legacy_wrapper.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/examples/domains/fraud/__init__.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/examples/domains/fraud/loaders.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/examples/domains/fraud/resolver.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/examples/domains/fraud/types.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/examples/graphQL.http +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/examples/hybrid_vector_graph_query.cypher +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/examples/rest.http +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_src/src/Graph/KG/Algorithms.cls +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_src/src/Graph/KG/ArnoAccel.cls +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_src/src/Graph/KG/BM25Index.cls +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_src/src/Graph/KG/BenchFormat.cls +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_src/src/Graph/KG/BenchSeeder.cls +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_src/src/Graph/KG/Benchmark.cls +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_src/src/Graph/KG/Centrality.cls +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_src/src/Graph/KG/Communities.cls +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_src/src/Graph/KG/Edge.cls +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_src/src/Graph/KG/EdgeScan.cls +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_src/src/Graph/KG/EmbedQueue.cls +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_src/src/Graph/KG/GraphIndex.cls +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_src/src/Graph/KG/IVFIndex.cls +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_src/src/Graph/KG/Loader.cls +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_src/src/Graph/KG/MCPService.cls +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_src/src/Graph/KG/MCPToolSet.cls +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_src/src/Graph/KG/MCPTools.cls +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_src/src/Graph/KG/Meta.cls +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_src/src/Graph/KG/NKGAccel.cls +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_src/src/Graph/KG/NKGAccelAdjacency.cls +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_src/src/Graph/KG/NKGAccelCentrality.cls +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_src/src/Graph/KG/NKGAccelLoader.cls +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_src/src/Graph/KG/NKGAccelTraversal.cls +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_src/src/Graph/KG/PLAIDSearch.cls +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_src/src/Graph/KG/PageRank.cls +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_src/src/Graph/KG/PyOps.cls +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_src/src/Graph/KG/Service.cls +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_src/src/Graph/KG/Snapshot.cls +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_src/src/Graph/KG/Subgraph.cls +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_src/src/Graph/KG/TemporalIndex.cls +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_src/src/Graph/KG/TestEdge.cls +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_src/src/Graph/KG/Traversal.cls +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_src/src/Graph/KG/TraversalBFS.cls +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_src/src/Graph/KG/TraversalBuild.cls +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_src/src/Graph/KG/TraversalKHop.cls +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_src/src/Graph/KG/TraversalPaths.cls +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_src/src/Graph/KG/VecIndex.cls +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_src/src/IVG/CypherEngine.cls +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_src/src/IVG/Percentile.cls +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_src/src/PageRankEmbedded.cls +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_src/src/User.Exec.cls +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_src/src/iris/vector/graph/GraphOperators.cls +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/_engine/__init__.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/_engine/admin.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/_engine/algorithms.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/_engine/embeddings.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/_engine/fhir.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/_engine/nodes_edges.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/_engine/query.py,cover +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/_engine/schema.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/_engine/snapshot.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/_engine/snapshot.py,cover +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/_engine/temporal.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/_engine/vector.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/_validate.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/bolt_server.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/0-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/1-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/10-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/11-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/12-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/13-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/14-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/15-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/16-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/17-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/18-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/19-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/20-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/21-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/22-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/23-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/24-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/25-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/26-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/27-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/28-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/29-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/30-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/31-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/32-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/33-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/34-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/35-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/36-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/37-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/38-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/39-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/40-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/41-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/42-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/43-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/44-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/45-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/46-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/47-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/48-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/49-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/50-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/51-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/52-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/53-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/54-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/55-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/56-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/57-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/58-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/59-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/6-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/60-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/61-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/62-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/63-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/64-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/65-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/66-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/67-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/68-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/69-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/7-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/70-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/71-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/72-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/73-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/74-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/75-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/8-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/9-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/app-b124e26129aa436b26fe.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/filter-a7c44e713bf19d31f6b2849160b1bba8.svg +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Bold.eot +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Bold.ttf +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Bold.woff +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Bold.woff2 +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Light.eot +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Light.ttf +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Light.woff +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Light.woff2 +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Medium.eot +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Medium.ttf +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Medium.woff +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Medium.woff2 +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Regular.eot +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Regular.ttf +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Regular.woff +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/fonts/FiraCode-Regular.woff2 +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/fonts/OpenSans-Bold.ttf +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/fonts/OpenSans-BoldItalic.ttf +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/fonts/OpenSans-ExtraBold.ttf +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/fonts/OpenSans-ExtraBoldItalic.ttf +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/fonts/OpenSans-Italic.ttf +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/fonts/OpenSans-Light.ttf +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/fonts/OpenSans-LightItalic.ttf +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/fonts/OpenSans-Regular.ttf +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/fonts/OpenSans-Semibold.ttf +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/fonts/OpenSans-SemiboldItalic.ttf +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/fonts/codicon.ttf +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/fonts/filter.svg +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/fonts/fontawesome-webfont.eot +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/fonts/fontawesome-webfont.svg +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/fonts/fontawesome-webfont.ttf +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/fonts/fontawesome-webfont.woff +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/fonts/fontawesome-webfont.woff2 +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/fonts/group-by.svg +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/fonts/neo4j-world.eot +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/fonts/neo4j-world.svg +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/fonts/neo4j-world.ttf +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/fonts/neo4j-world.woff +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/fonts/sort.svg +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/fonts/sort1.svg +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/fonts/sort2.svg +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/fonts/streamline.eot +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/fonts/streamline.svg +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/fonts/streamline.ttf +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/fonts/streamline.woff +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/group-by-89c6aaa756bc3548cc6ab3d2be4d2862.svg +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/images/Favorites.mp4 +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/images/Keystrokes.mp4 +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/images/ProjectFiles.mp4 +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/images/ReusableFrame.mp4 +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/images/SidebarDB_Iinfo.png +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/images/Stream.png +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/images/aura-logo-inverted.svg +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/images/aura-logo.svg +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/images/books.png +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/images/clusters.svg +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/images/community.jpg +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/images/device-icons/android-icon-144x144.png +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/images/device-icons/android-icon-192x192.png +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/images/device-icons/android-icon-36x36.png +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/images/device-icons/android-icon-48x48.png +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/images/device-icons/android-icon-72x72.png +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/images/device-icons/android-icon-96x96.png +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-114x114.png +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-120x120.png +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-144x144.png +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-152x152.png +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-180x180.png +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-57x57.png +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-60x60.png +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-72x72.png +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-76x76.png +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon-precomposed.png +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/images/device-icons/apple-icon.png +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/images/device-icons/browserconfig.xml +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/images/device-icons/favicon-16x16.png +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/images/device-icons/favicon-32x32.png +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/images/device-icons/favicon-96x96.png +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/images/device-icons/favicon.ico +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/images/device-icons/manifest.json +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/images/device-icons/ms-icon-144x144.png +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/images/device-icons/ms-icon-150x150.png +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/images/device-icons/ms-icon-310x310.png +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/images/device-icons/ms-icon-70x70.png +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/images/device-icons/neo4j-browser-canary.svg +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/images/device-icons/neo4j-browser.svg +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/images/labeled_node.png +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/images/more_nodes.png +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/images/neo4j-favicon.ico +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/images/neo4j-logo-inverted.svg +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/images/neo4j-logo.svg +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/images/northwind/customer-orders.png +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/images/northwind/order-graph.png +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/images/northwind/product-category-supplier.png +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/images/northwind/product-graph.png +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/images/one_node.png +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/images/query-plan-operator-cost.svg +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/images/query-plan-operator-details.svg +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/images/query-plan-operator-rows.svg +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/images/query-plan.svg +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/images/rel-props.png +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/images/relationships.png +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/images/screen_code_frame.png +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/images/screen_cypher_warn.png +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/images/screen_editor.png +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/images/screen_sidebar.png +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/images/screen_stream.png +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/sort-8d6f482c21de572ceeb5ac93623e6c97.svg +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/sort1-d2dc515571213fc0ca99b0341b88e413.svg +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/assets/sort2-31050964e7eb2042325f7bcbba3d58ad.svg +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/bolt-worker-dfa551eb0861cc080843.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/cypher-editor-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/editor-455af92e7e1dc39fdbc8060f6680ab32.worker.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/index.html +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/manifest.json +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/preview/assets/CoseBilkentLayout.worker-FEt6e_rV.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/preview/assets/HierarchicalLayout.worker-O6WHYssL.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/preview/assets/asciidoc.8O6YIVRy.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/preview/assets/auto-track.BlKugDvg.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/preview/assets/bash.CLAyaf9k.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/preview/assets/c.l4fEI10z.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/preview/assets/connect-icon-Br2hQy_e.svg +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/preview/assets/csharp.ChqrQYCS.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/preview/assets/css-extras.Bi-4v17d.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/preview/assets/css.B1LHiudN.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/preview/assets/cypher-editor-auto-completions.gif +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/preview/assets/cypher-editor-inline-help.png +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/preview/assets/cypher-editor-linting.png +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/preview/assets/cypher-editor-syntax-highlighting.png +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/preview/assets/cypher-reference.gif +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/preview/assets/cypher.C3qdyJ5B.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/preview/assets/docker.CF7EZT1T.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/preview/assets/fira-code-400-regular-normal-BzypJxJk.woff2 +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/preview/assets/fira-code-500-medium-normal-CRWzqcWa.woff2 +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/preview/assets/fira-code-700-bold-normal-hUmNV4O0.woff2 +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/preview/assets/go.FsJyBHVG.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/preview/assets/graphql.BlTzkzAJ.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/preview/assets/history-quick-search.gif +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/preview/assets/index-CY0cZcsW.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/preview/assets/index-H7L207gH.css +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/preview/assets/index.BpRu7Js3.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/preview/assets/index.C74acnU7.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/preview/assets/index.CHatcJcU.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/preview/assets/index.D6ZMQedT.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/preview/assets/index.DPZla5MT.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/preview/assets/index.dzIUqrzq.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/preview/assets/index.leyiHvaQ.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/preview/assets/index.qJ6VE118.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/preview/assets/index.umd.B9yhfa5Y.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/preview/assets/is-plan-event-enabled.DeNtQvA5.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/preview/assets/java.BBXwBh9f.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/preview/assets/java.CQ1iJ0-D.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/preview/assets/javadoc.UnquSOIj.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/preview/assets/javascript.CYTqTa0W.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/preview/assets/json.BIkJg-Cj.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/preview/assets/jsx.Cy_hP1z6.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/preview/assets/kotlin.D_6l0VkM.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/preview/assets/lintWorker-QNEp56W3.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/preview/assets/logo-aura-white-DCfUnkCN.svg +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/preview/assets/movie-model.png +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/preview/assets/movies-active-B2SzHIc1.svg +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/preview/assets/neo4j-logo-active-CieUxroh.svg +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/preview/assets/patterned-banner-background-C_nO-Yn8.svg +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/preview/assets/php.BKb6XVba.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/preview/assets/plan-graph-worker-s17nF19Q.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/preview/assets/public-sans-300-light-normal-CG9e8kLa.woff2 +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/preview/assets/public-sans-400-regular-italic-D9FlViiB.woff2 +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/preview/assets/public-sans-400-regular-normal-D4F9yfFi.woff2 +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/preview/assets/public-sans-500-medium-normal-ChZcBEnJ.woff2 +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/preview/assets/public-sans-600-semi-bold-normal-Ck6TyfRI.woff2 +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/preview/assets/public-sans-700-bold-normal-CGjRhW-d.woff2 +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/preview/assets/python.tCcUC3U7.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/preview/assets/query-fundamentals-active-jvTJU1K2.svg +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/preview/assets/query.snake-frame.DmvXOQIM.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/preview/assets/regex.C_VuIVtC.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/preview/assets/rust.CtSATZMt.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/preview/assets/saved-cypher.gif +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/preview/assets/scalable-graph-visualization.gif +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/preview/assets/sql.CfOAbw6n.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/preview/assets/syne-neo-500-medium-normal-A5GXmYUf.woff2 +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/preview/assets/table-visualization.gif +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/preview/assets/typescript.3Tbm37mD.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/preview/assets/xml-doc.h79Tu9Aw.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/preview/assets/yaml.B-Jvd59g.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/preview/favicons/android-chrome-192x192.png +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/preview/favicons/apple-touch-icon.png +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/preview/favicons/favicon-16x16.png +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/preview/favicons/favicon-194x194.png +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/preview/favicons/favicon-32x32.png +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/preview/favicons/favicon.ico +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/preview/favicons/safari-pinned-tab.svg +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/preview/index.html +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/preview/manifest.json +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/ui-libs-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/browser_static/vendor-b124e26129aa436b26fe.bundle.js +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/bulk_loader.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/capabilities.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/cli.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/cypher/__init__.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/cypher/algorithms/__init__.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/cypher/algorithms/paths.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/cypher/aql/__init__.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/cypher/aql/ast.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/cypher/aql/lexer.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/cypher/aql/parser.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/cypher/aql/translator.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/cypher/ast.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/cypher/lexer.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/cypher/parser.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/cypher/translator.py,cover +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/dbapi_utils.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/embed_selector.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/embedded.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/engine.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/errors.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/fhir_bridge.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/fusion.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/gql/__init__.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/gql/constants.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/gql/engine.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/gql/pooling.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/gql/resolvers.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/gql/schema.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/index_config.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/index_protocol.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/models.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/operators.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/py.typed +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/result.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/schema.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/sdk.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/security.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/status.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/store_protocol.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/stores/__init__.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/stores/arno_bridge.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/stores/lazy_kg.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/text_search.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/utils.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/vector_utils.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/sql/fhir_bridges.sql +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/sql/fraud_sample_data.sql +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/sql/globals_schema.sql +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/sql/graph_path_globals.sql +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/sql/graph_walk_tvf.sql +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/sql/migrations/000_base_schema_iris.sql +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/sql/migrations/001_add_nodepk_table.sql +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/sql/migrations/001_rollback_nodepk.sql +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/sql/migrations/002_add_fk_constraints.sql +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/sql/operators.sql +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/sql/operators_fixed.sql +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/sql/procedures/kg_PageRank.sql +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/sql/rdf_reifications.sql +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/sql/schema.sql +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/TESTING.md +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/benchmark_parser.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/benchmarks/README.md +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/benchmarks/bench.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/benchmarks/bench_193_full.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/benchmarks/bench_utils.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/benchmarks/benchmark_neo4j.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/benchmarks/bfs_benchmark.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/benchmarks/establish_baseline.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/benchmarks/graph_gen.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/benchmarks/ic2_profile.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/benchmarks/iris_baseline_run.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/benchmarks/iris_os_run.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/benchmarks/ldbc_full_loader.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/benchmarks/load_neo4j.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/benchmarks/synthetic_baseline.csv +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/contract/__init__.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/contract/conftest.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/contract/test_cypher_api.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/contract/test_cypher_api_errors.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/contract/test_graphql_queries.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/contract/test_graphql_schema.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/contract/test_ppr_api.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/curl_suite.sh +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/e2e/__init__.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/e2e/conftest.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/e2e/fixtures/__init__.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/e2e/fixtures/centrality_graphs.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/e2e/fixtures/community_graphs.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/e2e/test_analytics_dispatch.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/e2e/test_approx_count_distinct.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/e2e/test_aql_e2e.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/e2e/test_arno_bfs_global.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/e2e/test_arno_bfs_unified.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/e2e/test_betweenness_neighborhood_e2e.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/e2e/test_betweenness_os_e2e.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/e2e/test_biomedical_demo.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/e2e/test_biomedical_ui.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/e2e/test_centrality_e2e.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/e2e/test_closeness_os_e2e.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/e2e/test_communities_e2e.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/e2e/test_communities_perf.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/e2e/test_cypher_coerce_e2e.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/e2e/test_cypher_gaps_e2e.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/e2e/test_cypher_sprints_e2e.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/e2e/test_cypher_vector_search.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/e2e/test_cypher_vl_path_bfs.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/e2e/test_edge_weights.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/e2e/test_eigenvector_os_e2e.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/e2e/test_embed_queue_e2e.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/e2e/test_embedded_wgproto_e2e.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/e2e/test_execution_contexts.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/e2e/test_execution_contexts_new.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/e2e/test_fhir_bridges_e2e.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/e2e/test_fraud_demo.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/e2e/test_fraud_ui.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/e2e/test_gql_autogen_startup.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/e2e/test_gql_cypher_passthrough.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/e2e/test_gql_node_queries.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/e2e/test_gql_semantic_search.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/e2e/test_gql_traversal.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/e2e/test_graph_kernels_e2e.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/e2e/test_hla_kg_e2e.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/e2e/test_ic13_shortest_path.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/e2e/test_ic3_exact_count.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/e2e/test_igraph_fastpath_parity.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/e2e/test_index_protocol.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/e2e/test_introspection_api.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/e2e/test_ivf_insert.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/e2e/test_large_output_chunked.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/e2e/test_lazy_kg_e2e.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/e2e/test_lazy_node_resolution.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/e2e/test_msbfs_closeness.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/e2e/test_multi_query_engine_platform.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/e2e/test_named_paths_e2e.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/e2e/test_nkg_index_e2e.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/e2e/test_objectscript_split_resolution.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/e2e/test_operator_wiring_e2e.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/e2e/test_pattern_comprehension_reduce.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/e2e/test_plaid.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/e2e/test_plaid_search_e2e.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/e2e/test_ppr_cls_fast_path.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/e2e/test_ppr_guided_e2e.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/e2e/test_procedure_installation.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/e2e/test_reification_e2e.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/e2e/test_schema_procedures_e2e.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/e2e/test_sdk_ergonomics_178_180_e2e.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/e2e/test_store_injection_e2e.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/e2e/test_streaming_bfs.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/e2e/test_stress_api.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/e2e/test_stress_ingest.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/e2e/test_stress_multi_context.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/e2e/test_stress_search.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/e2e/test_stress_setup.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/e2e/test_stress_traversal.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/e2e/test_subgraph_e2e.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/e2e/test_subquery_call_e2e.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/e2e/test_temporal_store_e2e.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/e2e/test_unified_index_api.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/e2e/test_untested_methods.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/e2e/test_vecindex_e2e.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/integration/__init__.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/integration/conftest.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/integration/gql/__init__.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/integration/gql/test_graphql_mutations.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/integration/gql/test_graphql_nested_queries.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/integration/gql/test_graphql_queries.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/integration/gql/test_graphql_vector_search.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/integration/test_196_bug_fixes.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/integration/test_admin_introspection.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/integration/test_algorithm_branches.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/integration/test_algorithms_deep_coverage.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/integration/test_algorithms_error_paths.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/integration/test_algorithms_integration.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/integration/test_algorithms_new_paths.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/integration/test_api_completeness.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/integration/test_arno_bridge_mock_paths.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/integration/test_arno_bridge_paths.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/integration/test_arno_store_layer.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/integration/test_bidirectional_ppr.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/integration/test_bulk_load_session.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/integration/test_bulk_loader_live.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/integration/test_cls_layer.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/integration/test_coverage_final_push.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/integration/test_coverage_push_final.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/integration/test_cypher_advanced.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/integration/test_cypher_api_e2e.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/integration/test_cypher_api_exception_paths.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/integration/test_cypher_enhancements.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/integration/test_cypher_multi_type.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/integration/test_cypher_rd.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/integration/test_cypher_rel_vars.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/integration/test_cypher_single_type.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/integration/test_cypher_untyped.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/integration/test_cypher_vector_search.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/integration/test_diabolical_qa.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/integration/test_doc_claims.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/integration/test_embeddings_api.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/integration/test_embeddings_integration.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/integration/test_embeddings_paths.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/integration/test_engine_misc_paths.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/integration/test_engine_utils_paths.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/integration/test_fastapi_graphql.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/integration/test_fhir_bridges_integration.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/integration/test_fhir_event_sidecar.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/integration/test_fusion_dbapi_bulk.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/integration/test_gql_resolvers_live.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/integration/test_lazykg_algorithms.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/integration/test_lazykg_fallback_forced.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/integration/test_named_paths_integration.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/integration/test_nodepk_advanced_benchmarks.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/integration/test_nodepk_constraints.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/integration/test_nodepk_graph_analytics.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/integration/test_nodepk_migration.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/integration/test_nodepk_performance.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/integration/test_nodepk_production_scale.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/integration/test_nodes_edges_and_algo_paths.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/integration/test_nodes_edges_deep.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/integration/test_objectscript_classes.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/integration/test_pagerank_sql_optimization.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/integration/test_query_deep.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/integration/test_query_engine_branches.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/integration/test_query_engine_special.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/integration/test_query_fastpaths.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/integration/test_query_paths_deep.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/integration/test_query_special_patterns.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/integration/test_reification_integration.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/integration/test_remaining_paths.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/integration/test_schema_and_engine_procs.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/integration/test_schema_deep.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/integration/test_schema_migration.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/integration/test_snapshot_deep.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/integration/test_snapshot_import_export.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/integration/test_snapshot_paths.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/integration/test_sql_store_direct.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/integration/test_sql_store_paths.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/integration/test_store_algorithms.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/integration/test_store_bfs_deep.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/integration/test_store_exception_paths.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/integration/test_store_write_paths.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/integration/test_stored_procedure_install.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/integration/test_subquery_call_integration.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/integration/test_vector_advanced_paths.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/integration/test_vector_engine_deep.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/integration/test_vector_index_paths.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/integration/test_vector_index_paths2.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/integration/test_vector_optimizer_live.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/integration/test_vector_paths.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/perf/__init__.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/perf/test_betweenness_vs_gds.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/perf/test_head_to_head.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/perf/test_leiden_four_way.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/performance/conftest.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/performance/scale_benchmark.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/performance/test_ppr_stress.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/performance/test_stress_v1_5.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/python/run_all_tests.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/python/test_iris_rest_api.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/python/test_networkx_loader.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/python/test_performance_benchmarks.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/python/test_pyops_vector_conversion.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/python/test_python_operators.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/python/test_python_sdk.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/python/test_schema_validation.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/python/test_sql_queries.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/python/test_vector_functions.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/regression/__init__.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/regression/engine_api_baseline.json +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/regression/test_complexity.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/regression/test_engine_api.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/regression/test_module_size.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/regression/test_no_silent_swallow.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/test_schema_contract.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/cypher/__init__.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/cypher/test_lexer.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/cypher/test_lexer_advanced.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/cypher/test_parser.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/cypher/test_parser_advanced.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_193_bfs_nkg_fast_path.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_194_readme.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_admin_remaining.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_admin_unit.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_algorithm_warning_paths.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_algorithms_extended_unit.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_algorithms_large_graph_warn.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_algorithms_unit.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_aql_lexer.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_aql_parser.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_aql_translator.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_aql_translator_extra.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_arno_bridge.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_batch_mutations.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_betweenness_os_unit.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_bm25_index.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_bolt_relationship_encoding.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_bolt_server.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_bulk_load_session.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_bulk_loader_coverage.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_bulk_loader_unit.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_centrality_translator.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_centrality_unit.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_cli.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_closeness_os_unit.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_cls_deployment.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_communities_translator.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_communities_unit.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_concept_first_status.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_coverage_boost.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_cypher_api_admin.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_cypher_api_coverage.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_cypher_api_extra.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_cypher_benchmark_scale.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_cypher_case_when.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_cypher_e2e_new_features.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_cypher_functions.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_cypher_parser.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_cypher_procedures.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_cypher_union_exists.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_cypher_var_length.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_cypher_vector_search.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_dbapi_utils_unit.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_edge_embeddings.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_edgeprop_ndjson.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_embed_nodes_params.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_embed_selector.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_embed_selector_unit.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_embedded.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_embedded_wgproto.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_embeddings_remaining.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_embeddings_unit.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_engine_deep.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_engine_dimension_fix.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_engine_embeddings.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_engine_mocked.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_engine_status.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_engine_unit.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_error_model.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_fhir_bridge.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_fhir_bridges.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_fhir_event_sidecar.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_gds_shims.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_get_nodes.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_gql_coverage.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_gql_edge_cases.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_gql_resolver_bodies.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_graph_kernels.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_graphql_dataloader.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_index_config.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_index_handle.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_index_protocol.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_ingest_formats.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_introspection_api.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_ivf_index.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_ivgresult.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_khop_dispatch.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_lazy_kg.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_module_coverage.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_named_graphs.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_named_paths.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_nodes_edges_unit.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_operators_coverage.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_operators_wiring.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_parse_cache.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_plaid_search.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_ppr_guided_subgraph.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_predicate_order.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_query_extra_unit.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_query_fastpath_unit.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_query_unit.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_reification.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_schema_engine_unit.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_schema_init.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_schema_procedures.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_schema_remaining.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_schema_unit.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_sdk.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_sdk_async.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_shortest_path.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_snapshot.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_snapshot_restore_unit.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_snapshot_unit.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_sql_splitter.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_sql_store_unit.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_sql_table_bridge.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_store_protocol.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_structural_guard.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_structural_guard_e2e.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_subgraph.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_subquery_call.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_supporting_modules.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_sync_model.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_temporal_cypher.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_temporal_edges.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_temporal_unit.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_translator_coverage.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_translator_deep_coverage.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_translator_extended.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_translator_gaps.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_unified_edge_store.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_utilities_final.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_utils_coverage.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_validation.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_vector_search_routing.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_vector_unit.py +0 -0
- {iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/tests/unit/test_weighted_shortest_path.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: iris-vector-graph
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.2.0
|
|
4
4
|
Summary: Transactional Graph + Vector retrieval system for InterSystems IRIS with hybrid search, openCypher, and GraphQL APIs
|
|
5
5
|
Project-URL: Homepage, https://github.com/intersystems-community/iris-vector-graph
|
|
6
6
|
Project-URL: Documentation, https://github.com/intersystems-community/iris-vector-graph/tree/main/docs
|
|
@@ -19,6 +19,7 @@ Classifier: Programming Language :: Python :: 3.9
|
|
|
19
19
|
Classifier: Programming Language :: Python :: 3.10
|
|
20
20
|
Classifier: Programming Language :: Python :: 3.11
|
|
21
21
|
Classifier: Programming Language :: Python :: 3.12
|
|
22
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
22
23
|
Classifier: Topic :: Database
|
|
23
24
|
Classifier: Topic :: Scientific/Engineering
|
|
24
25
|
Classifier: Topic :: Scientific/Engineering :: Bio-Informatics
|
|
@@ -354,22 +354,21 @@ class QueryMixin:
|
|
|
354
354
|
predicates = vl0.get("types", [])
|
|
355
355
|
max_hops = vl0.get("max_hops", 5)
|
|
356
356
|
direction = vl0.get("direction", "out")
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
m = _re.search(r"\
|
|
360
|
-
if m:
|
|
361
|
-
|
|
357
|
+
def _extract_limit(s: str) -> int:
|
|
358
|
+
# IRIS SQL uses FETCH FIRST N ROWS ONLY; fall back to LIMIT N
|
|
359
|
+
m = _re.search(r"FETCH\s+FIRST\s+(\d+)\s+ROWS\s+ONLY", s, _re.IGNORECASE)
|
|
360
|
+
if not m:
|
|
361
|
+
m = _re.search(r"\bLIMIT\s+(\d+)", s, _re.IGNORECASE)
|
|
362
|
+
return int(m.group(1)) if m else 0
|
|
363
|
+
|
|
364
|
+
max_results = _extract_limit(sql_str) if sql_str else 0
|
|
362
365
|
|
|
363
366
|
if count_match:
|
|
364
367
|
col_name = count_match.group(1)
|
|
365
368
|
bfs_result = self._store.execute_bfs(source_id, predicates, max_hops, direction, 0)
|
|
366
369
|
cnt = len(bfs_result.rows) if not bfs_result.error else 0
|
|
367
370
|
return IVGResult(columns=[col_name], rows=[[cnt]], metadata=sql_query.query_metadata)
|
|
368
|
-
max_results = 0
|
|
369
|
-
if sql_str:
|
|
370
|
-
m = _re.search(r"\bLIMIT\s+(\d+)", sql_str, _re.IGNORECASE)
|
|
371
|
-
if m:
|
|
372
|
-
max_results = int(m.group(1))
|
|
371
|
+
max_results = _extract_limit(sql_str) if sql_str else 0
|
|
373
372
|
|
|
374
373
|
direction = vl0.get("direction", "out")
|
|
375
374
|
predicates = vl0.get("types", [])
|
|
@@ -564,7 +563,10 @@ class QueryMixin:
|
|
|
564
563
|
import re as _re
|
|
565
564
|
sql_str = sql_query.sql if isinstance(sql_query.sql, str) else (sql_query.sql[0] if sql_query.sql else "")
|
|
566
565
|
if sql_query.sql:
|
|
567
|
-
|
|
566
|
+
# IRIS SQL uses "FETCH FIRST N ROWS ONLY" (not LIMIT N)
|
|
567
|
+
m = _re.search(r"FETCH\s+FIRST\s+(\d+)\s+ROWS\s+ONLY", sql_str, _re.IGNORECASE)
|
|
568
|
+
if not m:
|
|
569
|
+
m = _re.search(r"\bLIMIT\s+(\d+)", sql_str, _re.IGNORECASE)
|
|
568
570
|
if m:
|
|
569
571
|
max_results = int(m.group(1))
|
|
570
572
|
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
"""Shared API authentication and access-control middleware for iris-vector-graph.
|
|
2
|
+
|
|
3
|
+
Provides:
|
|
4
|
+
- ApiKeyMiddleware: opt-in API key gate (IVG_API_KEY env var)
|
|
5
|
+
- ReadOnlyMiddleware: mutation rejection (IVG_READ_ONLY env var)
|
|
6
|
+
|
|
7
|
+
Both are no-ops when their respective env vars are unset, preserving full
|
|
8
|
+
backward compatibility for existing deployments.
|
|
9
|
+
|
|
10
|
+
Usage in FastAPI app::
|
|
11
|
+
|
|
12
|
+
from iris_vector_graph.api_auth import ApiKeyMiddleware, ReadOnlyMiddleware
|
|
13
|
+
|
|
14
|
+
app.add_middleware(ReadOnlyMiddleware)
|
|
15
|
+
app.add_middleware(ApiKeyMiddleware)
|
|
16
|
+
"""
|
|
17
|
+
from __future__ import annotations
|
|
18
|
+
|
|
19
|
+
import os
|
|
20
|
+
from typing import Callable
|
|
21
|
+
|
|
22
|
+
from starlette.middleware.base import BaseHTTPMiddleware
|
|
23
|
+
from starlette.requests import Request
|
|
24
|
+
from starlette.responses import JSONResponse, Response
|
|
25
|
+
|
|
26
|
+
# Routes that are always exempt from authentication — health checks, API docs.
|
|
27
|
+
_AUTH_EXEMPT: frozenset[str] = frozenset({
|
|
28
|
+
"/health",
|
|
29
|
+
"/docs",
|
|
30
|
+
"/openapi.json",
|
|
31
|
+
"/redoc",
|
|
32
|
+
})
|
|
33
|
+
|
|
34
|
+
# Route prefixes that require authentication when IVG_API_KEY is set.
|
|
35
|
+
_PROTECTED_PREFIXES: tuple[str, ...] = (
|
|
36
|
+
"/api/",
|
|
37
|
+
"/fhir-event/",
|
|
38
|
+
"/fhir-event",
|
|
39
|
+
"/graphql",
|
|
40
|
+
)
|
|
41
|
+
|
|
42
|
+
# Cypher keywords that constitute mutations (case-insensitive word-boundary check).
|
|
43
|
+
_MUTATION_KEYWORDS: tuple[str, ...] = (
|
|
44
|
+
"CREATE",
|
|
45
|
+
"DELETE",
|
|
46
|
+
"MERGE",
|
|
47
|
+
"SET",
|
|
48
|
+
"REMOVE",
|
|
49
|
+
"FOREACH",
|
|
50
|
+
)
|
|
51
|
+
|
|
52
|
+
# HTTP methods that constitute writes on the fhir-event endpoint.
|
|
53
|
+
_WRITE_METHODS: frozenset[str] = frozenset({"POST", "PUT", "PATCH", "DELETE"})
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
class ApiKeyMiddleware(BaseHTTPMiddleware):
|
|
57
|
+
"""Opt-in API key authentication middleware.
|
|
58
|
+
|
|
59
|
+
Activated only when ``IVG_API_KEY`` env var is non-empty.
|
|
60
|
+
When active, all protected routes require the ``X-Api-Key`` header with
|
|
61
|
+
the matching value. Exempt routes (/health, /docs, etc.) always pass.
|
|
62
|
+
"""
|
|
63
|
+
|
|
64
|
+
async def dispatch(self, request: Request, call_next: Callable) -> Response:
|
|
65
|
+
expected = os.environ.get("IVG_API_KEY", "")
|
|
66
|
+
if not expected:
|
|
67
|
+
return await call_next(request)
|
|
68
|
+
|
|
69
|
+
path = request.url.path
|
|
70
|
+
if path in _AUTH_EXEMPT:
|
|
71
|
+
return await call_next(request)
|
|
72
|
+
|
|
73
|
+
if not any(path.startswith(prefix) for prefix in _PROTECTED_PREFIXES):
|
|
74
|
+
return await call_next(request)
|
|
75
|
+
|
|
76
|
+
provided = request.headers.get("X-Api-Key", "")
|
|
77
|
+
if provided != expected:
|
|
78
|
+
return JSONResponse(
|
|
79
|
+
status_code=401,
|
|
80
|
+
content={"error": "unauthorized", "message": "X-Api-Key header required"},
|
|
81
|
+
)
|
|
82
|
+
|
|
83
|
+
return await call_next(request)
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
class ReadOnlyMiddleware(BaseHTTPMiddleware):
|
|
87
|
+
"""Opt-in read-only enforcement middleware.
|
|
88
|
+
|
|
89
|
+
Activated when ``IVG_READ_ONLY`` env var is ``"true"`` (case-insensitive).
|
|
90
|
+
|
|
91
|
+
When active:
|
|
92
|
+
- Blocks write HTTP methods (POST/PUT/PATCH/DELETE) on ``/fhir-event/``
|
|
93
|
+
unless ``IVG_ALLOW_FHIR_WRITES=true``.
|
|
94
|
+
- GraphQL mutation blocking is handled at the resolver level (see
|
|
95
|
+
``api/gql/schema.py``) — this middleware does not inspect GraphQL bodies.
|
|
96
|
+
- Cypher mutation keyword blocking is handled in the Cypher router
|
|
97
|
+
(``api/routers/cypher.py``) — this middleware does not inspect request bodies.
|
|
98
|
+
"""
|
|
99
|
+
|
|
100
|
+
async def dispatch(self, request: Request, call_next: Callable) -> Response:
|
|
101
|
+
if os.environ.get("IVG_READ_ONLY", "").lower() != "true":
|
|
102
|
+
return await call_next(request)
|
|
103
|
+
|
|
104
|
+
path = request.url.path
|
|
105
|
+
method = request.method.upper()
|
|
106
|
+
|
|
107
|
+
# Block write methods on fhir-event unless explicitly allowed.
|
|
108
|
+
if (path.startswith("/fhir-event")
|
|
109
|
+
and method in _WRITE_METHODS
|
|
110
|
+
and os.environ.get("IVG_ALLOW_FHIR_WRITES", "").lower() != "true"):
|
|
111
|
+
return JSONResponse(
|
|
112
|
+
status_code=403,
|
|
113
|
+
content={
|
|
114
|
+
"error": "read_only_mode",
|
|
115
|
+
"detail": "fhir-event writes are disabled; set IVG_ALLOW_FHIR_WRITES=true to allow",
|
|
116
|
+
},
|
|
117
|
+
)
|
|
118
|
+
|
|
119
|
+
return await call_next(request)
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
def is_mutation_cypher(query: str) -> bool:
|
|
123
|
+
"""Return True if the Cypher query string contains a mutation keyword.
|
|
124
|
+
|
|
125
|
+
Used by the Cypher router to enforce ``IVG_READ_ONLY`` on query content.
|
|
126
|
+
Case-insensitive, whole-word match to avoid false positives in strings.
|
|
127
|
+
"""
|
|
128
|
+
import re
|
|
129
|
+
upper = query.upper()
|
|
130
|
+
for kw in _MUTATION_KEYWORDS:
|
|
131
|
+
if re.search(rf"\b{kw}\b", upper):
|
|
132
|
+
return True
|
|
133
|
+
return False
|
|
@@ -670,12 +670,13 @@ def _translate_bm25_search(
|
|
|
670
670
|
)
|
|
671
671
|
|
|
672
672
|
bm25_fn = f"{_schema_prefix}.kg_BM25" if _schema_prefix else "kg_BM25"
|
|
673
|
-
|
|
674
|
-
|
|
673
|
+
# Bind idx_name and query as parameters (? placeholders) rather than
|
|
674
|
+
# interpolating them inline. k_int is an integer cast — safe as inline literal.
|
|
675
|
+
context.all_stage_params.extend([str(idx_name), str(query)])
|
|
675
676
|
cte_sql = (
|
|
676
677
|
f"SELECT j.node_id AS node, j.score\n"
|
|
677
678
|
f"FROM JSON_TABLE(\n"
|
|
678
|
-
f" {bm25_fn}(
|
|
679
|
+
f" {bm25_fn}(?, ?, {k_int}),\n"
|
|
679
680
|
f" '$[*]' COLUMNS(\n"
|
|
680
681
|
f" node_id VARCHAR(256) PATH '$.id',\n"
|
|
681
682
|
f" score DOUBLE PATH '$.score'\n"
|
|
@@ -713,16 +714,16 @@ def _translate_retrieve(
|
|
|
713
714
|
bm25_limit = limit * 2
|
|
714
715
|
emb_table = f"{_schema_prefix}.kg_NodeEmbeddings" if _schema_prefix else "Graph_KG.kg_NodeEmbeddings"
|
|
715
716
|
bm25_fn = f"{_schema_prefix}.kg_BM25" if _schema_prefix else "Graph_KG.kg_BM25"
|
|
716
|
-
safe_query = str(query).replace("'", "''")
|
|
717
|
-
safe_bm25 = bm25_name.replace("'", "''")
|
|
718
|
-
safe_config = embedding_config.replace("'", "''")
|
|
719
717
|
|
|
720
|
-
|
|
718
|
+
# Bind all string user inputs as ? parameters; integer args stay inline (safe).
|
|
719
|
+
# Order: bm25_name, query (for BM25 CTE), then query again (for Vec EMBEDDING()),
|
|
720
|
+
# then embedding_config, then vec_label filter (if not wildcard).
|
|
721
|
+
context.all_stage_params.extend([str(bm25_name), str(query)])
|
|
721
722
|
|
|
722
723
|
bm25_cte = (
|
|
723
724
|
f"SELECT j.node_id AS node, j.score\n"
|
|
724
725
|
f"FROM JSON_TABLE(\n"
|
|
725
|
-
f" {bm25_fn}(
|
|
726
|
+
f" {bm25_fn}(?, ?, {bm25_limit}),\n"
|
|
726
727
|
f" '$[*]' COLUMNS(\n"
|
|
727
728
|
f" node_id VARCHAR(256) PATH '$.id',\n"
|
|
728
729
|
f" score DOUBLE PATH '$.score'\n"
|
|
@@ -730,9 +731,17 @@ def _translate_retrieve(
|
|
|
730
731
|
f") j"
|
|
731
732
|
)
|
|
732
733
|
|
|
733
|
-
context.all_stage_params.append(str(query))
|
|
734
|
+
context.all_stage_params.append(str(query)) # for EMBEDDING(?, ...)
|
|
735
|
+
context.all_stage_params.append(str(embedding_config))
|
|
736
|
+
|
|
737
|
+
if vec_label == "*":
|
|
738
|
+
vec_where = ""
|
|
739
|
+
else:
|
|
740
|
+
vec_where = " WHERE n.label = ?"
|
|
741
|
+
context.all_stage_params.append(str(vec_label))
|
|
742
|
+
|
|
734
743
|
vec_cte = (
|
|
735
|
-
f"SELECT TOP {vec_limit} e.id AS node, VECTOR_COSINE(e.emb, EMBEDDING(?,
|
|
744
|
+
f"SELECT TOP {vec_limit} e.id AS node, VECTOR_COSINE(e.emb, EMBEDDING(?, ?)) AS score\n"
|
|
736
745
|
f"FROM {emb_table} e{vec_where}\n"
|
|
737
746
|
f"ORDER BY score DESC"
|
|
738
747
|
)
|
|
@@ -803,12 +812,13 @@ def _translate_ivf_search(
|
|
|
803
812
|
)
|
|
804
813
|
|
|
805
814
|
ivf_fn = f"{_schema_prefix}.kg_IVF" if _schema_prefix else "kg_IVF"
|
|
806
|
-
|
|
815
|
+
# Bind idx_name and query_json as ? parameters; k_int/nprobe_int are safe int literals.
|
|
816
|
+
context.all_stage_params.extend([str(idx_name), _json.dumps(floats)])
|
|
807
817
|
|
|
808
818
|
cte_sql = (
|
|
809
819
|
f"SELECT j.node, j.score\n"
|
|
810
820
|
f"FROM JSON_TABLE(\n"
|
|
811
|
-
f" {ivf_fn}(
|
|
821
|
+
f" {ivf_fn}(?, ?, {k_int}, {nprobe_int}),\n"
|
|
812
822
|
f" '$[*]' COLUMNS(\n"
|
|
813
823
|
f" node VARCHAR(256) PATH '$.id',\n"
|
|
814
824
|
f" score DOUBLE PATH '$.score'\n"
|
|
@@ -84,18 +84,10 @@ def browser_redirect():
|
|
|
84
84
|
return RedirectResponse("/browser/")
|
|
85
85
|
|
|
86
86
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
expected = os.environ.get("IVG_API_KEY", "")
|
|
92
|
-
provided = request.headers.get("X-API-Key", "")
|
|
93
|
-
if expected and provided != expected:
|
|
94
|
-
return JSONResponse(
|
|
95
|
-
status_code=401,
|
|
96
|
-
content={"error": "unauthorized", "message": "X-API-Key required"},
|
|
97
|
-
)
|
|
98
|
-
return await call_next(request)
|
|
87
|
+
# API key authentication — shared implementation from iris_vector_graph.api_auth.
|
|
88
|
+
# Uses X-Api-Key header (canonical form); IVG_API_KEY env var activates it.
|
|
89
|
+
from iris_vector_graph.api_auth import ApiKeyMiddleware as _ApiKeyMiddleware
|
|
90
|
+
app.add_middleware(_ApiKeyMiddleware)
|
|
99
91
|
|
|
100
92
|
|
|
101
93
|
from iris_vector_graph.bolt_server import BoltSession
|
{iris_vector_graph-2.1.1 → iris_vector_graph-2.2.0}/iris_vector_graph/stores/iris_sql_store.py
RENAMED
|
@@ -348,7 +348,7 @@ class IRISGraphStore:
|
|
|
348
348
|
raw = self._arno_call(
|
|
349
349
|
"Graph.KG.NKGAccel", "BFSJson",
|
|
350
350
|
source_id, predicates_json, str(max_hops),
|
|
351
|
-
str(max_results),
|
|
351
|
+
str(max_results),
|
|
352
352
|
)
|
|
353
353
|
raw_val = raw if isinstance(raw, str) else str(raw)
|
|
354
354
|
if raw_val.startswith("SORTED:"):
|
|
@@ -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.2.0"
|
|
8
8
|
description = "Transactional Graph + Vector retrieval system for InterSystems IRIS with hybrid search, openCypher, and GraphQL APIs"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = "MIT"
|
|
@@ -30,6 +30,7 @@ classifiers = [
|
|
|
30
30
|
"Programming Language :: Python :: 3.10",
|
|
31
31
|
"Programming Language :: Python :: 3.11",
|
|
32
32
|
"Programming Language :: Python :: 3.12",
|
|
33
|
+
"Programming Language :: Python :: 3.13",
|
|
33
34
|
"Topic :: Scientific/Engineering :: Bio-Informatics",
|
|
34
35
|
"Topic :: Database",
|
|
35
36
|
"Topic :: Scientific/Engineering"
|
|
@@ -200,7 +201,8 @@ addopts = [
|
|
|
200
201
|
"-v",
|
|
201
202
|
"--tb=short",
|
|
202
203
|
"--strict-markers",
|
|
203
|
-
"--disable-warnings"
|
|
204
|
+
"--disable-warnings",
|
|
205
|
+
"-m", "not perf"
|
|
204
206
|
]
|
|
205
207
|
markers = [
|
|
206
208
|
"slow: marks tests as slow (deselect with '-m \"not slow\"')",
|
|
@@ -220,7 +222,13 @@ omit = [
|
|
|
220
222
|
"*/.venv/*",
|
|
221
223
|
"*/build/*",
|
|
222
224
|
"*/dist/*",
|
|
225
|
+
# Bolt server: network I/O — covered by integration tests (ivg-iris container required)
|
|
223
226
|
"iris_vector_graph/bolt_server.py",
|
|
227
|
+
# IRIS-native store layer: ~95% of lines call IRIS ObjectScript directly;
|
|
228
|
+
# meaningful coverage only via integration tests (ivg-iris or ivg-iris-enterprise).
|
|
229
|
+
# Unit coverage intentionally omitted — see docs/coverage.md
|
|
230
|
+
"iris_vector_graph/stores/iris_sql_store.py",
|
|
231
|
+
"iris_vector_graph/stores/arno_bridge.py",
|
|
224
232
|
]
|
|
225
233
|
|
|
226
234
|
[tool.coverage.report]
|
|
@@ -21,31 +21,19 @@ def _deploy_objectscript(container_name: str) -> None:
|
|
|
21
21
|
["docker", "cp", "iris_src/src/.", f"{container_name}:/tmp/src/"],
|
|
22
22
|
capture_output=True,
|
|
23
23
|
)
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
)
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
capture_output=True,
|
|
35
|
-
text=True,
|
|
36
|
-
errors="replace",
|
|
37
|
-
timeout=120,
|
|
38
|
-
)
|
|
39
|
-
for _cls in [
|
|
40
|
-
"Graph.KG.ArnoAccel",
|
|
41
|
-
"Graph.KG.TraversalBuild", "Graph.KG.TraversalBFS",
|
|
42
|
-
"Graph.KG.TraversalPaths", "Graph.KG.TraversalKHop", "Graph.KG.Traversal",
|
|
43
|
-
"Graph.KG.NKGAccelLoader", "Graph.KG.NKGAccelAdjacency",
|
|
44
|
-
"Graph.KG.NKGAccelTraversal", "Graph.KG.NKGAccelCentrality", "Graph.KG.NKGAccel",
|
|
45
|
-
]:
|
|
24
|
+
# Load each .cls file individually with "ck-d" (no background workers).
|
|
25
|
+
# Community Edition is limited to 2 CPU cores; LoadDir with parallel compilation
|
|
26
|
+
# fails with ERROR #7802 on machines with many cores because the IRIS work queue
|
|
27
|
+
# manager spawns more background jobs than the CE license allows.
|
|
28
|
+
# Loading files one at a time avoids the worker queue entirely.
|
|
29
|
+
import glob as _glob
|
|
30
|
+
cls_files = sorted(_glob.glob("iris_src/src/**/*.cls", recursive=True))
|
|
31
|
+
for cls_file in cls_files:
|
|
32
|
+
# Get the container path relative to /tmp/src/
|
|
33
|
+
rel = os.path.relpath(cls_file, "iris_src/src").replace(os.sep, "/")
|
|
46
34
|
subprocess.run(
|
|
47
35
|
["docker", "exec", "-i", container_name, "iris", "session", "IRIS", "-U", "USER"],
|
|
48
|
-
input=f'Do $system.OBJ.
|
|
36
|
+
input=f'Do $system.OBJ.Load("/tmp/src/{rel}","ck-d")\nH\n',
|
|
49
37
|
capture_output=True, text=True, timeout=30,
|
|
50
38
|
)
|
|
51
39
|
|
|
@@ -53,14 +41,34 @@ def _deploy_objectscript(container_name: str) -> None:
|
|
|
53
41
|
@pytest.fixture(scope="session")
|
|
54
42
|
def iris_test_container():
|
|
55
43
|
from iris_devtester import IRISContainer
|
|
44
|
+
import subprocess as _sp
|
|
45
|
+
|
|
46
|
+
# Candidate names to try in order before starting a new container.
|
|
47
|
+
# "iris_vector_graph" is the docker-compose service name; it's a valid
|
|
48
|
+
# Community container even though it differs from the default fixture name.
|
|
49
|
+
_FALLBACK_NAMES = ["iris_vector_graph"]
|
|
56
50
|
|
|
57
51
|
attached = False
|
|
52
|
+
container = None
|
|
53
|
+
|
|
54
|
+
# 1. Try the configured name.
|
|
58
55
|
try:
|
|
59
56
|
container = IRISContainer.attach(_GQS_CONTAINER)
|
|
60
57
|
attached = True
|
|
61
58
|
logger.info("Attached to existing container: %s", _GQS_CONTAINER)
|
|
62
59
|
except Exception:
|
|
63
|
-
|
|
60
|
+
pass
|
|
61
|
+
|
|
62
|
+
# 2. If not found, skip rather than start a new container —
|
|
63
|
+
# unless IVG_AUTO_START_CONTAINER=1 (default when running in CI).
|
|
64
|
+
if container is None:
|
|
65
|
+
auto_start = os.environ.get("IVG_AUTO_START_CONTAINER", "0") not in ("0", "false", "no")
|
|
66
|
+
if not auto_start:
|
|
67
|
+
pytest.skip(
|
|
68
|
+
f"IRIS container '{_GQS_CONTAINER}' not running. "
|
|
69
|
+
f"Start with: scripts/test-container.sh up "
|
|
70
|
+
f"(or set IVG_TEST_CONTAINER=ivg-iris-enterprise for enterprise container)"
|
|
71
|
+
)
|
|
64
72
|
_sp.run(["docker", "rm", "-f", _GQS_CONTAINER], capture_output=True)
|
|
65
73
|
logger.info("Starting fresh Community IRIS container: %s", _GQS_CONTAINER)
|
|
66
74
|
container = (
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"""Integration tests for SQL parameterization of BM25/retrieve/IVF procedures.
|
|
2
|
+
|
|
3
|
+
Runs against a live IRIS instance to verify that the parameterized SQL produced
|
|
4
|
+
by the Cypher translator executes correctly — no syntax errors from parameterization,
|
|
5
|
+
and no injection risk from special characters in query text.
|
|
6
|
+
|
|
7
|
+
Requires: ivg-iris or ivg-iris-enterprise container running.
|
|
8
|
+
"""
|
|
9
|
+
from __future__ import annotations
|
|
10
|
+
|
|
11
|
+
import pytest
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
@pytest.mark.parametrize("cypher,desc", [
|
|
15
|
+
(
|
|
16
|
+
"CALL ivg.bm25.search('nonexistent_idx', 'heart failure', 5) YIELD node RETURN node",
|
|
17
|
+
"bm25 with normal query text",
|
|
18
|
+
),
|
|
19
|
+
(
|
|
20
|
+
"CALL ivg.bm25.search('nonexistent_idx', 'query with spaces and numbers 123', 3) YIELD node RETURN node",
|
|
21
|
+
"bm25 with spaces and numbers",
|
|
22
|
+
),
|
|
23
|
+
])
|
|
24
|
+
def test_bm25_parameterized_executes_on_iris(iris_connection, cypher, desc):
|
|
25
|
+
"""BM25 queries with parameterized args should execute without SQL errors."""
|
|
26
|
+
from iris_vector_graph.engine import IRISGraphEngine
|
|
27
|
+
engine = IRISGraphEngine(iris_connection)
|
|
28
|
+
# Will error on SQL syntax/parse if parameterization broke the query structure.
|
|
29
|
+
# Empty result is fine — index likely doesn't exist in test DB.
|
|
30
|
+
try:
|
|
31
|
+
result = engine.execute_cypher(cypher)
|
|
32
|
+
# Empty result or rows — both acceptable; no exception = parameterization worked
|
|
33
|
+
assert result is not None
|
|
34
|
+
except Exception as e:
|
|
35
|
+
err = str(e).lower()
|
|
36
|
+
# "index not found" or "table not found" are acceptable — means SQL was valid
|
|
37
|
+
# but the BM25 index/function doesn't exist in the test DB.
|
|
38
|
+
if any(x in err for x in ["not found", "does not exist", "unknown function",
|
|
39
|
+
"no such", "sqlcode", "undefined"]):
|
|
40
|
+
pytest.skip(f"BM25 function not available in test IRIS: {e}")
|
|
41
|
+
raise
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
def test_retrieve_parameterized_executes_on_iris(iris_connection):
|
|
45
|
+
"""ivg.retrieve with parameterized query text should not cause SQL injection."""
|
|
46
|
+
from iris_vector_graph.engine import IRISGraphEngine
|
|
47
|
+
engine = IRISGraphEngine(iris_connection)
|
|
48
|
+
cypher = "CALL ivg.retrieve('test query text', 3) YIELD node RETURN node"
|
|
49
|
+
try:
|
|
50
|
+
result = engine.execute_cypher(cypher)
|
|
51
|
+
assert result is not None
|
|
52
|
+
except Exception as e:
|
|
53
|
+
err = str(e).lower()
|
|
54
|
+
if any(x in err for x in ["not found", "does not exist", "unknown function",
|
|
55
|
+
"no such", "sqlcode", "undefined"]):
|
|
56
|
+
pytest.skip(f"BM25/vector function not available in test IRIS: {e}")
|
|
57
|
+
raise
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
def test_injection_attempt_safe_on_iris(iris_connection):
|
|
61
|
+
"""Single-quote injection in BM25 query text must not cause SQL errors."""
|
|
62
|
+
from iris_vector_graph.engine import IRISGraphEngine
|
|
63
|
+
engine = IRISGraphEngine(iris_connection)
|
|
64
|
+
# This would cause SQL errors if interpolated inline; with ? binding it's safe.
|
|
65
|
+
cypher = "CALL ivg.bm25.search('idx', 'it\\'s a test query', 5) YIELD node RETURN node"
|
|
66
|
+
try:
|
|
67
|
+
result = engine.execute_cypher(cypher)
|
|
68
|
+
assert result is not None
|
|
69
|
+
except Exception as e:
|
|
70
|
+
err = str(e).lower()
|
|
71
|
+
# Acceptable: function not found. NOT acceptable: syntax error from injection.
|
|
72
|
+
if "syntax" in err or "parse" in err:
|
|
73
|
+
raise AssertionError(
|
|
74
|
+
f"SQL injection via single-quote produced a syntax error — "
|
|
75
|
+
f"parameterization failed: {e}"
|
|
76
|
+
) from e
|
|
77
|
+
if any(x in err for x in ["not found", "does not exist", "unknown function",
|
|
78
|
+
"no such", "sqlcode", "undefined"]):
|
|
79
|
+
pytest.skip(f"BM25 function not available in test IRIS: {e}")
|
|
80
|
+
raise
|