MCPcopy Create free account
hub / github.com/PaddlePaddle/Paddle / _recursive_assert_same_structure

Function _recursive_assert_same_structure

python/paddle/utils/layers_utils.py:283–322  ·  view source on GitHub ↗

Helper function for `assert_same_structure`.

(nest1, nest2, check_types, skip_if)

Source from the content-addressed store, hash-verified

281
282
283def _recursive_assert_same_structure(nest1, nest2, check_types, skip_if):
284 """
285 Helper function for `assert_same_structure`.
286 """
287 if skip_if is not None and (skip_if(nest1) or skip_if(nest2)):
288 return
289 is_sequence_nest1 = is_sequence(nest1)
290 if is_sequence_nest1 != is_sequence(nest2):
291 raise ValueError(
292 "The two structures don't have the same nested structure.\n\n"
293 f"First structure: {nest1}\n\nSecond structure: {nest2}."
294 )
295 if not is_sequence_nest1:
296 return # finished checking
297 if check_types:
298 type_nest1 = type(nest1)
299 type_nest2 = type(nest2)
300 if type_nest1 != type_nest2:
301 raise TypeError(
302 "The two structures don't have the same sequence type. First "
303 f"structure has type {type_nest1}, while second structure has type {type_nest2}."
304 )
305 if isinstance(nest1, dict):
306 keys1 = set(nest1.keys())
307 keys2 = set(nest2.keys())
308 if keys1 != keys2:
309 raise ValueError(
310 "The two dictionaries don't have the same set of keys. First "
311 f"structure has keys {keys1}, while second structure has keys {keys2}."
312 )
313 nest1_as_sequence = list(_yield_value(nest1))
314 nest2_as_sequence = list(_yield_value(nest2))
315 if len(nest1_as_sequence) != len(nest2_as_sequence):
316 raise ValueError(
317 "The two structures don't have the same number of elements.\n\n"
318 f"First structure ({len(nest1_as_sequence)} elements): {nest1}\n\n"
319 f"Second structure ({len(nest2_as_sequence)} elements): {nest2}"
320 )
321 for n1, n2 in zip(nest1_as_sequence, nest2_as_sequence):
322 _recursive_assert_same_structure(n1, n2, check_types, skip_if)
323
324
325def padding_to_same_structure(nest1, nest2, obj=None):

Callers 1

assert_same_structureFunction · 0.85

Calls 8

is_sequenceFunction · 0.85
ValueErrorClass · 0.85
TypeErrorClass · 0.85
setClass · 0.85
listFunction · 0.85
_yield_valueFunction · 0.85
typeFunction · 0.50
keysMethod · 0.45

Tested by

no test coverage detected