
    Dgz9                        d Z ddlZddlZddlZddlZej        d         dk    Zej        dk    Zddlm	Z	m
Z
 dZdZej        dk    r$	 ddlZn# e$ r 	 ddlZdZn# e$ r Y nw xY wY nw xY wd	 Zd
 Z e            ZdddddddZd Zd,dZd Z G d de          Z G d de          Z G d de          ZereZddlZddlm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(d!Z)ej*        Z+ G d" d#ej,                  Z- G d$ d%ej,                  Z. G d& d'ej,                  Z/ej0        j1        j2        Z3ej4        ge3_5        ej6        e3_7        d( Z2ej0        j1        j8        Z8ej6        ej9        ge8_5        ej:        e8_7        ej0        j1        j;        Z<ej6         ej=        e/          ge<_5        ej:        e<_7        d) Z>d* Zd+ Z?dS )-z8

Helper functions for writing to terminals and files.

    N   )r   r   )textbytesFwin32Tc                      t           r&dd l} |                                 }|j        |j        fS dd l}dd l}dd l}|                    d|j	        d          }|
                    d|          d d         \  }}||fS )Nr      z        hhhh   )py33shutilget_terminal_sizelinescolumnstermiosfcntlstructioctl
TIOCGWINSZunpack)r   sizer   r   r   callheightwidths           J/var/www/sysmax/venv/lib/python3.11/site-packages/py/_io/terminalwriter.py_getdimensionsr      s     ''))z4<''%%%%%%%%%%%%{{1g0*==fd33BQB7u}    c                      d} 	 t                      \  }} n# t          j        j        $ r   Y nxY w| dk    r-t	          t
          j                            dd                    } | dk     rd} | S )Nr   COLUMNSP   (   )r   pybuiltin_sysexintosenvironget)r   _s     r   get_terminal_widthr)   '   s    E!##55:   zz BJNN9b1122 rzzLs    .r   r
   )AFHNNaWc                 ^    t          j        d|           } t          d | D                       S )NNFCc              3   p   K   | ]1}t                               t          j        |          d           V  2dS )r   N)
char_widthr'   unicodedataeast_asian_width).0cs     r   	<genexpr>z!get_line_width.<locals>.<genexpr>J   s;      PPaz~~k:1==qAAPPPPPPr   )r4   	normalizesum)r   s    r   get_line_widthr;   H   s1     --DPP4PPPPPPr   c           
         |t           j        } | j                    } |rt          |t                    s|f}|rIt           j        dk    r9|                                r%d                    d |D                       | z   dz   } |r| dz  } |rt          r|                                rld|v rd}t	          d |D                       }nd	}t          t          t          t          t          z  t          t          t          z  t          t          z  t          t          d
	}|                    |t                    }|r
|t          z  }d}d}	|t           j        u rt          |	          }
nt          |          }
t!          |
          j        }||dz  z  }t%          |
|           t'          |           dk    r:|                    | d d                    | dd          } t'          |           dk    :| r|                    |            t%          |
|           n|                    |            |r|                                 d S d S )Nr    c                     g | ]}d |z  S z[%sm r6   cods     r   
<listcomp>zansi_print.<locals>.<listcomp>U   s    999cc)999r   [0m
r   Tc                     g | ]
}|d k    |S )r   r@   )r6   xs     r   rC   zansi_print.<locals>.<listcomp>^   s    222q166666r   F)	r@   )   )    )!   )"   )#   )$   )%   )'      i   )sysstderrrstrip
isinstancetupleplatformisattyjoinwin32_and_ctypesFOREGROUND_WHITEFOREGROUND_REDFOREGROUND_GREENFOREGROUND_BLUEr'   FOREGROUND_INTENSITYGetStdHandleGetConsoleInfowAttributesSetConsoleTextAttributelenwriteflush)r   escfilenewlinerg   boldesctableattrSTD_OUTPUT_HANDLESTD_ERROR_HANDLEhandle	oldcolorss               r   
ansi_printrr   N   sd   |z4;==D
 :c5)) f
 s|w&&4;;==&99S999::  
 # #DKKMM #88D22C22233CCD+)++N:**>9*+;;++	 	 ||C!122 	)((D3:!"233FF!"344F"6**6	U"#---$ii%JJtFUF|$$$<D $ii%  	JJt	2222

4 

 r   c                    t           j                            d          dk    rdS t           j                            d          dk    rdS dt           j        v rdS t          | d          of|                                 oRt           j                            d          d	k    o/t
          j                            d
          ot           j        dk     S )N	PY_COLORS1T0FNO_COLORrY   TERMdumbjavant)	r%   r&   r'   hasattrrY   rS   rX   
startswith_name)ri   s    r   should_do_markupr      s    	z~~k""c))t	z~~k""c))uRZu4"" Jt{{}} Jz~~f%%/JL++F33HD8HIJr   c                   0   e Zd Z ed9i ddddddddd	d
dddddddddddddddddddddd d!d"d#d$d%d&d'd(Zd:d+Zed,             Zej        d-             Zed.             Z	ed/             Z
d0 Zd1 Zd;d2Zd3 Zd4 Zd<d6Zd7 Zd8 Zd)S )=TerminalWriterblack   redrH   greenrI   yellowrJ   bluerK   purplerL   cyanrM   whiterN   Blackr    Red)   Green*   Yellow+   Blue,   Purple-   Cyan.   White/   rk   r   lightr
   blink   invert   NFc                     |/|r&t           j                                        x| _        }nWddlm} nPt           j                            |          r1t          |d          rt          |d          st          ||          }t          |d          r4|
                                r t          rt          j        |          j        }|pt          |dd          | _        || _        t#          |          | _        d| _        d| _        d| _        d S )	Nr   )stdoutrf   rg   )encodingrY   r   utf-8)r!   ioTextIOstringiorS   r   r"   callabler|   	WriteFilerY   coloramaAnsiToWin32streamgetattrr   _filer   	hasmarkup_lastlen_chars_on_current_line_width_of_current_line)selfri   r   r   s       r   __init__zTerminalWriter.__init__   s   < /')u||~~5.......Z  && 	6T7##	6(/g(>(>	6TH555D4"" 	5t{{}} 	5 	5'--4D FGD*g$F$F
)$//&'#&'###r   c                 L    t          | d          r| j        S t                      S )N_terminal_width)r|   r   r)   r   s    r   	fullwidthzTerminalWriter.fullwidth   s*    4*++ 	(''!###r   c                     || _         d S N)r   )r   values     r   r   zTerminalWriter.fullwidth   s    $r   c                     | j         S )zReturn the number of characters written so far in the current line.

        Please note that this count does not produce correct results after a reline() call,
        see #164.

        .. versionadded:: 1.5.0

        :rtype: int
        )r   r   s    r   chars_on_current_linez$TerminalWriter.chars_on_current_line   s     **r   c                     | j         S )zzReturn an estimate of the width so far in the current line.

        .. versionadded:: 1.6.0

        :rtype: int
        )r   r   s    r   width_of_current_linez$TerminalWriter.width_of_current_line   s     **r   c                 b    |r,| j         r%d                    d |D                       |z   dz   }|S )Nr=   c                     g | ]}d |z  S r?   r@   rA   s     r   rC   z+TerminalWriter._escaped.<locals>.<listcomp>   s    ===#Z#-===r   rD   )r   rZ   )r   r   rh   s      r   _escapedzTerminalWriter._escaped   sH     	!4> 	!GG=====>> Dr   c                     g }|D ]E}|| j         vrt          d|          ||         r |                    | j         |                    F|                     |t	          |                    S )Nzunknown markup: )	_esctable
ValueErrorappendr   rW   )r   r   kwrh   names        r   markupzTerminalWriter.markup   sx     	1 	1D4>)) j!>???$x 1

4>$/000}}T5::...r   c                    || j         }t          j        dk    r|dz  }|Ft          |t	          |          z
  dz
  dt	          |          z  z  d          }||z  }|d|d|}n||t	          |          z  z  }t	          |          t	          |                                          z   |k    r||                                z  } | j        |fi | d S )Nr   r   r
    )r   rS   rX   maxre   rU   line)r   sepchartitler   r   r-   fillr   s           r   sepzTerminalWriter.sep   s    I <7""
 NI
 YU+a/Qs7||^DaHHAQ;D!%uuudd3DD i3w<<78D t99s7>>++,,,	99GNN$$$D	$"r   c                     |rqt          |t          t          f          st          |          }|                     |           | j        r|r | j        |fi |}n|}t          | j        |           d S d S r   )rV   r   r   _update_chars_on_current_liner   r   	write_outr   )r   msgr   	markupmsgs       r   rf   zTerminalWriter.write   s     
	-cE4=11  3ii..s333~  "  'DK22r22			dj),,,,,
	- 
	-r   c                    t          |t                    rdnd}|                    |d          d         }t          |t                    r|                    dd          }||v r*t	          |          | _        t          |          | _        d S | xj        t	          |          z  c_        | xj        t          |          z  c_        d S )N   
rE   r   r   replace)errors)rV   r   rsplitdecodere   r   r;   r   )r   text_or_bytesrj   current_lines       r   r   z,TerminalWriter._update_chars_on_current_line  s    %mU;;E%%$++GQ77;lE** 	J'..wy.IILm##*-l*;*;D'*8*F*FD'''''3|+<+<<''''>,+G+GG''''r   r=   c                 v     | j         |fi | |                     |           |                      d           d S )NrE   )rf   
_checkfill)r   sr   s      r   r   zTerminalWriter.line  sF    
1

4r   c                     | j         st          d           | j        |fi | |                     |           |                     d           t	          |          | _        d S )Nz(cannot use rewrite-line without terminal)r   r   rf   r   re   r   )r   r   r   s      r   relinezTerminalWriter.reline  sk    ~ 	IGHHH
42

4D		r   c                 t    | j         t          |          z
  }|dk    r|                     d|z             d S d S )Nr   r   )r   re   rf   )r   r   	diff2lasts      r   r   zTerminalWriter._checkfill  s@    MCII-	q==JJsY''''' =r   r@   )NFN)NN)r=   )__name__
__module____qualname__dictr   r   propertyr   setterr   r   r   r   r   rf   r   r   r   r   r@   r   r   r   r      s        9 9 922 922 9RR 9 9"9%'R9.0b98:929#%29-/R98:9 "9 &(R9 /1b9 9;9 !	9 $%1	9 -.A	9 78a	9I( ( ( ($ $ $ X$
 % % % 
+ 
+ X
+ + + X+  / / /   >- - -
H 
H 
H   
" " "( ( ( ( (r   r   c                       e Zd Zd ZdS )Win32ConsoleWriterc                    |rgt          |t          t          f          st          |          }|                     |           d }| j        r|rt          t                    }t          |          j        }|dz  }|}|	                    dd          r
|t          z  }|	                    dd          r|t          z  }ns|	                    dd          r|t          z  }nR|	                    dd          r|t          z  }n1|	                    dd          r|t          t          z  z  }n||dz  z  }t          ||           t          | j        |           |rt          ||           d S d S d S )	NrR   rk   Fr   r   r   r   r   )rV   r   r   r   r   ra   rn   rb   rc   popr`   r]   r_   r^   rd   r   r   )r   r   r   rq   rp   
default_bgrm   s          r   rf   zWin32ConsoleWriter.write#  s    	;cE4=11  3ii..s333I~ 6" 6%&788*622>	&/
!66&%(( 100D66%'' 	/N*DDVVFE** /O+DDVVGU++ /,,DDVVHe,, /,^;;DDI..D'555dj#&&& ;'	:::::;	; 	;8; ;r   N)r   r   r   rf   r@   r   r   r   r   "  s#        ; ; ; ; ;r   r   c                   "    e Zd ZddZd Zd ZdS )r   Nc                 "    || _         || _        d S r   )r   _writemethod)r   writemethodr   s      r   r   zWriteFile.__init__D  s     'r   c                 t    | j         r|                    | j         d          }|                     |           d S )Nr   )r   encoder   )r   datas     r   rf   zWriteFile.writeH  s;    = 	9;;t}i88D$r   c                     d S r   r@   r   s    r   rg   zWriteFile.flushM  s    r   r   )r   r   r   r   rf   rg   r@   r   r   r   r   C  sF        ( ( ( (     
    r   r   )wintypesrP   rQ      r         rI   @   p      c                       e Zd ZdefdefgZdS )COORDXYNr   r   r   SHORT_fields_r@   r   r   r  r  g  s#        %L%L"r   r  c                   *    e Zd ZdefdefdefdefgZdS )
SMALL_RECTLeftTopRightBottomNr  r@   r   r   r  r  j  s3        UOENe$u%'r   r  c                   :    e Zd Zdefdefdej        fdefdefgZdS )CONSOLE_SCREEN_BUFFER_INFOdwSizedwCursorPositionrc   srWindowdwMaximumWindowSizeN)r   r   r   r  r   WORDr  r  r@   r   r   r  r  o  s?        u%'/"HM2,*E2	4r   r  c                      t          |           S r   )_GetStdHandle)kinds    r   ra   ra   y  s    T"""r   c                 f    t                      }t          | t          j        |                     |S r   )r  _GetConsoleScreenBufferInfoctypesbyrefrp   infos     r   rb   rb     s,    )++#FFL,>,>???r   c                  ~    t          t                    } t          |           }|j        j        |j        j        dz
  fS )Nr   )ra   rn   rb   r  r  r  r  s     r   r   r     s7    /00f%% {}dkma///r   c                    	 |                      |           n# t          $ r | j        rU	 |                      |                    | j                             |                                  Y d S # t          $ r Y nw xY w|                    d                              d          }|                      |           Y nw xY w|                                  d S )Nzunicode-escapeascii)rf   UnicodeEncodeErrorr   r   rg   r   )filr   s     r   r   r     s     			#   < 			#**S\22333
 		 &    jj)**11'::		# IIKKKKKs3    B>-A.B>.
A;8B>:A;;A B>=B>)NTF)@__doc__rS   r%   r4   r!   version_infopy3kr   
py.builtinr   r   r[   r   rX   ImportErrorr  r   r)   terminal_widthr3   r;   rr   r   objectr   r   r   r   rn   ro   FOREGROUND_BLACKr_   r^   r]   r\   r`   BACKGROUND_BLACKBACKGROUND_BLUEBACKGROUND_GREENBACKGROUND_REDBACKGROUND_WHITEBACKGROUND_INTENSITYc_shortr  	Structurer  r  r  windllkernel32ra   r  DWORDargtypesHANDLErestyperd   r  BOOLGetConsoleScreenBufferInfor  POINTERrb   r   r@   r   r   <module>r;     s                				
a
6! " " " " " " " " <7   	MMM# 	 	 	D			 	 	  * $#%% 
	
	
	

	
 
Q Q Q3 3 3 3j	J 	J 	JR( R( R( R( R(V R( R( R(h; ; ; ; ; ; ; ;B         >0'NMMM !!O!!N!!!!O!!N!!NE" " " " "  " " "' ' ' ' 'V% ' ' '
4 4 4 4 4V%5 4 4 4 M*7M&n-M$OM# # # %m4L(0'G$&.m# 	9  ,4O ./I J J,L(*2-'  
0 0 0    s6   A A'AA'A!A' A!!A'&A'