def _resolve_looppart(parts, assign_path, context):
assign_path = assign_path[:]<EOL>index = assign_path.pop(<NUM_LIT:0>)<EOL>for part in parts:<EOL><INDENT>if part is util.Uninferable:<EOL><INDENT>continue<EOL><DEDENT>if not hasattr(part, "<STR_LIT>"):<EOL><INDENT>continue<EOL><DEDENT>try:<EOL><INDENT>itered = part.itered()<EOL><DEDENT>except TypeError:<EOL><INDENT>continue<EOL><DEDENT>for stmt in itered:<EOL><INDENT>index_node = nodes.Const(index)<EOL>try:<EOL><INDENT>assigned = stmt.getitem(index_node, context)<EOL><DEDENT>except (<EOL>AttributeError,<EOL>exceptions.AstroidTypeError,<EOL>exceptions.AstroidIndexError,<EOL>):<EOL><INDENT>continue<EOL><DEDENT>if not assign_path:<EOL><INDENT>yield assigned<EOL><DEDENT>elif assigned is util.Uninferable:<EOL><INDENT>break<EOL><DEDENT>else:<EOL><INDENT>try:<EOL><INDENT>yield from _resolve_looppart(<EOL>assigned.infer(context), assign_path, context<EOL>)<EOL><DEDENT>except exceptions.InferenceError:<EOL><INDENT>break<EOL><DEDENT><DEDENT><DEDENT><DEDENT>
recursive function to resolve multiple assignments on loops