corvic-engine 0.3.0rc77__tar.gz → 0.3.0rc78__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 (214) hide show
  1. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/Cargo.lock +6 -6
  2. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/Cargo.toml +1 -1
  3. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/PKG-INFO +1 -1
  4. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/pyproject.toml +3 -2
  5. {corvic_engine-0.3.0rc77/python/corvic/orm → corvic_engine-0.3.0rc78/python/corvic/eorm}/__init__.py +128 -110
  6. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic/model/_base_model.py +24 -24
  7. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic/model/_completion_model.py +9 -9
  8. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic/model/_defaults.py +5 -5
  9. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic/model/_feature_view.py +17 -17
  10. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic/model/_pipeline.py +12 -12
  11. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic/model/_proto_orm_convert.py +102 -100
  12. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic/model/_resource.py +24 -24
  13. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic/model/_room.py +10 -14
  14. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic/model/_source.py +18 -18
  15. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic/model/_space.py +21 -21
  16. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic/op_graph/_schema.py +3 -3
  17. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic/op_graph/feature_types.py +4 -4
  18. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic/op_graph/ops.py +2 -2
  19. corvic_engine-0.3.0rc78/python/corvic/orm/__init__.py +281 -0
  20. corvic_engine-0.3.0rc78/python/corvic/orm/_soft_delete.py +218 -0
  21. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic/orm/ids.py +0 -69
  22. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic/system/_embedder.py +2 -2
  23. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic/system/op_graph_executor.py +2 -2
  24. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic/system/storage.py +10 -8
  25. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic/system_sqlite/client.py +10 -10
  26. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic/table/table.py +3 -3
  27. corvic_engine-0.3.0rc77/python/corvic/orm/base.py +0 -256
  28. corvic_engine-0.3.0rc77/python/corvic/orm/mixins.py +0 -480
  29. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/LICENSE +0 -0
  30. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/README.md +0 -0
  31. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/Cargo.toml +0 -0
  32. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/buf/validate/validate_pb2.py +0 -0
  33. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/buf/validate/validate_pb2.pyi +0 -0
  34. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/buf/validate/validate_pb2_grpc.py +0 -0
  35. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/buf/validate/validate_pb2_grpc.pyi +0 -0
  36. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic/context/__init__.py +0 -0
  37. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic/context/py.typed +0 -0
  38. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic/embed/__init__.py +0 -0
  39. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic/embed/node2vec.py +0 -0
  40. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic/embed/py.typed +0 -0
  41. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic/embedding_metric/__init__.py +0 -0
  42. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic/embedding_metric/embeddings.py +0 -0
  43. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic/embedding_metric/py.typed +0 -0
  44. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic/engine/__init__.py +0 -0
  45. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic/engine/_native.pyi +0 -0
  46. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic/engine/py.typed +0 -0
  47. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic/model/__init__.py +0 -0
  48. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic/model/_errors.py +0 -0
  49. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic/model/_feature_type.py +0 -0
  50. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic/model/py.typed +0 -0
  51. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic/op_graph/__init__.py +0 -0
  52. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic/op_graph/_transformations.py +0 -0
  53. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic/op_graph/aggregation.py +0 -0
  54. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic/op_graph/encoders.py +0 -0
  55. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic/op_graph/errors.py +0 -0
  56. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic/op_graph/py.typed +0 -0
  57. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic/op_graph/row_filters/__init__.py +0 -0
  58. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic/op_graph/row_filters/_jsonlogic.py +0 -0
  59. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic/op_graph/row_filters/_row_filters.py +0 -0
  60. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic/op_graph/sample_strategy.py +0 -0
  61. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic/orm/_proto_columns.py +0 -0
  62. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic/orm/errors.py +0 -0
  63. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic/orm/func/__init__.py +0 -0
  64. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic/orm/func/utc_func.py +0 -0
  65. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic/orm/func/uuid_func.py +0 -0
  66. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic/orm/keys.py +0 -0
  67. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic/orm/py.typed +0 -0
  68. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic/pa_scalar/__init__.py +0 -0
  69. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic/pa_scalar/_const.py +0 -0
  70. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic/pa_scalar/_from_value.py +0 -0
  71. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic/pa_scalar/_temporal.py +0 -0
  72. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic/pa_scalar/_to_value.py +0 -0
  73. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic/pa_scalar/_types.py +0 -0
  74. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic/pa_scalar/py.typed +0 -0
  75. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic/proto_wrapper/__init__.py +0 -0
  76. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic/proto_wrapper/_errors.py +0 -0
  77. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic/proto_wrapper/_wrappers.py +0 -0
  78. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic/proto_wrapper/py.typed +0 -0
  79. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic/result/__init__.py +0 -0
  80. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic/result/py.typed +0 -0
  81. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic/sql/__init__.py +0 -0
  82. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic/sql/parse_ops.py +0 -0
  83. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic/sql/py.typed +0 -0
  84. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic/system/__init__.py +0 -0
  85. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic/system/_column_encoding.py +0 -0
  86. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic/system/_dimension_reduction.py +0 -0
  87. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic/system/_image_embedder.py +0 -0
  88. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic/system/_planner.py +0 -0
  89. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic/system/_text_embedder.py +0 -0
  90. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic/system/client.py +0 -0
  91. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic/system/in_memory_executor.py +0 -0
  92. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic/system/py.typed +0 -0
  93. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic/system/staging.py +0 -0
  94. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic/system_sqlite/__init__.py +0 -0
  95. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic/system_sqlite/fs_blob_store.py +0 -0
  96. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic/system_sqlite/py.typed +0 -0
  97. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic/system_sqlite/rdbms_blob_store.py +0 -0
  98. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic/system_sqlite/staging.py +0 -0
  99. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic/table/__init__.py +0 -0
  100. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic/table/py.typed +0 -0
  101. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic/version/__init__.py +0 -0
  102. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic/version/py.typed +0 -0
  103. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic/well_known_types/__init__.py +0 -0
  104. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic/well_known_types/py.typed +0 -0
  105. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/__init__.py +0 -0
  106. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/algorithm/__init__.py +0 -0
  107. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/algorithm/graph/__init__.py +0 -0
  108. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/algorithm/graph/v1/__init__.py +0 -0
  109. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/algorithm/graph/v1/graph_pb2.py +0 -0
  110. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/algorithm/graph/v1/graph_pb2.pyi +0 -0
  111. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/algorithm/graph/v1/graph_pb2_grpc.py +0 -0
  112. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/algorithm/graph/v1/graph_pb2_grpc.pyi +0 -0
  113. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/embedding/__init__.py +0 -0
  114. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/embedding/v1/__init__.py +0 -0
  115. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/embedding/v1/models_pb2.py +0 -0
  116. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/embedding/v1/models_pb2.pyi +0 -0
  117. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/embedding/v1/models_pb2_grpc.py +0 -0
  118. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/embedding/v1/models_pb2_grpc.pyi +0 -0
  119. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/feature/__init__.py +0 -0
  120. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/feature/v1/__init__.py +0 -0
  121. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/feature/v1/experiment_pb2.py +0 -0
  122. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/feature/v1/experiment_pb2.pyi +0 -0
  123. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/feature/v1/experiment_pb2_grpc.py +0 -0
  124. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/feature/v1/experiment_pb2_grpc.pyi +0 -0
  125. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/feature/v1/space_pb2.py +0 -0
  126. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/feature/v1/space_pb2.pyi +0 -0
  127. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/feature/v1/space_pb2_grpc.py +0 -0
  128. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/feature/v1/space_pb2_grpc.pyi +0 -0
  129. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/feature/v2/__init__.py +0 -0
  130. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/feature/v2/feature_view_pb2.py +0 -0
  131. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/feature/v2/feature_view_pb2.pyi +0 -0
  132. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/feature/v2/feature_view_pb2_grpc.py +0 -0
  133. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/feature/v2/feature_view_pb2_grpc.pyi +0 -0
  134. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/feature/v2/space_pb2.py +0 -0
  135. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/feature/v2/space_pb2.pyi +0 -0
  136. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/feature/v2/space_pb2_grpc.py +0 -0
  137. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/feature/v2/space_pb2_grpc.pyi +0 -0
  138. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/ingest/__init__.py +0 -0
  139. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/ingest/v1/__init__.py +0 -0
  140. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/ingest/v1/service_pb2.py +0 -0
  141. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/ingest/v1/service_pb2.pyi +0 -0
  142. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/ingest/v1/service_pb2_grpc.py +0 -0
  143. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/ingest/v1/service_pb2_grpc.pyi +0 -0
  144. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/ingest/v2/__init__.py +0 -0
  145. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/ingest/v2/pipeline_pb2.py +0 -0
  146. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/ingest/v2/pipeline_pb2.pyi +0 -0
  147. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/ingest/v2/pipeline_pb2_grpc.py +0 -0
  148. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/ingest/v2/pipeline_pb2_grpc.pyi +0 -0
  149. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/ingest/v2/quick_mode_pb2.py +0 -0
  150. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/ingest/v2/quick_mode_pb2.pyi +0 -0
  151. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/ingest/v2/quick_mode_pb2_grpc.py +0 -0
  152. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/ingest/v2/quick_mode_pb2_grpc.pyi +0 -0
  153. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/ingest/v2/resource_pb2.py +0 -0
  154. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/ingest/v2/resource_pb2.pyi +0 -0
  155. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/ingest/v2/resource_pb2_grpc.py +0 -0
  156. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/ingest/v2/resource_pb2_grpc.pyi +0 -0
  157. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/ingest/v2/room_pb2.py +0 -0
  158. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/ingest/v2/room_pb2.pyi +0 -0
  159. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/ingest/v2/room_pb2_grpc.py +0 -0
  160. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/ingest/v2/room_pb2_grpc.pyi +0 -0
  161. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/ingest/v2/source_pb2.py +0 -0
  162. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/ingest/v2/source_pb2.pyi +0 -0
  163. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/ingest/v2/source_pb2_grpc.py +0 -0
  164. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/ingest/v2/source_pb2_grpc.pyi +0 -0
  165. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/ingest/v2/table_pb2.py +0 -0
  166. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/ingest/v2/table_pb2.pyi +0 -0
  167. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/ingest/v2/table_pb2_grpc.py +0 -0
  168. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/ingest/v2/table_pb2_grpc.pyi +0 -0
  169. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/model/__init__.py +0 -0
  170. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/model/v1alpha/__init__.py +0 -0
  171. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/model/v1alpha/models_pb2.py +0 -0
  172. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/model/v1alpha/models_pb2.pyi +0 -0
  173. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/model/v1alpha/models_pb2_grpc.py +0 -0
  174. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/model/v1alpha/models_pb2_grpc.pyi +0 -0
  175. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/orm/__init__.py +0 -0
  176. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/orm/v1/__init__.py +0 -0
  177. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/orm/v1/agent_pb2.py +0 -0
  178. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/orm/v1/agent_pb2.pyi +0 -0
  179. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/orm/v1/agent_pb2_grpc.py +0 -0
  180. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/orm/v1/agent_pb2_grpc.pyi +0 -0
  181. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/orm/v1/common_pb2.py +0 -0
  182. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/orm/v1/common_pb2.pyi +0 -0
  183. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/orm/v1/common_pb2_grpc.py +0 -0
  184. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/orm/v1/common_pb2_grpc.pyi +0 -0
  185. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/orm/v1/completion_model_pb2.py +0 -0
  186. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/orm/v1/completion_model_pb2.pyi +0 -0
  187. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/orm/v1/completion_model_pb2_grpc.py +0 -0
  188. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/orm/v1/completion_model_pb2_grpc.pyi +0 -0
  189. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/orm/v1/feature_view_pb2.py +0 -0
  190. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/orm/v1/feature_view_pb2.pyi +0 -0
  191. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/orm/v1/feature_view_pb2_grpc.py +0 -0
  192. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/orm/v1/feature_view_pb2_grpc.pyi +0 -0
  193. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/orm/v1/pipeline_pb2.py +0 -0
  194. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/orm/v1/pipeline_pb2.pyi +0 -0
  195. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/orm/v1/pipeline_pb2_grpc.py +0 -0
  196. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/orm/v1/pipeline_pb2_grpc.pyi +0 -0
  197. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/orm/v1/space_pb2.py +0 -0
  198. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/orm/v1/space_pb2.pyi +0 -0
  199. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/orm/v1/space_pb2_grpc.py +0 -0
  200. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/orm/v1/space_pb2_grpc.pyi +0 -0
  201. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/orm/v1/table_pb2.py +0 -0
  202. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/orm/v1/table_pb2.pyi +0 -0
  203. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/orm/v1/table_pb2_grpc.py +0 -0
  204. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/orm/v1/table_pb2_grpc.pyi +0 -0
  205. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/status/__init__.py +0 -0
  206. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/status/v1/__init__.py +0 -0
  207. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/status/v1/event_pb2.py +0 -0
  208. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/status/v1/event_pb2.pyi +0 -0
  209. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/status/v1/event_pb2_grpc.py +0 -0
  210. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/status/v1/event_pb2_grpc.pyi +0 -0
  211. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/status/v1/service_pb2.py +0 -0
  212. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/status/v1/service_pb2.pyi +0 -0
  213. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/python/corvic_generated/status/v1/service_pb2_grpc.py +0 -0
  214. {corvic_engine-0.3.0rc77 → corvic_engine-0.3.0rc78}/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.77"
19
+ version = "0.3.0-rc.78"
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.77"
60
+ version = "0.3.0-rc.78"
61
61
  dependencies = [
62
62
  "version_check",
63
63
  ]
@@ -82,9 +82,9 @@ checksum = "d750af042f7ef4f724306de029d18836c26c1765a54a6a3f094cbd23a7267ffa"
82
82
 
83
83
  [[package]]
84
84
  name = "matrixmultiply"
85
- version = "0.3.9"
85
+ version = "0.3.10"
86
86
  source = "registry+https://github.com/rust-lang/crates.io-index"
87
- checksum = "9380b911e3e96d10c1f415da0876389aaf1b56759054eeb0de7df940c456ba1a"
87
+ checksum = "a06de3016e9fae57a36fd14dba131fccf49f74b40b7fbdb472f96e361ec71a08"
88
88
  dependencies = [
89
89
  "autocfg",
90
90
  "rawpointer",
@@ -293,9 +293,9 @@ checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d"
293
293
 
294
294
  [[package]]
295
295
  name = "syn"
296
- version = "2.0.100"
296
+ version = "2.0.101"
297
297
  source = "registry+https://github.com/rust-lang/crates.io-index"
298
- checksum = "b09a44accad81e1ba1cd74a32461ba89dee89095ba17b32f5d03683b1b1fc2a0"
298
+ checksum = "8ce2b7fc941b3a24138a0a7cf8e858bfc6a992e7978a068a5c760deb0ed43caf"
299
299
  dependencies = [
300
300
  "proc-macro2",
301
301
  "quote",
@@ -3,7 +3,7 @@ resolver = "2"
3
3
  members = ["python"]
4
4
 
5
5
  [workspace.package]
6
- version = "0.3.0-rc.77"
6
+ version = "0.3.0-rc.78"
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.0rc77
3
+ Version: 0.3.0rc78
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.77" # sync this with tool.poetry.version below
21
+ version = "0.3.0-rc.78" # 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.
@@ -72,7 +72,7 @@ packages = [
72
72
  ]
73
73
  description = ""
74
74
  authors = []
75
- version = "0.3.0-rc.77"
75
+ version = "0.3.0-rc.78"
76
76
 
77
77
  [tool.poetry.scripts]
78
78
  check = "corvic_check.cli:main"
@@ -404,6 +404,7 @@ root_packages = [
404
404
  "corvic.embed",
405
405
  "corvic.embedding_metric",
406
406
  "corvic.engine",
407
+ "corvic.eorm",
407
408
  "corvic.model",
408
409
  "corvic.op_graph",
409
410
  "corvic.orm",
@@ -1,52 +1,14 @@
1
- """Data model definitions; backed by an RDBMS."""
1
+ """Engine Object-Relational Mappings."""
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
5
  from datetime import datetime
6
+ from typing import TypeAlias
6
7
 
7
8
  import sqlalchemy as sa
8
9
  from sqlalchemy import orm as sa_orm
9
10
 
10
- from corvic.orm._proto_columns import ProtoMessageDecorator
11
- from corvic.orm.base import Base, OrgBase
12
- from corvic.orm.errors import (
13
- DeletedObjectError,
14
- InvalidORMIdentifierError,
15
- RequestedObjectsForNobodyError,
16
- )
17
- from corvic.orm.ids import (
18
- AgentID,
19
- AgentMessageID,
20
- BaseID,
21
- BaseIDFromInt,
22
- CompletionModelID,
23
- FeatureViewID,
24
- FeatureViewSourceID,
25
- IntIDDecorator,
26
- MessageEntryID,
27
- OrgID,
28
- PipelineID,
29
- ResourceID,
30
- RoomID,
31
- SourceID,
32
- SpaceID,
33
- SpaceParametersID,
34
- SpaceRunID,
35
- UserMessageID,
36
- )
37
- from corvic.orm.keys import (
38
- INT_PK_TYPE,
39
- ForeignKey,
40
- primary_key_foreign_column,
41
- primary_key_identity_column,
42
- primary_key_uuid_column,
43
- )
44
- from corvic.orm.mixins import (
45
- BelongsToOrgMixin,
46
- Session,
47
- SoftDeleteMixin,
48
- live_unique_constraint,
49
- )
11
+ from corvic import orm
50
12
  from corvic_generated.orm.v1 import (
51
13
  common_pb2,
52
14
  completion_model_pb2,
@@ -57,27 +19,87 @@ from corvic_generated.orm.v1 import (
57
19
  )
58
20
  from corvic_generated.status.v1 import event_pb2
59
21
 
60
- # NOTE: The only safe use of "sa_orm.relationship" uses the args:
61
- # `viewonly=True` and `init=False`. Writes quickly become
62
- # a complex mess when implementers of commit need to reason about
63
- # which sub-object should be updated.
64
- #
65
- # Rather, classes in corvic.model define their own commit protocols,
66
- # and if sub-orm-model updates are required they are explicit.
22
+ OrgID: TypeAlias = orm.OrgID
23
+
24
+
25
+ class RoomID(orm.BaseIDFromInt):
26
+ """A unique identifier for a room."""
27
+
28
+
29
+ class ResourceID(orm.BaseIDFromInt):
30
+ """A unique identifier for a resource."""
31
+
32
+
33
+ class SourceID(orm.BaseIDFromInt):
34
+ """A unique identifier for a source."""
35
+
36
+
37
+ class PipelineID(orm.BaseIDFromInt):
38
+ """A unique identifier for a pipeline."""
39
+
67
40
 
41
+ class FeatureViewID(orm.BaseIDFromInt):
42
+ """A unique identifier for a feature view."""
68
43
 
69
- class Org(SoftDeleteMixin, OrgBase, kw_only=True):
70
- """An organization it a top level grouping of resources."""
71
44
 
45
+ class FeatureViewSourceID(orm.BaseIDFromInt):
46
+ """A unique identifier for a source in a feature view."""
72
47
 
73
- class Room(BelongsToOrgMixin, SoftDeleteMixin, Base, kw_only=True):
48
+
49
+ class SpaceID(orm.BaseIDFromInt):
50
+ """A unique identifier for a space."""
51
+
52
+
53
+ class CompletionModelID(orm.BaseIDFromInt):
54
+ """A unique identifier for a completion model."""
55
+
56
+
57
+ orm.Base.registry.update_type_annotation_map(
58
+ {
59
+ # proto message column types
60
+ common_pb2.BlobUrlList: orm.ProtoMessageDecorator(common_pb2.BlobUrlList()),
61
+ feature_view_pb2.FeatureViewOutput: orm.ProtoMessageDecorator(
62
+ feature_view_pb2.FeatureViewOutput()
63
+ ),
64
+ common_pb2.AgentMessageMetadata: orm.ProtoMessageDecorator(
65
+ common_pb2.AgentMessageMetadata()
66
+ ),
67
+ space_pb2.SpaceParameters: orm.ProtoMessageDecorator(
68
+ space_pb2.SpaceParameters()
69
+ ),
70
+ table_pb2.TableComputeOp: orm.ProtoMessageDecorator(table_pb2.TableComputeOp()),
71
+ table_pb2.NamedTables: orm.ProtoMessageDecorator(table_pb2.NamedTables()),
72
+ common_pb2.RetrievedEntities: orm.ProtoMessageDecorator(
73
+ common_pb2.RetrievedEntities()
74
+ ),
75
+ pipeline_pb2.PipelineTransformation: orm.ProtoMessageDecorator(
76
+ pipeline_pb2.PipelineTransformation()
77
+ ),
78
+ event_pb2.Event: orm.ProtoMessageDecorator(event_pb2.Event()),
79
+ completion_model_pb2.CompletionModelParameters: orm.ProtoMessageDecorator(
80
+ completion_model_pb2.CompletionModelParameters()
81
+ ),
82
+ # ID types
83
+ RoomID: orm.IntIDDecorator(RoomID()),
84
+ ResourceID: orm.IntIDDecorator(ResourceID()),
85
+ SourceID: orm.IntIDDecorator(SourceID()),
86
+ PipelineID: orm.IntIDDecorator(PipelineID()),
87
+ FeatureViewID: orm.IntIDDecorator(FeatureViewID()),
88
+ FeatureViewSourceID: orm.IntIDDecorator(FeatureViewSourceID()),
89
+ SpaceID: orm.IntIDDecorator(SpaceID()),
90
+ CompletionModelID: orm.IntIDDecorator(CompletionModelID()),
91
+ }
92
+ )
93
+
94
+
95
+ class Room(orm.BelongsToOrgMixin, orm.SoftDeleteMixin, orm.Base, kw_only=True):
74
96
  """A Room is a logical collection of Documents."""
75
97
 
76
98
  __tablename__ = "room"
77
- __table_args__ = (live_unique_constraint("name", "org_id"),)
99
+ __table_args__ = (orm.live_unique_constraint("name", "org_id"),)
78
100
 
79
101
  name: sa_orm.Mapped[str] = sa_orm.mapped_column(sa.Text, default=None)
80
- id: sa_orm.Mapped[RoomID | None] = primary_key_identity_column()
102
+ id: sa_orm.Mapped[RoomID | None] = orm.primary_key_identity_column()
81
103
 
82
104
  @property
83
105
  def room_key(self):
@@ -86,27 +108,29 @@ class Room(BelongsToOrgMixin, SoftDeleteMixin, Base, kw_only=True):
86
108
 
87
109
  class BelongsToRoomMixin(sa_orm.MappedAsDataclass):
88
110
  room_id: sa_orm.Mapped[RoomID | None] = sa_orm.mapped_column(
89
- ForeignKey(Room).make(ondelete="CASCADE"),
111
+ orm.ForeignKey(Room).make(ondelete="CASCADE"),
90
112
  nullable=True,
91
113
  default=None,
92
114
  )
93
115
 
94
116
 
95
- class DefaultObjects(Base, kw_only=True):
117
+ class DefaultObjects(orm.Base, kw_only=True):
96
118
  """Holds the identifiers for default objects."""
97
119
 
98
120
  __tablename__ = "default_objects"
99
121
  default_org: sa_orm.Mapped[OrgID | None] = sa_orm.mapped_column(
100
- ForeignKey(Org).make(ondelete="CASCADE"),
122
+ orm.ForeignKey(orm.Org).make(ondelete="CASCADE"),
101
123
  nullable=False,
102
124
  )
103
125
  default_room: sa_orm.Mapped[RoomID | None] = sa_orm.mapped_column(
104
- ForeignKey(Room).make(ondelete="CASCADE"), nullable=True, default=None
126
+ orm.ForeignKey(Room).make(ondelete="CASCADE"), nullable=True, default=None
127
+ )
128
+ version: sa_orm.Mapped[int | None] = orm.primary_key_identity_column(
129
+ type_=orm.INT_PK_TYPE
105
130
  )
106
- version: sa_orm.Mapped[int | None] = primary_key_identity_column(type_=INT_PK_TYPE)
107
131
 
108
132
 
109
- class Resource(BelongsToOrgMixin, BelongsToRoomMixin, Base, kw_only=True):
133
+ class Resource(orm.BelongsToOrgMixin, BelongsToRoomMixin, orm.Base, kw_only=True):
110
134
  """A Resource is a reference to some durably stored file.
111
135
 
112
136
  E.g., a document could be a PDF file, an image, or a text transcript of a
@@ -122,7 +146,7 @@ class Resource(BelongsToOrgMixin, BelongsToRoomMixin, Base, kw_only=True):
122
146
  size: sa_orm.Mapped[int] = sa_orm.mapped_column(nullable=True)
123
147
  original_path: sa_orm.Mapped[str] = sa_orm.mapped_column(nullable=True)
124
148
  description: sa_orm.Mapped[str] = sa_orm.mapped_column(nullable=True)
125
- id: sa_orm.Mapped[ResourceID | None] = primary_key_identity_column()
149
+ id: sa_orm.Mapped[ResourceID | None] = orm.primary_key_identity_column()
126
150
  latest_event: sa_orm.Mapped[event_pb2.Event | None] = sa_orm.mapped_column(
127
151
  default=None, nullable=True
128
152
  )
@@ -134,7 +158,7 @@ class Resource(BelongsToOrgMixin, BelongsToRoomMixin, Base, kw_only=True):
134
158
  )
135
159
 
136
160
 
137
- class Source(BelongsToOrgMixin, BelongsToRoomMixin, Base, kw_only=True):
161
+ class Source(orm.BelongsToOrgMixin, BelongsToRoomMixin, orm.Base, kw_only=True):
138
162
  """A source."""
139
163
 
140
164
  __tablename__ = "source"
@@ -143,7 +167,7 @@ class Source(BelongsToOrgMixin, BelongsToRoomMixin, Base, kw_only=True):
143
167
  name: sa_orm.Mapped[str] = sa_orm.mapped_column(sa.Text)
144
168
  # protobuf describing the operations required to construct a table
145
169
  table_op_graph: sa_orm.Mapped[table_pb2.TableComputeOp] = sa_orm.mapped_column()
146
- id: sa_orm.Mapped[SourceID | None] = primary_key_identity_column()
170
+ id: sa_orm.Mapped[SourceID | None] = orm.primary_key_identity_column()
147
171
 
148
172
  source_files: sa_orm.Mapped[common_pb2.BlobUrlList | None] = sa_orm.mapped_column(
149
173
  default=None
@@ -157,7 +181,7 @@ class Source(BelongsToOrgMixin, BelongsToRoomMixin, Base, kw_only=True):
157
181
  return self.name
158
182
 
159
183
 
160
- class Pipeline(BelongsToOrgMixin, BelongsToRoomMixin, Base, kw_only=True):
184
+ class Pipeline(orm.BelongsToOrgMixin, BelongsToRoomMixin, orm.Base, kw_only=True):
161
185
  """A resource to source pipeline."""
162
186
 
163
187
  __tablename__ = "pipeline"
@@ -168,7 +192,7 @@ class Pipeline(BelongsToOrgMixin, BelongsToRoomMixin, Base, kw_only=True):
168
192
  )
169
193
  name: sa_orm.Mapped[str] = sa_orm.mapped_column()
170
194
  description: sa_orm.Mapped[str | None] = sa_orm.mapped_column()
171
- id: sa_orm.Mapped[PipelineID | None] = primary_key_identity_column()
195
+ id: sa_orm.Mapped[PipelineID | None] = orm.primary_key_identity_column()
172
196
 
173
197
  outputs: sa_orm.Mapped[list[PipelineOutput]] = sa_orm.relationship(
174
198
  viewonly=True,
@@ -177,7 +201,7 @@ class Pipeline(BelongsToOrgMixin, BelongsToRoomMixin, Base, kw_only=True):
177
201
  )
178
202
 
179
203
 
180
- class PipelineInput(BelongsToOrgMixin, BelongsToRoomMixin, Base, kw_only=True):
204
+ class PipelineInput(orm.BelongsToOrgMixin, BelongsToRoomMixin, orm.Base, kw_only=True):
181
205
  """Pipeline input resources."""
182
206
 
183
207
  __tablename__ = "pipeline_input"
@@ -187,15 +211,15 @@ class PipelineInput(BelongsToOrgMixin, BelongsToRoomMixin, Base, kw_only=True):
187
211
  name: sa_orm.Mapped[str]
188
212
  """A name the pipeline uses to refer to this input."""
189
213
 
190
- pipeline_id: sa_orm.Mapped[PipelineID] = primary_key_foreign_column(
191
- ForeignKey(Pipeline).make(ondelete="CASCADE")
214
+ pipeline_id: sa_orm.Mapped[PipelineID] = orm.primary_key_foreign_column(
215
+ orm.ForeignKey(Pipeline).make(ondelete="CASCADE")
192
216
  )
193
- resource_id: sa_orm.Mapped[ResourceID] = primary_key_foreign_column(
194
- ForeignKey(Resource).make(ondelete="CASCADE")
217
+ resource_id: sa_orm.Mapped[ResourceID] = orm.primary_key_foreign_column(
218
+ orm.ForeignKey(Resource).make(ondelete="CASCADE")
195
219
  )
196
220
 
197
221
 
198
- class PipelineOutput(BelongsToOrgMixin, BelongsToRoomMixin, Base, kw_only=True):
222
+ class PipelineOutput(orm.BelongsToOrgMixin, BelongsToRoomMixin, orm.Base, kw_only=True):
199
223
  """Objects for tracking pipeline output sources."""
200
224
 
201
225
  __tablename__ = "pipeline_output"
@@ -205,23 +229,27 @@ class PipelineOutput(BelongsToOrgMixin, BelongsToRoomMixin, Base, kw_only=True):
205
229
  name: sa_orm.Mapped[str]
206
230
  """A name the pipeline uses to refer to this output."""
207
231
 
208
- pipeline_id: sa_orm.Mapped[PipelineID] = primary_key_foreign_column(
209
- ForeignKey(Pipeline).make(ondelete="CASCADE")
232
+ pipeline_id: sa_orm.Mapped[PipelineID] = orm.primary_key_foreign_column(
233
+ orm.ForeignKey(Pipeline).make(ondelete="CASCADE")
210
234
  )
211
- source_id: sa_orm.Mapped[SourceID] = primary_key_foreign_column(
212
- ForeignKey(Source).make(ondelete="CASCADE")
235
+ source_id: sa_orm.Mapped[SourceID] = orm.primary_key_foreign_column(
236
+ orm.ForeignKey(Source).make(ondelete="CASCADE")
213
237
  )
214
238
 
215
239
 
216
240
  class FeatureView(
217
- SoftDeleteMixin, BelongsToOrgMixin, BelongsToRoomMixin, Base, kw_only=True
241
+ orm.SoftDeleteMixin,
242
+ orm.BelongsToOrgMixin,
243
+ BelongsToRoomMixin,
244
+ orm.Base,
245
+ kw_only=True,
218
246
  ):
219
247
  """A FeatureView is a logical collection of sources used by various spaces."""
220
248
 
221
249
  __tablename__ = "feature_view"
222
- __table_args__ = (live_unique_constraint("name", "room_id"),)
250
+ __table_args__ = (orm.live_unique_constraint("name", "room_id"),)
223
251
 
224
- id: sa_orm.Mapped[FeatureViewID | None] = primary_key_identity_column()
252
+ id: sa_orm.Mapped[FeatureViewID | None] = orm.primary_key_identity_column()
225
253
  name: sa_orm.Mapped[str] = sa_orm.mapped_column(sa.Text, default=None)
226
254
  description: sa_orm.Mapped[str] = sa_orm.mapped_column(sa.Text, default="")
227
255
 
@@ -240,22 +268,24 @@ class FeatureView(
240
268
  )
241
269
 
242
270
 
243
- class FeatureViewSource(BelongsToOrgMixin, BelongsToRoomMixin, Base, kw_only=True):
271
+ class FeatureViewSource(
272
+ orm.BelongsToOrgMixin, BelongsToRoomMixin, orm.Base, kw_only=True
273
+ ):
244
274
  """A source inside of a feature view."""
245
275
 
246
276
  __tablename__ = "feature_view_source"
247
277
 
248
278
  table_op_graph: sa_orm.Mapped[table_pb2.TableComputeOp] = sa_orm.mapped_column()
249
279
  feature_view_id: sa_orm.Mapped[FeatureViewID] = sa_orm.mapped_column(
250
- ForeignKey(FeatureView).make(ondelete="CASCADE"),
280
+ orm.ForeignKey(FeatureView).make(ondelete="CASCADE"),
251
281
  nullable=False,
252
282
  )
253
- id: sa_orm.Mapped[FeatureViewSourceID | None] = primary_key_identity_column()
283
+ id: sa_orm.Mapped[FeatureViewSourceID | None] = orm.primary_key_identity_column()
254
284
  drop_disconnected: sa_orm.Mapped[bool] = sa_orm.mapped_column(default=False)
255
285
  # this should be legal but pyright complains that it makes Source depend
256
286
  # on itself
257
287
  source_id: sa_orm.Mapped[SourceID] = sa_orm.mapped_column(
258
- ForeignKey(Source).make(ondelete="CASCADE"),
288
+ orm.ForeignKey(Source).make(ondelete="CASCADE"),
259
289
  nullable=False,
260
290
  default=None,
261
291
  )
@@ -264,18 +294,18 @@ class FeatureViewSource(BelongsToOrgMixin, BelongsToRoomMixin, Base, kw_only=Tru
264
294
  )
265
295
 
266
296
 
267
- class Space(BelongsToOrgMixin, BelongsToRoomMixin, Base, kw_only=True):
297
+ class Space(orm.BelongsToOrgMixin, BelongsToRoomMixin, orm.Base, kw_only=True):
268
298
  """A space is a named evaluation of space parameters."""
269
299
 
270
300
  __tablename__ = "space"
271
301
  __table_args__ = (sa.UniqueConstraint("name", "room_id"),)
272
302
 
273
- id: sa_orm.Mapped[SpaceID | None] = primary_key_identity_column()
303
+ id: sa_orm.Mapped[SpaceID | None] = orm.primary_key_identity_column()
274
304
  name: sa_orm.Mapped[str] = sa_orm.mapped_column(sa.Text, default=None)
275
305
  description: sa_orm.Mapped[str] = sa_orm.mapped_column(sa.Text, default="")
276
306
 
277
307
  feature_view_id: sa_orm.Mapped[FeatureViewID] = sa_orm.mapped_column(
278
- ForeignKey(FeatureView).make(ondelete="CASCADE"),
308
+ orm.ForeignKey(FeatureView).make(ondelete="CASCADE"),
279
309
  nullable=False,
280
310
  default=None,
281
311
  )
@@ -294,13 +324,15 @@ class Space(BelongsToOrgMixin, BelongsToRoomMixin, Base, kw_only=True):
294
324
  return self.name
295
325
 
296
326
 
297
- class CompletionModel(SoftDeleteMixin, BelongsToOrgMixin, Base, kw_only=True):
327
+ class CompletionModel(
328
+ orm.SoftDeleteMixin, orm.BelongsToOrgMixin, orm.Base, kw_only=True
329
+ ):
298
330
  """A customer's custom completion model definition."""
299
331
 
300
332
  __tablename__ = "completion_model"
301
- __table_args__ = (live_unique_constraint("name", "org_id"),)
333
+ __table_args__ = (orm.live_unique_constraint("name", "org_id"),)
302
334
 
303
- id: sa_orm.Mapped[CompletionModelID | None] = primary_key_identity_column()
335
+ id: sa_orm.Mapped[CompletionModelID | None] = orm.primary_key_identity_column()
304
336
  name: sa_orm.Mapped[str] = sa_orm.mapped_column(sa.Text, default=None)
305
337
  description: sa_orm.Mapped[str] = sa_orm.mapped_column(sa.Text, default=None)
306
338
  parameters: sa_orm.Mapped[completion_model_pb2.CompletionModelParameters | None] = (
@@ -324,43 +356,37 @@ class CompletionModel(SoftDeleteMixin, BelongsToOrgMixin, Base, kw_only=True):
324
356
 
325
357
 
326
358
  ID = (
327
- AgentID
328
- | AgentMessageID
359
+ orm.ID
329
360
  | CompletionModelID
330
361
  | FeatureViewID
331
362
  | FeatureViewSourceID
332
- | MessageEntryID
333
- | OrgID
334
363
  | PipelineID
335
364
  | ResourceID
336
365
  | RoomID
337
366
  | SourceID
338
367
  | SpaceID
339
- | SpaceParametersID
340
- | SpaceRunID
341
- | UserMessageID
342
368
  )
343
369
 
370
+ # These are part of the public interface, exposing them here so that
371
+ # users don't have to import orm anytime they import eorm
372
+ Base: TypeAlias = orm.Base
373
+ Org: TypeAlias = orm.Org
374
+ Session: TypeAlias = orm.Session
375
+
376
+ InvalidORMIdentifierError: TypeAlias = orm.InvalidORMIdentifierError
377
+ RequestedObjectsForNobodyError: TypeAlias = orm.RequestedObjectsForNobodyError
344
378
 
345
379
  __all__ = [
346
- "AgentID",
347
- "AgentMessageID",
348
380
  "Base",
349
- "BaseID",
350
- "BaseIDFromInt",
351
- "BelongsToOrgMixin",
352
381
  "CompletionModel",
353
382
  "CompletionModelID",
354
383
  "DefaultObjects",
355
- "DeletedObjectError",
356
384
  "FeatureView",
357
385
  "FeatureViewID",
358
386
  "FeatureViewSource",
359
387
  "FeatureViewSourceID",
360
388
  "ID",
361
389
  "InvalidORMIdentifierError",
362
- "MessageEntryID",
363
- "Org",
364
390
  "OrgID",
365
391
  "PipelineID",
366
392
  "PipelineInput",
@@ -375,12 +401,4 @@ __all__ = [
375
401
  "SourceID",
376
402
  "Space",
377
403
  "SpaceID",
378
- "SpaceParametersID",
379
- "SpaceRunID",
380
- "UserMessageID",
381
- "primary_key_foreign_column",
382
- "primary_key_identity_column",
383
- "primary_key_uuid_column",
384
- "ProtoMessageDecorator",
385
- "IntIDDecorator",
386
404
  ]
@@ -12,10 +12,10 @@ import sqlalchemy.orm as sa_orm
12
12
  import structlog
13
13
  from google.protobuf import timestamp_pb2
14
14
 
15
- from corvic import orm, system
15
+ from corvic import eorm, system
16
16
  from corvic.model._proto_orm_convert import (
17
- ID,
18
17
  UNCOMMITTED_ID_PREFIX,
18
+ IdType,
19
19
  OrmBelongsToOrgObj,
20
20
  OrmBelongsToRoomObj,
21
21
  OrmObj,
@@ -54,7 +54,7 @@ def _create_or_join_session(
54
54
  if existing_session:
55
55
  yield existing_session
56
56
  else:
57
- with orm.Session(client.sa_engine) as session:
57
+ with eorm.Session(client.sa_engine) as session:
58
58
  yield session
59
59
 
60
60
 
@@ -71,7 +71,7 @@ class HasProtoSelf(Generic[ProtoObj], abc.ABC):
71
71
  return non_empty_timestamp_to_datetime(self.proto_self.created_at)
72
72
 
73
73
 
74
- class UsesOrmID(Generic[ID, ProtoObj], HasProtoSelf[ProtoObj]):
74
+ class UsesOrmID(Generic[IdType, ProtoObj], HasProtoSelf[ProtoObj]):
75
75
  def __init__(self, client: system.Client, proto_self: ProtoObj):
76
76
  if not proto_self.id:
77
77
  proto_self.id = _generate_uncommitted_id_str()
@@ -79,14 +79,14 @@ class UsesOrmID(Generic[ID, ProtoObj], HasProtoSelf[ProtoObj]):
79
79
 
80
80
  @classmethod
81
81
  @abc.abstractmethod
82
- def id_class(cls) -> type[ID]: ...
82
+ def id_class(cls) -> type[IdType]: ...
83
83
 
84
84
  @functools.cached_property
85
- def id(self) -> ID:
85
+ def id(self) -> IdType:
86
86
  return self.id_class().from_str(self.proto_self.id)
87
87
 
88
88
 
89
- class BaseModel(Generic[ID, ProtoObj, OrmObj], UsesOrmID[ID, ProtoObj]):
89
+ class BaseModel(Generic[IdType, ProtoObj, OrmObj], UsesOrmID[IdType, ProtoObj]):
90
90
  """Base for orm wrappers providing a unified update mechanism."""
91
91
 
92
92
  @property
@@ -104,19 +104,19 @@ class BaseModel(Generic[ID, ProtoObj, OrmObj], UsesOrmID[ID, ProtoObj]):
104
104
  @classmethod
105
105
  @abc.abstractmethod
106
106
  def proto_to_orm(
107
- cls, proto_obj: ProtoObj, session: orm.Session
107
+ cls, proto_obj: ProtoObj, session: eorm.Session
108
108
  ) -> Ok[OrmObj] | InvalidArgumentError: ...
109
109
 
110
110
  @classmethod
111
111
  @abc.abstractmethod
112
112
  def delete_by_ids(
113
- cls, ids: Sequence[ID], session: orm.Session
113
+ cls, ids: Sequence[IdType], session: eorm.Session
114
114
  ) -> Ok[None] | InvalidArgumentError: ...
115
115
 
116
116
  @classmethod
117
117
  def load_proto_for(
118
118
  cls,
119
- obj_id: ID,
119
+ obj_id: IdType,
120
120
  client: system.Client,
121
121
  existing_session: sa_orm.Session | None = None,
122
122
  ) -> Ok[ProtoObj] | NotFoundError:
@@ -155,9 +155,9 @@ class BaseModel(Generic[ID, ProtoObj, OrmObj], UsesOrmID[ID, ProtoObj]):
155
155
  client: system.Client,
156
156
  *,
157
157
  limit: int | None = None,
158
- room_id: orm.RoomID | None = None,
158
+ room_id: eorm.RoomID | None = None,
159
159
  created_before: datetime.datetime | None = None,
160
- ids: Iterable[ID] | None = None,
160
+ ids: Iterable[IdType] | None = None,
161
161
  additional_query_transform: Callable[
162
162
  [sa.Select[tuple[OrmObj]]], sa.Select[tuple[OrmObj]]
163
163
  ]
@@ -173,7 +173,7 @@ class BaseModel(Generic[ID, ProtoObj, OrmObj], UsesOrmID[ID, ProtoObj]):
173
173
  return InvalidArgumentError("limit cannot be negative")
174
174
  query = query.limit(limit)
175
175
  if room_id:
176
- if session.get(orm.Room, room_id) is None:
176
+ if session.get(eorm.Room, room_id) is None:
177
177
  return NotFoundError("room not found", room_id=room_id)
178
178
  query = query.filter_by(room_id=room_id)
179
179
  if created_before:
@@ -198,7 +198,7 @@ class BaseModel(Generic[ID, ProtoObj, OrmObj], UsesOrmID[ID, ProtoObj]):
198
198
  This overwrites the entry at id in the database so that future readers will see
199
199
  this object. One of `id` or `derived_from_id` cannot be empty or None.
200
200
  """
201
- with orm.Session(self.client.sa_engine) as session:
201
+ with eorm.Session(self.client.sa_engine) as session:
202
202
  try:
203
203
  new_orm_self = self.proto_to_orm(
204
204
  self.proto_self, session
@@ -230,7 +230,7 @@ class BaseModel(Generic[ID, ProtoObj, OrmObj], UsesOrmID[ID, ProtoObj]):
230
230
  return InvalidArgumentError.from_(err)
231
231
 
232
232
  def add_to_session(
233
- self, session: orm.Session
233
+ self, session: eorm.Session
234
234
  ) -> Ok[None] | InvalidArgumentError | UnavailableError:
235
235
  """Like commit, but just calls session.flush to check for database errors.
236
236
 
@@ -247,7 +247,7 @@ class BaseModel(Generic[ID, ProtoObj, OrmObj], UsesOrmID[ID, ProtoObj]):
247
247
  return Ok(None)
248
248
 
249
249
  def delete(self) -> Ok[Self] | NotFoundError | InvalidArgumentError:
250
- with orm.Session(
250
+ with eorm.Session(
251
251
  self.client.sa_engine, expire_on_commit=False, autoflush=False
252
252
  ) as session:
253
253
  try:
@@ -272,22 +272,22 @@ class BaseModel(Generic[ID, ProtoObj, OrmObj], UsesOrmID[ID, ProtoObj]):
272
272
 
273
273
 
274
274
  class BelongsToOrgModel(
275
- Generic[ID, ProtoBelongsToOrgObj, OrmBelongsToOrgObj],
276
- BaseModel[ID, ProtoBelongsToOrgObj, OrmBelongsToOrgObj],
275
+ Generic[IdType, ProtoBelongsToOrgObj, OrmBelongsToOrgObj],
276
+ BaseModel[IdType, ProtoBelongsToOrgObj, OrmBelongsToOrgObj],
277
277
  ):
278
278
  """Base for orm wrappers with org mixin providing a unified update mechanism."""
279
279
 
280
280
  @property
281
- def org_id(self) -> orm.OrgID:
282
- return orm.OrgID().from_str(self.proto_self.org_id)
281
+ def org_id(self) -> eorm.OrgID:
282
+ return eorm.OrgID().from_str(self.proto_self.org_id)
283
283
 
284
284
 
285
285
  class BelongsToRoomModel(
286
- Generic[ID, ProtoBelongsToRoomObj, OrmBelongsToRoomObj],
287
- BelongsToOrgModel[ID, ProtoBelongsToRoomObj, OrmBelongsToRoomObj],
286
+ Generic[IdType, ProtoBelongsToRoomObj, OrmBelongsToRoomObj],
287
+ BelongsToOrgModel[IdType, ProtoBelongsToRoomObj, OrmBelongsToRoomObj],
288
288
  ):
289
289
  """Base for orm wrappers with room mixin providing a unified update mechanism."""
290
290
 
291
291
  @property
292
- def room_id(self) -> orm.RoomID:
293
- return orm.RoomID().from_str(self.proto_self.room_id)
292
+ def room_id(self) -> eorm.RoomID:
293
+ return eorm.RoomID().from_str(self.proto_self.room_id)