Skip to content

Commit

Permalink
Add types to ParameterService (#1262)
Browse files Browse the repository at this point in the history
* Add types to ParameterService

Signed-off-by: Michael Carlstrom <[email protected]>

* ajust function typing

Signed-off-by: Michael Carlstrom <[email protected]>

* Rerun CI

Signed-off-by: Michael Carlstrom <[email protected]>

* Rerun CI

Signed-off-by: Michael Carlstrom <[email protected]>

* Cleaner function signatures

Signed-off-by: Michael Carlstrom <[email protected]>

* Rerun CI

Signed-off-by: Michael Carlstrom <[email protected]>

* Rerun CI

Signed-off-by: Michael Carlstrom <[email protected]>

---------

Signed-off-by: Michael Carlstrom <[email protected]>
Co-authored-by: Shane Loretz <[email protected]>
  • Loading branch information
InvincibleRMC and sloretz authored Aug 5, 2024
1 parent 783d7d9 commit fcce519
Showing 1 changed file with 37 additions and 8 deletions.
45 changes: 37 additions & 8 deletions rclpy/rclpy/parameter_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@
# See the License for the specific language governing permissions and
# limitations under the License.


from typing import TYPE_CHECKING
import weakref

from rcl_interfaces.msg import ListParametersResult
Expand All @@ -23,10 +25,13 @@
from rclpy.qos import qos_profile_parameters
from rclpy.validate_topic_name import TOPIC_SEPARATOR_STRING

if TYPE_CHECKING:
from rclpy.node import Node


class ParameterService:

def __init__(self, node):
def __init__(self, node: 'Node'):
self._node_weak_ref = weakref.ref(node)
nodename = node.get_name()

Expand Down Expand Up @@ -65,7 +70,11 @@ def __init__(self, node):
qos_profile=qos_profile_parameters
)

def _describe_parameters_callback(self, request, response):
def _describe_parameters_callback(
self,
request: DescribeParameters.Request,
response: DescribeParameters.Response
) -> DescribeParameters.Response:
node = self._get_node()
for name in request.names:
try:
Expand All @@ -76,7 +85,11 @@ def _describe_parameters_callback(self, request, response):
response.descriptors.append(descriptor)
return response

def _get_parameters_callback(self, request, response):
def _get_parameters_callback(
self,
request: GetParameters.Request,
response: GetParameters.Response
) -> GetParameters.Response:
node = self._get_node()
for name in request.names:
try:
Expand All @@ -87,7 +100,11 @@ def _get_parameters_callback(self, request, response):
response.values.append(param.get_parameter_value())
return response

def _get_parameter_types_callback(self, request, response):
def _get_parameter_types_callback(
self,
request: GetParameterTypes.Request,
response: GetParameterTypes.Response
) -> GetParameterTypes.Response:
node = self._get_node()
for name in request.names:
try:
Expand All @@ -98,15 +115,23 @@ def _get_parameter_types_callback(self, request, response):
response.types.append(value)
return response

def _list_parameters_callback(self, request, response):
def _list_parameters_callback(
self,
request: ListParameters.Response,
response: ListParameters.Response
) -> ListParameters.Response:
node = self._get_node()
try:
response.result = node.list_parameters(request.prefixes, request.depth)
except (TypeError, ValueError):
response.result = ListParametersResult()
return response

def _set_parameters_callback(self, request, response):
def _set_parameters_callback(
self,
request: SetParameters.Request,
response: SetParameters.Response
) -> SetParameters.Response:
node = self._get_node()
for p in request.parameters:
param = Parameter.from_parameter_msg(p)
Expand All @@ -120,7 +145,11 @@ def _set_parameters_callback(self, request, response):
response.results.append(result)
return response

def _set_parameters_atomically_callback(self, request, response):
def _set_parameters_atomically_callback(
self,
request: SetParametersAtomically.Request,
response: SetParametersAtomically.Response
) -> SetParametersAtomically.Response:
node = self._get_node()
try:
response.result = node.set_parameters_atomically([
Expand All @@ -132,7 +161,7 @@ def _set_parameters_atomically_callback(self, request, response):
)
return response

def _get_node(self):
def _get_node(self) -> 'Node':
node = self._node_weak_ref()
if node is None:
raise ReferenceError('Expected valid node weak reference')
Expand Down

0 comments on commit fcce519

Please sign in to comment.