
    [h[                       d Z ddlm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	rddlm#Z# ddl$m%Z%  ej&        d          Z' G d dej(                  Z) G d d e          Z* G d! d"e          Z+ G d# d$e          Z, G d% d&ej        j-                  Z. G d' d(ej        j/                  Z0 G d) d*e          Z1 G d+ d,e          Z2 G d- d.ej3                  Z4 G d/ d0ej5                  Z6 G d1 d2ej7                  Z8 G d3 d4ej9                  Z: G d5 d6ej;                  Z< G d7 d8ej=                  Z> G d9 d:ej?                  Z@ G d; d<ejA                  ZB G d= d>ejC                  ZD G d? d@ejE                  ZF G dA dBe          ZG G dC dDe          ZH G dE dFe          ZIdG ZJ G dH dIe          ZK G dJ dK          ZL G dL dMeL          ZM G dN dOe          ZN G dP dQeN          ZO G dR dS          ZP G dT dUeK          ZQeKZReQZSdS )Vau  
.. 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.

Using a different Cursor class
------------------------------

One of the differences between ``psycopg`` and the older ``psycopg2``
is how bound parameters are handled: ``psycopg2`` would bind them
client side, while ``psycopg`` by default will bind them server side.

It's possible to configure ``psycopg`` to do client side binding by
specifying the ``cursor_factory`` to be ``ClientCursor`` when creating
the engine::

    from psycopg import ClientCursor

    client_side_engine = create_engine(
        "postgresql+psycopg://...",
        connect_args={"cursor_factory": ClientCursor},
    )

Similarly when using an async engine the ``AsyncClientCursor`` can be
specified::

    from psycopg import AsyncClientCursor

    client_side_engine = create_async_engine(
        "postgresql+psycopg://...",
        connect_args={"cursor_factory": AsyncClientCursor},
    )

.. seealso::

    `Client-side-binding cursors <https://www.psycopg.org/psycopg3/docs/advanced/cursors.html#client-side-binding-cursors>`_

    )annotations)dequeN)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)Iterable)AsyncConnectionzsqlalchemy.dialects.postgresqlc                      e Zd ZdZdS )	_PGStringTN__name__
__module____qualname__render_bind_cast     u/var/www/api.easyaligner.net/htdocs/venv_linux/lib/python3.11/site-packages/sqlalchemy/dialects/postgresql/psycopg.pyr   r              r$   r   c                      e Zd ZdZdS )_PGREGCONFIGTNr   r#   r$   r%   r(   r(      r&   r$   r(   c                      e Zd Zd Zd ZdS )_PGJSONc                8    |                      d |j                  S N)_make_bind_processor_psycopg_Jsonselfdialects     r%   bind_processorz_PGJSON.bind_processor   s    ((w/DEEEr$   c                    d S r,   r#   r0   r1   coltypes      r%   result_processorz_PGJSON.result_processor       tr$   Nr   r    r!   r2   r6   r#   r$   r%   r*   r*      s5        F F F    r$   r*   c                      e Zd Zd Zd ZdS )_PGJSONBc                8    |                      d |j                  S r,   )r-   _psycopg_Jsonbr/   s     r%   r2   z_PGJSONB.bind_processor   s    ((w/EFFFr$   c                    d S r,   r#   r4   s      r%   r6   z_PGJSONB.result_processor   r7   r$   Nr8   r#   r$   r%   r:   r:      s5        G G G    r$   r:   c                      e Zd ZdZdZdS )_PGJSONIntIndexTypejson_int_indexTNr   r    r!   __visit_name__r"   r#   r$   r%   r?   r?              %Nr$   r?   c                      e Zd ZdZdZdS )_PGJSONStrIndexTypejson_str_indexTNrA   r#   r$   r%   rE   rE      rC   r$   rE   c                      e Zd ZdS )_PGJSONPathTypeNr   r    r!   r#   r$   r%   rH   rH              Dr$   rH   c                      e Zd ZdZdS )_PGIntervalTNr   r#   r$   r%   rL   rL      r&   r$   rL   c                      e Zd ZdZdS )_PGTimeStampTNr   r#   r$   r%   rN   rN      r&   r$   rN   c                      e Zd ZdZdS )_PGDateTNr   r#   r$   r%   rP   rP      r&   r$   rP   c                      e Zd ZdZdS )_PGTimeTNr   r#   r$   r%   rR   rR      r&   r$   rR   c                      e Zd ZdZdS )
_PGIntegerTNr   r#   r$   r%   rT   rT      r&   r$   rT   c                      e Zd ZdZdS )_PGSmallIntegerTNr   r#   r$   r%   rV   rV      r&   r$   rV   c                      e Zd ZdZdS )_PGNullTypeTNr   r#   r$   r%   rX   rX      r&   r$   rX   c                      e Zd ZdZdS )_PGBigIntegerTNr   r#   r$   r%   rZ   rZ      r&   r$   rZ   c                      e Zd ZdZdS )
_PGBooleanTNr   r#   r$   r%   r\   r\      r&   r$   r\   c                      e Zd Zd Zd ZdS )_PsycopgRangec                F    t          t          |          j        fd}|S )Nc                    t          | t          j                  r" | j        | j        | j        | j                  } | S r,   )
isinstancer   Rangelowerupperboundsempty)valuepsycopg_Ranges    r%   to_rangez._PsycopgRange.bind_processor.<locals>.to_range   s@    %.. %KelEK  Lr$   )r   PGDialect_psycopg_psycopg_Range)r0   r1   ri   rh   s      @r%   r2   z_PsycopgRange.bind_processor   s6    .88G	 	 	 	 	 r$   c                    d }|S )Nc                v    | 6t          j        | j        | j        | j        r| j        nd| j                   } | S )N[)re   rf   r   rb   _lower_upper_boundsrg   s    r%   ri   z0_PsycopgRange.result_processor.<locals>.to_range   sG     LL,1MC5==t#m+	   Lr$   r#   r0   r1   r5   ri   s       r%   r6   z_PsycopgRange.result_processor   s    	 	 	 r$   Nr8   r#   r$   r%   r^   r^      s2        
 
 
    r$   r^   c                      e Zd Zd Zd ZdS )_PsycopgMultiRangec                    t          t          |          j        t          t          |          j        t	          d           fd}|S )Nc                    t          | t          f          r| S  fdt          d|           D                       S )Nc                T    g | ]$} |j         |j        |j        |j                  %S r#   )rc   rd   re   rf   ).0elementrh   s     r%   
<listcomp>zG_PsycopgMultiRange.bind_processor.<locals>.to_range.<locals>.<listcomp>   sK          "M	   r$   zIterable[ranges.Range])ra   strr   )rg   NoneTypepsycopg_Multirangerh   s    r%   ri   z3_PsycopgMultiRange.bind_processor.<locals>.to_range   sj    %#x1C!DEE %%    $((@%#H#H  
 
 
r$   )r   rj   rk   _psycopg_Multirangetype)r0   r1   ri   r   r   rh   s      @@@r%   r2   z!_PsycopgMultiRange.bind_processor   si    .88G!w
 

 	 ::	 	 	 	 	 	 	  r$   c                    d }|S )Nc                F    | d S t          j        d | D                       S )Nc              3     K   | ]:}t          j        |j        |j        |j        r|j        nd |j                   V  ;dS )rn   ro   Nrp   )r{   elems     r%   	<genexpr>zH_PsycopgMultiRange.result_processor.<locals>.to_range.<locals>.<genexpr>  sk       ) )  L/3|Et||"&,.	  ) ) ) ) ) )r$   )r   
MultiRangert   s    r%   ri   z5_PsycopgMultiRange.result_processor.<locals>.to_range  s?    }t( ) ) !&) ) )   r$   r#   ru   s       r%   r6   z#_PsycopgMultiRange.result_processor  s    	 	 	 r$   Nr8   r#   r$   r%   rw   rw      s2          4    r$   rw   c                      e Zd ZdS )PGExecutionContext_psycopgNrI   r#   r$   r%   r   r     rJ   r$   r   c                      e Zd ZdS )PGCompiler_psycopgNrI   r#   r$   r%   r   r     rJ   r$   r   c                      e Zd ZdS )PGIdentifierPreparer_psycopgNrI   r#   r$   r%   r   r     rJ   r$   r   c                R    t                               d| j        | j                   d S )Nz%s: %s)loggerinfoseveritymessage_primary)
diagnostics    r%   _log_noticesr   !  s$    
KK*-z/IJJJJJr$   c                      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j        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j0        e1ej2        e3e4j5        e6e4j7        e8i          Z fdZ9 fdZ:d Z; fd	Z<e=d
             Z>e=d             Z?ej@        d             ZAej@        d             ZBej@        d             ZCej@        d             ZDej@        d             ZEej@        d             ZFd ZG fdZHd ZId ZJd ZKd ZLd ZMddZN	 ddZO	 ddZPej@        d             ZQ xZRS ) rj   psycopgTpyformat)r   r   Nc                    t                      j        di | | j        r%t          j        d| j        j                  }|r3t          d |                    ddd          D                       | _        | j        dk     rt          d          dd	l
m}  || j        j                  x| _        }| j        d
u rNdd l}|                    d|j        j        j                   |                    d|j        j        j                   | j        rddlm}  || j        |           | j        rddlm}  || j        |           d S d S d S )Nz(\d+)\.(\d+)(?:\.(\d+))?c              3  8   K   | ]}|t          |          V  d S r,   )int)r{   xs     r%   r   z-PGDialect_psycopg.__init__.<locals>.<genexpr>T  s1       - - CFF- -r$   r      r   )r   r   r   z,psycopg version 3.0.2 or higher is required.r   )AdaptersMapFinetcidr)set_json_loads)set_json_dumpsr#   )super__init__dbapirematch__version__tuplegrouppsycopg_versionImportErrorpsycopg.adaptr   adapters_psycopg_adapters_map_native_inet_typespsycopg.types.stringregister_loadertypesstring
TextLoader_json_deserializerpsycopg.types.jsonr   _json_serializerr   )	r0   kwargsmr   adapters_mapr   r   r   	__class__s	           r%   r   zPGDialect_psycopg.__init__N  s   ""6""": $	D4dj6LMMA ', - -$%GGAq!$4$4- - - ( ($ #i//!B   2111118C
#9 9 D& &%//++++,,GM0;   ,,GM0;   & F======t6EEE$ D======t4lCCCCCI$	D $	DBD Dr$   c                    t                                          |          \  }}| j        r
| j        |d<   | j        
| j        |d<   ||fS )Ncontextclient_encoding)r   create_connect_argsr   r   )r0   urlcargscparamsr   s       r%   r   z%PGDialect_psycopg.create_connect_argsw  sW    44S99w% 	<!%!;GI+)-)=G%&g~r$   c                N    ddl m} |                    |j        j        |          S Nr   )TypeInfo)psycopg.typesr   fetch
connectiondriver_connection)r0   r   namer   s       r%   _type_info_fetchz"PGDialect_psycopg._type_info_fetch  s.    ******~~j3EtLLLr$   c                F   t                                          |           | j        sd| _        | j        rg|                     |d          }|d u| _        | j        rCddlm} | j	        sJ  ||| j	                   |j
        sJ  |||j
        j                   d S d S d S )NFhstorer   )register_hstore)r   
initializeinsert_returninginsert_executemany_returninguse_native_hstorer   _has_native_hstorepsycopg.types.hstorer   r   r   r   )r0   r   r   r   r   s       r%   r   zPGDialect_psycopg.initialize  s    :&&& $ 	605D-
 ! 	O((X>>D&*$&6D#& 
O@@@@@@ 1111d&@AAA ",,,,j&;&MNNNNN	O 	O
O 
Or$   c                    dd l }|S )Nr   )r   )clsr   s     r%   import_dbapizPGDialect_psycopg.import_dbapi  s    r$   c                    t           S r,   )PGDialectAsync_psycopg)r   r   s     r%   get_async_dialect_clsz'PGDialect_psycopg.get_async_dialect_cls  s    %%r$   c                    | j         j        j        | j         j        j        | j         j        j        | j         j        j        dS )N)zREAD COMMITTEDzREAD UNCOMMITTEDzREPEATABLE READSERIALIZABLE)r   IsolationLevelREAD_COMMITTEDREAD_UNCOMMITTEDREPEATABLE_READr   r0   s    r%   _isolation_lookupz#PGDialect_psycopg._isolation_lookup  s?     #j7F $
 9 J#z8H J5B	
 
 	
r$   c                    ddl m} |j        S Nr   )json)r   r   Jsonr0   r   s     r%   r.   zPGDialect_psycopg._psycopg_Json  s    &&&&&&yr$   c                    ddl m} |j        S r   )r   r   Jsonbr   s     r%   r<   z PGDialect_psycopg._psycopg_Jsonb  s    &&&&&&zr$   c                    ddl m} |S )Nr   )TransactionStatus)
psycopg.pqr   )r0   r   s     r%   _psycopg_TransactionStatusz,PGDialect_psycopg._psycopg_TransactionStatus  s    000000  r$   c                    ddl m} |S )Nr   )rb   )psycopg.types.rangerb   )r0   rb   s     r%   rk   z PGDialect_psycopg._psycopg_Range  s    ------r$   c                    ddl m} |S )Nr   )
Multirange)psycopg.types.multiranger   )r0   r   s     r%   r   z%PGDialect_psycopg._psycopg_Multirange  s    777777r$   c                "    ||_         ||_        d S r,   
autocommitisolation_levelr0   r   r   r   s       r%   _do_isolation_levelz%PGDialect_psycopg._do_isolation_level  s     *
%4
"""r$   c                    |j         j        }t                                          |          }|| j        j        k    r|                                 |S r,   )r   transaction_statusr   get_isolation_levelr   IDLErollback)r0   dbapi_connectionstatus_beforerg   r   s       r%   r   z%PGDialect_psycopg.get_isolation_level  sP    (-@++,<== D;@@@%%'''r$   c                    |dk    r|                      |dd            d S |                      |d| j        |                    d S )N
AUTOCOMMITTr   F)r   r   )r0   r   levels      r%   set_isolation_levelz%PGDialect_psycopg.set_isolation_level  su    L  $$ T4 %      $$   $ 6u = %     r$   c                    ||_         d S r,   	read_onlyr0   r   rg   s      r%   set_readonlyzPGDialect_psycopg.set_readonly  s    $
r$   c                    |j         S r,   r  r0   r   s     r%   get_readonlyzPGDialect_psycopg.get_readonly  s    ##r$   c                b     d }|g j          fd}                    |           fd}|S )Nc                :    |                      t                     d S r,   )add_notice_handlerr   )conns    r%   noticesz-PGDialect_psycopg.on_connect.<locals>.notices  s    ##L11111r$   c                >                         | j                   d S r,   )r  r   )r  r0   s    r%   
on_connectz0PGDialect_psycopg.on_connect.<locals>.on_connect  s"    ((t/CDDDDDr$   c                (    D ]} ||            d S r,   r#   )r  fnfnss     r%   r  z0PGDialect_psycopg.on_connect.<locals>.on_connect  s+      4 r$   )r   append)r0   r  r  r  s   `  @r%   r  zPGDialect_psycopg.on_connect  sx    	2 	2 	2 i+E E E E E JJz"""	 	 	 	 	 r$   c                ^    t          || j        j                  r||j        s|j        rdS dS )NTF)ra   r   Errorclosedbroken)r0   er   cursors       r%   is_disconnectzPGDialect_psycopg.is_disconnect  s=    a)** 	z/E  J$5 tur$   Fc                X   |j         j        }|s|j        j        | j        j        k    r|                                 |j        }	 |s|                     |d           |	                    |           |s|                     ||           d S d S # |s|                     ||           w w xY w)NT)
r   r   r   r   r   r   r   r   _do_autocommitexecute)r0   r   commandrecover
dbapi_connbefore_autocommits         r%   _do_prepared_twophasez'PGDialect_psycopg._do_prepared_twophase  s    *;
	" 1.34 4 !!!&1	C$ 6##J555w'''$ C##J0ABBBBBC C$ C##J0ABBBBCs   -B B)c                z    |r|                      |d| d|           d S |                     |j                   d S )NzROLLBACK PREPARED ''r#  )r&  do_rollbackr   r0   r   xidis_preparedr#  s        r%   do_rollback_twophasez&PGDialect_psycopg.do_rollback_twophase  se      	4&&8#888' '      Z233333r$   c                z    |r|                      |d| d|           d S |                     |j                   d S )NzCOMMIT PREPARED 'r(  r)  )r&  	do_commitr   r+  s        r%   do_commit_twophasez$PGDialect_psycopg.do_commit_twophase(  sc      	2&&6666 '      NN:011111r$   c                    dS )N;r#   r   s    r%   _dialect_specific_select_onez.PGDialect_psycopg._dialect_specific_select_one2  s    sr$   )F)TF)Sr   r    r!   driversupports_statement_cachesupports_server_side_cursorsdefault_paramstylesupports_sane_multi_rowcountr   execution_ctx_clsr   statement_compilerr   preparerr   r   r   r   update_copyr	   colspecsr   Stringr   r   r(   r   r*   r   r   r:   r   rH   JSONIntIndexTyper?   JSONStrIndexTyperE   IntervalrL   r   DaterP   DateTimerN   TimerR   IntegerrT   SmallIntegerrV   
BigIntegerrZ   r   AbstractSingleRanger^   AbstractMultiRangerw   r   r   r   r   classmethodr   r   memoized_propertyr   r.   r<   r   rk   r   r   r   r  r	  r  r  r  r&  r.  r1  r4  __classcell__)r   s   @r%   rj   rj   %  s       F##' ##' 2++HO t!*	
OY	
|	
 '	
 F		

 M7	
 8	
 M&	
 M*,?	
 M*,?	
 {	
 k	
 M7	
 |	
 M7	
 j	
  !?!	
" #	
$ &%'9'	
 	
 H2'D 'D 'D 'D 'DR    M M M
O O O O O4   [
 & & [& 

 
 
 
  
 
  
 
! ! !
 
  
 
  
5 5 5    
 
 
% % %$ $ $  (  C C C C( :?4 4 4 4 :?2 2 2 2 
      r$   rj   c                      e Zd ZdZdZddZd Zed             Zej	        d             Zd	 Z
dd
Zd Zd Zd ZddZd ZdS )AsyncAdapt_psycopg_cursor)_cursorawait__rowsNreturnNonec                H    || _         || _        t                      | _        d S r,   )rP  rQ  r   rR  )r0   r  rQ  s      r%   r   z"AsyncAdapt_psycopg_cursor.__init__<  s    WW


r$   c                ,    t          | j        |          S r,   )getattrrP  r0   r   s     r%   __getattr__z%AsyncAdapt_psycopg_cursor.__getattr__A  s    t|T***r$   c                    | j         j        S r,   rP  	arraysizer   s    r%   r\  z#AsyncAdapt_psycopg_cursor.arraysizeD  s    |%%r$   c                    || j         _        d S r,   r[  r0   rg   s     r%   r\  z#AsyncAdapt_psycopg_cursor.arraysizeH  s    !&r$   c                j    | j                                          | j                                         d S r,   )rR  clearrP  _closer   s    r%   closezAsyncAdapt_psycopg_cursor.closeL  s0    
r$   c                   |                       | j        j        ||fi |          }| j        j        }|rU|j        | j        j        k    r@|                      | j                                                  }t          |          | _	        |S r,   )
rQ  rP  r!  pgresultstatus_psycopg_ExecStatus	TUPLES_OKfetchallr   rR  )r0   queryparamskwresultresrowss          r%   r!  z!AsyncAdapt_psycopg_cursor.executeQ  s    1T\1%FF2FFGGl#  	%3:!9!CCC;;t|446677DtDJr$   c                ^    |                      | j                            ||                    S r,   )rQ  rP  executemany)r0   ri  
params_seqs      r%   rp  z%AsyncAdapt_psycopg_cursor.executemany]  s&    {{4<33E:FFGGGr$   c              #  `   K   | j         r$| j                                         V  | j         "d S d S r,   rR  popleftr   s    r%   __iter__z"AsyncAdapt_psycopg_cursor.__iter__`  sJ      j 	'*$$&&&&& j 	' 	' 	' 	' 	'r$   c                F    | j         r| j                                         S d S r,   rs  r   s    r%   fetchonez"AsyncAdapt_psycopg_cursor.fetchoned  s%    : 	:%%'''4r$   c           	         || j         j        }| j        fdt          t	          |t                                        D             S )Nc                8    g | ]}                                 S r#   )rt  )r{   _rrs     r%   r}   z7AsyncAdapt_psycopg_cursor.fetchmany.<locals>.<listcomp>o  s!    @@@

@@@r$   )rP  r\  rR  rangeminlen)r0   sizer{  s     @r%   	fetchmanyz#AsyncAdapt_psycopg_cursor.fetchmanyj  sK    <<)DZ@@@@eCc"gg,>,>&?&?@@@@r$   c                `    t          | j                  }| j                                         |S r,   )listrR  r`  )r0   retvals     r%   rh  z"AsyncAdapt_psycopg_cursor.fetchallq  s*    dj!!
r$   rS  rT  r,   )r   r    r!   	__slots__rf  r   rY  propertyr\  setterrb  r!  rp  ru  rw  r  rh  r#   r$   r%   rO  rO  7  s        .I   
+ + + & & X& ' ' '  

 
 
 
H H H' ' '  A A A A    r$   rO  c                  6    e Zd Zd	dZd Zd Zd
dZd Zd ZdS )AsyncAdapt_psycopg_ss_cursorNc                T    |                       | j        j        ||fi |           | S r,   )rQ  rP  r!  )r0   ri  rj  rk  s       r%   r!  z$AsyncAdapt_psycopg_ss_cursor.executex  s3    (DL(=="==>>>r$   c                ^    |                      | j                                                   d S r,   )rQ  rP  rb  r   s    r%   rb  z"AsyncAdapt_psycopg_ss_cursor.close|  s(    DL&&(()))))r$   c                Z    |                      | j                                                  S r,   )rQ  rP  rw  r   s    r%   rw  z%AsyncAdapt_psycopg_ss_cursor.fetchone  "    {{4<0022333r$   r   c                \    |                      | j                            |                    S r,   )rQ  rP  r  )r0   r  s     r%   r  z&AsyncAdapt_psycopg_ss_cursor.fetchmany  s$    {{4<11$77888r$   c                Z    |                      | j                                                  S r,   )rQ  rP  rh  r   s    r%   rh  z%AsyncAdapt_psycopg_ss_cursor.fetchall  r  r$   c              #     K   | j                                         }	 	 |                     |                                          V  n# t          $ r Y d S w xY w=r,   )rP  	__aiter__rQ  	__anext__StopAsyncIteration)r0   iterators     r%   ru  z%AsyncAdapt_psycopg_ss_cursor.__iter__  sq      <))++	kk("4"4"6"6777777%   	s   )A 
AAr,   )r   )	r   r    r!   r!  rb  rw  r  rh  ru  r#   r$   r%   r  r  w  sx           * * *4 4 49 9 9 94 4 4    r$   r  c                      e Zd ZU ded<   dZ ee          ZddZd Z	dd	Z
d
 Zd Zd Zd Zed             Zej        d             Zd Zd Zd Zd ZdS )AsyncAdapt_psycopg_connectionr   _connectionr#   rS  rT  c                    || _         d S r,   r  r  s     r%   r   z&AsyncAdapt_psycopg_connection.__init__  s    %r$   c                ,    t          | j        |          S r,   )rW  r  rX  s     r%   rY  z)AsyncAdapt_psycopg_connection.__getattr__  s    t'...r$   Nc                z    |                       | j        j        ||fi |          }t          || j                   S r,   )rQ  r  r!  rO  )r0   ri  rj  rk  r  s        r%   r!  z%AsyncAdapt_psycopg_connection.execute  s@    5T-5eVJJrJJKK(===r$   c                     | j         j        |i |}t          |d          rt          || j                  S t          || j                  S )Nr   )r  r  hasattrr  rQ  rO  )r0   argsrk  r  s       r%   r  z$AsyncAdapt_psycopg_connection.cursor  sS    (!($5"5566"" 	B/DDD,VT[AAAr$   c                ^    |                      | j                                                   d S r,   )rQ  r  commitr   s    r%   r  z$AsyncAdapt_psycopg_connection.commit  s)    D$++--.....r$   c                ^    |                      | j                                                   d S r,   )rQ  r  r   r   s    r%   r   z&AsyncAdapt_psycopg_connection.rollback  s)    D$--//00000r$   c                ^    |                      | j                                                   d S r,   )rQ  r  rb  r   s    r%   rb  z#AsyncAdapt_psycopg_connection.close  s)    D$**,,-----r$   c                    | j         j        S r,   )r  r   r   s    r%   r   z(AsyncAdapt_psycopg_connection.autocommit  s    **r$   c                0    |                      |           d S r,   set_autocommitr^  s     r%   r   z(AsyncAdapt_psycopg_connection.autocommit  s    E"""""r$   c                `    |                      | j                            |                     d S r,   )rQ  r  r  r^  s     r%   r  z,AsyncAdapt_psycopg_connection.set_autocommit  +    D$33E::;;;;;r$   c                `    |                      | j                            |                     d S r,   )rQ  r  r  r^  s     r%   r  z1AsyncAdapt_psycopg_connection.set_isolation_level  s+    D$88??@@@@@r$   c                `    |                      | j                            |                     d S r,   )rQ  r  set_read_onlyr^  s     r%   r  z+AsyncAdapt_psycopg_connection.set_read_only  s+    D$22599:::::r$   c                `    |                      | j                            |                     d S r,   )rQ  r  set_deferrabler^  s     r%   r  z,AsyncAdapt_psycopg_connection.set_deferrable  r  r$   r  r,   )r   r    r!   __annotations__r  staticmethodr   rQ  r   rY  r!  r  r  r   rb  r  r   r  r  r  r  r  r#   r$   r%   r  r    s%            I\*%%F& & & &/ / /> > > >B B B/ / /1 1 1. . . + + X+ # # #< < <A A A; ; ;< < < < <r$   r  c                  (    e Zd ZdZ ee          ZdS )%AsyncAdaptFallback_psycopg_connectionr#   N)r   r    r!   r  r  r   rQ  r#   r$   r%   r  r    s"        I\.))FFFr$   r  c                      e Zd ZddZd ZdS )PsycopgAdaptDBAPIrS  rT  c                |    || _         | j         j                                        D ]\  }}|dk    r
|| j        |<   d S )Nconnect)r   __dict__items)r0   r   kvs       r%   r   zPsycopgAdaptDBAPI.__init__  sM    L)//11 	% 	%DAqI~~#$a 	% 	%r$   c           	     (   |                     dd          }|                     d| j        j        j                  }t	          j        |          r"t          t           ||i |                    S t          t           ||i |                    S )Nasync_fallbackFasync_creator_fn)
popr   r   r  r   asboolr  r   r  r   )r0   argrk  r  
creator_fns        r%   r  zPsycopgAdaptDBAPI.connect  s     0%88VV < D
 

 ;~&& 	8zz35"5566   1::s1b1122  r$   Nr  )r   r    r!   r   r  r#   r$   r%   r  r    s7        % % % %    r$   r  c                  f    e Zd ZdZdZed             Zed             Zd Zd Z	d Z
d Zd Zd	 Zd
S )r   Tc                L    dd l }ddlm} |t          _        t          |          S )Nr   )
ExecStatus)r   r   r  rO  rf  r  )r   r   r  s      r%   r   z#PGDialectAsync_psycopg.import_dbapi  s4    ))))))8B!5 )))r$   c                    |j                             dd          }t          j        |          rt          j        S t          j        S )Nr  F)ri  getr   r  r   FallbackAsyncAdaptedQueuePoolAsyncAdaptedQueuePool)r   r   r  s      r%   get_pool_classz%PGDialectAsync_psycopg.get_pool_class  s<    '7??;~&& 	.55--r$   c                x    ddl m} |j        }|                    |                    |j        |                    S r   )r   r   r   rQ  r   r   )r0   r   r   r   adapteds        r%   r   z'PGDialectAsync_psycopg._type_info_fetch  s?    ******'~~hnnW-FMMNNNr$   c                Z    |                     |           |                    |           d S r,   )r  r  r   s       r%   r   z*PGDialectAsync_psycopg._do_isolation_level  s0    !!*---&&77777r$   c                0    |                     |           d S r,   r  r  s      r%   r   z%PGDialectAsync_psycopg._do_autocommit      !!%(((((r$   c                0    |                     |           d S r,   )r  r  s      r%   r	  z#PGDialectAsync_psycopg.set_readonly  s      '''''r$   c                0    |                     |           d S r,   )r  r  s      r%   r  z%PGDialectAsync_psycopg.set_deferrable  r  r$   c                    |j         S r,   r  r  s     r%   get_driver_connectionz,PGDialectAsync_psycopg.get_driver_connection
  s    %%r$   N)r   r    r!   is_asyncr6  rK  r   r  r   r   r   r	  r  r  r#   r$   r%   r   r     s        H#* * [* . . [.O O O8 8 8) ) )( ( () ) )& & & & &r$   r   )T__doc__
__future__r   collectionsr   loggingr   typingr   r    r   _psycopg_commonr	   r
   baser   r   r   r   r   r   r   r   r   r   r   r   enginer   sqlr   util.concurrencyr   r   r   r   r   	getLoggerr   r?  r   r(   r*   r:   r@  r?   rA  rE   rH   rL   rD  rN   rC  rP   rE  rR   rF  rT   rG  rV   NullTyperX   rH  rZ   Booleanr\   AbstractSingleRangeImplr^   AbstractMultiRangeImplrw   r   r   r   r   rj   rO  r  r  r  r  r   r1   dialect_asyncr#   r$   r%   <module>r     s  U Ul # " " " " "        				                         6 6 6 6 6 6 ? ? ? ? ? ?             & & & & & &                                           ' ' ' ' ' '       . . . . . . * * * * * * (''''''		;	<	<           9       d       u       (-8       (-8   	 	 	 	 	l 	 	 	    (       8$       hm       hm       !       h+       (#       H'       !       F2   6* * * * *6 * * *Z	 	 	 	 	!C 	 	 		 	 	 	 	 	 	 		 	 	 	 	#7 	 	 	K K KO O O O O1 O O Od= = = = = = = =@    #<   41< 1< 1< 1< 1<$5 1< 1< 1<h* * * * *,I * * *
       .*& *& *& *& *&. *& *& *&Z &r$   