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 : |
o ��a� � @ s� d Z ddlZddlmZmZ ddlmZmZmZ dZdZ dZ dZG d 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 @ sB e Zd ZdZddd�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. Nc C s || _ d | _|p tj| _d S �N)�adapted�_conn�json�dumps�_dumps)�selfr r � r �0/usr/lib/python3/dist-packages/psycopg2/_json.py�__init__8 s z Json.__init__c C s |t u r| S d S r )r )r �protor r r �__conform__= s �zJson.__conform__c C s | � |�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 �objr r r r A s z Json.dumpsc C s || _ d S r )r )r �connr r r �prepareJ s zJson.preparec C s2 | � | j�}t|�}| jd ur|�| j� |�� S r )r r r r r � getquoted)r �s�qsr r r r M s zJson.getquotedc C s | � � �dd�S )N�ascii�replace)r �decode)r r r r �__str__T s zJson.__str__r ) �__name__� __module__�__qualname__�__doc__r r r r r r r r r r r . s r Fr c C sf |du rt | |�\}}t||||�� d�\}}t|| r| pd� |dur/t|| r,| p-d� ||fS )a Create 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� JSONARRAYr r r � register_jsonY s �r/ c C s t | ||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$ r r r �register_default_json� s �r3 c C s t | ||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_OIDr2 r r r �register_default_jsonb� s �r7 r- c sX � du rt j� � fdd�}t| f||�}|dur&t|f|� d�|�}||fS d}||fS )z&Create typecasters for json data type.Nc s | d u rd S � | �S r r )r �cur�r$ r r � typecast_json� s z/_create_json_typecasters.<locals>.typecast_json�ARRAY)r r$ r r )r+ r, r$ r% r: r- r. r r9 r r'