
    @OOf4                        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 d d
l	m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 ededed   defd       Zededed   defd       Zdededeez  fdZ G d dej6                        Z G d de j:                        Z G d dej6                        Z G d dej@                        Z! G d  d!ejD                        Z#d"Z$ G d# d$ej6                        Z% G d% d&e%      Z& G d' d(ej6                  ejN                        Z(y))    N)Callable)	Container)Iterable)MutableSequence)Sequence)Any)ClassVar)Literal)overload)
exceptions)layoutwidget)signals)strutilsfilenameescapedTreturnc                      y N r   r   s     h/var/www/premiumrankchecker/venv/lib/python3.12/site-packages/mitmproxy/tools/console/grideditor/base.py	read_filer      s    ?B    Fc                      y r   r   r   s     r   r   r      s    >Ar   c                 t   t         j                  j                  |       } 	 t        | |rdnd      5 }|j	                         }d d d        |r	 t        j                        }|S S # 1 sw Y   %xY w# t
        $ r}t        j                  |      d }~ww xY w# t        $ r t        j                  d      w xY w)Nrrbz%Invalid Python-style string encoding.)ospath
expanduseropenreadOSErrorr   CommandErrorr   escaped_str_to_bytes
ValueError)r   r   fdvs        r   r   r      s    ww!!(+H)(7C5 	A	 	S--a0A H1H	 	 )%%a(()
  	S))*QRR	Ss:   A2 A&A2 B &A/+A2 2	B;BBB7c                       e Zd Zd Zd Zy)Cellc                     t               )zT
        Raises:
            ValueError, if the current content is invalid.
        NotImplementedErrorselfs    r   get_datazCell.get_data/   s    
 "##r   c                      yNTr   r/   s    r   
selectablezCell.selectable6       r   N)__name__
__module____qualname__r1   r4   r   r   r   r+   r+   .   s    $r   r+   c                       e Zd ZU dZej
                  ed<   d Zej                  de
fd       Zej                  de
fd       Zej                  defd       Zded	d
dedz  fdZy)ColumnN	subeditorc                     || _         y r   heading)r0   r>   s     r   __init__zColumn.__init__=   s	    r   r   c                      y r   r   r0   datas     r   DisplayzColumn.Display@       r   c                      y r   r   rA   s     r   EditzColumn.EditD   rD   r   c                      y r   r   r/   s    r   blankzColumn.blankH   rD   r   keyeditor
GridEditorc                     |S r   r   )r0   rI   rJ   s      r   keypresszColumn.keypressL   s    
r   )r6   r7   r8   r;   urwidrF   __annotations__r?   abcabstractmethodr+   rC   r   rH   strrM   r   r   r   r:   r:   :   s     Iuzz  	t   	D   	s  C  #* r   r:   )	metaclassc                   \     e Zd Zdedz  dedddeee   ee   f   ddf
 fdZ	d	 Z
d
 Z xZS )GridRowfocusedNeditingrJ   rK   valuesr   c                 T   || _         || _        d | _        |d   }g | _        t	        |d         D ]  \  }}||k(  rU|rS| j                  j
                  |   j                  |      | _        | j                  j                  | j                         `| j                  j
                  |   j                  |      }||k(  r2||v rt        j                  |d      }n1t        j                  |d      }n||v rt        j                  |d      }| j                  j                  |        | j                  d d  }	t        | j                        dkD  r"d| j                  j                  dz   |	d   f|	d<   t        j                  |	d      }||j                  |       t        
| A  |       y )	N   r   focusfield_error
focusfieldfield_errorfixed   dividechars)rV   rJ   edit_colfields	enumeratecolumnsrF   appendrC   rN   AttrWraplenfirst_widthColumnsset_focus_columnsuperr?   )r0   rV   rW   rJ   rX   errorsir)   wfspecs	__class__s             r   r?   zGridRow.__init__Q   sq    %)%'fQi( 	&DAq!| $ 3 3A 6 ; ;A >""4==1KK''*2215a<F{!NN1.@A!NN1l;&[q-8A""1%	& Qt{{a $++"9"9A"=vayIF1IMM&a0w'r   c                     | j                   rE| j                  j                  |      | j                     }| j                   j	                  |f|      }|S r   )rb   _wcolumn_widthsrV   rM   )r0   skro   s       r   rM   zGridRow.keypressu   sC    ==%%a(6A&&tQ/Ar   c                      yr3   r   r/   s    r   r4   zGridRow.selectable{   r5   r   )r6   r7   r8   intbooltupler   bytesr   r?   rM   r4   __classcell__rq   s   @r   rU   rU   P   sY    "t" " 	"
 huoy~56" 
"Hr   rU   c                        e Zd ZdZdee   ddddfdZ fdZd	 Zd
 Z	ddZ
ddZd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z xZS )
GridWalkerz
    Stores rows as a list of (rows, errors) tuples, where rows is a list
    and errors is a set with an entry of each offset in rows that is an
    error.
    lstrJ   rK   r   Nc                     |D cg c]  }|t               f c}| _        || _        d| _        d| _        d | _        y c c}w Nr   )setr   rJ   focus	focus_coledit_row)r0   r   rJ   rn   s       r   r?   zGridWalker.__init__   s<    JM5NQq#%j5N
(,	 6Os   =c                 T    | j                   j                          t        |          S r   )rJ   show_empty_msgrl   	_modified)r0   rq   s    r   r   zGridWalker._modified   s!    ""$w ""r   c                 t    | j                   j                  |d d  t               f       | j                          y r   )r   rf   r   r   )r0   r   s     r   	add_valuezGridWalker.add_value   s&    Q(r   c                 n    | j                   r)| j                   | j                     d   | j                     S y r   )r   r   r   r/   s    r   get_current_valuezGridWalker.get_current_value   s/    8888DJJ'*4>>:: r   c                    | j                   | j                     d   }| j                  j                  | j                  |      }|r<t
        j                  j                  |       |j                  | j                         n|j                  | j                         | j                  || j                  | j                  |       y )NrZ   )message)r   r   rJ   is_errorr   r   status_messagesendadddiscard	set_value)r0   valrm   emsgs       r   set_current_valuezGridWalker.set_current_value   s    $**%a({{##DNNC8""'''5JJt~~&NN4>>*sDJJ?r   c                     |s
t               }t        | j                  |   d         }|||<   t        |      |g| j                  |<   | j	                          y r   )r   listr   rz   r   )r0   r   r   r   rm   rows         r   r   zGridWalker.set_value   sL    UF488E?1%&I :v.r   c                     | j                   rY| j                   | j                  = t        t        | j                         dz
  | j                        | _        | j	                          y y NrZ   )r   r   minrh   r   r/   s    r   delete_focuszGridWalker.delete_focus   sG    88$S]Q.

;DJNN r   c                 
   || _         | j                  j                  | j                   | j                  j                  D cg c]  }|j                          c}t               f       d| _        | j                          y c c}w r   )	r   r   insertrJ   re   rH   r   r   
start_edit)r0   poscs      r   _insertzGridWalker._insert   sX    


9L9L%MAaggi%Msu$UV &Ns    B 
c                 8    | j                  | j                        S r   )r   r   r/   s    r   r   zGridWalker.insert   s    ||DJJ''r   c                 x    | j                  t        | j                  dz   t        | j                                    S r   )r   r   r   rh   r   r/   s    r   r   zGridWalker.add   s(    ||C

QDHH>??r   c                    | j                   j                  | j                     }| j                  r\|j                  sOt        | j                  d| j                   | j                  | j                           | _        | j                          y y y r3   )	rJ   re   r   r   r;   rU   r   r   r   )r0   cols     r   r   zGridWalker.start_edit   sd    kk!!$..188CMM#dkk488DJJ3GDM NN	 *8r   c                     | j                   rU| j                   j                  r>	 | j                   j                  j                         }d | _         | j	                  |       y y y # t        $ r Y y w xY wr   )r   rb   r1   r&   r   )r0   r   s     r   	stop_editzGridWalker.stop_edit   sd    ==T]]33mm,,557 !DM""3' 4=  s   $A# #	A/.A/c                 `    t        | j                  dz
  d      | _        | j                          y NrZ   r   )maxr   r   r/   s    r   leftzGridWalker.left   s#    T^^a/3r   c                     t        | j                  dz   t        | j                  j                        dz
        | _        | j                          y r   )r   r   rh   rJ   re   r   r/   s    r   rightzGridWalker.right   s7    T^^a/T[[5H5H1IA1MNr   c                 P   | j                          | j                  t        | j                  j                        dz
  k  r| xj                  dz  c_        nA| j
                  t        | j                        dz
  k7  rd| _        | xj
                  dz  c_        | j                          y r   )r   r   rh   rJ   re   r   r   r   r/   s    r   tab_nextzGridWalker.tab_next   sq    >>C 3 34q88NNaNZZ3txx=1,,DNJJ!OJr   c                     | j                   r| j                   | j                  fS | j                  rEt        | j                  d| j
                  | j                  | j                           | j                  fS y)NFNN)r   r   r   rU   r   rJ   r/   s    r   	get_focuszGridWalker.get_focus   s\    ====$**,,XXt{{DHHTZZ<PQ

 
 r   c                 R    | j                          || _        | j                          y r   )r   r   r   )r0   r   s     r   	set_focuszGridWalker.set_focus   s    
r   c                     |dz   t        | j                        k\  ryt        d d| j                  | j                  |dz            |dz   fS )NrZ   r   F)rh   r   rU   rJ   r0   r   s     r   get_nextzGridWalker.get_next   sD    7c$((m#tUDKK#'1BCS1WLLr   c                 n    |dz
  dk  ryt        d d| j                  | j                  |dz
           |dz
  fS )NrZ   r   r   F)rU   rJ   r   r   s     r   get_prevzGridWalker.get_prev   s;    7Q;tUDKK#'1BCS1WLLr   r   Nr   )r6   r7   r8   __doc__r   r   r?   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r|   r}   s   @r   r   r      s    -HTN -L -T -#;@(@(	
M
Mr   r   c                        e Zd Z fdZ xZS )GridListBoxc                 $    t         |   |       y r   )rl   r?   )r0   lwrq   s     r   r?   zGridListBox.__init__   s    r   )r6   r7   r8   r?   r|   r}   s   @r   r   r      s     r   r   (   c                        e Zd ZU dZeed<   dZee   ed<   dddede	d	   d
df fdZ
d Zd Zd Zd Zdee   d
efdZded
ee   fdZdeded
edz  fdZd Zd Zd Zd Zd Zd Zd Z xZS )BaseGridEditor title
grideditorkeyctxmaster,mitmproxy.tools.console.master.ConsoleMastervaluecallback.Nr   Nc                    | j                  t        j                  |            }|| _        || _        || _        || _        || _        || _        || _	        d}|r?|D ]:  }	t        |	      t        | j
                        k(  sJ t        t        |	      |      }< t        |t              | _        d }
t        d | j
                  D              rg }t!        | j
                        D ]j  \  }}t#        j$                  |j&                        }|dk(  r0t        | j
                        dkD  r|j)                  d|dz   |f       Z|j)                  |       l t#        j*                  |d      }
t#        j,                  |
d      }
t/        | j                  |       | _        t3        | j0                        | _        t#        j6                  | j4                  |
	      }t8        | u  |       | j=                          y )
N   c              3   4   K   | ]  }|j                     y wr   r=   ).0r   s     r   	<genexpr>z*BaseGridEditor.__init__.<locals>.<genexpr>!  s     3ss{{3s   r   rZ   r^   r_   r`   r>   )header)data_incopydeepcopyr   r   re   r   r   cb_args	cb_kwargsrh   r   r   FIRST_WIDTH_MAXri   anyrd   rN   Textr>   rf   rj   rg   r   walkerr   lbFramerl   r?   r   )r0   r   r   re   r   r   r   r   ri   r   hheadingsrn   r   r   ro   rq   s                   r   r?   zBaseGridEditor.__init__  s    T]]512

 " 71vT\\!2222!#a&+67 {O<3dll33H#DLL1 '3JJs{{+6c$,,/!3OOWkAoq$ABOOA&' hA6Aq),A T2dkk*KK*r   c                 (   g }| j                   j                  D ]9  }|d   r	t        |d   D cg c]  }| c}      s&|j                  |d          ;  | j                  | j                  |      g| j                  i | j                   y c c}w r   )r   r   r   rf   r   data_outr   r   )r0   resrn   xs       r   layout_poppingzBaseGridEditor.layout_popping3  s{     	!AQ4CAaD 1q 12

1Q4 	! 	dmmC(J4<<J4>>J !2s   	B
c                     | j                   j                  r| j                  j                  d        y | j                  j                  t	        j
                  g d             y )N))	highlightz'No values - you should add some. Press )rI   ?)r   z
 for help.)r   r   rs   
set_footerrN   r   r/   s    r   r   zBaseGridEditor.show_empty_msg:  sB    ;;??GGt$GG

r   c                 >    | j                   j                  |||       y r   )r   r   )r0   r   r   r   s       r   set_subeditor_valuez"BaseGridEditor.set_subeditor_valueH  s    c5)4r   c                 $   | j                   j                  r|dk(  r| j                   j                          y |dk(  r| j                   j                  | j                   j                  }}| j                   j                          | j                   j                  |k(  r3| j                   j                  |k7  r| j                   j                          y | j                  j                  ||       y | j                  | j                   j                     }|dk(  r| j                   j                  d       y |dk(  r| j                   j                          y |dk(  r<| j                   j                  t        | j                   j                        dz
         y |dk(  r| j                   j                          y |d	k(  r| j                   j                          y |j                  ||       r.| j                  |      s| j                  j                  ||      S y y )
Nesctabm_startr   m_nextm_endrZ   r   r   )r   r   r   r   r   r   r   rs   rM   re   r   rh   r   r   r   
handle_key)r0   sizerI   pfpfccolumns         r   rM   zBaseGridEditor.keypressK  s   ;;e|%%'  ++++T[[-B-BC$$&;;$$*t{{/D/D/KKK**,    s+dkk334)KK!!!$H_KK  "G^KK!!#dkkoo"6":;F]KKG^KK__S$'0D77##D#.. 1E'r   rB   c                     |S )z`
        Called on raw list data, before data is returned through the
        callback.
        r   rA   s     r   r   zBaseGridEditor.data_outf  s	    
 r   c                     |S )z2
        Called to prepare provided data.
        r   rA   s     r   r   zBaseGridEditor.data_inm  s	     r   r   r   c                      y)z9
        Return None, or a string error message.
        Nr   )r0   r   r   s      r   r   zBaseGridEditor.is_errors  s     r   c                      yNFr   )r0   rI   s     r   r   zBaseGridEditor.handle_keyy  s    r   c                 8    | j                   j                          y r   )r   r   r/   s    r   cmd_addzBaseGridEditor.cmd_add|  s    r   c                 8    | j                   j                          y r   )r   r   r/   s    r   
cmd_insertzBaseGridEditor.cmd_insert  s    r   c                 8    | j                   j                          y r   )r   r   r/   s    r   
cmd_deletezBaseGridEditor.cmd_delete  s      "r   c                 N    | j                   j                  t        |d             y r   r   r   r   r0   r   s     r   cmd_read_filezBaseGridEditor.cmd_read_file  s    %%ie&<=r   c                 N    | j                   j                  t        |d             y r3   r  r  s     r   cmd_read_file_escapedz$BaseGridEditor.cmd_read_file_escaped  s    %%id&;<r   c                     | j                   j                         }|L| j                  j                  |      }t	        j
                  |      }| j                   j                  |       y y r   )r   r   r   spawn_editorr   clean_hanging_newliner   )r0   ons      r   cmd_spawn_editorzBaseGridEditor.cmd_spawn_editor  sT    KK))+=((+A..q1AKK))!, r   )r6   r7   r8   r   rR   rO   r   r	   r   r   r?   r   r   r   rM   r   r   r   r   r   rx   r   r   r   r  r  r  r	  r  r|   r}   s   @r   r   r     s    E3O(FHSM(+>+
 + 9%+ 
+ZK5/6Xd^  C HTN C c cDj #>=-r   r   c                   d     e Zd ZU dZdZee   ed<   dZe	e
   ed<   ddded	ed
   ddf fdZ xZS )rK   r   r   re   r   r   r   r   r   r   r   r   Nc                 \    t        |   || j                  | j                  ||g|i | y r   )rl   r?   r   re   )r0   r   r   r   r   r   rq   s         r   r?   zGridEditor.__init__  s5     	DJJeX	
@G	
KT	
r   )r6   r7   r8   r   re   r   r:   rO   r   r	   rR   r   r   r?   r|   r}   s   @r   rK   rK     sZ    E "GXf"(FHSM(

>

 

 9%	

 


 

r   rK   c                   X    e Zd ZU dZdZee   ed<   d Zd Z	d Z
d Zdd	Zd
 Zd Zd Zy)FocusEditorzG
    A specialised GridEditor that edits the current focused flow.
    r   r   c                     || _         y r   )r   )r0   r   s     r   r?   zFocusEditor.__init__  s	    r   c                 4    t        ||d       }|r	 ||i | y y r   )getattr)r0   r)   nameargskwargsr'   s         r   callzFocusEditor.call  s%    AtT"tv r   c                     t         )zB
        Retrieve the data to edit from the current flow.
        r-   )r0   flows     r   r1   zFocusEditor.get_data  
     "!r   c                     t         )z3
        Set the current data on the flow.
        r-   r0   valsr  s      r   set_datazFocusEditor.set_data  r  r   Nc                 h    | j                  ||       t        j                  j                  |       y )N)r  )r!  r   flow_changer   r  s      r   set_data_updatezFocusEditor.set_data_update  s'    dD!  d +r   c                     | j                   S r   )rs   r/   s    r   key_responderzFocusEditor.key_responder  s    wwr   c                 <    | j                  | j                  d       y )Nr   )r  rs   r/   s    r   r   zFocusEditor.layout_popping  s    		$''+,r   c                    | j                   j                  j                  j                  rt	        | j                   | j
                  | j                  | j                  | j                   j                  j                  j                        | j                  | j                   j                  j                  j                        | _	        y t        j                  g       | _	        y r   )r   viewr   r  r   r   re   r1   r$  rs   rN   Pile)r0   prevs     r   layout_pushedzFocusEditor.layout_pushed  s    ;;!!&&$

dkk..4499:$$  &&++DG jjnDGr   r   )r6   r7   r8   r   r   r	   rR   rO   r?   r  r1   r!  r$  r&  r   r,  r   r   r   r  r    s?     )FHSM(
"",-%r   r  ))rP   r   r   collections.abcr   r   r   r   r   typingr   r	   r
   r   rN   mitmproxy.tools.console.master	mitmproxyr   mitmproxy.tools.consoler   r   mitmproxy.utilsr   rR   r{   r   ry   
WidgetWrapr+   ABCMetar:   rU   
ListWalkerr   ListBoxr   r   r   rK   LayoutWidgetr  r   r   r   <module>r8     s=   
  	 $ % $ + $      %   0 + $ 
 B Bgdm B B 
 B 
 A Agen A A 
 A d us{ 	5 	s{{ ,,e ,^xM!! xMv%-- 
 N-U%% N-b
 
$0%%""L$=$= 0%r   