Ë
    Ü_Ëi¨  ã                  ód   — d Z ddlmZ ddlmZ ddlmZmZmZ ddl	m
Z
mZ ddlmZ  G d„ d«      Zy	)
z@Tools for manipulating DBRefs (references to MongoDB documents).é    )Úannotations)Údeepcopy)ÚAnyÚMappingÚOptional)Ú_getstate_slotsÚ_setstate_slots)ÚSONc                  ó²   — e Zd ZdZdZeZeZdZ		 	 d	 	 	 	 	 	 	 	 	 	 	 dd„Z
edd„«       Zedd„«       Zedd„«       Zdd	„Zdd
„Zdd„Zdd„Zdd„Zdd„Zdd„Zy)ÚDBRefz,A reference to a document stored in MongoDB.)Ú__collectionÚ__idÚ
__databaseÚ__kwargséd   Nc                ó  — t        |t        «      st        dt        |«      › �«      ‚|�'t        |t        «      st        dt        |«      › �«      ‚|| _        || _        || _        |j                  |xs i «       || _        y)aù  Initialize a new :class:`DBRef`.

        Raises :class:`TypeError` if `collection` or `database` is not
        an instance of :class:`str`. `database` is optional and allows
        references to documents to work across databases. Any additional
        keyword arguments will create additional fields in the resultant
        embedded document.

        :param collection: name of the collection the document is stored in
        :param id: the value of the document's ``"_id"`` field
        :param database: name of the database to reference
        :param kwargs: additional keyword arguments will
            create additional, custom fields

        .. seealso:: The MongoDB documentation on `dbrefs <https://dochub.mongodb.org/core/dbrefs>`_.
        z+collection must be an instance of str, not Nz)database must be an instance of str, not )	Ú
isinstanceÚstrÚ	TypeErrorÚtypeÚ_DBRef__collectionÚ
_DBRef__idÚ_DBRef__databaseÚupdateÚ_DBRef__kwargs)ÚselfÚ
collectionÚidÚdatabaseÚ_extraÚkwargss         úM/var/www/pod-logistic/pod-api/venv/lib/python3.12/site-packages/bson/dbref.pyÚ__init__zDBRef.__init__"   s{   € ô0 ˜*¤cÔ*ÜÐIÌ$ÈzÓJZÐI[Ð\Ó]Ð]ØÐ¬
°8¼SÔ(AÜÐGÌÈXËÐGWÐXÓYÐYà&ˆÔØˆŒ	Ø"ˆŒØ�‰�f’l Ô#Øˆ�ó    c                ó   — | j                   S )z(Get the name of this DBRef's collection.)r   ©r   s    r"   r   zDBRef.collectionE   s   € ð × Ñ Ð r$   c                ó   — | j                   S )zGet this DBRef's _id.)r   r&   s    r"   r   zDBRef.idJ   s   € ð �y‰yÐr$   c                ó   — | j                   S )zoGet the name of this DBRef's database.

        Returns None if this DBRef doesn't specify a database.
        )r   r&   s    r"   r   zDBRef.databaseO   s   € ð �‰Ðr$   c                óT   — 	 | j                   |   S # t        $ r t        |«      d ‚w xY w©N)r   ÚKeyErrorÚAttributeError)r   Úkeys     r"   Ú__getattr__zDBRef.__getattr__W   s2   € ð	0Ø—=‘= Ñ%Ð%øÜò 	0Ü  Ó%¨4Ð/ð	0ús   ‚ ‘'c                ó¼   — t        d| j                  fd| j                  fg«      }| j                  �| j                  |d<   |j	                  | j
                  «       |S )zsGet the SON document representation of this DBRef.

        Generally not needed by application developers
        z$refz$idz$db)r
   r   r   r   r   r   )r   Údocs     r"   Úas_doczDBRef.as_doc]   sQ   € ô
 �F˜DŸO™OÐ,¨u°d·g±gÐ.>Ð?Ó@ˆØ�=‰=Ð$ØŸ™ˆC�‰JØ�
‰
�4—=‘=Ô!Øˆ
r$   c           
     ó@  — dj                  | j                  j                  «       D ��cg c]  \  }}d|› d|›�‘Œ c}}«      }| j                  €d| j                  ›d| j
                  ›|› d�S d| j                  ›d| j
                  ›d| j                  ›|› d�S c c}}w )NÚ z, ú=zDBRef(ú))Újoinr   Úitemsr   r   r   )r   ÚkÚvÚextras       r"   Ú__repr__zDBRef.__repr__h   s˜   € Ø—‘°D·M±M×4GÑ4GÓ4I×J©D¨A¨q˜2˜a˜S  ! šÓJÓKˆØ�=‰=Ð Ø˜DŸO™OÐ.¨b°·±°¸E¸7À!ÐDÐDØ˜Ÿ™Ð*¨"¨T¯W©W¨K°r¸$¿-¹-Ð9JÈ5È'ÐQRÐSÐSùó Ks   ©B
c                óð   — t        |t        «      ra| j                  | j                  | j                  | j
                  f}|j                  |j                  |j                  |j
                  f}||k(  S t        S r*   )r   r   r   r   r   r   ÚNotImplemented)r   ÚotherÚusÚthems       r"   Ú__eq__zDBRef.__eq__n   s^   € Ü�eœUÔ#Ø—/‘/ 4×#4Ñ#4°d·i±iÀÇÁÐOˆBØ×$Ñ$ e×&8Ñ&8¸%¿*¹*ÀeÇnÁnÐUˆDØ˜‘:ÐÜÐr$   c                ó   — | |k(   S r*   © )r   r>   s     r"   Ú__ne__zDBRef.__ne__u   s   € Ø˜5‘=Ð Ð r$   c                ó°   — t        | j                  | j                  | j                  t	        t        | j                  j                  «       «      «      f«      S )z)Get a hash value for this :class:`DBRef`.)Úhashr   r   r   ÚtupleÚsortedr   r7   r&   s    r"   Ú__hash__zDBRef.__hash__x   s@   € äØ×Ñ §	¡	¨4¯?©?¼EÄ&ÈÏÉ×I\ÑI\ÓI^ÓB_Ó<`Ðaó
ð 	
r$   c           	     ó¾   — t        t        | j                  |«      t        | j                  |«      t        | j                  |«      t        | j
                  |«      «      S )z'Support function for `copy.deepcopy()`.)r   r   r   r   r   r   )r   Úmemos     r"   Ú__deepcopy__zDBRef.__deepcopy__~   sI   € äÜ�T×&Ñ&¨Ó-Ü�T—Y‘Y Ó%Ü�T—_‘_ dÓ+Ü�T—]‘] DÓ)ó	
ð 	
r$   )NN)r   r   r   r   r   úOptional[str]r    zOptional[Mapping[str, Any]]r!   r   ÚreturnÚNone)rN   r   )rN   r   )rN   rM   )r-   r   rN   r   )rN   zSON[str, Any])r>   r   rN   Úbool)rN   Úint)rK   r   rN   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú	__slots__r   Ú__getstate__r	   Ú__setstate__Ú_type_markerr#   Úpropertyr   r   r   r.   r1   r;   rA   rD   rI   rL   rC   r$   r"   r   r      sÁ   „ Ù6à@€IØ"€LØ"€Là€Lð #'Ø.2ð!àð!ð ð!ð  ð	!ð
 ,ð!ð ð!ð 
ó!ðF ò!ó ð!ð òó ðð òó ðó0ó	óTóó!ó
ô
r$   r   N)rU   Ú
__future__r   Úcopyr   Útypingr   r   r   Úbson._helpersr   r	   Úbson.sonr
   r   rC   r$   r"   ú<module>r`      s)   ðñ GÝ "å ß )Ñ )ç :Ý ÷l
ò l
r$   