o
    Zh:                     @   s   d Z ddlZddlZddlZddlmZ dd Zdd ZejdkrUz(ddl	Z	dd	l
mZmZmZmZ e	jjjZeeege_ee_d
d Zee W n	 eyR   Y nw eZdd Zdd Zdd ZG dd deZdS )z"Compiler helpers for the debugger.    N)CachingCompilerc           	      C   sx  d}dd t | dD } t| }||A }|d@ }td|dD ]H}t| | d@ t| |d	  d@ d
> B t| |d  d@ d> B t| |d  d> B }|| d@ }||d? N }|| d@ }|| d@ }||N }q|d@ }d}|dkr~t| |d  d@ d> }|dv r|t| |d	  d@ d
> O }|dv r|t| | d@ O }||N }|| d@ }||d? N }|| d@ }||d? N }|S )zGet the murmur2 hash.i[c                 S   s   g | ]}t |qS  )chr).0dr   r   I/var/www/html/lang_env/lib/python3.10/site-packages/ipykernel/compiler.py
<listcomp>   s    zmurmur2_x86.<locals>.<listcomp>utf8l    r                           l    )r   r   )r   r   r         )strencodelenrangeord)	dataseedmlengthhZrounded_endikvalr   r   r   murmur2_x86	   sB   
r!   c                 C   s   | S )Nr   )filenamer   r   r   <lambda>0   s    r#   win32)DWORDLPCWSTRLPWSTRMAX_PATHc                 C   s0   t t}t| |t}|dkr|tkr|j} | S )Nr   )ctypesZcreate_unicode_bufferr(   _GetLongPathNamevalue)r"   bufrvr   r   r   _convert_to_long_pathname;   s
   
r.   c                  C   s*   t t } t }| tj d t| S )zGet a temp directory.Z
ipykernel_)convert_to_long_pathnametempfile
gettempdirosgetpidsepr   )Ztmp_dirpidr   r   r   get_tmp_directoryJ   s   r6   c                   C   s   dS )zGet a temp hash seed.l   i r   r   r   r   r   get_tmp_hash_seedQ   s   r7   c                 C   s<   t jd}|du rt| t }t t j t| d }|S )zGet a file name.ZIPYKERNEL_CELL_NAMENz.py)r2   environgetr!   r7   r6   r4   r   )codeZ	cell_namenamer   r   r   get_file_nameV   s
   r<   c                       s(   e Zd ZdZ fddZdd Z  ZS )XCachingCompilerzA custom caching compiler.c                    s   t  j|i | d| _dS )zInitialize the compiler.N)super__init__log)selfargskwargs	__class__r   r   r?   b   s   
zXCachingCompiler.__init__c                 C   s   t |S )zGet the code name.)r<   )rA   Zraw_coder:   numberr   r   r   get_code_nameg   s   zXCachingCompiler.get_code_name)__name__
__module____qualname____doc__r?   rG   __classcell__r   r   rD   r   r=   _   s    r=   )rK   r2   sysr0   ZIPython.core.compileropr   r!   r/   platformr)   Zctypes.wintypesr%   r&   r'   r(   ZwindllZkernel32ZGetLongPathNameWr*   argtypesrestyper.   __file__	Exceptionr6   r7   r<   r=   r   r   r   r   <module>   s0    '

	