o
    >h)                     @   s   d dl mZ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 ZddddZeddddddZedd Zee	dd Zdd  ZdS )!    )cache	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/vedio/testing/chatpythonscript.ninositsolution.com/env/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   )r5   r   r   r   escaped_valueH   s   r9   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)r9   ).0r5   r   r   r   	<genexpr>V   s    z2EscapedStringSerializer.process.<locals>.<genexpr>)joinflatten)r3   r   r   r   r   T   s   zEscapedStringSerializer.processN)r"   r#   r$   r%   r&   r   r   r   r   r   r:   P   s    r:   c                 C   s   |   ddS )Nz (select)lowerlstrip
startswith)r/   r   r   r   is_select_queryY   s   rD   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/   rE   	formatted
simplifieduncollapsed	collapsedr   r   r   reformat_sql^   s   rM      )maxsizerF   c                C   s   t |d}d|| S )NrF   r;   )get_filter_stackr>   run)r/   rG   stackr   r   r   rH   h   s   
rH   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'   postprocessr:   )rG   rR   r   r   r   rP   n   s   
rP   c                 K   s    | dkrt   t  d S d S )NDEBUG_TOOLBAR_CONFIG)rH   cache_clearrP   )settingkwargsr   r   r   clear_caches~   s   rd   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(   rN   )r   r   r   Tr   z#000000c                    s    g | ]} |  |  qS r   r   )r<   irU   previoustripler   r   
<listcomp>   s     z/contrasting_color_generator.<locals>.<listcomp>   r(   )listranger   )rh   triplesso_farcopy_so_farrg   r   rj   r   contrasting_color_generator   s"   	

rt   )	functoolsr   r   htmlr   r.   django.dispatchr   django.test.signalsr   r   r   debug_toolbarr   rY   r	   r'   r9   r:   rD   rM   rH   rP   rd   rt   r   r   r   r   <module>   s(    (	


