
    ij)                        U d dl mZ d dlmZmZ eez  ez  ez  e	z  e
z  eedf         z  ee         z  dz  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 )/    )annotations)Final	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    U/root/projects/qq-shell/venv/lib64/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   r-   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77r   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_indexK   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33r   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_literalsl   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   rA   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   )rJ   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  rR   .0r(   indexs      r   
<dictcomp>z6Literals._encode_collection_values.<locals>.<dictcomp>   s    JJJ<5%%JJJr   )itemsr,   appendr   ranger   r3   )	r&   rN   value_by_indexresultcountir(   r.   rU   s	            r   rJ   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   r6   )r   rB   )rN   rO   r   rB   )__name__
__module____qualname____doc__r'   r-   r3   r5   r9   r=   r@   rE   rH   rK   rM   rJ   rR   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   rN   dict[str, int]r6   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 rR   rR   rS   s      r   rV   z&_encode_str_values.<locals>.<dictcomp>       FFF|ueeUFFFr   r   F   r   )rW   rY   r,   format_str_literalrX   
format_intjoin)	rN   rZ   r[   lineline_lenr]   r(   	c_literalc_lens	            r   r8   r8      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 rR   rR   rS   s      r   rV   z(_encode_bytes_values.<locals>.<dictcomp>   re   r   r   rf   r   )rW   rY   r,   rh   rX   ri   )	rN   rZ   r[   rj   rk   r]   r(   c_initrm   s	            r   r?   r?      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   r2   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         r0   )insertrY   r,   r   )r2   ar]   s      r   rh   rh      s    3wwC!eeHHQD!!!!GA !ee s1vvz"" 	 	AaDDDDLDDDD88Or   sr   c                n    |                      dd          }t          t          |                    |z   S )Nzutf-8surrogatepass)errors)encoderh   r,   )rx   utf8s     r   rg   rg      s0    88GO844D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 rR   rR   rS   s      r   rV   z&_encode_int_values.<locals>.<dictcomp>   re   r   r   s   %drf       r   )rW   rY   r,   rX   rh   ri   )rN   rZ   r[   rj   rk   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   rx   s     r   
float_to_cr     s<    AAEzzz	
f{	
euHr   dict[float, int]rB   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 rR   rR   rS   s      r   rV   z(_encode_float_values.<locals>.<dictcomp>  re   r   )rW   r,   rX   r   rY   r   rN   rZ   r[   numr]   r(   s         r   rD   rD     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 rR   rR   rS   s      r   rV   z*_encode_complex_values.<locals>.<dictcomp>%  re   r   )rW   r,   rX   r   rY   r   realimagr   s         r   rG   rG     s     GFv||~~FFFNF
f++C
MM#c((3ZZ . .q!j,,---j,,----Mr   )r   r   r   r	   )rN   rb   r   r6   )rN   rn   r   r6   )r2   r   r   r   )rx   r   r   r   )rN   r~   r   r6   )r   r   r   r   )rN   r   r   rB   )rN   r   r   rB   )
__future__r   typingr   r   r   r   r   boolr   r   r   r   r   r)   r   r   __annotations__r   r8   r?   rh   rg   r<   r   rD   rG   rR   r   r   <module>r      sy   " " " " " " " # # # # # # # #
 %K#u$w.vs{1CCiPVFWWZ^^ 
\ \ \ \
     W W W W W W W Wt   *   *   ( ( ( (
   0	 	 	 	        r   