diff --git a/baseband_tasks/phases/phase.py b/baseband_tasks/phases/phase.py index 82586af7..61bfc61e 100644 --- a/baseband_tasks/phases/phase.py +++ b/baseband_tasks/phases/phase.py @@ -316,7 +316,8 @@ def __str__(self): # Override Angle, since one cannot override the formatter for # structured dtype in array2string. def formatter(x): - return x.view(self.dtype).to_string() + # [...] and view as self.__class__ are needed for scalar case. + return x[...].view(self.dtype, self.__class__).to_string() return np.array2string(self.view(f"V{self.dtype.itemsize}"), formatter={'all': formatter}) + self._unitstr diff --git a/baseband_tasks/tests/test_phase_class.py b/baseband_tasks/tests/test_phase_class.py index f9c587bc..19c0e092 100644 --- a/baseband_tasks/tests/test_phase_class.py +++ b/baseband_tasks/tests/test_phase_class.py @@ -679,13 +679,15 @@ def test_from_string_invalid(self, item): with pytest.raises(ValueError): Phase.from_string(item) + @pytest.mark.parametrize('item', (0, (), (0, 0))) @pytest.mark.parametrize('imag', (True, False)) - def test_str_works(self, imag): - str(self.phase * 1j if imag else self.phase) + def test_str_works(self, imag, item): + str((self.phase * 1j if imag else self.phase)[item]) + @pytest.mark.parametrize('item', (0, (), (0, 0))) @pytest.mark.parametrize('imag', (True, False)) - def test_repr_works(self, imag): - repr(self.phase * 1j if imag else self.phase) + def test_repr_works(self, imag, item): + repr((self.phase * 1j if imag else self.phase)[item]) @pytest.mark.parametrize('imag', (True, False)) def test_str(self, imag):