o
     JAf<M                     @   s   	 d dl Z g dZdZG dd dZdddZdd	d
Zdd Ze de jZ	e de jZ
dd ZdddZedkrCeed dS dS )    N)TextWrapperwrapfilldedentindentshortenz	
 c                   @   s   e Zd Z	 i ZedZeD ]Zeeee< qdZdZ	de
e Zdedd  Ze
dee	eed	 e
jZ[[	[e
d
e Z[e
dZ										d%dddddZdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ ZdS )&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)
            )
        ))ZwpltwsZnwsz(%s+)z[a-z][\.\!\?][\"\']?\ZF    TF   z [...])	max_linesplaceholderc                C   sL   || _ || _|| _|| _|| _|| _|| _|| _|	| _|
| _	|| _
|| _d S N)widthinitial_indentsubsequent_indentexpand_tabsreplace_whitespacefix_sentence_endingsbreak_long_wordsdrop_whitespacebreak_on_hyphenstabsizer   r   )selfr   r   r   r   r   r   r   r   r   r   r   r    r   /usr/lib/python3.10/textwrap.py__init__s   s   
zTextWrapper.__init__c                 C   s*   	 | j r
|| j}| jr|| j}|S r   )r   
expandtabsr   r   	translateunicode_whitespace_transr   textr   r   r   _munge_whitespace   s   zTextWrapper._munge_whitespacec                 C   s8   	 | j du r| j|}n| j|}dd |D }|S )NTc                 S   s   g | ]}|r|qS r   r   .0cr   r   r   
<listcomp>   s    z&TextWrapper._split.<locals>.<listcomp>)r   
wordsep_resplitwordsep_simple_rer   r$   chunksr   r   r   _split   s   
zTextWrapper._splitc                 C   sp   	 d}| j j}|t|d k r6||d  dkr(||| r(d||d < |d7 }n|d7 }|t|d k sd S d S )Nr   r	   r   z     )sentence_end_researchlen)r   r.   iZ	patsearchr   r   r   _fix_sentence_endings   s   
z!TextWrapper._fix_sentence_endingsc           	      C   s   	 |dk rd}n|| }| j rM|}|d }| jr:t||kr:|dd|}|dkr:tdd |d | D r:|d }||d |  ||d  |d< d S |sX||  d S d S )Nr	   -r   c                 s   s    | ]}|d kV  qdS )r7   Nr   r&   r   r   r   	<genexpr>   s    z0TextWrapper._handle_long_word.<locals>.<genexpr>)r   r   r3   rfindanyappendpop)	r   Zreversed_chunkscur_linecur_lenr   Z
space_leftendchunkZhyphenr   r   r   _handle_long_word   s    	"zTextWrapper._handle_long_wordc           	      C   s  	 g }| j dkrtd| j  | jd ur2| jdkr| j}n| j}t|t| j  | j kr2td|  |r@g }d}|rC| j}n| j}| j t| }| j	r]|d 
 dkr]|r]|d= |rzt|d }|| |krw||  ||7 }nn|s_|rt|d |kr| |||| ttt|}| j	r|r|d 
 dkr|t|d 8 }|d= |r>| jd u st|d | jk s|r| j	rt|dkr|d 
 s||kr||d|  nb|r|d 
 r|t| j |kr|| j ||d|  	 	 |S |t|d 8 }|d= |s|r1|d  }t|t| j | j kr1|| j |d< 	 |S ||| j   	 |S |s9|S )Nr   zinvalid width %r (must be > 0)r	   z#placeholder too large for max widthr6   r   )r   
ValueErrorr   r   r   r3   r   lstripreverser   stripr;   r<   rA   summapjoinrstrip)	r   r.   linesr   r=   r>   r   lZ	prev_liner   r   r   _wrap_chunks   s   





	IzTextWrapper._wrap_chunksc                 C   s   |  |}| |S r   )r%   r/   r#   r   r   r   _split_chunksX  s   

zTextWrapper._split_chunksc                 C   s&   	 |  |}| jr| | | |S r   )rM   r   r5   rL   r-   r   r   r   r   ^  s
   


zTextWrapper.wrapc                 C   s   	 d | |S )N
)rH   r   r#   r   r   r   r   l  s   zTextWrapper.fill)
r   r   r   TTFTTTr   )__name__
__module____qualname__r"   ordZuspace_whitespacexZ
word_punctZletterreescape
whitespaceZnowhitespacecompileVERBOSEr*   r,   r1   r   r%   r/   r5   rA   rL   rM   r   r   r   r   r   r   r      sV    0
)gr   r   c                 K      	 t dd|i|}|| S Nr   r   )r   r   r$   r   kwargswr   r   r   r   x  s   	
r   c                 K   rZ   r[   )r   r   r\   r   r   r   r     s   
r   c                 K   s.   	 t d|dd|}|d|   S )Nr	   )r   r   r   r   )r   r   rH   rE   r+   r\   r   r   r   r     s   r   z^[ 	]+$z(^[ 	]*)(?:[^ 	
])c                 C   s   	 d }t d| } t| }|D ]1}|d u r|}q||rq||r'|}qtt||D ]\}\}}||kr@|d | } nq.q	 |rNtd| d| } | S )Nr   r   rN   z(?m)^)	_whitespace_only_resub_leading_whitespace_refindall
startswith	enumeratezipr+   rU   )r$   Zmarginindentsr   r4   rT   yliner   r   r   r     s*   


r   c                    s.   	  d u r	dd   fdd}d | S )Nc                 S   s   |   S r   )rE   rh   r   r   r   	predicate  s   zindent.<locals>.predicatec                  3   s,     dD ]}  | r|  n| V  qd S )NT)
splitlinesri   rj   prefixr$   r   r   prefixed_lines  s   zindent.<locals>.prefixed_linesr   )rH   )r$   rm   rj   rn   r   rl   r   r     s
   r   __main__z Hello there.
  This is indented.)r   r   )rU   __all__rS   r   r   r   r   rX   	MULTILINEr_   ra   r   r   rO   printr   r   r   r   <module>   s"      
i

3