File: //usr/lib/python3/dist-packages/certbot/_internal/display/__pycache__/util.cpython-310.pyc
o
6��a � @ sh d Z ddlmZ ddlZddlZddlmZ dd� Zdd� Zdd
d�Z dd
� Z
dee defdd�ZdS )z#Internal Certbot display utilities.� )�ListN)�miscc C s8 | � � }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
�P F)�break_long_words�break_on_hyphens�
)�
splitlines�append�textwrap�fill�join)�msg�lines�fixed_l�line� r �@/usr/lib/python3/dist-packages/certbot/_internal/display/util.py�
wrap_lines s
�
r c C s dj | 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)�labelr r r �parens_around_char s r � ��@c C s8 | r
t j�| � t j�� t�|| �}|st�|�d�S )a Get 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�flushr �readline_with_timeout�EOFError�rstrip)�prompt�timeoutr r r r �input_with_timeout( s
r$ c C s | � dd�}dd� |�� D �S )z�Separate a comma or space separated list.
:param str input_: input from the user
:returns: strings
:rtype: list
�,� c S s g | ]}t |��qS r )�str)�.0�stringr r r �
<listcomp>R s z'separate_list_input.<locals>.<listcomp>)�replace�split)�input_� no_commasr r r �separate_list_inputF s r/ �domains�returnc C sF | sdS t | �}|dkr| d S |dkrd�| �S d�| d |d �S )aM Summarizes 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
� r r � z and z{0} and {1} more domains)�lenr r )r0 �lr r r �summarize_domain_listU s
r6 )Nr )
�__doc__�typingr r
r �certbot.compatr r r r$ r/ r'