You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 5d6e311
Browse filesBrowse the repository at this point in the historyBrowse files
feat: Add UUID and TIME_UUID as feature types (#5885) (#5951)
* feat: Add UUID and TIME_UUID as feature types (#5885)
Signed-off-by: soojin <[email protected]>
Co-Authored-By: Claude Opus 4.6 <[email protected]>
Signed-off-by: soojin <[email protected]>
* test: Add unit tests for UUID type support
Signed-off-by: soojin <[email protected]>
Co-Authored-By: Claude Opus 4.6 <[email protected]>
Signed-off-by: soojin <[email protected]>
* style: Fix ruff lint and formatting issues
Co-Authored-By: Claude Opus 4.6 <[email protected]>
Signed-off-by: soojin <[email protected]>
* feat: Add dedicated UUID/TIME_UUID proto fields to Value.proto
Add uuid_val, time_uuid_val, uuid_list_val, time_uuid_list_val as
dedicated oneof fields in the Value proto message, replacing the
previous reuse of string_val/string_list_val. This allows UUID types
to be identified from the proto field alone without requiring a
feature_types side-channel. Backward compatibility is maintained for
data previously stored as string_val.
Co-Authored-By: Claude Opus 4.6 <[email protected]>
Signed-off-by: soojin <[email protected]>
* fix: Address review feedback for UUID type support
Signed-off-by: soojin <[email protected]>
* fix: Address review feedback for UUID type support
Signed-off-by: soojin <[email protected]>
* fix: Address review feedback
Signed-off-by: soojin <[email protected]>
* fix: Convert uuid.UUID to string for Arrow and JSON serialization
Signed-off-by: soojin <[email protected]>
* feat: Add UUID_SET/TIME_UUID_SET support and update type system docs
Add Set(Uuid) and Set(TimeUuid) as feature types with full roundtrip
support, backward compatibility, and documentation for all UUID types.
Signed-off-by: soojin <[email protected]>
Co-Authored-By: Claude Opus 4.6 <[email protected]>
* fix: Preserve PDF_BYTES/IMAGE_BYTES enum values and add missing SET type mappings
Keep PDF_BYTES=30 and IMAGE_BYTES=31 at their upstream values instead of
renumbering them. Shift UUID types to 32-37 in both proto and Python enum.
Also add missing SET type entries in _convert_value_type_str_to_value_type(),
convert_array_column(), and _get_sample_values_by_type() for completeness.
Signed-off-by: soojin <[email protected]>
Co-Authored-By: Claude Opus 4.6 <[email protected]>
* fix: Correct misleading comment in Set.__init__
The comment claimed Sets do not support UUID/TimeUuid but the code
intentionally allows them. Updated to reflect actual behavior.
Signed-off-by: soojin <[email protected]>
Co-Authored-By: Claude Opus 4.6 <[email protected]>
* refactor: Extract UUID Arrow conversion into helper and move import to top
Signed-off-by: soojin <[email protected]>
Co-Authored-By: Claude Opus 4.6 <[email protected]>
* fix: Handle UUID types in _proto_value_to_transport_value for JSON serialization
Return UUID proto fields as plain strings instead of falling through to
feast_value_type_to_python_type which converts them to uuid.UUID objects
that are not JSON-serializable, causing TypeError during HTTP transport.
Signed-off-by: soojin <[email protected]>
* chore: Regenerate protobuf files with UUID type support
Co-Authored-By: Claude Opus 4.6 <[email protected]>
Signed-off-by: soojin <[email protected]>
* fix: Fix mypy type ignore comments for UUID collection conversions
Add [misc] error code to type: ignore comments in UUID list/set
proto conversion to satisfy mypy's stricter checking.
Signed-off-by: Soojin Lee <[email protected]>
Co-Authored-By: Claude Opus 4.6 <[email protected]>
Signed-off-by: soojin <[email protected]>
---------
Signed-off-by: soojin <[email protected]>
Signed-off-by: Soojin Lee <[email protected]>
Co-authored-by: Claude Opus 4.6 <[email protected]>
-**Domain-specific primitives**: `PdfBytes` (PDF binary data for RAG/document pipelines) and `ImageBytes` (image binary data for multimodal pipelines). These are semantic aliases over `Bytes` and must be explicitly declared in schema — no backend infers them.
12
-
-**Array types**: ordered lists of any primitive type, e.g. `Array(Int64)`, `Array(String)`.
12
+
-**UUID types**: `Uuid` and `TimeUuid` for universally unique identifiers. Stored as strings at the proto level but deserialized to `uuid.UUID` objects in Python.
13
+
-**Array types**: ordered lists of any primitive type, e.g. `Array(Int64)`, `Array(String)`, `Array(Uuid)`.
13
14
-**Set types**: unordered collections of unique values for any primitive type, e.g. `Set(String)`, `Set(Int64)`. Set types are not inferred by any backend and must be explicitly declared. They are best suited for online serving use cases.
14
15
-**Map types**: dictionary-like structures with string keys and values that can be any supported Feast type (including nested maps), e.g. `Map`, `Array(Map)`.
15
16
-**JSON type**: opaque JSON data stored as a string at the proto level but semantically distinct from `String` — backends use native JSON types (`jsonb`, `VARIANT`, etc.), e.g. `Json`, `Array(Json)`.
0 commit comments