
    `f                       d Z ddlmZ ddlZddlZddlmZ ddlmZ ddlm	Z	 ddl
mZ ddlmZmZmZ d	Zd
                                Z ej        d          ZdDdZdEdFdZdGdHdZdGdIdZdGdJdZdKdLdZ eed          ZdMdNd#ZdOd$ZdPdQd'ZdRdSd+ZdTdUd.Z dVdWd4Z!dXd6Z"ed7fdYd=Z#dZd?Z$d[dAZ%ej&        Z&e&j'        Z(e&j)        Z* G dB dCe&          Z+dS )\zText formatting utilities.    )annotationsN)partial)pformat)Matchfill)AnyCallablePattern)abbrabbrtaskdedentdedent_initialensure_newlines
ensure_sepfill_paragraphsindentjoin	pluralizeprettystr_to_listsimple_formattruncatez
Unknown format %{0} in string {1!r}.
Possible causes: Did you forget to escape the expand sign (use '%%{0!r}'),
or did you escape and the value was expanded twice? (%%N -> %N -> %hostname)?
z%(\w)sstrreturn	list[str]c                Z    t          | t                    r|                     d          S | S )zConvert string to list.,)
isinstancer   splitr   s    C/var/www/html/env/lib/python3.11/site-packages/celery/utils/text.pyr   r      s)    !S wws||H       nintc                <    | d|         d|z  k    r
| |d         n| S )z+Remove indentation from first line of text.N  )r   r&   s     r#   r   r   #   s*    bqbES1W$$1QRR55!+r$   
sepc                d    |                     d |                                 D                       S )zRemove indentation.c              3  4   K   | ]}t          |          V  d S N)r   ).0ls     r#   	<genexpr>zdedent.<locals>.<genexpr>*   s*      >>!N1%%>>>>>>r$   )r   
splitlines)r   r,   s     r#   r   r   (   s+    88>>q||~~>>>>>>r$   widthc                l    |                     fd|                     |          D                       S )z4Fill paragraphs with newlines (or custom separator).c              3  8   K   | ]}t          |          V  d S r/   r   )r0   pr4   s     r#   r2   z"fill_paragraphs.<locals>.<genexpr>/   s+      99qDENN999999r$   r   r!   )r   r4   r,   s    ` r#   r   r   -   s4    889999AGGCLL999999r$   r1   c                @    |                     d | D                       S )zConcatenate list of strings.c              3     K   | ]}||V  	d S r/   r*   )r0   vs     r#   r2   zjoin.<locals>.<genexpr>4   s'      &&!A&A&&&&&&r$   )r   )r1   r,   s     r#   r   r   2   s#    88&&q&&&&&&r$      c                >    || ||                     |           z
  z  z   S )z%Ensure text s ends in separator sep'.)count)r,   r   r&   s      r#   r   r   7   s!    sa!''#,,&'''r$   ...Smaxellipsis
str | boolc                    | dS t          |           |k    r<t          |t                    r| d|t          |          z
           |z   p	| d|         S | S )zAbbreviate word.N???)lenr    r   )r@   rA   rB   s      r#   r   r   ?   se    yu
1vv||(C(( 1#c(mm##$x/=45eeH	=Hr$   c                    | dS t          |           |k    rE|                     d          \  }}}t          ||t          |          z
  dz
  d          }|dz   |z   S | S )zAbbreviate task name.NrE   .   Fz[.])rF   
rpartitionr   )r@   rA   module_clss        r#   r   r   I   sf    yu
1vv||c**3fcCHHnq0%88~##Hr$   tr   c                l    |                     fd|                     |          D                       S )zIndent text.c              3  (   K   | ]}d z  |z   V  dS )r)   Nr*   )r0   r7   r   s     r#   r2   zindent.<locals>.<genexpr>V   s,      ;;C&L1$;;;;;;r$   r8   )rN   r   r,   s    ` r#   r   r   T   s4    88;;;;aggcll;;;;;;r$      maxlensuffixc                ~    |r:t          |           |k    r'| d|                             dd          d         |z   S | S )z0Truncate text to a maximum number of characters.Nr)      r   )rF   rsplit)r   rR   rS   s      r#   r   r   Y   sG     5#a&&F""&z  a((+f44Hr$   floattextc                    | dk    r||z   S |S )z*Pluralize term when n is greater than one.rU   r*   )r&   rX   rS   s      r#   r   r   `   s    Avvf}Kr$   P   valuenl_widthkwr	   c           	         t          | t                    r| dt          | d|          dd          S t          | t                    r$d                    |dt          | fd|i|          S t          | fd|i|S )z%Format value for printing to console.r)   r%   rU   Nz{}{}{}z    r4   )r    dictr   tupleformat)r[   r4   r\   r,   r]   s        r#   r   r   g   s     % 199q(33ABB7999	E5	!	! 1'%>>x>2>>
 
 	
 u00E0R000r$   otherc                z    |                                 r|                                 n|                                 S r/   )isupperupperlower)r   rb   s     r#   
match_caserg   t   s)    6177999QWWYY6r$   z\1keysdict[str, str | Callable]patternPattern[str]expandc                x      r4                     dd           d fd}|                    |           S  S )z0Format string, expanding abbreviations in keys'.%matchr   r   	str | Anyc                    |                                }	 |         }n6# t          $ r) t          t                              |                    w xY wt          |          r
 |            S |S r/   )rl   KeyError
ValueErrorUNKNOWN_SIMPLE_FORMAT_KEYra   callable)ro   keyresolverrl   rh   r   s      r#   resolvezsimple_format.<locals>.resolve   s    ,,v&&CK9 K K K !:!A!A#q!I!IJJJK!! "xzz!Os	   ! 3A)ro   r   r   rp   )
setdefaultsub)r   rh   rj   rl   rx   s   `` ` r#   r   r   x   sf     	 'S!!!	 	 	 	 	 	 	 	 {{7A&&&Hr$   	task_namec                x    t          |                               d          d         dz   }t          ||          S )zGiven task name, remove repeating module names.

    Example:
        >>> remove_repeating_from_task(
        ...     'tasks.add',
        ...     'tasks.add(2, 2), tasks.mul(3), tasks.div(4)')
        'tasks.add(2, 2), mul(3), div(4)'
    rH   r   )r   rJ   remove_repeating)r{   r   rK   s      r#   remove_repeating_from_taskr~      s7     ^^&&s++A.4FFA&&&r$   substrc                    |                     |           }|dk    r[d                    |d|t          |           z            ||t          |           z   d                             | d          g          S |S )a  Remove repeating module names from string.

    Arguments:
        task_name (str): Task name (full path including module),
            to use as the basis for removing module names.
        s (str): The string we want to work on.

    Example:

        >>> _shorten_names(
        ...    'x.tasks.add',
        ...    'x.tasks.add(2, 2) | x.tasks.add(4) | x.tasks.mul(8)',
        ... )
        'x.tasks.add(2, 2) | add(4) | mul(8)'
    r    N)findr   rF   replace)r   r   indexs      r#   r}   r}      s    " FF6NNEzzww"us6{{""#ec&kk!""#++FB77	
   	 Hr$   c                  &    e Zd ZdZ	 ddd
ZddZdS )
WhateverIOz!StringIO that takes bytes or str.Nr;   bytes | str | Nonear	   r]   r   Nonec                z    t          | t          |t                    r|                                n|g|R i | d S r/   )	_SIO_initr    bytesdecode)selfr;   r   r]   s       r#   __init__zWhateverIO.__init__   sC    $jE&:&:A


LALLLLLLLLr$   databytes | strr'   c                t    t          | t          |t                    r|                                n|          S r/   )
_SIO_writer    r   r   )r   r   s     r#   writezWhateverIO.write   s:    $'e44!?:>@ @ 	@r$   r/   )r;   r   r   r	   r]   r	   r   r   )r   r   r   r'   )__name__
__module____qualname____doc__r   r   r*   r$   r#   r   r      sW        ++ +/M M M M M@ @ @ @ @ @r$   r   )r   r   r   r   )r%   )r   r   r&   r'   r   r   )r+   )r   r   r,   r   r   r   )r   r   r4   r'   r,   r   r   r   )r1   r   r,   r   r   r   )r<   )r,   r   r   r   r&   r'   r   r   )r?   )r@   r   rA   r'   rB   rC   r   r   )r@   r   rA   r'   r   r   )r   r+   )rN   r   r   r'   r,   r   r   r   )rQ   r?   )r   r   rR   r'   rS   r   r   r   r"   )r&   rW   rX   r   rS   r   r   r   )rZ   rZ   r+   )r[   r   r4   r'   r\   r'   r,   r   r]   r	   r   r   )r   r   rb   r   r   r   )
r   r   rh   ri   rj   rk   rl   r   r   r   )r{   r   r   r   r   r   )r   r   r   r   r   r   ),r   
__future__r   iore	functoolsr   pprintr   r   textwrapr   typingr	   r
   r   __all__striprt   compile	RE_FORMATr   r   r   r   r   r   r   r   r   r   r   r   r   rg   r   r~   r}   StringIOr   r   r   r   r   r*   r$   r#   <module>r      s       " " " " " " 				 				                         ) ) ) ) ) ) ) ) ) ) 
EGG	  BJx  	   , , , , ,
? ? ? ? ?
: : : : :
' ' ' ' '
( ( ( ( (
 '*d++       < < < < <
        
1 
1 
1 
1 
17 7 7 7 !*    *' ' ' '   8 ;^
		@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@r$   