
     Ti
                    j    S SK Jr  S SKJr  S SKrSS jrSS jrSS jrSS jrSS jr	SS	 jr
SS
 jrg)    )annotations)AnyNc                    U S:X  a  S$ U $ )Nai.onnx  ds    U/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/onnxscript/utils/utils.pynormalize_domainr   
   s    i2&Q&    c                    [        U 5      S:H  $ )Nr   )r   r	   s    r   is_onnx_domainr      s    A"$$r   c                X    [        U R                  5      =(       a    U R                  U:H  $ N)r   domainop_type)noder   s     r   
is_onnx_opr      s    $++&B4<<7+BBr   c                :    [        S U R                   5       5      $ )Nc              3     #    U  H4  oR                  S 5      =(       d    [        UR                  5      S:  v   M6     g7f)gr   N)HasFieldlengraphs).0attrs     r   	<genexpr>%is_control_flow_op.<locals>.<genexpr>   s-     Und}}S!9S%5%99ns   <>)any	attribute)r   s    r   is_control_flow_opr"      s    UdnnUUUr   c                   U R                    Vs/ s H  o3R                  U:X  d  M  UPM     nn[        U5      S:  a  [        SU 35      e[        U5      S:  a  U$ [        R
                  R                  US   5      $ s  snf )N   z'Node has multiple attributes with name r   )r!   namer   
ValueErroronnxhelperget_attribute_value)r   	attr_namedefaultxmatchings        r   get_node_attr_valuer.      sr    >>A>aVVy-@>HA
8}qB9+NOO
8}q;;**8A;77 Bs
   A>A>c                    [         R                  " 5       nU R                  UR                  l        UR                  R
                  R                  nU R                   H  nX2R                  5       l	        M     U$ r   )
r'   	TypeProto	data_typetensor_type	elem_typeshapedimdimsadd	dim_value)initializertyper6   r5   s       r   get_initializer_typer;   #   sZ    >>D!,!6!6D!!%%D"
  Kr   c                   U R                   S:w  d)  U R                  S;  d  [        U R                  5      S:w  a  g U R                  S   nUR                  (       a  g UR
                  n[        R                  R                  U5      n[        U[        R                  5      (       a  U$ US:X  a   [        R                  R                  n/ nU/nOUS:X  a   [        R                  R                  n/ nU/nOUS:X  a   [        R                  R                  n/ nU/nOUS:X  a'  [        R                  R                  n[        U5      /nO[US	:X  a'  [        R                  R                  n[        U5      /nO.US
:X  a'  [        R                  R                  n[        U5      /nOg [        R                  R                  XXd5      $ )NConstant>   r   r   r$   r   	value_intvalue_floatvalue_string
value_intsvalue_floatsvalue_strings)r   r   r   r!   ref_attr_namer%   r'   r(   r)   
isinstanceTensorProtoINT64FLOATSTRINGmake_tensor)r   r%   r   r*   valuedtyper4   s          r   get_constant_node_valuerM   ,   sr   
";;o-t~~!#>>!D		IKK++D1E%))**K  &&	m	#  &&	n	$  ''	l	"  &&U	n	$  &&U	o	%  ''U;;""4==r   )r
   strreturnrN   )r
   rN   rO   bool)r   onnx.NodeProtor   rN   rO   rP   )r   rQ   rO   rP   )r   rQ   r*   rN   r+   r   rO   r   )r9   zonnx.TensorProtorO   zonnx.TypeProto)r   rQ   r%   rN   rO   zonnx.TensorProto | None)
__future__r   typingr   r'   r   r   r   r"   r.   r;   rM   r   r   r   <module>rT      s5    #  '%CV8(>r   