From 690dfa66671e5cfcb741d1aa4f9a238826de721d Mon Sep 17 00:00:00 2001
From: Florent Jaillet <florent.jaillet@lis-lab.fr>
Date: Wed, 13 Jun 2018 11:18:22 +0200
Subject: [PATCH] Replace the _complex_entries_only decorator by the use of a
 simple method

---
 .cache/v/cache/lastfailed |  1 +
 madarrays/mad_array.py    | 31 +++++++++++++------------------
 2 files changed, 14 insertions(+), 18 deletions(-)
 create mode 100644 .cache/v/cache/lastfailed

diff --git a/.cache/v/cache/lastfailed b/.cache/v/cache/lastfailed
new file mode 100644
index 0000000..9e26dfe
--- /dev/null
+++ b/.cache/v/cache/lastfailed
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/madarrays/mad_array.py b/madarrays/mad_array.py
index 78947f7..9bfc55d 100644
--- a/madarrays/mad_array.py
+++ b/madarrays/mad_array.py
@@ -91,16 +91,6 @@ def _merge_masks(ma1, ma2):
         return {'mask': np.logical_or(ma1.unknown_mask, ma2.unknown_mask)}
 
 
-def _complex_masking_only(f):
-    def decorated(self):
-        if not self._complex_masking:
-            errmsg = 'Method not defined if masking is not complex.'
-            raise ValueError(errmsg)
-        return f(self)
-    decorated.__doc__ = f.__doc__
-    return decorated
-
-
 UFUNC_NOT_RETURNING_MADARRAYS = ['bitwise_and', 'bitwise_or', 'bitwise_xor',
                                  'invert', 'left_shift', 'right_shift',
                                  'greater', 'greater_equal', 'less',
@@ -429,7 +419,6 @@ class MadArray(np.ndarray):
             return np.copy(self._mask)
 
     @property
-    @_complex_masking_only
     def any_unknown_mask(self):
         """Boolean mask for coefficients with unknown magnitude and/or phase.
 
@@ -446,10 +435,10 @@ class MadArray(np.ndarray):
         ValueError
             If `complex_masking` is False.
         """
+        self._raise_if_not_complex_masking()
         return ~(self._mask == 0)
 
     @property
-    @_complex_masking_only
     def all_unknown_mask(self):
         """Boolean mask for coefficients with both unknown magnitude and phase.
 
@@ -466,10 +455,10 @@ class MadArray(np.ndarray):
         ValueError
             If `complex_masking` is False.
         """
+        self._raise_if_not_complex_masking()
         return self._mask == 3
 
     @property
-    @_complex_masking_only
     def known_phase_mask(self):
         """Boolean mask for coefficients with known phase.
 
@@ -485,10 +474,10 @@ class MadArray(np.ndarray):
         ValueError
             If masking is not complex.
         """
+        self._raise_if_not_complex_masking()
         return ~np.logical_or(self._mask == 1, self._mask == 3)
 
     @property
-    @_complex_masking_only
     def unknown_phase_mask(self):
         """Boolean mask for coefficients with unknown phase.
 
@@ -504,10 +493,10 @@ class MadArray(np.ndarray):
         ValueError
             If masking is not complex.
         """
+        self._raise_if_not_complex_masking()
         return np.logical_or(self._mask == 1, self._mask == 3)
 
     @property
-    @_complex_masking_only
     def known_magnitude_mask(self):
         """Boolean mask for coefficients with known magnitude.
 
@@ -523,10 +512,10 @@ class MadArray(np.ndarray):
         ValueError
             If masking is not complex.
         """
+        self._raise_if_not_complex_masking()
         return ~np.logical_or(self._mask == 2, self._mask == 3)
 
     @property
-    @_complex_masking_only
     def unknown_magnitude_mask(self):
         """Boolean mask for coefficients with unknown magnitude
 
@@ -542,10 +531,10 @@ class MadArray(np.ndarray):
         ValueError
             If masking is not complex.
         """
+        self._raise_if_not_complex_masking()
         return np.logical_or(self._mask == 2, self._mask == 3)
 
     @property
-    @_complex_masking_only
     def unknown_phase_only_mask(self):
         """Boolean mask for coefficients with unknown phase and known magnitude.
 
@@ -562,10 +551,10 @@ class MadArray(np.ndarray):
         ValueError
             If masking is not complex.
         """
+        self._raise_if_not_complex_masking()
         return self._mask == 1
 
     @property
-    @_complex_masking_only
     def unknown_magnitude_only_mask(self):
         """Boolean mask for coefficients with unknown magnitude and known phase.
 
@@ -582,6 +571,7 @@ class MadArray(np.ndarray):
         ValueError
             If masking is not complex.
         """
+        self._raise_if_not_complex_masking()
         return self._mask == 2
 
     @property
@@ -620,6 +610,11 @@ class MadArray(np.ndarray):
         else:
             return np.average(self.unknown_mask)
 
+    def _raise_if_not_complex_masking(self):
+        if not self._complex_masking:
+            errmsg = 'Method not defined if masking is not complex.'
+            raise ValueError(errmsg)
+
     def is_masked(self):
         """Indicate if one or several elements are masked."""
         return np.any(self._mask)
-- 
GitLab