+
    XjI                     D   R t ^ RIt^ RIt^RIHt ^RIHt ^RIH	t	 ^RIH
t
 ^RIHt ^RIHt ^RIHt ^R	IHt ^R
IHt ^RIHt ^RIHt ^RIHt ^RIHt ^RIHt ^RIHt ^RIHt ^RIHt ^RIHt ^RIHt ^RIHt ^RIH t  ^RI!H"t"  ! R R] PF                  4      t$ ! R R] PJ                  4      t& ! R R]&] PN                  4      t( ! R R]&4      t) ! R  R!]4      t* ! R" R#]4      t+ ! R$ R%] P&                  PX                  4      t- ! R& R'] P&                  P\                  4      t/ ! R( R)] P&                  P`                  4      t1 ! R* R+]4      t2 ! R, R-]4      t3 ! R. R/]4      t4 ! R0 R1] Pj                  4      t6 ! R2 R3] Pn                  4      t8 ! R4 R5] Pr                  4      t: ! R6 R7] Pv                  4      t< ! R8 R9] Pz                  4      t> ! R: R;] P~                  4      t@ ! R< R=] P                  4      tB ! R> R?] P                  4      tD ! R@ RA]4      tE ! RB RC]]4      tF ! RD RE]P                  4      tH ! RF RG]P                  4      tJ]P                  ! 4       tL ! RH RI]4      tM ! RJ RK4      tN ! RL RM]4      tO ! RN RO]4      tP ! RP RQ]4      tQ]QtRR# )Ra	  
.. dialect:: postgresql+pg8000
    :name: pg8000
    :dbapi: pg8000
    :connectstring: postgresql+pg8000://user:password@host:port/dbname[?key=value&key=value...]
    :url: https://pypi.org/project/pg8000/

.. versionchanged:: 1.4  The pg8000 dialect has been updated for version
   1.16.6 and higher, and is again part of SQLAlchemy's continuous integration
   with full feature support.

.. _pg8000_unicode:

Unicode
-------

pg8000 will encode / decode string values between it and the server using the
PostgreSQL ``client_encoding`` parameter; by default this is the value in
the ``postgresql.conf`` file, which often defaults to ``SQL_ASCII``.
Typically, this can be changed to ``utf-8``, as a more useful default::

    # client_encoding = sql_ascii # actually, defaults to database encoding
    client_encoding = utf8

The ``client_encoding`` can be overridden for a session by executing the SQL:

.. sourcecode:: sql

    SET CLIENT_ENCODING TO 'utf8';

SQLAlchemy will execute this SQL on all new connections based on the value
passed to :func:`_sa.create_engine` using the ``client_encoding`` parameter::

    engine = create_engine(
        "postgresql+pg8000://user:pass@host/dbname", client_encoding="utf8"
    )

.. _pg8000_ssl:

SSL Connections
---------------

pg8000 accepts a Python ``SSLContext`` object which may be specified using the
:paramref:`_sa.create_engine.connect_args` dictionary::

    import ssl

    ssl_context = ssl.create_default_context()
    engine = sa.create_engine(
        "postgresql+pg8000://scott:tiger@192.168.0.199/test",
        connect_args={"ssl_context": ssl_context},
    )

If the server uses an automatically-generated certificate that is self-signed
or does not match the host name (as seen from the client), it may also be
necessary to disable hostname checking::

    import ssl

    ssl_context = ssl.create_default_context()
    ssl_context.check_hostname = False
    ssl_context.verify_mode = ssl.CERT_NONE
    engine = sa.create_engine(
        "postgresql+pg8000://scott:tiger@192.168.0.199/test",
        connect_args={"ssl_context": ssl_context},
    )

.. _pg8000_isolation_level:

pg8000 Transaction Isolation Level
-------------------------------------

The pg8000 dialect offers the same isolation level settings as that
of the :ref:`psycopg2 <psycopg2_isolation_level>` dialect:

* ``READ COMMITTED``
* ``READ UNCOMMITTED``
* ``REPEATABLE READ``
* ``SERIALIZABLE``
* ``AUTOCOMMIT``

.. seealso::

    :ref:`postgresql_isolation_level`

    :ref:`psycopg2_isolation_level`


N)ranges)ARRAY)_DECIMAL_TYPES)_FLOAT_TYPES)
_INT_TYPES)ENUMINTERVAL)
PGCompiler)	PGDialect)PGExecutionContext)PGIdentifierPreparer)JSON)JSONB)JSONPathType)_SpaceVector)	OIDVECTOR)CITEXT)exc)util)
processors)sqltypes)quoted_namec                       ] tR t^~tRtRtR# )	_PGStringT N__name__
__module____qualname____firstlineno__render_bind_cast__static_attributes__r          /Users/wind/Downloads/Coruna-main学习资料A/backend/venv/lib/python3.14/site-packages/sqlalchemy/dialects/postgresql/pg8000.pyr   r   ~       r#   r   c                   *   a  ] tR t^t o RtR tRtV tR# )
_PGNumericTc                   V P                   '       dp   V\        9   d0   \        P                  ! \        P
                  V P                  4      # V\        9   g   V\        9   d   R # \        P                  ! RV,          4      hV\        9   d   R # V\        9   g   V\        9   d   \        P                  # \        P                  ! RV,          4      h)NzUnknown PG numeric type: %d)	asdecimalr   r   to_decimal_processor_factorydecimalDecimal_effective_decimal_return_scaler   r   r   InvalidRequestErrorto_floatselfdialectcoltypes   &&&r$   result_processor_PGNumeric.result_processor   s    >>>,&!>>OOT%I%I  N*g.C--1G;  ,&N*g.C!***--1G; r#   r   Nr   r   r   r    r!   r4   r"   __classdictcell____classdict__s   @r$   r'   r'      s      r#   r'   c                       ] tR t^tRtRtRtR# )_PGFloatfloatTr   Nr   r   r   r    __visit_name__r!   r"   r   r#   r$   r;   r;      s    Nr#   r;   c                   &   a  ] tR t^t o R tRtV tR# )_PGNumericNoBindc                    R # Nr   )r1   r2   s   &&r$   bind_processor_PGNumericNoBind.bind_processor       r#   r   N)r   r   r   r    rC   r"   r7   r8   s   @r$   r@   r@      s      r#   r@   c                   *   a  ] tR t^t o RtR tRtV tR# )_PGJSONTc                    R # rB   r   r0   s   &&&r$   r4   _PGJSON.result_processor   rE   r#   r   Nr6   r8   s   @r$   rG   rG            r#   rG   c                   *   a  ] tR t^t o RtR tRtV tR# )_PGJSONBTc                    R # rB   r   r0   s   &&&r$   r4   _PGJSONB.result_processor   rE   r#   r   Nr6   r8   s   @r$   rL   rL      rJ   r#   rL   c                   &   a  ] tR t^t o R tRtV tR# )_PGJSONIndexTypec                    \        R 4      h)zshould not be here)NotImplementedErrorr1   dbapis   &&r$   get_dbapi_type_PGJSONIndexType.get_dbapi_type   s    !"677r#   r   Nr   r   r   r    rU   r"   r7   r8   s   @r$   rP   rP      s     8 8r#   rP   c                       ] tR t^tRtRtRtR# )_PGJSONIntIndexTypejson_int_indexTr   Nr=   r   r#   r$   rY   rY          %Nr#   rY   c                       ] tR t^tRtRtRtR# )_PGJSONStrIndexTypejson_str_indexTr   Nr=   r   r#   r$   r]   r]      r[   r#   r]   c                       ] tR t^tRtR# )_PGJSONPathTyper   Nr   r   r   r    r"   r   r#   r$   r`   r`          r#   r`   c                   &   a  ] tR t^t o R tRtV tR# )_PGEnumc                    VP                   # rB   )UNKNOWNrS   s   &&r$   rU   _PGEnum.get_dbapi_type   s    }}r#   r   NrW   r8   s   @r$   rd   rd      s      r#   rd   c                   :   a  ] tR t^t o RtR t]R 4       tRtV t	R# )_PGIntervalTc                    VP                   # rB   r   rS   s   &&r$   rU   _PGInterval.get_dbapi_type   s    ~~r#   c                .    \        VP                  R 7      # ))	precision)ri   second_precision)clsintervalkws   &&,r$   adapt_emulated_to_native$_PGInterval.adapt_emulated_to_native   s    X%>%>??r#   r   N)
r   r   r   r    r!   rU   classmethodrr   r"   r7   r8   s   @r$   ri   ri      s&      @ @r#   ri   c                       ] tR t^tRtRtR# )_PGTimeStampTr   Nr   r   r#   r$   rv   rv      r%   r#   rv   c                       ] tR t^tRtRtR# )_PGDateTr   Nr   r   r#   r$   rx   rx      r%   r#   rx   c                       ] tR t^tRtRtR# )_PGTimeTr   Nr   r   r#   r$   rz   rz      r%   r#   rz   c                       ] tR t^tRtRtR# )
_PGIntegerTr   Nr   r   r#   r$   r|   r|      r%   r#   r|   c                       ] tR t^tRtRtR# )_PGSmallIntegerTr   Nr   r   r#   r$   r~   r~      r%   r#   r~   c                       ] tR t^tRtR# )_PGNullTyper   Nra   r   r#   r$   r   r      rb   r#   r   c                       ] tR t^tRtRtR# )_PGBigIntegerTr   Nr   r   r#   r$   r   r      r%   r#   r   c                       ] tR t^tRtRtR# )
_PGBooleanTr   Nr   r   r#   r$   r   r      r%   r#   r   c                       ] tR t^tRtRtR# )_PGARRAYTr   Nr   r   r#   r$   r   r      r%   r#   r   c                       ] tR tRtRtR# )_PGOIDVECTORi  r   Nra   r   r#   r$   r   r     rb   r#   r   c                   ,   a  ] tR tRt o R tR tRtV tR# )_Pg8000Rangei  c                @   a VP                   P                  oV3R  lpV# )c                    < \        V \        P                  4      '       d4   S! V P                  V P                  V P
                  V P                  4      p V # rB   )
isinstancer   Rangelowerupperboundsempty)valuepg8000_Ranges   &r$   to_range-_Pg8000Range.bind_processor.<locals>.to_range	  s>    %..$KKellEKK Lr#   rT   r   )r1   r2   r   r   s   && @r$   rC   _Pg8000Range.bind_processor  s    }}**	 r#   c                    R  pV# )c                     V eC   \         P                  ! V P                  V P                  V P                  V P
                  R7      p V # )Nr   r   r   r   r   r   r   is_emptyr   s   &r$   r   /_Pg8000Range.result_processor.<locals>.to_range  s9     KKKK <<..	 Lr#   r   )r1   r2   r3   r   s   &&& r$   r4   _Pg8000Range.result_processor  s    	 r#   r   Nr   r   r   r    rC   r4   r"   r7   r8   s   @r$   r   r     s     
 r#   r   c                   ,   a  ] tR tRt o R tR tRtV tR# )_Pg8000MultiRangei   c                @   a VP                   P                  oV3R  lpV# )c           	      8  < \        V \        4      '       d   . pV  Fx  p\        V\        P                  4      '       dE   VP	                  S! VP
                  VP                  VP                  VP                  4      4       Kg  VP	                  V4       Kz  	  V# V # rB   )	r   listr   r   appendr   r   r   r   )r   mrvr   s   &  r$   to_multirange7_Pg8000MultiRange.bind_processor.<locals>.to_multirange$  ss    %&&A!!V\\22		(!''188QWWM 		!  	r#   r   )r1   r2   r   r   s   && @r$   rC    _Pg8000MultiRange.bind_processor!  s    }}**	 r#   c                    R  pV# )c                 H    V f   R # \         P                  ! R V  4       4      # )Nc              3      "   T FG  p\         P                  ! VP                  VP                  VP                  VP
                  R 7      x  KI  	  R# 5i)r   Nr   ).0r   s   & r$   	<genexpr>L_Pg8000MultiRange.result_processor.<locals>.to_multirange.<locals>.<genexpr>9  sB      ) # LL  #s   AA)r   
MultiRanger   s   &r$   r   9_Pg8000MultiRange.result_processor.<locals>.to_multirange5  s,    }(( ) #	)  r#   r   )r1   r2   r3   r   s   &&& r$   r4   "_Pg8000MultiRange.result_processor4  s    		 r#   r   Nr   r8   s   @r$   r   r      s     & r#   r   c                   ,   a  ] tR tRt o R tR tRtV tR# )PGExecutionContext_pg8000iF  c                    R \        \        V 4      4      R,          : R\        \        4       4      R,          : 2p\        V P                  P                  4       V4      # )c_:   NN_)hexid_server_side_idServerSideCursor_dbapi_connectioncursor)r1   idents   & r$   create_server_side_cursor3PGExecutionContext_pg8000.create_server_side_cursorG  sE     D]2..O4E0Fr0JK 6 6 = = ?GGr#   c                .    V P                   '       g   R # R # rB   )compiledr1   s   &r$   pre_exec"PGExecutionContext_pg8000.pre_execK  s    }}} r#   r   N)r   r   r   r    r   r   r"   r7   r8   s   @r$   r   r   F  s     H r#   r   c                      a  ] tR tRt o RtR t]R 4       t]R 4       t]R 4       t	RR lt
R	 tR
 tRR ltR tR tR tRR ltRtV tR# )r   iP  Tc                    W n         Wn        R # rB   )r   r   )r1   r   r   s   &&&r$   __init__ServerSideCursor.__init__S  s    
r#   c                .    V P                   P                  # rB   )r   
connectionr   s   &r$   r   ServerSideCursor.connectionW  s    {{%%%r#   c                .    V P                   P                  # rB   )r   rowcountr   s   &r$   r   ServerSideCursor.rowcount[  s    {{###r#   c                .    V P                   P                  # rB   )r   descriptionr   s   &r$   r   ServerSideCursor.description_  s    {{&&&r#   Nc                    R V P                   ,           R,           V,           pV P                  P                  WBVR7       V # )zDECLARE z NO SCROLL CURSOR FOR )stream)r   r   execute)r1   	operationargsr   ops   &&&& r$   r   ServerSideCursor.executec  s7    $**$'??)KBV4r#   c                <    V P                   P                  W4       V # rB   )r   executemany)r1   r   
param_setss   &&&r$   r   ServerSideCursor.executemanyh  s    	6r#   c                    V P                   P                  R V P                  ,           4       V P                   P                  4       # )zFETCH FORWARD 1 FROM )r   r   r   fetchoner   s   &r$   r   ServerSideCursor.fetchonel  s1    3djj@A{{##%%r#   c                    Vf   V P                  4       # V P                  P                  R\        \	        V4      4      ,           R,           V P
                  ,           4       V P                  P                  4       # )NzFETCH FORWARD z FROM )fetchallr   r   strintr   )r1   nums   &&r$   	fetchmanyServerSideCursor.fetchmanyp  sX    ;==?"KK 3s3x=08;djjH ;;''))r#   c                    V P                   P                  R V P                  ,           4       V P                   P                  4       # )zFETCH FORWARD ALL FROM )r   r   r   r   r   s   &r$   r   ServerSideCursor.fetchally  s1    5

BC{{##%%r#   c                    V P                   P                  R V P                  ,           4       V P                   P                  4        R# )zCLOSE N)r   r   r   closer   s   &r$   r   ServerSideCursor.close}  s-    Htzz12r#   c                :    V P                   P                  ! V!   R # rB   )r   setinputsizes)r1   sizess   &*r$   r   ServerSideCursor.setinputsizes  s    !!5)r#   c                    R # rB   r   )r1   sizecolumns   &&&r$   setoutputsizeServerSideCursor.setoutputsize  s    r#   )r   r   )r   NrB   )r   r   r   r    server_sider   propertyr   r   r   r   r   r   r   r   r   r   r   r"   r7   r8   s   @r$   r   r   P  sx     K & & $ $ ' '
&*&* r#   r   c                   &   a  ] tR tRt o R tRtV tR# )PGCompiler_pg8000i  c                    V P                   ! VP                  3/ VB R ,           V P                   ! VP                  3/ VB ,           # )z %% )processleftright)r1   binaryoperatorrq   s   &&&,r$   visit_mod_binary"PGCompiler_pg8000.visit_mod_binary  s>    LL++ll6<<.2./	
r#   r   N)r   r   r   r    r  r"   r7   r8   s   @r$   r   r     s     
 
r#   r   c                   &   a  ] tR tRt o R tRtV tR# )PGIdentifierPreparer_pg8000i  c                H    \         P                  ! V .VO5/ VB  R V n        R# )FN)r   r   _double_percents)r1   r   kwargss   &*,r$   r   $PGIdentifierPreparer_pg8000.__init__  s"    %%d<T<V< %r#   )r	  N)r   r   r   r    r   r"   r7   r8   s   @r$   r  r    s     & &r#   r  c                     a  ] tR tRt o RtRtRtRtRtRt	]
t]t]tRtRtRt]P(                  ! ]P,                  / ]P0                  ]b]P4                  ]b]P8                  ]b]P<                  ]b]P@                  ]!b]PD                  ]#b]$]%b]&]&b]P<                  PN                  ](b]P<                  PR                  ]*b]P<                  PV                  ],b]P<                  PZ                  ].b]P^                  ]0b]1]0b]Pd                  ]3b]Pd                  ]3b]Ph                  ]5b/ ]Pl                  ]7b]Pp                  ]9b]Pt                  ];b]Px                  ]=b]P|                  ]?b]P                  ]Ab]B]Cb]DP                  ]Fb]DP                  ]Fb]DP                  ]Fb]DP                  ]Fb]DP                  ]Fb]DP                  ]Fb]DP                  ]Mb]DP                  ]Mb]DP                  ]Mb]DP                  ]MbC]DP                  ]M]DP                  ]M/C4      tRR ltS]P                  R 4       tU]VR 4       tWR	 tXR
 tYR tZR t[V 3R lR lt\R t]R t^R t_R t`R taR tbR tcRR ltdRR lteR tfR tg]P                  R 4       thRtiV tjR# )PGDialect_pg8000i  pg8000TformatNc                    \         P                  ! V 3/ VB  Wn        V P                  R8  d   \	        R4      hV P
                  '       d   \	        R4      hR# )   z$pg8000 1.16.6 or greater is requiredznThe pg8000 dialect does not fully implement ipaddress type handling; INET is supported by default, CIDR is notN)r        )r   r   client_encoding_dbapi_versionrR   _native_inet_types)r1   r  r
  s   &&,r$   r   PGDialect_pg8000.__init__  sX    4*6*.+%&LMM"""%  #r#   c                   V P                   '       dj   \        V P                   R 4      '       dN   \        \        P                  ! RV P                   P
                  4       Uu. uF  p\        V4      NK  	  up4      # R# u upi )__version__z(\d+)(?:[-\.]?|$))c   r  r  )rT   hasattrtuplerefindallr  r   )r1   xs   & r$   r  PGDialect_pg8000._dbapi_version  sr    :::'$**m<<  ZZ,djj.D.D F   s   !A>c                    \        R 4      # )r  )
__import__)ro   s   &r$   import_dbapiPGDialect_pg8000.import_dbapi  s    (##r#   c                    VP                  R R7      pRV9   d   \        VR,          4      VR&   VP                  VP                  4       . V3# )user)usernameport)translate_connect_argsr   updatequery)r1   urloptss   && r$   create_connect_args$PGDialect_pg8000.create_connect_args  sH    ))6):T>tF|,DLCIIDzr#   c                    \        WP                  P                  4      '       d   R \        V4      9   d   R# R\        V4      9   # )znetwork errorTzconnection is closed)r   rT   InterfaceErrorr   )r1   er   r   s   &&&&r$   is_disconnectPGDialect_pg8000.is_disconnect  s?    a22333L
 9
  &Q//r#   c                    R# )
AUTOCOMMIT)r6  zREAD COMMITTEDzREAD UNCOMMITTEDzREPEATABLE READSERIALIZABLEr   )r1   dbapi_connections   &&r$   get_isolation_level_values+PGDialect_pg8000.get_isolation_level_values  s    
 	
r#   c                    VP                  R R4      pVR8X  d
   RVn        R# RVn        VP                  4       pVP                  RV 24       VP                  R4       VP	                  4        R# )r    r6  TFz;SET SESSION CHARACTERISTICS AS TRANSACTION ISOLATION LEVEL COMMITN)replace
autocommitr   r   r   )r1   r8  levelr   s   &&& r$   set_isolation_level$PGDialect_pg8000.set_isolation_level  sl    c3'L *.'*/'%,,.FNN##('+ NN8$LLNr#   c                    < V ^8  d   QhRS[ /# )r   return)bool)r  r9   s   "r$   __annotate__PGDialect_pg8000.__annotate__   s     + +t +r#   c                ,    \        VP                  4      # rB   )rE  r?  )r1   
dbapi_conns   &&r$   detect_autocommit_setting*PGDialect_pg8000.detect_autocommit_setting   s    J))**r#   c                    VP                  4       p TP                  R V'       d   RMR,          4       VP                  R4       VP                  4        R#   TP                  4        i ; i)-SET SESSION CHARACTERISTICS AS TRANSACTION %sz	READ ONLYz
READ WRITEr=  Nr   r   r   r1   r   r   r   s   &&& r$   set_readonlyPGDialect_pg8000.set_readonly#  sQ    ""$	NN?"';\; NN8$LLNFLLN   A A A)c                    VP                  4       p VP                  R 4       VP                  4       ^ ,          pVP                  4        VR8H  #   TP                  4        i ; i)zshow transaction_read_onlyonr   r   r   r   r1   r   r   vals   &&  r$   get_readonlyPGDialect_pg8000.get_readonly.  sS    ""$	NN78//#A&CLLNd{ LLN   (A A!c                    VP                  4       p TP                  R V'       d   RMR,          4       VP                  R4       VP                  4        R#   TP                  4        i ; i)rM  
DEFERRABLEzNOT DEFERRABLEr=  NrN  rO  s   &&& r$   set_deferrablePGDialect_pg8000.set_deferrable8  sS    ""$	NN?#(<.>@ NN8$LLNFLLNrR  c                    VP                  4       p VP                  R 4       VP                  4       ^ ,          pVP                  4        VR8H  #   TP                  4        i ; i)zshow transaction_deferrablerT  rU  rV  s   &&  r$   get_deferrablePGDialect_pg8000.get_deferrableC  sS    ""$	NN89//#A&CLLNd{ LLNrZ  c                    VP                  4       pVP                  R VP                  RR4       R24       VP                  R4       VP                  4        R# )z%
            SET CLIENT_ENCODING TO ''z''r=  N)r   r   r>  r   )r1   r8  r  r   s   &&& r$   _set_client_encoding%PGDialect_pg8000._set_client_encodingM  sR    !((* %%4%<%<S$%G$HM 	Nx r#   c                B    VP                   P                  ^ VR34       R#      N)r   	tpc_beginr1   r   xids   &&&r$   do_begin_twophase"PGDialect_pg8000.do_begin_twophaseT  s    ''C5r#   c                :    VP                   P                  4        R # rB   )r   tpc_preparerk  s   &&&r$   do_prepare_twophase$PGDialect_pg8000.do_prepare_twophaseW  s    ))+r#   c                B    VP                   P                  ^ VR34       R# rg  )r   tpc_rollbackr1   r   rl  is_preparedrecovers   &&&&&r$   do_rollback_twophase%PGDialect_pg8000.do_rollback_twophaseZ  s     	**AsB<8r#   c                B    VP                   P                  ^ VR34       R# rg  )r   
tpc_commitru  s   &&&&&r$   do_commit_twophase#PGDialect_pg8000.do_commit_twophase_  s     	((!S"6r#   c                l    VP                   P                  4        Uu. uF  q"^,          NK  	  up# u upi )r  )r   tpc_recover)r1   r   rows   && r$   do_recover_twophase$PGDialect_pg8000.do_recover_twophased  s/    ","7"7"C"C"EF"E3A"EFFFs   1c                J  a a . oR  pSP                  V4       S P                  e   V 3R lpSP                  V4       S P                  RJ d   R pSP                  V4       S P                  '       d   V 3R lpSP                  V4       \	        S4      ^ 8  d	   V3R lpV# R# )c                 V    V P                   \        ,          V P                   \        &   R # rB   )py_typesr   r   conns   &r$   
on_connect/PGDialect_pg8000.on_connect.<locals>.on_connectj  s    )-s);DMM+&r#   Nc                 @   < SP                  V SP                  4       R # rB   )rd  r  r  r1   s   &r$   r  r  q  s    ))$0D0DEr#   Fc                 R    V P                  R R 4       V P                  RR 4       R# )ie  c                     V # rB   r   ss   &r$   <lambda>APGDialect_pg8000.on_connect.<locals>.on_connect.<locals>.<lambda>z      r#   i  c                     V # rB   r   r  s   &r$   r  r  }  r  r#   N)register_in_adapterr  s   &r$   r  r  x  s$    ((k: ((k:r#   c                 x   < V P                  ^rSP                  4       V P                  RSP                  4       R# )r   i  N)r  _json_deserializerr  s   &r$   r  r    s1    ((d.E.EF ((t/F/FGr#   c                 *   < S F  pV! V 4       K  	  R # rB   r   )r  fnfnss   & r$   r  r    s    BtH r#   )r   r  r  r  len)r1   r  r  s   f @r$   r  PGDialect_pg8000.on_connectg  s    	< 	

:+F JJz"""e+; JJz""""H JJz"s8a< r#   c                    R # );r   r   s   &r$   _dialect_specific_select_one-PGDialect_pg8000._dialect_specific_select_one  s    r#   )r  rB   )TF)kr   r   r   r    driversupports_statement_cachesupports_unicode_statementssupports_unicode_bindsdefault_paramstylesupports_sane_multi_rowcountr   execution_ctx_clsr   statement_compilerr  preparersupports_server_side_cursorsr!   description_encodingr   update_copyr   colspecsr   Stringr   Numericr@   Floatr;   r   rG   Booleanr   NullTyper   r   rL   r   r   r`   JSONIndexTyperP   JSONIntIndexTyperY   JSONStrIndexTyper]   Intervalri   r	   DateTimerv   Daterx   Timerz   Integerr|   SmallIntegerr~   
BigIntegerr   Enumrd   r   r   r   r   r   	INT4RANGEr   	INT8RANGENUMRANGE	DATERANGETSRANGE	TSTZRANGEINT4MULTIRANGEr   INT8MULTIRANGENUMMULTIRANGEDATEMULTIRANGETSMULTIRANGETSTZMULTIRANGEr   memoized_propertyr  rt   r#  r.  r3  r9  rA  rJ  rP  rX  r]  r`  rd  rm  rq  rx  r|  r  r  r  r"   r7   r8   s   @r$   r  r    s    F#"&!!#' 1**H#'    %	
OOY%	
.%	
 NNH%	
 MM7	%	

 j%	
 {%	
 8%	
 F%	
 MM&&%	
 MM'')9%	
 MM**,?%	
 MM**,?%	
 {%	
 k%	
 |%	
  |!%	
" MM7#%	
$ MM7%%	
& j'%	
( !!?)%	
* +%	
, MM7-%	
. NNH/%	
0 |1%	
2 l3%	
4 l5%	
6 OO\7%	
8 l9%	
: NNL;%	
< l=%	
> !!#4?%	
@ !!#4A%	
B   "3C%	
D !!#4E%	
F !2!!#4I%	
(HT 
    $ $0
+ +		6,9
7
G-^ 
 r#   r  )S__doc__r+   r  ri  r   arrayr   PGARRAYbaser   r   r   r   r	   r
   r   r   r   jsonr   r   r   
pg_catalogr   r   typesr   r   r   enginer   sqlr   sql.elementsr   r  r   r  r'   r  r;   r@   rG   rL   r  rP   r  rY   r  r]   r`   rd   ri   r  rv   r  rx   r  rz   r  r|   r  r~   r  r   r  r   r  r   r   r   AbstractSingleRangeImplr   AbstractMultiRangeImplr   counterr   r   r   r   r  r  r2   r   r#   r$   <module>r     s5  Xt  	  #         $ &    $ !       ' !! 8z8>> 
z 
d u 8x}}22 8
(--88 (--88 	l 	d 
@( @8$$ hmm hmm !! h++ 	(## 	H'' !! w 	< 	611 6 55  F ,,. 2 5 5p

 
&"6 &Ay AH r#   