@@ -91,11 +91,11 @@ def erase(
91
91
result = None
92
92
93
93
# 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
96
96
97
97
# Handle string data
98
- elif isinstance (data , str ):
98
+ if isinstance (data , str ):
99
99
if regex_pattern and mask_format :
100
100
result = self ._regex_mask (data , regex_pattern , mask_format )
101
101
elif custom_mask :
@@ -107,15 +107,24 @@ def erase(
107
107
108
108
# Handle dictionary data
109
109
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
+ )
115
124
116
125
# Handle iterable data (list, tuple, set)
117
126
elif isinstance (data , (list , tuple , set )):
118
- masked_data = (
127
+ masked_data = [
119
128
self .erase (
120
129
item ,
121
130
dynamic_mask = dynamic_mask ,
@@ -126,16 +135,16 @@ def erase(
126
135
** kwargs ,
127
136
)
128
137
for item in data
129
- )
138
+ ]
130
139
result = type (data )(masked_data )
131
140
132
- # Default case
141
+ # Handle other types (int, float, bool, etc.)
133
142
else :
134
- result = DATA_MASKING_STRING
143
+ result = str ( data )
135
144
136
145
return result
137
146
138
- def _apply_masking_rules (self , data : dict , masking_rules : dict ) -> dict :
147
+ def _apply_masking_rules (self , data : dict , masking_rules : dict ) -> Any :
139
148
"""Apply masking rules to dictionary data."""
140
149
return {
141
150
key : self .erase (str (value ), ** masking_rules [key ]) if key in masking_rules else str (value )
0 commit comments