
    wdf%                     6   d Z ddlZddl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
 ddlmZ dd	lmZ dd
lmZ ddlmZ  e            Z ej        d          Z ee          ZdZdZd ZefdZ G d de          Z e            Zd Z G d de          ZdS )a  
    werkzeug.debug.repr
    ~~~~~~~~~~~~~~~~~~~

    This module implements object representations for debugging purposes.
    Unlike the default repr these reprs expose a lot more information and
    produce HTML instead of ASCII.

    Together with the CSS and JavaScript files of the debugger this gives
    a colorful and more compact output.

    :copyright: 2007 Pallets
    :license: BSD-3-Clause
    N)deque)format_exception_only   )integer_types)	iteritems)PY2)string_types)	text_type)escapez(?:\r\n|\r|\n){2,}zL<div class=box>
  <h3>%(title)s</h3>
  <pre class=help>%(text)s</pre>
</div>zQ<div class=box>
  <h3>%(title)s</h3>
  %(repr)s
  <table>%(items)s</table>
</div>c                 D    t                                          |           S )z9Creates a debug repr of an object as HTML unicode string.)DebugReprGeneratorrepr)objs    X/var/www/book.euthymeo.com/html/venv/lib/python3.11/site-packages/werkzeug/debug/repr.py
debug_reprr   2   s    $$S)))    c                     t                      }| t          u r-|                    t          j        d          j                  }n|                    |           }t          j                            |           dS )zdPrint the object details to stdout._write (for the interactive
    console of the web debugger.
       N)	r   missingdump_localssys	_getframef_localsdump_objectstdout_write)r   genrvs      r   dumpr   7   se     

C
g~~__S]1--677__S!!Jbr   c                        e Zd ZdZd ZddZdS )_HelperzDisplays an HTML version of the normal help, for the interactive
    debugger only because it requires a patched sys.stdout.
    c                     dS )Nz(Type help(object) for help about object. selfs    r   __repr__z_Helper.__repr__H   s    99r   Nc                 >   |1t           j                            dt          |           z             d S dd l}|                    |           t           j                                        }t          |t                    r|	                    dd          }t                              |          }t          |          dk    r&|d         }d                    |dd                    }n
d}|d         }t           j                            t          ||dz             d S )	Nz<span class=help>%s</span>r   utf-8ignorer   z

Help)titletext)r   r   r   r   pydochelpreset
isinstancebytesdecode_paragraph_resplitlenjoin	HELP_HTML)r%   topicr-   r   
paragraphsr+   r,   s          r   __call__z_Helper.__call__K   s    =J:T$ZZGHHHF

5Zb%   	.7H--B"((,,
z??QqME;;z!""~..DDEa=D
)t&D&DDEEEEEr   N)__name__
__module____qualname____doc__r&   r:   r#   r   r   r!   r!   C   sG         : : :F F F F F Fr   r!   c                     t          |t                    r|D ]}t          |          |u r| c S nt          |          |u r| S d}|j        j        dvrd|j        j        z  }||j        j        d| dS )N )__builtin__
exceptionsz<span class="module">%s.</span>())r0   tupletype	__class__r=   r<   )innerr   basemodules       r   _add_subclass_inforL   b   s    $  	 	DCyyD   !	 
cd		F
}'DDD2S]5MM!7!7!7??r   c                       e Zd Zd Z e            dfdZ edde          Z edde          Z	 edd	e
          Z ed
d	e          Z edd	e          Z[d ZddZddZd Zd Zd Zd Zd Zd ZddZdS )r   c                     g | _         d S r;   )_stackr$   s    r   __init__zDebugReprGenerator.__init__p   s    r      c                       fd}|S )Nc                    |rt          dz   
z   |          S g}d}t          |          D ]a\  }}|r|                    d           |	k    r|                    d           d}|                    |                     |                     b|r|                    d           |                    
           t          d                    |          |          S )Nz...F, <span class="extended">T</span>rA   )rL   	enumerateappendr   r6   )r%   r   	recursivebufhave_extended_sectionidxitemrJ   leftlimitrights          r   proxyz6DebugReprGenerator._sequence_repr_maker.<locals>.proxyt   s     K)$,*>TJJJ&C$)!&s^^ , ,	T %JJt$$$%<<JJ8999,0)

499T??++++$ &

9%%%JJu%chhsmmS$???r   r#   )r^   r`   rJ   r_   ra   s   ```` r   _sequence_repr_makerz'DebugReprGenerator._sequence_repr_makers   s=    	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@" r   []rD   rE   zset([z])zfrozenset([z/<span class="module">collections.</span>deque([c                     t          |j                  }t          r|                    dd          }nt	          j        |dd          }|d d         dk    rd|dd          z   }nd|z   }d|z  S )	Nzstring-escaper)   zunicode-escaper   uurrz0re.compile(<span class="string regex">%s</span>))r   patternr   r2   codecs)r%   r   ri   s      r   
regex_reprzDebugReprGenerator.regex_repr   s~    s{## 	Inn_h??GGmG-=xHHG2A2;#WQRR[(GGGmGBWLLr   F   c           	         dg}t          |          }t          |          |z
  dk    rD|                    t          |d |                   dt          ||d                    df           n"|                    t          |                     |                    d           d                    |          }|d         dv s|d         dv r'|d	         dv rt          ||t          t          f          S |S )
Nz<span class="string">r   rU   rV   rA   r   z'"ubr   )	r   r5   extendr   rX   r6   rL   r1   r
   )r%   r   r_   rZ   rh   outs         r   string_reprzDebugReprGenerator.string_repr   s    &'II q66E>AJJ1VeV9%%-1UVV9%%	    JJvayy!!!

9hhsmm Q45==QqTT\\ademm%c3	0BCCC 
r      c           	      "   |rt          d|t                    S dg}d}t          t          |                    D ]\  }\  }}|r|                    d           ||dz
  k    r|                    d           d}|                    d|                     |          d	|                     |          d
           |r|                    d           |                    d           t          d                    |          |t                    S )Nz{...}{FrT   r   rU   Tz%<span class="pair"><span class="key">z</span>: <span class="value">z</span></span>rV   }rA   )rL   dictrW   r   rX   r   r6   )	r%   drY   r_   rZ   r[   r\   keyvalues	            r   	dict_reprzDebugReprGenerator.dict_repr   s!    	9%h4888e %!*9Q<<!8!8 
	 
	C#u !

4   eai

4555(,%JJJ 99S>>>>499U#3#3#3#35   
 ! 	"JJy!!!

3!#((3--D999r   c                 ~    t          |          }t          r|                    dd          }dt          |          z  S )Nr(   replacez<span class="object">%s</span>)r   r   r2   r   )r%   r   rh   s      r   object_reprzDebugReprGenerator.object_repr   s9    II 	-),,A06!99<<r   c                    |t           u r
dt           z  S t          |t          t          t          f          rd|z  S t          |t
                    st          |t                    r|                     |          S t          |t                    r| 	                    |          S t          |t                    r|                     ||          S t          |t                    r|                     ||          S t          |t                    r|                     ||          S t          |t                     r|                     ||          S t          |t$                    r|                     ||          S t(          +t          |t(                    r|                     ||          S |                     |          S )Nz<span class="help">%r</span>z<span class="number">%r</span>)helperr0   r   floatcomplexr	   r1   rq   	RegexTyperk   list	list_reprrF   
tuple_reprsetset_repr	frozensetfrozenset_reprrv   rz   r   
deque_reprr}   )r%   r   rY   s      r   dispatch_reprz DebugReprGenerator.dispatch_repr   s   &==2V;;cM5':;; 	;4s::c<(( 	)JsE,B,B 	)##C(((c9%% 	(??3'''c4   	2>>#y111c5!! 	3??3	222c3 	1==i000c9%% 	7&&sI666c4   	2>>#y111C!7!7??3	222$$$r   c                    	 d                     t          t          j                    d d                    }n# t          $ r d}Y nw xY wt
          r|                    dd          }dt          |                                          z  S )NrA   r   ?r(   r)   z8<span class="brokenrepr">&lt;broken repr (%s)&gt;</span>)	r6   r   r   exc_info	Exceptionr   r2   r   strip)r%   infos     r   fallback_reprz DebugReprGenerator.fallback_repr   s    	770#,..!2DEFFDD 	 	 	DDD	 	2;;w11DNQWJJLLR
 R
 
 	
s   58 AAc                 v   d}| j         D ]
}||u rd} n| j                             |           	 	 |                     ||          | j                                          S # t          $ r0 |                                 cY | j                                          S w xY w# | j                                          w xY w)NFT)rO   rX   r   popr   r   )r%   r   rY   r]   s       r   r   zDebugReprGenerator.repr   s    	K 	 	Ds{{ 	  	3	,))#y99 KOO  , , ,))++++KOO, KOOs#   A   B>B BB B8c           
      V   d x}}t          |t                    r\d}g }t          |          D ]H\  }}t          |t                    sd } n+|                    ||                     |          f           I|tg }|                     |          }t          |          D ]K}	 |                    ||                     t          ||                    f           <# t          $ r Y Hw xY wd}|dt          
                    |          dd         z   z  }|                     |||          S )NzContents ofzDetails for r   )r0   rv   r   r	   rX   r   dirgetattrr   objectr&   render_object_dump)r%   r   r   itemsr+   rx   ry   s          r   r   zDebugReprGenerator.dump_object  sG   uc4   	6!EE'nn 6 6
U!#|44  EEc499U#3#345555=E99S>>D3xx  LL#tyyc1B1B'C'C!DEEEE    D!Evs++AbD111&&ueT:::s   !8C
C'&C'c                 p      fd|                                 D             }                     |d          S )Nc                 D    g | ]\  }}|                     |          fS r#   )r   ).0rx   ry   r%   s      r   
<listcomp>z2DebugReprGenerator.dump_locals.<locals>.<listcomp>  s.    EEEZS%#tyy''(EEEr   zLocal variables in frame)r   r   )r%   rw   r   s   `  r   r   zDebugReprGenerator.dump_locals  s;    EEEE17799EEE&&u.HIIIr   Nc                     g }|D ].\  }}|                     dt          |          d|d           /|s|                     d           t          t          |          |rd|z  ndd                    |          dz  S )	Nz<tr><th>z<td><pre class=repr>z</pre>z<tr><td><em>Nothing</em>z<pre class=repr>%s</pre>rA   
)r+   r   r   )rX   r   OBJECT_DUMP_HTMLr6   )r%   r   r+   r   
html_itemsrx   ry   s          r   r   z%DebugReprGenerator.render_object_dump  s    
 	 	JC<B3KKKKO     	:8999E]]9=E.552YYz**#
 #
 
 	
r   )rl   )rr   r;   )r<   r=   r>   rP   r   rb   r   r   rF   r   r   r   r   r   r   r   rk   rq   rz   r}   r   r   r   r   r   r   r#   r   r   r   r   o   s_          06vxxq    ( %$S#t44I%%c366J##GT377H))-yIIN%%<dE J 	
M 
M 
M   6: : : :*= = =% % %.	
 	
 	
  ; ; ;,J J J
 
 
 
 
 
r   r   )r?   rj   rer   collectionsr   	tracebackr   _compatr   r   r   r	   r
   utilsr   r   r   compiler3   rG   r   r7   r   r   r   r!   r   rL   r   r#   r   r   <module>r      s     				 



       + + + + + + # # # # # #             " " " " " "             &((
011D		 * * *
  	 	 	 	F F F F Ff F F F8 

@ 
@ 
@z
 z
 z
 z
 z
 z
 z
 z
 z
 z
r   