Skip to content

RSDK-6169 - gRPC debugging client api #747

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 6 commits into from
Oct 1, 2024
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
57 changes: 27 additions & 30 deletions src/viam/components/arm/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,12 +39,11 @@ async def get_end_position(
*,
extra: Optional[Dict[str, Any]] = None,
timeout: Optional[float] = None,
**__,
**kwargs,
) -> Pose:
if extra is None:
extra = {}
md = kwargs.get('metadata', self.Metadata()).proto
request = GetEndPositionRequest(name=self.name, extra=dict_to_struct(extra))
response: GetEndPositionResponse = await self.client.GetEndPosition(request, timeout=timeout)
response: GetEndPositionResponse = await self.client.GetEndPosition(request, timeout=timeout, metadata=md)
return response.pose

async def move_to_position(
Expand All @@ -53,24 +52,22 @@ async def move_to_position(
*,
extra: Optional[Dict[str, Any]] = None,
timeout: Optional[float] = None,
**__,
**kwargs,
):
if extra is None:
extra = {}
md = kwargs.get('metadata', self.Metadata()).proto
request = MoveToPositionRequest(name=self.name, to=pose, extra=dict_to_struct(extra))
await self.client.MoveToPosition(request, timeout=timeout)
await self.client.MoveToPosition(request, timeout=timeout, metadata=md)

async def get_joint_positions(
self,
*,
extra: Optional[Dict[str, Any]] = None,
timeout: Optional[float] = None,
**__,
**kwargs,
) -> JointPositions:
if extra is None:
extra = {}
md = kwargs.get('metadata', self.Metadata()).proto
request = GetJointPositionsRequest(name=self.name, extra=dict_to_struct(extra))
response: GetJointPositionsResponse = await self.client.GetJointPositions(request, timeout=timeout)
response: GetJointPositionsResponse = await self.client.GetJointPositions(request, timeout=timeout, metadata=md)
return response.positions

async def move_to_joint_positions(
Expand All @@ -79,49 +76,49 @@ async def move_to_joint_positions(
*,
extra: Optional[Dict[str, Any]] = None,
timeout: Optional[float] = None,
**__,
**kwargs,
):
if extra is None:
extra = {}
md = kwargs.get('metadata', self.Metadata()).proto
request = MoveToJointPositionsRequest(name=self.name, positions=positions, extra=dict_to_struct(extra))
await self.client.MoveToJointPositions(request, timeout=timeout)
await self.client.MoveToJointPositions(request, timeout=timeout, metadata=md)

async def stop(
self,
*,
extra: Optional[Dict[str, Any]] = None,
timeout: Optional[float] = None,
**__,
**kwargs,
):
if extra is None:
extra = {}
md = kwargs.get('metadata', self.Metadata()).proto
request = StopRequest(name=self.name, extra=dict_to_struct(extra))
await self.client.Stop(request, timeout=timeout)
await self.client.Stop(request, timeout=timeout, metadata=md)

async def is_moving(self, *, timeout: Optional[float] = None) -> bool:
async def is_moving(self, *, timeout: Optional[float] = None, **kwargs) -> bool:
md = kwargs.get('metadata', self.Metadata()).proto
request = IsMovingRequest(name=self.name)
response: IsMovingResponse = await self.client.IsMoving(request, timeout=timeout)
response: IsMovingResponse = await self.client.IsMoving(request, timeout=timeout, metadata=md)
return response.is_moving

async def do_command(
self,
command: Mapping[str, Any],
*,
timeout: Optional[float] = None,
**__,
**kwargs,
) -> Mapping[str, ValueTypes]:
md = kwargs.get('metadata', self.Metadata()).proto
request = DoCommandRequest(name=self.name, command=dict_to_struct(command))
response: DoCommandResponse = await self.client.DoCommand(request, timeout=timeout)
response: DoCommandResponse = await self.client.DoCommand(request, timeout=timeout, metadata=md)
return struct_to_dict(response.result)

async def get_kinematics(
self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None
self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None, **kwargs
) -> Tuple[KinematicsFileFormat.ValueType, bytes]:
if extra is None:
extra = {}
md = kwargs.get('metadata', self.Metadata()).proto
request = GetKinematicsRequest(name=self.name, extra=dict_to_struct(extra))
response: GetKinematicsResponse = await self.client.GetKinematics(request, timeout=timeout)
response: GetKinematicsResponse = await self.client.GetKinematics(request, timeout=timeout, metadata=md)
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.client, self.name, extra, timeout)
async def get_geometries(self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None, **kwargs) -> List[Geometry]:
md = kwargs.get('metadata', self.Metadata())
return await get_geometries(self.client, self.name, extra, timeout, md)
20 changes: 12 additions & 8 deletions src/viam/components/audio_input/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,10 @@ def __init__(self, name: str, channel: Channel):
self.client = AudioInputServiceStub(channel)
super().__init__(name)

async def stream(self, *, timeout: Optional[float] = None, **__) -> Stream[Audio]:
async def stream(self, *, timeout: Optional[float] = None, **kwargs) -> Stream[Audio]:
async def read() -> AsyncIterator[Audio]:
async with self.client.Chunks.open(timeout=timeout) as chunks_stream:
md = kwargs.get('metadata', self.Metadata()).proto
async with self.client.Chunks.open(timeout=timeout, metadata=md) as chunks_stream:
await chunks_stream.send_message(
ChunksRequest(name=self.name, sample_format=SampleFormat.SAMPLE_FORMAT_FLOAT32_INTERLEAVED), end=True
)
Expand All @@ -52,15 +53,18 @@ async def read() -> AsyncIterator[Audio]:

return StreamWithIterator(read())

async def get_properties(self, *, timeout: Optional[float] = None, **__) -> AudioInput.Properties:
async def get_properties(self, *, timeout: Optional[float] = None, **kwargs) -> AudioInput.Properties:
md = kwargs.get('metadata', self.Metadata()).proto
request = PropertiesRequest(name=self.name)
response: PropertiesResponse = await self.client.Properties(request, timeout=timeout)
response: PropertiesResponse = await self.client.Properties(request, timeout=timeout, metadata=md)
return AudioInput.Properties.from_proto(response)

async def do_command(self, command: Mapping[str, ValueTypes], *, timeout: Optional[float] = None, **__) -> Mapping[str, ValueTypes]:
async def do_command(self, command: Mapping[str, ValueTypes], *, timeout: Optional[float] = None, **kwargs) -> Mapping[str, ValueTypes]:
md = kwargs.get('metadata', self.Metadata()).proto
request = DoCommandRequest(name=self.name, command=dict_to_struct(command))
response: DoCommandResponse = await self.client.DoCommand(request, timeout=timeout)
response: DoCommandResponse = await self.client.DoCommand(request, timeout=timeout, metadata=md)
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.client, self.name, extra, timeout)
async def get_geometries(self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None, **kwargs) -> List[Geometry]:
md = kwargs.get('metadata', self.Metadata())
return await get_geometries(self.client, self.name, extra, timeout, md)
57 changes: 27 additions & 30 deletions src/viam/components/base/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,17 +38,16 @@ async def move_straight(
*,
extra: Optional[Dict[str, Any]] = None,
timeout: Optional[float] = None,
**__,
**kwargs,
):
if extra is None:
extra = {}
md = kwargs.get('metadata', self.Metadata()).proto
request = MoveStraightRequest(
name=self.name,
distance_mm=distance,
mm_per_sec=velocity,
extra=dict_to_struct(extra),
)
await self.client.MoveStraight(request, timeout=timeout)
await self.client.MoveStraight(request, timeout=timeout, metadata=md)

async def spin(
self,
Expand All @@ -57,17 +56,16 @@ async def spin(
*,
extra: Optional[Dict[str, Any]] = None,
timeout: Optional[float] = None,
**__,
**kwargs,
):
if extra is None:
extra = {}
md = kwargs.get('metadata', self.Metadata()).proto
request = SpinRequest(
name=self.name,
angle_deg=angle,
degs_per_sec=velocity,
extra=dict_to_struct(extra),
)
await self.client.Spin(request, timeout=timeout)
await self.client.Spin(request, timeout=timeout, metadata=md)

async def set_power(
self,
Expand All @@ -76,17 +74,16 @@ async def set_power(
*,
extra: Optional[Dict[str, Any]] = None,
timeout: Optional[float] = None,
**__,
**kwargs,
):
if extra is None:
extra = {}
md = kwargs.get('metadata', self.Metadata()).proto
request = SetPowerRequest(
name=self.name,
linear=linear,
angular=angular,
extra=dict_to_struct(extra),
)
await self.client.SetPower(request, timeout=timeout)
await self.client.SetPower(request, timeout=timeout, metadata=md)

async def set_velocity(
self,
Expand All @@ -95,46 +92,44 @@ async def set_velocity(
*,
extra: Optional[Dict[str, Any]] = None,
timeout: Optional[float] = None,
**__,
**kwargs,
):
if extra is None:
extra = {}
md = kwargs.get('metadata', self.Metadata()).proto
request = SetVelocityRequest(name=self.name, linear=linear, angular=angular, extra=dict_to_struct(extra))
await self.client.SetVelocity(request, timeout=timeout)
await self.client.SetVelocity(request, timeout=timeout, metadata=md)

async def stop(
self,
*,
extra: Optional[Dict[str, Any]] = None,
timeout: Optional[float] = None,
**__,
**kwargs,
):
if extra is None:
extra = {}
md = kwargs.get('metadata', self.Metadata()).proto
request = StopRequest(name=self.name, extra=dict_to_struct(extra))
await self.client.Stop(request, timeout=timeout)
await self.client.Stop(request, timeout=timeout, metadata=md)

async def is_moving(
self,
*,
timeout: Optional[float] = None,
**__,
**kwargs,
) -> bool:
md = kwargs.get('metadata', self.Metadata()).proto
request = IsMovingRequest(name=self.name)
response: IsMovingResponse = await self.client.IsMoving(request, timeout=timeout)
response: IsMovingResponse = await self.client.IsMoving(request, timeout=timeout, metadata=md)
return response.is_moving

async def get_properties(
self,
*,
extra: Optional[Dict[str, Any]] = None,
timeout: Optional[float] = None,
**__,
**kwargs,
) -> Base.Properties:
if extra is None:
extra = {}
md = kwargs.get('metadata', self.Metadata()).proto
request = GetPropertiesRequest(name=self.name, extra=dict_to_struct(extra))
response: GetPropertiesResponse = await self.client.GetProperties(request, timeout=timeout)
response: GetPropertiesResponse = await self.client.GetProperties(request, timeout=timeout, metadata=md)
return Base.Properties(
width_meters=response.width_meters,
turning_radius_meters=response.turning_radius_meters,
Expand All @@ -146,11 +141,13 @@ async def do_command(
command: Mapping[str, ValueTypes],
*,
timeout: Optional[float] = None,
**__,
**kwargs,
) -> Mapping[str, ValueTypes]:
md = kwargs.get('metadata', self.Metadata()).proto
request = DoCommandRequest(name=self.name, command=dict_to_struct(command))
response: DoCommandResponse = await self.client.DoCommand(request, timeout=timeout)
response: DoCommandResponse = await self.client.DoCommand(request, timeout=timeout, metadata=md)
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.client, self.name, extra, timeout)
async def get_geometries(self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None, **kwargs) -> List[Geometry]:
md = kwargs.get('metadata', self.Metadata())
return await get_geometries(self.client, self.name, extra, timeout, md)
Loading
Loading