
    hN                     .    S SK rS SKJr   " S S\5      rg)    N)OpRunc                   :    \ rS rSrS rS\4S jrSSSS.S jrSrg)	Loop   c                    [         R                  " XU5        SU R                  ;  a  [        S5      eSU;  a  [        S5      e[	        U R
                  R                  5       VVs0 s H  u  p4XC_M	     snnU l        [        U R
                  R                  5      S-
  U l
        [        U R
                  R                  5      U R                  -
  S-
  U l        g s  snnf )Nopsetsz&run_params must contains key 'opsets'.verbosez'run_params must contains key 'verbose'.      )r   __init__
run_paramsKeyError	enumeratebodyoutput_namesoutput_indexleninput_namesNK)self	onnx_noder   ins        T/var/www/fran/franai/venv/lib/python3.13/site-packages/onnx/reference/ops/op_loop.pyr   Loop.__init__   s    t
34??*CDDJ&DEE.7		8N8N.OP.OdaQT.OPTYY**+a/TYY++,tvv59 Qs   &Creturnc                     g)z
The operator Loop needs to know all results produced
so far as the loop may silently access one of them.
Some information are not always referred in the list of inputs
(kind of static variables).
T )r   s    r   need_contextLoop.need_context   s         N)contextr   
attributesc                   U(       a  US   nUSS  nOS n[        US5      (       d  [        S[        U5       S35      eU R                  nUR                  nU V	s0 s H  oS _M     n
n	Ub  XzUS   '   UR
                  S   nU(       a3  [        U5      [        U5      -
  nXS  n[        X5       H	  u  pXU	'   M     Ub  U H	  nX?   X'   M     [        U R                  5       Vs/ s H  n/ PM     nnSnU(       Ga  UU:  Ga  U R                  SU5        [        UR                  5      S:  a>  UR                  S   b.  [        R                  " UUR                  S9XR                  S   '   [        UR                  5      S:  a!  UR                  S   b  X*UR                  S   '   U R                  XS	9nU R                  S:  aA  [        U R                  5       H(  nUU   R                  UU R                  * U-      5        M*     U R                   U   nUU   nUc  [#        S
U< S35      e[        UR                  SS  UR
                  SS  5       H  u  nnUU R                   U      U
U'   M     US-  nU R                  S5        U(       a	  UU:  a  GM  US:X  a#  UR                  SS   Vs/ s H  nU
U   PM
     nnOWSSU R$                  -    nUR'                  U5        [        U5      [        U R(                  R*                  5      :  aQ  UR                  [        R,                  " SS95        [        U5      [        U R(                  R*                  5      :  a  MQ  [/        U5      nU$ s  sn	f s  snf s  snf )Nr   r   dtypez)M must be an array or a numpy number not .r
   z  -- loop> {%r})r&   )r$   z
Condition z) returned by the subgraph cannot be None.z
  -- loop<r   )shape)hasattr	TypeErrortyper   r   r   r   zipranger   _lognparrayr&   	_run_bodyappendr   RuntimeErrorr   extendr   outputemptytuple)r   Mcondr#   r   r$   args	v_initialloop_inputsnameinputs	cond_namebegin
all_inputsvalar   k_carried_awayitoutputsk
index_condoress                           r   _run	Loop._run   sI   QI8DIq'""GQyPQRSSyy&&)45*5 %.;q>"%%a(	$s4y0E$V,J 2	"t 3#J	  ',DFFm4m"m4rAvII'14##$q(T-=-=a-@-L.0hhr.I''*+4##$q(T-=-=a-@-L.2t''*+nnVnCGvvztvvA"1%,,WdffWq[-AB '**95J:&D|" -VW  D,,QR0$2C2CAB2GH1#D$5$5a$89q	 I!GBIIl#' rAv* 7*.*:*:12*>?*>Qvay*>G?Ga!dff*-G~&'lS!6!677NN288"-. 'lS!6!677Gn
[ 6 50 @s   M.$M3/M8)r   r   r   )	__name__
__module____qualname____firstlineno__r   boolr    rK   __static_attributes__r   r"   r   r   r      s&    :d  ,0dt 7 7r"   r   )numpyr/   onnx.reference.op_runr   r   r   r"   r   <module>rU      s     'K5 Kr"   