-
Notifications
You must be signed in to change notification settings - Fork 45
/
_srv.py.em
49 lines (41 loc) · 1.94 KB
/
_srv.py.em
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# generated from rosidl_generator_py/resource/_srv.py.em
# generated code does not contain a copyright notice
@#######################################################################
@# EmPy template for generating _<srv>.py files
@#
@# Context:
@# - module_name
@# - package_name
@# - spec (rosidl_parser.ServiceSpecification)
@# Parsed specification of the .srv file
@# - convert_camel_case_to_lower_case_underscore (function)
@#######################################################################
@
import logging
import traceback
class Metaclass(type):
"""Metaclass of message '@(spec.srv_name)'."""
_TYPE_SUPPORT = None
@@classmethod
def __import_type_support__(cls):
try:
from rosidl_generator_py import import_type_support
module = import_type_support('@(package_name)')
except ImportError:
logger = logging.getLogger('rosidl_generator_py.@(spec.srv_name)')
logger.debug(
'Failed to import needed modules for type support:\n' + traceback.format_exc())
else:
cls._TYPE_SUPPORT = module.type_support_srv_@(module_name)
@{
srv_name = '_' + convert_camel_case_to_lower_case_underscore(spec.srv_name)
for field_name in [srv_name + '__request', srv_name + '__response']:
print('%sfrom %s.srv import %s' % (' ' * 4 * 3, package_name, field_name))
print('%sif %s.Metaclass._TYPE_SUPPORT is None:' % (' ' * 4 * 3, field_name))
print('%s%s.Metaclass.__import_type_support__()' % (' ' * 4 * 4, field_name))
}@
class @(spec.srv_name)(metaclass=Metaclass):
from @(package_name).srv._@convert_camel_case_to_lower_case_underscore(spec.srv_name)__request import @(spec.srv_name)_Request as Request
from @(package_name).srv._@convert_camel_case_to_lower_case_underscore(spec.srv_name)__response import @(spec.srv_name)_Response as Response
def __init__(self):
raise NotImplementedError('Service classes can not be instanciated')