Skip to content

Commit efcac4d

Browse files
committed
Add docs and tests
1 parent b397f5b commit efcac4d

File tree

3 files changed

+63
-4
lines changed

3 files changed

+63
-4
lines changed

src/viam/media/video.py

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from array import array
22
from typing import Any, List, Optional, Tuple
33

4-
from typing_extensions import Self, ClassVar
4+
from typing_extensions import ClassVar, Self
55

66
from viam.errors import NotSupportedError
77
from viam.proto.component.camera import Format
@@ -24,6 +24,12 @@ def __setattr__(cls, name: str, value: Any):
2424

2525

2626
class CameraMimeType(str, metaclass=_FrozenClassAttributesMeta):
27+
"""
28+
The compatible mime-types for cameras and vision services.
29+
30+
You can use the `CameraMimeType.CUSTOM(...)` method to use an unlisted mime-type.
31+
"""
32+
2733
VIAM_RGBA: ClassVar[Self]
2834
VIAM_RAW_DEPTH: ClassVar[Self]
2935
JPEG: ClassVar[Self]
@@ -82,7 +88,8 @@ def from_proto(cls, format: Format.ValueType) -> Self:
8288
}
8389
return cls(mimetypes.get(format, cls.JPEG))
8490

85-
def to_proto(self) -> Format.ValueType:
91+
@property
92+
def proto(self) -> Format.ValueType:
8693
"""Returns the mimetype in a proto enum.
8794
8895
Returns:
@@ -96,6 +103,12 @@ def to_proto(self) -> Format.ValueType:
96103
}
97104
return formats.get(self, Format.FORMAT_UNSPECIFIED)
98105

106+
def to_proto(self) -> Format.ValueType:
107+
"""
108+
DEPRECATED: Use `CameraMimeType.proto`
109+
"""
110+
return self.proto
111+
99112

100113
CameraMimeType.VIAM_RGBA = CameraMimeType.from_string("image/vnd.viam.rgba")
101114
CameraMimeType.VIAM_RAW_DEPTH = CameraMimeType.from_string("image/vnd.viam.dep")

src/viam/services/worldstatestore/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1+
from viam.proto.service.worldstatestore import StreamTransformChangesResponse, TransformChangeType
12
from viam.resource.registry import Registry, ResourceRegistration
23

34
from .client import WorldStateStoreClient
45
from .service import WorldStateStoreService
56
from .worldstatestore import WorldStateStore
6-
from viam.proto.service.worldstatestore import StreamTransformChangesResponse, TransformChangeType
77

88
__all__ = [
99
"WorldStateStore",

tests/test_media.py

Lines changed: 47 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
from viam.errors import NotSupportedError
99
from viam.media.utils.pil import pil_to_viam_image, viam_to_pil_image
10-
from viam.media.video import CameraMimeType, NamedImage, ViamImage
10+
from viam.media.video import CameraMimeType, Format, NamedImage, ViamImage
1111

1212

1313
class TestViamImage:
@@ -113,6 +113,52 @@ def test_value(self):
113113
mime_type = CameraMimeType.CUSTOM("SOME CUSTOM MIME TYPE")
114114
assert mime_type.value == "SOME CUSTOM MIME TYPE"
115115

116+
def test_from_proto(self):
117+
format = Format.FORMAT_RAW_RGBA
118+
mime_type = CameraMimeType.from_proto(format)
119+
assert mime_type == CameraMimeType.VIAM_RGBA
120+
121+
format = Format.FORMAT_RAW_DEPTH
122+
mime_type = CameraMimeType.from_proto(format)
123+
assert mime_type == CameraMimeType.VIAM_RAW_DEPTH
124+
125+
format = Format.FORMAT_JPEG
126+
mime_type = CameraMimeType.from_proto(format)
127+
assert mime_type == CameraMimeType.JPEG
128+
129+
format = Format.FORMAT_PNG
130+
mime_type = CameraMimeType.from_proto(format)
131+
assert mime_type == CameraMimeType.PNG
132+
133+
format = Format.FORMAT_UNSPECIFIED
134+
mime_type = CameraMimeType.from_proto(format)
135+
assert mime_type == CameraMimeType.JPEG # unspecified defaults to jpeg
136+
137+
def test_to_proto(self):
138+
mime_type = CameraMimeType.VIAM_RGBA
139+
format = mime_type.proto
140+
assert format == Format.FORMAT_RAW_RGBA
141+
142+
mime_type = CameraMimeType.VIAM_RAW_DEPTH
143+
format = mime_type.proto
144+
assert format == Format.FORMAT_RAW_DEPTH
145+
146+
mime_type = CameraMimeType.JPEG
147+
format = mime_type.proto
148+
assert format == Format.FORMAT_JPEG
149+
150+
mime_type = CameraMimeType.PNG
151+
format = mime_type.proto
152+
assert format == Format.FORMAT_PNG
153+
154+
mime_type = CameraMimeType.PCD
155+
format = mime_type.proto
156+
assert format == Format.FORMAT_UNSPECIFIED
157+
158+
mime_type = CameraMimeType.CUSTOM("some custom mime")
159+
format = mime_type.proto
160+
assert format == Format.FORMAT_UNSPECIFIED
161+
116162

117163
def test_image_conversion():
118164
i = Image.new("RGBA", (100, 100), "#AABBCCDD")

0 commit comments

Comments
 (0)