
    :?h                        S r SSKJr  SSKrSSKJrJrJrJrJ	r	  SSK
Jr   " S S\R                  5      r " S	 S
5      rg)zImplementation of the DbDoc.    )annotationsN)AnyDictKeysViewOptionalUnion   )ProgrammingErrorc                  "    \ rS rSrSrSS jrSrg)ExprJSONEncoder(   zcA :class:`json.JSONEncoder` subclass, which enables encoding of
:class:`mysqlx.ExprParser` objects.c                h    [        US5      (       a  U $ [        R                  R                  X5      $ )Nexpr)hasattrjsonJSONEncoderdefault)selfos     T/var/www/ev-aguas/ev-aguas-proceso/venv/lib/python3.13/site-packages/mysqlx/dbdoc.pyr   ExprJSONEncoder.default,   s-    1fSM''00     N)r   objectreturnstr)__name__
__module____qualname____firstlineno____doc__r   __static_attributes__r   r   r   r   r   (   s    +1r   r   c                  v    \ rS rSrSrSS jrSS jrSS jrSS jrSS jr	SS jr
SSS
 jjrSS jrSS jrSrg	)DbDoc3   zRepresents 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                    [        U[        5      (       a  Xl        g [        U[        5      (       a  [        R
                  " U5      U l        g [        S[        U5       35      e)NzUnable to handle type: )
isinstancedict__dict__r   r   loads
ValueErrortype)r   values     r   __init__DbDoc.__init__=   sH    eT""!Ms## JJu-DM6tE{mDEEr   c                "    U R                  5       $ N)as_strr   s    r   __str__DbDoc.__str__E   s    {{}r   c                ,    [        U R                  5      $ r1   )reprr)   r3   s    r   __repr__DbDoc.__repr__H   s    DMM""r   c                B    US:X  a  [        S5      eX R                  U'   g )N_idzCannot modify _id)r
   r)   )r   indexr-   s      r   __setitem__DbDoc.__setitem__K   s!    E>"#677$er   c                     U R                   U   $ r1   r)   )r   r<   s     r   __getitem__DbDoc.__getitem__P   s    }}U##r   c                    XR                   ;   $ r1   r@   )r   items     r   __contains__DbDoc.__contains__S   s    }}$$r   Nc                v    U R                   R                  5       nU(       a  XS'   O	SU;   a  US	 [        U5      $ )a-  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
r;   )r)   copyr$   )r   doc_idnew_dicts      r   rH   
DbDoc.copyV   s9     ==%%'$UOhXr   c                6    U R                   R                  5       $ )z2Returns the keys.

Returns:
    `list`: The keys.
)r)   keysr3   s    r   rM   
DbDoc.keysh   s     }}!!##r   c                H    [         R                  " U R                  [        S9$ )zSerialize :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   r3   s    r   r2   DbDoc.as_strp   s     zz$--_==r   r@   )r-   zUnion[str, Dict[str, Any]]r   None)r   r   )r<   r   r-   r   r   rS   )r<   r   r   r   )rD   r   r   boolr1   )rI   zOptional[str]r   r$   )r   zKeysView[str])r   r   r   r    r!   r.   r4   r8   r=   rA   rE   rH   rM   r2   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>rX      s7   : # "  7 7 $1d&& 1E> E>r   