corvic-engine 0.3.0rc67__tar.gz → 0.3.0rc69__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 (212) hide show
  1. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/Cargo.lock +12 -12
  2. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/Cargo.toml +1 -1
  3. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/PKG-INFO +3 -4
  4. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/README.md +1 -1
  5. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/pyproject.toml +9 -12
  6. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic/context/__init__.py +0 -8
  7. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic/model/_base_model.py +3 -4
  8. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic/model/_completion_model.py +2 -4
  9. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic/model/_feature_view.py +5 -6
  10. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic/model/_pipeline.py +1 -2
  11. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic/model/_resource.py +1 -2
  12. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic/model/_source.py +1 -2
  13. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic/model/_space.py +26 -2
  14. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic/op_graph/row_filters/_jsonlogic.py +32 -1
  15. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic/orm/base.py +4 -5
  16. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic/orm/ids.py +1 -2
  17. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic/orm/mixins.py +6 -8
  18. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic/pa_scalar/_temporal.py +1 -1
  19. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic/result/__init__.py +1 -2
  20. corvic_engine-0.3.0rc69/python/corvic/system/_column_encoding.py +215 -0
  21. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic/system/_embedder.py +24 -2
  22. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic/system/_image_embedder.py +38 -0
  23. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic/system/_planner.py +6 -3
  24. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic/system/_text_embedder.py +21 -0
  25. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic/system/client.py +2 -1
  26. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic/system/in_memory_executor.py +503 -507
  27. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic/system/op_graph_executor.py +7 -3
  28. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic/system/storage.py +1 -3
  29. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic/table/table.py +5 -5
  30. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/feature/v2/feature_view_pb2.py +21 -21
  31. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/feature/v2/space_pb2.py +59 -51
  32. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/feature/v2/space_pb2.pyi +12 -6
  33. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/ingest/v2/resource_pb2.py +25 -25
  34. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/orm/v1/agent_pb2.py +2 -2
  35. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/orm/v1/agent_pb2.pyi +4 -0
  36. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/LICENSE +0 -0
  37. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/Cargo.toml +0 -0
  38. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/buf/validate/validate_pb2.py +0 -0
  39. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/buf/validate/validate_pb2.pyi +0 -0
  40. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/buf/validate/validate_pb2_grpc.py +0 -0
  41. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/buf/validate/validate_pb2_grpc.pyi +0 -0
  42. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic/context/py.typed +0 -0
  43. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic/embed/__init__.py +0 -0
  44. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic/embed/node2vec.py +0 -0
  45. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic/embed/py.typed +0 -0
  46. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic/embedding_metric/__init__.py +0 -0
  47. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic/embedding_metric/embeddings.py +0 -0
  48. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic/embedding_metric/py.typed +0 -0
  49. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic/engine/__init__.py +0 -0
  50. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic/engine/_native.pyi +0 -0
  51. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic/engine/py.typed +0 -0
  52. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic/model/__init__.py +0 -0
  53. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic/model/_defaults.py +0 -0
  54. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic/model/_errors.py +0 -0
  55. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic/model/_feature_type.py +0 -0
  56. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic/model/_proto_orm_convert.py +0 -0
  57. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic/model/_room.py +0 -0
  58. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic/model/py.typed +0 -0
  59. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic/op_graph/__init__.py +0 -0
  60. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic/op_graph/_schema.py +0 -0
  61. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic/op_graph/_transformations.py +0 -0
  62. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic/op_graph/aggregation.py +0 -0
  63. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic/op_graph/encoders.py +0 -0
  64. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic/op_graph/errors.py +0 -0
  65. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic/op_graph/feature_types.py +0 -0
  66. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic/op_graph/ops.py +0 -0
  67. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic/op_graph/py.typed +0 -0
  68. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic/op_graph/row_filters/__init__.py +0 -0
  69. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic/op_graph/row_filters/_row_filters.py +0 -0
  70. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic/op_graph/sample_strategy.py +0 -0
  71. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic/orm/__init__.py +0 -0
  72. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic/orm/_proto_columns.py +0 -0
  73. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic/orm/errors.py +0 -0
  74. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic/orm/func/__init__.py +0 -0
  75. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic/orm/func/utc_func.py +0 -0
  76. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic/orm/func/uuid_func.py +0 -0
  77. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic/orm/keys.py +0 -0
  78. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic/orm/py.typed +0 -0
  79. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic/pa_scalar/__init__.py +0 -0
  80. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic/pa_scalar/_const.py +0 -0
  81. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic/pa_scalar/_from_value.py +0 -0
  82. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic/pa_scalar/_to_value.py +0 -0
  83. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic/pa_scalar/_types.py +0 -0
  84. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic/pa_scalar/py.typed +0 -0
  85. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic/proto_wrapper/__init__.py +0 -0
  86. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic/proto_wrapper/_errors.py +0 -0
  87. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic/proto_wrapper/_wrappers.py +0 -0
  88. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic/proto_wrapper/py.typed +0 -0
  89. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic/result/py.typed +0 -0
  90. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic/sql/__init__.py +0 -0
  91. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic/sql/parse_ops.py +0 -0
  92. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic/sql/py.typed +0 -0
  93. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic/system/__init__.py +0 -0
  94. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic/system/_dimension_reduction.py +0 -0
  95. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic/system/py.typed +0 -0
  96. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic/system/staging.py +0 -0
  97. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic/system_sqlite/__init__.py +0 -0
  98. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic/system_sqlite/client.py +0 -0
  99. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic/system_sqlite/fs_blob_store.py +0 -0
  100. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic/system_sqlite/py.typed +0 -0
  101. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic/system_sqlite/rdbms_blob_store.py +0 -0
  102. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic/system_sqlite/staging.py +0 -0
  103. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic/table/__init__.py +0 -0
  104. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic/table/py.typed +0 -0
  105. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic/version/__init__.py +0 -0
  106. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic/version/py.typed +0 -0
  107. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic/well_known_types/__init__.py +0 -0
  108. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic/well_known_types/py.typed +0 -0
  109. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/__init__.py +0 -0
  110. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/algorithm/__init__.py +0 -0
  111. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/algorithm/graph/__init__.py +0 -0
  112. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/algorithm/graph/v1/__init__.py +0 -0
  113. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/algorithm/graph/v1/graph_pb2.py +0 -0
  114. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/algorithm/graph/v1/graph_pb2.pyi +0 -0
  115. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/algorithm/graph/v1/graph_pb2_grpc.py +0 -0
  116. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/algorithm/graph/v1/graph_pb2_grpc.pyi +0 -0
  117. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/embedding/__init__.py +0 -0
  118. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/embedding/v1/__init__.py +0 -0
  119. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/embedding/v1/models_pb2.py +0 -0
  120. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/embedding/v1/models_pb2.pyi +0 -0
  121. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/embedding/v1/models_pb2_grpc.py +0 -0
  122. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/embedding/v1/models_pb2_grpc.pyi +0 -0
  123. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/feature/__init__.py +0 -0
  124. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/feature/v1/__init__.py +0 -0
  125. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/feature/v1/experiment_pb2.py +0 -0
  126. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/feature/v1/experiment_pb2.pyi +0 -0
  127. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/feature/v1/experiment_pb2_grpc.py +0 -0
  128. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/feature/v1/experiment_pb2_grpc.pyi +0 -0
  129. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/feature/v1/space_pb2.py +0 -0
  130. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/feature/v1/space_pb2.pyi +0 -0
  131. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/feature/v1/space_pb2_grpc.py +0 -0
  132. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/feature/v1/space_pb2_grpc.pyi +0 -0
  133. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/feature/v2/__init__.py +0 -0
  134. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/feature/v2/feature_view_pb2.pyi +0 -0
  135. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/feature/v2/feature_view_pb2_grpc.py +0 -0
  136. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/feature/v2/feature_view_pb2_grpc.pyi +0 -0
  137. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/feature/v2/space_pb2_grpc.py +0 -0
  138. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/feature/v2/space_pb2_grpc.pyi +0 -0
  139. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/ingest/__init__.py +0 -0
  140. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/ingest/v1/__init__.py +0 -0
  141. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/ingest/v1/service_pb2.py +0 -0
  142. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/ingest/v1/service_pb2.pyi +0 -0
  143. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/ingest/v1/service_pb2_grpc.py +0 -0
  144. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/ingest/v1/service_pb2_grpc.pyi +0 -0
  145. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/ingest/v2/__init__.py +0 -0
  146. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/ingest/v2/pipeline_pb2.py +0 -0
  147. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/ingest/v2/pipeline_pb2.pyi +0 -0
  148. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/ingest/v2/pipeline_pb2_grpc.py +0 -0
  149. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/ingest/v2/pipeline_pb2_grpc.pyi +0 -0
  150. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/ingest/v2/quick_mode_pb2.py +0 -0
  151. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/ingest/v2/quick_mode_pb2.pyi +0 -0
  152. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/ingest/v2/quick_mode_pb2_grpc.py +0 -0
  153. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/ingest/v2/quick_mode_pb2_grpc.pyi +0 -0
  154. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/ingest/v2/resource_pb2.pyi +0 -0
  155. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/ingest/v2/resource_pb2_grpc.py +0 -0
  156. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/ingest/v2/resource_pb2_grpc.pyi +0 -0
  157. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/ingest/v2/room_pb2.py +0 -0
  158. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/ingest/v2/room_pb2.pyi +0 -0
  159. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/ingest/v2/room_pb2_grpc.py +0 -0
  160. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/ingest/v2/room_pb2_grpc.pyi +0 -0
  161. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/ingest/v2/source_pb2.py +0 -0
  162. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/ingest/v2/source_pb2.pyi +0 -0
  163. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/ingest/v2/source_pb2_grpc.py +0 -0
  164. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/ingest/v2/source_pb2_grpc.pyi +0 -0
  165. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/ingest/v2/table_pb2.py +0 -0
  166. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/ingest/v2/table_pb2.pyi +0 -0
  167. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/ingest/v2/table_pb2_grpc.py +0 -0
  168. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/ingest/v2/table_pb2_grpc.pyi +0 -0
  169. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/model/__init__.py +0 -0
  170. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/model/v1alpha/__init__.py +0 -0
  171. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/model/v1alpha/models_pb2.py +0 -0
  172. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/model/v1alpha/models_pb2.pyi +0 -0
  173. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/model/v1alpha/models_pb2_grpc.py +0 -0
  174. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/model/v1alpha/models_pb2_grpc.pyi +0 -0
  175. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/orm/__init__.py +0 -0
  176. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/orm/v1/__init__.py +0 -0
  177. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/orm/v1/agent_pb2_grpc.py +0 -0
  178. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/orm/v1/agent_pb2_grpc.pyi +0 -0
  179. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/orm/v1/common_pb2.py +0 -0
  180. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/orm/v1/common_pb2.pyi +0 -0
  181. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/orm/v1/common_pb2_grpc.py +0 -0
  182. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/orm/v1/common_pb2_grpc.pyi +0 -0
  183. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/orm/v1/completion_model_pb2.py +0 -0
  184. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/orm/v1/completion_model_pb2.pyi +0 -0
  185. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/orm/v1/completion_model_pb2_grpc.py +0 -0
  186. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/orm/v1/completion_model_pb2_grpc.pyi +0 -0
  187. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/orm/v1/feature_view_pb2.py +0 -0
  188. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/orm/v1/feature_view_pb2.pyi +0 -0
  189. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/orm/v1/feature_view_pb2_grpc.py +0 -0
  190. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/orm/v1/feature_view_pb2_grpc.pyi +0 -0
  191. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/orm/v1/pipeline_pb2.py +0 -0
  192. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/orm/v1/pipeline_pb2.pyi +0 -0
  193. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/orm/v1/pipeline_pb2_grpc.py +0 -0
  194. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/orm/v1/pipeline_pb2_grpc.pyi +0 -0
  195. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/orm/v1/space_pb2.py +0 -0
  196. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/orm/v1/space_pb2.pyi +0 -0
  197. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/orm/v1/space_pb2_grpc.py +0 -0
  198. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/orm/v1/space_pb2_grpc.pyi +0 -0
  199. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/orm/v1/table_pb2.py +0 -0
  200. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/orm/v1/table_pb2.pyi +0 -0
  201. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/orm/v1/table_pb2_grpc.py +0 -0
  202. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/orm/v1/table_pb2_grpc.pyi +0 -0
  203. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/status/__init__.py +0 -0
  204. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/status/v1/__init__.py +0 -0
  205. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/status/v1/event_pb2.py +0 -0
  206. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/status/v1/event_pb2.pyi +0 -0
  207. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/status/v1/event_pb2_grpc.py +0 -0
  208. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/status/v1/event_pb2_grpc.pyi +0 -0
  209. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/status/v1/service_pb2.py +0 -0
  210. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/status/v1/service_pb2.pyi +0 -0
  211. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/status/v1/service_pb2_grpc.py +0 -0
  212. {corvic_engine-0.3.0rc67 → corvic_engine-0.3.0rc69}/python/corvic_generated/status/v1/service_pb2_grpc.pyi +0 -0
@@ -16,7 +16,7 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
16
16
 
17
17
  [[package]]
18
18
  name = "corvic-engine"
19
- version = "0.3.0-rc.67"
19
+ version = "0.3.0-rc.69"
20
20
  dependencies = [
21
21
  "numpy",
22
22
  "pyo3",
@@ -57,7 +57,7 @@ checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719"
57
57
 
58
58
  [[package]]
59
59
  name = "engine-walk"
60
- version = "0.3.0-rc.67"
60
+ version = "0.3.0-rc.69"
61
61
  dependencies = [
62
62
  "version_check",
63
63
  ]
@@ -189,9 +189,9 @@ dependencies = [
189
189
 
190
190
  [[package]]
191
191
  name = "pyo3"
192
- version = "0.24.1"
192
+ version = "0.24.2"
193
193
  source = "registry+https://github.com/rust-lang/crates.io-index"
194
- checksum = "17da310086b068fbdcefbba30aeb3721d5bb9af8db4987d6735b2183ca567229"
194
+ checksum = "e5203598f366b11a02b13aa20cab591229ff0a89fd121a308a5df751d5fc9219"
195
195
  dependencies = [
196
196
  "cfg-if",
197
197
  "indoc",
@@ -207,9 +207,9 @@ dependencies = [
207
207
 
208
208
  [[package]]
209
209
  name = "pyo3-build-config"
210
- version = "0.24.1"
210
+ version = "0.24.2"
211
211
  source = "registry+https://github.com/rust-lang/crates.io-index"
212
- checksum = "e27165889bd793000a098bb966adc4300c312497ea25cf7a690a9f0ac5aa5fc1"
212
+ checksum = "99636d423fa2ca130fa5acde3059308006d46f98caac629418e53f7ebb1e9999"
213
213
  dependencies = [
214
214
  "once_cell",
215
215
  "target-lexicon",
@@ -217,9 +217,9 @@ dependencies = [
217
217
 
218
218
  [[package]]
219
219
  name = "pyo3-ffi"
220
- version = "0.24.1"
220
+ version = "0.24.2"
221
221
  source = "registry+https://github.com/rust-lang/crates.io-index"
222
- checksum = "05280526e1dbf6b420062f3ef228b78c0c54ba94e157f5cb724a609d0f2faabc"
222
+ checksum = "78f9cf92ba9c409279bc3305b5409d90db2d2c22392d443a87df3a1adad59e33"
223
223
  dependencies = [
224
224
  "libc",
225
225
  "pyo3-build-config",
@@ -227,9 +227,9 @@ dependencies = [
227
227
 
228
228
  [[package]]
229
229
  name = "pyo3-macros"
230
- version = "0.24.1"
230
+ version = "0.24.2"
231
231
  source = "registry+https://github.com/rust-lang/crates.io-index"
232
- checksum = "5c3ce5686aa4d3f63359a5100c62a127c9f15e8398e5fdeb5deef1fed5cd5f44"
232
+ checksum = "0b999cb1a6ce21f9a6b147dcf1be9ffedf02e0043aec74dc390f3007047cecd9"
233
233
  dependencies = [
234
234
  "proc-macro2",
235
235
  "pyo3-macros-backend",
@@ -239,9 +239,9 @@ dependencies = [
239
239
 
240
240
  [[package]]
241
241
  name = "pyo3-macros-backend"
242
- version = "0.24.1"
242
+ version = "0.24.2"
243
243
  source = "registry+https://github.com/rust-lang/crates.io-index"
244
- checksum = "f4cf6faa0cbfb0ed08e89beb8103ae9724eb4750e3a78084ba4017cbe94f3855"
244
+ checksum = "822ece1c7e1012745607d5cf0bcb2874769f0f7cb34c4cde03b9358eb9ef911a"
245
245
  dependencies = [
246
246
  "heck",
247
247
  "proc-macro2",
@@ -3,7 +3,7 @@ resolver = "2"
3
3
  members = ["python"]
4
4
 
5
5
  [workspace.package]
6
- version = "0.3.0-rc.67"
6
+ version = "0.3.0-rc.69"
7
7
  edition = "2021"
8
8
  publish = false
9
9
 
@@ -1,11 +1,10 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: corvic-engine
3
- Version: 0.3.0rc67
3
+ Version: 0.3.0rc69
4
4
  Classifier: Environment :: Console
5
5
  Classifier: License :: Other/Proprietary License
6
6
  Classifier: Programming Language :: Python :: Implementation :: CPython
7
7
  Classifier: Programming Language :: Python :: Implementation :: PyPy
8
- Classifier: Programming Language :: Python :: 3.10
9
8
  Classifier: Programming Language :: Python :: 3.11
10
9
  Classifier: Programming Language :: Python :: 3.12
11
10
  Classifier: Programming Language :: Python :: 3.13
@@ -35,8 +34,8 @@ Provides-Extra: telemetry
35
34
  License-File: LICENSE
36
35
  Summary: Seamless embedding generation and retrieval.
37
36
  Author-email: Corvic Team <contact@corvic.ai>
38
- Requires-Python: >=3.10
37
+ Requires-Python: >=3.11
39
38
  Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
40
39
 
41
- # Corvic Engine [![CI](https://github.com/corvicai/corvic-engine/actions/workflows/ci.yaml/badge.svg)](https://github.com/corvicai/corvic-engine/actions/workflows/ci.yaml) [![Python Version](https://img.shields.io/badge/python-3.10%20|%203.11%20|%203.12-blue)](https://www.python.org/downloads/release/python-3110/)
40
+ # Corvic Engine [![CI](https://github.com/corvicai/corvic-engine/actions/workflows/ci.yaml/badge.svg)](https://github.com/corvicai/corvic-engine/actions/workflows/ci.yaml) [![Python Version](https://img.shields.io/badge/python-3.11%20|%203.12-blue)](https://www.python.org/downloads/release/python-3110/)
42
41
 
@@ -1 +1 @@
1
- # Corvic Engine [![CI](https://github.com/corvicai/corvic-engine/actions/workflows/ci.yaml/badge.svg)](https://github.com/corvicai/corvic-engine/actions/workflows/ci.yaml) [![Python Version](https://img.shields.io/badge/python-3.10%20|%203.11%20|%203.12-blue)](https://www.python.org/downloads/release/python-3110/)
1
+ # Corvic Engine [![CI](https://github.com/corvicai/corvic-engine/actions/workflows/ci.yaml/badge.svg)](https://github.com/corvicai/corvic-engine/actions/workflows/ci.yaml) [![Python Version](https://img.shields.io/badge/python-3.11%20|%203.12-blue)](https://www.python.org/downloads/release/python-3110/)
@@ -1,12 +1,11 @@
1
1
  [project]
2
2
  name = "corvic-engine"
3
- requires-python = ">=3.10"
3
+ requires-python = ">=3.11"
4
4
  classifiers = [
5
5
  "Environment :: Console",
6
6
  "License :: Other/Proprietary License",
7
7
  "Programming Language :: Python :: Implementation :: CPython",
8
8
  "Programming Language :: Python :: Implementation :: PyPy",
9
- "Programming Language :: Python :: 3.10",
10
9
  "Programming Language :: Python :: 3.11",
11
10
  "Programming Language :: Python :: 3.12",
12
11
  "Programming Language :: Python :: 3.13",
@@ -20,7 +19,7 @@ authors = [
20
19
  ]
21
20
  readme = "README.md"
22
21
  description = "Seamless embedding generation and retrieval."
23
- version = "0.3.0-rc.67" # sync this with tool.poetry.version below
22
+ version = "0.3.0-rc.69" # sync this with tool.poetry.version below
24
23
 
25
24
  # TODO(ddn): Pull dependencies from tool.poetry.dependencies. We use maturin as
26
25
  # the build system but poetry for the development environment.
@@ -74,7 +73,7 @@ packages = [
74
73
  ]
75
74
  description = ""
76
75
  authors = []
77
- version = "0.3.0-rc.67"
76
+ version = "0.3.0-rc.69"
78
77
 
79
78
  [tool.poetry.scripts]
80
79
  check = "corvic_check.cli:main"
@@ -102,7 +101,7 @@ protobuf = ">=4.25.0,<4.25.4"
102
101
  protovalidate = "^0.7.1"
103
102
  pyarrow = "^17"
104
103
  # Should match build matrix for any native code dependencies (namely pyarrow)
105
- python = ">=3.10,<3.13"
104
+ python = ">=3.11,<3.13"
106
105
  sqlalchemy = "^2.0.27"
107
106
  # Rust tokenizer for better performances
108
107
  sqlglot = { extras = ["rs"], version = "^25.8.1" }
@@ -112,6 +111,7 @@ types-cachetools = "^5.3.0"
112
111
  typing-extensions = "^4.9.0"
113
112
 
114
113
  [tool.poetry.group.dev.dependencies]
114
+ anyio = "^4"
115
115
  click = "^8.1.7"
116
116
  click_default_group = "^1.2.4"
117
117
  codespell = "^2.2.6"
@@ -123,12 +123,12 @@ pdoc = "^14.5.1"
123
123
  pre-commit = "^4.0.0"
124
124
  pyright = "^1.1.387"
125
125
  pytest = "^8.1.1"
126
+ pytest-asyncio = "^0.26"
126
127
  pytest-benchmark = "^4.0.0"
127
128
  pytest-fail-slow = "^0.6.0"
128
129
  pytest-socket = "^0.7.0"
129
130
  pytest-timeout = "^2.2.0"
130
131
  ruff = "^0.6.9"
131
- tomli = "^2.0.1" # would use tomllib but is not available in 3.10
132
132
  hypothesis = "^6.102.4"
133
133
  yq = "^3.4.3" # includes xq for parsing xml test results
134
134
 
@@ -151,9 +151,6 @@ pip-licenses = "^4.3.3"
151
151
 
152
152
  [tool.poetry.group.test.dependencies]
153
153
  fastnode2vec = "^0.0.7"
154
- # Gensim is broken with SciPy 1.13.0
155
- # https://github.com/piskvorky/gensim/issues/3525
156
- scipy = "<1.13.0"
157
154
  umap-learn = "^0.5.5"
158
155
  scikit-learn = "^1.4.0"
159
156
 
@@ -162,8 +159,8 @@ optional = true
162
159
 
163
160
  [tool.poetry.group.ml.dependencies]
164
161
  torch = [
165
- { platform = "linux", version = "^2.6.0", source = "torch-cpu-linux" },
166
- { platform = "darwin", version = "^2.6.0", source = "pypi" },
162
+ { platform = "linux", version = "^2.7.0", source = "torch-cpu-linux" },
163
+ { platform = "darwin", version = "^2.7.0", source = "pypi" },
167
164
  ]
168
165
  transformers = "^4.48.0"
169
166
  umap-learn = "^0.5.5"
@@ -377,7 +374,7 @@ testpaths = [
377
374
  # The slow threshold should be less than the timeout threshold.
378
375
  timeout = 60
379
376
  # pytest-socket
380
- addopts = "--disable-socket"
377
+ addopts = "--disable-socket --allow-unix-socket --allow-hosts=127.0.0.1,localhost,[::1]"
381
378
 
382
379
  [tool.coverage.run]
383
380
  branch = true
@@ -4,7 +4,6 @@ Affect things like logging and the names of metrics.
4
4
  """
5
5
 
6
6
  import contextvars
7
- import uuid
8
7
  from dataclasses import dataclass
9
8
 
10
9
  # These are sentinels used only in the Requester object below rather than actual org
@@ -21,17 +20,11 @@ class Requester:
21
20
 
22
21
 
23
22
  _SERVICE_NAME = contextvars.ContextVar("service_name", default="corvic")
24
- _TRACE_ID = contextvars.ContextVar("trace_id", default="")
25
23
  _REQUESTER = contextvars.ContextVar(
26
24
  "requester_identity", default=Requester(org_id=NOBODY_ORG_ID)
27
25
  )
28
26
 
29
27
 
30
- def get_trace_id() -> str:
31
- """Get current trace id."""
32
- return _TRACE_ID.get()
33
-
34
-
35
28
  def get_service_name() -> str:
36
29
  """Get current service name."""
37
30
  return _SERVICE_NAME.get()
@@ -45,7 +38,6 @@ def get_requester() -> Requester:
45
38
  def reset_context(*, service_name: str):
46
39
  """Reset contextvars for a new request."""
47
40
  _SERVICE_NAME.set(service_name)
48
- _TRACE_ID.set(str(uuid.uuid4()))
49
41
  _REQUESTER.set(Requester(org_id=NOBODY_ORG_ID))
50
42
 
51
43
 
@@ -5,12 +5,11 @@ import datetime
5
5
  import functools
6
6
  import uuid
7
7
  from collections.abc import Callable, Iterable, Iterator, Sequence
8
- from typing import Final, Generic
8
+ from typing import Final, Generic, Self
9
9
 
10
10
  import sqlalchemy as sa
11
11
  import sqlalchemy.orm as sa_orm
12
12
  import structlog
13
- from typing_extensions import Self
14
13
 
15
14
  from corvic import orm, system
16
15
  from corvic.model._proto_orm_convert import (
@@ -54,7 +53,7 @@ class HasProtoSelf(Generic[ProtoObj], abc.ABC):
54
53
  @property
55
54
  def created_at(self) -> datetime.datetime | None:
56
55
  if self.proto_self.created_at:
57
- return self.proto_self.created_at.ToDatetime(tzinfo=datetime.timezone.utc)
56
+ return self.proto_self.created_at.ToDatetime(tzinfo=datetime.UTC)
58
57
  return None
59
58
 
60
59
 
@@ -119,7 +118,7 @@ class BaseModel(Generic[ID, ProtoObj, OrmObj], UsesOrmID[ID, ProtoObj]):
119
118
  while True:
120
119
  try:
121
120
  yield from it
122
- except Exception: # noqa: PERF203
121
+ except Exception:
123
122
  _logger.exception(
124
123
  "omitting source from list: "
125
124
  + "failed to parse source from database entry",
@@ -116,16 +116,14 @@ class CompletionModel(
116
116
  @property
117
117
  def last_validation_time(self) -> datetime.datetime | None:
118
118
  if self.proto_self.last_validation_time != UNIX_TIMESTAMP_START_DATETIME:
119
- return self.proto_self.last_validation_time.ToDatetime(
120
- tzinfo=datetime.timezone.utc
121
- )
119
+ return self.proto_self.last_validation_time.ToDatetime(tzinfo=datetime.UTC)
122
120
  return None
123
121
 
124
122
  @property
125
123
  def last_successful_validation(self) -> datetime.datetime | None:
126
124
  if self.proto_self.last_successful_validation != UNIX_TIMESTAMP_START_DATETIME:
127
125
  return self.proto_self.last_successful_validation.ToDatetime(
128
- tzinfo=datetime.timezone.utc
126
+ tzinfo=datetime.UTC
129
127
  )
130
128
  return None
131
129
 
@@ -7,15 +7,14 @@ import dataclasses
7
7
  import datetime
8
8
  import functools
9
9
  import uuid
10
- from collections.abc import Iterable, Mapping, MutableMapping, Sequence
11
- from typing import Any, Final, TypeAlias
10
+ from collections.abc import AsyncIterable, Iterable, Mapping, MutableMapping, Sequence
11
+ from typing import Any, Final, Self, TypeAlias
12
12
 
13
13
  import pyarrow as pa
14
14
  from google.protobuf import struct_pb2
15
15
  from more_itertools import flatten
16
16
  from sqlalchemy import orm as sa_orm
17
17
  from sqlalchemy.orm.interfaces import LoaderOption
18
- from typing_extensions import Self
19
18
 
20
19
  from corvic import op_graph, orm, system
21
20
  from corvic.model._base_model import BelongsToRoomModel, UsesOrmID
@@ -324,7 +323,7 @@ class Relationship:
324
323
  how="inner",
325
324
  )
326
325
 
327
- def edge_list(self) -> Iterable[tuple[Any, Any]]:
326
+ async def edge_list(self) -> AsyncIterable[tuple[Any, Any]]:
328
327
  start_pk = self.start_fv_source.table.schema.get_primary_key()
329
328
  end_pk = self.end_fv_source.table.schema.get_primary_key()
330
329
 
@@ -340,8 +339,8 @@ class Relationship:
340
339
 
341
340
  result = self.joined_table().select(result_columns)
342
341
 
343
- for batch in result.to_polars(
344
- room_id=self.start_source.room_id
342
+ for batch in (
343
+ await result.to_polars(room_id=self.start_source.room_id)
345
344
  ).unwrap_or_raise():
346
345
  for row in batch.rows(named=True):
347
346
  yield (row[result_columns[0]], row[result_columns[1]])
@@ -6,12 +6,11 @@ import datetime
6
6
  import functools
7
7
  import uuid
8
8
  from collections.abc import Iterable, Mapping, Sequence
9
- from typing import TypeAlias, cast
9
+ from typing import Self, TypeAlias, cast
10
10
 
11
11
  import polars as pl
12
12
  from sqlalchemy import orm as sa_orm
13
13
  from sqlalchemy.orm.interfaces import LoaderOption
14
- from typing_extensions import Self
15
14
 
16
15
  import corvic.table
17
16
  from corvic import op_graph, orm, system
@@ -6,13 +6,12 @@ import copy
6
6
  import datetime
7
7
  import uuid
8
8
  from collections.abc import Iterable, Sequence
9
- from typing import TypeAlias
9
+ from typing import Self, TypeAlias
10
10
 
11
11
  import polars as pl
12
12
  import sqlalchemy as sa
13
13
  from sqlalchemy import orm as sa_orm
14
14
  from sqlalchemy.orm.interfaces import LoaderOption
15
- from typing_extensions import Self
16
15
 
17
16
  from corvic import orm, system
18
17
  from corvic.model._base_model import BelongsToRoomModel
@@ -6,13 +6,12 @@ import copy
6
6
  import datetime
7
7
  import functools
8
8
  from collections.abc import Iterable, Mapping, Sequence
9
- from typing import TypeAlias
9
+ from typing import Self, TypeAlias
10
10
 
11
11
  import polars as pl
12
12
  import sqlalchemy as sa
13
13
  import sqlalchemy.orm as sa_orm
14
14
  from sqlalchemy.orm.interfaces import LoaderOption
15
- from typing_extensions import Self
16
15
 
17
16
  from corvic import op_graph, orm, system
18
17
  from corvic.model._base_model import BelongsToRoomModel
@@ -3,15 +3,15 @@
3
3
  from __future__ import annotations
4
4
 
5
5
  import abc
6
+ import copy
6
7
  import datetime
7
8
  import uuid
8
9
  from collections.abc import Iterable, Mapping, Sequence
9
- from typing import Final, Literal, TypeAlias
10
+ from typing import Final, Literal, Self, TypeAlias
10
11
 
11
12
  import pyarrow as pa
12
13
  import sqlalchemy as sa
13
14
  from sqlalchemy import orm as sa_orm
14
- from typing_extensions import Self
15
15
 
16
16
  from corvic import op_graph, orm, system
17
17
  from corvic.model._base_model import BelongsToRoomModel
@@ -183,6 +183,30 @@ class Space(BelongsToRoomModel[SpaceID, models_pb2.Space, orm.Space]):
183
183
  auto_sync=auto_sync,
184
184
  )
185
185
 
186
+ def with_name(self, name: str):
187
+ proto_self = copy.copy(self.proto_self)
188
+
189
+ proto_self.name = name
190
+
191
+ return Ok(
192
+ self.__class__(
193
+ self.feature_view.client,
194
+ proto_self,
195
+ )
196
+ )
197
+
198
+ def with_description(self, description: str):
199
+ proto_self = copy.copy(self.proto_self)
200
+
201
+ proto_self.description = description
202
+
203
+ return Ok(
204
+ self.__class__(
205
+ self.feature_view.client,
206
+ proto_self,
207
+ )
208
+ )
209
+
186
210
  @classmethod
187
211
  def from_id(
188
212
  cls,
@@ -16,7 +16,7 @@ from corvic.op_graph.row_filters._row_filters import (
16
16
  lt,
17
17
  ne,
18
18
  )
19
- from corvic.pa_scalar import from_value
19
+ from corvic.pa_scalar import from_value, to_value
20
20
  from corvic.result import Error, InvalidArgumentError, Ok
21
21
 
22
22
 
@@ -76,6 +76,35 @@ def _var_name(value: struct_pb2.Value) -> str:
76
76
  raise _Error("unexpected operation type")
77
77
 
78
78
 
79
+ def _coerce_literal(literal: struct_pb2.Value, dtype: pa.DataType) -> struct_pb2.Value:
80
+ # Attempt to coerce the literal to the type it needs to be compared against,
81
+ # if the types don't already align.
82
+ match literal.WhichOneof("kind"):
83
+ case "null_value":
84
+ types_match = pa.types.is_null(dtype)
85
+ case "bool_value":
86
+ types_match = pa.types.is_boolean(dtype)
87
+ case "list_value":
88
+ # TODO(aneesh): inner checks for nested types
89
+ types_match = pa.types.is_list(dtype)
90
+ case "number_value":
91
+ types_match = pa.types.is_integer(dtype) or pa.types.is_floating(dtype)
92
+ case "string_value":
93
+ types_match = pa.types.is_string(dtype)
94
+ case "struct_value":
95
+ # TODO(aneesh): inner checks for nested types
96
+ types_match = pa.types.is_struct(dtype)
97
+ case None:
98
+ raise _Error("Unknown literal type")
99
+ if not types_match:
100
+ match from_value(literal, dtype):
101
+ case Ok(coerced_literal):
102
+ literal = to_value(coerced_literal)
103
+ case err:
104
+ raise err
105
+ return literal
106
+
107
+
79
108
  def _simple_compare(
80
109
  op: Literal["==", "!=", "<=", ">=", "<", ">"],
81
110
  operands: Sequence[struct_pb2.Value],
@@ -92,6 +121,8 @@ def _simple_compare(
92
121
  if dtype is None:
93
122
  raise _Error("unknown literal type", column_name=column_name)
94
123
 
124
+ literal = _coerce_literal(literal, dtype)
125
+
95
126
  match op:
96
127
  case "==":
97
128
  return eq(column_name, literal, dtype)
@@ -3,14 +3,13 @@
3
3
  from __future__ import annotations
4
4
 
5
5
  import uuid
6
- from datetime import datetime, timezone
7
- from typing import Any, ClassVar, Protocol, runtime_checkable
6
+ from datetime import UTC, datetime
7
+ from typing import Any, ClassVar, Protocol, Self, runtime_checkable
8
8
 
9
9
  import sqlalchemy as sa
10
10
  import sqlalchemy.orm as sa_orm
11
11
  from google.protobuf import timestamp_pb2
12
12
  from sqlalchemy.ext import hybrid
13
- from typing_extensions import Self
14
13
 
15
14
  from corvic.orm._proto_columns import ProtoMessageDecorator
16
15
  from corvic.orm.func import utc_now
@@ -151,7 +150,7 @@ class Base(sa_orm.MappedAsDataclass, sa_orm.DeclarativeBase):
151
150
  def created_at(self) -> datetime | None:
152
151
  if not self._created_at:
153
152
  return None
154
- return self._created_at.replace(tzinfo=timezone.utc)
153
+ return self._created_at.replace(tzinfo=UTC)
155
154
 
156
155
  @created_at.inplace.expression
157
156
  @classmethod
@@ -162,7 +161,7 @@ class Base(sa_orm.MappedAsDataclass, sa_orm.DeclarativeBase):
162
161
  def updated_at(self) -> datetime | None:
163
162
  if not self._updated_at:
164
163
  return None
165
- return self._updated_at.replace(tzinfo=timezone.utc)
164
+ return self._updated_at.replace(tzinfo=UTC)
166
165
 
167
166
  @updated_at.inplace.expression
168
167
  @classmethod
@@ -3,11 +3,10 @@
3
3
  from __future__ import annotations
4
4
 
5
5
  import abc
6
- from typing import Any, Generic, TypeVar
6
+ from typing import Any, Generic, Self, TypeVar
7
7
 
8
8
  import sqlalchemy as sa
9
9
  import sqlalchemy.types as sa_types
10
- from typing_extensions import Self
11
10
 
12
11
  import corvic.context
13
12
  from corvic.orm.errors import InvalidORMIdentifierError
@@ -3,8 +3,8 @@
3
3
  from __future__ import annotations
4
4
 
5
5
  from collections.abc import Callable, Sequence
6
- from datetime import datetime, timezone
7
- from typing import Any, cast
6
+ from datetime import UTC, datetime
7
+ from typing import Any, LiteralString, cast
8
8
 
9
9
  import sqlalchemy as sa
10
10
  from google.protobuf import timestamp_pb2
@@ -12,7 +12,6 @@ from sqlalchemy import event, exc
12
12
  from sqlalchemy import orm as sa_orm
13
13
  from sqlalchemy.ext import hybrid
14
14
  from sqlalchemy.ext.hybrid import hybrid_property
15
- from typing_extensions import LiteralString
16
15
 
17
16
  import corvic.context
18
17
  from corvic.orm.base import EventBase, EventKey, OrgBase
@@ -137,7 +136,7 @@ class SoftDeleteMixin(sa_orm.MappedAsDataclass):
137
136
  def deleted_at(self) -> datetime | None:
138
137
  if not self._deleted_at:
139
138
  return None
140
- return self._deleted_at.replace(tzinfo=timezone.utc)
139
+ return self._deleted_at.replace(tzinfo=UTC)
141
140
 
142
141
  def reset_delete(self):
143
142
  self._deleted_at = None
@@ -170,7 +169,7 @@ class SoftDeleteMixin(sa_orm.MappedAsDataclass):
170
169
  # set is_live to None instead of False so that orm objects can use it to
171
170
  # build uniqueness constraints that are only enforced on non-deleted objects
172
171
  self.is_live = None
173
- self._deleted_at = datetime.now(tz=timezone.utc)
172
+ self._deleted_at = datetime.now(tz=UTC)
174
173
 
175
174
  @hybrid_property
176
175
  def is_deleted(self) -> bool:
@@ -343,7 +342,7 @@ class Session(sa_orm.Session):
343
342
  def _timestamp_or_utc_now(timestamp: datetime | None = None):
344
343
  if timestamp is not None:
345
344
  return timestamp
346
- return datetime.now(tz=timezone.utc)
345
+ return datetime.now(tz=UTC)
347
346
 
348
347
 
349
348
  class EventLoggerMixin(sa_orm.MappedAsDataclass):
@@ -383,12 +382,11 @@ class EventLoggerMixin(sa_orm.MappedAsDataclass):
383
382
  # this can occur when an event is set on a new object
384
383
  if not self._event_src_id:
385
384
  obj_session.flush()
386
- from datetime import timezone
387
385
 
388
386
  obj_session.add(
389
387
  EventBase(
390
388
  event=event.event_type,
391
- timestamp=event.timestamp.ToDatetime(tzinfo=timezone.utc),
389
+ timestamp=event.timestamp.ToDatetime(tzinfo=UTC),
392
390
  regarding=event.regarding,
393
391
  reason=event.reason,
394
392
  event_key=str(self.event_key),
@@ -86,7 +86,7 @@ def datetime_fromisoformat(s: str) -> datetime.datetime:
86
86
 
87
87
  tzinfo = None
88
88
  if m.group("utc"):
89
- tzinfo = datetime.timezone.utc
89
+ tzinfo = datetime.UTC
90
90
 
91
91
  tz_hour = m.group("tz_hour")
92
92
  if tz_hour:
@@ -55,12 +55,11 @@ from typing import (
55
55
  Literal,
56
56
  NoReturn,
57
57
  ParamSpec,
58
+ Self,
58
59
  TypeVar,
59
60
  overload,
60
61
  )
61
62
 
62
- from typing_extensions import Self
63
-
64
63
  from corvic.well_known_types import JSONAble, JSONExpressable, to_json
65
64
 
66
65
  T_co = TypeVar("T_co", covariant=True)