
    FCfl	                    F    d Z ddlmZ ddlmZmZ  G d d      Z e       Zy)z%Tools for working with read concerns.    )annotations)AnyOptionalc                  `    e Zd 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
y)ReadConcerna  ReadConcern

    :param level: (string) The read concern level specifies the level of
          isolation for read operations.  For example, a read operation using a
          read concern level of ``majority`` will only return data that has been
          written to a majority of nodes. If the level is left unspecified, the
          server default will be used.

    .. versionadded:: 3.2

    Nc                L    |t        |t              r|| _        y t        d      )Nzlevel must be a string or None.)
isinstancestr_ReadConcern__level	TypeError)selflevels     T/var/www/highfloat_scraper/venv/lib/python3.12/site-packages/pymongo/read_concern.py__init__zReadConcern.__init__"   s#    =Juc2 DL=>>    c                    | j                   S )zThe read concern level.)r   r   s    r   r   zReadConcern.level(   s     ||r   c                @    | j                   du xs | j                   dk(  S )zdReturn ``True`` if this read concern is compatible with
        old wire protocol versions.
        Nlocalr   r   s    r   ok_for_legacyzReadConcern.ok_for_legacy-   s!    
 zzT!:TZZ7%::r   c                @    i }| j                   r| j                  |d<   |S )zThe document representation of this read concern.

        .. note::
          :class:`ReadConcern` is immutable. Mutating the value of
          :attr:`document` does not mutate this :class:`ReadConcern`.
        r   )r   r   )r   docs     r   documentzReadConcern.document4   s"     <<::CL
r   c                `    t        |t              r| j                  |j                  k(  S t        S N)r	   r   r   NotImplemented)r   others     r   __eq__zReadConcern.__eq__A   s%    e[)==ENN22r   c                :    | j                   rd| j                   z  S y)NzReadConcern(%s)zReadConcern()r   r   s    r   __repr__zReadConcern.__repr__F   s    ::$tzz11r   r   )r   Optional[str]returnNone)r#   r"   )r#   bool)r#   zdict[str, Any])r   r   r#   r%   )r#   r
   )__name__
__module____qualname____doc__r   propertyr   r   r   r   r!    r   r   r   r      sR    
?   ; ; 
 

r   r   N)r)   
__future__r   typingr   r   r   DEFAULT_READ_CONCERNr+   r   r   <module>r/      s%    , "  4 4n #} r   