
    R
h                       U d Z ddlmZ ddlZddlZddlZddlmZmZ ddl	m
Z
 ddlmZ ddlmZ erdd	lmZ ej        Zi d
dddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+i d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTZi ZdUedV<   e                    dW e                                D                        e                    dX e                                D                        dY e                                D             Zdkd^Zdld`Zedmdc            Zedndd            ZdodpdhZ ej        diej         ej         ej          dj          Z!dS )qz3
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   K   | ]\  }}|                                 |fV  d S )Nencode.0kvs      ]/var/www/html/01_SiteInternet/03_Maps/venv/lib/python3.11/site-packages/psycopg/_encodings.py	<genexpr>rT   H   s2      @@TQ!((**a@@@@@@    c              #  x   K   | ]5\  }}d |v 	|                     d d                                          |fV  6dS )_ N)replacerN   rO   s      rS   rT   rT   K   sR        )-AsaxxQYYsB  !$xxxx rU   c                >    i | ]\  }}||                                 S  rM   rO   s      rS   
<dictcomp>r\   O   s&    :::tq!Q

:::rU   connBaseConnection[Any] | Nonereturnstrc                "    | r| j         j        ndS )z
    Return the Python encoding name of a psycopg connection.

    Default to utf8 if the connection has no encoding info.
    r4   )pgconn	_encoding)r]   s    rS   conn_encodingrd   R   s     %)54;  g5rU   conninfoc                    ddl m}  ||           }|                    d          }|r?	 t          t	          |                                                    S # t          $ r Y nw xY wdS )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   )re   rg   getpg2pyencr`   rN   r   )re   rg   paramspgencs       rS   conninfo_encodingrm   [   s     +*****h''FJJ())E 	CJJ--//000  	 	 	D	 7s   -A 
A%$A%namebytesc                J    t           t          j        |           j                 S )zzConvert a Python encoding name to PostgreSQL encoding name.

    Raise LookupError if the Python encoding is unknown.
    )	pg_codecscodecslookuprn   )rn   s    rS   py2pgencrt   o   s     V]4((-..rU   c                    	 t           |                     dd                              dd                                                   S # t          $ r) |                     dd          }t          d|          w xY w)zConvert a PostgreSQL encoding name to Python encoding name.

    Raise NotSupportedError if the PostgreSQL encoding is not supported by
    Python.
       -rU      _utf8rY   zcodec not available in Python: )rK   rY   upperKeyErrordecoder   )rn   snames     rS   rj   rj   x   s    MdC0088sCCIIKKLL M M MFI.. K% K KLLLMs   AA	 	3A<fsprefixc                    |                                  s>| d         dv r|| z   } |                                  st                              d|           } | d         dk    r|| z   } | S )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   
1234567890rW   )isidentifier	_re_cleansub)r~   r   s     rS   _as_python_identifierr      sn     >> &Q4<
A~~ 	&c1%%Ats{{QJHrU   z[^z_])r]   r^   r_   r`   )re   r`   r_   r`   )rn   r`   r_   ro   )rn   ro   r_   r`   )r}   )r~   r`   r   r`   r_   r`   )"__doc__
__future__r   rerr   stringtypingr   r   errorsr   _compatr   	pq._enumsr	   _connection_baser
   OK
_py_codecsrK   __annotations__updateitemsrq   rd   rm   rt   rj   r   compileascii_lowercaseascii_uppercasedigitsr   r[   rU   rS   <module>r      s     # " " " " " 				   % % % % % % % % % % % % % %       ! ! ! ! ! ! 100000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;1A1A1C1C      ;:z'7'7'9'9:::	6 6 6 6   ( / / / / 
M 
M 
M 
M    $ BJJ	J!7JJJJ 			rU   