Ë
    @Øïiæ  ã                  ó‚   — d Z ddlmZ ddlZddlmZmZmZmZm	Z	 ddl
mZ  G d„ dej                  «      Z G d	„ d
«      Zy)zImplementation of the DbDoc.é    )ÚannotationsN)ÚAnyÚDictÚKeysViewÚOptionalÚUnioné   )ÚProgrammingErrorc                  ó   — e Zd ZdZdd„Zy)ÚExprJSONEncoderzgA :class:`json.JSONEncoder` subclass, which enables encoding of
    :class:`mysqlx.ExprParser` objects.c                ó`   — t        |d«      r|› S t        j                  j                  | |«      S )NÚexpr)ÚhasattrÚjsonÚJSONEncoderÚdefault)ÚselfÚos     úF/var/www/html/aiagents/fe/lib/python3.12/site-packages/mysqlx/dbdoc.pyr   zExprJSONEncoder.default,   s,   € Ü�1�fÔØ�SˆMä×Ñ×'Ñ'¨¨aÓ0Ð0ó    N)r   ÚobjectÚreturnÚstr)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   © r   r   r   r   (   s   „ ñ+ô1r   r   c                  óZ   — e Zd ZdZdd„Zdd„Zdd„Zdd„Zdd„Zdd„Z	ddd	„Z
dd
„Zdd„Zy)ÚDbDoczÏRepresents a generic document in JSON format.

    Args:
        value (object): The value can be a JSON string or a dict.

    Raises:
        ValueError: If ``value`` type is not a basestring or dict.
    c                ó¶   — t        |t        «      r|| _        y t        |t        «      rt	        j
                  |«      | _        y t        dt        |«      › �«      ‚)NzUnable to handle type: )Ú
isinstanceÚdictÚ__dict__r   r   ÚloadsÚ
ValueErrorÚtype)r   Úvalues     r   Ú__init__zDbDoc.__init__=   sD   € Ü�eœTÔ"Ø!ˆD�MÜ˜œsÔ#Ü ŸJ™J uÓ-ˆD�MäÐ6´t¸E³{°mÐDÓEÐEr   c                ó"   — | j                  «       S ©N)Úas_str©r   s    r   Ú__str__zDbDoc.__str__E   s   € Ø�{‰{‹}Ðr   c                ó,   — t        | j                  «      S r+   )Úreprr$   r-   s    r   Ú__repr__zDbDoc.__repr__H   s   € Ü�D—M‘MÓ"Ð"r   c                óB   — |dk(  rt        d«      ‚|| j                  |<   y )NÚ_idzCannot modify _id)r
   r$   )r   Úindexr(   s      r   Ú__setitem__zDbDoc.__setitem__K   s#   € Ø�EŠ>Ü"Ð#6Ó7Ð7Ø$ˆ�‰�eÒr   c                ó    — | j                   |   S r+   ©r$   )r   r4   s     r   Ú__getitem__zDbDoc.__getitem__P   s   € Ø�}‰}˜UÑ#Ð#r   c                ó   — || j                   v S r+   r7   )r   Úitems     r   Ú__contains__zDbDoc.__contains__S   s   € Ø�t—}‘}Ð$Ð$r   Nc                ó~   — | j                   j                  «       }|r||d<   t        |«      S d|v r|d= t        |«      S )ae  Returns a new copy of a :class:`mysqlx.DbDoc` object containing the
        `doc_id` provided. If `doc_id` is not provided, it will be removed from
        new :class:`mysqlx.DbDoc` object.

        Args:
            doc_id (Optional[str]): Document ID

        Returns:
            mysqlx.DbDoc: A new instance of DbDoc containing the _id provided
        r3   )r$   Úcopyr    )r   Údoc_idÚnew_dicts      r   r=   z
DbDoc.copyV   sI   € ð —=‘=×%Ñ%Ó'ˆÙØ$ˆH�U‰Oô �X‹Ðð �hÑØ˜�Ü�X‹Ðr   c                ó6   — | j                   j                  «       S )zJReturns the keys.

        Returns:
            `list`: The keys.
        )r$   Úkeysr-   s    r   rA   z
DbDoc.keysh   s   € ð �}‰}×!Ñ!Ó#Ð#r   c                óL   — t        j                  | j                  t        ¬«      S )zÃSerialize :class:`mysqlx.DbDoc` to a JSON formatted ``str``.

        Returns:
            str: A JSON formatted ``str`` representation of the document.

        .. versionadded:: 8.0.16
        )Úcls)r   Údumpsr$   r   r-   s    r   r,   zDbDoc.as_strp   s   € ô �z‰z˜$Ÿ-™-¬_Ô=Ð=r   )r(   zUnion[str, Dict[str, Any]]r   ÚNone)r   r   )r4   r   r(   r   r   rE   )r4   r   r   r   )r:   r   r   Úboolr+   )r>   zOptional[str]r   r    )r   zKeysView[str])r   r   r   r   r)   r.   r1   r5   r8   r;   r=   rA   r,   r   r   r   r    r    3   s5   „ ñóFóó#ó%ó
$ó%ôó$$ô>r   r    )r   Ú
__future__r   r   Útypingr   r   r   r   r   Úerrorsr
   r   r   r    r   r   r   ú<module>rJ      s7   ðñ: #å "ã ç 7Õ 7å $ô1�d×&Ñ&ô 1÷E>ò E>r   