
     h                        d 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mZ dZd	                                Z ej        d
          Zd Zd%dZd&dZd'dZd'dZd(dZ eed          Zd)dZd Zd*dZd+dZd,dZ d-dZ!d Z"edfd Z#d! Z$d" Z%ej&        Z&e&j'        Z(e&j)        Z* G d# d$e&          Z+dS ).zText formatting utilities.    N)Callable)partial)pformatfill)AnyListMapping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)c                 Z    t          | t                    r|                     d          S | S )zConvert string to list.,)
isinstancestrsplitss    M/var/www/html/Sam_Eipo/venv/lib/python3.11/site-packages/celery/utils/text.pyr   r      s+     !S wws||H       c                 <    | d|         d|z  k    r
| |d         n| S )z+Remove indentation from first line of text.N  )r    ns     r!   r   r   "   s,     bqbES1W$$1QRR55!+r"   
c                 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'   seps      r!   r   r   (   s-     88>>q||~~>>>>>>r"   c                 l    |                     fd|                     |          D                       S )z4Fill paragraphs with newlines (or custom separator).c              3   8   K   | ]}t          |          V  d S r+   r   )r,   pwidths     r!   r.   z"fill_paragraphs.<locals>.<genexpr>1   s+      99qDENN999999r"   r   r   )r    r4   r0   s    ` r!   r   r   .   s6     889999AGGCLL999999r"   c                 @    |                     d | D                       S )zConcatenate list of strings.c              3      K   | ]}||V  	d S r+   r&   )r,   vs     r!   r.   zjoin.<locals>.<genexpr>7   s'      &&!A&A&&&&&&r"   )r   )r-   r0   s     r!   r   r   4   s%     88&&q&&&&&&r"      c                 >    || ||                     |           z
  z  z   S )z%Ensure text s ends in separator sep'.)count)r0   r    r'   s      r!   r   r   :   s#     sa!''#,,&'''r"   ...c                     | dS t          |           |k    r)|r| d|t          |          z
           |z   p	| d|         S | S )zAbbreviate word.N???)len)Smaxellipsiss      r!   r   r   C   sU     	yu
1vv||@Q3c(mm 334x?KAdsdGKHr"   c                     | dS t          |           |k    rE|                     d          \  }}}t          ||t          |          z
  dz
  d          }|dz   |z   S | S )zAbbreviate task name.Nr>   .   Fz[.])r?   
rpartitionr   )r@   rA   module_clss        r!   r   r   M   sh     	yu
1vv||c**3fcCHHnq0%88~##Hr"   c                 l    |                     fd|                     |          D                       S )zIndent text.c              3   (   K   | ]}d z  |z   V  dS )r%   Nr&   )r,   r3   r   s     r!   r.   zindent.<locals>.<genexpr>\   s,      ;;C&L1$;;;;;;r"   r5   )tr   r0   s    ` r!   r   r   Y   s6     88;;;;aggcll;;;;;;r"      c                 ~    |r:t          |           |k    r'| d|                             dd          d         |z   S | S )z0Truncate text to a maximum number of characters.Nr%      r   )r?   rsplit)r    maxlensuffixs      r!   r   r   _   sI      5#a&&F""&z  a((+f44Hr"   r    c                     | dk    r||z   S |S )z*Pluralize term when n is greater than one.rO   r&   )r'   textrR   s      r!   r   r   g   s     	Avvf}Kr"   P   c           	          t          | t                    rd| 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#   rO   Nz{}{}{}z    r4   )r   dictr   tupleformat)valuer4   nl_widthr0   kws        r!   r   r   o   s     % 1;C;;'%H55abb9;;;	E5	!	! 1'%>>x>2>>
 
 	
 u00E0R000r"   c                 z    |                                 r|                                 n|                                 S r+   )isupperupperlower)r    others     r!   
match_caserc   |   s)    6177999QWWYY6r"   z\1c                 v      r3                     dd            fd}|                    |           S  S )z0Format string, expanding abbreviations in keys'.%c                     |                                }	 |         }n6# t          $ r) t          t                              |                    w xY wt          |t                    r
 |            S |S r+   )expandKeyError
ValueErrorUNKNOWN_SIMPLE_FORMAT_KEYrZ   r   r   )matchkeyresolverrg   keysr    s      r!   resolvezsimple_format.<locals>.resolve   s    ,,v&&CK9 K K K !:!A!A#q!I!IJJJK(H-- "xzz!Os	   ! 3A)
setdefaultsub)r    rn   patternrg   ro   s   `` ` r!   r   r      sa     	 'S!!!	 	 	 	 	 	 	 {{7A&&&Hr"   c                 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)'
    rD   r   )r   rF   remove_repeating)	task_namer    rG   s      r!   remove_repeating_from_taskrv      s7     ^^&&s++A.4FFA&&&r"   c                     |                     |           }|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   r?   replace)substrr    indexs      r!   rt   rt      s    $ FF6NNEzzww"us6{{""#ec&kk!""#++FB77	
   	 Hr"   c                        e Zd ZdZddZd ZdS )
WhateverIOz!StringIO that takes bytes or str.Nc                 z    t          | t          |t                    r|                                n|g|R i | d S r+   )	_SIO_initr   bytesdecode)selfr8   ar]   s       r!   __init__zWhateverIO.__init__   sC    $jE&:&:A


LALLLLLLLLr"   c                 x    t          | t          |t                    r|                                n|           d S r+   )
_SIO_writer   r   r   )r   datas     r!   writezWhateverIO.write   s3    4*T5*A*AKtLLLLLr"   r+   )__name__
__module____qualname____doc__r   r   r&   r"   r!   r~   r~      sF        ++M M M MM M M M Mr"   r~   )r#   )r#   r(   )r(   )r9   )r<   )r   r(   )rM   r<   r   )rU   rU   r(   ),r   iorecollections.abcr   	functoolsr   pprintr   textwrapr   typingr   r	   r
   r   __all__striprj   compile	RE_FORMATr   r   r   r   r   r   r   r   r   r   r   r   r   rc   r   rv   rt   StringIOr   r   r   r   r~   r&   r"   r!   <module>r      sO       				 				 $ $ $ $ $ $                   . . . . . . . . . . . . 
EGG	  BJx  	  , , , ,? ? ? ?: : : :' ' ' '( ( ( ( '*d++   	 	 	< < < <      
1 
1 
1 
17 7 7
 $-U    (' ' '   : ;^
	M M M M M M M M M Mr"   