
    5 f)              
          U d dl mZ d dlmZmZmZmZ d dlmZ ee	e
eeeeeedf         ee         df	         Zd'd
ZdZded<    G d d          Zd(dZd)dZd*dZd+dZd,dZd-d!Zd.d$Zd/d&ZdS )0    )annotations)Final	FrozenSetTupleUnion)	TypeGuard.NobjobjectreturnTypeGuard[LiteralValue]c                    t          | t          t          t          t          t
          t          t          t          d           f          S N)	
isinstancestrbytesintfloatcomplextuple	frozensettype)r	   s    L/var/www/equiseq/venv/lib/python3.11/site-packages/mypyc/codegen/literals.py_is_literal_valuer      s*    cCUGUItTXzzZ[[[       r   NUM_SINGLETONSc                  r    e Zd ZdZddZddZdd	Zdd
ZddZddZ	ddZ
ddZddZddZddZddZdS )LiteralszMCollection of literal values used in a compilation group and related helpers.r   Nonec                h    i | _         i | _        i | _        i | _        i | _        i | _        i | _        d S r   )str_literalsbytes_literalsint_literalsfloat_literalscomplex_literalstuple_literalsfrozenset_literalsselfs    r   __init__zLiterals.__init__   s@    ,.02,.0246=?@Br   valueLiteralValuec                   ||du s|du rdS t          |t                    r!| j        }||vrt          |          ||<   dS dS t          |t                    r!| j        }||vrt          |          ||<   dS dS t          |t                    r!| j        }||vrt          |          ||<   dS dS t          |t                    r!| j	        }||vrt          |          ||<   dS dS t          |t                    r!| j        }||vrt          |          ||<   dS dS t          |t                    rL| j        }||vr?|D ](}t          |          sJ |                     |           )t          |          ||<   dS dS t          |t                     rL| j        }	||	vr?|D ](}t          |          sJ |                     |           )t          |	          |	|<   dS dS J d|z              )z=Ensure that the literal value is available in generated code.NTFinvalid literal: %r)r   r   r!   lenr   r"   r   r#   r   r$   r   r%   r   r&   r   record_literalr   r'   )
r)   r+   r!   r"   r#   r$   r%   r&   itemr'   s
             r   r0   zLiterals.record_literal"   s   =ETMMUe^^FeS!! #	8,LL((&),&7&7U### )(u%% 	8!0NN**(+N(;(;u%%% +*s## 	8,LL((&),&7&7U### )(u%% 	8!0NN**(+N(;(;u%%% +*w'' 	8#4,,,*-.>*?*? ''' -,u%% 	8!0NN**! . .D,T22222''----(+N(;(;u%%%	 +*
 y)) 	8!%!8...! . .D,T22222''----,/0B,C,C"5)))	 /. 8/%7775r   r   c                d   |dS |du rdS |du rdS t           }t          |t                    r|| j        |         z   S |t	          | j                  z  }t          |t
                    r|| j        |         z   S |t	          | j                  z  }t          |t                    r|| j        |         z   S |t	          | j                  z  }t          |t                    r|| j
        |         z   S |t	          | j
                  z  }t          |t                    r|| j        |         z   S |t	          | j                  z  }t          |t                    r|| j        |         z   S |t	          | j                  z  }t          |t                    r|| j        |         z   S J d|z              )z7Return the index to the literals array for given value.Nr   F   T   r.   )r   r   r   r!   r/   r   r"   r   r#   r   r$   r   r%   r   r&   r   r'   )r)   r+   ns      r   literal_indexzLiterals.literal_indexL   s    =1e^^1d]]1eS!! 	0t(///	S"###eU## 	2t*5111	S$%%%eS!! 	0t(///	S"###eU## 	2t*5111	S$%%%eW%% 	4t,U333	S&'''eU## 	2t*5111	S$%%%eY'' 	6t.u5553+e333ur   c                6   t           t          | j                  z   t          | j                  z   t          | j                  z   t          | j                  z   t          | j                  z   t          | j                  z   t          | j                  z   S r   )	r   r/   r!   r"   r#   r$   r%   r&   r'   r(   s    r   num_literalszLiterals.num_literalsm   s     $#$$%$%&&' $#$$% $%&&	'
 $'(() $%&&' $)**+		
r   list[bytes]c                *    t          | j                  S r   )_encode_str_valuesr!   r(   s    r   encoded_str_valueszLiterals.encoded_str_values}       !$"3444r   c                *    t          | j                  S r   )_encode_int_valuesr#   r(   s    r   encoded_int_valueszLiterals.encoded_int_values   r=   r   c                *    t          | j                  S r   )_encode_bytes_valuesr"   r(   s    r   encoded_bytes_valueszLiterals.encoded_bytes_values       #D$7888r   	list[str]c                *    t          | j                  S r   )_encode_float_valuesr$   r(   s    r   encoded_float_valueszLiterals.encoded_float_values   rD   r   c                *    t          | j                  S r   )_encode_complex_valuesr%   r(   s    r   encoded_complex_valueszLiterals.encoded_complex_values   s    %d&;<<<r   c                6    |                      | j                  S r   )_encode_collection_valuesr&   r(   s    r   encoded_tuple_valueszLiterals.encoded_tuple_values   s    --d.ABBBr   c                6    |                      | j                  S r   )rM   r'   r(   s    r   encoded_frozenset_valuesz!Literals.encoded_frozenset_values   s    --d.EFFFr   values<dict[tuple[object, ...], int] | dict[frozenset[object], int]c                   d |                                 D             }g }t          |          }|                    t          |                     t	          |          D ]}||         }|                    t          t          |                               |D ]J}t          |          sJ |                     |          }|                    t          |                     K|S )aR  Encode tuple/frozenset values into a C array.

        The format of the result is like this:

           <number of collections>
           <length of the first collection>
           <literal index of first item>
           ...
           <literal index of last item>
           <length of the second collection>
           ...
        c                    i | ]\  }}||	S  rU   .0r+   indexs      r   
<dictcomp>z6Literals._encode_collection_values.<locals>.<dictcomp>   s    JJJ<5%%JJJr   )itemsr/   appendr   ranger   r6   )	r)   rQ   value_by_indexresultcountir+   r1   rX   s	            r   rM   z"Literals._encode_collection_values   s     KJ6<<>>JJJFc%jj!!!u 	* 	*A"1%EMM#c%jj//*** * *(.....**400c%jj))))* r   N)r   r   )r+   r,   r   r   )r+   r,   r   r   )r   r   )r   r9   )r   rE   )rQ   rR   r   rE   )__name__
__module____qualname____doc__r*   r0   r6   r8   r<   r@   rC   rH   rK   rN   rP   rM   rU   r   r   r   r      s       WWC C C C(8 (8 (8 (8T4 4 4 4B
 
 
 
 5 5 5 55 5 5 59 9 9 99 9 9 9= = = =C C C CG G G G     r   r   rQ   dict[str, int]r9   c                t   d |                                  D             }g }g }d}t          t          |                     D ]}||         }t          |          }t          |          }|dk    rR||z   dk    rI|                    t          t          |                    d                    |          z              g }d}|                    |           ||z  }|rE|                    t          t          |                    d                    |          z              |                    d           |S )Nc                    i | ]\  }}||	S rU   rU   rV   s      r   rY   z&_encode_str_values.<locals>.<dictcomp>       FFF|ueeUFFFr   r   F   r   )rZ   r\   r/   format_str_literalr[   
format_intjoin)	rQ   r]   r^   lineline_lenr`   r+   	c_literalc_lens	            r   r;   r;      s(   FFv||~~FFFNFDH3v;; 	 	q!&u--	Ia<<Hu,r11MM*SYY//#((4..@AAADHIE >jT++chhtnn<===
MM#Mr   dict[bytes, int]c                   d |                                  D             }g }g }d}t          t          |                     D ]}||         }t          t          |                    }t          |          t          |          z   }|dk    rR||z   dk    rI|                    t          t          |                    d                    |          z              g }d}|                    ||z              ||z  }|rE|                    t          t          |                    d                    |          z              |                    d           |S )Nc                    i | ]\  }}||	S rU   rU   rV   s      r   rY   z(_encode_bytes_values.<locals>.<dictcomp>   rh   r   r   ri   r   )rZ   r\   r/   rk   r[   rl   )	rQ   r]   r^   rm   rn   r`   r+   c_initrp   s	            r   rB   rB      s=   FFv||~~FFFNFDH3v;; 	 	q!CJJ''Fc%jj(a<<Hu,r11MM*SYY//#((4..@AAADHFUN###E >jT++chhtnn<===
MM#Mr   r5   r   r   c                    | dk     r| g}n^g }| dk    r$|                     d| dz             | dz  } | dk    $t          t          |          dz
            D ]}||xx         dz  cc<   t          |          S )z:Format an integer using a variable-length binary encoding.   r         r3   )insertr\   r/   r   )r5   ar`   s      r   rk   rk      s    3wwC!eeHHQD!!!!GA !ee s1vvz"" 	 	AaDDDDLDDDD88Or   sr   c                j    |                      d          }t          t          |                    |z   S )Nzutf-8)encoderk   r/   )r{   utf8s     r   rj   rj      s,    88GDc$ii  4''r   dict[int, int]c                v   d |                                  D             }g }g }d}t          t          |                     D ]}||         }d|z  }|dk    r_|t          |          z   dk    rI|                    t	          t          |                    d                    |          z              g }d}|                    |           |t          |          z  }|rE|                    t	          t          |                    d                    |          z              |                    d           |S )zbEncode int values into C strings.

    Values are stored in base 10 and separated by 0 bytes.
    c                    i | ]\  }}||	S rU   rU   rV   s      r   rY   z&_encode_int_values.<locals>.<dictcomp>   rh   r   r   s   %dri       r   )rZ   r\   r/   r[   rk   rl   )rQ   r]   r^   rm   rn   r`   r+   encodeds           r   r?   r?      s-   
 GFv||~~FFFNFDH3v;; ! !q!%-a<<Hs7||3b88MM*SYY//%**T2B2BBCCCDHGCLL  @jT++ejj.>.>>???
MM#Mr   xr   c                T    t          |           }|dk    rdS |dk    rdS |dk    rdS |S )z1Return C literal representation of a float value.infINFINITYz-infz	-INFINITYnanNAN)r   )r   r{   s     r   
float_to_cr     s<    AAEzzz	
f{	
euHr   dict[float, int]rE   c                    d |                                  D             }g }t          |           }|                    t          |                     t	          |          D ],}||         }|                    t          |                     -|S )z|Encode float values into a C array values.

    The result contains the number of values followed by individual values.
    c                    i | ]\  }}||	S rU   rU   rV   s      r   rY   z(_encode_float_values.<locals>.<dictcomp>  rh   r   )rZ   r/   r[   r   r\   r   rQ   r]   r^   numr`   r+   s         r   rG   rG     s    
 GFv||~~FFFNF
f++C
MM#c((3ZZ ) )q!j''((((Mr   dict[complex, int]c                x   d |                                  D             }g }t          |           }|                    t          |                     t	          |          D ]X}||         }|                    t          |j                             |                    t          |j                             Y|S )zEncode float values into a C array values.

    The result contains the number of values followed by pairs of doubles
    representing complex numbers.
    c                    i | ]\  }}||	S rU   rU   rV   s      r   rY   z*_encode_complex_values.<locals>.<dictcomp>&  rh   r   )rZ   r/   r[   r   r\   r   realimagr   s         r   rJ   rJ      s     GFv||~~FFFNF
f++C
MM#c((3ZZ . .q!j,,---j,,----Mr   )r	   r
   r   r   )rQ   re   r   r9   )rQ   rq   r   r9   )r5   r   r   r   )r{   r   r   r   )rQ   r   r   r9   )r   r   r   r   )rQ   r   r   rE   )rQ   r   r   rE   )
__future__r   typingr   r   r   r   typing_extensionsr   r   r   r   boolr   r   r
   r,   r   r   __annotations__r   r;   rB   rk   rj   r?   r   rG   rJ   rU   r   r   <module>r      s   " " " " " " " 1 1 1 1 1 1 1 1 1 1 1 1 ' ' ' ' ' ' T5'5+=y?PRVV
\ \ \ \
     W W W W W W W Wt   *   *   ( ( ( (
   0	 	 	 	        r   