§
    2�ÅjØ
  ã                  óR   — d dl mZ d dlmZ d dlmZ erd dlZ G d„ de¦  «        ZdS )é    )Úannotations)ÚTYPE_CHECKING)ÚOpRunNc                  ó0   — e Zd Zd„ Zd	d„Z	 	 	 	 	 d
dd„ZdS )ÚIfc                ó¸   — t          j        | ||¦  «         d| j        vrt          d¦  «        ‚d|vrt          d¦  «        ‚d| j        vrt          d¦  «        ‚d S )NÚopsetsz&run_params must contains key 'opsets'.Úverbosez'run_params must contains key 'verbose'.Úexisting_functionsz2run_params must contains key 'existing_functions'.)r   Ú__init__Ú
run_paramsÚKeyError)ÚselfÚ	onnx_noder   s      úIC:\Projects\Historical\venv\Lib\site-packages\onnx/reference/ops/op_if.pyr   zIf.__init__   sp   € ÝŒ�t˜Y¨
Ñ3Ô3Ð3Ø˜4œ?Ð*Ð*ÝÐCÑDÔDÐDØ˜JÐ&Ð&ÝÐDÑEÔEÐEØ t¤Ð6Ð6ÝÐOÑPÔPÐPð 7Ð6ó    ÚreturnÚboolc                ó   — dS )zÉTells the runtime if this node needs the context
        (all the results produced so far) as it may silently access
        one of them (operator Loop).
        The default answer is `False`.
        T© )r   s    r   Úneed_contextzIf.need_context   s	   € ð ˆtr   NÚcondúnp.ndarray | np.bool_c                óV  — |j         dk    r-t          d| j        j        ›dt	          |¦  «        › d�¦  «        ‚|                     ¦   «         }|rU|                      d|¦  «         |                      |||¬¦  «        }|                      d¦  «         t          |¦  «        }	d}
nT|                      d	|¦  «         |  	                    |||¬¦  «        }|                      d
¦  «         t          |¦  «        }	d}
|	st          d| j        j        ›d�¦  «        ‚t          |	¦  «        D ]o\  }}|€h|
dk    r| j        n| j        }|j        }d„ |j        j        j        D ¦   «         }t          d|›d|
›d||         ›dt%          |¦  «        › d|› d�¦  «        ‚Œp|                      |	¦  «        S )Né   zOperator If (zC) expects a single element as condition, but the size of 'cond' is ú.z  -- then> {%r})Ú
attributesÚbindingsz
  -- then<Úthenz  -- else> {%r}z
  -- else<Úelsez) does not have any output.c                ó   — g | ]	}|j         ‘Œ
S r   )Úname)Ú.0Úis     r   ú
<listcomp>zIf._run.<locals>.<listcomp>H   s   € ÐBÐBÐB A˜œÐBÐBÐBr   zOutput z	 (branch=z, name=z) is None, available inputs=z, initializers=)ÚsizeÚ
ValueErrorr   r"   ÚlenÚitemÚ_logÚ_run_then_branchÚtupleÚ_run_else_branchÚRuntimeErrorÚ	enumerateÚthen_branchÚelse_branchÚoutput_namesÚobjÚgraphÚinitializerÚsortedÚ_check_and_fix_outputs)r   r   Úcontextr1   r0   r   r   Úcond_ÚoutputsÚfinalÚbranchr$   ÚfÚbrÚnamesÚinitss                   r   Ú_runzIf._run!   sF  € ð Œ9˜Š>ˆ>Ýð G ¤Ô 3ð  Gð  GÕz}ð  Cñ  {Dô  {Dð  Gð  Gð  Gñô ð ð —	’	‘”ˆØð 	Ø�IŠIÐ'¨Ñ1Ô1Ð1Ø×+Ò+Ø J¸ð ,ñ ô ˆGð �IŠI�lÑ#Ô#Ð#Ý˜'‘N”NˆEØˆFˆFà�IŠIÐ'¨Ñ1Ô1Ð1Ø×+Ò+Ø J¸ð ,ñ ô ˆGð �IŠI�lÑ#Ô#Ð#Ý˜'‘N”NˆEØˆFàð 	ÝØR ¤Ô 3ÐRÐRÐRñô ð õ ˜eÑ$Ô$ð 	ð 	‰DˆAˆqØˆyØ)/°6Ò)9Ð)9�TÔ%Ð%¸tÔ?O�Øœ�ØBÐB¨¬¬Ô)AÐBÑBÔB�Ý"ðQ˜að Qð Q¨Fð Qð Q¸UÀ1¼Xð Qð QÝ(.¨w©¬ðQð QØHMðQð Qð Qñô ð ð	 ð ×*Ò*¨5Ñ1Ô1Ð1r   )r   r   )NNNNN)r   r   )Ú__name__Ú
__module__Ú__qualname__r   r   rA   r   r   r   r   r      sd   € € € € € ðQð Qð Qðð ð ð ð ØØØØð,2ð ,2ð ,2ð ,2ð ,2ð ,2ð ,2r   r   )	Ú
__future__r   Útypingr   Úonnx.reference.op_runr   ÚnumpyÚnpr   r   r   r   ú<module>rJ      s…   ðð
 #Ð "Ð "Ð "Ð "Ð "à  Ð  Ð  Ð  Ð  Ð  à 'Ð 'Ð 'Ð 'Ð 'Ð 'àð ØÐÐÐð>2ð >2ð >2ð >2ð >2ˆñ >2ô >2ð >2ð >2ð >2r   