
    h                         d dl mZ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mZ erddlmZ  G d	 d
ee      Z G d de      Z G d de      Zd Zy)    )print_functionunicode_literalsN)Queue   )TYPE_CHECKING)AuthSrv)HMaccasPebkac)HttpSrvc                         e Zd Zd fd	Z xZS )ExceptionalQueuec                     t         t        |   ||      }t        |t              r |d   dk(  r|d   dk(  rt        |dd   |d   |S )Nr   	exceptionr   pebkac   )superr   get
isinstancelistr
   )selfblocktimeoutrv	__class__s       J/jellyfin/media/venv/lib/python3.12/site-packages/copyparty/broker_util.pyr   zExceptionalQueue.get   sW    #T.ug>b$!u#a5H$ "QR&/)Q%K	    )TN)__name__
__module____qualname__r   __classcell__)r   s   @r   r   r      s    
 
r   r   c                       e Zd ZdZd Zd Zy)
NotExQueuezD
    BrokerThr uses this instead of ExceptionalQueue; 7x faster
    c                     || _         y Nr   )r   r   s     r   __init__zNotExQueue.__init__$   s	    r   c                     | j                   S r$   r%   r   s    r   r   zNotExQueue.get'   s    wwr   N)r   r   r   __doc__r&   r    r   r   r"   r"      s    r   r"   c                   "    e Zd ZdZd Zd Zd Zy)	BrokerCliz
    helps mypy understand httpsrv.broker but still fails a few levels deeper,
    for example resolving httpconn.* in httpcli -- see lines tagged #mypy404
    c                      y r$   r*   r(   s    r   r&   zBrokerCli.__init__7       r   c                     t        d      S )Nr   )r   r   destargss      r   askzBrokerCli.ask:   s    ""r   c                      y r$   r*   r0   s      r   sayzBrokerCli.say=   r.   r   N)r   r   r   r)   r&   r3   r5   r*   r   r   r,   r,   +   s    #r   r,   c                     	  || S # t         $ r&}| s dd|j                  t        |      gcY d }~S d }~wt        $ r}| s dd|gcY d }~S d }~ww xY w)Nr   r   stack)r
   codestr	Exception)want_retvalfuncr2   exs       r   try_execr>   A   sZ    *T{ 9XrwwB88 *Wb))	*s(    	A1AAA
A
A)
__future__r   r   argparse	tracebackqueuer   r&   r   authsrvr   utilr	   r
   httpsrvr   objectr   r"   r,   r>   r*   r   r   <module>rG      sK    7    #  ! uf 	 	 ,*r   