@@ -112,7 +112,7 @@ def nested_to_record(
112
112
def _json_normalize (
113
113
data : Union [Dict , List [Dict ]],
114
114
record_path : Optional [Union [str , List ]] = None ,
115
- meta : Optional [Union [str , List ]] = None ,
115
+ meta : Optional [Union [str , List [ Union [ str , List [ str ]]] ]] = None ,
116
116
meta_prefix : Optional [str ] = None ,
117
117
record_prefix : Optional [str ] = None ,
118
118
errors : Optional [str ] = "raise" ,
@@ -265,21 +265,21 @@ def _pull_field(js, spec):
265
265
elif not isinstance (meta , list ):
266
266
meta = [meta ]
267
267
268
- meta = [m if isinstance (m , list ) else [m ] for m in meta ]
268
+ _meta = [m if isinstance (m , list ) else [m ] for m in meta ]
269
269
270
270
# Disastrously inefficient for now
271
271
records : List = []
272
272
lengths = []
273
273
274
274
meta_vals : DefaultDict = defaultdict (list )
275
- meta_keys = [sep .join (val ) for val in meta ]
275
+ meta_keys = [sep .join (val ) for val in _meta ]
276
276
277
277
def _recursive_extract (data , path , seen_meta , level = 0 ):
278
278
if isinstance (data , dict ):
279
279
data = [data ]
280
280
if len (path ) > 1 :
281
281
for obj in data :
282
- for val , key in zip (meta , meta_keys ):
282
+ for val , key in zip (_meta , meta_keys ):
283
283
if level + 1 == len (val ):
284
284
seen_meta [key ] = _pull_field (obj , val [- 1 ])
285
285
@@ -296,7 +296,7 @@ def _recursive_extract(data, path, seen_meta, level=0):
296
296
297
297
# For repeating the metadata later
298
298
lengths .append (len (recs ))
299
- for val , key in zip (meta , meta_keys ):
299
+ for val , key in zip (_meta , meta_keys ):
300
300
if level + 1 > len (val ):
301
301
meta_val = seen_meta [key ]
302
302
else :
0 commit comments