o
    i;                     @   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   M/var/www/edux/Edux_v2/venv/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hrounded_endikvalr   r   r   murmur2_x86
   sB   
r"   c                 C   s   | S )Nr   )filenamer   r   r   <lambda>1   s    r$   win32)DWORDLPCWSTRLPWSTRMAX_PATHc                 C   s0   t t}t| |t}|dkr|tkr|j} | S )Nr   )ctypescreate_unicode_bufferr)   _GetLongPathNamevalue)r#   bufrvr   r   r   _convert_to_long_pathname<   s
   
r0   c                  C   s*   t t } t }| tj d t| S )zGet a temp directory.
ipykernel_)convert_to_long_pathnametempfile
gettempdirosgetpidsepr   )tmp_dirpidr   r   r   get_tmp_directoryK   s   r:   c                   C   s   dS )zGet a temp hash seed.l   i r   r   r   r   r   get_tmp_hash_seedR   s   r;   c                 C   s<   t jd}|du rt| t }t t j t| d }|S )zGet a file name.IPYKERNEL_CELL_NAMENz.py)r5   environgetr"   r;   r:   r7   r   )code	cell_namenamer   r   r   get_file_nameW   s
   rB   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   rE   c   s   
zXCachingCompiler.__init__c                 C   s   t |S )zGet the code name.)rB   )rG   raw_coder?   numberr   r   r   get_code_nameh   s   zXCachingCompiler.get_code_name)__name__
__module____qualname____doc__rE   rN   __classcell__r   r   rJ   r   rC   `   s    rC   )rR   r5   sysr3   IPython.core.compileropr   r"   r2   platformr*   ctypes.wintypesr&   r'   r(   r)   windllkernel32GetLongPathNameWr,   argtypesrestyper0   __file__	Exceptionr:   r;   rB   rC   r   r   r   r   <module>   s0    '

	