+
    8iJ                        R t ^ RIHt ^ RIHtHtHtHt ^ RIH	t	 ^ RI
Ht  ! R R4      t ! R R4      t ! R	 R
4      t ! R R4      t ! R R4      tR R ltR# )zTools for working with `collations`_.

.. _collations: https://www.mongodb.com/docs/manual/reference/collation/

.. seealso:: This module is compatible with both the synchronous and asynchronous PyMongo APIs.
)annotations)AnyMappingOptionalUnion)common)validate_booleanc                  6    ] tR t^tRt^t ^t ^t ^t ^t	Rt
R# )CollationStrengthzX
An enum that defines values for `strength` on a
:class:`~pymongo.collation.Collation`.
 N)__name__
__module____qualname____firstlineno____doc__PRIMARY	SECONDARYTERTIARY
QUATERNARY	IDENTICAL__static_attributes__r       O/var/www/html/photoedit/myenv/lib/python3.14/site-packages/pymongo/collation.pyr
   r
      s1    
 G4I*H'J;INr   r
   c                  $    ] tR t^3tRtRt RtRtR# )CollationAlternatezY
An enum that defines values for `alternate` on a
:class:`~pymongo.collation.Collation`.
znon-ignorableshiftedr   N)r   r   r   r   r   NON_IGNORABLESHIFTEDr   r   r   r   r   r   3   s    
 $M@Gr   r   c                  $    ] tR t^FtRtRt RtRtR# )CollationMaxVariablez\
An enum that defines values for `max_variable` on a
:class:`~pymongo.collation.Collation`.
punctspacer   N)r   r   r   r   r   PUNCTSPACEr   r   r   r   r   r   F   s    
 E2E#r   r   c                  *    ] tR t^StRtRt Rt RtRtR# )CollationCaseFirstzZ
An enum that defines values for `case_first` on a
:class:`~pymongo.collation.Collation`.
upperloweroffr   N)	r   r   r   r   r   UPPERLOWEROFFr   r   r   r   r%   r%   S   s!    
 E*E*
C3r   r%   c                  h    ] tR t^ctRtRtRR R llt]R R l4       tR R lt	R	 R
 lt
R R ltRtR# )	Collationa{	  Collation

:param locale: (string) The locale of the collation. This should be a string
    that identifies an `ICU locale ID` exactly. For example, ``en_US`` is
    valid, but ``en_us`` and ``en-US`` are not. Consult the MongoDB
    documentation for a list of supported locales.
:param caseLevel: (optional) If ``True``, turn on case sensitivity if
    `strength` is 1 or 2 (case sensitivity is implied if `strength` is
    greater than 2). Defaults to ``False``.
:param caseFirst: (optional) Specify that either uppercase or lowercase
    characters take precedence. Must be one of the following values:

      * :data:`~CollationCaseFirst.UPPER`
      * :data:`~CollationCaseFirst.LOWER`
      * :data:`~CollationCaseFirst.OFF` (the default)

:param strength: Specify the comparison strength. This is also
    known as the ICU comparison level. This must be one of the following
    values:

      * :data:`~CollationStrength.PRIMARY`
      * :data:`~CollationStrength.SECONDARY`
      * :data:`~CollationStrength.TERTIARY` (the default)
      * :data:`~CollationStrength.QUATERNARY`
      * :data:`~CollationStrength.IDENTICAL`

    Each successive level builds upon the previous. For example, a
    `strength` of :data:`~CollationStrength.SECONDARY` differentiates
    characters based both on the unadorned base character and its accents.

:param numericOrdering: If ``True``, order numbers numerically
    instead of in collation order (defaults to ``False``).
:param alternate: Specify whether spaces and punctuation are
    considered base characters. This must be one of the following values:

      * :data:`~CollationAlternate.NON_IGNORABLE` (the default)
      * :data:`~CollationAlternate.SHIFTED`

:param maxVariable: When `alternate` is
    :data:`~CollationAlternate.SHIFTED`, this option specifies what
    characters may be ignored. This must be one of the following values:

      * :data:`~CollationMaxVariable.PUNCT` (the default)
      * :data:`~CollationMaxVariable.SPACE`

:param normalization: If ``True``, normalizes text into Unicode
    NFD. Defaults to ``False``.
:param backwards: If ``True``, accents on characters are
    considered from the back of the word to the front, as it is done in some
    French dictionary ordering traditions. Defaults to ``False``.
:param kwargs: Keyword arguments supplying any additional options
    to be sent with this Collation object.

.. versionadded: 3.4

Nc               D    V ^8  d   QhRRRRRRRRR	RR
RRRRRRRRRRR/# )   localestr	caseLevelzOptional[bool]	caseFirstzOptional[str]strengthzOptional[int]numericOrdering	alternatemaxVariablenormalization	backwardskwargsr   returnNoner   )formats   "r   __annotate__Collation.__annotate__   sx     !' !'!' "!' !	!'
  !' (!' !!' #!' &!' "!' !' 
!'r   c
                	   \         P                  ! R V4      pR V/V n        Ve   \        RV4      V P                  R&   Ve%   \         P                  ! RV4      V P                  R&   Ve%   \         P                  ! RV4      V P                  R&   Ve   \        RV4      V P                  R&   Ve%   \         P                  ! RV4      V P                  R&   Ve%   \         P                  ! RV4      V P                  R&   Ve   \        RV4      V P                  R&   V	e   \        R	V	4      V P                  R	&   V P                  P                  V
4       R# )
r0   Nr2   r3   r4   r5   r6   r7   r8   r9   )r   validate_string_Collation__documentr   validate_integerupdate)selfr0   r2   r3   r4   r5   r6   r7   r8   r9   r:   s   &&&&&&&&&&,r   __init__Collation.__init__   s,    ''&9+3V*< +;K+SDOOK( +1+A+A+y+YDOOK(*0*A*A*h*WDOOJ'&1A!?2DOO-.  +1+A+A+y+YDOOK("-3-C-CMS^-_DOOM*$/?Q^/_DOOO, +;K+SDOOK(v&r   c                   V ^8  d   QhRR/# )r/   r;   zdict[str, Any]r   )r=   s   "r   r>   r?      s     & &. &r   c                6    V P                   P                  4       # )zThe document representation of this collation.

.. note::
  :class:`Collation` is immutable. Mutating the value of
  :attr:`document` does not mutate this :class:`Collation`.
)rB   copy)rE   s   &r   documentCollation.document   s     ##%%r   c                   V ^8  d   QhRR/# )r/   r;   r1   r   )r=   s   "r   r>   r?      s     a a# ar   c                	p   a V P                   oR P                  RP                  V3R lS 4       4      4      # )zCollation({})z, c              3  @   <"   T F  q R SV,          : 2x  K  	  R# 5i)=Nr   ).0keyrK   s   & r   	<genexpr>%Collation.__repr__.<locals>.<genexpr>   s!     /_V^s%q#8I0JV^s   )rK   r=   join)rE   rK   s   &@r   __repr__Collation.__repr__   s-    ==%%dii/_V^/_&_``r   c                    V ^8  d   QhRRRR/# r/   otherr   r;   boolr   )r=   s   "r   r>   r?      s      C D r   c                	l    \        V\        4      '       d   V P                  VP                  8H  # \        # N)
isinstancer-   rK   NotImplementedrE   rZ   s   &&r   __eq__Collation.__eq__   s(    eY''==ENN22r   c                    V ^8  d   QhRRRR/# rY   r   )r=   s   "r   r>   r?      s     ! !C !D !r   c                	    W8X  * # r]   r   r`   s   &&r   __ne__Collation.__ne__   s      r   )
__document)NNNNNNNN)r   r   r   r   r   	__slots__rF   propertyrK   rV   ra   re   r   r   r   r   r-   r-   c   s>    7r  I!'F & &a
! !r   r-   c                    V ^8  d   QhRRRR/# )r/   valuez-Optional[Union[Mapping[str, Any], Collation]]r;   zOptional[dict[str, Any]]r   )r=   s   "r   r>   r>      s      	] 	]8	]	]r   c                    V f   R # \        V \        4      '       d   V P                  # \        V \        4      '       d   V # \	        R4      h)NzEcollation must be a dict, an instance of collation.Collation, or None)r^   r-   rK   dict	TypeError)rk   s   &r   validate_collation_or_nonero      sA     }%##~~%
[
\\r   N)r   
__future__r   typingr   r   r   r   pymongor   pymongo.write_concernr   r
   r   r   r%   r-   ro   r   r   r   <module>rt      sX    # 0 0  2O O, &
$ 
$4 4 s! s!l	]r   