
    8Cf                         d dl mZmZ d dlmZ d dlmZmZ d dlm	Z	m
Z
 d dlmZ d dlmZ d dlmZ  G d d	e      Z G d
 de      Z G d de      Zy)    )ABCabstractmethod)get_terminal_size)indentwrap)DictOptional)__version__)is_atty)loggerc                       e Zd ZdZdee   dedeeef   deeef   ddf
dZed	        Z	e
dee   dedeeef   deeef   ddf
d
       Zy)MOTDz5Base class for the Message of the Day (MOTD) display.logoserve_locationdataextrareturnNc                 X    || _         || _        || _        || _        d| _        d| _        y )Nr   )r   r   r   r   	key_widthvalue_width)selfr   r   r   r   s        V/var/www/highfloat_scraper/venv/lib/python3.12/site-packages/sanic/application/motd.py__init__zMOTD.__init__   s0     	,	
    c                      y)zDisplay the MOTD.N )r   s    r   displayzMOTD.display   s    r   c                 b    t               rt        nt        } |||||      j                          y)zOutput the MOTD.

        Args:
            logo (Optional[str]): Logo to display.
            serve_location (str): Location to serve.
            data (Dict[str, str]): Data to display.
            extra (Dict[str, str]): Extra data to display.
        N)r   MOTDTTY	MOTDBasicr   )clsr   r   r   r   
motd_classs         r   outputzMOTD.output    s&      !(	Wy
4u5==?r   )__name__
__module____qualname____doc__r	   strr   r   r   r   classmethodr#   r   r   r   r   r      s    ?sm  38n	
 CH~ 
     @sm@ @ 38n	@
 CH~@ 
@ @r   r   c                       e Zd ZdZd Zy)r    zbA basic MOTD display.

    This is used when the terminal does not support ANSI escape codes.
    c                    | j                   rt        j                  | j                          dt         g}| j                  r|j                  d| j                          |g d | j                  j                         D        d | j                  j                         D        z  }|D ]  }t        j                  |        y )NzSanic vzGoin' Fast @ c              3   0   K   | ]  \  }}| d |   yw: Nr   .0keyvalues      r   	<genexpr>z$MOTDBasic.display.<locals>.<genexpr>A   s     DJCRwD   c              3   0   K   | ]  \  }}| d |   ywr-   r   r/   s      r   r3   z$MOTDBasic.display.<locals>.<genexpr>B   s     EJCRwEr4   )
r   r   debugr
   r   appendr   itemsr   info)r   lineslines      r   r   zMOTDBasic.display:   s    99LL#;-()LL=)<)<(=>? 
D$))//2CD
E$**2B2B2DE
 	
  	DKK	r   N)r$   r%   r&   r'   r   r   r   r   r    r    4   s    
r   r    c                   D     e Zd ZdZd fdZd Zd	dZd Zd Zd Z	 xZ
S )
r   z<A MOTD display for terminals that support ANSI escape codes.c                 D    t        |   |i | | j                          y )N)superr   set_variables)r   argskwargs	__class__s      r   r   zMOTDTTY.__init__K   s!    $)&)r   c           
         d}t        t        |      j                  |d         }||d   z
  dz   | _        d| _        | j                  | _        | j                  rt        t        t        | j                  j                                     | _        t        t        t        t        | j                  j                                     | j                        | _        | j                  rt        | j                  t        t        t        | j                  j                                           | _        t        t        g t        t        | j                  j                               | j
                        | j                        | _        | j                  r| j                  j                  d      ng | _        d| _        | j                  | j
                  z   dz   | j                   z   | _        | j                  | j
                  z   dz   | _        y	)
z#Set the variables used for display.)l      )fallbackr   $      
rE      N)maxr   columnsmax_value_widthr   r   r   maplenkeysminvaluesr   r   split
logo_lineslogo_line_lengthcentering_lengthdisplay_length)r   rF   terminal_widths      r   r?   zMOTDTTY.set_variablesO   s   x088(1+
  .;b@//99 S$))..*:!;<DN"CTYY--/0143G3G D :: CTZZ__->$? @DN  #Fc#tzz0023FT5E5EFG$$ D 4899$))//$/" "NNT---1D4I4II 	 #nnt/?/??!Cr   c                 P   |st         j                  }d}|r|dt         z  }|j                  | j                        }| j
                  r| d| j
                   ndj                  | j                        }t        |      dz   | j                  z
  }d| j                  dz
  z  }d|z  }d| j                  dz   z  }	d| d| d	d
| dd
| dd| d| dg}
| j                  |
| j                  d       | j                  r^| j                  t        |
      dz
        }|
j                  d
| d|	 d       | j                  |
| j                  t        |
      dz
         | j                  |
       |
j                  d| d| d        |t        dj!                  |
      d             y)a@  Display the MOTD.

        Args:
            version (bool, optional): Display the version. Defaults to `True`.
            action (str, optional): Action to display. Defaults to
                `"Goin' Fast"`.
            out (Optional[Callable], optional): Output function. Defaults to
                `None`.
        Sanicz vz @  rJ   u   ─   u   
┌u   ┐   │     │u   ├u   ┬u   ┤r   rH   u    ├u   └u   ┴u   ┘
rI     N)r   r9   r
   centerrV   r   rO   rU   rW   _render_datar   r   _get_logo_partr7   _render_fillr   join)r   versionactionoutheaderrunninglengthfirst_fillersecond_fillerdisplay_fillerr:   	logo_parts               r   r   zMOTDTTY.displaym   s    ++C;-((Ft445373F3Fvhc$--./B
&&&
' 	 Vq4#8#88 5 5 9:$"5"5"9:L>]O376($7)4 ,s=/5	
 	%A.::++CJN;ILL4	{$~.>cBCeTZZUa@% s<.M?%@AF499U#T*+r   c           	         d}t        |j                         |      D ]  \  }\  }}|j                  | j                        }t	        || j
                  d      }t        |      D ]w  \  }	}
|
j                  | j                        }
| j                  ||z   |	z         }|	dk(  r| d|
 ndt        |      z  d|
 z   }|j                  d| d	| d
       |	ss|dz  }y  y )Nr   )startF)break_on_hyphensr.    r_   r]       │ r^   r\   )	enumerater8   rjustr   r   rM   ljustr   rb   rO   r7   )r   r:   r   rp   offsetidxr1   r2   wrapped
wrap_indexpartrn   r   s                r   ra   zMOTDTTY._render_data   s    !*4::<u!E 	 C#u))DNN+C5$"6"6OG$-g$6 
  
Dzz$"2"23 //fz0IJ	 "Q e2dV$C.Rv;6 
 tI;eG9DABaKF
 		 r   c                     d| j                   z  }t        |      dz
  }t        dt        | j                        |z
        D ],  }| j                  ||z      }|j	                  d| d| d       . y )Nrr      r\   r]   rs   r^   )rW   rO   rangerT   r7   )r   r:   fillerrx   irn   s         r   rc   zMOTDTTY._render_fill   sp    t***%j1nq#doo.45 	>Aa0ILL4	{%xt<=	>r   c                 j    	 | j                   |   }|S # t        $ r d| j                  dz
  z  }Y |S w xY w)Nrr      )rT   
IndexErrorrU   )r   rx   rn   s      r   rb   zMOTDTTY._get_logo_part   sI    	:,I   	:t44q89I	:s    22)r   N)Tz
Goin' FastN)r$   r%   r&   r'   r   r?   r   ra   rc   rb   __classcell__)rB   s   @r   r   r   H   s&    FD<',R $>r   r   N)abcr   r   shutilr   textwrapr   r   typingr   r	   sanicr
   sanic.helpersr   	sanic.logr   r   r    r   r   r   r   <module>r      sC    # $ ! !  ! &@3 &@R (ld lr   