L i UddlmZddlmZmZmZmZddlmZddl Z ddl m Z m Z mZee egefZee egefZiZeeeefed<iZeeeeefed<edZed Zed Z dd eed ed eeddfdZd eeddfdZde dedeefdZdeeefdedeefdZdeededeefdZde edfdedeefdZ!dededeefdZ"deeefdedefdZ#deededefdZ$de edfdedefdZ%dededefdZ&eeee#eeee$ee e!e%e jNjPD] Z)ee)e!e%eee"e&y)) namedtuple)AnyCallableOptionalTypeVar) NamedTupleN)PyTree tree_flattenTreeSpecSUPPORTED_NODESSUPPORTED_NODES_EXACT_MATCH_T_K_Vclsflatten_fn_specflatten_fn_exact_match_specreturnc(|t|<|t|<yNr r )rrrs V/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/torch/fx/_pytree.pyregister_pytree_flatten_specrs +OC'B$c t|=t|=yrr)rs r_deregister_pytree_flatten_specrs #C(rpytreespecc >|jr|gS|jtvrOt|j}|||}g}t||jD]\}}t ||}||z }|St |\}} || k7rtd| d|d|d|S)Nz Real spec z of object z! is different from expected spec z_. Please file an issue at https://github.com/pytorch/pytorch/issues/new?template=bug-report.yml)is_leaftyper zipchildren_specstree_flatten_specr RuntimeError) rrr child_pytreesresultchild child_specflat flat_result real_specs rr$r$$s ||~x  yyO#)$))4'5 !$]D4G4G!H  E:$UJ7D dNF  )&1K y ;vh6WX\W]^l m   rdcF|jDcgc]}|| c}Scc}wr)context)r-rks r_dict_flatten_specr1@s,, 'QAaD '' 's cXt|jDcgc]}|| c}Scc}wrrange num_childrenr-ris r_list_flatten_specr8D% 1 12 3QAaD 33 3 '.cXt|jDcgc]}|| c}Scc}wrr3r6s r_tuple_flatten_specr<Hr9r:cXt|jDcgc]}|| c}Scc}wrr3r6s r_namedtuple_flatten_specr>Lr9r:c2t||jk(Srlenr5r-rs r_dict_flatten_spec_exact_matchrCP q6T&& &&rc2t||jk(Srr@rBs r_list_flatten_spec_exact_matchrFTrDrc2t||jk(Srr@rBs r_tuple_flatten_spec_exact_matchrHXrDrc2t||jk(Srr@rBs r$_namedtuple_flatten_spec_exact_matchrJ\rDrr)* collectionsrtypingrrrrtyping_extensionsrtorch.return_typestorchtorch.utils._pytreer r r listFlattenFuncSpecboolFlattenFuncExactMatchSpecr dictr!__annotations__r rrrrrr$r1r8tupler<r>rCrFrHrJ return_typesall_return_types return_typerrr\s"33(>>FH-t34$fh%7%=>46d3i016TVT$s)X6O-P"PQV T] T] T] HLC cC$C"**C!DC C) c) )   #Y8($r2v,(h(48(4$r(4(4tBx445S>44d2h44 4(4tCy4'd2r6l'('t''d2h'h'4''uRW~'X'$''J'h'4'T#57UVT#57UV # %%66K ' (r