
    h[                       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m	Z	 ddl
mZ ddlmZ  ed	      Zd
ZdZdZ  ede      ej&                        ZdZddZddZdddZddZddZddZd d!dZ eedd      Zd"d#dZy)$zWorker name utilities.    )annotationsN)partial)ExchangeQueue   )memoize)simple_formatzC.dq2z{hostname}.dq2@celery)Cache)worker_directgethostnamenodenameanon_nodename	nodesplitdefault_nodenamenode_formathost_formatc                p    t        | t              r| S t        t        j                  |       t        |       S )a5  Return the :class:`kombu.Queue` being a direct route to a worker.

    Arguments:
        hostname (str, ~kombu.Queue): The fully qualified node name of
            a worker (e.g., ``w1@example.com``).  If passed a
            :class:`kombu.Queue` instance it will simply return
            that instead.
    hostname)
isinstancer   WORKER_DIRECT_QUEUE_FORMATformatWORKER_DIRECT_EXCHANGEr   s    R/var/www/Befach/backend/env/lib/python3.12/site-packages/celery/utils/nodenames.pyr   r   &   s7     (E""))8)<     c                0    t         j                  | |f      S )z)Create node name from name/hostname pair.)NODENAME_SEPjoin)namer   s     r   r   r   8   s    dH-..r   c           	         t        dj                  |t        t        j                               g      | xs
 t                     S )zsReturn the nodename for this process (not a worker).

    This is used for e.g. the origin task message field.
     )r   r    strosgetpidr   )r   prefixs     r   r   r   =   s1    
 BGGVS%5679R[]SSr   c                \    | j                  t        d      }t        |      dk(  rd|d   fS |S )z,Split node name into tuple of name/hostname.r   Nr   )splitr   len)r!   partss     r   r   r   E   s0    JJ|Q'E
5zQU1X~Lr   c                f    t        | xs d      \  }}t        |xs t        |xs
 t                     S )z-Return the default nodename for this process.r#   )r   r   NODENAME_DEFAULTr   )r   r!   hosts      r   r   r   M   s.    8>r*JD$D,,d.CkmDDr   c                N    t        |      \  }}t        | ||xs t        fd|i|S )z(Format worker node name (name@host.com).p)r   r   r-   )sr!   extra	shortnamer.   s        r   r   r   S   s.    oOItq$	 =-=OOOOr   r#   c                0    ddl m}  |       }|r|  | S |S )Nr   )current_process_index)logr5   )r'   defaultr5   indexs       r   _fmt_process_indexr9   Y   s#    *!#E!&fXeW3G3r   -c                    |xs
 t               }|j                  d      \  }}}|xs |}t        |||t        t        dfi |}t        | |      S )zFormat host %x abbreviations..)hndiI)r   	partitiondictr9   _fmt_process_index_with_prefixr	   )r1   r.   r!   r2   hname_domainkeyss           r   r   r   c   sc     ;=D~~c*E1f=5D#/	
	 	D D!!r   )r   zstr | Queuereturnr   )r!   r$   r   r$   rI   r$   )Ngen)r   
str | Noner'   r$   rI   r$   )r!   r$   rI   ztuple[None, str] | list[str])r   r$   rI   r$   )r1   r$   r!   r$   r2   rC   rI   r$   )r#   0)r'   r$   r7   r$   rI   r$   )NN)
r1   r$   r.   rK   r!   rK   r2   rC   rI   r$   )__doc__
__future__r   r%   socket	functoolsr   kombu.entityr   r   
functionalr   textr	   r   r   r   r-   rC   r   __all__r   r   r   r   r   r   r9   rD   r    r   r   <module>rV      s     " 	   (   "'*  .   $gat$V%7%78	$/
TEP4 "));S"!E "r   