Ë
    Ü_Ë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	m
Z
 ddlmZmZ ddlmZ dd„Z e	dee«      Z G d	„ d
ee   «      Zy)z3Tools for representing MongoDB regular expressions.é    )ÚannotationsN)ÚAnyÚGenericÚPatternÚTypeÚTypeVarÚUnion)Ú_getstate_slotsÚ_setstate_slots)ÚRE_TYPEc                ó  — d}d| v r|t         j                  z  }d| v r|t         j                  z  }d| v r|t         j                  z  }d| v r|t         j                  z  }d| v r|t         j
                  z  }d| v r|t         j                  z  }|S )Nr   ÚiÚlÚmÚsÚuÚx)ÚreÚ
IGNORECASEÚLOCALEÚ	MULTILINEÚDOTALLÚUNICODEÚVERBOSE)Ú	str_flagsÚflagss     úM/var/www/pod-logistic/pod-api/venv/lib/python3.12/site-packages/bson/regex.pyÚstr_flags_to_intr      s�   € Ø€EØ
ˆiÑØ”—‘ÑˆØ
ˆiÑØ”—‘ÑˆØ
ˆiÑØ”—‘ÑˆØ
ˆiÑØ”—‘ÑˆØ
ˆiÑØ”—‘ÑˆØ
ˆiÑØ”—‘Ñˆà€Ló    Ú_Tc                  ó`   — e Zd ZdZdZeZeZdZ	e
dd„«       Zddd„Zdd„ZdZdd„Zdd	„Zdd
„Zy)ÚRegexzBSON regular expression data.©Úpatternr   é   c                ó�   — t        |t        «      st        dt        |«      z  «      ‚t	        |j
                  |j                  «      S )a¬  Convert a Python regular expression into a ``Regex`` instance.

        Note that in Python 3, a regular expression compiled from a
        :class:`str` has the ``re.UNICODE`` flag set. If it is undesirable
        to store this flag in a BSON regular expression, unset it first::

          >>> pattern = re.compile('.*')
          >>> regex = Regex.from_native(pattern)
          >>> regex.flags ^= re.UNICODE
          >>> db.collection.insert_one({'pattern': regex})

        :param regex: A regular expression object from ``re.compile()``.

        .. warning::
           Python regular expressions use a different syntax and different
           set of flags than MongoDB, which uses `PCRE`_. A regular
           expression retrieved from the server may not compile in
           Python, or may match a different set of strings in Python than
           when used in a MongoDB query.

        .. _PCRE: http://www.pcre.org/
        z3regex must be a compiled regular expression, not %s)Ú
isinstancer   Ú	TypeErrorÚtyper"   r$   r   )ÚclsÚregexs     r   Úfrom_nativezRegex.from_native8   s;   € ô0 ˜%¤Ô)ÜÐQÔTXÐY^ÓT_Ñ_Ó`Ð`ä�U—]‘] E§K¡KÓ0Ð0r   c                ó
  — t        |t        t        f«      st        dt	        |«      z  «      ‚|| _        t        |t        «      rt        |«      | _        yt        |t        «      r|| _        yt        dt	        |«      z  «      ‚)aR  BSON regular expression data.

        This class is useful to store and retrieve regular expressions that are
        incompatible with Python's regular expression dialect.

        :param pattern: string
        :param flags: an integer bitmask, or a string of flag
            characters like "im" for IGNORECASE and MULTILINE
        z pattern must be a string, not %sz%flags must be a string or int, not %sN)	r'   ÚstrÚbytesr(   r)   r$   r   r   Úint)Úselfr$   r   s      r   Ú__init__zRegex.__init__U   sj   € ô ˜'¤C¬ <Ô0ÜÐ>ÄÀgÃÑNÓOÐOØ"ˆŒä�eœSÔ!Ü)¨%Ó0ˆD�JÜ˜œsÔ#ØˆD�JäÐCÄdÈ5ÃkÑQÓRÐRr   c                ó–   — t        |t        «      r4| j                  |j                  k(  xr | j                  |j                  k(  S t        S ©N)r'   r"   r$   r   ÚNotImplemented©r1   Úothers     r   Ú__eq__zRegex.__eq__j   s7   € Ü�eœUÔ#Ø—<‘< 5§=¡=Ñ0ÒN°T·Z±ZÀ5Ç;Á;Ñ5NÐNä!Ð!r   Nc                ó   — | |k(   S r4   © r6   s     r   Ú__ne__zRegex.__ne__r   s   € Ø˜5‘=Ð Ð r   c                ó<   — d| j                   ›d| j                  ›d�S )NzRegex(z, ú)r#   ©r1   s    r   Ú__repr__zRegex.__repr__u   s    € Ø˜Ÿ™Ð' r¨$¯*©*¨°qÐ9Ð9r   c                óV   — t        j                  | j                  | j                  «      S )a  Compile this :class:`Regex` as a Python regular expression.

        .. warning::
           Python regular expressions use a different syntax and different
           set of flags than MongoDB, which uses `PCRE`_. A regular
           expression retrieved from the server may not compile in
           Python, or may match a different set of strings in Python than
           when used in a MongoDB query. :meth:`try_compile()` may raise
           :exc:`re.error`.

        .. _PCRE: http://www.pcre.org/
        )r   Úcompiler$   r   r>   s    r   Útry_compilezRegex.try_compilex   s   € ô �z‰z˜$Ÿ,™,¨¯
©
Ó3Ð3r   )r*   zType[Regex[Any]]r+   úPattern[_T]Úreturnz	Regex[_T])r   )r$   r    r   zUnion[str, int]rD   ÚNone)r7   r   rD   Úbool)rD   r.   )rD   rC   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú	__slots__r
   Ú__getstate__r   Ú__setstate__Ú_type_markerÚclassmethodr,   r2   r8   Ú__hash__r;   r?   rB   r:   r   r   r"   r"   .   sL   „ Ù'à$€Ià"€LØ"€Là€Làò1ó ð1ô8Só*"ð €Hó!ó:ô4r   r"   )r   r.   rD   r0   )rJ   Ú
__future__r   r   Útypingr   r   r   r   r   r	   Úbson._helpersr
   r   Úbson.sonr   r   r.   r/   r    r"   r:   r   r   ú<module>rU      sC   ðñ :Ý "ã 	ß >× >ç :Ý óñ$ ˆT�3˜Ó€ôW4ˆG�B‰Kõ W4r   