corvic-engine 0.3.0rc84__tar.gz → 0.3.0rc86__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 (217) hide show
  1. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/Cargo.lock +2 -2
  2. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/Cargo.toml +1 -1
  3. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/PKG-INFO +1 -1
  4. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/pyproject.toml +3 -3
  5. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic/emodel/_base_model.py +2 -3
  6. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic/emodel/_completion_model.py +2 -4
  7. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic/emodel/_feature_view.py +2 -2
  8. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic/emodel/_pipeline.py +2 -2
  9. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic/emodel/_proto_orm_convert.py +15 -15
  10. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic/emodel/_resource.py +2 -2
  11. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic/emodel/_source.py +2 -2
  12. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic/emodel/_space.py +2 -2
  13. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic/orm/__init__.py +2 -0
  14. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic/orm/_soft_delete.py +12 -3
  15. corvic_engine-0.3.0rc86/python/corvic/orm/errors.py +54 -0
  16. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic/system/_embedder.py +0 -8
  17. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic/system/_image_embedder.py +28 -18
  18. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic/system/in_memory_executor.py +1 -2
  19. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic/system/staging.py +1 -1
  20. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic/system_sqlite/staging.py +1 -1
  21. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic/transfer/_orm_backed_proto.py +6 -22
  22. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/ingest/v2/resource_pb2.py +11 -5
  23. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/ingest/v2/resource_pb2.pyi +12 -0
  24. corvic_engine-0.3.0rc84/python/corvic/orm/errors.py +0 -18
  25. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/LICENSE +0 -0
  26. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/README.md +0 -0
  27. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/Cargo.toml +0 -0
  28. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/buf/validate/validate_pb2.py +0 -0
  29. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/buf/validate/validate_pb2.pyi +0 -0
  30. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/buf/validate/validate_pb2_grpc.py +0 -0
  31. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/buf/validate/validate_pb2_grpc.pyi +0 -0
  32. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic/context/__init__.py +0 -0
  33. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic/context/py.typed +0 -0
  34. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic/embed/__init__.py +0 -0
  35. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic/embed/node2vec.py +0 -0
  36. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic/embed/py.typed +0 -0
  37. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic/embedding_metric/__init__.py +0 -0
  38. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic/embedding_metric/embeddings.py +0 -0
  39. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic/embedding_metric/py.typed +0 -0
  40. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic/emodel/__init__.py +0 -0
  41. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic/emodel/_defaults.py +0 -0
  42. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic/emodel/_errors.py +0 -0
  43. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic/emodel/_feature_type.py +0 -0
  44. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic/emodel/_room.py +0 -0
  45. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic/emodel/py.typed +0 -0
  46. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic/engine/__init__.py +0 -0
  47. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic/engine/_native.pyi +0 -0
  48. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic/engine/py.typed +0 -0
  49. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic/eorm/__init__.py +0 -0
  50. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic/op_graph/__init__.py +0 -0
  51. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic/op_graph/_schema.py +0 -0
  52. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic/op_graph/_transformations.py +0 -0
  53. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic/op_graph/aggregation.py +0 -0
  54. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic/op_graph/encoders.py +0 -0
  55. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic/op_graph/errors.py +0 -0
  56. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic/op_graph/feature_types.py +0 -0
  57. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic/op_graph/ops.py +0 -0
  58. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic/op_graph/py.typed +0 -0
  59. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic/op_graph/row_filters/__init__.py +0 -0
  60. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic/op_graph/row_filters/_jsonlogic.py +0 -0
  61. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic/op_graph/row_filters/_row_filters.py +0 -0
  62. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic/op_graph/sample_strategy.py +0 -0
  63. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic/orm/_proto_columns.py +0 -0
  64. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic/orm/func/__init__.py +0 -0
  65. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic/orm/func/utc_func.py +0 -0
  66. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic/orm/func/uuid_func.py +0 -0
  67. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic/orm/ids.py +0 -0
  68. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic/orm/keys.py +0 -0
  69. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic/orm/py.typed +0 -0
  70. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic/pa_scalar/__init__.py +0 -0
  71. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic/pa_scalar/_const.py +0 -0
  72. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic/pa_scalar/_from_value.py +0 -0
  73. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic/pa_scalar/_temporal.py +0 -0
  74. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic/pa_scalar/_to_value.py +0 -0
  75. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic/pa_scalar/_types.py +0 -0
  76. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic/pa_scalar/py.typed +0 -0
  77. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic/proto_wrapper/__init__.py +0 -0
  78. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic/proto_wrapper/_errors.py +0 -0
  79. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic/proto_wrapper/_wrappers.py +0 -0
  80. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic/proto_wrapper/py.typed +0 -0
  81. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic/result/__init__.py +0 -0
  82. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic/result/py.typed +0 -0
  83. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic/sql/__init__.py +0 -0
  84. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic/sql/parse_ops.py +0 -0
  85. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic/sql/py.typed +0 -0
  86. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic/system/__init__.py +0 -0
  87. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic/system/_column_encoding.py +0 -0
  88. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic/system/_dimension_reduction.py +0 -0
  89. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic/system/_planner.py +0 -0
  90. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic/system/_text_embedder.py +0 -0
  91. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic/system/client.py +0 -0
  92. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic/system/op_graph_executor.py +0 -0
  93. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic/system/py.typed +0 -0
  94. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic/system/storage.py +0 -0
  95. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic/system_sqlite/__init__.py +0 -0
  96. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic/system_sqlite/client.py +0 -0
  97. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic/system_sqlite/fs_blob_store.py +0 -0
  98. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic/system_sqlite/py.typed +0 -0
  99. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic/system_sqlite/rdbms_blob_store.py +0 -0
  100. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic/table/__init__.py +0 -0
  101. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic/table/py.typed +0 -0
  102. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic/table/table.py +0 -0
  103. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic/transfer/__init__.py +0 -0
  104. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic/transfer/_common_transformations.py +0 -0
  105. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic/transfer/py.typed +0 -0
  106. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic/version/__init__.py +0 -0
  107. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic/version/py.typed +0 -0
  108. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic/well_known_types/__init__.py +0 -0
  109. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic/well_known_types/py.typed +0 -0
  110. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/__init__.py +0 -0
  111. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/algorithm/__init__.py +0 -0
  112. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/algorithm/graph/__init__.py +0 -0
  113. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/algorithm/graph/v1/__init__.py +0 -0
  114. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/algorithm/graph/v1/graph_pb2.py +0 -0
  115. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/algorithm/graph/v1/graph_pb2.pyi +0 -0
  116. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/algorithm/graph/v1/graph_pb2_grpc.py +0 -0
  117. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/algorithm/graph/v1/graph_pb2_grpc.pyi +0 -0
  118. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/embedding/__init__.py +0 -0
  119. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/embedding/v1/__init__.py +0 -0
  120. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/embedding/v1/models_pb2.py +0 -0
  121. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/embedding/v1/models_pb2.pyi +0 -0
  122. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/embedding/v1/models_pb2_grpc.py +0 -0
  123. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/embedding/v1/models_pb2_grpc.pyi +0 -0
  124. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/feature/__init__.py +0 -0
  125. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/feature/v1/__init__.py +0 -0
  126. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/feature/v1/experiment_pb2.py +0 -0
  127. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/feature/v1/experiment_pb2.pyi +0 -0
  128. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/feature/v1/experiment_pb2_grpc.py +0 -0
  129. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/feature/v1/experiment_pb2_grpc.pyi +0 -0
  130. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/feature/v1/space_pb2.py +0 -0
  131. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/feature/v1/space_pb2.pyi +0 -0
  132. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/feature/v1/space_pb2_grpc.py +0 -0
  133. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/feature/v1/space_pb2_grpc.pyi +0 -0
  134. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/feature/v2/__init__.py +0 -0
  135. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/feature/v2/feature_view_pb2.py +0 -0
  136. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/feature/v2/feature_view_pb2.pyi +0 -0
  137. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/feature/v2/feature_view_pb2_grpc.py +0 -0
  138. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/feature/v2/feature_view_pb2_grpc.pyi +0 -0
  139. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/feature/v2/space_pb2.py +0 -0
  140. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/feature/v2/space_pb2.pyi +0 -0
  141. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/feature/v2/space_pb2_grpc.py +0 -0
  142. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/feature/v2/space_pb2_grpc.pyi +0 -0
  143. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/ingest/__init__.py +0 -0
  144. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/ingest/v1/__init__.py +0 -0
  145. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/ingest/v1/service_pb2.py +0 -0
  146. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/ingest/v1/service_pb2.pyi +0 -0
  147. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/ingest/v1/service_pb2_grpc.py +0 -0
  148. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/ingest/v1/service_pb2_grpc.pyi +0 -0
  149. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/ingest/v2/__init__.py +0 -0
  150. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/ingest/v2/pipeline_pb2.py +0 -0
  151. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/ingest/v2/pipeline_pb2.pyi +0 -0
  152. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/ingest/v2/pipeline_pb2_grpc.py +0 -0
  153. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/ingest/v2/pipeline_pb2_grpc.pyi +0 -0
  154. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/ingest/v2/quick_mode_pb2.py +0 -0
  155. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/ingest/v2/quick_mode_pb2.pyi +0 -0
  156. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/ingest/v2/quick_mode_pb2_grpc.py +0 -0
  157. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/ingest/v2/quick_mode_pb2_grpc.pyi +0 -0
  158. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/ingest/v2/resource_pb2_grpc.py +0 -0
  159. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/ingest/v2/resource_pb2_grpc.pyi +0 -0
  160. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/ingest/v2/room_pb2.py +0 -0
  161. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/ingest/v2/room_pb2.pyi +0 -0
  162. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/ingest/v2/room_pb2_grpc.py +0 -0
  163. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/ingest/v2/room_pb2_grpc.pyi +0 -0
  164. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/ingest/v2/source_pb2.py +0 -0
  165. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/ingest/v2/source_pb2.pyi +0 -0
  166. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/ingest/v2/source_pb2_grpc.py +0 -0
  167. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/ingest/v2/source_pb2_grpc.pyi +0 -0
  168. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/ingest/v2/table_pb2.py +0 -0
  169. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/ingest/v2/table_pb2.pyi +0 -0
  170. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/ingest/v2/table_pb2_grpc.py +0 -0
  171. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/ingest/v2/table_pb2_grpc.pyi +0 -0
  172. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/model/__init__.py +0 -0
  173. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/model/v1alpha/__init__.py +0 -0
  174. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/model/v1alpha/models_pb2.py +0 -0
  175. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/model/v1alpha/models_pb2.pyi +0 -0
  176. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/model/v1alpha/models_pb2_grpc.py +0 -0
  177. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/model/v1alpha/models_pb2_grpc.pyi +0 -0
  178. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/orm/__init__.py +0 -0
  179. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/orm/v1/__init__.py +0 -0
  180. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/orm/v1/agent_pb2.py +0 -0
  181. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/orm/v1/agent_pb2.pyi +0 -0
  182. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/orm/v1/agent_pb2_grpc.py +0 -0
  183. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/orm/v1/agent_pb2_grpc.pyi +0 -0
  184. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/orm/v1/common_pb2.py +0 -0
  185. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/orm/v1/common_pb2.pyi +0 -0
  186. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/orm/v1/common_pb2_grpc.py +0 -0
  187. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/orm/v1/common_pb2_grpc.pyi +0 -0
  188. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/orm/v1/completion_model_pb2.py +0 -0
  189. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/orm/v1/completion_model_pb2.pyi +0 -0
  190. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/orm/v1/completion_model_pb2_grpc.py +0 -0
  191. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/orm/v1/completion_model_pb2_grpc.pyi +0 -0
  192. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/orm/v1/feature_view_pb2.py +0 -0
  193. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/orm/v1/feature_view_pb2.pyi +0 -0
  194. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/orm/v1/feature_view_pb2_grpc.py +0 -0
  195. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/orm/v1/feature_view_pb2_grpc.pyi +0 -0
  196. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/orm/v1/pipeline_pb2.py +0 -0
  197. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/orm/v1/pipeline_pb2.pyi +0 -0
  198. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/orm/v1/pipeline_pb2_grpc.py +0 -0
  199. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/orm/v1/pipeline_pb2_grpc.pyi +0 -0
  200. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/orm/v1/space_pb2.py +0 -0
  201. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/orm/v1/space_pb2.pyi +0 -0
  202. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/orm/v1/space_pb2_grpc.py +0 -0
  203. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/orm/v1/space_pb2_grpc.pyi +0 -0
  204. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/orm/v1/table_pb2.py +0 -0
  205. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/orm/v1/table_pb2.pyi +0 -0
  206. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/orm/v1/table_pb2_grpc.py +0 -0
  207. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/orm/v1/table_pb2_grpc.pyi +0 -0
  208. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/status/__init__.py +0 -0
  209. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/status/v1/__init__.py +0 -0
  210. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/status/v1/event_pb2.py +0 -0
  211. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/status/v1/event_pb2.pyi +0 -0
  212. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/status/v1/event_pb2_grpc.py +0 -0
  213. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/status/v1/event_pb2_grpc.pyi +0 -0
  214. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/status/v1/service_pb2.py +0 -0
  215. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/status/v1/service_pb2.pyi +0 -0
  216. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/python/corvic_generated/status/v1/service_pb2_grpc.py +0 -0
  217. {corvic_engine-0.3.0rc84 → corvic_engine-0.3.0rc86}/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.84"
19
+ version = "0.3.0-rc.86"
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.84"
60
+ version = "0.3.0-rc.86"
61
61
  dependencies = [
62
62
  "version_check",
63
63
  ]
@@ -3,7 +3,7 @@ resolver = "2"
3
3
  members = ["python"]
4
4
 
5
5
  [workspace.package]
6
- version = "0.3.0-rc.84"
6
+ version = "0.3.0-rc.86"
7
7
  edition = "2021"
8
8
  publish = false
9
9
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: corvic-engine
3
- Version: 0.3.0rc84
3
+ Version: 0.3.0rc86
4
4
  Classifier: Environment :: Console
5
5
  Classifier: License :: Other/Proprietary License
6
6
  Classifier: Programming Language :: Python :: Implementation :: CPython
@@ -18,7 +18,7 @@ authors = [
18
18
  ]
19
19
  readme = "README.md"
20
20
  description = "Seamless embedding generation and retrieval."
21
- version = "0.3.0-rc.84" # sync this with tool.poetry.version below
21
+ version = "0.3.0-rc.86" # sync this with tool.poetry.version below
22
22
 
23
23
  # TODO(ddn): Pull dependencies from tool.poetry.dependencies. We use maturin as
24
24
  # the build system but poetry for the development environment.
@@ -73,7 +73,7 @@ packages = [
73
73
  ]
74
74
  description = ""
75
75
  authors = []
76
- version = "0.3.0-rc.84"
76
+ version = "0.3.0-rc.86"
77
77
 
78
78
  [tool.poetry.scripts]
79
79
  check = "corvic_check.cli:main"
@@ -164,7 +164,7 @@ torch = [
164
164
  { platform = "darwin", version = "^2.7.1", source = "pypi" },
165
165
  ]
166
166
  torchvision = [
167
- { platform = "linux", version = "^0.22.1", source = "torch-cpu-linux" },
167
+ { platform = "linux", version = "^0.22.1+cpu", source = "torch-cpu-linux" },
168
168
  { platform = "darwin", version = "^0.22.1", source = "pypi" },
169
169
  ]
170
170
  transformers = "^4.51.3"
@@ -3,7 +3,6 @@ from collections.abc import Callable, Iterable
3
3
  from typing import Generic
4
4
 
5
5
  import sqlalchemy as sa
6
- import sqlalchemy.orm as sa_orm
7
6
 
8
7
  from corvic import eorm, system, transfer
9
8
  from corvic.emodel._proto_orm_convert import (
@@ -59,7 +58,7 @@ class OrmBackedModel(
59
58
  [sa.Select[tuple[transfer.OrmT]]], sa.Select[tuple[transfer.OrmT]]
60
59
  ]
61
60
  | None = None,
62
- existing_session: sa_orm.Session | None = None,
61
+ existing_session: eorm.Session | None = None,
63
62
  ) -> Ok[list[transfer.ProtoT]] | NotFoundError | InvalidArgumentError:
64
63
  return super().list_as_proto(
65
64
  client,
@@ -91,7 +90,7 @@ class HasIdOrmBackedModel(
91
90
  [sa.Select[tuple[transfer.OrmHasIdT]]], sa.Select[tuple[transfer.OrmHasIdT]]
92
91
  ]
93
92
  | None = None,
94
- existing_session: sa_orm.Session | None = None,
93
+ existing_session: eorm.Session | None = None,
95
94
  ) -> Ok[list[transfer.ProtoHasIdT]] | NotFoundError | InvalidArgumentError:
96
95
  return super().list_as_proto(
97
96
  client,
@@ -7,8 +7,6 @@ import datetime
7
7
  from collections.abc import Iterable, Sequence
8
8
  from typing import Literal, TypeAlias
9
9
 
10
- from sqlalchemy import orm as sa_orm
11
-
12
10
  from corvic import eorm, system, transfer
13
11
  from corvic.emodel._base_model import OrgWideStandardModel
14
12
  from corvic.emodel._defaults import Defaults
@@ -151,7 +149,7 @@ class CompletionModel(
151
149
  created_before: datetime.datetime | None = None,
152
150
  client: system.Client | None = None,
153
151
  ids: Iterable[CompletionModelID] | None = None,
154
- existing_session: sa_orm.Session | None = None,
152
+ existing_session: eorm.Session | None = None,
155
153
  ) -> Ok[list[CompletionModel]] | NotFoundError | InvalidArgumentError:
156
154
  """List completion models."""
157
155
  client = client or Defaults.get_default_client()
@@ -179,7 +177,7 @@ class CompletionModel(
179
177
  cls,
180
178
  completion_model_id: CompletionModelID,
181
179
  client: system.Client | None = None,
182
- session: sa_orm.Session | None = None,
180
+ session: eorm.Session | None = None,
183
181
  ) -> Ok[CompletionModel] | NotFoundError:
184
182
  client = client or Defaults.get_default_client()
185
183
  return cls.load_proto_for(completion_model_id, client, session).map(
@@ -691,7 +691,7 @@ class FeatureView(
691
691
  cls,
692
692
  feature_view_id: FeatureViewID,
693
693
  client: system.Client | None = None,
694
- session: sa_orm.Session | None = None,
694
+ session: eorm.Session | None = None,
695
695
  ) -> Ok[Self] | NotFoundError:
696
696
  client = client or Defaults.get_default_client()
697
697
  return cls.load_proto_for(feature_view_id, client, session).map(
@@ -723,7 +723,7 @@ class FeatureView(
723
723
  created_before: datetime.datetime | None = None,
724
724
  client: system.Client | None = None,
725
725
  ids: Iterable[FeatureViewID] | None = None,
726
- existing_session: sa_orm.Session | None = None,
726
+ existing_session: eorm.Session | None = None,
727
727
  ) -> Ok[list[FeatureView]] | NotFoundError | InvalidArgumentError:
728
728
  """List resources."""
729
729
  client = client or Defaults.get_default_client()
@@ -100,7 +100,7 @@ class Pipeline(StandardModel[PipelineID, models_pb2.Pipeline, eorm.Pipeline]):
100
100
  cls,
101
101
  obj_id: PipelineID,
102
102
  client: system.Client | None = None,
103
- session: sa_orm.Session | None = None,
103
+ session: eorm.Session | None = None,
104
104
  ) -> Ok[SpecificPipeline] | NotFoundError:
105
105
  client = client or Defaults.get_default_client()
106
106
  match cls.list_as_proto(
@@ -134,7 +134,7 @@ class Pipeline(StandardModel[PipelineID, models_pb2.Pipeline, eorm.Pipeline]):
134
134
  created_before: datetime.datetime | None = None,
135
135
  client: system.Client | None = None,
136
136
  ids: Iterable[PipelineID] | None = None,
137
- existing_session: sa_orm.Session | None = None,
137
+ existing_session: eorm.Session | None = None,
138
138
  ) -> Ok[list[SpecificPipeline]] | InvalidArgumentError | NotFoundError:
139
139
  client = client or Defaults.get_default_client()
140
140
 
@@ -231,7 +231,7 @@ def add_orm_org_mixin_to_session(
231
231
  orm_obj: OrmHasIdBelongsToOrgT,
232
232
  proto_obj: _ModelHasIdBelongsToOrgProto,
233
233
  id_class: type[transfer.OrmIdT],
234
- session: sa_orm.Session,
234
+ session: eorm.Session,
235
235
  ) -> Ok[OrmHasIdBelongsToOrgT] | orm.InvalidORMIdentifierError:
236
236
  match transfer.translate_orm_id(proto_obj.id, id_class):
237
237
  case Ok(orm_id):
@@ -257,7 +257,7 @@ def add_orm_room_mixin_to_session(
257
257
  orm_obj: OrmHasIdBelongsToRoomT,
258
258
  proto_obj: _ModelHasIdBelongsToRoomProto,
259
259
  id_class: type[transfer.OrmIdT],
260
- session: sa_orm.Session,
260
+ session: eorm.Session,
261
261
  ) -> Ok[OrmHasIdBelongsToRoomT] | orm.InvalidORMIdentifierError:
262
262
  room_id = eorm.RoomID(proto_obj.room_id)
263
263
  match room_id.to_db():
@@ -270,7 +270,7 @@ def add_orm_room_mixin_to_session(
270
270
 
271
271
 
272
272
  def _resource_pipeline_to_orm(
273
- proto_obj: models_pb2.Resource, orm_obj: eorm.Resource, session: sa_orm.Session
273
+ proto_obj: models_pb2.Resource, orm_obj: eorm.Resource, session: eorm.Session
274
274
  ) -> Ok[None] | InvalidArgumentError:
275
275
  if proto_obj.pipeline_id:
276
276
  match transfer.translate_orm_id(proto_obj.pipeline_id, eorm.PipelineID):
@@ -296,7 +296,7 @@ def _resource_pipeline_to_orm(
296
296
 
297
297
 
298
298
  def resource_proto_to_orm(
299
- proto_obj: models_pb2.Resource, session: sa_orm.Session
299
+ proto_obj: models_pb2.Resource, session: eorm.Session
300
300
  ) -> Ok[eorm.Resource] | InvalidArgumentError:
301
301
  orm_obj = eorm.Resource(
302
302
  name=proto_obj.name,
@@ -321,11 +321,11 @@ def resource_proto_to_orm(
321
321
  def _ensure_id(
322
322
  proto_obj: transfer.ProtoHasIdT,
323
323
  proto_to_orm: Callable[
324
- [transfer.ProtoHasIdT, sa_orm.Session],
324
+ [transfer.ProtoHasIdT, eorm.Session],
325
325
  Ok[transfer.OrmHasIdT] | InvalidArgumentError,
326
326
  ],
327
327
  id_type: type[transfer.OrmIdT],
328
- session: sa_orm.Session,
328
+ session: eorm.Session,
329
329
  ) -> Ok[transfer.OrmIdT] | orm.InvalidORMIdentifierError | InvalidArgumentError:
330
330
  match transfer.translate_orm_id(proto_obj.id, id_type):
331
331
  case orm.InvalidORMIdentifierError() as err:
@@ -344,7 +344,7 @@ def _ensure_id(
344
344
 
345
345
 
346
346
  def pipeline_proto_to_orm( # noqa: C901
347
- proto_obj: models_pb2.Pipeline, session: sa_orm.Session
347
+ proto_obj: models_pb2.Pipeline, session: eorm.Session
348
348
  ) -> Ok[eorm.Pipeline] | orm.InvalidORMIdentifierError | InvalidArgumentError:
349
349
  orm_obj = eorm.Pipeline(
350
350
  name=proto_obj.name,
@@ -389,7 +389,7 @@ def pipeline_proto_to_orm( # noqa: C901
389
389
 
390
390
 
391
391
  def source_proto_to_orm(
392
- proto_obj: models_pb2.Source, session: sa_orm.Session
392
+ proto_obj: models_pb2.Source, session: eorm.Session
393
393
  ) -> Ok[eorm.Source] | orm.InvalidORMIdentifierError | InvalidArgumentError:
394
394
  orm_obj = eorm.Source(
395
395
  name=proto_obj.name,
@@ -399,7 +399,7 @@ def source_proto_to_orm(
399
399
 
400
400
 
401
401
  def space_proto_to_orm(
402
- proto_obj: models_pb2.Space, session: sa_orm.Session
402
+ proto_obj: models_pb2.Space, session: eorm.Session
403
403
  ) -> Ok[eorm.Space] | orm.InvalidORMIdentifierError | InvalidArgumentError:
404
404
  match _ensure_id(
405
405
  proto_obj.feature_view, feature_view_proto_to_orm, eorm.FeatureViewID, session
@@ -423,7 +423,7 @@ def space_proto_to_orm(
423
423
 
424
424
 
425
425
  def feature_view_proto_to_orm(
426
- proto_obj: models_pb2.FeatureView, session: sa_orm.Session
426
+ proto_obj: models_pb2.FeatureView, session: eorm.Session
427
427
  ) -> Ok[eorm.FeatureView] | orm.InvalidORMIdentifierError | InvalidArgumentError:
428
428
  orm_obj = eorm.FeatureView(
429
429
  name=proto_obj.name,
@@ -493,7 +493,7 @@ def _feature_view_source_proto_to_orm(
493
493
  proto_obj: models_pb2.FeatureViewSource,
494
494
  room_id: eorm.RoomID,
495
495
  feature_view_id: eorm.FeatureViewID,
496
- session: sa_orm.Session,
496
+ session: eorm.Session,
497
497
  ) -> Ok[eorm.FeatureViewSource] | orm.InvalidORMIdentifierError | InvalidArgumentError:
498
498
  match _ensure_id(proto_obj.source, source_proto_to_orm, eorm.SourceID, session):
499
499
  case orm.InvalidORMIdentifierError() | InvalidArgumentError() as err:
@@ -514,14 +514,14 @@ def _feature_view_source_proto_to_orm(
514
514
 
515
515
 
516
516
  def room_proto_to_orm(
517
- proto_obj: models_pb2.Room, session: sa_orm.Session
517
+ proto_obj: models_pb2.Room, session: eorm.Session
518
518
  ) -> Ok[eorm.Room] | orm.InvalidORMIdentifierError | InvalidArgumentError:
519
519
  orm_obj = eorm.Room(name=proto_obj.name)
520
520
  return add_orm_org_mixin_to_session(orm_obj, proto_obj, eorm.RoomID, session)
521
521
 
522
522
 
523
523
  def completion_model_proto_to_orm(
524
- proto_obj: models_pb2.CompletionModel, session: sa_orm.Session
524
+ proto_obj: models_pb2.CompletionModel, session: eorm.Session
525
525
  ) -> Ok[eorm.CompletionModel] | InvalidArgumentError:
526
526
  orm_obj = eorm.CompletionModel(
527
527
  name=proto_obj.name,
@@ -538,7 +538,7 @@ def completion_model_proto_to_orm(
538
538
 
539
539
  def source_delete_orms(
540
540
  orm_ids: Sequence[eorm.SourceID],
541
- session: sa_orm.Session,
541
+ session: eorm.Session,
542
542
  ) -> Ok[None] | InvalidArgumentError:
543
543
  feat_view_refs = list(
544
544
  session.scalars(
@@ -557,7 +557,7 @@ def source_delete_orms(
557
557
 
558
558
 
559
559
  def pipeline_delete_orms(
560
- ids: Sequence[eorm.PipelineID], session: sa_orm.Session
560
+ ids: Sequence[eorm.PipelineID], session: eorm.Session
561
561
  ) -> Ok[None] | InvalidArgumentError:
562
562
  source_ids = [
563
563
  val[0]
@@ -135,7 +135,7 @@ class Resource(StandardModel[ResourceID, models_pb2.Resource, eorm.Resource]):
135
135
  client: system.Client | None = None,
136
136
  ids: Iterable[ResourceID] | None = None,
137
137
  is_terminal: bool | None = None,
138
- existing_session: sa_orm.Session | None = None,
138
+ existing_session: eorm.Session | None = None,
139
139
  url: str | None = None,
140
140
  ) -> Ok[list[Resource]] | NotFoundError | InvalidArgumentError:
141
141
  """List resources."""
@@ -192,7 +192,7 @@ class Resource(StandardModel[ResourceID, models_pb2.Resource, eorm.Resource]):
192
192
  cls,
193
193
  resource_id: ResourceID,
194
194
  client: system.Client | None = None,
195
- session: sa_orm.Session | None = None,
195
+ session: eorm.Session | None = None,
196
196
  ) -> Ok[Resource] | NotFoundError:
197
197
  client = client or Defaults.get_default_client()
198
198
  return cls.load_proto_for(resource_id, client, session).map(
@@ -83,7 +83,7 @@ class Source(StandardModel[SourceID, models_pb2.Source, eorm.Source]):
83
83
  cls,
84
84
  source_id: SourceID,
85
85
  client: system.Client | None = None,
86
- session: sa_orm.Session | None = None,
86
+ session: eorm.Session | None = None,
87
87
  ) -> Ok[Self] | NotFoundError:
88
88
  client = client or Defaults.get_default_client()
89
89
  return cls.load_proto_for(source_id, client, session).map(
@@ -212,7 +212,7 @@ class Source(StandardModel[SourceID, models_pb2.Source, eorm.Source]):
212
212
  created_before: datetime.datetime | None = None,
213
213
  client: system.Client | None = None,
214
214
  ids: Iterable[SourceID] | None = None,
215
- existing_session: sa_orm.Session | None = None,
215
+ existing_session: eorm.Session | None = None,
216
216
  ) -> Ok[list[Source]] | NotFoundError | InvalidArgumentError:
217
217
  """List sources that exist in storage."""
218
218
  client = client or Defaults.get_default_client()
@@ -265,7 +265,7 @@ class Space(StandardModel[SpaceID, models_pb2.Space, eorm.Space]):
265
265
  cls,
266
266
  space_id: SpaceID,
267
267
  client: system.Client | None = None,
268
- session: sa_orm.Session | None = None,
268
+ session: eorm.Session | None = None,
269
269
  ) -> Ok[SpecificSpace] | NotFoundError:
270
270
  client = client or Defaults.get_default_client()
271
271
  return cls.load_proto_for(space_id, client, session).map(
@@ -284,7 +284,7 @@ class Space(StandardModel[SpaceID, models_pb2.Space, eorm.Space]):
284
284
  created_before: datetime.datetime | None = None,
285
285
  client: system.Client | None = None,
286
286
  ids: Iterable[eorm.SpaceID] | None = None,
287
- existing_session: sa_orm.Session | None = None,
287
+ existing_session: eorm.Session | None = None,
288
288
  ) -> Ok[list[SpecificSpace]] | InvalidArgumentError | NotFoundError:
289
289
  client = client or Defaults.get_default_client()
290
290
 
@@ -23,6 +23,7 @@ from corvic.orm.errors import (
23
23
  DeletedObjectError,
24
24
  InvalidORMIdentifierError,
25
25
  RequestedObjectsForNobodyError,
26
+ dbapi_error_to_result,
26
27
  )
27
28
  from corvic.orm.func import utc_now
28
29
  from corvic.orm.ids import (
@@ -278,4 +279,5 @@ __all__ = [
278
279
  "primary_key_foreign_column",
279
280
  "primary_key_identity_column",
280
281
  "primary_key_uuid_column",
282
+ "dbapi_error_to_result",
281
283
  ]
@@ -1,6 +1,7 @@
1
1
  """Mixin models for corvic orm tables."""
2
2
 
3
3
  from datetime import UTC, datetime
4
+ from types import TracebackType
4
5
  from typing import Any, LiteralString
5
6
 
6
7
  import sqlalchemy as sa
@@ -9,9 +10,7 @@ from sqlalchemy import orm as sa_orm
9
10
  from sqlalchemy.ext import hybrid
10
11
  from sqlalchemy.ext.hybrid import hybrid_property
11
12
 
12
- from corvic.orm.errors import (
13
- DeletedObjectError,
14
- )
13
+ from corvic.orm.errors import DeletedObjectError, dbapi_error_to_result
15
14
 
16
15
 
17
16
  class BadDeleteError(DeletedObjectError):
@@ -155,6 +154,16 @@ class Session(sa_orm.Session):
155
154
 
156
155
  _soft_deleted: dict[sa_orm.InstanceState[Any], Any] | None = None
157
156
 
157
+ def __exit__(
158
+ self,
159
+ type_: type[BaseException] | None,
160
+ value: BaseException | None,
161
+ traceback: TracebackType | None,
162
+ ):
163
+ super().__exit__(type_, value, traceback)
164
+ if isinstance(value, sa.exc.DBAPIError):
165
+ raise dbapi_error_to_result(value) from value
166
+
158
167
  def _track_soft_deleted(self, instance: object):
159
168
  if self._soft_deleted is None:
160
169
  self._soft_deleted = {}
@@ -0,0 +1,54 @@
1
+ """Errors specific to communicating with the database."""
2
+
3
+ import sqlalchemy as sa
4
+
5
+ from corvic import result
6
+
7
+
8
+ class InvalidORMIdentifierError(result.InvalidArgumentError):
9
+ """Raised when an identifier can't be translated to its orm equivalent."""
10
+
11
+
12
+ class RequestedObjectsForNobodyError(result.Error):
13
+ """Raised when attempts are made to access database objects as the nobody org."""
14
+
15
+
16
+ class DeletedObjectError(result.Error):
17
+ """DeletedObjectError result Error.
18
+
19
+ Raised on invalid operations to objects which are soft deleted.
20
+ """
21
+
22
+
23
+ def dbapi_error_to_result(err: sa.exc.DBAPIError):
24
+ # based on https://docs.sqlalchemy.org/en/20/errors.html
25
+ match err:
26
+ case sa.exc.NotSupportedError():
27
+ # raised in the unexpected case that we're doing something that the
28
+ # database just doesn't support
29
+ raise result.InternalError.from_(err) from err
30
+ case (
31
+ sa.exc.OperationalError()
32
+ | sa.exc.InterfaceError()
33
+ | sa.exc.InternalError()
34
+ ):
35
+ # These are commonly things that are outside of our control that might
36
+ # succeed on retry, e.g., connections being dropped
37
+ return result.UnavailableError.from_(err)
38
+ case sa.exc.IntegrityError:
39
+ return result.InvalidArgumentError.from_(err)
40
+ case sa.exc.ProgrammingError():
41
+ if "could not serialize" in str(err):
42
+ return result.UnavailableError.from_(err)
43
+ case _:
44
+ pass
45
+
46
+ try:
47
+ import psycopg.errors
48
+
49
+ if isinstance(err.orig, psycopg.errors.SerializationFailure):
50
+ return result.UnavailableError.from_(err)
51
+ except ModuleNotFoundError:
52
+ pass
53
+
54
+ return result.InvalidArgumentError.from_(err)
@@ -39,10 +39,6 @@ class EmbedTextResult:
39
39
  class TextEmbedder(Protocol):
40
40
  """Use a model to embed text."""
41
41
 
42
- def embed(
43
- self, context: EmbedTextContext
44
- ) -> Ok[EmbedTextResult] | InvalidArgumentError | InternalError: ...
45
-
46
42
  async def aembed(
47
43
  self,
48
44
  context: EmbedTextContext,
@@ -74,10 +70,6 @@ class ImageEmbedder(Protocol):
74
70
  @classmethod
75
71
  def model_name(cls) -> str: ...
76
72
 
77
- def embed(
78
- self, context: EmbedImageContext
79
- ) -> Ok[EmbedImageResult] | InvalidArgumentError | InternalError: ...
80
-
81
73
  async def aembed(
82
74
  self,
83
75
  context: EmbedImageContext,
@@ -3,7 +3,7 @@ import asyncio
3
3
  import dataclasses
4
4
  from concurrent.futures import ThreadPoolExecutor
5
5
  from io import BytesIO
6
- from typing import TYPE_CHECKING, Any, cast
6
+ from typing import TYPE_CHECKING, Any, Protocol, cast
7
7
 
8
8
  import numpy as np
9
9
  import polars as pl
@@ -17,8 +17,7 @@ from corvic.system._embedder import (
17
17
 
18
18
  if TYPE_CHECKING:
19
19
  from PIL import Image
20
- from transformers.models.auto.modeling_auto import AutoModel
21
- from transformers.models.auto.processing_auto import AutoProcessor
20
+ from torch import FloatTensor
22
21
 
23
22
 
24
23
  class RandomImageEmbedder(ImageEmbedder):
@@ -77,10 +76,23 @@ def image_from_bytes(
77
76
  return InvalidArgumentError("invalid image format")
78
77
 
79
78
 
79
+ class TransformersImageModel(Protocol):
80
+ """Generic class for a Model from transformers."""
81
+
82
+ def eval(self): ...
83
+ def get_image_features(*, pixel_values: "FloatTensor") -> "FloatTensor": ...
84
+
85
+
86
+ class TransformersProcessor(Protocol):
87
+ """Generic class for a Processor from transformers."""
88
+
89
+ def __call__(self, *, images: list["Image.Image"], return_tensors: str): ...
90
+
91
+
80
92
  @dataclasses.dataclass
81
93
  class LoadedModels:
82
- model: "AutoModel"
83
- processor: "AutoProcessor"
94
+ model: TransformersImageModel
95
+ processor: TransformersProcessor
84
96
 
85
97
 
86
98
  class HFModelImageEmbedder(ImageEmbedder):
@@ -91,7 +103,7 @@ class HFModelImageEmbedder(ImageEmbedder):
91
103
  def model_revision(cls) -> str: ...
92
104
 
93
105
  @abc.abstractmethod
94
- def _load_models(self) -> LoadedModels: ...
106
+ def load_models(self) -> LoadedModels: ...
95
107
 
96
108
  def embed(
97
109
  self, context: EmbedImageContext
@@ -122,19 +134,19 @@ class HFModelImageEmbedder(ImageEmbedder):
122
134
  )
123
135
  )
124
136
 
125
- models = self._load_models()
137
+ models = self.load_models()
126
138
  model = models.model
127
139
  processor = models.processor
128
- model.eval() # type: ignore[reportAttributeAccess]
140
+ model.eval()
129
141
 
130
142
  import torch
131
143
 
132
144
  with torch.no_grad():
133
145
  inputs = cast(
134
146
  dict[str, torch.FloatTensor],
135
- processor(images=images, return_tensors="pt"), # type: ignore[reportAttributeAccess]
147
+ processor(images=images, return_tensors="pt"),
136
148
  )
137
- image_features = model.get_image_features( # type: ignore[reportAttributeAccess]
149
+ image_features = model.get_image_features(
138
150
  pixel_values=inputs["pixel_values"]
139
151
  )
140
152
 
@@ -181,23 +193,21 @@ class Clip(HFModelImageEmbedder):
181
193
  def model_revision(cls) -> str:
182
194
  return "5812e510083bb2d23fa43778a39ac065d205ed4d"
183
195
 
184
- def _load_models(self) -> LoadedModels:
185
- from transformers.models.auto.modeling_auto import AutoModel
186
- from transformers.models.auto.processing_auto import AutoProcessor
196
+ def load_models(self) -> LoadedModels:
187
197
  from transformers.models.clip import (
188
198
  CLIPModel,
189
199
  CLIPProcessor,
190
200
  )
191
201
 
192
202
  model = cast(
193
- AutoModel,
203
+ TransformersImageModel,
194
204
  CLIPModel.from_pretrained( # pyright: ignore[reportUnknownMemberType]
195
205
  pretrained_model_name_or_path=self.model_name(),
196
206
  revision=self.model_revision(),
197
207
  ),
198
208
  )
199
209
  processor = cast(
200
- AutoProcessor,
210
+ TransformersProcessor,
201
211
  CLIPProcessor.from_pretrained( # pyright: ignore[reportUnknownMemberType]
202
212
  pretrained_model_name_or_path=self.model_name(),
203
213
  revision=self.model_revision(),
@@ -218,12 +228,12 @@ class SigLIP2(HFModelImageEmbedder):
218
228
  def model_revision(cls) -> str:
219
229
  return "a89f5c5093f902bf39d3cd4d81d2c09867f0724b"
220
230
 
221
- def _load_models(self):
231
+ def load_models(self):
222
232
  from transformers.models.auto.modeling_auto import AutoModel
223
233
  from transformers.models.auto.processing_auto import AutoProcessor
224
234
 
225
235
  model = cast(
226
- AutoModel,
236
+ TransformersImageModel,
227
237
  AutoModel.from_pretrained( # pyright: ignore[reportUnknownMemberType]
228
238
  pretrained_model_name_or_path=self.model_name(),
229
239
  revision=self.model_revision(),
@@ -231,7 +241,7 @@ class SigLIP2(HFModelImageEmbedder):
231
241
  ),
232
242
  )
233
243
  processor = cast(
234
- AutoProcessor,
244
+ TransformersProcessor,
235
245
  AutoProcessor.from_pretrained( # pyright: ignore[reportUnknownMemberType]
236
246
  pretrained_model_name_or_path=self.model_name(),
237
247
  revision=self.model_revision(),
@@ -1539,8 +1539,7 @@ class InMemoryExecutor(OpGraphExecutor):
1539
1539
  case Ok(query):
1540
1540
  pass
1541
1541
  return (
1542
- await context.run_on_worker(
1543
- self._staging_db.run_select_query,
1542
+ await self._staging_db.run_select_query(
1544
1543
  query,
1545
1544
  expected_schema,
1546
1545
  context.current_slice_args,
@@ -45,7 +45,7 @@ class StagingDB(Protocol):
45
45
  similarity_metric: VectorSimilarityMetric,
46
46
  ) -> "sqlglot.exp.Query": ...
47
47
 
48
- def run_select_query(
48
+ async def run_select_query(
49
49
  self,
50
50
  query: "sqlglot.exp.Query",
51
51
  expected_schema: pa.Schema,
@@ -393,7 +393,7 @@ class DuckDBStaging(StagingDB):
393
393
 
394
394
  return vector_search_query.with_(vector_union_table, as_=union)
395
395
 
396
- def run_select_query(
396
+ async def run_select_query(
397
397
  self,
398
398
  query: sqlglot.exp.Query,
399
399
  expected_schema: pa.Schema,