U
    Y]h                     @  s  d dl mZ d dlmZ d dlmZ d dl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Zd d	lmZ d
dlmZ eeZede  z\d dlZd dlZd dlZed ejedd d d d Zede\ZZ Z!Z"e d krdZ W n e#e$fk
r$   dZ Y nX dddddddddZ%ed/dddddddZ&d0ddddddZ'dddd d!Z(d1dd#dd$d%d&Z)d2dddddd(d)d*Z*d+dd,d-d.Z+dS )3    )annotations)Iterable)contextmanagerN)Iterator)Optional)TextIO)Union)url   )sqla_compatZalembicZHHHHFquietr   zUnion[str, bytes]boolNone)streamtextr   returnc             	   G  sp   |rd S t | ddpd}|D ]N}t|ts6||d}||}z| | W q tk
rh   Y  qlY qX qd S )Nencodingasciireplace)getattr
isinstancebytesencodedecodewriteOSError)r   r   r   r   t r   :/tmp/pip-unpacked-wheel-u4jwnyja/alembic/util/messaging.pywrite_outstream%   s    

r    strzIterator[None])
status_msgnewliner   r   c                 c  sR   t | d |d|d z
d V  W n   |s6ttjd  Y nX |sNttjd d S )Nz ...T)flushr   z	  FAILED
z  done
)msgr    sysstdout)r"   r#   r   r   r   r   status8   s    
r(   )messager   r   c                 C  s*   t |  td|  |d td d S )NzFAILED: r   )logerrorr%   r&   exit)r)   r   r   r   r   errH   s    
r.   )	input_urlr   c                 C  s   t | }tj|ddS )NT)Zhide_password)r	   Zmake_urlr   Zurl_render_as_string)r/   ur   r   r   obfuscate_url_pwN   s    
r1      int)r%   
stacklevelr   c                 C  s   t j| t|d d S )N)r4   )warningswarnUserWarning)r%   r4   r   r   r   r6   S   s    r6   T)r%   r#   r$   r   r   c                 C  s   |rd S t d kr.ttj|  |rttjd n\d}tj| t ||d}t|dkrp|dd D ]}ttj|d q\ttj|d |rdnd |rtj  d S )N
z  )initial_indentsubsequent_indentr
   r   r*    )	TERMWIDTHr    r&   r'   textwrapwraplenr$   )r%   r#   r$   r   indentlinesliner   r   r   r%   W   s&    r%   z#Optional[Union[str, Iterable[str]]])valuer   c                 C  s>   | d krdS t | tr| S t | tr.d| S td|  d S )Nr;   z, z!Don't know how to comma-format %r)r   r!   r   join
ValueError)rC   r   r   r   format_as_commaq   s    


rF   )FF)F)r2   )TFF),
__future__r   collections.abcr   
contextlibr   loggingr&   r=   typingr   r   r   r   r5   Zsqlalchemy.enginer	   r;   r   	getLogger__name__r+   
addHandlerNullHandlerZfcntltermiosstructZioctl
TIOCGWINSZpackunpackZ_hr<   Z_hpZ_wpImportErrorr   r    r(   r.   r1   r6   r%   rF   r   r   r   r   <module>   sL   


        