§
    kŠtjŸ  ã                   ó,  — U d dl Z d dlZd dlZej                             e¦  «        Zej                             ej                             ed¦  «        ¦  «        r4ej         	                    ej                             ed¦  «        ¦  «         n3ej         	                    ej                             ed¦  «        ¦  «         	 d dl
mZmZmZ dZdZedz  ed<   n# e$ rZeZdZdZdZeZY dZ[ndZ[ww xY w e j        e¦  «        Z G d	„ d
e¦  «        ZdS )é    Nz ../tools/symbolic_shape_infer.pyz../toolsz..)ÚSymbolicShapeInferenceÚget_shape_from_type_protoÚsympyTÚ"_symbolic_shape_infer_import_errorFc                   óT   ‡ — e Zd Zdˆ fd„	Zddeeef         defd	„Zd
„ Zd„ Z	d„ Z
ˆ xZS )ÚSymbolicShapeInferenceHelperr   éÿÿÿTFc                 óþ   •— t           s4t          }|�dt          |¦  «        v rdnd|›�}t          d|› �¦  «        |‚t	          ¦   «                              ||||¦  «         || _        d| _        d| _        i | _	        d S )Nr   z1missing 'sympy' (install with: pip install sympy)z'failed to import symbolic_shape_infer: u0   SymbolicShapeInferenceHelper is unavailable â€” F)
Ú_symbolic_shape_infer_availabler   ÚstrÚImportErrorÚsuperÚ__init__Úmodel_Úall_shapes_inferred_Úis_inferred_Údynamic_axis_mapping_)	ÚselfÚmodelÚverboseÚint_maxÚ
auto_mergeÚguess_output_rankÚerrÚcauseÚ	__class__s	           €úi/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/onnxruntime/transformers/shape_infer_helper.pyr   z%SymbolicShapeInferenceHelper.__init__!   s¢   ø€ Ý.ð 	cÝ4ˆCð �? wµ#°c±(´(Ð':Ð':ð DÐCàF¸sÐFÐFð õ
 ÐXÐQVÐXÐXÑYÔYÐ_bÐbÝ‰Œ×Ò˜ *Ð.?ÀÑIÔIÐIØˆŒØ*/ˆÔ!Ø"'ˆÔØ57ˆÔ"Ð"Ð"ó    éÈ   Údynamic_axis_mappingÚmax_runsc                 óJ  — |€J ‚| j         r| j        |k    r| j        S || _        |                      | j        ¦  «         d}| j        rOt                               d|› �¦  «         |                      ¦   «         | _        |dz  }|dk    r||k    rn| j        °Od| _         | j        S )a©  Run shape inference, and try replace dynamic axis from string to integer when mapping is provided.

        Args:
            dynamic_axis_mapping (_type_): a dictionary with name of dynamic axis as key, like {"batch_size" : 4}
            max_runs (int, optional): limit maximum number of runs to avoid infinite loop. Defaults to 200.

        Returns:
            bool: whether all shapes has been inferred or not.
        Nr   zshape infer run é   T)	r   r   r   Ú_preprocessr   Úrun_ÚloggerÚdebugÚ_infer_impl)r   r    r!   Úcounts       r   Úinferz"SymbolicShapeInferenceHelper.infer0   sÌ   € ð $Ð/Ð/Ð/àÔð 	- Ô!;Ð?SÒ!SÐ!SØÔ,Ð,à%9ˆÔ"à×Ò˜œÑ%Ô%Ð%àˆØŒið 	Ý�LŠLÐ3¨EÐ3Ð3Ñ4Ô4Ð4Ø(,×(8Ò(8Ñ(:Ô(:ˆDÔ%Ø�Q‰JˆEØ˜!Š|ˆ| ¨Ò 1Ð 1Øð Œið 	ð !ˆÔØÔ(Ð(r   c                 óœ  — g }|                       ||¦  «        }|r±|D ]®}t          |t          ¦  «        r~|| j        v r!|                     | j        |         ¦  «         ŒA|| j        v r!|                     | j        |         ¦  «         Œk|                     t          j        |d¬¦  «        ¦  «         Œ•|€J ‚|                     |¦  «         Œ¯|S )zQOverride it to ensure shape inference by giving the actual value of dynamic axis.T)Úinteger)Ú
_get_shapeÚ
isinstancer   r   ÚappendÚsymbolic_dims_r   ÚSymbol)r   ÚnodeÚidxÚsympy_shapeÚshapeÚdims         r   Ú_get_sympy_shapez-SymbolicShapeInferenceHelper._get_sympy_shapeN   sé   € àˆà—’  cÑ*Ô*ˆØð 	,Øð 
,ð 
,�Ý˜c¥3Ñ'Ô'ð 	,Ø˜dÔ8Ð8Ð8Ø#×*Ò*¨4Ô+EÀcÔ+JÑKÔKÐKÐKØ Ô 3Ð3Ð3Ø#×*Ò*¨4Ô+>¸sÔ+CÑDÔDÐDÐDà#×*Ò*­5¬<¸ÀTÐ+JÑ+JÔ+JÑKÔKÐKÐKà˜?˜?˜?Ø×&Ò& sÑ+Ô+Ð+Ð+ØÐr   c                 ó8  — | j         sJ ‚|| j        vr!t          dt          |¦  «        z   ¦  «         dS | j        |         j        }t          |¦  «        }|�Ct          |¦  «        D ]3\  }}t          |t          ¦  «        r|| j        v r| j        |         ||<   Œ4|S )z¬Get shape of an edge.

        Args:
            edge (str): name of edge

        Returns:
            Optional[List[int]]: the shape, or None if shape is unknown
        zCannot retrieve the shape of N)	r   Ú	known_vi_Úprintr   Útyper   Ú	enumerater.   r   )r   ÚedgeÚ
type_protor5   Úir6   s         r   Úget_edge_shapez+SymbolicShapeInferenceHelper.get_edge_shapea   s²   € ð Ô(Ð(Ð(Ð(Ø�t”~Ð%Ð%ÝÐ1µC¸±I´IÑ=Ñ>Ô>Ð>Ø�4à”^ DÔ)Ô.ˆ
Ý)¨*Ñ5Ô5ˆàÐÝ# EÑ*Ô*ð ?ð ?‘��3Ý˜c¥3Ñ'Ô'ð ?¨C°4Ô3MÐ,MÐ,MØ#Ô9¸#Ô>�E˜!‘Høàˆr   c                 óš   — | j         sJ ‚|                      |¦  «        }|                      |¦  «        }|�|€t          d¦  «        ‚||k    S )a*  Compare shape of two edges.

        Args:
            edge (str): name of edge
            edge_other (str): name of another edge

        Raises:
            Exception: At least one shape is missed for edges to compare

        Returns:
            bool: whether the shape is same or not
        Nz1At least one shape is missed for edges to compare)r   r@   Ú	Exception)r   r=   Ú
edge_otherr5   Úshape_others        r   Úcompare_shapez*SymbolicShapeInferenceHelper.compare_shapey   s]   € ð Ô(Ð(Ð(Ð(Ø×#Ò# DÑ)Ô)ˆØ×)Ò)¨*Ñ5Ô5ˆØˆ=˜KÐ/ÝÐOÑPÔPÐPØ˜Ò#Ð#r   )r   r	   TF)r   )Ú__name__Ú
__module__Ú__qualname__r   Údictr   Úintr*   r7   r@   rE   Ú__classcell__)r   s   @r   r   r       s™   ø€ € € € € ð8ð 8ð 8ð 8ð 8ð 8ð)ð )¨$¨s°C¨x¬.ð )ÀCð )ð )ð )ð )ð<ð ð ð&ð ð ð0$ð $ð $ð $ð $ð $ð $r   r   )ÚloggingÚosÚsysÚpathÚdirnameÚ__file__Ú	file_pathÚexistsÚjoinr/   Úsymbolic_shape_inferr   r   r   r   r   r   Ú__annotations__ÚexcÚobjectÚ	getLoggerrF   r&   r   © r   r   ú<module>r[      s‹  ðð €€€€Ø 	€	€	€	Ø 
€
€
€
ð ŒG�OŠO˜HÑ%Ô%€	Ø„7‡>‚>�"”'—,’,˜yÐ*LÑMÔMÑNÔNð 3Ø„H‡O‚O�B”G—L’L ¨JÑ7Ô7Ñ8Ô8Ð8Ð8à„H‡O‚O�B”G—L’L ¨DÑ1Ô1Ñ2Ô2Ð2ð
-Ø]Ð]Ð]Ð]Ð]Ð]Ð]Ð]Ð]Ð]à&*Ð#Ø=AÐ&¨°dÑ(:ÐAÐAÑAÐAøØð -ð -ð -Ø#ÐØ $ÐØ€EØ&+Ð#Ø),Ð&Ð&Ð&Ð&Ð&Ð&øøøøð-øøøð 
ˆÔ	˜8Ñ	$Ô	$€ðk$ð k$ð k$ð k$ð k$Ð#9ñ k$ô k$ð k$ð k$ð k$s   ÃC ÃC3Ã
C.Ã.C3