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 from __future__ import with_statement
36
37 import roslib.packages
38 import rosparam as _rosparam
39 import rospy
40
41 from rosh.impl.exceptions import ROSHException
42 from rosh.impl.namespace import Namespace, Concept
43
45 """
46 Load rosparam YAML file. This can either be called with
47 rosparam(filename) or rosparam(pkg, filename)
48
49 @return: loaded data
50 """
51
52 if len(args) == 2:
53 pkg, filename = args
54 d = roslib.packages.get_pkg_dir(pkg)
55 matches = roslib.packages.find_resource(pkg, filename)
56 if matches:
57 filename = matches[0]
58 else:
59 filename = None
60 elif len(args) == 1:
61 filename = args[0]
62 else:
63 raise ValueError(args)
64
65 if not filename:
66
67 return None
68
69
70 return _rosparam.load_file(filename)[0][0]
71
73 """
74 Load rosparam YAML string
75 @return: loaded data
76 """
77 return _rosparam.load_str(yaml_str, 'rosh')
78
80
82 """
83 ctor.
84 @param config: Namespace configuration instance.
85 @type config: L{NamespaceConfig}
86 """
87 super(ParamNS, self).__init__(name, config)
88 self._master = config.master
89
91 """
92 Override Namespace._list()
93 """
94 try:
95 val = self._master.getParam(self._ns)
96 return [self._ns+k for k in val.iterkeys()]
97 except:
98 return []
99
102
104 try:
105 return "Boxed[%s]"%str(self._master.getParam(self._ns))
106 except:
107 return '<uninitialized>'
108
110 if type(key) == int:
111 raise ROSHException("cannot index a ParamNS object. Are you missing a () call to get the value?")
112 return super(ParamNS, self).__getitem__(key)
113
115 if key.startswith('_'):
116 return object.__setitem__(key, value)
117 else:
118 key = roslib.names.ns_join(self._ns, key)
119 try:
120 self._master.setParam(key, value)
121 return True
122 except:
123 return False
124
126 if key.startswith('_'):
127 return object.__delitem__(key)
128 else:
129 key = roslib.names.ns_join(self._ns, key)
130 try:
131 self._master.deleteParam(key)
132 return True
133 except:
134 raise KeyError(key)
135
137 if key.startswith('_'):
138 return object.__setattr__(self, key, value)
139 else:
140 return self.__setitem__(key, value)
141
143 if key.startswith('_'):
144 return object.__delattr__(self, key)
145 else:
146 return self.__delitem__(key)
147
149 key = roslib.names.ns_join(self._ns, key)
150 return self._master.hasParam(key)
151
153 """
154 @return: current parameter value
155 """
156 try:
157 return self._master.getParam(self._ns)
158 except:
159 raise KeyError(self._ns)
160
162
165
167 if key.startswith('_'):
168 return object.__setattr__(self, key, value)
169 else:
170 return self._root.__setitem__(key, value)
171
174
176 if key.startswith('_'):
177 return object.__delitem__(key)
178 else:
179 return self._root.__delitem__(key)
180
182 if key.startswith('_'):
183 return object.__delattr__(self, key)
184 else:
185 return self._root.__delitem__(key)
186
189