lora-python 0.8.1__tar.gz → 0.8.2__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 (249) hide show
  1. {lora_python-0.8.1 → lora_python-0.8.2}/Cargo.lock +16 -16
  2. {lora_python-0.8.1 → lora_python-0.8.2}/Cargo.toml +11 -11
  3. {lora_python-0.8.1 → lora_python-0.8.2}/PKG-INFO +1 -1
  4. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-database/src/database/mod.rs +16 -14
  5. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-database/src/database/write_guard.rs +80 -6
  6. {lora_python-0.8.1 → lora_python-0.8.2}/pyproject.toml +1 -1
  7. {lora_python-0.8.1 → lora_python-0.8.2}/LICENSE +0 -0
  8. {lora_python-0.8.1 → lora_python-0.8.2}/README.md +0 -0
  9. {lora_python-0.8.1 → lora_python-0.8.2}/crates/bindings/lora-python/.gitignore +0 -0
  10. {lora_python-0.8.1 → lora_python-0.8.2}/crates/bindings/lora-python/Cargo.toml +0 -0
  11. {lora_python-0.8.1 → lora_python-0.8.2}/crates/bindings/lora-python/LICENSE +0 -0
  12. {lora_python-0.8.1 → lora_python-0.8.2}/crates/bindings/lora-python/README.md +0 -0
  13. {lora_python-0.8.1 → lora_python-0.8.2}/crates/bindings/lora-python/build.rs +0 -0
  14. {lora_python-0.8.1 → lora_python-0.8.2}/crates/bindings/lora-python/examples/async_demo.py +0 -0
  15. {lora_python-0.8.1 → lora_python-0.8.2}/crates/bindings/lora-python/examples/basic.py +0 -0
  16. {lora_python-0.8.1 → lora_python-0.8.2}/crates/bindings/lora-python/src/errors.rs +0 -0
  17. {lora_python-0.8.1 → lora_python-0.8.2}/crates/bindings/lora-python/src/from_python.rs +0 -0
  18. {lora_python-0.8.1 → lora_python-0.8.2}/crates/bindings/lora-python/src/lib.rs +0 -0
  19. {lora_python-0.8.1 → lora_python-0.8.2}/crates/bindings/lora-python/src/to_python.rs +0 -0
  20. {lora_python-0.8.1 → lora_python-0.8.2}/crates/bindings/lora-python/tests/test_async.py +0 -0
  21. {lora_python-0.8.1 → lora_python-0.8.2}/crates/bindings/lora-python/tests/test_explain_profile.py +0 -0
  22. {lora_python-0.8.1 → lora_python-0.8.2}/crates/bindings/lora-python/tests/test_sync.py +0 -0
  23. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-analyzer/Cargo.toml +0 -0
  24. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-analyzer/src/analyzer/clauses.rs +0 -0
  25. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-analyzer/src/analyzer/expressions.rs +0 -0
  26. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-analyzer/src/analyzer/mod.rs +0 -0
  27. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-analyzer/src/analyzer/patterns.rs +0 -0
  28. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-analyzer/src/analyzer/state.rs +0 -0
  29. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-analyzer/src/analyzer/tests.rs +0 -0
  30. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-analyzer/src/errors.rs +0 -0
  31. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-analyzer/src/lib.rs +0 -0
  32. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-analyzer/src/resolved.rs +0 -0
  33. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-analyzer/src/scope.rs +0 -0
  34. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-analyzer/src/symbols.rs +0 -0
  35. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-analyzer/tests/error_messages.rs +0 -0
  36. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-ast/Cargo.toml +0 -0
  37. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-ast/src/ast.rs +0 -0
  38. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-ast/src/lib.rs +0 -0
  39. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-compiler/Cargo.toml +0 -0
  40. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-compiler/src/lib.rs +0 -0
  41. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-compiler/src/logical.rs +0 -0
  42. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-compiler/src/optimizer.rs +0 -0
  43. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-compiler/src/pattern.rs +0 -0
  44. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-compiler/src/physical.rs +0 -0
  45. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-compiler/src/plan_tree.rs +0 -0
  46. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-compiler/src/planner.rs +0 -0
  47. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-database/Cargo.toml +0 -0
  48. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-database/benches/advanced_benchmarks.rs +0 -0
  49. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-database/benches/concurrent_benchmarks.rs +0 -0
  50. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-database/benches/engine_benchmarks.rs +0 -0
  51. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-database/benches/fixtures.rs +0 -0
  52. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-database/benches/perf_smoke_baseline.json +0 -0
  53. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-database/benches/perf_smoke_benchmarks.rs +0 -0
  54. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-database/benches/scale_benchmarks.rs +0 -0
  55. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-database/benches/temporal_spatial_benchmarks.rs +0 -0
  56. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-database/benches/wal_benchmarks.rs +0 -0
  57. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-database/src/database/builder.rs +0 -0
  58. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-database/src/database/compile.rs +0 -0
  59. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-database/src/database/execute.rs +0 -0
  60. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-database/src/database/explain.rs +0 -0
  61. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-database/src/database/graph_api.rs +0 -0
  62. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-database/src/database/occ.rs +0 -0
  63. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-database/src/database/profile.rs +0 -0
  64. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-database/src/database/pull_mode.rs +0 -0
  65. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-database/src/database/replay.rs +0 -0
  66. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-database/src/database/stream.rs +0 -0
  67. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-database/src/error.rs +0 -0
  68. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-database/src/explain.rs +0 -0
  69. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-database/src/lib.rs +0 -0
  70. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-database/src/live_store.rs +0 -0
  71. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-database/src/named.rs +0 -0
  72. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-database/src/plan_cache.rs +0 -0
  73. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-database/src/snapshot/json.rs +0 -0
  74. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-database/src/snapshot/mod.rs +0 -0
  75. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-database/src/snapshot/store.rs +0 -0
  76. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-database/src/stream.rs +0 -0
  77. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-database/src/transaction.rs +0 -0
  78. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-database/src/wal/admin.rs +0 -0
  79. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-database/src/wal/archive/format.rs +0 -0
  80. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-database/src/wal/archive/lock.rs +0 -0
  81. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-database/src/wal/archive/platform.rs +0 -0
  82. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-database/src/wal/archive/worker.rs +0 -0
  83. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-database/src/wal/archive/workspace.rs +0 -0
  84. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-database/src/wal/archive.rs +0 -0
  85. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-database/src/wal/mod.rs +0 -0
  86. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-database/src/wal/write_scope.rs +0 -0
  87. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-database/tests/advanced_queries.rs +0 -0
  88. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-database/tests/aggregation.rs +0 -0
  89. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-database/tests/backend_stub.rs +0 -0
  90. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-database/tests/binary.rs +0 -0
  91. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-database/tests/create.rs +0 -0
  92. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-database/tests/error_messages.rs +0 -0
  93. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-database/tests/errors.rs +0 -0
  94. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-database/tests/explain_profile.rs +0 -0
  95. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-database/tests/expressions.rs +0 -0
  96. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-database/tests/functions_extended.rs +0 -0
  97. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-database/tests/invariants.rs +0 -0
  98. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-database/tests/managed_snapshots.rs +0 -0
  99. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-database/tests/match.rs +0 -0
  100. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-database/tests/merge.rs +0 -0
  101. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-database/tests/ordering.rs +0 -0
  102. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-database/tests/parameters.rs +0 -0
  103. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-database/tests/parser.rs +0 -0
  104. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-database/tests/paths.rs +0 -0
  105. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-database/tests/projection.rs +0 -0
  106. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-database/tests/scale.rs +0 -0
  107. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-database/tests/seeds.rs +0 -0
  108. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-database/tests/snapshot.rs +0 -0
  109. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-database/tests/spatial.rs +0 -0
  110. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-database/tests/temporal.rs +0 -0
  111. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-database/tests/test_helpers.rs +0 -0
  112. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-database/tests/transactions.rs +0 -0
  113. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-database/tests/types_advanced.rs +0 -0
  114. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-database/tests/union.rs +0 -0
  115. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-database/tests/update.rs +0 -0
  116. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-database/tests/vectors.rs +0 -0
  117. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-database/tests/wal.rs +0 -0
  118. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-database/tests/where_clause.rs +0 -0
  119. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-database/tests/with.rs +0 -0
  120. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-executor/Cargo.toml +0 -0
  121. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-executor/src/errors.rs +0 -0
  122. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-executor/src/eval/binops.rs +0 -0
  123. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-executor/src/eval/errors.rs +0 -0
  124. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-executor/src/eval/expr.rs +0 -0
  125. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-executor/src/eval/functions.rs +0 -0
  126. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-executor/src/eval/mod.rs +0 -0
  127. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-executor/src/eval/point.rs +0 -0
  128. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-executor/src/eval/vector.rs +0 -0
  129. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-executor/src/executor/helpers.rs +0 -0
  130. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-executor/src/executor/immutable.rs +0 -0
  131. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-executor/src/executor/mod.rs +0 -0
  132. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-executor/src/executor/mutable.rs +0 -0
  133. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-executor/src/lib.rs +0 -0
  134. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-executor/src/profile.rs +0 -0
  135. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-executor/src/pull/aggregate.rs +0 -0
  136. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-executor/src/pull/columns.rs +0 -0
  137. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-executor/src/pull/context.rs +0 -0
  138. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-executor/src/pull/expand.rs +0 -0
  139. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-executor/src/pull/filter.rs +0 -0
  140. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-executor/src/pull/hydration.rs +0 -0
  141. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-executor/src/pull/mod.rs +0 -0
  142. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-executor/src/pull/mutable.rs +0 -0
  143. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-executor/src/pull/optional.rs +0 -0
  144. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-executor/src/pull/path.rs +0 -0
  145. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-executor/src/pull/projection.rs +0 -0
  146. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-executor/src/pull/scan.rs +0 -0
  147. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-executor/src/pull/shape.rs +0 -0
  148. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-executor/src/pull/sort.rs +0 -0
  149. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-executor/src/pull/source.rs +0 -0
  150. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-executor/src/pull/tests.rs +0 -0
  151. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-executor/src/pull/traits.rs +0 -0
  152. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-executor/src/pull/union.rs +0 -0
  153. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-executor/src/value.rs +0 -0
  154. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-executor/tests/error_messages.rs +0 -0
  155. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-parser/Cargo.toml +0 -0
  156. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-parser/src/cypher.pest +0 -0
  157. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-parser/src/errors.rs +0 -0
  158. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-parser/src/lib.rs +0 -0
  159. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-parser/src/parser/clauses.rs +0 -0
  160. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-parser/src/parser/expressions.rs +0 -0
  161. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-parser/src/parser/literals.rs +0 -0
  162. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-parser/src/parser/mod.rs +0 -0
  163. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-parser/src/parser/patterns.rs +0 -0
  164. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-parser/src/parser/query.rs +0 -0
  165. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-parser/src/parser/tests.rs +0 -0
  166. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-parser/src/parser/util.rs +0 -0
  167. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-parser/tests/error_messages.rs +0 -0
  168. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-snapshot/Cargo.toml +0 -0
  169. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-snapshot/src/body.rs +0 -0
  170. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-snapshot/src/codec.rs +0 -0
  171. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-snapshot/src/columnar.rs +0 -0
  172. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-snapshot/src/envelope.rs +0 -0
  173. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-snapshot/src/errors.rs +0 -0
  174. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-snapshot/src/format.rs +0 -0
  175. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-snapshot/src/lib.rs +0 -0
  176. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-snapshot/src/options.rs +0 -0
  177. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-snapshot/src/tests.rs +0 -0
  178. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-snapshot/src/transform.rs +0 -0
  179. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-snapshot/src/view.rs +0 -0
  180. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-snapshot/tests/error_messages.rs +0 -0
  181. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-store/Cargo.toml +0 -0
  182. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-store/src/lib.rs +0 -0
  183. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-store/src/lock_table.rs +0 -0
  184. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-store/src/memory/graph.rs +0 -0
  185. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-store/src/memory/impls.rs +0 -0
  186. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-store/src/memory/mod.rs +0 -0
  187. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-store/src/memory/property_index.rs +0 -0
  188. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-store/src/memory/snapshot.rs +0 -0
  189. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-store/src/memory/tests.rs +0 -0
  190. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-store/src/mutation.rs +0 -0
  191. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-store/src/snapshot.rs +0 -0
  192. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-store/src/traits.rs +0 -0
  193. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-store/src/types/binary/mod.rs +0 -0
  194. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-store/src/types/binary/tests.rs +0 -0
  195. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-store/src/types/binary/traits.rs +0 -0
  196. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-store/src/types/binary/types.rs +0 -0
  197. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-store/src/types/graph.rs +0 -0
  198. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-store/src/types/mod.rs +0 -0
  199. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-store/src/types/property_value.rs +0 -0
  200. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-store/src/types/spatial/distance.rs +0 -0
  201. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-store/src/types/spatial/mod.rs +0 -0
  202. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-store/src/types/spatial/point.rs +0 -0
  203. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-store/src/types/spatial/srid.rs +0 -0
  204. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-store/src/types/spatial/tests.rs +0 -0
  205. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-store/src/types/temporal/calendar.rs +0 -0
  206. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-store/src/types/temporal/date.rs +0 -0
  207. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-store/src/types/temporal/datetime.rs +0 -0
  208. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-store/src/types/temporal/duration.rs +0 -0
  209. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-store/src/types/temporal/format.rs +0 -0
  210. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-store/src/types/temporal/mod.rs +0 -0
  211. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-store/src/types/temporal/parsing.rs +0 -0
  212. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-store/src/types/temporal/time.rs +0 -0
  213. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-store/src/types/vector/build.rs +0 -0
  214. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-store/src/types/vector/mod.rs +0 -0
  215. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-store/src/types/vector/similarity.rs +0 -0
  216. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-store/src/types/vector/tests.rs +0 -0
  217. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-store/src/types/vector/types.rs +0 -0
  218. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-store/tests/error_messages.rs +0 -0
  219. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-wal/Cargo.toml +0 -0
  220. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-wal/src/codec/decode.rs +0 -0
  221. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-wal/src/codec/encode.rs +0 -0
  222. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-wal/src/codec/format.rs +0 -0
  223. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-wal/src/codec/mod.rs +0 -0
  224. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-wal/src/codec/tests.rs +0 -0
  225. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-wal/src/config.rs +0 -0
  226. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-wal/src/dir.rs +0 -0
  227. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-wal/src/errors.rs +0 -0
  228. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-wal/src/lib.rs +0 -0
  229. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-wal/src/lock.rs +0 -0
  230. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-wal/src/lsn.rs +0 -0
  231. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-wal/src/record.rs +0 -0
  232. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-wal/src/recorder/errors.rs +0 -0
  233. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-wal/src/recorder/mirror.rs +0 -0
  234. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-wal/src/recorder/mod.rs +0 -0
  235. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-wal/src/recorder/recorder.rs +0 -0
  236. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-wal/src/recorder/tests.rs +0 -0
  237. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-wal/src/replay.rs +0 -0
  238. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-wal/src/segment.rs +0 -0
  239. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-wal/src/testing.rs +0 -0
  240. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-wal/src/wal/group_flusher.rs +0 -0
  241. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-wal/src/wal/mod.rs +0 -0
  242. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-wal/src/wal/tests.rs +0 -0
  243. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-wal/src/wal/wal.rs +0 -0
  244. {lora_python-0.8.1 → lora_python-0.8.2}/crates/lora-wal/tests/error_messages.rs +0 -0
  245. {lora_python-0.8.1 → lora_python-0.8.2}/python/lora_python/__init__.py +0 -0
  246. {lora_python-0.8.1 → lora_python-0.8.2}/python/lora_python/_async.py +0 -0
  247. {lora_python-0.8.1 → lora_python-0.8.2}/python/lora_python/_native.pyi +0 -0
  248. {lora_python-0.8.1 → lora_python-0.8.2}/python/lora_python/py.typed +0 -0
  249. {lora_python-0.8.1 → lora_python-0.8.2}/python/lora_python/types.py +0 -0
@@ -797,7 +797,7 @@ checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897"
797
797
 
798
798
  [[package]]
799
799
  name = "lora-analyzer"
800
- version = "0.8.1"
800
+ version = "0.8.2"
801
801
  dependencies = [
802
802
  "lora-ast",
803
803
  "lora-parser",
@@ -807,14 +807,14 @@ dependencies = [
807
807
 
808
808
  [[package]]
809
809
  name = "lora-ast"
810
- version = "0.8.1"
810
+ version = "0.8.2"
811
811
  dependencies = [
812
812
  "smallvec 2.0.0-alpha.12",
813
813
  ]
814
814
 
815
815
  [[package]]
816
816
  name = "lora-binding-buffer"
817
- version = "0.8.1"
817
+ version = "0.8.2"
818
818
  dependencies = [
819
819
  "lora-database",
820
820
  "lora-store",
@@ -822,7 +822,7 @@ dependencies = [
822
822
 
823
823
  [[package]]
824
824
  name = "lora-compiler"
825
- version = "0.8.1"
825
+ version = "0.8.2"
826
826
  dependencies = [
827
827
  "lora-analyzer",
828
828
  "lora-ast",
@@ -830,7 +830,7 @@ dependencies = [
830
830
 
831
831
  [[package]]
832
832
  name = "lora-database"
833
- version = "0.8.1"
833
+ version = "0.8.2"
834
834
  dependencies = [
835
835
  "anyhow",
836
836
  "arc-swap",
@@ -852,7 +852,7 @@ dependencies = [
852
852
 
853
853
  [[package]]
854
854
  name = "lora-executor"
855
- version = "0.8.1"
855
+ version = "0.8.2"
856
856
  dependencies = [
857
857
  "lora-analyzer",
858
858
  "lora-ast",
@@ -867,7 +867,7 @@ dependencies = [
867
867
 
868
868
  [[package]]
869
869
  name = "lora-ffi"
870
- version = "0.8.1"
870
+ version = "0.8.2"
871
871
  dependencies = [
872
872
  "anyhow",
873
873
  "lora-binding-buffer",
@@ -879,7 +879,7 @@ dependencies = [
879
879
 
880
880
  [[package]]
881
881
  name = "lora-node"
882
- version = "0.8.1"
882
+ version = "0.8.2"
883
883
  dependencies = [
884
884
  "anyhow",
885
885
  "lora-binding-buffer",
@@ -894,7 +894,7 @@ dependencies = [
894
894
 
895
895
  [[package]]
896
896
  name = "lora-parser"
897
- version = "0.8.1"
897
+ version = "0.8.2"
898
898
  dependencies = [
899
899
  "lora-ast",
900
900
  "pest",
@@ -905,7 +905,7 @@ dependencies = [
905
905
 
906
906
  [[package]]
907
907
  name = "lora-python"
908
- version = "0.8.1"
908
+ version = "0.8.2"
909
909
  dependencies = [
910
910
  "anyhow",
911
911
  "lora-database",
@@ -917,7 +917,7 @@ dependencies = [
917
917
 
918
918
  [[package]]
919
919
  name = "lora-server"
920
- version = "0.8.1"
920
+ version = "0.8.2"
921
921
  dependencies = [
922
922
  "anyhow",
923
923
  "axum",
@@ -931,7 +931,7 @@ dependencies = [
931
931
 
932
932
  [[package]]
933
933
  name = "lora-snapshot"
934
- version = "0.8.1"
934
+ version = "0.8.2"
935
935
  dependencies = [
936
936
  "argon2",
937
937
  "bincode",
@@ -946,7 +946,7 @@ dependencies = [
946
946
 
947
947
  [[package]]
948
948
  name = "lora-store"
949
- version = "0.8.1"
949
+ version = "0.8.2"
950
950
  dependencies = [
951
951
  "bincode",
952
952
  "crc32fast",
@@ -958,7 +958,7 @@ dependencies = [
958
958
 
959
959
  [[package]]
960
960
  name = "lora-wal"
961
- version = "0.8.1"
961
+ version = "0.8.2"
962
962
  dependencies = [
963
963
  "crc32fast",
964
964
  "lora-store",
@@ -968,7 +968,7 @@ dependencies = [
968
968
 
969
969
  [[package]]
970
970
  name = "lora-wasm"
971
- version = "0.8.1"
971
+ version = "0.8.2"
972
972
  dependencies = [
973
973
  "anyhow",
974
974
  "console_error_panic_hook",
@@ -984,7 +984,7 @@ dependencies = [
984
984
 
985
985
  [[package]]
986
986
  name = "lora_ruby"
987
- version = "0.8.1"
987
+ version = "0.8.2"
988
988
  dependencies = [
989
989
  "anyhow",
990
990
  "lora-database",
@@ -4,7 +4,7 @@ resolver = "2"
4
4
 
5
5
  [workspace.package]
6
6
  edition = "2021"
7
- version = "0.8.1"
7
+ version = "0.8.2"
8
8
  license = "BUSL-1.1"
9
9
  authors = ["LoraDB, Inc."]
10
10
  repository = "https://github.com/lora-db/lora"
@@ -15,16 +15,16 @@ rust-version = "1.87"
15
15
  # Internal crates — versions are kept in lockstep with [workspace.package].version
16
16
  # by `scripts/sync-versions.mjs`. Both `path` and `version` are set so that
17
17
  # `cargo publish` works (crates.io cannot resolve path-only deps).
18
- lora-ast = { path = "crates/lora-ast", version = "=0.8.1" }
19
- lora-parser = { path = "crates/lora-parser", version = "=0.8.1" }
20
- lora-analyzer = { path = "crates/lora-analyzer", version = "=0.8.1" }
21
- lora-compiler = { path = "crates/lora-compiler", version = "=0.8.1" }
22
- lora-store = { path = "crates/lora-store", version = "=0.8.1" }
23
- lora-snapshot = { path = "crates/lora-snapshot", version = "=0.8.1", default-features = false }
24
- lora-wal = { path = "crates/lora-wal", version = "=0.8.1" }
25
- lora-executor = { path = "crates/lora-executor", version = "=0.8.1" }
26
- lora-database = { path = "crates/lora-database", version = "=0.8.1" }
27
- lora-binding-buffer = { path = "crates/bindings/lora-binding-buffer", version = "=0.8.1" }
18
+ lora-ast = { path = "crates/lora-ast", version = "=0.8.2" }
19
+ lora-parser = { path = "crates/lora-parser", version = "=0.8.2" }
20
+ lora-analyzer = { path = "crates/lora-analyzer", version = "=0.8.2" }
21
+ lora-compiler = { path = "crates/lora-compiler", version = "=0.8.2" }
22
+ lora-store = { path = "crates/lora-store", version = "=0.8.2" }
23
+ lora-snapshot = { path = "crates/lora-snapshot", version = "=0.8.2", default-features = false }
24
+ lora-wal = { path = "crates/lora-wal", version = "=0.8.2" }
25
+ lora-executor = { path = "crates/lora-executor", version = "=0.8.2" }
26
+ lora-database = { path = "crates/lora-database", version = "=0.8.2" }
27
+ lora-binding-buffer = { path = "crates/bindings/lora-binding-buffer", version = "=0.8.2" }
28
28
 
29
29
  # External crates.
30
30
  anyhow = "1"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: lora-python
3
- Version: 0.8.1
3
+ Version: 0.8.2
4
4
  Classifier: Programming Language :: Rust
5
5
  Classifier: Programming Language :: Python :: 3
6
6
  Classifier: Programming Language :: Python :: 3.8
@@ -26,7 +26,6 @@ use crate::explain::{QueryPlan, QueryProfile};
26
26
  use crate::live_store::LiveStore;
27
27
  use crate::plan_cache::PlanCache;
28
28
  use crate::snapshot::ManagedSnapshotStore;
29
- use crate::wal::write_scope::WalAbortPolicy;
30
29
 
31
30
  /// Minimal abstraction any transport can depend on to run Lora queries.
32
31
  ///
@@ -192,14 +191,12 @@ where
192
191
  /// Drop every node and relationship, returning WAL/archive errors to the
193
192
  /// caller.
194
193
  ///
195
- /// When a WAL is attached, the clear is wrapped in `arm`/`commit` so the
196
- /// `MutationEvent::Clear` fired by the store reaches the log inside a
197
- /// transaction. If a failure happens after the in-memory graph has been
198
- /// cleared, the recorder is poisoned by the failing WAL path and future
199
- /// writes fail until the database is reopened from durable state.
194
+ /// When a WAL is attached, the buffered `MutationEvent::Clear` is appended
195
+ /// to the log on success. The clear runs in place against the live
196
+ /// graph via the same fast path as `with_logged_store_mut`, so a
197
+ /// large graph clear no longer pays an O(N+E) snapshot clone.
200
198
  pub fn try_clear(&self) -> Result<(), LoraError> {
201
- let guard = self.write_store();
202
- self.with_logged_write_guard(guard, WalAbortPolicy::AbortOnly, |store| {
199
+ self.with_logged_store_mut(|store| {
203
200
  store.clear();
204
201
  Ok(())
205
202
  })
@@ -236,13 +233,18 @@ where
236
233
 
237
234
  /// Run a closure with an exclusive borrow of the underlying store. Reserved
238
235
  /// for admin paths (restore, bulk load); regular mutation goes through
239
- /// `execute_with_params`. The closure mutates a staged copy that is
240
- /// published atomically when the closure returns.
236
+ /// `execute_with_params`. The closure mutates the live graph in place
237
+ /// via `Arc::make_mut`, so callers don't pay an O(N+E) snapshot clone
238
+ /// just to overwrite the graph. Concurrent readers, when present,
239
+ /// force a single CoW clone and keep observing their pre-mutation
240
+ /// snapshot via the `Arc<S>` they already hold.
241
241
  pub fn with_store_mut<R>(&self, f: impl FnOnce(&mut S) -> R) -> R {
242
- let mut guard = self.write_store();
243
- let result = f(&mut *guard);
244
- guard.publish();
245
- result
242
+ let _lock = self
243
+ .writer
244
+ .lock()
245
+ .unwrap_or_else(|poisoned| poisoned.into_inner());
246
+ let mut handle = self.store.write();
247
+ f(handle.as_mut())
246
248
  }
247
249
  }
248
250
 
@@ -4,27 +4,35 @@
4
4
  //!
5
5
  //! * [`WriteGuard`] — a working copy + writer-mutex lease produced by
6
6
  //! [`Database::write_store`]. Callers mutate the inner `S` and then
7
- //! `publish()` to atomically swap the new state into the `ArcSwap`,
8
- //! or drop the guard to discard the changes.
7
+ //! `publish()` to atomically swap the new state into the live store,
8
+ //! or drop the guard to discard the changes. Reserved for the
9
+ //! pessimistic non-`InMemoryGraph` fallback in `execute.rs`; the
10
+ //! InMemoryGraph admin paths bypass it via the live-mutate
11
+ //! fast path below.
9
12
  //! * [`Database::write_store_deadline`] / [`Database::read_store_deadline`]
10
13
  //! — deadline-aware variants that participate in the cooperative
11
14
  //! query-timeout flow.
12
15
  //! * [`Database::with_logged_write_guard`] — a closure runner that
13
16
  //! brackets the staged mutation with WAL `arm` / `commit` / `abort`
14
17
  //! and atomically publishes on success.
18
+ //! * [`Database::with_logged_store_mut`] — the InMemoryGraph fast
19
+ //! path: mutates the live `Arc<S>` in place via `Arc::make_mut`
20
+ //! and only commits buffered events to the WAL on success. Skips
21
+ //! the O(N+E) snapshot clone that `write_store()` pays.
15
22
 
16
- use std::any::Any;
23
+ use std::any::{Any, TypeId};
17
24
  use std::ops::{Deref, DerefMut};
18
- use std::sync::{Arc, MutexGuard, TryLockError};
25
+ use std::sync::{Arc, Mutex, MutexGuard, TryLockError};
19
26
  use std::time::{Duration, Instant};
20
27
 
21
28
  use anyhow::{anyhow, Result};
22
29
  use lora_executor::ExecutorError;
23
- use lora_store::{GraphStorage, GraphStorageMut, InMemoryGraph, MutationRecorder};
30
+ use lora_store::{GraphStorage, GraphStorageMut, InMemoryGraph, MutationEvent, MutationRecorder};
24
31
  use lora_wal::WalRecorder;
25
32
 
26
33
  use crate::database::Database;
27
- use crate::wal::write_scope::{WalAbortPolicy, WalWriteScope};
34
+ use crate::transaction::BufferingRecorder;
35
+ use crate::wal::write_scope::{ensure_wal_query_can_start, WalAbortPolicy, WalWriteScope};
28
36
 
29
37
  use super::replay::install_recorder_if_inmemory;
30
38
 
@@ -158,14 +166,80 @@ where
158
166
  Ok(())
159
167
  }
160
168
 
169
+ /// Run `f` against the live graph, mutating in place, and commit
170
+ /// the buffered mutation events to the WAL on success.
171
+ ///
172
+ /// For `InMemoryGraph` (the default backend) this is the fast
173
+ /// path: it skips the O(N+E) snapshot clone that `write_store()`
174
+ /// pays, going through the same `LiveStore::write()` +
175
+ /// `Arc::make_mut` flow that the optimistic auto-commit query
176
+ /// path uses. Mutation events buffer into a tx-local `Vec` while
177
+ /// the closure runs; on success they're appended to the WAL as a
178
+ /// single transaction, on failure they're discarded so the WAL
179
+ /// stays consistent. The trade-off matches the OCC fast path: a
180
+ /// failure mid-closure can leave the in-memory graph partially
181
+ /// mutated, but durable state stays consistent and recovery from
182
+ /// snapshot+WAL replays only committed transactions.
183
+ ///
184
+ /// For non-`InMemoryGraph` backends the pessimistic clone-then-
185
+ /// publish path is preserved: those backends don't expose the
186
+ /// `set_mutation_recorder` hook, so a buffered-event redirect
187
+ /// isn't possible.
161
188
  pub(crate) fn with_logged_store_mut<R>(
162
189
  &self,
163
190
  f: impl FnOnce(&mut S) -> Result<R>,
164
191
  ) -> Result<R> {
192
+ if TypeId::of::<S>() == TypeId::of::<InMemoryGraph>() {
193
+ return self.with_live_store_mut(f);
194
+ }
165
195
  let guard = self.write_store();
166
196
  self.with_logged_write_guard(guard, WalAbortPolicy::AbortOnly, f)
167
197
  }
168
198
 
199
+ fn with_live_store_mut<R>(&self, f: impl FnOnce(&mut S) -> Result<R>) -> Result<R> {
200
+ let _commit_lock = self
201
+ .writer
202
+ .lock()
203
+ .unwrap_or_else(|poisoned| poisoned.into_inner());
204
+
205
+ let buffer = Arc::new(Mutex::new(Vec::<MutationEvent>::new()));
206
+ let buffering_rec: Arc<dyn MutationRecorder> =
207
+ Arc::new(BufferingRecorder::new(buffer.clone()));
208
+
209
+ let mut handle = self.store.write();
210
+
211
+ let exec_result = {
212
+ let staged = handle.as_mut();
213
+ install_recorder_if_inmemory(staged, Some(buffering_rec));
214
+ let r = f(staged);
215
+ install_recorder_if_inmemory(staged, None);
216
+ r
217
+ };
218
+
219
+ let events: Vec<MutationEvent> = std::mem::take(&mut buffer.lock().unwrap());
220
+
221
+ let mut wrote_commit = false;
222
+ if let Some(rec) = self.wal.as_ref() {
223
+ if exec_result.is_ok() && !events.is_empty() {
224
+ ensure_wal_query_can_start(rec)?;
225
+ wrote_commit = rec.commit_events(events)?.wrote();
226
+ }
227
+ // Reinstall the durable recorder so the live graph keeps
228
+ // observing future mutations after this scope exits.
229
+ let staged = handle.as_mut();
230
+ install_recorder_if_inmemory(staged, Some(rec.clone() as Arc<dyn MutationRecorder>));
231
+ }
232
+
233
+ if wrote_commit {
234
+ if let Some(rec) = self.wal.as_ref() {
235
+ let live = handle.snapshot();
236
+ self.observe_snapshot_commit_if_needed(&*live, rec)?;
237
+ }
238
+ }
239
+
240
+ exec_result
241
+ }
242
+
169
243
  /// Run `f` against the staged graph inside a WAL transaction. On
170
244
  /// success, atomically publishes the staged graph to the live
171
245
  /// `ArcSwap`; on error, the staged copy is dropped (no observable
@@ -4,7 +4,7 @@ build-backend = "maturin"
4
4
 
5
5
  [project]
6
6
  name = "lora-python"
7
- version = "0.8.1"
7
+ version = "0.8.2"
8
8
  description = "Python bindings for the Lora in-memory graph database"
9
9
  readme = "README.md"
10
10
  license = { text = "BUSL-1.1" }
File without changes
File without changes