o
    i2                     @   s   d Z ddlZz
ddlZddlZW n ey   edw G dd dZG dd dZG dd	 d	ZG d
d dZG dd dZ	dd Z
eje e
  dS )z(gdb printing extension for Numba types.
    Nz$GDB python support is not available.c                   @      e Zd Zdd Zdd ZdS )NumbaArrayPrinterc                 C   
   || _ d S Nvalselfr    r
   m/var/www/html/eduruby.in/lip-sync/lip-sync-env/lib/python3.10/site-packages/numba/misc/gdb_print_extension.py__init__      
zNumbaArrayPrinter.__init__c           )   
   C   s  zdd l }d}W n ty   d}Y nw zBd}| jd }| jd }| jd }| jd }d}t| jj}	|rd|	v s>d	|	v r|	d
d }	td}
dd |
	|	
 D }|\}}}d}t	||}|
 \}}}|dk}|d}g }|D ]C}|d}|d }|dd  }t|dkrtd| |d }d|v rtd| |dd dd }||}|||f qx|}n$td}
dd |
	|	
 D }|\}}}d|v r|dd dd}dd }||}||}||krG|r@|dd |D }||} |||  }!|!t|7 }!|j||d }"|"}t }#|#t||!}$|j|$|d!}%|jjj|%||d"}&d#t|& W S d$||f W S td%g}'d&d'|' d( d) W S  tyn }( z
d*|( W  Y d }(~(S d }(~(ww )+Nr   TFdataitemsizeshapestridesZalignedZRecordz
unaligned  z%array\((Record.*), (.*), (.*)\)\ \(.*c                 S      g | ]}|  qS r
   strip.0xr
   r
   r   
<listcomp>8       z/NumbaArrayPrinter.to_string.<locals>.<listcomp>z(Record\((.*\[.*\]);([0-9]+);(True|False)True,[   zUnsupported sub-type: %sZnestedarray;=zarray\((.*),(.*),(.*)\)\ \(.*c                 S   r   r
   r   r   r
   r
   r   r   R   r   z	unichr x z<Uc                    s<    j  }|d j  \}}t fddt||d D S )Nr   c                    s   g | ]}t  | qS r
   )intr   dwarrr
   r   r   \   s    zGNumbaArrayPrinter.to_string.<locals>.dwarr2inttuple.<locals>.<listcomp>r   )typefieldsrangetuple)r$   r&   lohir
   r#   r   dwarr2inttupleX   s   
 z3NumbaArrayPrinter.to_string.<locals>.dwarr2inttuplec                 S   s   g | ]	}t d |d qS )r   r   )maxr   r
   r
   r   r   h   s    )align)dtype)r   r   
z array([...], dtype=%s, shape=%s)zNULL/Uninitializedzarray([, ])z%array[Exception: Failed to parse. %s])numpyImportErrorr   strr%   replacer   recompilematchgroupssplitlen	TypeErrorr.   appendarraysumr"   gdbselected_inferiorread_memoryZ
frombufferlibZstride_tricksZ
as_stridedlistjoin	Exception))r	   npZ
HAVE_NUMPYNULLr   r   ZrshpZrstridesZ
is_alignedZty_strZmatcherZarr_infoZ	dtype_strZndim_strZ	order_strZrstrZ
rstr_matchr&   ZbalignZis_aligned_strZ	field_dtsZstruct_entriesfZsplittednameZdt_partZ	dt_as_strr.   r+   r   r   Zshp_arrZstrd_arrZextentZdtype_clazz	this_procmemZarr_dataZnew_arrbufer
   r
   r   	to_string   s   














zNumbaArrayPrinter.to_stringN__name__
__module____qualname__r   rP   r
   r
   r
   r   r          r   c                   @   r   )NumbaComplexPrinterc                 C   r   r   r   r   r
   r
   r   r      r   zNumbaComplexPrinter.__init__c                 C   s   d| j d | j d f S )Nz%s+%sjrealimagr   )r	   r
   r
   r   rP      s   zNumbaComplexPrinter.to_stringNrQ   r
   r
   r
   r   rV      rU   rV   c                   @   r   )NumbaTuplePrinterc                 C   r   r   r   r   r
   r
   r   r      r   zNumbaTuplePrinter.__init__c                 C   s>   g }| j j }|D ]}|t| j |j  q
dd| S )N(%s)r0   )r   r%   r&   r>   r5   rK   rF   )r	   rN   r&   rJ   r
   r
   r   rP      s
   zNumbaTuplePrinter.to_stringNrQ   r
   r
   r
   r   rY      rU   rY   c                   @   r   )NumbaUniTuplePrinterc                 C   r   r   r   r   r
   r
   r   r      r   zNumbaUniTuplePrinter.__init__c                 C   sX   | j j }|d j \}}g }t||d D ]}|t| j |  qdd| S )Nr   r   rZ   r0   )r   r%   r&   r'   r>   r5   rF   )r	   r&   r)   r*   rN   ir
   r
   r   rP      s   zNumbaUniTuplePrinter.to_stringNrQ   r
   r
   r
   r   r[      rU   r[   c                   @   r   )NumbaUnicodeTypePrinterc                 C   r   r   r   r   r
   r
   r   r      r   z NumbaUnicodeTypePrinter.__init__c                 C   s   d}| j d }| j d }| j d }||kr;t }|t||| }t|tr2t| }d| S |d}d| S t	|}d| S )Nr   r   lengthkindzutf-8z'%s')
r   rA   rB   rC   r"   
isinstance
memoryviewbytesdecoder5   )r	   rI   r   Znitemsr_   rL   rM   rN   r
   r
   r   rP      s   




z!NumbaUnicodeTypePrinter.to_stringNrQ   r
   r
   r
   r   r]      rU   r]   c                  C   sd   t jd} | ddt | ddt | ddt | dd	t | d
dt | ddt | S )NZNumbazNumba unaligned array printerz^unaligned array\(zNumba array printerz^array\(zNumba complex printerz^complex[0-9]+\ zNumba Tuple printerz^Tuple\(zNumba UniTuple printerz^UniTuple\(zNumba unicode_type printerz^unicode_type\s+\()	rA   printingZRegexpCollectionPrettyPrinterZadd_printerr   rV   rY   r[   r]   )printerr
   r
   r   _create_printers   s$   rf   )__doc__r7   Zgdb.printingrA   r4   r   rV   rY   r[   r]   rf   rd   Zregister_pretty_printerZcurrent_objfiler
   r
   r
   r   <module>   s    s	