
    ,h                    J   % S r SSKJr  SSKrSSKrSSKrSSKJrJr  SSK	J
r
  SSKJr  SSKJr  \(       a  SS	KJr  \R"                  r0 S
S_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_S S!_S"S#_S$S%_S&S'_S(S)_S*S+_0 S,S-_S.S/_S0S1_S2S3_S4S5_S6S7_S8S9_S:S;_S<S=_S>S?_S@SA_SBSC_SDSE_SFSG_SHSI_SJSK_SLSM_ESNSOSPSQSRSSST.Er0 rSU\SV'   \R+                  SW \R-                  5        5       5        \R+                  SX \R-                  5        5       5        \R-                  5        V Vs0 sH  u  pXR/                  5       _M     snn rS`SY jrSaSZ jr\SbS[ j5       r\ScS\ j5       rSdSeS] jjr\R<                  " S^\R>                   \R@                   \RB                   S_35      r"gs  snn f )fz3
Mappings between PostgreSQL and Python encodings.
    )annotationsN)TYPE_CHECKINGAny   )NotSupportedError)cache)
ConnStatus)BaseConnectionBIG5big5EUC_CNgb2312EUC_JIS_2004euc_jis_2004EUC_JPeuc_jpEUC_KReuc_krGB18030gb18030GBKgbk
ISO_8859_5z	iso8859-5
ISO_8859_6z	iso8859-6
ISO_8859_7z	iso8859-7
ISO_8859_8z	iso8859-8JOHABjohabKOI8Rzkoi8-rKOI8Uzkoi8-uLATIN1z	iso8859-1LATIN10z
iso8859-16LATIN2z	iso8859-2LATIN3z	iso8859-3LATIN4z	iso8859-4LATIN5z	iso8859-9LATIN6z
iso8859-10LATIN7z
iso8859-13LATIN8z
iso8859-14LATIN9z
iso8859-15SHIFT_JIS_2004shift_jis_2004SJIS	shift_jis	SQL_ASCIIasciiUHCcp949UTF8utf-8WIN1250cp1250WIN1251cp1251WIN1252cp1252WIN1253cp1253WIN1254cp1254cp1255cp1256cp1257cp1258cp866cp874)WIN1255WIN1256WIN1257WIN1258WIN866WIN874zdict[bytes, str]	py_codecsc              #  H   #    U H  u  pUR                  5       U4v   M     g 7f)N)encode.0kvs      M/var/www/html/Ai_home/venv/lib/python3.13/site-packages/psycopg/_encodings.py	<genexpr>rS   H   s     @-?TQ!((*a-?s    "c              #  x   #    U H1  u  pS U;   d  M  UR                  S S5      R                  5       U4v   M3     g7f)_ N)replacerM   rN   s      rR   rS   rS   K   s8      1Csax$QYYsB !$1Cs   :):c                @    U (       a  U R                   R                  $ S$ )zs
Return the Python encoding name of a psycopg connection.

Default to utf8 if the connection has no encoding info.
r4   )pgconn	_encoding)conns    rR   conn_encodingr\   R   s     %)4;;  5g5    c                    SSK Jn  U" U 5      nUR                  S5      =n(       a#   [        [	        U5      R                  5       5      $ g! [         a     gf = f)z
Return the Python encoding name passed in a conninfo string. Default to utf8.

Because the input is likely to come from the user and not normalised by the
server, be somewhat lenient (non-case-sensitive lookup, ignore noise chars).
r   )conninfo_to_dictclient_encodingr4   )conninfor_   getpg2pyencstrrM   r   )ra   r_   paramspgencs       rR   conninfo_encodingrg   [   s_     +h'F

,--u-	CJ--/00  ! 		s   !A 
AAc                P    [         [        R                  " U 5      R                     $ )zrConvert a Python encoding name to PostgreSQL encoding name.

Raise LookupError if the Python encoding is unknown.
)	pg_codecscodecslookupname)rl   s    rR   py2pgencrm   n   s     V]]4(--..r]   c                     [         U R                  SS5      R                  SS5      R                  5          $ ! [         a"    U R	                  SS5      n[        SU< 35      ef = f)zConvert a PostgreSQL encoding name to Python encoding name.

Raise NotSupportedError if the PostgreSQL encoding is not supported by
Python.
   -r]      _utf8rW   zcodec not available in Python: )rK   rW   upperKeyErrordecoder   )rl   snames     rR   rc   rc   w   sh    MdC088sCIIKLL MFI."A% KLLMs	   69 ,A%c                    U R                  5       (       d8  U S   S;   a  X-   n U R                  5       (       d  [        R                  SU 5      n U S   S:X  a  X-   n U $ )z
Reduce a string to a valid Python identifier.

Replace all non-valid chars with '_' and prefix the value with `!prefix` if
the first letter is an '_'.
r   
1234567890rU   )isidentifier	_re_cleansub)sprefixs     rR   _as_python_identifierr}      sX     >>Q4<
A~~c1%Ats{JHr]   z[^z_])r[   zBaseConnection[Any] | Nonereturnrd   )ra   rd   r~   rd   )rl   rd   r~   bytes)rl   r   r~   rd   )f)r{   rd   r|   rd   r~   rd   )#__doc__
__future__r   rerj   stringtypingr   r   errorsr   _compatr   	pq._enumsr	   _connection_baser
   OK
_py_codecsrK   __annotations__updateitemsrM   ri   r\   rg   rm   rc   r}   compileascii_lowercaseascii_uppercasedigitsry   )rP   rQ   s   00rR   <module>r      s   # 	   % %  !0]]-
F-h- N- h	-
 h- y- 
5- +- +- +- +- W- X- X-  k!-" |#-$ k%-& k'-( k)-* k+-, l--. l/-0 l1-2 l3-6 &7-8 K9-> ?-@ 
7A-B GC-D xE-F xG-H xI-J xK-L xM-N Y-
^ !	   	  @Z-=-=-?@ @ 
   1;1A1A1C  (2'7'7'9:'9tqQ
]'9:	6& / / 
M 
M$ JJ		 !7!7 8rJ	Q ;s   "F