viam-sdk 0.48.0__py3-none-linux_armv7l.whl → 0.49.0__py3-none-linux_armv7l.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of viam-sdk might be problematic. Click here for more details.

@@ -7,6 +7,8 @@ from viam.proto.component.gripper import (
7
7
  GrabRequest,
8
8
  GrabResponse,
9
9
  GripperServiceStub,
10
+ IsHoldingSomethingRequest,
11
+ IsHoldingSomethingResponse,
10
12
  IsMovingRequest,
11
13
  IsMovingResponse,
12
14
  OpenRequest,
@@ -63,6 +65,14 @@ class GripperClient(Gripper, ReconfigurableResourceRPCClientBase):
63
65
  request = StopRequest(name=self.name, extra=dict_to_struct(extra))
64
66
  await self.client.Stop(request, timeout=timeout, metadata=md)
65
67
 
68
+ async def is_holding_something(
69
+ self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None, **kwargs
70
+ ) -> Gripper.HoldingStatus:
71
+ md = kwargs.get("metadata", self.Metadata()).proto
72
+ request = IsHoldingSomethingRequest(name=self.name, extra=dict_to_struct(extra))
73
+ response: IsHoldingSomethingResponse = await self.client.IsHoldingSomething(request, timeout=timeout, metadata=md)
74
+ return Gripper.HoldingStatus(response.is_holding_something, meta=struct_to_dict(response.meta))
75
+
66
76
  async def is_moving(self, *, timeout: Optional[float] = None, **kwargs) -> bool:
67
77
  md = kwargs.get("metadata", self.Metadata()).proto
68
78
  request = IsMovingRequest(name=self.name)
@@ -1,4 +1,5 @@
1
1
  import abc
2
+ from dataclasses import dataclass
2
3
  from typing import Any, Dict, Final, Optional, Tuple
3
4
 
4
5
  from viam.components.component_base import ComponentBase
@@ -26,6 +27,17 @@ class Gripper(ComponentBase):
26
27
  RESOURCE_NAMESPACE_RDK, RESOURCE_TYPE_COMPONENT, "gripper"
27
28
  )
28
29
 
30
+ @dataclass
31
+ class HoldingStatus:
32
+ """
33
+ HoldingStatus represents whether the gripper is currently holding onto an object. The
34
+ additional ``meta`` attribute contains other optional contextual information (i.e. confidence
35
+ interval, pressure, etc.)
36
+ """
37
+
38
+ is_holding_something: bool
39
+ meta: Optional[Dict[str, Any]] = None
40
+
29
41
  @abc.abstractmethod
30
42
  async def open(
31
43
  self,
@@ -73,6 +85,33 @@ class Gripper(ComponentBase):
73
85
  """
74
86
  ...
75
87
 
88
+ @abc.abstractmethod
89
+ async def is_holding_something(
90
+ self,
91
+ *,
92
+ extra: Optional[Dict[str, Any]] = None,
93
+ timeout: Optional[float] = None,
94
+ **kwargs,
95
+ ) -> HoldingStatus:
96
+ """
97
+ Get information about whether the gripper is currently holding onto an object.
98
+
99
+ ::
100
+
101
+ my_gripper = Gripper.from_robot(robot=machine, name="my_gripper")
102
+
103
+ # Grab with the gripper.
104
+ holding_status = await my_gripper.is_holding_something()
105
+ # get the boolean result
106
+ is_holding_something = holding_status.is_holding_something
107
+
108
+ Returns:
109
+ HoldingStatus: see documentation on `HoldingStatus` for more information
110
+
111
+ For more information, see `Gripper component <https://docs.viam.com/dev/reference/apis/components/gripper/#grab>`_.
112
+
113
+ """
114
+
76
115
  @abc.abstractmethod
77
116
  async def stop(
78
117
  self,
@@ -12,6 +12,8 @@ from viam.proto.component.gripper import (
12
12
  GrabRequest,
13
13
  GrabResponse,
14
14
  GripperServiceBase,
15
+ IsHoldingSomethingRequest,
16
+ IsHoldingSomethingResponse,
15
17
  IsMovingRequest,
16
18
  IsMovingResponse,
17
19
  OpenRequest,
@@ -69,6 +71,17 @@ class GripperRPCService(GripperServiceBase, ResourceRPCServiceBase[Gripper]):
69
71
  response = IsMovingResponse(is_moving=is_moving)
70
72
  await stream.send_message(response)
71
73
 
74
+ async def IsHoldingSomething(self, stream: Stream[IsHoldingSomethingRequest, IsHoldingSomethingResponse]) -> None:
75
+ request = await stream.recv_message()
76
+ assert request is not None
77
+ name = request.name
78
+ gripper = self.get_resource(name)
79
+ holding_status = await gripper.is_holding_something()
80
+ response = IsHoldingSomethingResponse(
81
+ is_holding_something=holding_status.is_holding_something, meta=dict_to_struct(holding_status.meta)
82
+ )
83
+ await stream.send_message(response)
84
+
72
85
  async def DoCommand(self, stream: Stream[DoCommandRequest, DoCommandResponse]) -> None:
73
86
  request = await stream.recv_message()
74
87
  assert request is not None
@@ -28,6 +28,10 @@ class GripperServiceBase(abc.ABC):
28
28
  async def IsMoving(self, stream: 'grpclib.server.Stream[component.gripper.v1.gripper_pb2.IsMovingRequest, component.gripper.v1.gripper_pb2.IsMovingResponse]') -> None:
29
29
  pass
30
30
 
31
+ @abc.abstractmethod
32
+ async def IsHoldingSomething(self, stream: 'grpclib.server.Stream[component.gripper.v1.gripper_pb2.IsHoldingSomethingRequest, component.gripper.v1.gripper_pb2.IsHoldingSomethingResponse]') -> None:
33
+ pass
34
+
31
35
  @abc.abstractmethod
32
36
  async def DoCommand(self, stream: 'grpclib.server.Stream[common.v1.common_pb2.DoCommandRequest, common.v1.common_pb2.DoCommandResponse]') -> None:
33
37
  pass
@@ -41,7 +45,7 @@ class GripperServiceBase(abc.ABC):
41
45
  pass
42
46
 
43
47
  def __mapping__(self) -> typing.Dict[str, grpclib.const.Handler]:
44
- return {'/viam.component.gripper.v1.GripperService/Open': grpclib.const.Handler(self.Open, grpclib.const.Cardinality.UNARY_UNARY, component.gripper.v1.gripper_pb2.OpenRequest, component.gripper.v1.gripper_pb2.OpenResponse), '/viam.component.gripper.v1.GripperService/Grab': grpclib.const.Handler(self.Grab, grpclib.const.Cardinality.UNARY_UNARY, component.gripper.v1.gripper_pb2.GrabRequest, component.gripper.v1.gripper_pb2.GrabResponse), '/viam.component.gripper.v1.GripperService/Stop': grpclib.const.Handler(self.Stop, grpclib.const.Cardinality.UNARY_UNARY, component.gripper.v1.gripper_pb2.StopRequest, component.gripper.v1.gripper_pb2.StopResponse), '/viam.component.gripper.v1.GripperService/IsMoving': grpclib.const.Handler(self.IsMoving, grpclib.const.Cardinality.UNARY_UNARY, component.gripper.v1.gripper_pb2.IsMovingRequest, component.gripper.v1.gripper_pb2.IsMovingResponse), '/viam.component.gripper.v1.GripperService/DoCommand': grpclib.const.Handler(self.DoCommand, grpclib.const.Cardinality.UNARY_UNARY, common.v1.common_pb2.DoCommandRequest, common.v1.common_pb2.DoCommandResponse), '/viam.component.gripper.v1.GripperService/GetGeometries': grpclib.const.Handler(self.GetGeometries, grpclib.const.Cardinality.UNARY_UNARY, common.v1.common_pb2.GetGeometriesRequest, common.v1.common_pb2.GetGeometriesResponse), '/viam.component.gripper.v1.GripperService/GetKinematics': grpclib.const.Handler(self.GetKinematics, grpclib.const.Cardinality.UNARY_UNARY, common.v1.common_pb2.GetKinematicsRequest, common.v1.common_pb2.GetKinematicsResponse)}
48
+ return {'/viam.component.gripper.v1.GripperService/Open': grpclib.const.Handler(self.Open, grpclib.const.Cardinality.UNARY_UNARY, component.gripper.v1.gripper_pb2.OpenRequest, component.gripper.v1.gripper_pb2.OpenResponse), '/viam.component.gripper.v1.GripperService/Grab': grpclib.const.Handler(self.Grab, grpclib.const.Cardinality.UNARY_UNARY, component.gripper.v1.gripper_pb2.GrabRequest, component.gripper.v1.gripper_pb2.GrabResponse), '/viam.component.gripper.v1.GripperService/Stop': grpclib.const.Handler(self.Stop, grpclib.const.Cardinality.UNARY_UNARY, component.gripper.v1.gripper_pb2.StopRequest, component.gripper.v1.gripper_pb2.StopResponse), '/viam.component.gripper.v1.GripperService/IsMoving': grpclib.const.Handler(self.IsMoving, grpclib.const.Cardinality.UNARY_UNARY, component.gripper.v1.gripper_pb2.IsMovingRequest, component.gripper.v1.gripper_pb2.IsMovingResponse), '/viam.component.gripper.v1.GripperService/IsHoldingSomething': grpclib.const.Handler(self.IsHoldingSomething, grpclib.const.Cardinality.UNARY_UNARY, component.gripper.v1.gripper_pb2.IsHoldingSomethingRequest, component.gripper.v1.gripper_pb2.IsHoldingSomethingResponse), '/viam.component.gripper.v1.GripperService/DoCommand': grpclib.const.Handler(self.DoCommand, grpclib.const.Cardinality.UNARY_UNARY, common.v1.common_pb2.DoCommandRequest, common.v1.common_pb2.DoCommandResponse), '/viam.component.gripper.v1.GripperService/GetGeometries': grpclib.const.Handler(self.GetGeometries, grpclib.const.Cardinality.UNARY_UNARY, common.v1.common_pb2.GetGeometriesRequest, common.v1.common_pb2.GetGeometriesResponse), '/viam.component.gripper.v1.GripperService/GetKinematics': grpclib.const.Handler(self.GetKinematics, grpclib.const.Cardinality.UNARY_UNARY, common.v1.common_pb2.GetKinematicsRequest, common.v1.common_pb2.GetKinematicsResponse)}
45
49
 
46
50
  class UnimplementedGripperServiceBase(GripperServiceBase):
47
51
 
@@ -57,6 +61,9 @@ class UnimplementedGripperServiceBase(GripperServiceBase):
57
61
  async def IsMoving(self, stream: 'grpclib.server.Stream[component.gripper.v1.gripper_pb2.IsMovingRequest, component.gripper.v1.gripper_pb2.IsMovingResponse]') -> None:
58
62
  raise grpclib.exceptions.GRPCError(grpclib.const.Status.UNIMPLEMENTED)
59
63
 
64
+ async def IsHoldingSomething(self, stream: 'grpclib.server.Stream[component.gripper.v1.gripper_pb2.IsHoldingSomethingRequest, component.gripper.v1.gripper_pb2.IsHoldingSomethingResponse]') -> None:
65
+ raise grpclib.exceptions.GRPCError(grpclib.const.Status.UNIMPLEMENTED)
66
+
60
67
  async def DoCommand(self, stream: 'grpclib.server.Stream[common.v1.common_pb2.DoCommandRequest, common.v1.common_pb2.DoCommandResponse]') -> None:
61
68
  raise grpclib.exceptions.GRPCError(grpclib.const.Status.UNIMPLEMENTED)
62
69
 
@@ -73,6 +80,7 @@ class GripperServiceStub:
73
80
  self.Grab = grpclib.client.UnaryUnaryMethod(channel, '/viam.component.gripper.v1.GripperService/Grab', component.gripper.v1.gripper_pb2.GrabRequest, component.gripper.v1.gripper_pb2.GrabResponse)
74
81
  self.Stop = grpclib.client.UnaryUnaryMethod(channel, '/viam.component.gripper.v1.GripperService/Stop', component.gripper.v1.gripper_pb2.StopRequest, component.gripper.v1.gripper_pb2.StopResponse)
75
82
  self.IsMoving = grpclib.client.UnaryUnaryMethod(channel, '/viam.component.gripper.v1.GripperService/IsMoving', component.gripper.v1.gripper_pb2.IsMovingRequest, component.gripper.v1.gripper_pb2.IsMovingResponse)
83
+ self.IsHoldingSomething = grpclib.client.UnaryUnaryMethod(channel, '/viam.component.gripper.v1.GripperService/IsHoldingSomething', component.gripper.v1.gripper_pb2.IsHoldingSomethingRequest, component.gripper.v1.gripper_pb2.IsHoldingSomethingResponse)
76
84
  self.DoCommand = grpclib.client.UnaryUnaryMethod(channel, '/viam.component.gripper.v1.GripperService/DoCommand', common.v1.common_pb2.DoCommandRequest, common.v1.common_pb2.DoCommandResponse)
77
85
  self.GetGeometries = grpclib.client.UnaryUnaryMethod(channel, '/viam.component.gripper.v1.GripperService/GetGeometries', common.v1.common_pb2.GetGeometriesRequest, common.v1.common_pb2.GetGeometriesResponse)
78
86
  self.GetKinematics = grpclib.client.UnaryUnaryMethod(channel, '/viam.component.gripper.v1.GripperService/GetKinematics', common.v1.common_pb2.GetKinematicsRequest, common.v1.common_pb2.GetKinematicsResponse)
@@ -9,7 +9,7 @@ _sym_db = _symbol_database.Default()
9
9
  from ....common.v1 import common_pb2 as common_dot_v1_dot_common__pb2
10
10
  from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2
11
11
  from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2
12
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n"component/gripper/v1/gripper.proto\x12\x19viam.component.gripper.v1\x1a\x16common/v1/common.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x1cgoogle/protobuf/struct.proto"P\n\x0bOpenRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\x0e\n\x0cOpenResponse"P\n\x0bGrabRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"W\n\x0cGrabResponse\x12\x18\n\x07success\x18\x01 \x01(\x08R\x07success\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"P\n\x0bStopRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\x0e\n\x0cStopResponse"%\n\x0fIsMovingRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name"/\n\x10IsMovingResponse\x12\x1b\n\tis_moving\x18\x01 \x01(\x08R\x08isMoving2\xa0\x08\n\x0eGripperService\x12\x8f\x01\n\x04Open\x12&.viam.component.gripper.v1.OpenRequest\x1a\'.viam.component.gripper.v1.OpenResponse"6\xa0\x92)\x01\x82\xd3\xe4\x93\x02,\x1a*/viam/api/v1/component/gripper/{name}/open\x12\x8f\x01\n\x04Grab\x12&.viam.component.gripper.v1.GrabRequest\x1a\'.viam.component.gripper.v1.GrabResponse"6\xa0\x92)\x01\x82\xd3\xe4\x93\x02,\x1a*/viam/api/v1/component/gripper/{name}/grab\x12\x8b\x01\n\x04Stop\x12&.viam.component.gripper.v1.StopRequest\x1a\'.viam.component.gripper.v1.StopResponse"2\x82\xd3\xe4\x93\x02,"*/viam/api/v1/component/gripper/{name}/stop\x12\x9c\x01\n\x08IsMoving\x12*.viam.component.gripper.v1.IsMovingRequest\x1a+.viam.component.gripper.v1.IsMovingResponse"7\x82\xd3\xe4\x93\x021\x12//viam/api/v1/component/gripper/{name}/is_moving\x12\x8a\x01\n\tDoCommand\x12 .viam.common.v1.DoCommandRequest\x1a!.viam.common.v1.DoCommandResponse"8\x82\xd3\xe4\x93\x022"0/viam/api/v1/component/gripper/{name}/do_command\x12\x96\x01\n\rGetGeometries\x12$.viam.common.v1.GetGeometriesRequest\x1a%.viam.common.v1.GetGeometriesResponse"8\x82\xd3\xe4\x93\x022\x120/viam/api/v1/component/gripper/{name}/geometries\x12\x96\x01\n\rGetKinematics\x12$.viam.common.v1.GetKinematicsRequest\x1a%.viam.common.v1.GetKinematicsResponse"8\x82\xd3\xe4\x93\x022\x120/viam/api/v1/component/gripper/{name}/kinematicsBE\n\x1dcom.viam.component.gripper.v1Z$go.viam.com/api/component/gripper/v1b\x06proto3')
12
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n"component/gripper/v1/gripper.proto\x12\x19viam.component.gripper.v1\x1a\x16common/v1/common.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x1cgoogle/protobuf/struct.proto"P\n\x0bOpenRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\x0e\n\x0cOpenResponse"P\n\x0bGrabRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"W\n\x0cGrabResponse\x12\x18\n\x07success\x18\x01 \x01(\x08R\x07success\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"P\n\x0bStopRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\x0e\n\x0cStopResponse"%\n\x0fIsMovingRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name"/\n\x10IsMovingResponse\x12\x1b\n\tis_moving\x18\x01 \x01(\x08R\x08isMoving"^\n\x19IsHoldingSomethingRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"{\n\x1aIsHoldingSomethingResponse\x120\n\x14is_holding_something\x18\x01 \x01(\x08R\x12isHoldingSomething\x12+\n\x04meta\x18c \x01(\x0b2\x17.google.protobuf.StructR\x04meta2\xe8\t\n\x0eGripperService\x12\x8f\x01\n\x04Open\x12&.viam.component.gripper.v1.OpenRequest\x1a\'.viam.component.gripper.v1.OpenResponse"6\xa0\x92)\x01\x82\xd3\xe4\x93\x02,\x1a*/viam/api/v1/component/gripper/{name}/open\x12\x8f\x01\n\x04Grab\x12&.viam.component.gripper.v1.GrabRequest\x1a\'.viam.component.gripper.v1.GrabResponse"6\xa0\x92)\x01\x82\xd3\xe4\x93\x02,\x1a*/viam/api/v1/component/gripper/{name}/grab\x12\x8b\x01\n\x04Stop\x12&.viam.component.gripper.v1.StopRequest\x1a\'.viam.component.gripper.v1.StopResponse"2\x82\xd3\xe4\x93\x02,"*/viam/api/v1/component/gripper/{name}/stop\x12\x9c\x01\n\x08IsMoving\x12*.viam.component.gripper.v1.IsMovingRequest\x1a+.viam.component.gripper.v1.IsMovingResponse"7\x82\xd3\xe4\x93\x021\x12//viam/api/v1/component/gripper/{name}/is_moving\x12\xc5\x01\n\x12IsHoldingSomething\x124.viam.component.gripper.v1.IsHoldingSomethingRequest\x1a5.viam.component.gripper.v1.IsHoldingSomethingResponse"B\x82\xd3\xe4\x93\x02<\x12:/viam/api/v1/component/gripper/{name}/is_holding_something\x12\x8a\x01\n\tDoCommand\x12 .viam.common.v1.DoCommandRequest\x1a!.viam.common.v1.DoCommandResponse"8\x82\xd3\xe4\x93\x022"0/viam/api/v1/component/gripper/{name}/do_command\x12\x96\x01\n\rGetGeometries\x12$.viam.common.v1.GetGeometriesRequest\x1a%.viam.common.v1.GetGeometriesResponse"8\x82\xd3\xe4\x93\x022\x120/viam/api/v1/component/gripper/{name}/geometries\x12\x96\x01\n\rGetKinematics\x12$.viam.common.v1.GetKinematicsRequest\x1a%.viam.common.v1.GetKinematicsResponse"8\x82\xd3\xe4\x93\x022\x120/viam/api/v1/component/gripper/{name}/kinematicsBE\n\x1dcom.viam.component.gripper.v1Z$go.viam.com/api/component/gripper/v1b\x06proto3')
13
13
  _globals = globals()
14
14
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
15
15
  _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'component.gripper.v1.gripper_pb2', _globals)
@@ -24,6 +24,8 @@ if not _descriptor._USE_C_DESCRIPTORS:
24
24
  _globals['_GRIPPERSERVICE'].methods_by_name['Stop']._serialized_options = b'\x82\xd3\xe4\x93\x02,"*/viam/api/v1/component/gripper/{name}/stop'
25
25
  _globals['_GRIPPERSERVICE'].methods_by_name['IsMoving']._loaded_options = None
26
26
  _globals['_GRIPPERSERVICE'].methods_by_name['IsMoving']._serialized_options = b'\x82\xd3\xe4\x93\x021\x12//viam/api/v1/component/gripper/{name}/is_moving'
27
+ _globals['_GRIPPERSERVICE'].methods_by_name['IsHoldingSomething']._loaded_options = None
28
+ _globals['_GRIPPERSERVICE'].methods_by_name['IsHoldingSomething']._serialized_options = b'\x82\xd3\xe4\x93\x02<\x12:/viam/api/v1/component/gripper/{name}/is_holding_something'
27
29
  _globals['_GRIPPERSERVICE'].methods_by_name['DoCommand']._loaded_options = None
28
30
  _globals['_GRIPPERSERVICE'].methods_by_name['DoCommand']._serialized_options = b'\x82\xd3\xe4\x93\x022"0/viam/api/v1/component/gripper/{name}/do_command'
29
31
  _globals['_GRIPPERSERVICE'].methods_by_name['GetGeometries']._loaded_options = None
@@ -46,5 +48,9 @@ if not _descriptor._USE_C_DESCRIPTORS:
46
48
  _globals['_ISMOVINGREQUEST']._serialized_end = 553
47
49
  _globals['_ISMOVINGRESPONSE']._serialized_start = 555
48
50
  _globals['_ISMOVINGRESPONSE']._serialized_end = 602
49
- _globals['_GRIPPERSERVICE']._serialized_start = 605
50
- _globals['_GRIPPERSERVICE']._serialized_end = 1661
51
+ _globals['_ISHOLDINGSOMETHINGREQUEST']._serialized_start = 604
52
+ _globals['_ISHOLDINGSOMETHINGREQUEST']._serialized_end = 698
53
+ _globals['_ISHOLDINGSOMETHINGRESPONSE']._serialized_start = 700
54
+ _globals['_ISHOLDINGSOMETHINGRESPONSE']._serialized_end = 823
55
+ _globals['_GRIPPERSERVICE']._serialized_start = 826
56
+ _globals['_GRIPPERSERVICE']._serialized_end = 2082
@@ -134,4 +134,46 @@ class IsMovingResponse(google.protobuf.message.Message):
134
134
 
135
135
  def ClearField(self, field_name: typing.Literal['is_moving', b'is_moving']) -> None:
136
136
  ...
137
- global___IsMovingResponse = IsMovingResponse
137
+ global___IsMovingResponse = IsMovingResponse
138
+
139
+ @typing.final
140
+ class IsHoldingSomethingRequest(google.protobuf.message.Message):
141
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
142
+ NAME_FIELD_NUMBER: builtins.int
143
+ EXTRA_FIELD_NUMBER: builtins.int
144
+ name: builtins.str
145
+
146
+ @property
147
+ def extra(self) -> google.protobuf.struct_pb2.Struct:
148
+ ...
149
+
150
+ def __init__(self, *, name: builtins.str=..., extra: google.protobuf.struct_pb2.Struct | None=...) -> None:
151
+ ...
152
+
153
+ def HasField(self, field_name: typing.Literal['extra', b'extra']) -> builtins.bool:
154
+ ...
155
+
156
+ def ClearField(self, field_name: typing.Literal['extra', b'extra', 'name', b'name']) -> None:
157
+ ...
158
+ global___IsHoldingSomethingRequest = IsHoldingSomethingRequest
159
+
160
+ @typing.final
161
+ class IsHoldingSomethingResponse(google.protobuf.message.Message):
162
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
163
+ IS_HOLDING_SOMETHING_FIELD_NUMBER: builtins.int
164
+ META_FIELD_NUMBER: builtins.int
165
+ is_holding_something: builtins.bool
166
+
167
+ @property
168
+ def meta(self) -> google.protobuf.struct_pb2.Struct:
169
+ ...
170
+
171
+ def __init__(self, *, is_holding_something: builtins.bool=..., meta: google.protobuf.struct_pb2.Struct | None=...) -> None:
172
+ ...
173
+
174
+ def HasField(self, field_name: typing.Literal['meta', b'meta']) -> builtins.bool:
175
+ ...
176
+
177
+ def ClearField(self, field_name: typing.Literal['is_holding_something', b'is_holding_something', 'meta', b'meta']) -> None:
178
+ ...
179
+ global___IsHoldingSomethingResponse = IsHoldingSomethingResponse
@@ -7,6 +7,8 @@ from ....gen.component.gripper.v1.gripper_grpc import GripperServiceBase, Grippe
7
7
  from ....gen.component.gripper.v1.gripper_pb2 import (
8
8
  GrabRequest,
9
9
  GrabResponse,
10
+ IsHoldingSomethingRequest,
11
+ IsHoldingSomethingResponse,
10
12
  IsMovingRequest,
11
13
  IsMovingResponse,
12
14
  OpenRequest,
@@ -21,6 +23,8 @@ __all__ = [
21
23
  "UnimplementedGripperServiceBase",
22
24
  "GrabRequest",
23
25
  "GrabResponse",
26
+ "IsHoldingSomethingRequest",
27
+ "IsHoldingSomethingResponse",
24
28
  "IsMovingRequest",
25
29
  "IsMovingResponse",
26
30
  "OpenRequest",
viam/version_metadata.py CHANGED
@@ -1,4 +1,4 @@
1
- __version__ = "0.48.0"
1
+ __version__ = "0.49.0"
2
2
 
3
- API_VERSION = "v0.1.445"
3
+ API_VERSION = "v0.1.446"
4
4
  SDK_VERSION = __version__
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: viam-sdk
3
- Version: 0.48.0
3
+ Version: 0.49.0
4
4
  Summary: Viam Robotics Python SDK
5
5
  Project-URL: Homepage, https://www.viam.com
6
6
  Project-URL: Documentation, https://python.viam.dev
@@ -7,7 +7,7 @@ viam/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
7
7
  viam/sessions_client.py,sha256=E4ThFCK1HCX_iAvEymvCdJ-H0ZlouzgoIwIE_nywfqc,9414
8
8
  viam/streams.py,sha256=VoM8FSMuGZmv4RPDHQy4FfHvJq36r4NY--gkQoaFkzs,1042
9
9
  viam/utils.py,sha256=xz7qb6bM-2qzOSQSsYHBheBidMbUAlQ2dHCi_GyPFnk,13579
10
- viam/version_metadata.py,sha256=E-SdDrln7bD1C1Aw--AVE_-C5pgYbbOiuDOXmG-ygw8,75
10
+ viam/version_metadata.py,sha256=IIGUctOueeNxqj4p3QIQ5A6h5szIyL-CKPEbvrrx9eY,75
11
11
  viam/app/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
12
12
  viam/app/_logs.py,sha256=hWxRELRJCux-fQIQtDwztD3odjkBm7Vo8HUQ7XGICek,806
13
13
  viam/app/app_client.py,sha256=kTQOyrN1LTRDEcozTcwAK-IDzmZ_YL0cCfbmVWKLiJ0,114986
@@ -55,9 +55,9 @@ viam/components/generic/client.py,sha256=jYhwyBZ4hvvIalOnGChvLxOw9YEu37ZjTez14x4
55
55
  viam/components/generic/generic.py,sha256=92Id7GX8QxbAa9J6yrndevFfM3BJKKmtdOxGDYhE77A,2699
56
56
  viam/components/generic/service.py,sha256=NijA6zYOTtnMLZ6YDZuRZ_xQp-0HY9F1UTVlpPlH_Rk,1877
57
57
  viam/components/gripper/__init__.py,sha256=qqbeoRXiPQQTlqc5LUobTF-IVX1yzHOVoW5LDelgJXw,403
58
- viam/components/gripper/client.py,sha256=Li1ZTfpl73t5unFHWL1hGve-6d-9pAso9_Djr0e6AOc,3698
59
- viam/components/gripper/gripper.py,sha256=eVjaPNr-2pOnK3qwKu-UqsH_lk3LdrBCrFuqrTRbdwM,4588
60
- viam/components/gripper/service.py,sha256=hUX1Sp7EfeZAN1RcO_YwAQrRFz6w93hz7mc7Odc1lSc,4226
58
+ viam/components/gripper/client.py,sha256=HElVLwjbXDItuwRUaISMUmTETfIc_7ZMkV_HQf_0qYE,4304
59
+ viam/components/gripper/gripper.py,sha256=RhiqAfOiY5ebIm3ua_SLXyuWitv4Ou1BUNBqpzPc9c4,5862
60
+ viam/components/gripper/service.py,sha256=PF2JH3CXqXIN0mTf3ppkv-L3u_6tgPvitdIkwhwCcHs,4834
61
61
  viam/components/input/__init__.py,sha256=Nmc8kK4Po-TmPcSfOv3b7F6UL4Pd9OAVvze-QqbP1Zc,465
62
62
  viam/components/input/client.py,sha256=w40kiBXAbC7NQoQFMyfOFjAf3AJEh8fxdT4DF_X9LlI,7818
63
63
  viam/components/input/input.py,sha256=MxDSvTVPjeHSOpEwPqs3VLEW7MQ-ej59qzOiy6Q8GQA,9635
@@ -203,9 +203,9 @@ viam/gen/component/generic/v1/generic_pb2.py,sha256=L_7YUjalJAxwLl7bicAxW9UMBNH6
203
203
  viam/gen/component/generic/v1/generic_pb2.pyi,sha256=iih0gRvfYDxbIoeZj-Ew4GT1KaOMHcF-w6q9d3J05QY,163
204
204
  viam/gen/component/gripper/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
205
205
  viam/gen/component/gripper/v1/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
206
- viam/gen/component/gripper/v1/gripper_grpc.py,sha256=4SYPmgFMO_cyb7H1XjzEjs2pgMTmIuLkhRPeJceYPiI,6635
207
- viam/gen/component/gripper/v1/gripper_pb2.py,sha256=SFl0_hrLStVMWLR-LoFUsA294uXP0Tr8m-qsLOTG0ME,6177
208
- viam/gen/component/gripper/v1/gripper_pb2.pyi,sha256=TYYzqLUd2YRP0Gung8ILQDZLKDKYyb6YG4RFj6ZzMtY,4218
206
+ viam/gen/component/gripper/v1/gripper_grpc.py,sha256=Q9qugIKuLvzCMeWTWdhndcpyLYPFtJnEbNLNjo0uKA4,7689
207
+ viam/gen/component/gripper/v1/gripper_pb2.py,sha256=126qBz04HwxsSnqut5K8hv5rqqc9EKfAcHTyoiBCe48,7269
208
+ viam/gen/component/gripper/v1/gripper_pb2.pyi,sha256=nQjbOVw3euLy27XbsA5WKNIF1h2kjrJ9T8_TPAFbTRE,5728
209
209
  viam/gen/component/inputcontroller/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
210
210
  viam/gen/component/inputcontroller/v1/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
211
211
  viam/gen/component/inputcontroller/v1/input_controller_grpc.py,sha256=zA_yjBXWVvhsjvKRn8spOwOYsyhI3STwolYQeLqzq_o,6890
@@ -388,7 +388,7 @@ viam/proto/component/camera/__init__.py,sha256=YMg4fyS0AOvwDqVHEPLpd9xadG82XgETr
388
388
  viam/proto/component/encoder/__init__.py,sha256=6Ifxo2RUBcNgKWVGIJYnBOvezR7pb5A2E-WtmdTS3IA,700
389
389
  viam/proto/component/gantry/__init__.py,sha256=kbpf52bGzyGyK-HHvUSBfHmIVYmyelpVL2jttlmA1Tc,908
390
390
  viam/proto/component/generic/__init__.py,sha256=EqeyemT7gt3GBz9TvQ_fkAi96HjmQR8e7TWKJ0t7Fi8,283
391
- viam/proto/component/gripper/__init__.py,sha256=JsTk_ScBDw4pIV7qnfu8Lex36PlgYjOhSgZB73izUaQ,652
391
+ viam/proto/component/gripper/__init__.py,sha256=wvGg7RkXFxxE01RaPN93LMien2b46P-SLAWgryItVJ8,782
392
392
  viam/proto/component/inputcontroller/__init__.py,sha256=HyLlpKfAfNl7cg0diLJ3w1oxwsEM2iaRBHi8l54RSqM,897
393
393
  viam/proto/component/motor/__init__.py,sha256=0oYz78kSG6CnVQxK2FBHD-qyscfpscy1FQKgHBa3iT8,1266
394
394
  viam/proto/component/movementsensor/__init__.py,sha256=dC_SGHJuEyhe5t39OlhJ7kPPDH2u5t4WRJjdn7DYSMk,1379
@@ -471,7 +471,7 @@ viam/services/vision/__init__.py,sha256=g4Dnz6BFgVZpvE6j6sNwxAc2baZfAKLA6XS2GaGg
471
471
  viam/services/vision/client.py,sha256=uaFMlYwKE5N_Qp803aFGfk8k6KCWPKNwUxyV_fnlBp4,7776
472
472
  viam/services/vision/service.py,sha256=NWV3yY1ZyEbl4rrp28CtX9n-uIgyxSQbbKJTeoIVjCg,6942
473
473
  viam/services/vision/vision.py,sha256=MrQsTarahwGMEmqWX4ODCJT5wLOGHXNEuEyTQgOvsg4,12527
474
- viam_sdk-0.48.0.dist-info/METADATA,sha256=x2McfiztqdtYHh136eh0AuQO2ejsT6b_hLMC5wEE4mw,10310
475
- viam_sdk-0.48.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
476
- viam_sdk-0.48.0.dist-info/licenses/LICENSE,sha256=yVuuHRzgI17MzTVgt3LsHvuX80innw--CmNPDCzO_iw,11358
477
- viam_sdk-0.48.0.dist-info/RECORD,,
474
+ viam_sdk-0.49.0.dist-info/METADATA,sha256=32lRp6ITCFTBnllD5gh3NjFU5pwQJe1TenHF2bx7OyM,10310
475
+ viam_sdk-0.49.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
476
+ viam_sdk-0.49.0.dist-info/licenses/LICENSE,sha256=yVuuHRzgI17MzTVgt3LsHvuX80innw--CmNPDCzO_iw,11358
477
+ viam_sdk-0.49.0.dist-info/RECORD,,