
    7 f                     >   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	          Z G d
 d          Zd Z G d d          ZdddZ ed          ddd            Z ed          d             Z ee          d             Zd ZdS )    )	lru_cache)escapeN)receiver)setting_changed)tokens)settingsc                   .    e Zd ZdZd Zed             ZdS )ElideSelectListsFilterz_sqlparse filter to elide the select list from top-level SELECT ... FROM clauses,
    if presentc              #      K   d}|D ]T\  }}||fV  |t           j        v r;|                                }|r!|dk    r|                     |          E d {V  |dv }Ud S )NTSELECT)EXCEPT	INTERSECTUNION)TKeywordupperelide_until_from)selfstreamallow_elision
token_typevaluekeywords         T/var/www/equiseq/venv/lib/python3.11/site-packages/debug_toolbar/panels/sql/utils.pyprocesszElideSelectListsFilter.process   s      !' 	L 	LJe####QY&&++--  =W%8%8#44V<<<<<<<<< '+K K	L 	L    c              #     K   d}g }| D ]\  }}|t           j        v r<|                                dk    r$|s	|E d {V  nt           j        dfV  ||fV   d S |s.|t           j        v r	|dk    rd}h|                    ||f           d S )NFFROMu    ••• .T)r   r   r   OtherPunctuationappend)r   has_dotsaved_tokensr   r   s        r   r   z'ElideSelectListsFilter.elide_until_from   s      !' 	= 	=JQY&&5;;==F+B+B  :+++++++++ '#99999 %'''' =..5C<<"GG ''U(;<<<'	= 	=r   N)__name__
__module____qualname____doc__r   staticmethodr    r   r   r
   r
      sK         L L L = = \= = =r   r
   c                       e Zd ZdZd ZdS )BoldKeywordFilterz$sqlparse filter to bold SQL keywordsc                    d}|t          |j                  k     r||         }|j        r|                    |t          j                            t          j        d                     |	                    |dz   t          j                            t          j        d          d           |dz  }n|j
        r|                     |           |dz  }|t          |j                  k     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tokens       r   r   zBoldKeywordFilter.process7   s    C$$$$IE 	$""3(:(:17J(O(OPPP!!!GL&&qw<<! "   
 q $U###1HC C$$$$$$$$r   N)r%   r&   r'   r(   r   r*   r   r   r,   r,   4   s)        ..    r   r,   c                 z    | j         t          j        t          j        fv r| j        S t          | j        d          S )NF)quote)ttyper   r    
Whitespacer   r   )r;   s    r   escaped_valuer@   H   s7     {qw---{%+U++++r   c                   (    e Zd ZdZed             ZdS )EscapedStringSerializerz`sqlparse post-processor to convert a Statement into a string escaped for
    inclusion in HTML .c                 d    d                     d |                                 D                       S )N c              3   4   K   | ]}t          |          V  d S )N)r@   ).0r;   s     r   	<genexpr>z2EscapedStringSerializer.process.<locals>.<genexpr>V   s*      HH}U++HHHHHHr   )joinflatten)r9   s    r   r   zEscapedStringSerializer.processT   s+    wwHHHHHHHHr   N)r%   r&   r'   r(   r)   r   r*   r   r   rB   rB   P   s>          I I \I I Ir   rB   F)with_togglec                l    t          |           }|s|S t          | d          }d| d}d| d}||z   S )NTsimplifyz!<span class="djDebugUncollapsed">z</span>z+<span class="djDebugCollapsed djdt-hidden">)	parse_sql)r5   rJ   	formatted
simplifieduncollapsed	collapseds         r   reformat_sqlrS   Y   sX    #I 3...JIjIIIKPiPPPI{""r      )maxsizerL   c                r    t          |          }d                    |                    |                     S )NrL   rD   )get_filter_stackrH   run)r5   rM   stacks      r   rN   rN   c   s.    h///E77599S>>"""r   c                    t           j                                        }| r'|j                            t                                 nft          j                    d         r|                                 |j	                            t           j
                            dd                     |j	                            t                                 |j                            t                                 |S )NPRETTIFY_SQLz&nbsp;z<br/>)charn)r4   engineFilterStack
preprocessr"   r
   dt_settings
get_configenable_groupingstmtprocessfiltersAlignedIndentFilterr,   postprocessrB   )rM   rY   s     r   rW   rW   i   s    O''))E 
 6 8 89999!##N3 	$!!###  00h'0JJ	
 	
 	
 
.00111	466777Lr   c                 z    | dk    r4t                                            t                                           d S d S )NDEBUG_TOOLBAR_CONFIG)rN   cache_clearrW   )settingkwargss     r   clear_cachesrm   y   s@    ((($$&&&&& )(r   c               #      K   d } g d}dg dg}	 dk    rdV  t          |          }|D ]F|D ]Afdt          d	          D             }|                    |            | |          V  BGd
z  h)z
    Generate contrasting colors by varying most significant bit of RGB first,
    and then vary subsequent bits systematically.
    c                 0     dj         t          |            S )Nz#{:02x}{:02x}{:02x})formattuple)rgbs    r   
rgb_to_hexz/contrasting_color_generator.<locals>.rgb_to_hex   s    +$+U3ZZ88r   ))r.   r   r   )r   r.   r   )r   r   r.   )r.   r.   r   )r   r.   r.   )r.   r   r.   )r.   r.   r.   rT   )r   r   r   Tr   z#000000c                 8    g | ]}|         z  |         z   S r*   r*   )rF   ir]   previoustriples     r   
<listcomp>z/contrasting_color_generator.<locals>.<listcomp>   s*    EEEqq6!9}x{2EEEr      r.   )listranger"   )rs   triplesso_farcopy_so_farrr   r]   rv   rw   s        @@@r   contrasting_color_generatorr      s      9 9 9  G 	Aii[F	66OOO6ll 	& 	&F' & &EEEEEEE!HHEEEc""" joo%%%%& 	
a	r   )	functoolsr   htmlr   r4   django.dispatchr   django.test.signalsr   r   r   debug_toolbarr   ra   r
   r,   r@   rB   rS   rN   rW   rm   r   r*   r   r   <module>r      s                $ $ $ $ $ $ / / / / / /             1 1 1 1 1 1%= %= %= %= %= %= %= %=P       (, , ,I I I I I I I I &+ # # # # # 3$ # # # # #
 4   
/' ' '    r   