| 319 | return self._reference_namespace |
| 320 | |
| 321 | def _assign(self, value): |
| 322 | if not isinstance(value, (base.Element, str)) and not ( |
| 323 | isinstance(value, np.ndarray) and value.dtype.kind == 'U' |
| 324 | ): |
| 325 | raise ValueError( |
| 326 | 'Expect a string or `mjcf.Element` value: got {}'.format(value)) |
| 327 | elif not value: |
| 328 | self.clear() |
| 329 | else: |
| 330 | if isinstance(value, base.Element): |
| 331 | value_namespace = ( |
| 332 | value.spec.namespace.split(constants.NAMESPACE_SEPARATOR)[0]) |
| 333 | if value_namespace != self.reference_namespace: |
| 334 | raise ValueError(_INVALID_REFERENCE_TYPE.format( |
| 335 | valid_type=self.reference_namespace, |
| 336 | actual_type=value_namespace)) |
| 337 | elif isinstance(value, np.ndarray): |
| 338 | value = value.item() |
| 339 | self._value = value |
| 340 | |
| 341 | def _before_clear(self): |
| 342 | if isinstance(self._value, base.Element): |