
    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y)    )	lru_cache)escapeN)receiver)setting_changed)tokens)settingsc                   &    e Zd ZdZd Zed        Zy)ElideSelectListsFilterz_sqlparse filter to elide the select list from top-level SELECT ... FROM clauses,
    if presentc              #      K   d}|D ]R  \  }}||f |t         j                  v s|j                         }|r|dk(  r| j                  |      E d {    |dv }T y 7 w)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   sq     !' 	LJe##QYY&++- W%8#44V<<< '+K K	L
 =s   #A+AAAc              #   (  K   d}g }| D ]  \  }}|t         j                  v r<|j                         dk(  r)|s|E d {    nt         j                  df ||f  y |rW|t         j                  v r|dk(  rd}q|j                  ||f        y 7 Tw)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QYY&5;;=F+B +++ ''#999 %''.5C<"G ''U(;<'	= ,s   9BB#B 1BN)__name__
__module____qualname____doc__r   staticmethodr        r   r
   r
      s!    L = =r*   r
   c                       e Zd ZdZd Zy)BoldKeywordFilterz$sqlparse filter to bold SQL keywordsc                    d}|t        |j                        k  r||   }|j                  r|j                  |t        j
                  j                  t        j                  d             |j                  |dz   t        j
                  j                  t        j                  d      d       |dz  }n|j                  r| j                  |       |dz  }|t        |j                        k  ry y )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(:(:177J(OP!!!GLL&&qww<! " 
 qU#1HC C$$r*   N)r$   r%   r&   r'   r   r)   r*   r   r,   r,   4   s
    .r*   r,   c                     | 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   s8     {{qww--{{%++U++r*   c                        e Zd ZdZed        Zy)EscapedStringSerializerz`sqlparse post-processor to convert a Statement into a string escaped for
    inclusion in HTML .c                 N    dj                  d | j                         D              S )N c              3   2   K   | ]  }t        |        y w)N)r@   ).0r;   s     r   	<genexpr>z2EscapedStringSerializer.process.<locals>.<genexpr>V   s     H}U+Hs   )joinflatten)r9   s    r   r   zEscapedStringSerializer.processT   s    wwHHHHr*   N)r$   r%   r&   r'   r(   r   r)   r*   r   rB   rB   P   s     I Ir*   rB   F)with_togglec                \    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   sG    #I3.J5j\IK=i[PI{""r*      )maxsizerL   c                Z    t        |      }dj                  |j                  |             S )NrL   rD   )get_filter_stackrH   run)r5   rM   stacks      r   rN   rN   c   s#    h/E77599S>""r*   c                    t         j                  j                         }| r$|j                  j	                  t                      nat        j                         d   r|j                          |j                  j	                  t         j                  j                  dd             |j                  j	                  t                      |j                  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    OO'')E 6 89!!#N3!!#  00h'0J	
 
.01	467Lr*   c                 `    | dk(  r)t         j                          t        j                          y y )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 t        |      }|D ]H  }|D ]A  }t        d      D cg c]  }|||   z  ||   z    }}|j                  |        | |       C J |dz  }gc c}w w)	z
    Generate contrasting colors by varying most significant bit of RGB first,
    and then vary subsequent bits systematically.
    c                 2     dj                   t        |        S )Nz#{:02x}{:02x}{:02x})formattuple)rgbs    r   
rgb_to_hexz/contrasting_color_generator.<locals>.rgb_to_hex   s    +$++U3Z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   r   z#000000   r.   )listranger!   )	rs   triplesr]   so_farcopy_so_fartriplepreviousirr   s	            r   contrasting_color_generatorr}      s     9G 	A[F
6O6l 	&F' &<A!HEqq6!9}x{2EEc" o%&	&
 	
a  Fs   ;A>A9,A>)	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%= %=P (,I I &+ # 3$ # #
 4  
/' 'r*   