a �DOg�K�@s�ddlZgd�ZdZGdd�d�Zddd�Zdd d �Zd d �Ze�d ej�Z e�dej�Z dd�Z ddd�Z e dkr�ee d��dS)�N)� TextWrapper�wrap�fill�dedent�indent�shortenz c @s�eZdZiZed�ZeD]Zeeee�<qdZdZ de � e�Z de dd�Z e �dee e e d �e j�Z[[ [ e �d e �Z[ e �d �Zd%ddd�dd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�ZdS)&r� z [\w!"\'&.,?]z[^\d\W]z[%s]z[^�Na� ( # any whitespace %(ws)s+ | # em-dash between words (?<=%(wp)s) -{2,} (?=\w) | # word, possibly hyphenated %(nws)s+? (?: # hyphenated word -(?: (?<=%(lt)s{2}-) | (?<=%(lt)s-%(lt)s-)) (?= %(lt)s -? %(lt)s) | # end of word (?=%(ws)s|\Z) | # em-dash (?<=%(wp)s) (?=-{2,}\w) ) ))Zwp�lt�wsZnwsz(%s+)z[a-z][\.\!\?][\"\']?\Z�F�TF�z [...])� max_lines� placeholderc  CsL||_||_||_||_||_||_||_||_| |_| |_ | |_ | |_ dS�N) �width�initial_indent�subsequent_indent� expand_tabs�replace_whitespace�fix_sentence_endings�break_long_words�drop_whitespace�break_on_hyphens�tabsizerr) �selfrrrrrrrrrrrr�r� /usr/lib64/python3.9/textwrap.py�__init__sszTextWrapper.__init__cCs(|jr|�|j�}|jr$|�|j�}|Sr)r� expandtabsrr� translate�unicode_whitespace_trans�r�textrrr�_munge_whitespace�s   zTextWrapper._munge_whitespacecCs6|jdur|j�|�}n |j�|�}dd�|D�}|S)NTcSsg|] }|r|�qSrr)�.0�crrr� ��z&TextWrapper._split..)r� wordsep_re�split�wordsep_simple_re�rr$�chunksrrr�_split�s   zTextWrapper._splitcCs\d}|jj}|t|�dkrX||ddkrN|||�rNd||d<|d7}q |d7}q dS)Nrr rz �)�sentence_end_re�search�len)rr.�iZ patsearchrrr�_fix_sentence_endings�s   z!TextWrapper._fix_sentence_endingscCs^|dkrd}n||}|jrH|�|dd|��|d|d�|d<n|sZ|�|���dS)Nr �����)r�append�pop)rZreversed_chunks�cur_line�cur_lenrZ space_leftrrr�_handle_long_word�s zTextWrapper._handle_long_wordc Cs�g}|jdkrtd|j��|jdurb|jdkr8|j}n|j}t|�t|j���|jkrbtd��|��|�r�g}d}|r�|j}n|j}|jt|�}|j r�|d� �dkr�|r�|d=|r�t|d�}|||kr�|� |� ��||7}q�q�q�|�r&t|d�|k�r&|� ||||�ttt|��}|j �r\|�r\|d� �dk�r\|t|d�8}|d=|rj|jdu�s�t|�d|jk�s�|�r�|j �r�t|�dk�r�|d� ��s�||k�r�|� |d�|��qj|�r0|d� ��r|t|j�|k�r|� |j�|� |d�|���q�|t|d�8}|d=�q�|�rn|d��}t|�t|j�|jk�rn||j|d<�q�|� ||j����q�qj|S)Nrzinvalid width %r (must be > 0)r z#placeholder too large for max widthr6r )r� ValueErrorrrrr3r�lstrip�reverser�stripr7r8r;�sum�map�join�rstrip) rr.�linesrr9r:r�lZ prev_linerrr� _wrap_chunks�s�         ��� � ���   �zTextWrapper._wrap_chunkscCs|�|�}|�|�Sr)r%r/r#rrr� _split_chunksPs zTextWrapper._split_chunkscCs$|�|�}|jr|�|�|�|�Sr)rGrr5rFr-rrrrVs  zTextWrapper.wrapcCsd�|�|��S)N� )rBrr#rrrrdszTextWrapper.fill) r r r TTFTTTr)�__name__� __module__� __qualname__r"�ordZuspace� _whitespace�xZ word_punctZletter�re�escape� whitespaceZ nowhitespace�compile�VERBOSEr*r,r1rr%r/r5r;rFrGrrrrrrrsR1��� � � !grr cKstfd|i|��}|�|�S�Nr)rr�r$r�kwargs�wrrrrps rcKstfd|i|��}|�|�SrT)rrrUrrrr}s rcKs,tf|dd�|��}|�d�|������S)Nr )rrr)rrrBr?r+rUrrrr�s rz^[ ]+$z(^[ ]*)(?:[^ ])cCs�d}t�d|�}t�|�}|D]b}|dur0|}q|�|�r.predicatec3s*��d�D]}�|�r�|n|Vq dS)NT)� splitlinesrb�rc�prefixr$rr�prefixed_lines�szindent..prefixed_linesr )rB)r$rfrcrgrrerr�sr�__main__z Hello there. This is indented.)r )r )N)rO�__all__rMrrrrrR� MULTILINErXrZrrrI�printrrrr�sa 3