'Scale all non-angular components, leaving angular ones unchanged.
Parameters
op : `~operator` callable
Operator to apply (e.g., `~operator.mul`, `~operator.neg`, etc.
*args
Any arguments required for the operator (typically, what is to
be multiplied with, divided by).'

def _scale_operation(self, op, *args):

    self._raise_if_has_differentials(op.__name__)
    results = []
    for (component, cls) in self.attr_classes.items():
        value = getattr(self, component)
        if issubclass(cls, Angle):
            results.append(value)
        else:
            results.append(op(value, *args))
    try:
        return self.__class__(*results)
    except Exception:
        return NotImplemented
