Skip to content

Commit f258342

Browse files
ParthSareenParth Sareen
authored andcommitted
Pydantic Fixes and Tests (#311)
* Added SubscriptableBaseModel to the Model classes and added Image codec test --------- Co-authored-by: Parth Sareen <[email protected]>
1 parent 0bbc246 commit f258342

File tree

2 files changed

+18
-2
lines changed

2 files changed

+18
-2
lines changed

ollama/_types.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@ class BaseGenerateRequest(BaseStreamableRequest):
9797
class Image(BaseModel):
9898
value: Union[FilePath, Base64Str, bytes]
9999

100+
# This overloads the `model_dump` method and returns values depending on the type of the `value` field
100101
@model_serializer
101102
def serialize_model(self):
102103
if isinstance(self.value, Path):
@@ -333,7 +334,7 @@ class ModelDetails(SubscriptableBaseModel):
333334

334335

335336
class ListResponse(SubscriptableBaseModel):
336-
class Model(BaseModel):
337+
class Model(SubscriptableBaseModel):
337338
modified_at: Optional[datetime] = None
338339
digest: Optional[str] = None
339340
size: Optional[ByteSize] = None
@@ -394,7 +395,7 @@ class ShowResponse(SubscriptableBaseModel):
394395

395396

396397
class ProcessResponse(SubscriptableBaseModel):
397-
class Model(BaseModel):
398+
class Model(SubscriptableBaseModel):
398399
model: Optional[str] = None
399400
name: Optional[str] = None
400401
digest: Optional[str] = None

tests/test_type_serialization.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
from base64 import b64decode, b64encode
2+
3+
from ollama._types import Image
4+
5+
6+
def test_image_serialization():
7+
# Test bytes serialization
8+
image_bytes = b'test image bytes'
9+
img = Image(value=image_bytes)
10+
assert img.model_dump() == b64encode(image_bytes).decode()
11+
12+
# Test base64 string serialization
13+
b64_str = 'dGVzdCBiYXNlNjQgc3RyaW5n'
14+
img = Image(value=b64_str)
15+
assert img.model_dump() == b64decode(b64_str).decode()

0 commit comments

Comments
 (0)