o
    E6dY                     @  s  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 ddlm	Z	 ddl
mZ dd	l
mZ dd
lmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlm Z  erddlm!Z! e"dZ#G dd dej$Z%G dd deZ&G dd  d eZ'G d!d" d"eZ(G d#d$ d$ejj)Z*G d%d& d&ejj+Z,G d'd( d(eZ-G d)d* d*eZ.G d+d, d,ej/Z0G d-d. d.ej1Z2G d/d0 d0ej3Z4G d1d2 d2ej5Z6G d3d4 d4ej7Z8G d5d6 d6ej9Z:G d7d8 d8ej;Z<G d9d: d:ej=Z>G d;d< d<e	j?Z@G d=d> d>e	jAZBG d?d@ d@eZCG dAdB dBeZDG dCdD dDeZEdEdF ZFG dGdH dHeZGG dIdJ dJZHG dKdL dLeHZIG dMdN dNeZJG dOdP dPeJZKG dQdR dRZLG dSdT dTeGZMeGZNeMZOdS )UaR  
.. dialect:: postgresql+psycopg
    :name: psycopg (a.k.a. psycopg 3)
    :dbapi: psycopg
    :connectstring: postgresql+psycopg://user:password@host:port/dbname[?key=value&key=value...]
    :url: https://pypi.org/project/psycopg/

``psycopg`` is the package and module name for version 3 of the ``psycopg``
database driver, formerly known as ``psycopg2``.  This driver is different
enough from its ``psycopg2`` predecessor that SQLAlchemy supports it
via a totally separate dialect; support for ``psycopg2`` is expected to remain
for as long as that package continues to function for modern Python versions,
and also remains the default dialect for the ``postgresql://`` dialect
series.

The SQLAlchemy ``psycopg`` dialect provides both a sync and an async
implementation under the same dialect name. The proper version is
selected depending on how the engine is created:

* calling :func:`_sa.create_engine` with ``postgresql+psycopg://...`` will
  automatically select the sync version, e.g.::

    from sqlalchemy import create_engine
    sync_engine = create_engine("postgresql+psycopg://scott:tiger@localhost/test")

* calling :func:`_asyncio.create_async_engine` with
  ``postgresql+psycopg://...`` will automatically select the async version,
  e.g.::

    from sqlalchemy.ext.asyncio import create_async_engine
    asyncio_engine = create_async_engine("postgresql+psycopg://scott:tiger@localhost/test")

The asyncio version of the dialect may also be specified explicitly using the
``psycopg_async`` suffix, as::

    from sqlalchemy.ext.asyncio import create_async_engine
    asyncio_engine = create_async_engine("postgresql+psycopg_async://scott:tiger@localhost/test")

.. seealso::

    :ref:`postgresql_psycopg2` - The SQLAlchemy ``psycopg``
    dialect shares most of its behavior with the ``psycopg2`` dialect.
    Further documentation is available there.

    )annotationsN)cast)TYPE_CHECKING   )ranges)_PGDialect_common_psycopg)"_PGExecutionContext_common_psycopg)INTERVAL)
PGCompiler)PGIdentifierPreparer)	REGCONFIG)JSON)JSONB)JSONPathType)CITEXT   )pool)util)AdaptedConnection)sqltypes)await_fallback)
await_only)Iterablezsqlalchemy.dialects.postgresqlc                   @     e Zd ZdZdS )	_PGStringTN__name__
__module____qualname__render_bind_cast r    r    }C:\Users\jesus\OneDrive\Desktop\erpjis_fastapi\backend\jisbackend\Lib\site-packages\sqlalchemy/dialects/postgresql/psycopg.pyr   U       r   c                   @  r   )_PGREGCONFIGTNr   r    r    r    r!   r#   Y   r"   r#   c                   @      e Zd ZdZdd Zdd ZdS )_PGJSONTc                 C     |  d |jS N)_make_bind_processor_psycopg_Jsonselfdialectr    r    r!   bind_processor`      z_PGJSON.bind_processorc                 C     d S r'   r    r+   r,   coltyper    r    r!   result_processorc      z_PGJSON.result_processorNr   r   r   r   r-   r2   r    r    r    r!   r%   ]       r%   c                   @  r$   )_PGJSONBTc                 C  r&   r'   )r(   _psycopg_Jsonbr*   r    r    r!   r-   j   r.   z_PGJSONB.bind_processorc                 C  r/   r'   r    r0   r    r    r!   r2   m   r3   z_PGJSONB.result_processorNr4   r    r    r    r!   r6   g   r5   r6   c                   @     e Zd ZdZdZdS )_PGJSONIntIndexTypeZjson_int_indexTNr   r   r   Z__visit_name__r   r    r    r    r!   r9   q       r9   c                   @  r8   )_PGJSONStrIndexTypeZjson_str_indexTNr:   r    r    r    r!   r<   w   r;   r<   c                   @     e Zd ZdS )_PGJSONPathTypeNr   r   r   r    r    r    r!   r>   }       r>   c                   @  r   )_PGIntervalTNr   r    r    r    r!   rA      r"   rA   c                   @  r   )_PGTimeStampTNr   r    r    r    r!   rB      r"   rB   c                   @  r   )_PGDateTNr   r    r    r    r!   rC      r"   rC   c                   @  r   )_PGTimeTNr   r    r    r    r!   rD      r"   rD   c                   @  r   )
_PGIntegerTNr   r    r    r    r!   rE      r"   rE   c                   @  r   )_PGSmallIntegerTNr   r    r    r    r!   rF      r"   rF   c                   @  r   )_PGNullTypeTNr   r    r    r    r!   rG      r"   rG   c                   @  r   )_PGBigIntegerTNr   r    r    r    r!   rH      r"   rH   c                   @  r   )
_PGBooleanTNr   r    r    r    r!   rI      r"   rI   c                   @     e Zd Zdd Zdd ZdS )_PsycopgRangec                   s   t t|j  fdd}|S )Nc                   s&   t | tjr | j| j| j| j} | S r'   )
isinstancer   Rangelowerupperboundsemptyvaluepsycopg_Ranger    r!   to_range   s
   z._PsycopgRange.bind_processor.<locals>.to_range)r   PGDialect_psycopg_psycopg_Ranger+   r,   rV   r    rT   r!   r-      s   z_PsycopgRange.bind_processorc                 C     dd }|S )Nc                 S  s2   | d urt j| j| j| jr| jnd| j d} | S )N[)rP   rQ   r   rM   Z_lowerZ_upperZ_boundsrR   r    r    r!   rV      s   z0_PsycopgRange.result_processor.<locals>.to_ranger    r+   r,   r1   rV   r    r    r!   r2      s   
z_PsycopgRange.result_processorNr   r   r   r-   r2   r    r    r    r!   rK      s    rK   c                   @  rJ   )_PsycopgMultiRangec                   s4   t t|jt t|jtd   fdd}|S )Nc                   s0   t | t fr
| S fddtd| D S )Nc                   s"   g | ]} |j |j|j|jqS r    )rN   rO   rP   rQ   ).0elementrT   r    r!   
<listcomp>   s    zG_PsycopgMultiRange.bind_processor.<locals>.to_range.<locals>.<listcomp>zIterable[ranges.Range])rL   strr   rR   NoneTypeZpsycopg_MultirangerU   r    r!   rV      s   
z3_PsycopgMultiRange.bind_processor.<locals>.to_range)r   rW   rX   _psycopg_MultirangetyperY   r    re   r!   r-      s   z!_PsycopgMultiRange.bind_processorc                 C  rZ   )Nc                 S  s   | d urdd | D } | S )Nc                 S  s2   g | ]}t j|j|j|jr|jnd |j dqS )r[   r\   r]   )ra   elemr    r    r!   rc      s    zI_PsycopgMultiRange.result_processor.<locals>.to_range.<locals>.<listcomp>r    rR   r    r    r!   rV      s
   
z5_PsycopgMultiRange.result_processor.<locals>.to_ranger    r^   r    r    r!   r2      s   z#_PsycopgMultiRange.result_processorNr_   r    r    r    r!   r`      s    r`   c                   @  r=   )PGExecutionContext_psycopgNr?   r    r    r    r!   rj      r@   rj   c                   @  r=   )PGCompiler_psycopgNr?   r    r    r    r!   rk      r@   rk   c                   @  r=   )PGIdentifierPreparer_psycopgNr?   r    r    r    r!   rl      r@   rl   c                 C  s   t d| j| j d S )Nz%s: %s)loggerinfoZseverityZmessage_primary)
diagnosticr    r    r!   _log_notices      rp   c                      s  e Zd ZdZdZdZdZdZeZ	e
ZeZdZdZdZeeji ejeeeeeeeejeeeejje ejj!e"ejj#e$ej%e&e'e&ej(e)ej*e+ej,e-ej.e/ej0e1ej2e3e4j5e6e4j7e8iZ fddZ9 fdd	Z:d
d Z; fddZ<e=dd Z>e=dd Z?ej@dd ZAej@dd ZBej@dd ZCej@dd ZDej@dd ZEej@dd ZFdd ZG fd d!ZHd"d# ZId$d% ZJd&d' ZKd(d) ZLd*d+ ZMd5d-d.ZN	,d6d/d0ZO	,d6d1d2ZPej@d3d4 ZQ  ZRS )7rW   psycopgTZpyformat)r   r   Nc                   s   t  jdi | | jrxtd| jj}|r%tdd |dddD | _| jdk r.t	dd	d
l
m} || jj | _}| jdu rXd	d l}|d|jjj |d|jjj | jrgd	dlm} || j| | jrzd	dlm} || j| d S d S d S )Nz(\d+)\.(\d+)(?:\.(\d+))?c                 s  s     | ]}|d urt |V  qd S r'   )int)ra   xr    r    r!   	<genexpr>,  s    z-PGDialect_psycopg.__init__.<locals>.<genexpr>r      r   )r   r   rv   z,psycopg version 3.0.2 or higher is required.r   )AdaptersMapFZinetZcidr)set_json_loads)set_json_dumpsr    )super__init__dbapirematch__version__tuplegrouppsycopg_versionImportErrorZpsycopg.adaptrw   adapters_psycopg_adapters_mapZ_native_inet_typesZpsycopg.types.stringZregister_loadertypesstringZ
TextLoaderZ_json_deserializerZpsycopg.types.jsonrx   Z_json_serializerry   )r+   kwargsmrw   Zadapters_maprr   rx   ry   	__class__r    r!   r{   &  s>   





!zPGDialect_psycopg.__init__c                   s<   t  |\}}| jr| j|d< | jd ur| j|d< ||fS )Ncontextclient_encoding)rz   create_connect_argsr   r   )r+   urlZcargsZcparamsr   r    r!   r   O  s   


z%PGDialect_psycopg.create_connect_argsc                 C  s   ddl m} ||jj|S Nr   )TypeInfo)psycopg.typesr   fetch
connectiondriver_connection)r+   r   namer   r    r    r!   _type_info_fetchY  s   z"PGDialect_psycopg._type_info_fetchc                   sj   t  | | jsd| _| jr1| |d}|d u| _| jr3ddlm} ||| j	 |||j
 d S d S d S )NFZhstorer   )register_hstore)rz   
initializeZinsert_returningZinsert_executemany_returningZuse_native_hstorer   _has_native_hstoreZpsycopg.types.hstorer   r   r   )r+   r   rn   r   r   r    r!   r   ^  s   
zPGDialect_psycopg.initializec                 C  s   dd l }|S Nr   )rr   )clsrr   r    r    r!   import_dbapiv  s   zPGDialect_psycopg.import_dbapic                 C  s   t S r'   )PGDialectAsync_psycopg)r   r   r    r    r!   get_async_dialect_cls|     z'PGDialect_psycopg.get_async_dialect_clsc                 C  s&   | j jj| j jj| j jj| j jjdS )N)zREAD COMMITTEDzREAD UNCOMMITTEDzREPEATABLE READSERIALIZABLE)r|   ZIsolationLevelZREAD_COMMITTEDZREAD_UNCOMMITTEDZREPEATABLE_READr   r+   r    r    r!   _isolation_lookup  s
   z#PGDialect_psycopg._isolation_lookupc                 C     ddl m} |jS Nr   )json)r   r   ZJsonr+   r   r    r    r!   r)        zPGDialect_psycopg._psycopg_Jsonc                 C  r   r   )r   r   ZJsonbr   r    r    r!   r7     r   z PGDialect_psycopg._psycopg_Jsonbc                 C     ddl m} |S )Nr   )TransactionStatus)
psycopg.pqr   )r+   r   r    r    r!   _psycopg_TransactionStatus     z,PGDialect_psycopg._psycopg_TransactionStatusc                 C  r   )Nr   )rM   )Zpsycopg.types.rangerM   )r+   rM   r    r    r!   rX     r   z PGDialect_psycopg._psycopg_Rangec                 C  r   )Nr   )
Multirange)Zpsycopg.types.multiranger   )r+   r   r    r    r!   rg     r   z%PGDialect_psycopg._psycopg_Multirangec                 C  s   ||_ ||_d S r'   
autocommitisolation_levelr+   r   r   r   r    r    r!   _do_isolation_level  s   
z%PGDialect_psycopg._do_isolation_levelc                   s,   |j j}t |}|| jjkr|  |S r'   )rn   transaction_statusrz   get_isolation_levelr   IDLErollback)r+   dbapi_connectionZstatus_beforerS   r   r    r!   r     s
   z%PGDialect_psycopg.get_isolation_levelc                 C  s6   |dkr| j |dd d d S | j |d| j| d d S )NZ
AUTOCOMMITTr   F)r   r   )r+   r   levelr    r    r!   set_isolation_level  s   

z%PGDialect_psycopg.set_isolation_levelc                 C  s
   ||_ d S r'   Z	read_onlyr+   r   rS   r    r    r!   set_readonly     
zPGDialect_psycopg.set_readonlyc                 C     |j S r'   r   r+   r   r    r    r!   get_readonly     zPGDialect_psycopg.get_readonlyc                   s>   dd }|g j d urfdd} |  fdd}|S )Nc                 S  s   |  t d S r'   )Zadd_notice_handlerrp   connr    r    r!   notices  r.   z-PGDialect_psycopg.on_connect.<locals>.noticesc                   s     |  j d S r'   )r   r   r   r   r    r!   
on_connect     z0PGDialect_psycopg.on_connect.<locals>.on_connectc                   s    D ]}||  qd S r'   r    )r   fn)fnsr    r!   r     s   
)r   append)r+   r   r   r    )r   r+   r!   r     s   

zPGDialect_psycopg.on_connectc                 C  s*   t || jjr|d ur|js|jrdS dS )NTF)rL   r|   Errorclosedbroken)r+   er   cursorr    r    r!   is_disconnect  s   zPGDialect_psycopg.is_disconnectFc              
   C  st   |j j}|s|jj| jjkr|  |j}z|s| |d |	| W |s.| || d S d S |s9| || w w )NT)
r   r   rn   r   r   r   r   r   _do_autocommitexecute)r+   r   commandrecoverZ
dbapi_connZbefore_autocommitr    r    r!   _do_prepared_twophase  s"   z'PGDialect_psycopg._do_prepared_twophasec                 C  0   |r| j |d| d|d d S | |j d S )NzROLLBACK PREPARED ''r   )r   Zdo_rollbackr   r+   r   xidZis_preparedr   r    r    r!   do_rollback_twophase  
   
z&PGDialect_psycopg.do_rollback_twophasec                 C  r   )NzCOMMIT PREPARED 'r   r   )r   Z	do_commitr   r   r    r    r!   do_commit_twophase  r   z$PGDialect_psycopg.do_commit_twophasec                 C  s   dS )N;r    r   r    r    r!   _dialect_specific_select_one  r   z.PGDialect_psycopg._dialect_specific_select_one)F)TF)Sr   r   r   Zdriversupports_statement_cacheZsupports_server_side_cursorsZdefault_paramstyleZsupports_sane_multi_rowcountrj   Zexecution_ctx_clsrk   Zstatement_compilerrl   preparerr   r   r   r   Zupdate_copyr   Zcolspecsr   Stringr   r   r#   r   r%   r   r   r6   r   r>   JSONIntIndexTyper9   JSONStrIndexTyper<   ZIntervalrA   r	   DaterC   DateTimerB   TimerD   IntegerrE   SmallIntegerrF   
BigIntegerrH   r   ZAbstractRangerK   ZAbstractMultiRanger`   r{   r   r   r   classmethodr   r   Zmemoized_propertyr   r)   r7   r   rX   rg   r   r   r   r   r   r   r   r   r   r   r   __classcell__r    r    r   r!   rW      s    	
)













rW   c                   @  s|   e Zd ZdZdZdddZdd Zed	d
 Zej	dd
 Zdd Z
dddZdd Zdd Zdd ZdddZdd ZdS )AsyncAdapt_psycopg_cursor_cursorawait__rowsNreturnNonec                 C  s   || _ || _g | _d S r'   r   )r+   r   r   r    r    r!   r{     s   
z"AsyncAdapt_psycopg_cursor.__init__c                 C     t | j|S r'   )getattrr   r+   r   r    r    r!   __getattr__     z%AsyncAdapt_psycopg_cursor.__getattr__c                 C     | j jS r'   r   	arraysizer   r    r    r!   r        z#AsyncAdapt_psycopg_cursor.arraysizec                 C  s   || j _d S r'   r   r+   rS   r    r    r!   r     s   c                 C  s   | j   | j  d S r'   )r   clearr   _closer   r    r    r!   close"  s   
zAsyncAdapt_psycopg_cursor.closec                 K  sh   |  | jj||fi |}| jj}|r2|j| jjkr2|  | j }t|t	s/t	|| _
|S || _
|S r'   )r   r   r   Zpgresultstatus_psycopg_ExecStatusZ	TUPLES_OKfetchallrL   listr   )r+   queryparamskwresultresrowsr    r    r!   r   '  s   

z!AsyncAdapt_psycopg_cursor.executec                 C  s   |  | j||S r'   )r   r   executemany)r+   r  Z
params_seqr    r    r!   r  6     z%AsyncAdapt_psycopg_cursor.executemanyc                 c  s$    | j r| j dV  | j sd S d S r   r   popr   r    r    r!   __iter__9  s   z"AsyncAdapt_psycopg_cursor.__iter__c                 C  s   | j r	| j dS d S r   r  r   r    r    r!   fetchone>  s   z"AsyncAdapt_psycopg_cursor.fetchonec                 C  s2   |d u r| j j}| jd| }| j|d  | _|S r   )r   r   r   )r+   sizeretvalr    r    r!   	fetchmanyE  s
   z#AsyncAdapt_psycopg_cursor.fetchmanyc                 C  s   | j }g | _ |S r'   )r   )r+   r  r    r    r!   r  M  s   z"AsyncAdapt_psycopg_cursor.fetchallr   r   r'   )r   r   r   	__slots__r  r{   r   propertyr   setterr   r   r  r  r  r  r  r    r    r    r!   r     s     




r   c                   @  s@   e Zd ZdddZdd Zdd Zdd	d
Zdd Zdd ZdS )AsyncAdapt_psycopg_ss_cursorNc                 K  s    |  | jj||fi | | S r'   )r   r   r   )r+   r  r  r  r    r    r!   r   T  s   z$AsyncAdapt_psycopg_ss_cursor.executec                 C     |  | j  d S r'   )r   r   r   r   r    r    r!   r   X  r  z"AsyncAdapt_psycopg_ss_cursor.closec                 C     |  | j S r'   )r   r   r  r   r    r    r!   r  [     z%AsyncAdapt_psycopg_ss_cursor.fetchoner   c                 C  s   |  | j|S r'   )r   r   r  )r+   r  r    r    r!   r  ^  r   z&AsyncAdapt_psycopg_ss_cursor.fetchmanyc                 C  r  r'   )r   r   r  r   r    r    r!   r  a  r  z%AsyncAdapt_psycopg_ss_cursor.fetchallc                 c  s:    | j  }	 z
| | V  W n
 ty   Y d S w qr'   )r   	__aiter__r   	__anext__StopAsyncIteration)r+   iteratorr    r    r!   r  d  s   
z%AsyncAdapt_psycopg_ss_cursor.__iter__r'   )r   )	r   r   r   r   r   r  r  r  r  r    r    r    r!   r  S  s    

r  c                   @  s   e Zd ZdZeeZdddZdd Zdd	d
Z	dd Z
dd Zdd Zdd Zedd Zejdd Zdd Zdd Zdd Zdd ZdS ) AsyncAdapt_psycopg_connectionr    r   r   c                 C  s
   || _ d S r'   _connectionr   r    r    r!   r{   q  r   z&AsyncAdapt_psycopg_connection.__init__c                 C  r   r'   )r   r"  r   r    r    r!   r   t  r   z)AsyncAdapt_psycopg_connection.__getattr__Nc                 K  s(   |  | jj||fi |}t|| j S r'   )r   r"  r   r   )r+   r  r  r  r   r    r    r!   r   w  s   z%AsyncAdapt_psycopg_connection.executec                 O  s4   | j j|i |}t|drt|| jS t|| jS )Nr   )r"  r   hasattrr  r   r   )r+   argsr  r   r    r    r!   r   {  s   
z$AsyncAdapt_psycopg_connection.cursorc                 C  r  r'   )r   r"  commitr   r    r    r!   r%    r  z$AsyncAdapt_psycopg_connection.commitc                 C  r  r'   )r   r"  r   r   r    r    r!   r     r  z&AsyncAdapt_psycopg_connection.rollbackc                 C  r  r'   )r   r"  r   r   r    r    r!   r     r  z#AsyncAdapt_psycopg_connection.closec                 C  r   r'   )r"  r   r   r    r    r!   r     r   z(AsyncAdapt_psycopg_connection.autocommitc                 C  s   |  | d S r'   set_autocommitr   r    r    r!   r     s   c                 C     |  | j| d S r'   )r   r"  r'  r   r    r    r!   r'    rq   z,AsyncAdapt_psycopg_connection.set_autocommitc                 C  r(  r'   )r   r"  r   r   r    r    r!   r     rq   z1AsyncAdapt_psycopg_connection.set_isolation_levelc                 C  r(  r'   )r   r"  set_read_onlyr   r    r    r!   r)    rq   z+AsyncAdapt_psycopg_connection.set_read_onlyc                 C  r(  r'   )r   r"  set_deferrabler   r    r    r!   r*    rq   z,AsyncAdapt_psycopg_connection.set_deferrabler  r'   )r   r   r   r  staticmethodr   r   r{   r   r   r   r%  r   r   r  r   r  r'  r   r)  r*  r    r    r    r!   r   m  s$    



r   c                   @  s   e Zd ZdZeeZdS )%AsyncAdaptFallback_psycopg_connectionr    N)r   r   r   r  r+  r   r   r    r    r    r!   r,    s    r,  c                   @  s   e Zd ZdddZdd ZdS )	PsycopgAdaptDBAPIr   r   c                 C  s2   || _ | j j D ]\}}|dkr|| j|< q	d S )Nconnect)rr   __dict__items)r+   rr   kvr    r    r!   r{     s   
zPsycopgAdaptDBAPI.__init__c                 O  sT   | dd}| d| jjj}t|rtt||i |S tt	||i |S )Nasync_fallbackFZasync_creator_fn)
r  rr   ZAsyncConnectionr.  r   asboolr,  r   r   r   )r+   argr  r3  Z
creator_fnr    r    r!   r.    s   

zPsycopgAdaptDBAPI.connectNr  )r   r   r   r{   r.  r    r    r    r!   r-    s    
r-  c                   @  s\   e Zd ZdZdZedd Zedd Zdd Zdd	 Z	d
d Z
dd Zdd Zdd ZdS )r   Tc                 C  s"   dd l }ddlm} |t_t|S )Nr   )
ExecStatus)rr   r   r6  r   r  r-  )r   rr   r6  r    r    r!   r     s   z#PGDialectAsync_psycopg.import_dbapic                 C  s$   |j dd}t|rtjS tjS )Nr3  F)r  getr   r4  r   ZFallbackAsyncAdaptedQueuePoolZAsyncAdaptedQueuePool)r   r   r3  r    r    r!   get_pool_class  s   
z%PGDialectAsync_psycopg.get_pool_classc                 C  s&   ddl m} |j}|||j|S r   )r   r   r   r   r   r   )r+   r   r   r   Zadaptedr    r    r!   r     s   z'PGDialectAsync_psycopg._type_info_fetchc                 C  s   | | || d S r'   )r'  r   r   r    r    r!   r     s   
z*PGDialectAsync_psycopg._do_isolation_levelc                 C     | | d S r'   r&  r   r    r    r!   r     r.   z%PGDialectAsync_psycopg._do_autocommitc                 C  r9  r'   )r)  r   r    r    r!   r     r.   z#PGDialectAsync_psycopg.set_readonlyc                 C  r9  r'   )r*  r   r    r    r!   r*    r.   z%PGDialectAsync_psycopg.set_deferrablec                 C  r   r'   r!  r   r    r    r!   get_driver_connection  r   z,PGDialectAsync_psycopg.get_driver_connectionN)r   r   r   is_asyncr   r   r   r8  r   r   r   r   r*  r:  r    r    r    r!   r     s    

r   )P__doc__
__future__r   loggingr}   typingr   r    r   Z_psycopg_commonr   r   baser	   r
   r   r   r   r   r   r   r   r   r   r   Zenginer   sqlr   Zutil.concurrencyr   r   r   	getLoggerrm   r   r   r#   r%   r6   r   r9   r   r<   r>   rA   r   rB   r   rC   r   rD   r   rE   r   rF   ZNullTyperG   r   rH   BooleanrI   ZAbstractRangeImplrK   ZAbstractMultiRangeImplr`   rj   rk   rl   rp   rW   r   r  r   r,  r-  r   r,   Zdialect_asyncr    r    r    r!   <module>   sv   -


-  F3-