HEX
Server: LiteSpeed
System: Linux ws4.angoweb.net 5.14.0-611.13.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 11 04:57:59 EST 2025 x86_64
User: tswangoe (2287)
PHP: 8.1.33
Disabled: show_source, system, shell_exec, passthru, exec, phpinfo, popen, proc_open
Upload Files
File: //lib/python3.9/site-packages/certbot/_internal/display/__pycache__/util.cpython-39.pyc
a

}|�g�
�@s�dZddlZddlZddlmZddlmZddlmZddl	m
Z
eed�dd	�Zeed
�dd�Z
deeeed�dd�Zeeed�dd�Zeeed�dd�Zejed�dd�ZdS)z#Internal Certbot display utilities.�N)�List)�Optional)�messages)�misc)�msg�returnc	Cs8|��}g}|D]}|�tj|dddd��qd�|�S)z�Format lines nicely to 80 chars.

    :param str msg: Original message

    :returns: Formatted message respecting newlines in message
    :rtype: str

    �PF)Zbreak_long_wordsZbreak_on_hyphens�
)�
splitlines�append�textwrap�fill�join)r�linesZfixed_l�line�r�B/usr/lib/python3.9/site-packages/certbot/_internal/display/util.py�
wrap_liness	�
r)�labelrcCsdj|d|dd�d�S)znPlace parens around first character of label.

    :param str label: Must contain at least one character

    z({first}){rest}r�N)�first�rest)�format)rrrr�parens_around_char!sr���@)�prompt�timeoutrcCs8|rtj�|�tj��t�||�}|s.t�|�d�S)aGet user input with a timeout.

    Behaves the same as the builtin input, however, an error is raised if
    a user doesn't answer after timeout seconds. The default timeout
    value was chosen to place it just under 12 hours for users following
    our advice and running Certbot twice a day.

    :param str prompt: prompt to provide for input
    :param float timeout: maximum number of seconds to wait for input

    :returns: user response
    :rtype: str

    :raises errors.Error if no answer is given before the timeout

    r	)�sys�stdout�write�flushrZreadline_with_timeout�EOFError�rstrip)rrrrrr�input_with_timeout*s
r#)�input_rcCs|�dd�}dd�|��D�S)z�Separate a comma or space separated list.

    :param str input_: input from the user

    :returns: strings
    :rtype: list

    �,� cSsg|]}t|��qSr)�str)�.0�stringrrr�
<listcomp>T�z'separate_list_input.<locals>.<listcomp>)�replace�split)r$Z	no_commasrrr�separate_list_inputHs	r.)�domainsrcCsJ|sdSt|�}|dkr |dS|dkr2d�|�Sd�|d|d�SdS)aMSummarizes a list of domains in the format of:
        example.com.com and N more domains
    or if there is are only two domains:
        example.com and www.example.com
    or if there is only one domain:
        example.com

    :param list domains: `str` list of domains
    :returns: the domain list summary
    :rtype: str
    �rr�z and z{0} and {1} more domainsN)�lenrr)r/�lengthrrr�summarize_domain_listWs
r4)�errorrcCs:|j|jf}t|�r(d�dd�|D��S|jr4|jS|jS)z�Returns a human-readable description of an RFC7807 error.

    :param error: The ACME error
    :returns: a string describing the error, suitable for human consumption.
    :rtype: str
    z :: css|]}|dur|VqdS)Nr)r(�partrrr�	<genexpr>xr+z&describe_acme_error.<locals>.<genexpr>)�titleZdetail�anyr�description�typ)r5�partsrrr�describe_acme_errorosr=)Nr)�__doc__rr�typingrrZacmerZ
acme_messagesZcertbot.compatrr'rr�floatr#r.r4�Errorr=rrrr�<module>s