
    X-Ph)              
          U d dl mZ d dl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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    V/var/www/html/test/jupyter/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   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_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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_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   rB   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   )rK   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  rS   .0r)   indexs      r   
<dictcomp>z6Literals._encode_collection_values.<locals>.<dictcomp>   s    JJJ<5%%JJJr   )itemsr-   appendr   ranger   r4   )	r'   rO   value_by_indexresultcountir)   r/   rV   s	            r   rK   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	   r7   )r	   rC   )rO   rP   r	   rC   )__name__
__module____qualname____doc__r(   r.   r4   r6   r:   r>   rA   rF   rI   rL   rN   rK   rS   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   rO   dict[str, int]r7   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 rS   rS   rT   s      r   rW   z&_encode_str_values.<locals>.<dictcomp>       FFF|ueeUFFFr   r   F   r   )rX   rZ   r-   format_str_literalrY   
format_intjoin)	rO   r[   r\   lineline_lenr^   r)   	c_literalc_lens	            r   r9   r9      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 rS   rS   rT   s      r   rW   z(_encode_bytes_values.<locals>.<dictcomp>   rf   r   r   rg   r   )rX   rZ   r-   ri   rY   rj   )	rO   r[   r\   rk   rl   r^   r)   c_initrn   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   r3   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         r1   )insertrZ   r-   r   )r3   ar^   s      r   ri   ri      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)encoderi   r-   )ry   utf8s     r   rh   rh      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 rS   rS   rT   s      r   rW   z&_encode_int_values.<locals>.<dictcomp>   rf   r   r   s   %drg       r   )rX   rZ   r-   rY   ri   rj   )rO   r[   r\   rk   rl   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   ry   s     r   
float_to_cr     s<    AAEzzz	
f{	
euHr   dict[float, int]rC   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 rS   rS   rT   s      r   rW   z(_encode_float_values.<locals>.<dictcomp>  rf   r   )rX   r-   rY   r   rZ   r   rO   r[   r\   numr^   r)   s         r   rE   rE     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 rS   rS   rT   s      r   rW   z*_encode_complex_values.<locals>.<dictcomp>&  rf   r   )rX   r-   rY   r   rZ   r   realimagr   s         r   rH   rH      s     GFv||~~FFFNF
f++C
MM#c((3ZZ . .q!j,,---j,,----Mr   )r   r   r	   r
   )rO   rc   r	   r7   )rO   ro   r	   r7   )r3   r   r	   r   )ry   r   r	   r   )rO   r   r	   r7   )r   r   r	   r   )rO   r   r	   rC   )rO   r   r	   rC   )
__future__r   typingr   r   typing_extensionsr   r   r   r   boolr   r   r   r   r   r*   r   r   __annotations__r   r9   r@   ri   rh   r=   r   rE   rH   rS   r   r   <module>r      s{   " " " " " " "         ' ' ' ' ' ' T5'5+=y?PRVV
\ \ \ \
     W W W W W W W Wt   *   *   ( ( ( (
   0	 	 	 	        r   