Skip to content

Commit 66e617d

Browse files
committed
restore common parameter formatting for all subclasses
1 parent 7782ee9 commit 66e617d

File tree

2 files changed

+51
-50
lines changed

2 files changed

+51
-50
lines changed

roboticstoolbox/robot/DHLink.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -380,11 +380,11 @@ def __repr__(self):
380380
name = self.__class__.__name__
381381
args = []
382382
if self.isrevolute:
383-
self._format(args, "d")
383+
self._format_param(args, "d")
384384
else:
385-
self._format(args, "theta", "θ")
386-
self._format(args, "a")
387-
self._format(args, "alpha", "⍺")
385+
self._format_param(args, "theta", "θ")
386+
self._format_param(args, "a")
387+
self._format_param(args, "alpha", "⍺")
388388
args.extend(super()._params())
389389
return name + "(" + ", ".join(args) + ")"
390390

roboticstoolbox/robot/Link.py

+47-46
Original file line numberDiff line numberDiff line change
@@ -1367,61 +1367,62 @@ def format(l, fmt, val): # noqa
13671367

13681368
return dyn
13691369

1370+
def _format_param(
1371+
self, l, name, symbol=None, ignorevalue=None, indices=None
1372+
): # noqa # pragma nocover
1373+
# if value == ignorevalue then don't display it
1374+
1375+
v = getattr(self, name)
1376+
s = None
1377+
if v is None:
1378+
return
1379+
if isinstance(v, str):
1380+
s = f'{name} = "{v}"'
1381+
elif isscalar(v) and v != ignorevalue:
1382+
if symbol is not None:
1383+
s = f"{symbol}={v:.3g}"
1384+
else: # pragma: nocover
1385+
try:
1386+
s = f"{name}={v:.3g}"
1387+
except TypeError:
1388+
s = f"{name}={v}"
1389+
elif isinstance(v, np.ndarray):
1390+
# if np.linalg.norm(v, ord=np.inf) > 0:
1391+
# if indices is not None:
1392+
# flat = v.flatten()
1393+
# v = np.r_[[flat[k] for k in indices]]
1394+
# s = f"{name}=[" + ", ".join([f"{x:.3g}" for x in v]) + "]"
1395+
if indices is not None:
1396+
v = v.ravel()[indices]
1397+
s = f"{name}=" + np.array2string(
1398+
v,
1399+
separator=", ",
1400+
suppress_small=True,
1401+
formatter={"float": lambda x: f"{x:.3g}"},
1402+
)
1403+
if s is not None:
1404+
l.append(s)
1405+
13701406
def _params(self, name: bool = True): # pragma nocover
1371-
def format_param(
1372-
self, l, name, symbol=None, ignorevalue=None, indices=None
1373-
): # noqa # pragma nocover
1374-
# if value == ignorevalue then don't display it
1375-
1376-
v = getattr(self, name)
1377-
s = None
1378-
if v is None:
1379-
return
1380-
if isinstance(v, str):
1381-
s = f'{name} = "{v}"'
1382-
elif isscalar(v) and v != ignorevalue:
1383-
if symbol is not None:
1384-
s = f"{symbol}={v:.3g}"
1385-
else: # pragma: nocover
1386-
try:
1387-
s = f"{name}={v:.3g}"
1388-
except TypeError:
1389-
s = f"{name}={v}"
1390-
elif isinstance(v, np.ndarray):
1391-
# if np.linalg.norm(v, ord=np.inf) > 0:
1392-
# if indices is not None:
1393-
# flat = v.flatten()
1394-
# v = np.r_[[flat[k] for k in indices]]
1395-
# s = f"{name}=[" + ", ".join([f"{x:.3g}" for x in v]) + "]"
1396-
if indices is not None:
1397-
v = v.ravel()[indices]
1398-
s = f"{name}=" + np.array2string(
1399-
v,
1400-
separator=", ",
1401-
suppress_small=True,
1402-
formatter={"float": lambda x: f"{x:.3g}"},
1403-
)
1404-
if s is not None:
1405-
l.append(s)
14061407

14071408
l = [] # noqa
14081409
if name:
1409-
format_param(self, l, "name")
1410+
self._format_param(l, "name")
14101411
if self.parent_name is not None:
14111412
l.append('parent="' + self.parent_name + '"')
14121413
elif isinstance(self.parent, BaseLink):
14131414
l.append('parent="' + self.parent.name + '"')
1414-
format_param(self, l, "parent")
1415-
format_param(self, l, "isflip", ignorevalue=False)
1416-
format_param(self, l, "qlim")
1415+
self._format_param(l, "parent")
1416+
self._format_param(l, "isflip", ignorevalue=False)
1417+
self._format_param(l, "qlim")
14171418
if self._hasdynamics:
1418-
format_param(self, l, "m")
1419-
format_param(self, l, "r")
1420-
format_param(self, l, "I", indices=[0, 4, 8, 1, 2, 5])
1421-
format_param(self, l, "Jm")
1422-
format_param(self, l, "B")
1423-
format_param(self, l, "Tc")
1424-
format_param(self, l, "G")
1419+
self._format_param(l, "m")
1420+
self._format_param(l, "r")
1421+
self._format_param(l, "I", indices=[0, 4, 8, 1, 2, 5])
1422+
self._format_param(l, "Jm")
1423+
self._format_param(l, "B")
1424+
self._format_param(l, "Tc")
1425+
self._format_param(l, "G")
14251426

14261427
return l
14271428

0 commit comments

Comments
 (0)