https://t.me/RX1948
Server : Apache
System : Linux iad1-shared-b8-43 6.6.49-grsec-jammy+ #10 SMP Thu Sep 12 23:23:08 UTC 2024 x86_64
User : dh_edsupp ( 6597262)
PHP Version : 8.2.26
Disable Function : NONE
Directory :  /lib/python3/dist-packages/psycopg2/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : //lib/python3/dist-packages/psycopg2/__pycache__/_json.cpython-310.pyc
o


��a��@s�dZddlZddlmZmZddlmZmZmZdZdZ	dZ
dZGd	d
�d
�Z		dd
d�Z
ddd�Zddd�Zddd�Zddd�ZdS)z�Implementation of the JSON adaptation objects

This module exists to avoid a circular import problem: pyscopg2.extras depends
on psycopg2.extension, so I can't create the default JSON typecasters in
extensions importing register_json from extras.
�N)�	ISQLQuote�QuotedString)�new_type�new_array_type�
register_type�r��i�i�c@sBeZdZdZddd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dS)�Jsona
    An `~psycopg2.extensions.ISQLQuote` wrapper to adapt a Python object to
    :sql:`json` data type.

    `!Json` can be used to wrap any object supported by the provided *dumps*
    function. If none is provided, the standard :py:func:`json.dumps()` is
    used.

    NcCs||_d|_|p
tj|_dS�N)�adapted�_conn�json�dumps�_dumps)�selfrr�r�0/usr/lib/python3/dist-packages/psycopg2/_json.py�__init__8sz
Json.__init__cCs|tur|SdSr
)r)r�protorrr�__conform__=s�zJson.__conform__cCs
|�|�S)z�Serialize *obj* in JSON format.

        The default is to call `!json.dumps()` or the *dumps* function
        provided in the constructor. You can override this method to create a
        customized JSON wrapper.
        )r)r�objrrrrAs
z
Json.dumpscCs
||_dSr
)r)r�connrrr�prepareJs
zJson.preparecCs2|�|j�}t|�}|jdur|�|j�|��Sr
)rrrrr�	getquoted)r�s�qsrrrrMs

zJson.getquotedcCs|���dd�S)N�ascii�replace)r�decode)rrrr�__str__TszJson.__str__r
)
�__name__�
__module__�__qualname__�__doc__rrrrrrrrrrr	.s
		r	Fr
cCsf|durt||�\}}t||||��d�\}}t||r|pd�|dur/t||r,|p-d�||fS)aCreate and register typecasters converting :sql:`json` type to Python objects.

    :param conn_or_curs: a connection or cursor used to find the :sql:`json`
        and :sql:`json[]` oids; the typecasters are registered in a scope
        limited to this object, unless *globally* is set to `!True`. It can be
        `!None` if the oids are provided
    :param globally: if `!False` register the typecasters only on
        *conn_or_curs*, otherwise register them globally
    :param loads: the function used to parse the data into a Python object. If
        `!None` use `!json.loads()`, where `!json` is the module chosen
        according to the Python version (see above)
    :param oid: the OID of the :sql:`json` type if known; If not, it will be
        queried on *conn_or_curs*
    :param array_oid: the OID of the :sql:`json[]` array type if known;
        if not, it will be queried on *conn_or_curs*
    :param name: the name of the data type to look for in *conn_or_curs*

    The connection or cursor passed to the function will be used to query the
    database and look for the OID of the :sql:`json` type (or an alternative
    type if *name* if provided). No query is performed if *oid* and *array_oid*
    are provided.  Raise `~psycopg2.ProgrammingError` if the type is not found.

    N)�loads�name)�_get_json_oids�_create_json_typecasters�upperr)�conn_or_curs�globallyr$�oid�	array_oidr%�JSON�	JSONARRAYrrr�
register_jsonYs
�r/cCst|||ttd�S)a{
    Create and register :sql:`json` typecasters for PostgreSQL 9.2 and following.

    Since PostgreSQL 9.2 :sql:`json` is a builtin type, hence its oid is known
    and fixed. This function allows specifying a customized *loads* function
    for the default :sql:`json` type without querying the database.
    All the parameters have the same meaning of `register_json()`.
    )r)r*r$r+r,)r/�JSON_OID�
JSONARRAY_OID�r)r*r$rrr�register_default_json�s	�r3cCst|||ttdd�S)a^
    Create and register :sql:`jsonb` typecasters for PostgreSQL 9.4 and following.

    As in `register_default_json()`, the function allows to register a
    customized *loads* function for the :sql:`jsonb` type at its known oid for
    PostgreSQL 9.4 and following versions.  All the parameters have the same
    meaning of `register_json()`.
    �jsonb)r)r*r$r+r,r%)r/�	JSONB_OID�JSONBARRAY_OIDr2rrr�register_default_jsonb�s	�r7r-csX�durtj��fdd�}t|f||�}|dur&t|f|�d�|�}||fSd}||fS)z&Create typecasters for json data type.Ncs|durdS�|�Sr
r)r�cur�r$rr�
typecast_json�sz/_create_json_typecasters.<locals>.typecast_json�ARRAY)r
r$rr)r+r,r$r%r:r-r.rr9rr'�s�r'c	Cs�ddlm}ddlm}||�\}}|j}|jjdkrdpd}|�d||f�|��}||kr7|j	s7|�
�|sA|�|�d���|S)	Nr)�STATUS_IN_TRANSACTION)�_solve_conn_cursi�9�typarray�NULLz6SELECT t.oid, %s FROM pg_type t WHERE t.typname = %%s;z data type not found)�psycopg2.extensionsr<�psycopg2.extrasr=�status�info�server_version�execute�fetchone�
autocommit�rollback�ProgrammingError)	r)r%r<r=r�curs�conn_statusr>�rrrrr&�s"��r&)NFNNNr
)NFN)Nr-)r
)r#r
�psycopg2._psycopgrrrrrr0r1r5r6r	r/r3r7r'r&rrrr�<module>s +
�
'




https://t.me/RX1948 - 2025