Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/viam/components/arm/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -118,4 +118,4 @@ async def get_kinematics(
return (response.format, response.kinematics_data)

async def get_geometries(self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None) -> List[Geometry]:
return await get_geometries(self, extra, timeout)
return await get_geometries(self.client, self.name, extra, timeout)
2 changes: 1 addition & 1 deletion src/viam/components/audio_input/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -60,4 +60,4 @@ async def do_command(self, command: Mapping[str, ValueTypes], *, timeout: Option
return struct_to_dict(response.result)

async def get_geometries(self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None) -> List[Geometry]:
return await get_geometries(self, extra, timeout)
return await get_geometries(self.client, self.name, extra, timeout)
2 changes: 1 addition & 1 deletion src/viam/components/base/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -132,4 +132,4 @@ async def do_command(
return struct_to_dict(response.result)

async def get_geometries(self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None) -> List[Geometry]:
return await get_geometries(self, extra, timeout)
return await get_geometries(self.client, self.name, extra, timeout)
2 changes: 1 addition & 1 deletion src/viam/components/board/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -177,4 +177,4 @@ async def set_power_mode(
await self.client.SetPowerMode(request, timeout=timeout)

async def get_geometries(self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None) -> List[Geometry]:
return await get_geometries(self, extra, timeout)
return await get_geometries(self.client, self.name, extra, timeout)
2 changes: 1 addition & 1 deletion src/viam/components/camera/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -74,4 +74,4 @@ async def do_command(self, command: Mapping[str, ValueTypes], *, timeout: Option
return struct_to_dict(response.result)

async def get_geometries(self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None) -> List[Geometry]:
return await get_geometries(self, extra, timeout)
return await get_geometries(self.client, self.name, extra, timeout)
2 changes: 1 addition & 1 deletion src/viam/components/encoder/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -73,4 +73,4 @@ async def do_command(self, command: Mapping[str, ValueTypes], *, timeout: Option
return struct_to_dict(response.result)

async def get_geometries(self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None) -> List[Geometry]:
return await get_geometries(self, extra, timeout)
return await get_geometries(self.client, self.name, extra, timeout)
2 changes: 1 addition & 1 deletion src/viam/components/gantry/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -84,4 +84,4 @@ async def do_command(self, command: Mapping[str, ValueTypes], *, timeout: Option
return struct_to_dict(response.result)

async def get_geometries(self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None) -> List[Geometry]:
return await get_geometries(self, extra, timeout)
return await get_geometries(self.client, self.name, extra, timeout)
2 changes: 1 addition & 1 deletion src/viam/components/generic/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ async def do_command(self, command: Mapping[str, Any], *, timeout: Optional[floa
return struct_to_dict(response.result)

async def get_geometries(self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None) -> List[Geometry]:
return await get_geometries(self, extra, timeout)
return await get_geometries(self.client, self.name, extra, timeout)


async def do_command(
Expand Down
2 changes: 1 addition & 1 deletion src/viam/components/gripper/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -59,4 +59,4 @@ async def do_command(self, command: Mapping[str, ValueTypes], *, timeout: Option
return struct_to_dict(response.result)

async def get_geometries(self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None) -> List[Geometry]:
return await get_geometries(self, extra, timeout)
return await get_geometries(self.client, self.name, extra, timeout)
2 changes: 1 addition & 1 deletion src/viam/components/input/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -163,4 +163,4 @@ async def do_command(self, command: Mapping[str, ValueTypes], *, timeout: Option
return struct_to_dict(response.result)

async def get_geometries(self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None) -> List[Geometry]:
return await get_geometries(self, extra, timeout)
return await get_geometries(self.client, self.name, extra, timeout)
2 changes: 1 addition & 1 deletion src/viam/components/motor/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -144,4 +144,4 @@ async def do_command(self, command: Mapping[str, ValueTypes], *, timeout: Option
return struct_to_dict(response.result)

async def get_geometries(self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None) -> List[Geometry]:
return await get_geometries(self, extra, timeout)
return await get_geometries(self.client, self.name, extra, timeout)
2 changes: 1 addition & 1 deletion src/viam/components/movement_sensor/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -104,4 +104,4 @@ async def do_command(self, command: Mapping[str, ValueTypes], *, timeout: Option
return struct_to_dict(response.result)

async def get_geometries(self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None) -> List[Geometry]:
return await get_geometries(self, extra, timeout)
return await get_geometries(self.client, self.name, extra, timeout)
2 changes: 1 addition & 1 deletion src/viam/components/pose_tracker/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,4 +40,4 @@ async def do_command(self, command: Mapping[str, ValueTypes], *, timeout: Option
return struct_to_dict(response.result)

async def get_geometries(self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None) -> List[Geometry]:
return await get_geometries(self, extra, timeout)
return await get_geometries(self.client, self.name, extra, timeout)
2 changes: 1 addition & 1 deletion src/viam/components/sensor/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,4 +34,4 @@ async def do_command(self, command: Mapping[str, ValueTypes], *, timeout: Option
return struct_to_dict(response.result)

async def get_geometries(self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None) -> List[Geometry]:
return await get_geometries(self, extra, timeout)
return await get_geometries(self.client, self.name, extra, timeout)
2 changes: 1 addition & 1 deletion src/viam/components/servo/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -59,4 +59,4 @@ async def do_command(self, command: Mapping[str, ValueTypes], *, timeout: Option
return struct_to_dict(response.result)

async def get_geometries(self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None) -> List[Geometry]:
return await get_geometries(self, extra, timeout)
return await get_geometries(self.client, self.name, extra, timeout)
8 changes: 0 additions & 8 deletions src/viam/module/types.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,3 @@ class Stoppable(Protocol):

def stop(self, *, extra: Optional[Mapping[str, Any]] = None, timeout: Optional[float] = None, **kwargs):
...


@runtime_checkable
class SupportsGetGeometries(Protocol):
"""The SupportsGetGeometries protocol defines the requirements for a resource to call get_geometries."""

def get_geometries(self, *, extra: Optional[Mapping[str, Any]] = None, timeout: Optional[float] = None, **kwargs):
...
12 changes: 10 additions & 2 deletions src/viam/resource/types.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import re
import sys
from typing import TYPE_CHECKING, Callable, ClassVar, Mapping, Sequence
from typing import TYPE_CHECKING, Callable, ClassVar, Mapping, Optional, Protocol, runtime_checkable, Sequence

if sys.version_info >= (3, 10):
from typing import TypeAlias
Expand All @@ -10,7 +10,7 @@
from typing_extensions import Self

from viam.proto.app.robot import ComponentConfig
from viam.proto.common import ResourceName
from viam.proto.common import ResourceName, GetGeometriesRequest, GetGeometriesResponse

if TYPE_CHECKING:
from .base import ResourceBase
Expand Down Expand Up @@ -198,3 +198,11 @@ def resource_name_from_string(string: str) -> ResourceName:

ResourceCreator: TypeAlias = Callable[[ComponentConfig, Mapping[ResourceName, "ResourceBase"]], "ResourceBase"]
Validator: TypeAlias = Callable[[ComponentConfig], Sequence[str]]


@runtime_checkable
class SupportsGetGeometries(Protocol):
"""The SupportsGetGeometries protocol defines the requirements for a resource to call get_geometries."""

async def GetGeometries(self, request: GetGeometriesRequest, timeout: Optional[float] = None) -> GetGeometriesResponse:
...
10 changes: 6 additions & 4 deletions src/viam/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
from viam.proto.common import Geometry, GeoPoint, GetGeometriesRequest, GetGeometriesResponse, Orientation, ResourceName, Vector3
from viam.resource.base import ResourceBase
from viam.resource.registry import Registry
from viam.resource.types import Subtype
from viam.resource.types import Subtype, SupportsGetGeometries

if sys.version_info >= (3, 9):
from collections.abc import Callable
Expand Down Expand Up @@ -159,11 +159,13 @@ def datetime_to_timestamp(dt: datetime) -> Timestamp:
return timestamp


async def get_geometries(client, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None) -> List[Geometry]:
async def get_geometries(
client: SupportsGetGeometries, name: str, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None
) -> List[Geometry]:
if extra is None:
extra = {}
request = GetGeometriesRequest(name=client.name, extra=dict_to_struct(extra))
response: GetGeometriesResponse = await client.client.GetGeometries(request, timeout=timeout)
request = GetGeometriesRequest(name=name, extra=dict_to_struct(extra))
response: GetGeometriesResponse = await client.GetGeometries(request, timeout=timeout)
return [geometry for geometry in response.geometries]


Expand Down