o
    FDiR                     @   s  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	m
Z
mZmZmZ d dlmZ d dlmZmZmZmZ d dlmZ d d	lmZmZmZmZ d d
lmZ d dlmZm Z  d dl!m"Z"m#Z#m$Z$ d dl%m&Z&m'Z' d dl(m)Z) d dl*m+Z+m,Z,m-Z- d dl.m/Z/m0Z0m1Z1m2Z2 d dl3m4Z4 d dl5m6Z6m7Z7 d dl8m9Z9m:Z: d dl;m<Z< d dl=m>Z>m?Z? e@eAZBG dd dZCG dd dZDG dd dZEdS )    N)AsyncGenerator)time)GeneratorType)AnyIterableMappingOptionalUnion)urlparse)PartiallyConsumedQueryErrorServerExceptionUnexpectedPacketFromServerErrorUnknownPacketFromServerError)	constants)	BaseBlockBlockStreamProfileInfoColumnOrientedBlockRowOrientedBlock)get_compressor_cls)ContextExecuteContext)
ClientInfo	QueryKind
ServerInfo)ClickhouseSchemeCompressionAlgorithm)Progress)ClientPacketCompressionServerPacket)IterQueryResultProgressQueryResult	QueryInfoQueryResult)write_settings)BlockReaderBlockWriter)BufferedReaderBufferedWriter)escape_params)chunkscolumn_chunksc                   @   s   e Zd ZdZdZdZdZdS )QueryProcessingStagez<Determines till which state SELECT query should be executed.r         N)__name__
__module____qualname____doc__FETCH_COLUMNSWITH_MERGEABLE_STATECOMPLETE r6   r6   P/var/www/Datamplify/venv/lib/python3.10/site-packages/asynch/proto/connection.pyr,   ,   s
    r,   c                   @   s   e Zd Zdd ZdS )Packetc                 C   s(   d | _ d | _d | _d | _d | _d | _d S N)typeblock	exceptionprogressprofile_infomultistring_messageselfr6   r6   r7   __init__5   s   
zPacket.__init__N)r/   r0   r1   rB   r6   r6   r6   r7   r8   4   s    r8   c                   @   s:  e Zd ZdZejejejejej	ej
ejejejejdddddddddfdedededed	ed
edededededeeef dededefddZdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#efd$d%Zdtd&d'Zd(d) Zdud*d+Zd,d- Zd.efd/d0Z d1e!fd2d3Z"d4d5 Z#d6d7 Z$d#e%fd8d9Z&dvd:d;Z'd<d= Z(d>d? Z)dwdAedBefdCdDZ*dedefdEdFZ+dGdH Z,dIdJ Z-dKdL Z.				@			dxdMdNZ/				@			dxdOdPZ0						dydAedQe1e2ee3f  dRedSe1e4e2  dBe1e dTedUefdVdWZ5dXdY Z6dZd[ Z7d\d] Z8						dydAedQe1e2ee3f  dRedSe1e4e2  dBe1e dTedUefd^d_Z9dtd`daZ:dwdbdcZ;e<dAedQe2ee3f d#efdddeZ=				dzdfdgZ>dhdi Z?d{djdkZ@					d|dAedQe1e2ee3f  dRedSe1e4e2  dBe1e dTefdldmZAdtdndoZBdpdq ZC				@		d}drdsZDdS )~
Connection)	UnknownFatalCriticalErrorWarningNoticeInformationDebugTraceFTNuserpasswordhostportdatabaseclient_nameconnect_timeoutsend_receive_timeoutsync_request_timeoutcompress_block_sizecompressionsecureverify	alt_hostsc                 K   s&  || _ |r	tj}ntj}||p|fg| _|r4|dD ]}ttj d| }| j	|j
|jp0|f q|| _d | _d | _|| _|| _tjd | | _|| _|| _|	| _|| _t | _|| _|| _i }|d url||d< |d urt||d< |d ur|||d< || _|du rtj}|du rtj| _ d | _!d | _"ntj#| _ t$|| _!|
| _"d | _%d | _&d | _'d | _(t) | _*d | _+d | _,d | _-d| _.d | _/|0d	i 1 | _2t3| j20d
tj4| j20dd| j20dtj5| j20dd| j20dd | j20dd| j20dd| j20ddd| _6d | _7d| _8| j2| j*_2| j6| j*_6d S )N,z:// ssl_versionca_certsciphersTFsettingsinsert_block_sizestrings_as_bytesstrings_encoding	use_numpyopentelemetry_traceparentopentelemetry_tracestate 	quota_keyinput_format_null_as_default)ra   rb   rc   rd   re   rf   rh   ri   )9stack_trackr   DEFAULT_SECURE_PORTDEFAULT_PORThostssplitr
   r   
clickhouseappendhostnamerP   rQ   rO   rM   rN   	DBMS_NAMErR   rS   rT   rU   settings_is_importantasyncioLock_locksecure_socketrY   ssl_optionsr   lz4r   DISABLEDrW   compressor_clsrV   ENABLEDr   	connectedreaderwriterserver_infor   contextblock_readerblock_writerblock_reader_rawis_query_executingclient_trace_contextpopcopyr`   intDEFAULT_INSERT_BLOCK_SIZESTRINGS_ENCODINGclient_settings
last_queryavailable_client_settings)rA   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   r]   r^   r_   rZ   rj   rs   kwargsdefault_porturlrx   r6   r6   r7   rB   K   s   



zConnection.__init__c                 C   sB   | j rddlm} || j| j| jS ddlm} || j| j| jS )Nr   )CompressedBlockReader)r%   )rW   asynch.proto.streams.compressedr   r~   r   r   asynch.proto.streams.blockr%   )rA   r   r%   r6   r6   r7   get_block_reader   s   zConnection.get_block_readerc                 C   sT   | j r| t }ddlm} || j| j| j|| jS ddl	m
} || j| j| jS )Nr-   )CompressedBlockWriter)r&   )rW   r{   r(   streams.compressedr   r~   r   r   rV   streams.blockr&   )rA   
compressorr   r&   r6   r6   r7   get_block_writer   s   zConnection.get_block_writerc                    s   | j tjI d H  | j | jI d H  | j tjI d H  | j tjI d H  | j tj	I d H  | j | j
I d H  | j | jI d H  | j | jI d H  | j  I d H  d S r9   )r   write_varintr   HELLO	write_strrR   r   CLIENT_VERSION_MAJORCLIENT_VERSION_MINORCLIENT_REVISIONrQ   rM   rN   flushr@   r6   r6   r7   
send_hello   s   zConnection.send_helloc                 C   s   | j  d| j S )N:)rO   rP   r@   r6   r6   r7   
get_server   s   zConnection.get_serverc                 C   s   t |}d|  ||S )Nz6Unexpected packet from server {} (expected {}, got {}))r   to_strformatr   )rA   expectedpacket_typer6   r6   r7   unexpected_packet_message   s   

z$Connection.unexpected_packet_messagec           
         s(  | j  I d H }|tjkrw| j  I d H }| j  I d H }| j  I d H }| j  I d H }d }|tjkr=| j  I d H }d}|tjkrL| j  I d H }|}|tjkr[| j  I d H }t	|||||||| _
| j
| j_
td||||| d S |tjkr|  I d H |  I d H  | d|}	t|	)Nrg   z5Connected to %s server version %s.%s.%s, revision: %szHello or Exception)r~   read_varintr   r   read_strr   &DBMS_MIN_REVISION_WITH_SERVER_TIMEZONE*DBMS_MIN_REVISION_WITH_SERVER_DISPLAY_NAME$DBMS_MIN_REVISION_WITH_VERSION_PATCHr   r   r   loggerdebug	EXCEPTIONread_exception
disconnectr   r   )
rA   r   server_nameserver_version_majorserver_version_minorserver_revisionserver_timezoneserver_display_nameserver_version_patchmessager6   r6   r7   receive_hello   sN   




	
zConnection.receive_helloc                 C   s   | j sd S ttj}| jd}|r| j|O  _| jd}|r(|| n|tj	j
 | jd}|r<|| | jrFtjj|_|S d|_tjj|_|S )Nr]   r^   r_   F)rw   ssl
SSLContextPROTOCOL_TLS_CLIENTrx   getoptionsload_verify_locationsload_default_certsPurposeSERVER_AUTHset_ciphersrY   
VerifyModeCERT_REQUIREDverify_modecheck_hostname	CERT_NONE)rA   ssl_ctxr]   r^   r_   r6   r6   r7   _get_ssl_context  s&   


zConnection._get_ssl_contextreturnc              
      s`  z\| j j  rtd| j  |  I d H  W dS | jtjI d H  | j	 I d H  | j 
 I d H }|tjkrL|  I d H  | j 
 I d H }|tjks8|tjkr[| d|}t|W dS  tym   td|  Y dS  ty } ztjd|d W Y d }~dS d }~w tttfy } zt|trdt|vr|tjd	|d W Y d }~dS d }~ww )
Nz	%s at EOFFPongTzThe connection %s is not openzPing package smaller than expected or empty. There may be connection or network problems - we believe that the connection is incorrect.exc_infozTCPTransport closed=TrueSocket closed)r~   at_eofr   r   r   r   r   r   PINGr   r   r   PROGRESSreceive_progressPONGr   r   AttributeError
IndexErrorConnectionErrorOSErrorRuntimeError
isinstancestr)rA   r   msger6   r6   r7   ping2  sD   


zConnection.pingc                    s>   | j j}|tjkr| j I d H  |r| jn| j I d H S r9   )	r   revisionr   'DBMS_MIN_REVISION_WITH_TEMPORARY_TABLESr~   r   r   r   read)rA   rawr   r6   r6   r7   receive_dataT  s
   
zConnection.receive_datac                    s   |   I d H S r9   )r   r@   r6   r6   r7   receive_exceptionZ  s   zConnection.receive_exceptionc           	         s   | j  I d H }| j  I d H }| j  I d H }| j  I d H }t| j  I d H }d}|r5||d 7 }|dkr?||d 7 }||7 }| jrL|d| 7 }d }|rW|  I d H }t|||dS )Nrg   z. zDB::Exceptionz. Stack trace:

)nested)r~   
read_int32r   bool
read_uint8rj   r   r   )	rA   additional_messagecodenamer   stack_trace
has_nestednew_messager   r6   r6   r7   r   ]  s$   zConnection.read_exceptionc                    s   t | j}| I d H  |S r9   )r   r~   r   )rA   r>   r6   r6   r7   receive_profile_infou  s   
zConnection.receive_profile_infor   c                    s(   t |} fddt|D I d H S )Nc                    s   g | ]
} j  I d H qS r9   )r~   r   ).0_ir@   r6   r7   
<listcomp>|  s    z:Connection.receive_multistring_message.<locals>.<listcomp>)r   strings_in_messagerange)rA   r   numr6   r@   r7   receive_multistring_messagez  s   
z&Connection.receive_multistring_messager;   c                 C   s   dd |j D }| D ]?}tt||}d|d   kr!dkr+n n| j|d  }n|d }|dp7|d }td	|d
 ||d ||d |d  qd S )Nc                 S   s   g | ]}|d  qS )r   r6   )r   xr6   r6   r7   r     s    z(Connection.log_block.<locals>.<listcomp>r-   priority   r   	thread_idthread_numberz[ %s ] [ %s ] {%s} <%s> %s: %s	host_namequery_idsourcetext)columns_with_typesget_rowsdictziplog_prioritiesr   r   info)rA   r;   column_namesrowr   r   r6   r6   r7   	log_block~  s"   zConnection.log_blockc                    s   |   I d H }|jtjkr|j|jtjkr | j|j dS |jtj	kr(dS |jtj
kr0|S |jtjkr8|S |jtjkr@|S |jtjkrO| j|j dS dS )NTF)_receive_packetr:   r   r   r<   r   r   store_progressr=   END_OF_STREAMDATATOTALSEXTREMESPROFILE_INFOstore_profiler>   rA   packetr6   r6   r7   receive_packet  s&   zConnection.receive_packetc                    s  t  }| j I d H  |_}|tjkr|  I d H |_|S |tjkr-| 	 I d H |_
|S |jtjkr=|  I d H |_|S |jtjkrM|  I d H |_|S |tjkr\|  I d H |_|S |tjkrk|  I d H |_|S |tjkr| jddI d H }| | |S |tjkrd| _|S |tjkr| |I d H |_|S |tjkr|  I d H |_|S |tjkr|  I d H |_|S |tjkr| jddI d H |_|S |  I d H  td| d|   )NT)r   FzUnknown packet z from server ) r8   r~   r   r:   r   r  r   r;   r   r   r<   r   r   r=   r  r   r>   r  r  LOGr  r  r   TABLE_COLUMNSr   r?   
PART_UUIDSREAD_TASK_REQUESTPROFILE_EVENTSr   r   r   )rA   r  r   r;   r6   r6   r7   r    sX   
$
!









zConnection._receive_packetc                 C  s,   	 |   I d H }|sd S |du rq|V  qNT)r  r  r6   r6   r7   packet_generator  s   zConnection.packet_generatorc                    s@   |   }|rt| j|||dS t| j|||d}| I d H S )Nwith_column_typescolumnar)r  r!   r~   r#   
get_result)rA   r  r=   r   	generatorresultr6   r6   r7   receive_result  s   

zConnection.receive_resultc                    s$   t | j}|| jjI d H  |S r9   )r   r~   r   r   r   )rA   r=   r6   r6   r7   r     s   

zConnection.receive_progressc                    s*   | j tjI d H  | j  I d H  d S r9   )r   r   r   CANCELr   r@   r6   r6   r7   send_cancel  s   zConnection.send_cancelrg   queryr   c                    s   | j tjI d H  | j |I d H  | jj}|tjkr2t	| j
| j | j}tj|_||I d H  |tjk}t| j | jj|| jI d H  |tjkrS| j dI d H  | j tjI d H  | j | jI d H  | j |I d H  td| | j  I d H  d S )Nrg   z	Query: %s)r   r   r   QUERYr   r   r   r   "DBMS_MIN_REVISION_WITH_CLIENT_INFOr   rR   r   r   INITIAL_QUERY
query_kindwrite5DBMS_MIN_REVISION_WITH_SETTINGS_SERIALIZED_AS_STRINGSr$   r`   rs   )DBMS_MIN_REVISION_WITH_INTERSERVER_SECRETr,   r5   rW   r   r   r   )rA   r'  r   r   client_infosettings_as_stringsr6   r6   r7   
send_query  s(   


zConnection.send_queryc                    s   ||| _ | _tj|||  dI d H \}}t|| _t|| _| 	 | _
t| j| j| j| _|  | _d| _|  I d H  |  I d H  d S )N)r   T)rO   rP   rt   open_connectionr   r(   r   r'   r~   r   r   r%   r   r   r   r   r}   r   r   )rA   rO   rP   r~   r   r6   r6   r7   _init_connection  s   



zConnection._init_connectionc                 C   s:   d | _ d | _d | _d | _d | _d | _d | _d | _d| _d S )NF)	r   r~   r   r   r   r}   r   r   r   r@   r6   r6   r7   reset_state*  s   
zConnection.reset_statec              
      sf   | j r1z
| j I d H  W n ty' } ztjd|d W Y d }~nd }~ww |   d| _ d S d S )Nr   r   F)r}   r   closer   r   r   r4  )rA   r   r6   r6   r7   r   7  s   
zConnection.disconnectc                    s^   | j r|  I d H  td| j| j | jD ]\}}td|| | ||I d H   S d S )Nz"Connecting. Database: %s. User: %szConnecting to %s:%s)r}   r   r   r   rQ   rM   rm   r3  )rA   rO   rP   r6   r6   r7   connectA  s   zConnection.connectc	              
      s   t  }	t| ||4 I dH > t|tttf}
|
r(| j||||||dI dH }n| j|||||||dI dH }| j	t  |	  |W  d  I dH  S 1 I dH sRw   Y  dS )a  
        Executes query.

        Establishes new connection if it wasn't established yet.
        After query execution connection remains intact for next queries.
        If connection can't be reused it will be closed and new connection will
        be created.

        :param query: query that will be send to server.
        :param args: substitution parameters for SELECT queries and data for
                       INSERT queries. Data for INSERT can be `list`, `tuple`
                       or :data:`~types.GeneratorType`.
                       Defaults to ``None`` (no parameters  or data).
        :param with_column_types: if specified column names and types will be
                                  returned alongside with result.
                                  Defaults to ``False``.
        :param external_tables: external tables to send.
                                Defaults to ``None`` (no external tables).
        :param query_id: the query identifier. If no query id specified
                         ClickHouse server will generate it.
        :param settings: dictionary of query settings.
                         Defaults to ``None`` (no additional settings).
        :param types_check: enables type checking of data for INSERT queries.
                            Causes additional overhead. Defaults to ``False``.
        :param columnar: if specified the result of the SELECT query will be
                         returned in column-oriented form.
                         It also allows to INSERT data in columnar form.
                         Defaults to ``False`` (row-like form).

        :return: * number of inserted rows for INSERT queries with data.
                   Returning rows count from INSERT FROM SELECT is not
                   supported.
                 * if `with_column_types=False`: `list` of `tuples` with
                   rows/columns.
                 * if `with_column_types=True`: `tuple` of 2 elements:
                    * The first element is `list` of `tuples` with
                      rows/columns.
                    * The second element information is about columns: names
                      and types.
        Nexternal_tablesr   types_checkr   )r  r8  r   r9  r   )
r   r   r   listtupler   process_insert_queryprocess_ordinary_queryr   store_elapsed)rA   r'  argsr  r8  r   r`   r9  r   
start_time	is_insertrvr6   r6   r7   executeI  s2   4		0zConnection.executec	           	   
      sd   t | ||4 I dH  | j|||||||dI dH W  d  I dH  S 1 I dH s+w   Y  dS )a  
        Executes SELECT query with progress information.
        See, :ref:`execute-with-progress`.

        :param query: query that will be send to server.
        :param args: substitution parameters for SELECT queries and data for
                       INSERT queries. Data for INSERT can be `list`, `tuple`
                       or :data:`~types.GeneratorType`.
                       Defaults to ``None`` (no parameters  or data).
        :param with_column_types: if specified column names and types will be
                                  returned alongside with result.
                                  Defaults to ``False``.
        :param external_tables: external tables to send.
                                Defaults to ``None`` (no external tables).
        :param query_id: the query identifier. If no query id specified
                         ClickHouse server will generate it.
        :param settings: dictionary of query settings.
                         Defaults to ``None`` (no additional settings).
        :param types_check: enables type checking of data for INSERT queries.
                            Causes additional overhead. Defaults to ``False``.
        :param columnar: if specified the result will be returned in
                         column-oriented form.
                         Defaults to ``False`` (row-like form).
        :return: :ref:`progress-query-result` proxy.
        N)paramsr  r8  r   r9  r   )r   $process_ordinary_query_with_progress)	rA   r'  r?  r  r8  r   r`   r9  r   r6   r6   r7   execute_with_progress  s   %
0z Connection.execute_with_progressrD  r  r8  r9  r   c                    sN   |d ur|  ||}| j||dI d H  | j||dI d H  | j|d|dS )Nr   r9  T)r  r=   r   substitute_paramsr1  send_external_tablesr$  rA   r'  rD  r  r8  r   r9  r   r6   r6   r7   rE    s   
z/Connection.process_ordinary_query_with_progressc                 C   s`   t |pi }| j }| jD ]}||v r||||< q|| j_| j }|| || j_d S r9   )r  r   r   r   r   r   r`   update)rA   r`   r   keyquery_settingsr6   r6   r7   make_query_settings  s   



zConnection.make_query_settingsc              	      sT   | j 4 I d H  | jrt d| _W d   I d H  d S 1 I d H s#w   Y  d S r  )rv   r   r   r@   r6   r6   r7   check_query_execution  s   .z Connection.check_query_executionc                    sV   |   I d H  | js|  I d H  d S |  I d H s)td |  I d H  d S d S )Nz$Connection was closed, reconnecting.)rQ  r}   r6  r   r   r  r@   r6   r6   r7   force_connect  s   
zConnection.force_connectc                    sR   |d ur|  ||}| j||dI d H  | j||dI d H  | j||dI d H S )NrG  rH  r  rI  rL  r6   r6   r7   r=    s   
z!Connection.process_ordinary_queryc                    sp   |pg D ]'}|d st d|d  dt|d |d |d}| j||d dI d H  q| t I d H  d S )N	structurezEmpty table "r   z" structuredatarH  )
table_name)
ValueErrorr   
send_block)rA   tablesr9  tabler;   r6   r6   r7   rK    s   zConnection.send_external_tablesc                    sP   | j tjI d H  | jj}|tjkr| j |I d H  | j	
|I d H  d S r9   )r   r   r   r  r   r   r   r   r   r   r,  )rA   r;   rU  r   r6   r6   r7   rW    s   

zConnection.send_blockc                 C   s&   t |ts	td| jdi t|S )Nz'Parameters are expected to be a mappingr6   )r   r   rV  r   r)   )r'  rD  r6   r6   r7   rJ  $  s   
zConnection.substitute_paramsc           
         sv   | j ||dI d H  | j||dI d H  |  I d H }|r9| j||||dI d H }|  I d H }	|	jr7|	j|S d S )NrG  rH  )r9  r   )r1  rK  receive_sample_block	send_datar  r<   )
rA   query_without_datarT  r8  r   r9  r   sample_blockrB  r  r6   r6   r7   r<  +  s   	zConnection.process_insert_queryc                    sv   	 |   I d H }|jtjkr|jS |jtjkr|j|jtjkr(| |j n|jtj	kr/n| 
d|j}t|q)NTzData, Exception or TableColumns)r  r:   r   r  r;   r   r<   r  r  r  r   r   )rA   r  r   r6   r6   r7   rZ  A  s    zConnection.receive_sample_blockc                    sz   d}| j j}|rtnt}|rtnt}|||d D ]}	||j|	|d}
| |
I d H  ||
j7 }q| | I d H  |S )Nr   ra   )r  rT  r9  )	r   r   r   r   r+   r*   r  rW  num_rows)rA   r]  rT  r9  r   inserted_rowsr   	block_clsslicerchunkr;   r6   r6   r7   r[  U  s   zConnection.send_datac                    sJ   |d ur|  ||}| j||dI d H  | j||dI d H  | j|dS )NrG  rH  r  )rJ  r1  rK  iter_receive_result)rA   r'  rD  r  r8  r   r9  r6   r6   r7   iter_process_ordinary_queryi  s   	z&Connection.iter_process_ordinary_queryc                 C   s   |   }t||dS )Nrc  )r  r    )rA   r  genr6   r6   r7   rd  y  s   zConnection.iter_receive_resultc                 C   s2   | d}| dr|dd    | _d S d S )Nz; zuse    )striplower
startswithrQ   )rA   r'  r6   r6   r7   track_current_database~  s   
z!Connection.track_current_databasec           	   	      s   t | ||4 I dH ; t|tttf}|r.| j|||||ddI dH W  d  I dH  S | j||||||dI dH W  d  I dH  S 1 I dH sLw   Y  dS )a  
        *New in version 0.0.14.*

        Executes SELECT query with results streaming. See, :ref:`execute-iter`.

        :param query: query that will be send to server.
        :param args: substitution parameters for SELECT queries and data for
                       INSERT queries. Data for INSERT can be `list`, `tuple`
                       or :data:`~types.GeneratorType`.
                       Defaults to ``None`` (no parameters  or data).
        :param with_column_types: if specified column names and types will be
                                  returned alongside with result.
                                  Defaults to ``False``.
        :param external_tables: external tables to send.
                                Defaults to ``None`` (no external tables).
        :param query_id: the query identifier. If no query id specified
                         ClickHouse server will generate it.
        :param settings: dictionary of query settings.
                         Defaults to ``None`` (no additional settings).
        :param types_check: enables type checking of data for INSERT queries.
                            Causes additional overhead. Defaults to ``False``.
        :return: :ref:`iter-query-result` proxy.
        NFr7  )rD  r  r8  r   r9  )r   r   r:  r;  r   r<  re  )	rA   r'  r?  r  r8  r   r`   r9  rA  r6   r6   r7   execute_iter  s,   "

0zConnection.execute_iter)Fr9   )FFF)rg   )NFNrg   NFF)NFNNFF)NNFF)FF)NFNNF)NFNrg   NF)Er/   r0   r1   r  r   DEFAULT_USERDEFAULT_PASSWORDDEFAULT_HOSTrl   DEFAULT_DATABASECLIENT_NAME DBMS_DEFAULT_CONNECT_TIMEOUT_SECDBMS_DEFAULT_TIMEOUT_SEC%DBMS_DEFAULT_SYNC_REQUEST_TIMEOUT_SECDEFAULT_COMPRESS_BLOCK_SIZEr   r   r	   r   rB   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r   r  r$  r   r&  r1  r3  r4  r   r6  rC  rF  r   r   r   r   rE  rP  rQ  rR  r=  rK  rW  staticmethodrJ  r<  rZ  r[  re  rd  rk  rl  r6   r6   r6   r7   rC   >   s\   	


p-
"
,


S
3





 





rC   )Frt   loggingr   collections.abcr   r   typesr   typingr   r   r   r   r	   urllib.parser
   asynch.errorsr   r   r   r   asynch.protor   asynch.proto.blockr   r   r   r   asynch.proto.compressionr   asynch.proto.contextr   r   asynch.proto.csr   r   r   asynch.proto.models.enumsr   r   asynch.proto.progressr   asynch.proto.protocolr   r   r   asynch.proto.resultr    r!   r"   r#   asynch.proto.settingsr$   r   r%   r&   asynch.proto.streams.bufferedr'   r(   asynch.proto.utils.escaper)   asynch.proto.utils.helpersr*   r+   	getLoggerr/   r   r,   r8   rC   r6   r6   r6   r7   <module>   s6    

