
    F\h                        S SK Jr  S SKrS SKrS SKrS SKr SS jr	SS jr
SS jrSS jrSSS jjrSSS jjrSSS	 jjrSSS
 jjrg)    )annotationsNc                 P  ^ [        [        R                  S5      (       d  [        $ [        [        R                  S5      (       d  [        $ [        R                  R                  5       (       a#  [        R                  R                  5       (       d  [        $ [        R                  S:X  a  [        $ [        R                  R                  S5      =(       d    [        R                  R                  S5      mT(       aO  [        R                  S:X  a  SU4S jj$ [        R                  R                  S5      S;   a  SU4S	 jj$ SU4S
 jj$ [        R                  R                  S5      S;   a  [        $ [        R                  S:X  a  SS j$ [        [        S5      (       a  [        R                  " S5      S:X  a  SS j$ [        [        S5      (       a  [        R                  " S5      S:X  a  SS j$ SSKn U R                  5       u  p[        R                  " U5         [        [        S5      (       a8  [        R                  " SU-  5      S:X  a  SS j[        R                  " U5        $ [        [        R                  " U5        $ ! [        R                  " U5        f = f)z2Decide what method to use for paging through text.isatty
emscriptenMANPAGERPAGERwin32c                .   > [        [        U 5      T5      $ Ntempfile_pagerplaintexttitle	use_pagers     $/usr/lib/python3.13/_pyrepl/pager.py<lambda>get_pager.<locals>.<lambda>   s    .ti*P    TERM)dumbemacsc                0   > [        [        U 5      TU5      $ r   )
pipe_pagerr   r   s     r   r   r       s    *U4[)U*Sr   c                   > [        U TU5      $ r   r   r   s     r   r   r   "   s    *T9e*Lr   c                ,    [        [        U 5      S5      $ )Nzmore <r   r   r   s     r   r   r   &   s    nU4[(&Kr   systemz(pager) 2>/dev/nullr   c                    [        U SU5      $ )Npagerr   r   s     r   r   r   (   s    jw&Fr   z(less) 2>/dev/nullc                    [        U SU5      $ )Nlessr   r   s     r   r   r   *   s    jvu&Er   Nz	more "%s"c                    [        U SU5      $ )Nmorer   r   s     r   r   r   1   s    *T65*Ir    )hasattrsysstdinplain_pagerstdoutr   platformosenvirongetr    tempfilemkstempcloseunlink	tty_pager)r2   fdfilenamer   s      @r   	get_pagerr9      s   399h''3::x((99SZZ%6%6%8%8
|||#

z*EbjjnnW.EI<<7"PPZZ^^F#'88SSLL	zz~~f!22
||wKKr8+@!AQ!FFFr8+?!@A!EEE%%'NRHHRL2x  RYY{X/E%F!%KI 			( 
		(		(s   $6J 1J J%c                    [        [        R                  SS 5      =(       d    SnU R                  US5      R	                  U5      $ )Nencodingzutf-8backslashreplace)getattrr*   r-   encodedecode)r   r;   s     r   escape_stdoutr@   8   s6    szz:t4?H;;x!34;;HEEr   c                2    [         R                  " SSU 5      $ )Nz
([?:.%\\])z\\\1resub)ss    r   escape_lessrF   >   s    66-!,,r   c                2    [         R                  " SSU 5      $ )z%Remove boldface formatting from text.z.r(   rB   )r   s    r   r   r   B   s    66%T""r   c           	        [        [        U 5      5      R                  S5      nSn SSKnSSKn[
        R                  R                  5       nUR                  U5      nUR                  U5        SnSS jn  [        [        R                   R#                  SS5      5      n	U	S	::  a  S
n	U	S	-
  =p[
        R&                  R)                  SR+                  USU 5      S-   5        X*S (       a  [
        R&                  R)                  S5        [
        R&                  R-                  5         U" 5       nUS;   a   [
        R&                  R)                  S5        OUS;   a.  [
        R&                  R)                  SX*   -   S-   5        U
S	-   n
M  US;   a  X-
  U-
  n
U
S:  a  Sn
[
        R&                  R)                  SSR+                  X*X-    5      -   S-   5        X-   n
X*S (       a  M  U(       a  WR/                  WUR0                  W5        gg! [        [        [        R                  4 a	    SS jn GNf = f! [$         a    Sn	 GNf = f! U(       a  WR/                  WUR0                  W5        f f = f)z%Page through text on a text terminal.
Fr   NTc                 @    [         R                  R                  S5      $ )N   )r*   r+   read r   r   getchartty_pager.<locals>.getcharS   s    99>>!$$r   c                 J    [         R                  R                  5       S S S S $ )NrK   )r*   r+   readlinerM   r   r   rN   rO   W   s#    99%%',Ra00r   LINESrK      z
-- more --)qQz          )rI   )bB)returnstr)r   r@   splitttytermiosr*   r+   fileno	tcgetattr	setcbreakImportErrorAttributeErrorioUnsupportedOperationintr/   r0   r1   
ValueErrorr-   writejoinflush	tcsetattr	TCSAFLUSH)r   r   lineshas_ttyr^   r_   r7   oldrN   hrinccs                r   r6   r6   G   s    -%&,,T2EG1YY#b	%:	BJJNN7A./A 6Aa%

5#;/$67BiJJ\*JJ	AJ

  !12l"

  !1EH!<t!CDE&&GcMq5a!JJTDIIeaen$==DEA! Bii& b'"3"3S9 A )@)@A 1	11  	A	2 b'"3"3S9 s=   AH 8)H7 !EI
 $H43H47II
 II
 
'I1c                f    [         R                  R                  [        [	        U 5      5      5        g)z>Simply print unformatted text.  This is the ultimate fallback.N)r*   r-   ri   r   r@   r   s     r   r,   r,   z   s    JJU=./0r   c                    SSK n[        R                  R                  5       nU(       a  US-  n[	        U5      nSU 3S-   nSR                  U5      US'   UR                  USUR                  SUS	9nUR                  c   e UR                   n UR                  U 5        SSS5          UR                  5         g! [         a     N'f = f! , (       d  f       N1= f! [         a     N@f = f! [         a     Of = fMU  )
z3Page through text by feeding it to another program.r   N zU?ltline %lt?L/%L.:byte %bB?s/%s..?e (END):?pB %pB\%.. (press h for help or q to quit)z-RmPm{0}$PM{0}$LESSTr<   )shellr+   errorsenv)
subprocessr/   r0   copyrF   formatPopenPIPEr+   ri   KeyboardInterruptOSErrorwait)	r   cmdr   r|   r{   	esc_titleprompt_stringprocpipes	            r   r   r      s   
**//
CE"I
I;	+	+  $**=9CKCt:??#53  @D::!!!	ZZ4

4   	IIK %   Z   ! 	 		 s`   C CB="C ,C. =
C
C	C

C
CC C 
C+*C+.
C;:C;c           	        SSK nUR                  5        n[        R                  R	                  US5      n[        USS[        R                  S:X  a  [        R                  " S5      OSS9 nUR                  U 5        SSS5        [        R                  " US-   U-   S	-   5        SSS5        g! , (       d  f       N6= f! , (       d  f       g= f)
z<Page through text by invoking a program on a temporary file.r   Nz	pydoc.outwr<   r	   )rz   r;   z "")r2   TemporaryDirectoryr/   pathrj   openr*   r.   device_encodingri   r    )r   r   r   r2   tempdirr8   files          r   r   r      s    		$	$	&'77<<5(C(:,,') --a0/3 JJt	
 			#*x'#-. 
'	&  
'	&s$   AB?,B.>'B?.
B<	8B??
C)r[   Pager)r   r\   r[   r\   )rE   r\   r[   r\   r'   )r   r\   r   r\   r[   None)r   r\   r   r\   r   r\   r[   r   )
__future__r   re   r/   rC   r*   typingProtocolr   r9   r@   rF   r   r6   r,   r   r   rM   r   r   <module>r      sE    " 	 	 	 
 	$NF-#
0:f1
#L
/r   