iris-vector-graph 1.77.0__tar.gz → 1.78.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.
Files changed (247) hide show
  1. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/PKG-INFO +1 -1
  2. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/iris_vector_graph/cypher/translator.py +124 -46
  3. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/pyproject.toml +1 -1
  4. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/.gitignore +0 -0
  5. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/LICENSE +0 -0
  6. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/README.md +0 -0
  7. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/examples/demo_biomedical.py +0 -0
  8. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/examples/demo_fraud_detection.py +0 -0
  9. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/examples/demo_fraud_detection_sql.py +0 -0
  10. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/examples/demo_utils.py +0 -0
  11. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/examples/demo_working_system.py +0 -0
  12. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/examples/domains/__init__.py +0 -0
  13. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/examples/domains/biomedical/__init__.py +0 -0
  14. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/examples/domains/biomedical/loaders.py +0 -0
  15. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/examples/domains/biomedical/resolver.py +0 -0
  16. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/examples/domains/biomedical/types.py +0 -0
  17. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/examples/domains/biomedical_legacy/__init__.py +0 -0
  18. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/examples/domains/biomedical_legacy/biomedical_engine.py +0 -0
  19. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/examples/domains/biomedical_legacy/biomedical_schema.py +0 -0
  20. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/examples/domains/biomedical_legacy/legacy_wrapper.py +0 -0
  21. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/examples/domains/fraud/__init__.py +0 -0
  22. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/examples/domains/fraud/loaders.py +0 -0
  23. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/examples/domains/fraud/resolver.py +0 -0
  24. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/examples/domains/fraud/types.py +0 -0
  25. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/examples/graphQL.http +0 -0
  26. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/examples/hybrid_vector_graph_query.cypher +0 -0
  27. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/examples/rest.http +0 -0
  28. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/iris_src/src/Graph/KG/Algorithms.cls +0 -0
  29. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/iris_src/src/Graph/KG/ArnoAccel.cls +0 -0
  30. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/iris_src/src/Graph/KG/BM25Index.cls +0 -0
  31. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/iris_src/src/Graph/KG/BenchFormat.cls +0 -0
  32. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/iris_src/src/Graph/KG/BenchSeeder.cls +0 -0
  33. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/iris_src/src/Graph/KG/Benchmark.cls +0 -0
  34. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/iris_src/src/Graph/KG/Edge.cls +0 -0
  35. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/iris_src/src/Graph/KG/EdgeScan.cls +0 -0
  36. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/iris_src/src/Graph/KG/GraphIndex.cls +0 -0
  37. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/iris_src/src/Graph/KG/IVFIndex.cls +0 -0
  38. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/iris_src/src/Graph/KG/Loader.cls +0 -0
  39. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/iris_src/src/Graph/KG/MCPService.cls +0 -0
  40. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/iris_src/src/Graph/KG/MCPToolSet.cls +0 -0
  41. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/iris_src/src/Graph/KG/MCPTools.cls +0 -0
  42. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/iris_src/src/Graph/KG/Meta.cls +0 -0
  43. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/iris_src/src/Graph/KG/NKGAccel.cls +0 -0
  44. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/iris_src/src/Graph/KG/PLAIDSearch.cls +0 -0
  45. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/iris_src/src/Graph/KG/PageRank.cls +0 -0
  46. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/iris_src/src/Graph/KG/PyOps.cls +0 -0
  47. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/iris_src/src/Graph/KG/Service.cls +0 -0
  48. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/iris_src/src/Graph/KG/Snapshot.cls +0 -0
  49. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/iris_src/src/Graph/KG/Subgraph.cls +0 -0
  50. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/iris_src/src/Graph/KG/TemporalIndex.cls +0 -0
  51. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/iris_src/src/Graph/KG/TestEdge.cls +0 -0
  52. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/iris_src/src/Graph/KG/Traversal.cls +0 -0
  53. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/iris_src/src/Graph/KG/VecIndex.cls +0 -0
  54. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/iris_src/src/IVG/Percentile.cls +0 -0
  55. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/iris_src/src/PageRankEmbedded.cls +0 -0
  56. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/iris_src/src/User.Exec.cls +0 -0
  57. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/iris_src/src/iris/vector/graph/GraphOperators.cls +0 -0
  58. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/iris_vector_graph/__init__.py +0 -0
  59. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/iris_vector_graph/bolt_server.py +0 -0
  60. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/iris_vector_graph/bulk_loader.py +0 -0
  61. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/iris_vector_graph/capabilities.py +0 -0
  62. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/iris_vector_graph/cypher/__init__.py +0 -0
  63. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/iris_vector_graph/cypher/algorithms/__init__.py +0 -0
  64. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/iris_vector_graph/cypher/algorithms/paths.py +0 -0
  65. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/iris_vector_graph/cypher/ast.py +0 -0
  66. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/iris_vector_graph/cypher/lexer.py +0 -0
  67. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/iris_vector_graph/cypher/parser.py +0 -0
  68. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/iris_vector_graph/cypher_api.py +0 -0
  69. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/iris_vector_graph/embedded.py +0 -0
  70. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/iris_vector_graph/engine.py +0 -0
  71. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/iris_vector_graph/fusion.py +0 -0
  72. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/iris_vector_graph/gql/__init__.py +0 -0
  73. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/iris_vector_graph/gql/constants.py +0 -0
  74. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/iris_vector_graph/gql/engine.py +0 -0
  75. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/iris_vector_graph/gql/pooling.py +0 -0
  76. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/iris_vector_graph/gql/resolvers.py +0 -0
  77. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/iris_vector_graph/gql/schema.py +0 -0
  78. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/iris_vector_graph/models.py +0 -0
  79. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/iris_vector_graph/operators.py +0 -0
  80. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/iris_vector_graph/py.typed +0 -0
  81. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/iris_vector_graph/schema.py +0 -0
  82. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/iris_vector_graph/security.py +0 -0
  83. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/iris_vector_graph/status.py +0 -0
  84. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/iris_vector_graph/text_search.py +0 -0
  85. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/iris_vector_graph/utils.py +0 -0
  86. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/iris_vector_graph/vector_utils.py +0 -0
  87. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/sql/fhir_bridges.sql +0 -0
  88. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/sql/fraud_sample_data.sql +0 -0
  89. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/sql/globals_schema.sql +0 -0
  90. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/sql/graph_path_globals.sql +0 -0
  91. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/sql/graph_walk_tvf.sql +0 -0
  92. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/sql/migrations/000_base_schema_iris.sql +0 -0
  93. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/sql/migrations/001_add_nodepk_table.sql +0 -0
  94. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/sql/migrations/001_rollback_nodepk.sql +0 -0
  95. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/sql/migrations/002_add_fk_constraints.sql +0 -0
  96. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/sql/operators.sql +0 -0
  97. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/sql/operators_fixed.sql +0 -0
  98. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/sql/procedures/kg_PageRank.sql +0 -0
  99. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/sql/rdf_reifications.sql +0 -0
  100. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/sql/schema.sql +0 -0
  101. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/TESTING.md +0 -0
  102. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/benchmark_parser.py +0 -0
  103. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/benchmarks/benchmark_neo4j.py +0 -0
  104. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/benchmarks/bfs_benchmark.py +0 -0
  105. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/benchmarks/establish_baseline.py +0 -0
  106. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/benchmarks/graph_gen.py +0 -0
  107. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/benchmarks/iris_baseline_run.py +0 -0
  108. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/benchmarks/iris_os_run.py +0 -0
  109. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/benchmarks/load_neo4j.py +0 -0
  110. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/benchmarks/synthetic_baseline.csv +0 -0
  111. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/conftest.py +0 -0
  112. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/contract/__init__.py +0 -0
  113. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/contract/test_cypher_api.py +0 -0
  114. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/contract/test_cypher_api_errors.py +0 -0
  115. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/contract/test_graphql_queries.py +0 -0
  116. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/contract/test_graphql_schema.py +0 -0
  117. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/contract/test_ppr_api.py +0 -0
  118. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/curl_suite.sh +0 -0
  119. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/e2e/__init__.py +0 -0
  120. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/e2e/conftest.py +0 -0
  121. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/e2e/test_biomedical_demo.py +0 -0
  122. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/e2e/test_biomedical_ui.py +0 -0
  123. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/e2e/test_cypher_coerce_e2e.py +0 -0
  124. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/e2e/test_cypher_sprints_e2e.py +0 -0
  125. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/e2e/test_cypher_vector_search.py +0 -0
  126. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/e2e/test_fhir_bridges_e2e.py +0 -0
  127. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/e2e/test_fraud_demo.py +0 -0
  128. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/e2e/test_fraud_ui.py +0 -0
  129. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/e2e/test_gql_autogen_startup.py +0 -0
  130. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/e2e/test_gql_cypher_passthrough.py +0 -0
  131. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/e2e/test_gql_node_queries.py +0 -0
  132. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/e2e/test_gql_semantic_search.py +0 -0
  133. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/e2e/test_gql_traversal.py +0 -0
  134. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/e2e/test_graph_kernels_e2e.py +0 -0
  135. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/e2e/test_hla_kg_e2e.py +0 -0
  136. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/e2e/test_multi_query_engine_platform.py +0 -0
  137. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/e2e/test_named_paths_e2e.py +0 -0
  138. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/e2e/test_nkg_index_e2e.py +0 -0
  139. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/e2e/test_operator_wiring_e2e.py +0 -0
  140. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/e2e/test_plaid_search_e2e.py +0 -0
  141. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/e2e/test_ppr_cls_fast_path.py +0 -0
  142. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/e2e/test_ppr_guided_e2e.py +0 -0
  143. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/e2e/test_procedure_installation.py +0 -0
  144. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/e2e/test_reification_e2e.py +0 -0
  145. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/e2e/test_schema_procedures_e2e.py +0 -0
  146. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/e2e/test_subgraph_e2e.py +0 -0
  147. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/e2e/test_subquery_call_e2e.py +0 -0
  148. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/e2e/test_vecindex_e2e.py +0 -0
  149. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/integration/__init__.py +0 -0
  150. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/integration/conftest.py +0 -0
  151. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/integration/gql/__init__.py +0 -0
  152. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/integration/gql/test_graphql_mutations.py +0 -0
  153. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/integration/gql/test_graphql_nested_queries.py +0 -0
  154. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/integration/gql/test_graphql_queries.py +0 -0
  155. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/integration/gql/test_graphql_vector_search.py +0 -0
  156. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/integration/test_bidirectional_ppr.py +0 -0
  157. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/integration/test_cls_layer.py +0 -0
  158. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/integration/test_cypher_advanced.py +0 -0
  159. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/integration/test_cypher_enhancements.py +0 -0
  160. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/integration/test_cypher_multi_type.py +0 -0
  161. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/integration/test_cypher_rd.py +0 -0
  162. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/integration/test_cypher_rel_vars.py +0 -0
  163. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/integration/test_cypher_single_type.py +0 -0
  164. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/integration/test_cypher_untyped.py +0 -0
  165. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/integration/test_cypher_vector_search.py +0 -0
  166. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/integration/test_embeddings_api.py +0 -0
  167. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/integration/test_fastapi_graphql.py +0 -0
  168. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/integration/test_fhir_bridges_integration.py +0 -0
  169. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/integration/test_named_paths_integration.py +0 -0
  170. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/integration/test_nodepk_advanced_benchmarks.py +0 -0
  171. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/integration/test_nodepk_constraints.py +0 -0
  172. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/integration/test_nodepk_graph_analytics.py +0 -0
  173. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/integration/test_nodepk_migration.py +0 -0
  174. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/integration/test_nodepk_performance.py +0 -0
  175. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/integration/test_nodepk_production_scale.py +0 -0
  176. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/integration/test_objectscript_classes.py +0 -0
  177. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/integration/test_pagerank_sql_optimization.py +0 -0
  178. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/integration/test_reification_integration.py +0 -0
  179. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/integration/test_schema_migration.py +0 -0
  180. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/integration/test_stored_procedure_install.py +0 -0
  181. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/integration/test_subquery_call_integration.py +0 -0
  182. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/performance/conftest.py +0 -0
  183. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/performance/scale_benchmark.py +0 -0
  184. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/performance/test_ppr_stress.py +0 -0
  185. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/performance/test_stress_v1_5.py +0 -0
  186. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/python/run_all_tests.py +0 -0
  187. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/python/test_iris_rest_api.py +0 -0
  188. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/python/test_networkx_loader.py +0 -0
  189. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/python/test_performance_benchmarks.py +0 -0
  190. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/python/test_pyops_vector_conversion.py +0 -0
  191. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/python/test_python_operators.py +0 -0
  192. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/python/test_python_sdk.py +0 -0
  193. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/python/test_schema_validation.py +0 -0
  194. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/python/test_sql_queries.py +0 -0
  195. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/python/test_vector_functions.py +0 -0
  196. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/unit/cypher/__init__.py +0 -0
  197. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/unit/cypher/test_lexer.py +0 -0
  198. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/unit/cypher/test_lexer_advanced.py +0 -0
  199. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/unit/cypher/test_parser.py +0 -0
  200. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/unit/cypher/test_parser_advanced.py +0 -0
  201. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/unit/test_batch_mutations.py +0 -0
  202. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/unit/test_bfs_arno.py +0 -0
  203. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/unit/test_bm25_index.py +0 -0
  204. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/unit/test_bolt_server.py +0 -0
  205. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/unit/test_cls_deployment.py +0 -0
  206. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/unit/test_cypher_benchmark.py +0 -0
  207. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/unit/test_cypher_benchmark_scale.py +0 -0
  208. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/unit/test_cypher_case_when.py +0 -0
  209. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/unit/test_cypher_e2e_new_features.py +0 -0
  210. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/unit/test_cypher_functions.py +0 -0
  211. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/unit/test_cypher_parser.py +0 -0
  212. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/unit/test_cypher_posos_bugs.py +0 -0
  213. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/unit/test_cypher_procedures.py +0 -0
  214. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/unit/test_cypher_translator.py +0 -0
  215. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/unit/test_cypher_union_exists.py +0 -0
  216. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/unit/test_cypher_var_length.py +0 -0
  217. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/unit/test_cypher_vector_search.py +0 -0
  218. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/unit/test_edge_embeddings.py +0 -0
  219. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/unit/test_edgeprop_ndjson.py +0 -0
  220. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/unit/test_embedded.py +0 -0
  221. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/unit/test_engine_dimension_fix.py +0 -0
  222. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/unit/test_engine_embeddings.py +0 -0
  223. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/unit/test_engine_status.py +0 -0
  224. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/unit/test_fhir_bridges.py +0 -0
  225. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/unit/test_get_nodes.py +0 -0
  226. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/unit/test_graph_kernels.py +0 -0
  227. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/unit/test_graphql_dataloader.py +0 -0
  228. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/unit/test_ingest_formats.py +0 -0
  229. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/unit/test_ivf_index.py +0 -0
  230. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/unit/test_named_graphs.py +0 -0
  231. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/unit/test_named_paths.py +0 -0
  232. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/unit/test_operators_wiring.py +0 -0
  233. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/unit/test_plaid_search.py +0 -0
  234. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/unit/test_ppr_guided_subgraph.py +0 -0
  235. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/unit/test_reification.py +0 -0
  236. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/unit/test_schema_init.py +0 -0
  237. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/unit/test_schema_procedures.py +0 -0
  238. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/unit/test_shortest_path.py +0 -0
  239. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/unit/test_snapshot.py +0 -0
  240. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/unit/test_sql_splitter.py +0 -0
  241. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/unit/test_sql_table_bridge.py +0 -0
  242. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/unit/test_subgraph.py +0 -0
  243. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/unit/test_subquery_call.py +0 -0
  244. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/unit/test_temporal_cypher.py +0 -0
  245. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/unit/test_temporal_edges.py +0 -0
  246. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/unit/test_unified_edge_store.py +0 -0
  247. {iris_vector_graph-1.77.0 → iris_vector_graph-1.78.0}/tests/unit/test_weighted_shortest_path.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: iris-vector-graph
3
- Version: 1.77.0
3
+ Version: 1.78.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
@@ -1686,13 +1686,8 @@ def translate_subquery_call(
1686
1686
  is_correlated = len(subquery.import_variables) > 0
1687
1687
 
1688
1688
  if is_correlated:
1689
- if not inner.return_clause or len(inner.return_clause.items) != 1:
1690
- raise ValueError(
1691
- "Correlated subquery Phase 1 requires exactly one RETURN column (scalar)"
1692
- )
1693
-
1694
- ret_item = inner.return_clause.items[0]
1695
- alias = ret_item.alias or "sub_result"
1689
+ if not inner.return_clause:
1690
+ raise ValueError("Correlated subquery requires a RETURN clause")
1696
1691
 
1697
1692
  child_ctx = TranslationContext()
1698
1693
  child_ctx.input_params = context.input_params
@@ -1712,49 +1707,132 @@ def translate_subquery_call(
1712
1707
  elif isinstance(clause, ast.WhereClause):
1713
1708
  translate_where_clause(clause, child_ctx)
1714
1709
 
1715
- inner_expr = translate_expression(
1716
- ret_item.expression, child_ctx, segment="select"
1710
+ num_return_cols = len(inner.return_clause.items)
1711
+ is_single_scalar = (
1712
+ num_return_cols == 1
1713
+ and isinstance(
1714
+ inner.return_clause.items[0].expression,
1715
+ (ast.AggregationFunction,),
1716
+ )
1717
1717
  )
1718
1718
 
1719
- inner_sql_parts = [f"SELECT {inner_expr}"]
1720
- if child_ctx.from_clauses:
1721
- inner_sql_parts.append(f"FROM {', '.join(child_ctx.from_clauses)}")
1722
- if child_ctx.join_clauses:
1723
- inner_sql_parts.extend(child_ctx.join_clauses)
1724
- elif child_ctx.join_clauses:
1725
- first_join = (
1726
- child_ctx.join_clauses[0]
1727
- .replace("JOIN ", "", 1)
1728
- .replace("CROSS JOIN ", "", 1)
1719
+ if is_single_scalar:
1720
+ ret_item = inner.return_clause.items[0]
1721
+ alias = ret_item.alias or "sub_result"
1722
+ inner_expr = translate_expression(
1723
+ ret_item.expression, child_ctx, segment="select"
1729
1724
  )
1730
- on_idx = first_join.find(" ON ")
1731
- if on_idx > 0:
1732
- from_part = first_join[:on_idx]
1733
- on_part = first_join[on_idx + 4 :]
1734
- inner_sql_parts.append(f"FROM {from_part}")
1735
- if child_ctx.join_clauses[1:]:
1736
- inner_sql_parts.extend(child_ctx.join_clauses[1:])
1737
- if child_ctx.where_conditions:
1738
- child_ctx.where_conditions.insert(0, on_part)
1725
+ inner_sql_parts = [f"SELECT {inner_expr}"]
1726
+ if child_ctx.from_clauses:
1727
+ inner_sql_parts.append(f"FROM {', '.join(child_ctx.from_clauses)}")
1728
+ if child_ctx.join_clauses:
1729
+ inner_sql_parts.extend(child_ctx.join_clauses)
1730
+ elif child_ctx.join_clauses:
1731
+ first_join = (
1732
+ child_ctx.join_clauses[0]
1733
+ .replace("JOIN ", "", 1)
1734
+ .replace("CROSS JOIN ", "", 1)
1735
+ )
1736
+ on_idx = first_join.find(" ON ")
1737
+ if on_idx > 0:
1738
+ from_part = first_join[:on_idx]
1739
+ on_part = first_join[on_idx + 4 :]
1740
+ inner_sql_parts.append(f"FROM {from_part}")
1741
+ if child_ctx.join_clauses[1:]:
1742
+ inner_sql_parts.extend(child_ctx.join_clauses[1:])
1743
+ if child_ctx.where_conditions:
1744
+ child_ctx.where_conditions.insert(0, on_part)
1745
+ else:
1746
+ child_ctx.where_conditions.append(on_part)
1739
1747
  else:
1740
- child_ctx.where_conditions.append(on_part)
1741
- else:
1742
- inner_sql_parts.append(f"FROM {first_join}")
1743
- if child_ctx.join_clauses[1:]:
1744
- inner_sql_parts.extend(child_ctx.join_clauses[1:])
1745
- if child_ctx.where_conditions:
1746
- inner_sql_parts.append(f"WHERE {' AND '.join(child_ctx.where_conditions)}")
1747
-
1748
- scalar_sql = "\n".join(inner_sql_parts)
1749
- all_params = (
1750
- child_ctx.select_params + child_ctx.join_params + child_ctx.where_params
1751
- )
1752
- for p in all_params:
1753
- context.select_params.append(p)
1754
-
1755
- context.select_items.append(f"COALESCE(({scalar_sql}), 0) AS {alias}")
1756
- context.scalar_variables.add(alias)
1757
- context.variable_aliases[alias] = "scalar"
1748
+ inner_sql_parts.append(f"FROM {first_join}")
1749
+ if child_ctx.join_clauses[1:]:
1750
+ inner_sql_parts.extend(child_ctx.join_clauses[1:])
1751
+ if child_ctx.where_conditions:
1752
+ inner_sql_parts.append(f"WHERE {' AND '.join(child_ctx.where_conditions)}")
1753
+ scalar_sql = "\n".join(inner_sql_parts)
1754
+ all_params = (
1755
+ child_ctx.select_params + child_ctx.join_params + child_ctx.where_params
1756
+ )
1757
+ for p in all_params:
1758
+ context.select_params.append(p)
1759
+ context.select_items.append(f"COALESCE(({scalar_sql}), 0) AS {alias}")
1760
+ context.scalar_variables.add(alias)
1761
+ context.variable_aliases[alias] = "scalar"
1762
+ else:
1763
+ child_ctx_lateral = TranslationContext()
1764
+ child_ctx_lateral.input_params = context.input_params
1765
+ child_ctx_lateral._alias_counter = context._alias_counter
1766
+ for var in subquery.import_variables:
1767
+ child_ctx_lateral.variable_aliases[var] = context.variable_aliases[var]
1768
+
1769
+ def _inline_val(v):
1770
+ if isinstance(v, str): return f"'{v.replace(chr(39), chr(39)+chr(39))}'"
1771
+ if isinstance(v, bool): return "1" if v else "0"
1772
+ if v is None: return "NULL"
1773
+ return str(v)
1774
+
1775
+ def _inline_join_param(val):
1776
+ return _inline_val(val)
1777
+ def _inline_where_param(val):
1778
+ return _inline_val(val)
1779
+ def _inline_select_param(val):
1780
+ return _inline_val(val)
1781
+
1782
+ child_ctx_lateral.add_join_param = _inline_join_param
1783
+ child_ctx_lateral.add_where_param = _inline_where_param
1784
+ child_ctx_lateral.add_select_param = _inline_select_param
1785
+
1786
+ for part in inner.query_parts:
1787
+ for clause in part.clauses:
1788
+ if isinstance(clause, ast.MatchClause):
1789
+ translate_match_clause(clause, child_ctx_lateral, metadata)
1790
+ elif isinstance(clause, ast.WhereClause):
1791
+ translate_where_clause(clause, child_ctx_lateral)
1792
+ translate_return_clause(inner.return_clause, child_ctx_lateral)
1793
+ if not child_ctx_lateral.from_clauses and child_ctx_lateral.join_clauses:
1794
+ first_jc = child_ctx_lateral.join_clauses[0]
1795
+ for prefix in ("CROSS JOIN ", "LEFT OUTER JOIN ", "JOIN "):
1796
+ if first_jc.startswith(prefix):
1797
+ rest = first_jc[len(prefix):]
1798
+ on_idx = rest.find(" ON ")
1799
+ if on_idx > 0:
1800
+ table_part = rest[:on_idx]
1801
+ cond_part = rest[on_idx + 4:]
1802
+ child_ctx_lateral.from_clauses.append(table_part)
1803
+ if cond_part.strip() and cond_part.strip() != "1=1":
1804
+ child_ctx_lateral.where_conditions.insert(0, cond_part)
1805
+ child_ctx_lateral.join_clauses = child_ctx_lateral.join_clauses[1:]
1806
+ else:
1807
+ child_ctx_lateral.from_clauses.append(rest)
1808
+ child_ctx_lateral.join_clauses = child_ctx_lateral.join_clauses[1:]
1809
+ break
1810
+ inner_sql_parts_lat = [
1811
+ f"SELECT {'DISTINCT ' if inner.return_clause.distinct else ''}{', '.join(child_ctx_lateral.select_items)}"
1812
+ ]
1813
+ if child_ctx_lateral.from_clauses:
1814
+ inner_sql_parts_lat.append(f"FROM {', '.join(child_ctx_lateral.from_clauses)}")
1815
+ if child_ctx_lateral.join_clauses:
1816
+ inner_sql_parts_lat.extend(child_ctx_lateral.join_clauses)
1817
+ if child_ctx_lateral.where_conditions:
1818
+ inner_sql_parts_lat.append(f"WHERE {' AND '.join(child_ctx_lateral.where_conditions)}")
1819
+ inner_sql = "\n".join(inner_sql_parts_lat)
1820
+ lat_alias = context.next_alias("lat")
1821
+ context.join_clauses.append(
1822
+ f"CROSS JOIN LATERAL (\n{inner_sql}\n) {lat_alias}"
1823
+ )
1824
+ for item in inner.return_clause.items:
1825
+ col_alias = item.alias
1826
+ if col_alias is None:
1827
+ if isinstance(item.expression, ast.Variable):
1828
+ col_alias = item.expression.name
1829
+ elif isinstance(item.expression, ast.PropertyReference):
1830
+ col_alias = f"{item.expression.variable}_{item.expression.property_name}"
1831
+ else:
1832
+ col_alias = f"col_{len(context.scalar_variables)}"
1833
+ if col_alias:
1834
+ context.variable_aliases[col_alias] = lat_alias
1835
+ context.scalar_variables.add(col_alias)
1758
1836
  else:
1759
1837
  child_ctx = TranslationContext()
1760
1838
  child_ctx.input_params = context.input_params
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "iris-vector-graph"
7
- version = "1.77.0"
7
+ version = "1.78.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"