o
    i                  	   @   s  d dl Z d dlZd dlmZ d dlmZmZ d dlZd dlm	Z	m
Z
mZ d dlmZ d dlmZmZ d dlmZ d dlmZmZ d	d
lmZmZ eeZG dd deZddedefddZdefddZ dde	dee defddZ!e j"	ddedee ded fddZ#dS )    N)	Generator)AnyOptional)	HTTPErrorHTTPStatusErrorReadTimeout)Segment)RichToolkitRichToolkitTheme)Progress)MinimalStyleTaggedStyle   )Identitydelete_auth_configc                       s\   e Zd Zddef fddZ		ddeeef deded	e	e
e ef f fd
dZ  ZS )FastAPIStyle   	tag_widthc                    s   t  j|d d S )Nr   )super__init__)selfr   	__class__ O/home/ubuntu/.local/lib/python3.10/site-packages/fastapi_cloud_cli/utils/cli.pyr      s   zFastAPIStyle.__init__Fmetadatais_animateddonereturnc                    s\   |s
t  |||S g d}|| jt|  }|r|d }| jd }td|}t|g|fS )N)u   🥚u   🐣u   🐤u   🐥u   🐓u   🐔r   r   )r   _get_tag_segmentsanimation_counterlenr   maxr   )r   r   r   r   emojistagleft_paddingr   r   r   r!      s   	

zFastAPIStyle._get_tag_segments)r   )FF)__name__
__module____qualname__intr   dictstrr   booltuplelistr   r!   __classcell__r   r   r   r   r      s    
r   Fminimalr   c                 C   s>   | rt  ntdd}t|ddddddd	d
dd	d}t|dS )Nr   r   zwhite on #009485zwhite on #007166grey62whitez#007166grey85z
on #007166redzindian_red italic)	z	tag.titler&   placeholdertextselectedresultprogresserror	cancelled)styletheme)r?   )r   r   r
   r	   )r2   r>   r?   r   r   r   get_rich_toolkit3   s   
r@   c                  C   s2   d} t  }|jdkrt  | d7 } | S | d7 } | S )Nz"The specified token is not valid. userz,Use `fastapi login` to generate a new token.zMake sure to use a valid token.)r   	auth_moder   )messageidentityr   r   r   handle_unauthorizedH   s   
rE   r<   default_messagec                 C   sb   d }t | tr&| jj}|dkrt| j  n|dkr t }n|dkr&d}|s/|p.d|  }|S )Ni  i  i  z,You don't have permissions for this resourcezZSomething went wrong while contacting the FastAPI Cloud server. Please try again later. 

)
isinstancer   responsestatus_codeloggerdebugjsonrE   )r<   rF   rC   rI   r   r   r   handle_http_errorW   s   
rM   r;   )NNNc              
   c   s    zd V  W d S  t y# } zt| | d tdd d }~w tyC } zt| t||}| | tdd d }~ww )NzJThe request to the FastAPI Cloud server timed out. Please try again later.r   )r   rJ   rK   	set_errortyperExitr   rM   )r;   rF   erC   r   r   r   handle_http_errorsp   s"   



rR   )F)N)$
contextlibloggingcollections.abcr   typingr   r   rO   httpxr   r   r   rich.segmentr   rich_toolkitr	   r
   rich_toolkit.progressr   rich_toolkit.stylesr   r   authr   r   	getLoggerr(   rJ   r   r.   r@   r-   rE   rM   contextmanagerrR   r   r   r   r   <module>   s2    
!