zmc
2023-08-08 e792e9a60d958b93aef96050644f369feb25d61b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
U
¸ý°d6Yã@sdZddlmZddlZddlZddlmZddlmZddlm    Z    ddl
m Z dd    l
m Z dd
l mZdd l mZdd l mZdd l mZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZer
ddlmZe  d¡Z!Gdd„dej"ƒZ#Gdd„deƒZ$Gdd„deƒZ%Gd d!„d!eƒZ&Gd"d#„d#ejj'ƒZ(Gd$d%„d%ejj)ƒZ*Gd&d'„d'eƒZ+Gd(d)„d)eƒZ,Gd*d+„d+ej-ƒZ.Gd,d-„d-ej/ƒZ0Gd.d/„d/ej1ƒZ2Gd0d1„d1ej3ƒZ4Gd2d3„d3ej5ƒZ6Gd4d5„d5ej7ƒZ8Gd6d7„d7ej9ƒZ:Gd8d9„d9ej;ƒZ<Gd:d;„d;e    j=ƒZ>Gd<d=„d=e    j?ƒZ@Gd>d?„d?e ƒZAGd@dA„dAeƒZBGdBdC„dCeƒZCdDdE„ZDGdFdG„dGe ƒZEGdHdI„dIƒZFGdJdK„dKeFƒZGGdLdM„dMeƒZHGdNdO„dOeHƒZIGdPdQ„dQƒZJGdRdS„dSeEƒZKeEZLeKZMdS)Tad
.. 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")
 
The ``psycopg`` dialect has the same API features as that of ``psycopg2``,
with the exception of the "fast executemany" helpers.   The "fast executemany"
helpers are expected to be generalized and ported to ``psycopg`` before the final
release of SQLAlchemy 2.0, however.
 
 
.. 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é)Úpool)Úutil)ÚAdaptedConnection)Úsqltypes)Úawait_fallback)Ú
await_only)ÚIterablezsqlalchemy.dialects.postgresqlc@seZdZdZdS)Ú    _PGStringTN©Ú__name__Ú
__module__Ú __qualname__Úrender_bind_cast©rrú]d:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\sqlalchemy/dialects/postgresql/psycopg.pyrZsrc@seZdZdZdS)Ú _PGREGCONFIGTNrrrrrr ^sr c@s eZdZdZdd„Zdd„ZdS)Ú_PGJSONTcCs| d|j¡S©N)Ú_make_bind_processorÚ _psycopg_Json©ÚselfÚdialectrrrÚbind_processoresz_PGJSON.bind_processorcCsdSr"r©r&r'ÚcoltyperrrÚresult_processorhsz_PGJSON.result_processorN©rrrrr(r+rrrrr!bsr!c@s eZdZdZdd„Zdd„ZdS)Ú_PGJSONBTcCs| d|j¡Sr")r#Ú_psycopg_Jsonbr%rrrr(osz_PGJSONB.bind_processorcCsdSr"rr)rrrr+rsz_PGJSONB.result_processorNr,rrrrr-lsr-c@seZdZdZdZdS)Ú_PGJSONIntIndexTypeZjson_int_indexTN©rrrZ__visit_name__rrrrrr/vsr/c@seZdZdZdZdS)Ú_PGJSONStrIndexTypeZjson_str_indexTNr0rrrrr1|sr1c@s eZdZdS)Ú_PGJSONPathTypeN©rrrrrrrr2‚sr2c@seZdZdZdS)Ú _PGIntervalTNrrrrrr4†sr4c@seZdZdZdS)Ú _PGTimeStampTNrrrrrr5Šsr5c@seZdZdZdS)Ú_PGDateTNrrrrrr6Žsr6c@seZdZdZdS)Ú_PGTimeTNrrrrrr7’sr7c@seZdZdZdS)Ú
_PGIntegerTNrrrrrr8–sr8c@seZdZdZdS)Ú_PGSmallIntegerTNrrrrrr9šsr9c@seZdZdZdS)Ú _PGNullTypeTNrrrrrr:žsr:c@seZdZdZdS)Ú _PGBigIntegerTNrrrrrr;¢sr;c@seZdZdZdS)Ú
_PGBooleanTNrrrrrr<¦sr<c@seZdZdd„Zdd„ZdS)Ú _PsycopgRangecstt|ƒj‰‡fdd„}|S)Ncs&t|tjƒr"ˆ|j|j|j|jƒ}|Sr")Ú
isinstancerÚRangeÚlowerÚupperÚboundsÚempty©Úvalue©Ú psycopg_RangerrÚto_range®s ÿz._PsycopgRange.bind_processor.<locals>.to_range)rÚPGDialect_psycopgÚ_psycopg_Range©r&r'rHrrFrr(«s  z_PsycopgRange.bind_processorcCs dd„}|S)NcSs2|dk    r.tj|j|j|jr |jnd|j d}|S)Nú[)©rBrC©rr?Z_lowerZ_upperZ_boundsrDrrrrH¸süz0_PsycopgRange.result_processor.<locals>.to_ranger©r&r'r*rHrrrr+·s
z_PsycopgRange.result_processorN©rrrr(r+rrrrr=ªs r=c@seZdZdd„Zdd„ZdS)Ú_PsycopgMultiRangecs4tt|ƒj‰tt|ƒj‰tdƒ‰‡‡‡fdd„}|S)Ncs0t|tˆˆfƒr|Sˆ‡fdd„td|ƒDƒƒS)Ncs"g|]}ˆ|j|j|j|jƒ‘qSr)r@rArBrC)Ú.0ÚelementrFrrÚ
<listcomp>ÓsúüzG_PsycopgMultiRange.bind_processor.<locals>.to_range.<locals>.<listcomp>zIterable[ranges.Range])r>ÚstrrrD©ZNoneTypeZpsycopg_MultirangerGrrrHÎs
ùÿz3_PsycopgMultiRange.bind_processor.<locals>.to_range)rrIrJÚ_psycopg_MultirangeÚtyperKrrVrr(Æs ÿz!_PsycopgMultiRange.bind_processorcCs dd„}|S)NcSs|dk    rdd„|Dƒ}|S)NcSs2g|]*}tj|j|j|jr |jnd|j d‘qS)rLrMrN)rRÚelemrrrrTãsúüzI_PsycopgMultiRange.result_processor.<locals>.to_range.<locals>.<listcomp>rrDrrrrHás
ù
z5_PsycopgMultiRange.result_processor.<locals>.to_rangerrOrrrr+àsz#_PsycopgMultiRange.result_processorNrPrrrrrQÅsrQc@s eZdZdS)ÚPGExecutionContext_psycopgNr3rrrrrZòsrZc@s eZdZdS)ÚPGCompiler_psycopgNr3rrrrr[ösr[c@s eZdZdS)ÚPGIdentifierPreparer_psycopgNr3rrrrr\úsr\cCst d|j|j¡dS)Nz%s: %s)ÚloggerÚinfoZseverityZmessage_primary)Z
diagnosticrrrÚ _log_noticesþsr_c's´eZdZdZdZdZdZdZeZ    e
Z e Z dZdZdZe ejejeeeeeejeeeejjeejj e!ejj"e#ej$e%e&e%ej'e(ej)e*ej+e,ej-e.ej/e0ej1e2e3j4e5e3j6e7i¡Z‡fdd„Z8‡fdd    „Z9d
d „Z:‡fd d „Z;e<dd„ƒZ=e<dd„ƒZ>ej?dd„ƒZ@ej?dd„ƒZAej?dd„ƒZBej?dd„ƒZCej?dd„ƒZDej?dd„ƒZEdd„ZF‡fd d!„ZGd"d#„ZHd$d%„ZId&d'„ZJd(d)„ZKd*d+„ZLd5d-d.„ZMd6d/d0„ZNd7d1d2„ZOej?d3d4„ƒZP‡ZQS)8rIÚpsycopgTZpyformat)rrNc s¶tƒjf|Ž|jr²t d|jj¡}|rFtdd„| ddd¡Dƒƒ|_|jdkrXt    dƒ‚d    d
l
m }||jj ƒ|_ }|jr”d    d lm}||j|ƒ|jr²d    d lm}||j|ƒdS) Nz(\d+)\.(\d+)(?:\.(\d+))?css|]}|dk    rt|ƒVqdSr")Úint)rRÚxrrrÚ    <genexpr>0sz-PGDialect_psycopg.__init__.<locals>.<genexpr>rér)rrrdz,psycopg version 3.0.2 or higher is required.r)Ú AdaptersMap)Úset_json_loads)Úset_json_dumps)ÚsuperÚ__init__ÚdbapiÚreÚmatchÚ __version__ÚtupleÚgroupÚpsycopg_versionÚ ImportErrorZ psycopg.adaptreÚadaptersÚ_psycopg_adapters_mapZ_json_deserializerZpsycopg.types.jsonrfZ_json_serializerrg)r&ÚkwargsÚmreZ adapters_maprfrg©Ú    __class__rrri*s* ÿ
 
ÿ ÿ
   zPGDialect_psycopg.__init__cs<tƒ |¡\}}|jr |j|d<|jdk    r4|j|d<||fS)NÚcontextÚclient_encoding)rhÚcreate_connect_argsrsry)r&ÚurlZcargsZcparamsrvrrrzIs 
 
 
z%PGDialect_psycopg.create_connect_argscCsddlm}| |jj|¡S©Nr)ÚTypeInfo)Ú psycopg.typesr}ÚfetchÚ
connectionÚdriver_connection)r&r€Únamer}rrrÚ_type_info_fetchSs z"PGDialect_psycopg._type_info_fetchcsbtƒ |¡|jsd|_|jr^| |d¡}|dk    |_|jr^ddlm}|||j    ƒ|||j
ƒdS)NFZhstorer)Úregister_hstore) rhÚ
initializeZinsert_returningZinsert_executemany_returningZuse_native_hstorerƒÚ_has_native_hstoreZpsycopg.types.hstorer„rsr€)r&r€r^r„rvrrr…Xs  
  zPGDialect_psycopg.initializecCs ddl}|S©Nr)r`)Úclsr`rrrÚ import_dbapipszPGDialect_psycopg.import_dbapicCstSr")ÚPGDialectAsync_psycopg)rˆr{rrrÚget_async_dialect_clsvsz'PGDialect_psycopg.get_async_dialect_clscCs&|jjj|jjj|jjj|jjjdœS)N)zREAD COMMITTEDzREAD UNCOMMITTEDzREPEATABLE READÚ SERIALIZABLE)rjZIsolationLevelZREAD_COMMITTEDZREAD_UNCOMMITTEDZREPEATABLE_READrŒ©r&rrrÚ_isolation_lookupzs
üz#PGDialect_psycopg._isolation_lookupcCsddlm}|jS©Nr)Újson)r~rZJson©r&rrrrr$ƒs zPGDialect_psycopg._psycopg_JsoncCsddlm}|jSr)r~rZJsonbr‘rrrr.‰s z PGDialect_psycopg._psycopg_JsonbcCsddlm}|S)Nr)ÚTransactionStatus)Ú
psycopg.pqr’)r&r’rrrÚ_psycopg_TransactionStatuss z,PGDialect_psycopg._psycopg_TransactionStatuscCsddlm}|S)Nr)r?)Zpsycopg.types.ranger?)r&r?rrrrJ•s z PGDialect_psycopg._psycopg_RangecCsddlm}|S)Nr)Ú
Multirange)Zpsycopg.types.multiranger•)r&r•rrrrW›s z%PGDialect_psycopg._psycopg_MultirangecCs||_||_dSr"©Ú
autocommitÚisolation_level©r&r€r—r˜rrrÚ_do_isolation_level¡sz%PGDialect_psycopg._do_isolation_levelcs,|jj}tƒ |¡}||jjkr(| ¡|Sr")r^Útransaction_statusrhÚget_isolation_levelr”ÚIDLEÚrollback)r&Údbapi_connectionZ status_beforerErvrrrœ¥s
  z%PGDialect_psycopg.get_isolation_levelcCs4|dkr|j|dddn|j|d|j|ddS)NZ
AUTOCOMMITTr–F)ršrŽ)r&rŸÚlevelrrrÚset_isolation_level¯sÿýz%PGDialect_psycopg.set_isolation_levelcCs
||_dSr"©Z    read_only©r&r€rErrrÚ set_readonly»szPGDialect_psycopg.set_readonlycCs|jSr"r¢©r&r€rrrÚ get_readonly¾szPGDialect_psycopg.get_readonlycs>dd„}|g‰ˆjdk    r.‡fdd„}ˆ |¡‡fdd„}|S)NcSs| t¡dSr")Zadd_notice_handlerr_©ÚconnrrrÚnoticesÂsz-PGDialect_psycopg.on_connect.<locals>.noticescsˆ |ˆj¡dSr")r¡r˜r§rrrÚ
on_connectÉsz0PGDialect_psycopg.on_connect.<locals>.on_connectcsˆD] }||ƒqdSr"r)r¨Úfn)ÚfnsrrrªÏs)r˜Úappend)r&r©rªr)r¬r&rrªÁs
 
 zPGDialect_psycopg.on_connectcCs*t||jjƒr&|dk    r&|js"|jr&dSdS)NTF)r>rjÚErrorÚclosedÚbroken)r&Úer€ÚcursorrrrÚ is_disconnectÕs zPGDialect_psycopg.is_disconnectFc
Cs`|jj}|s|jj|jjkr$| ¡|j}z|s<| |d¡|     |¡W5|sZ| ||¡XdS)NT)
r€rŸr^r›r”rržr—Ú_do_autocommitÚexecute)r&r€ÚcommandÚrecoverZ
dbapi_connZbefore_autocommitrrrÚ_do_prepared_twophaseÛsÿÿü z'PGDialect_psycopg._do_prepared_twophasecCs.|r|j|d|›d|dn | |j¡dS)NzROLLBACK PREPARED 'ú'©r·)r¸Z do_rollbackr€©r&r€ÚxidZ is_preparedr·rrrÚdo_rollback_twophaseîs
ÿz&PGDialect_psycopg.do_rollback_twophasecCs.|r|j|d|›d|dn | |j¡dS)NzCOMMIT PREPARED 'r¹rº)r¸Z    do_commitr€r»rrrÚdo_commit_twophaseøs
ÿz$PGDialect_psycopg.do_commit_twophasecCsdS)Nú;rrrrrÚ_dialect_specific_select_onesz.PGDialect_psycopg._dialect_specific_select_one)F)TF)TF)RrrrZdriverÚsupports_statement_cacheZsupports_server_side_cursorsZdefault_paramstyleZsupports_sane_multi_rowcountrZZexecution_ctx_clsr[Zstatement_compilerr\Úpreparerrpr†rsrZ update_copyrZcolspecsrÚStringrr r r r!rr-rr2ÚJSONIntIndexTyper/ÚJSONStrIndexTyper1ZIntervalr4r    ÚDater6ÚDateTimer5ÚTimer7ÚIntegerr8Ú SmallIntegerr9Ú
BigIntegerr;rZ AbstractRanger=ZAbstractMultiRangerQrirzrƒr…Ú classmethodr‰r‹Zmemoized_propertyrŽr$r.r”rJrWršrœr¡r¤r¦rªr³r¸r½r¾rÀÚ __classcell__rrrvrrIs®îþ 
 
 
 
 
 
 
 
 
 
 
ÿ
ÿ
 
rIc@s€eZdZdZdZddœdd„Zdd„Zed    d
„ƒZej    d d
„ƒZd d „Z
ddd„Z dd„Z dd„Z dd„Zddd„Zdd„ZdS)ÚAsyncAdapt_psycopg_cursor©Ú_cursorÚawait_Ú_rowsNÚNone©ÚreturncCs||_||_g|_dSr"rÏ)r&r²rÑrrrri sz"AsyncAdapt_psycopg_cursor.__init__cCs t|j|ƒSr")ÚgetattrrЩr&r‚rrrÚ __getattr__sz%AsyncAdapt_psycopg_cursor.__getattr__cCs|jjSr"©rÐÚ    arraysizerrrrrÚsz#AsyncAdapt_psycopg_cursor.arraysizecCs ||j_dSr"rÙ©r&rErrrrÚscCs|j ¡|j ¡dSr")rÒÚclearrÐÚ_closerrrrÚcloses
zAsyncAdapt_psycopg_cursor.closecKsb| |jj||f|Ž¡}|jj}|r^|j|jjkr^| |j ¡¡}t|t    ƒsXt    |ƒ|_
n||_
|Sr") rÑrÐrµZpgresultÚstatusÚ_psycopg_ExecStatusZ    TUPLES_OKÚfetchallr>ÚlistrÒ)r&ÚqueryÚparamsÚkwÚresultÚresÚrowsrrrrµ!s
 z!AsyncAdapt_psycopg_cursor.executecCs| |j ||¡¡Sr")rÑrÐÚ executemany)r&rãZ
params_seqrrrré0sz%AsyncAdapt_psycopg_cursor.executemanyccs|jr|j d¡VqdSr‡©rÒÚpoprrrrÚ__iter__3sz"AsyncAdapt_psycopg_cursor.__iter__cCs|jr|j d¡SdSdSr‡rêrrrrÚfetchone8s z"AsyncAdapt_psycopg_cursor.fetchonecCs2|dkr|jj}|jd|…}|j|d…|_|Sr‡)rÐrÚrÒ)r&ÚsizeÚretvalrrrÚ    fetchmany?s
z#AsyncAdapt_psycopg_cursor.fetchmanycCs|j}g|_|Sr")rÒ)r&rïrrrráGsz"AsyncAdapt_psycopg_cursor.fetchall)N)N)rrrÚ    __slots__ràrirØÚpropertyrÚÚsetterrÞrµrérìrírðrárrrrrÎs
 
 
 
rÎc@s@eZdZddd„Zdd„Zdd„Zdd    d
„Zd d „Zd d„ZdS)ÚAsyncAdapt_psycopg_ss_cursorNcKs| |jj||f|Ž¡|Sr")rÑrÐrµ)r&rãrärårrrrµNsz$AsyncAdapt_psycopg_ss_cursor.executecCs| |j ¡¡dSr")rÑrÐrÞrrrrrÞRsz"AsyncAdapt_psycopg_ss_cursor.closecCs| |j ¡¡Sr")rÑrÐrírrrrríUsz%AsyncAdapt_psycopg_ss_cursor.fetchonercCs| |j |¡¡Sr")rÑrÐrð)r&rîrrrrðXsz&AsyncAdapt_psycopg_ss_cursor.fetchmanycCs| |j ¡¡Sr")rÑrÐrárrrrrá[sz%AsyncAdapt_psycopg_ss_cursor.fetchallccs>|j ¡}z| | ¡¡VWq
tk
r6Yq:Yq
Xq
dSr")rÐÚ    __aiter__rÑÚ    __anext__ÚStopAsyncIteration)r&Úiteratorrrrrì^s
 
z%AsyncAdapt_psycopg_ss_cursor.__iter__)N)r)    rrrrµrÞrírðrárìrrrrrôMs 
 
rôc@s’eZdZdZeeƒZddœdd„Zdd„Zdd    d
„Z    d d „Z
d d„Z dd„Z dd„Z edd„ƒZejdd„ƒZdd„Zdd„Zdd„Zdd„ZdS)ÚAsyncAdapt_psycopg_connectionrrÓrÔcCs
||_dSr"©Ú _connectionr¥rrrriksz&AsyncAdapt_psycopg_connection.__init__cCs t|j|ƒSr")rÖrûr×rrrrØnsz)AsyncAdapt_psycopg_connection.__getattr__NcKs$| |jj||f|Ž¡}t||jƒSr")rÑrûrµrÎ)r&rãrärår²rrrrµqsz%AsyncAdapt_psycopg_connection.executecOs4|jj||Ž}t|dƒr$t||jƒSt||jƒSdS)Nr‚)rûr²ÚhasattrrôrÑrÎ)r&Úargsrår²rrrr²us
 z$AsyncAdapt_psycopg_connection.cursorcCs| |j ¡¡dSr")rÑrûÚcommitrrrrrþ|sz$AsyncAdapt_psycopg_connection.commitcCs| |j ¡¡dSr")rÑrûržrrrrržsz&AsyncAdapt_psycopg_connection.rollbackcCs| |j ¡¡dSr")rÑrûrÞrrrrrނsz#AsyncAdapt_psycopg_connection.closecCs|jjSr")rûr—rrrrr—…sz(AsyncAdapt_psycopg_connection.autocommitcCs| |¡dSr"©Úset_autocommitrÛrrrr—‰scCs| |j |¡¡dSr")rÑrûrrÛrrrrsz,AsyncAdapt_psycopg_connection.set_autocommitcCs| |j |¡¡dSr")rÑrûr¡rÛrrrr¡sz1AsyncAdapt_psycopg_connection.set_isolation_levelcCs| |j |¡¡dSr")rÑrûÚ set_read_onlyrÛrrrr“sz+AsyncAdapt_psycopg_connection.set_read_onlycCs| |j |¡¡dSr")rÑrûÚset_deferrablerÛrrrr–sz,AsyncAdapt_psycopg_connection.set_deferrable)N)rrrrñÚ staticmethodrrÑrirØrµr²rþržrÞròr—rórr¡rrrrrrrùgs"
 
 
rùc@seZdZdZeeƒZdS)Ú%AsyncAdaptFallback_psycopg_connectionrN)rrrrñrrrÑrrrrršsrc@s"eZdZddœdd„Zdd„ZdS)ÚPsycopgAdaptDBAPIrÓrÔcCs2||_|jj ¡D]\}}|dkr||j|<qdS)NÚconnect)r`Ú__dict__Úitems)r&r`ÚkÚvrrrri szPsycopgAdaptDBAPI.__init__cOsJ| dd¡}t |¡r.tt|jjj||ŽƒƒStt    |jjj||ŽƒƒSdS©NÚasync_fallbackF)
rërÚasboolrrr`ZAsyncConnectionrrùr)r&Úargrår rrrr§s 
ÿÿÿzPsycopgAdaptDBAPI.connectN)rrrrirrrrrrŸsrc@s\eZdZdZdZedd„ƒZedd„ƒZdd„Zdd    „Z    d
d „Z
d d „Z dd„Z dd„Z dS)rŠTcCs"ddl}ddlm}|t_t|ƒS)Nr)Ú
ExecStatus)r`r“rrÎràr)rˆr`rrrrr‰¹s z#PGDialectAsync_psycopg.import_dbapicCs(|j dd¡}t |¡rtjStjSdSr )rãÚgetrr rZFallbackAsyncAdaptedQueuePoolZAsyncAdaptedQueuePool)rˆr{r rrrÚget_pool_classÂs
z%PGDialectAsync_psycopg.get_pool_classcCs&ddlm}|j}| | |j|¡¡Sr|)r~r}r€rÑrr)r&r€r‚r}ZadaptedrrrrƒÌs z'PGDialectAsync_psycopg._type_info_fetchcCs| |¡| |¡dSr")rr¡r™rrrršÒs
z*PGDialectAsync_psycopg._do_isolation_levelcCs| |¡dSr"rÿr£rrrr´Ösz%PGDialectAsync_psycopg._do_autocommitcCs| |¡dSr")rr£rrrr¤Ùsz#PGDialectAsync_psycopg.set_readonlycCs| |¡dSr")rr£rrrrÜsz%PGDialectAsync_psycopg.set_deferrablecCs|jSr"rúr¥rrrÚget_driver_connectionßsz,PGDialectAsync_psycopg.get_driver_connectionN)rrrZis_asyncrÁrÌr‰rrƒršr´r¤rrrrrrrеs
 
    rŠ)NÚ__doc__Ú
__future__rÚloggingrkÚtypingrrÚrZ_psycopg_commonrrÚbaser    r
r r rr rrrrZenginerZsqlrZutil.concurrencyrrrÚ    getLoggerr]rÃrr r!r-rÄr/rÅr1r2r4rÇr5rÆr6rÈr7rÉr8rÊr9ZNullTyper:rËr;ÚBooleanr<ZAbstractRangeImplr=ZAbstractMultiRangeImplrQrZr[r\r_rIrÎrôrùrrrŠr'Z dialect_asyncrrrrÚ<module>    sr3                    
 
 
-F3.