o
    g                     @   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   sX    d}|D ]$\}}||fV  |t jv r)| }|r%|dkr%| |E d H  |dv }qd S )NTSELECT)EXCEPT	INTERSECTUNION)TKeywordupperelide_until_from)selfstreamallow_elision
token_typevaluekeyword r   ^/var/www/html/bloggers_ems/venv/lib/python3.10/site-packages/debug_toolbar/panels/sql/utils.pyprocess   s   

zElideSelectListsFilter.processc                 c   s    d}g }| D ]:\}}|t jv r,| dkr,|s|E d H  nt jdfV  ||fV   d S |sA|t jv r:|dkr:d}q|||f qd S )NFFROMu    ••• .T)r   r   r   OtherPunctuationappend)r   has_dot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 rF|| }|jr1||tjtjd |j	|d tjtjddd |d7 }n|j
r9| | |d7 }|t |jk s	d S d S )Nr   z<strong>   z	</strong>F)skip_ws   )lenr   
is_keywordinsert_beforesqlparsesqlTokenr   r   insert_after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   )r4   r   r   r   escaped_valueH   s   r8   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)r8   ).0r4   r   r   r   	<genexpr>V   s    z2EscapedStringSerializer.process.<locals>.<genexpr>)joinflatten)r2   r   r   r   r   T   s   zEscapedStringSerializer.processN)r!   r"   r#   r$   r%   r   r   r   r   r   r9   P   s    r9   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.   r?   	formatted
simplifieduncollapsed	collapsedr   r   r   reformat_sqlY   s   rG      )maxsizer@   c                C   s   t |d}d|| S )Nr@   r:   )get_filter_stackr=   run)r.   rA   stackr   r   r   rB   c   s   
rB   c                 C   sj   t j }| r|jt  nt d r|  |j	t j
jddd |j	t  |jt  |S )NPRETTIFY_SQLz&nbsp;z<br/>)charn)r-   engineFilterStack
preprocessr   r   dt_settings
get_configenable_groupingstmtprocessfiltersAlignedIndentFilterr&   postprocessr9   )rA   rL   r   r   r   rJ   i   s   
rJ   c                 K   s    | dkrt   t  d S d S )NDEBUG_TOOLBAR_CONFIG)rB   cache_clearrJ   )settingkwargsr   r   r   clear_cachesy   s   r^   c                  #   s    dd } g d}d g dg}	  dkrdV  t |}|D ]|D ] fd	d
tdD }|| | |V  q"q dL  q)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'   rH   )r   r   r   Tr   z#000000c                    s    g | ]} |  |  qS r   r   )r;   irO   previoustripler   r   
<listcomp>   s     z/contrasting_color_generator.<locals>.<listcomp>   r'   )listranger   )rb   triplesso_farcopy_so_farra   r   rd   r   contrasting_color_generator   s"   	

rn   )	functoolsr   htmlr   r-   django.dispatchr   django.test.signalsr   r   r   debug_toolbarr   rS   r   r&   r8   r9   rG   rB   rJ   r^   rn   r   r   r   r   <module>   s&    (	


