a
    Ig                     @   s   d dl mZ d dlmZ d dlZd dlmZ d dlmZ d dlm	Z
 d dlmZ G dd	 d	ZG d
d dZdd ZG dd dZddddZeddddddZedddd Zeedd Zdd ZdS )    )	lru_cache)escapeN)receiver)setting_changed)tokens)settingsc                   @   s$   e Zd ZdZdd Zedd ZdS )ElideSelectListsFilterz_sqlparse filter to elide the select list from top-level SELECT ... FROM clauses,
    if presentc                 c   sV   d}|D ]H\}}||fV  |t jv r| }|rH|dkrH| |E d H  |dv }qd S )NTZSELECT)ZEXCEPTZ	INTERSECTZUNION)TKeywordupperelide_until_from)selfstreamZallow_elision
token_typevaluekeyword r   Z/var/www/html/django/DPS/env/lib/python3.9/site-packages/debug_toolbar/panels/sql/utils.pyprocess   s    

zElideSelectListsFilter.processc                 c   s   d}g }| D ]r\}}|t jv rT| dkrT|s:|E d H  nt jdfV  ||fV   q|s|t jv rp|dkrpd}q|||f qd S )NFZFROMu    ••• .T)r	   r
   r   OtherPunctuationappend)r   Zhas_dotZsaved_tokensr   r   r   r   r   r      s    
z'ElideSelectListsFilter.elide_until_fromN)__name__
__module____qualname____doc__r   staticmethodr   r   r   r   r   r      s   
r   c                   @   s   e Zd ZdZdd ZdS )BoldKeywordFilterz$sqlparse filter to bold SQL keywordsc                 C   s   d}|t |jk r||| }|jrb||tjtjd |j	|d tjtjddd |d7 }n|j
rr| | |d7 }qd S )Nr   z<strong>   z	</strong>F)Zskip_ws   )lenr   Z
is_keywordZinsert_beforesqlparsesqlTokenr	   r   Zinsert_afterZis_groupr   )r   stmtidxtokenr   r   r   r   7   s    

zBoldKeywordFilter.processN)r   r   r   r   r   r   r   r   r   r   4   s   r   c                 C   s&   | j tjtjfv r| jS t| jddS )NF)quote)ttyper	   r   
Whitespacer   r   )r'   r   r   r   escaped_valueH   s    r+   c                   @   s   e Zd ZdZedd ZdS )EscapedStringSerializerz`sqlparse post-processor to convert a Statement into a string escaped for
    inclusion in HTML .c                 C   s   d dd |  D S )N c                 s   s   | ]}t |V  qd S )N)r+   ).0r'   r   r   r   	<genexpr>V       z2EscapedStringSerializer.process.<locals>.<genexpr>)joinflatten)r%   r   r   r   r   T   s    zEscapedStringSerializer.processN)r   r   r   r   r   r   r   r   r   r   r,   P   s   r,   F)with_togglec                C   s<   t | }|s|S t | dd}d| d}d| d}|| S )NTsimplifyz!<span class="djDebugUncollapsed">z</span>z+<span class="djDebugCollapsed djdt-hidden">)	parse_sql)r#   r3   	formattedZ
simplifiedZuncollapsed	collapsedr   r   r   reformat_sqlY   s    r9      )maxsizer4   c                C   s   t |d}d|| S )Nr4   r-   )get_filter_stackr1   run)r#   r5   stackr   r   r   r6   c   s    
r6   c                 C   sj   t j }| r|jt  n,t d r2|  |j	t j
jddd |j	t  |jt  |S )NZPRETTIFY_SQLz&nbsp;z<br/>)charn)r"   ZengineZFilterStack
preprocessr   r   dt_settingsZ
get_configZenable_groupingZstmtprocessfiltersZAlignedIndentFilterr   postprocessr,   )r5   r>   r   r   r   r<   i   s    
r<   c                 K   s   | dkrt   t  d S )NZDEBUG_TOOLBAR_CONFIG)r6   cache_clearr<   )Zsettingkwargsr   r   r   clear_cachesy   s    rG   c                  #   s   dd } g d}d g dg} dkr,dV  t |}|D ]<|D ]2 fdd	td
D }|| | |V  q@q8 dL  qdS )z
    Generate contrasting colors by varying most significant bit of RGB first,
    and then vary subsequent bits systematically.
    c                 S   s   dj t|  S )Nz#{:02x}{:02x}{:02x})formattuple)rgbr   r   r   
rgb_to_hex   s    z/contrasting_color_generator.<locals>.rgb_to_hex))r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   r:   )r   r   r   r   z#000000c                    s    g | ]} |  |  qS r   r   )r.   ir@   previousZtripler   r   
<listcomp>   r0   z/contrasting_color_generator.<locals>.<listcomp>   r   N)listranger   )rK   ZtriplesZso_farZcopy_so_farrJ   r   rM   r   contrasting_color_generator   s    	

rS   )	functoolsr   htmlr   r"   Zdjango.dispatchr   Zdjango.test.signalsr   r   r	   Zdebug_toolbarr   rB   r   r   r+   r,   r9   r6   r<   rG   rS   r   r   r   r   <module>   s$   (	


