
    	h                         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	efd
Zded	efdZe G d d                      ZdS )z4Helper functions for writing to terminals and files.    N)Optional)Sequence)TextIO   )wcswidth)finalreturnc                  F    t          j        d          \  } }| dk     rd} | S )N)P      )fallback(   r   )shutilget_terminal_size)width_s     g/var/www/html/web-builder-api.evdpl.com/venv/lib/python3.11/site-packages/_pytest/_io/terminalwriter.pyget_terminal_widthr      s.    ':::HE1 rzzL    filec                 d   t           j                            d          dk    rdS t           j                            d          dk    rdS dt           j        v rdS dt           j        v rdS t          | d          o6|                                 o"t           j                            d	          d
k    S )N	PY_COLORS1T0FNO_COLORFORCE_COLORisattyTERMdumb)osenvirongethasattrr   )r   s    r   should_do_markupr$      s    	z~~k""c))t	z~~k""c))uRZu
""thVDKKMMVbjnnV6L6LPV6Vr   c                      e Zd Z edAi 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dGd*ee         d+d)fd,Zed+e	fd-            Z
e
j        d.e	d+d)fd/            Z
ed+e	fd0            Zd1ed2ed+efd3Z	 	 dHd4ed5ee         d6ee	         d2ed+d)f
d7Zd8d9d:ed;ed2ed+d)fd<ZdId>ed2ed+d)fd?ZdJd@ZdKdBee         dCee         d+d)fdDZdEed+efdFZd)S )LTerminalWriterblack   red   green    yellow!   blue"   purple#   cyan$   white%   Blackr   Red)   Green*   Yellow+   Blue,   Purple-   Cyan.   White/   boldr   light   blink   invert   Nr   r	   c                 R   |t           j        }t          |d          rX|                                rDt           j        dk    r4	 dd l}|                    |          j        }|J n# t          $ r Y nw xY w|| _	        t          |          | _        d| _        d | _        d| _        d S )Nr   win32r    T)sysstdoutr#   r   platformcoloramaAnsiToWin32streamImportError_filer$   	hasmarkup_current_line_terminal_widthcode_highlight)selfr   rS   s      r   __init__zTerminalWriter.__init__A   s    <:D4"" 	(t{{}} 	(9P9P(  ++D118''''	    
 
)$//.2"s   A' '
A43A4c                 :    | j         | j         S t                      S N)rZ   r   r\   s    r   	fullwidthzTerminalWriter.fullwidthR   s     +''!###r   valuec                     || _         d S r_   )rZ   )r\   rb   s     r   ra   zTerminalWriter.fullwidthX   s    $r   c                 *    t          | j                  S )z;Return an estimate of the width so far in the current line.)r   rY   r`   s    r   width_of_current_linez$TerminalWriter.width_of_current_line\   s     *+++r   textmarkupc                      |D ]}| j         vrt          d|           j        rG fd|                                D             }|r%d                    d |D                       |z   dz   }|S )Nzunknown markup: c                 4    g | ]\  }}|j         |         S  )	_esctable).0nameonr\   s      r   
<listcomp>z)TerminalWriter.markup.<locals>.<listcomp>f   s)    MMMHD""M4>$'MMMr   rO   c              3       K   | ]	}d |z  V  
dS )z[%smNrj   )rl   cods     r   	<genexpr>z(TerminalWriter.markup.<locals>.<genexpr>h   s'      ??CzC/??????r   z[0m)rk   
ValueErrorrX   itemsjoin)r\   rf   rg   rm   escs   `    r   rg   zTerminalWriter.markupa   s     	> 	>D4>)) !<D!<!<=== *> 	SMMMMMMMC Sww??3?????$FRr   sepchartitlera   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 )NrN   r   rH    )ra   rP   rR   maxlenrstripline)r\   rw   rx   ra   rg   Nfillr~   s           r   sepzTerminalWriter.sepk   s     I <7""
 NI
 YU+a/QW5EFJJAQ;D++U++T++DD i3w<<78D t99s7>>++,,,	99GNN$$$D	$!!&!!!!!r   F)flushmsgr   c                   |r|                     dd          d         }d|v r|| _        n| xj        |z  c_         | j        |fi |}	 | j                            |           nR# t
          $ rE |                    d                              d          }| j                            |           Y nw xY w|r|                                  d S d S d S )N
r   zunicode-escapeascii)	rsplitrY   rg   rW   writeUnicodeEncodeErrorencodedecoder   )r\   r   r   rg   current_lines        r   r   zTerminalWriter.write   s	    	::dA..r2Ls{{%1""""l2""$+c,,V,,C
&
  %%%%% & & & jj!12299'BB
  %%%%%&  

-	 	* s   
A% %AB43B4rO   sc                 L     | j         |fi | |                      d           d S )Nr   )r   )r\   r   rg   s      r   r~   zTerminalWriter.line   s4    
1

4r   c                 8    | j                                          d S r_   )rW   r   r`   s    r   r   zTerminalWriter.flush   s    
r   rj   linesindentsc                    |r]t          |          t          |          k    r=t          d                    t          |          t          |                              |sdgt          |          z  }d                    |          }|                     |                                          }t          ||          D ]\  }}|                     ||z              dS )aI  Write lines of source code possibly highlighted.

        Keeping this private for now because the API is clunky. We should discuss how
        to evolve the terminal writer so we can have more precise color support, for example
        being able to write part of a line in one color and the rest in another, and so on.
        z5indents size ({}) should have same size as lines ({})rO   r   N)r|   rs   formatru   
_highlight
splitlineszipr~   )r\   r   r   source	new_linesindentnew_lines          r   _write_sourcezTerminalWriter._write_source   s      	s7||s5zz11GNNLL#e**   
  	(dSZZ'G5!!OOF++6688	 #GY 7 7 	) 	)FHIIfx'((((	) 	)r   r   c           
         ddl m} | j        r| j        s|S 	 ddlm} ddlm} ddlm	} ddl
}	  || |             |t          j        dd          t          j        d	          
                    }|S # |j        j        $ r1  |d                    t          j        d	                              |j        j        $ r1  |d                    t          j        d                              w xY w# t"          $ r |cY S w xY w)z:Highlight the given source code if we have markup support.r   )
UsageError)TerminalFormatter)PythonLexer)	highlightNPYTEST_THEME_MODEdarkPYTEST_THEME)bgstylezdPYTEST_THEME environment variable had an invalid value: '{}'. Only valid pygment styles are allowed.zrPYTEST_THEME_MODE environment variable had an invalid value: '{}'. The only allowed values are 'dark' and 'light'.)_pytest.config.exceptionsr   rX   r[   pygments.formatters.terminalr   pygments.lexers.pythonr   pygmentsr   pygments.utilr    getenvutilClassNotFoundr   OptionErrorrV   )r\   r   r   r   r   r   r   highlighteds           r   r   zTerminalWriter._highlight   s   888888~ 	T%8 	M	FFFFFF::::::******    #,9KMM%%9%8&AA i77  $ $ #"=.    j==CV	.11> >   =,    jFFLf	"566G G  )  	 	 	MMM	s   C7 AA6 6A>C47DDr_   )NN)rO   )r	   N)rj   )__name__
__module____qualname__dictrk   r   r   r]   propertyintra   setterre   strboolrg   r   r   r~   r   r   r   r   rj   r   r   r&   r&   (   s          bB b r	
 R r R b b B b r R r R  b!" Q#$ a%& a'( q)I.# #Xf- # # # # #" $3 $ $ $ X$
 %s %t % % % % ,s , , , X,3 $ 3      $#'	#" #"#" }#" C=	#"
 #" 
#" #" #" #"J 05          2 c $ 4       ) )8C= )8C= )RV ) ) ) )(% % % % % % % %r   r&   )__doc__r    r   rP   typingr   r   r   wcwidthr   _pytest.compatr   r   r   r   r$   r&   rj   r   r   <module>r      s   : : 				  



                                    C    6 d     @ @ @ @ @ @ @ @ @ @r   