o
    Ni                     @   s  d Z ddlZdedejfddZejdeded	ejd
ejfddZejdddejdedejd
ejfddZ	ejdddejdedejdejd
ejfddZ
ejdddejdedejdejdejd
ejf
ddZ	 ejdddejdedejd
ejfddZdS )a%  
Build a line table for CodeObjects, according to PEP-626 / Python 3.11.

See  https://github.com/python/cpython/blob/1054a755a3016f95fcd24b3ad20e8ed9048b7939/InternalDocs/locations.md
See  https://github.com/python/cpython/blob/1054a755a3016f95fcd24b3ad20e8ed9048b7939/Python/assemble.c#L192
    N	positionsfirstlinenoc                 C   s.   g }|}| D ]}t |||}qd|}	 |S )N )encode_single_positionjoin)r   r   table_byteslast_linenoposition_info	linetable r   M/home/ubuntu/.local/lib/python3.10/site-packages/Cython/Compiler/LineTable.pybuild_line_table   s   
	r   r   r	   r   returnc                 C   s   |\}}}}||ksJ | d| || }||krV|dkr9|dk r9d||   kr/dk r9n nt | || |S d|  krCdk rVn n|dk rV|dk rVt| ||| |S t| d t| |d>  t| ||  t| |d  t| |d  |S )	Nz >= r   P                  )encode_location_shortencode_location_onelineencode_location_startencode_varint)r   r	   r   start_lineno
end_linenostart_column
end_columnlast_lineno_deltar   r   r   r      s    ,(
r   F)checkcodec                 C   s   |  td|d> B  dS )Nr   r   r   appendchr)r   r    r   r   r   r   @   s   r   r   r   c                 C   s>   |d@ }|d? }|  d|d> B d|d> || B d dS )N   r   r   c   r   r"   )r   r   r   low_bitsr    r   r   r   r   I   s   *r   
line_deltac                 C   s0   d| }|  d|d> B d|d|d dS )N
   r   r   r%   r   r'   )r   r)   r   r   r    r   r   r   r   S   s   $r   valuec                 C   sT   |dks
|dks
J |dkr!|  td|d@ B  |dL }|dks|  t| dS )Nr   @   ?      r!   )r   r+   r   r   r   r   j   s   r   )__doc__cythonlistintr   cfunctupler   	exceptvalr   r   r   uintr   r   r   r   r   <module>   s$      $*"