@@ -91,11 +91,11 @@ def erase(
9191 result = None
9292
9393 # Handle empty or None data
94- if not data :
95- result = DATA_MASKING_STRING if isinstance ( data , ( str , bytes )) else data
94+ if data is None or ( isinstance ( data , ( str , list , dict )) and not data ) :
95+ return data
9696
9797 # Handle string data
98- elif isinstance (data , str ):
98+ if isinstance (data , str ):
9999 if regex_pattern and mask_format :
100100 result = self ._regex_mask (data , regex_pattern , mask_format )
101101 elif custom_mask :
@@ -107,15 +107,24 @@ def erase(
107107
108108 # Handle dictionary data
109109 elif isinstance (data , dict ):
110- result = (
111- self ._apply_masking_rules (data , masking_rules )
112- if masking_rules
113- else {k : DATA_MASKING_STRING for k in data }
114- )
110+ if masking_rules :
111+ result = self ._apply_masking_rules (data , masking_rules )
112+ else :
113+ result = {}
114+ for k , v in data .items ():
115+ result [str (k )] = self .erase (
116+ str (v ),
117+ dynamic_mask = dynamic_mask ,
118+ custom_mask = custom_mask ,
119+ regex_pattern = regex_pattern ,
120+ mask_format = mask_format ,
121+ masking_rules = masking_rules ,
122+ ** kwargs ,
123+ )
115124
116125 # Handle iterable data (list, tuple, set)
117126 elif isinstance (data , (list , tuple , set )):
118- masked_data = (
127+ masked_data = [
119128 self .erase (
120129 item ,
121130 dynamic_mask = dynamic_mask ,
@@ -126,16 +135,16 @@ def erase(
126135 ** kwargs ,
127136 )
128137 for item in data
129- )
138+ ]
130139 result = type (data )(masked_data )
131140
132- # Default case
141+ # Handle other types (int, float, bool, etc.)
133142 else :
134- result = DATA_MASKING_STRING
143+ result = str ( data )
135144
136145 return result
137146
138- def _apply_masking_rules (self , data : dict , masking_rules : dict ) -> dict :
147+ def _apply_masking_rules (self , data : dict , masking_rules : dict ) -> Any :
139148 """Apply masking rules to dictionary data."""
140149 return {
141150 key : self .erase (str (value ), ** masking_rules [key ]) if key in masking_rules else str (value )
0 commit comments