Ë
    Ü_Ëi
¤  ã                  óD  — U d Z ddlmZ ddlZddlZddlmZmZ ddlm	Z	 ddl
mZmZ ddlmZmZmZmZmZmZmZmZmZmZmZmZ ddlm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% ddl&m'Z'm(Z( ddl)m*Z* ddl+m,Z, ddl-m.Z. ddl/m0Z0 ddl1m2Z2m3Z3 ddl4m5Z5 ddl6m7Z7m8Z8m9Z9 erddl:m;Z; eefZ<de=d<   dZ>dZ?dZ@dZAdZBdZCdZDdZEdZFdZGdZHd ZId!ZJd"ZKd#ZLd$ZMdZNd%ZOdZPd&e=d'<   dZQd&e=d(<   dZRd&e=d)<   d*ZSd+ZTd+ZUd,ZVd-e=d.<   d/ZWd-e=d0<   d1ZXd2ZYd3ZZd4gZ[d©d5„Z\d©d6„Z]dªd«d7„Z^ej¾                  ejÀ                  ejÂ                  ejÄ                  ejÆ                  d8œZdd¬d9„Zed­d:„Zfd­d;„Zgd­d<„Zhd®d=„Zid¯d>„Zjd¯d?„Zkd°d@„Zld®dA„Zmd±dB„Znd²dC„Zod³dD„Zpd³dE„Zqd´dF„Zrd³dG„ZsdµdH„ZtdµdI„Zud­dJ„Zvd¶dK„Zwd¶dL„Zxd°dM„Zyd·dN„Zzd¸dO„Z{ e|g dP¢«      Z}d¹dQ„Z~	 	 	 	 	 	 dºdR„Zd»dS„Z€d¼dT„Z�d½dU„Z‚d¾dV„Zƒd¿dW„Z„d¿dX„Z…d®dY„Z†dÀdZ„Z‡dÁd[„ZˆdÂd\„Z‰dÃd]„ZŠdÄd^„Z‹ e|g d_¢«      ZŒdÅd`„Z�dÆda„ZŽdÇdb„Z�dÈdc„Z�dÉdd„Z‘dedfgiZ’dge=dh<   i die†“djey“dke~“dlel“dme'“dnet“doee“dper“dqee“dreq“dser“dteg“duek“dvev“dwem“dxex“dye{“i dzem“d{ee“d|ee“d}ee“d~es“det“deee“d€ee“d�ee“d‚ei“dƒei“d„em“d…ee“d†ee“d‡eo“dˆeh“d‰e(“¥eleheue‘dŠœ¥Z“d‹e=dŒ<   eee‡eˆeeeheieee�ezekere�d�œZ”d‹e=dŽ<   ee€ewe.eŽememe‰e�e�d�œ
Z•d‹e=d�<   dfdeiZ–d‘e=d’<   i Z—d“e=d”<   e“�j1                  e”«       e’�j3                  «       D ]  \  ZšZ›e›D ]  Zœeœe“vsŒe“eš   e“eœ<   Œ Œ e“�j;                  «       Zžd‹e=d•<   ež�j1                  e•«       g d–¢ZŸd—e=d˜<    e|dkg«      Z dÊd™„Z¡	 dª	 	 	 	 	 	 	 dËdš„Z¢dÊd›„Z£	 dÌ	 	 	 	 	 dÍdœ„Z¤dÎd�„Z¥dÎdž„Z¦ e|g dŸ¢«      Z§ G d „ d¡«      Z¨ G d¢„ d£ee©ef   «      ZªdÏd¤„Z« G d¥„ d¦e¬e­d§f   «      Z®dÐd¨„Z¯y)Ñz9Functions and classes common to multiple pymongo modules.é    )ÚannotationsN)ÚOrderedDictÚabc)Úget_close_matches)ÚrequiresÚversion)ÚTYPE_CHECKINGÚAnyÚCallableÚIteratorÚMappingÚMutableMappingÚNoReturnÚOptionalÚSequenceÚTypeÚUnionÚoverload)Úunquote_plus)ÚSON)ÚUuidRepresentation)ÚCodecOptionsÚDatetimeConversionÚTypeRegistry)ÚRawBSONDocument)Úvalidate_compressorsÚvalidate_zlib_compression_level)Ú
DriverInfo)ÚConfigurationError)Ú_validate_event_listeners)ÚReadConcern)Ú_MONGOS_MODESÚ_ServerMode)Ú	ServerApi)ÚDEFAULT_WRITE_CONCERNÚWriteConcernÚvalidate_boolean)Ú_AgnosticClientSessionzSequence[Type[Any]]ÚORDERED_TYPESi   i lÜi † z4.2é   é   é
   é   é   g      à?é<   g      4@éd   é   úOptional[int]ÚMAX_IDLE_TIME_MSÚMAX_IDLE_TIME_SECÚWAIT_QUEUE_TIMEOUTé   T)é;   zSequence[int]ÚCOMMAND_NOT_FOUND_CODES)é   i£@  i¤@  ÚUNAUTHORIZED_CODESi'  ÚmongodbÚautoÚCANONICALIZE_HOST_NAMEc                ó–   — | }d}| j                  d«      }|dk7  r| d| t        | |dz   d «      }}|j                  d«      r|dd }||fS )z5Split a host:port string into (host, int(port)) pair.i‰i  ú:éÿÿÿÿNr-   ú[)ÚrfindÚintÚ
startswith)ÚnodeÚhostÚportÚidxs       úQ/var/www/pod-logistic/pod-api/venv/lib/python3.12/site-packages/pymongo/common.pyÚpartition_noderJ   “   s_   € à€DØ€DØ
�*‰*�S‹/€CØ
ˆb‚yØ˜$˜3�Z¤ T¨#°©'¨) _Ó!5ˆdˆØ‡��sÔØ�A�bˆzˆØ�ˆ:Ðó    c                óB   — t        | «      \  }}|j                  «       |fS )z6Split and normalize a node name from a hello response.)rJ   Úlower)rE   rF   rG   s      rI   Ú
clean_noderN   Ÿ   s#   € ä Ó%�J€Dˆ$ð �:‰:‹<˜ÐÐrK   c                óX   — d| › d�}|r|ddj                  |«      › d�z  }t        |«      ‚)z1Raise ConfigurationError with the given key name.úUnknown option: ú.z Did you mean one of (ú, z:) or maybe a camelCase version of one? Refer to docstring.)Újoinr   )ÚkeyÚsuggestionsÚmsgs      rI   Úraise_config_errorrW   ª   s=   € à˜S˜E Ð
#€CÙØÐ'¨¯	©	°+Ó(>Ð'?Ð?yÐzÑzˆÜ
˜SÓ
!Ð!rK   )ÚunspecifiedÚstandardÚpythonLegacyÚ
javaLegacyÚcsharpLegacyc                ój   — t        |t        «      r|dvrt        d| › d�«      ‚|dk(  S t        | |«      S )z8Validates that value is True, False, 'true', or 'false'.)ÚtrueÚfalseúThe value of z must be 'true' or 'false'r^   )Ú
isinstanceÚstrÚ
ValueErrorr'   ©ÚoptionÚvalues     rI   Úvalidate_boolean_or_stringrg   ¼   sA   € ä�%œÔØÐ)Ñ)Ü˜}¨V¨HÐ4NÐOÓPÐPØ˜‰ÐÜ˜F EÓ*Ð*rK   c                óÌ   — t        |t        «      r|S t        |t        «      r	 t        |«      S t	        d| › dt        |«      › �«      ‚# t        $ r t        d| › d�«      d‚w xY w)zDValidates that 'value' is an integer (or basestring representation).r`   z must be an integerNúWrong type for z , value must be an integer, not ©ra   rC   rb   rc   Ú	TypeErrorÚtyperd   s     rI   Úvalidate_integerrm   Å   su   € ä�%œÔØˆÜ	�Eœ3Ô	ð	TÜ�u“:Ðô �o f XÐ-MÌdÐSXËkÈ]Ð[Ó
\Ð\øô ò 	TÜ˜}¨V¨HÐ4GÐHÓIÈtÐSð	Tús   ¤
A	 Á	A#c                óF   — t        | |«      }|dk  rt        d| › d�«      ‚|S )zFValidate that 'value' is a positive integer, which does not include 0.r   r`   z must be a positive integer©rm   rc   ©re   rf   Úvals      rI   Úvalidate_positive_integerrr   Ñ   s/   € ä
˜6 5Ó
)€CØ
ˆa‚xÜ˜=¨¨Ð0KÐLÓMÐMØ€JrK   c                óF   — t        | |«      }|dk  rt        d| › d�«      ‚|S )z1Validate that 'value' is a positive integer or 0.r   r`   z must be a non negative integerro   rp   s      rI   Úvalidate_non_negative_integerrt   Ù   s/   € ä
˜6 5Ó
)€CØ
ˆQ‚wÜ˜=¨¨Ð0OÐPÓQÐQØ€JrK   c                óX   — |€|S t        | |«      }t        |«      j                  «        |S )z1Validates that 'value' is file-like and readable.)Úvalidate_stringÚopenÚcloserd   s     rI   Úvalidate_readablery   á   s/   € à€}Øˆô ˜F EÓ*€EÜˆƒK×ÑÔØ€LrK   c                ó"   — |€|S t        | |«      S )z4Validate that 'value' is a positive integer or None.©rr   rd   s     rI   Ú!validate_positive_integer_or_noner|   ì   s   € à€}ØˆÜ$ V¨UÓ3Ð3rK   c                ó"   — |€|S t        | |«      S )z9Validate that 'value' is a positive integer or 0 or None.)rt   rd   s     rI   Ú%validate_non_negative_integer_or_noner~   ó   s   € à€}ØˆÜ(¨°Ó7Ð7rK   c                óZ   — t        |t        «      r|S t        d| › dt        |«      › �«      ‚)z/Validates that 'value' is an instance of `str`.ri   z(, value must be an instance of str, not )ra   rb   rk   rl   rd   s     rI   rv   rv   ú   s2   € ä�%œÔØˆÜ
�o f XÐ-UÔVZÐ[`ÓVaÐUbÐcÓ
dÐdrK   c                ó"   — |€|S t        | |«      S )z@Validates that 'value' is an instance of `basestring` or `None`.)rv   rd   s     rI   Úvalidate_string_or_noner�     s   € à€}ØˆÜ˜6 5Ó)Ð)rK   c                ó´   — t        |t        «      r|S t        |t        «      r	 t        |«      S t	        d| › dt        |«      › �«      ‚# t        $ r |cY S w xY w)ú/Validates that 'value' is an integer or string.ri   z,, value must be an integer or a string, not rj   rd   s     rI   Úvalidate_int_or_basestringr„     se   € ä�%œÔØˆÜ	�Eœ3Ô	ð	Ü�u“:Ðô Ø
˜&˜Ð!MÌdÐSXËkÈ]Ð[óð øô ò 	ØŠLð	ús   ¤
A	 Á	AÁAc                óÌ   — t        |t        «      r|S t        |t        «      r	 t        |«      }t	        | |«      S t        d| › dt        |«      › �«      ‚# t        $ r |cY S w xY w)rƒ   ri   z9, value must be an non negative integer or a string, not )ra   rC   rb   rc   rt   rk   rl   rp   s      rI   Ú'validate_non_negative_int_or_basestringr†     st   € ä�%œÔØˆÜ	�Eœ3Ô	ð	Ü�e“*ˆCô -¨V°SÓ9Ð9Ü
Ø
˜&˜Ð!ZÔ[_Ð`eÓ[fÐZgÐhóð øô ò 	ØŠLð	ús   ¤A ÁA#Á"A#c                ó¸   — | › d�}	 t        |«      }d|cxk  rdk  sn t        | › d�«      ‚|S # t        $ r t        |«      d‚t        $ r t        |«      d‚w xY w)zXValidates that 'value' is a float, or can be converted to one, and is
    positive.
    z must be an integer or floatNr   g    eÍÍAz1 must be greater than 0 and less than one billion)Úfloatrc   rk   )re   rf   Úerrmsgs      rI   Úvalidate_positive_floatrŠ   %  sw   € ð ˆxÐ3Ð4€Fð*Ü�e“ˆð ˆuŒ?�sŒ?Ü˜F˜8Ð#TÐUÓVÐVØ€Løô ò +Ü˜Ó  dÐ*Üò *Ü˜Ó TÐ)ð*ús	   ‡/ ¯*Ac                ó0   — |dk(  s|dk(  ryt        | |«      S )zgValidates that 'value' is 0 or a positive float, or can be converted to
    0 or a positive float.
    r   Ú0©rŠ   rd   s     rI   Úvalidate_positive_float_or_zerorŽ   8  s!   € ð �‚z�U˜c’\ØÜ" 6¨5Ó1Ð1rK   c                ó(   — |€|S t        | |«      dz  S )úcValidates a timeout specified in milliseconds returning
    a value in floating point seconds.
    ç     @�@r�   rd   s     rI   Úvalidate_timeout_or_noner’   A  s    € ð €}ØˆÜ" 6¨5Ó1°FÑ:Ð:rK   c                óV   — |€t        | › d�«      ‚|dk(  s|dk(  ryt        | |«      dz  S )zâValidates a timeout specified in milliseconds returning
    a value in floating point seconds for the case where None is an error
    and 0 is valid. Setting the timeout to nothing in the URI string is a
    config error.
    z cannot be Noner   rŒ   r‘   )r   rŠ   rd   s     rI   Úvalidate_timeout_or_zeror”   J  s=   € ð €}Ü  F 8¨?Ð!;Ó<Ð<Ø�‚z�U˜c’\ØÜ" 6¨5Ó1°FÑ:Ð:rK   c                ó:   — |�
|dk(  s|dk(  ryt        | |«      dz  S )z¿Validates a timeout specified in milliseconds returning
    a value in floating point seconds. value=0 and value="0" are treated the
    same as value=None which means unlimited timeout.
    Nr   rŒ   r‘   r�   rd   s     rI   Ú validate_timeout_or_none_or_zeror–   W  s*   € ð
 €}˜ š
 e¨s¢lØÜ" 6¨5Ó1°FÑ:Ð:rK   c                ó&   — |€yt        | |«      dz  S )r�   Nr‘   )rŽ   rd   s     rI   Úvalidate_timeoutmsr˜   a  s   € ð €}ØÜ*¨6°5Ó9¸FÑBÐBrK   c                ó0   — |dk(  s|dk(  ryt        | |«      S )zBValidates maxStalenessSeconds according to the Max Staleness Spec.r@   z-1r{   rd   s     rI   Úvalidate_max_stalenessrš   j  s   € à�‚{�e˜t’màÜ$ V¨UÓ3Ð3rK   c                óB   — t        |t        «      st        |›d�«      ‚|S )zValidate a read preference.z is not a read preference)ra   r#   rk   ©Údummyrf   s     rI   Úvalidate_read_preferencerž   r  s$   € ä�eœ[Ô)Ü˜5˜)Ð#<Ð=Ó>Ð>Ø€LrK   c                ó2   — |t         vrt        |› d�«      ‚|S )z®Validate read preference mode for a MongoClient.

    .. versionchanged:: 3.5
       Returns the original ``value`` instead of the validated read preference
       mode.
    z is not a valid read preference)r"   rc   rœ   s     rI   Úvalidate_read_preference_moder    y  s$   € ð ”MÑ!Ü˜E˜7Ð"AÐBÓCÐCØ€LrK   c                óL   — ddl m} ||vrt        | › dt        |«      › �«      ‚|S )z&Validate the authMechanism URI option.r   )Ú
MECHANISMSz must be in )Úpymongo.auth_sharedr¢   rc   Útuple)re   rf   r¢   s      rI   Úvalidate_auth_mechanismr¥   …  s.   € å.à�JÑÜ˜F˜8 <´°jÓ0AÐ/BÐCÓDÐDØ€LrK   c                ól   — 	 t         |   S # t        $ r t        |› dt        t         «      › �«      d‚w xY w)z<Validate the uuid representation option selected in the URI.z3 is an invalid UUID representation. Must be one of N)Ú_UUID_REPRESENTATIONSÚKeyErrorrc   r¤   rœ   s     rI   Úvalidate_uuid_representationr©   Ž  sN   € ðÜ$ UÑ+Ð+øÜò ÜØˆgð äÔ*Ó+Ð,ð.ó
ð ð		ðús   ‚ ‹(3c                óR  — t        |t        «      s|g}g }|D ]n  }|dk(  r|j                  i «       Œ	 i }|j                  d«      D ]-  }|j                  d«      \  }}t	        |«      |t	        |«      <   Œ/ |j                  |«       Œp |S # t
        $ r t        |›d| › �«      d‚w xY w)z5Parse readPreferenceTags if passed as a client kwarg.Ú ú,r?   z not a valid value for N)ra   ÚlistÚappendÚsplitr   Ú	Exceptionrc   )Únamerf   Útag_setsÚtag_setÚtagsÚtagrT   rq   s           rI   Úvalidate_read_preference_tagsr¶   š  sÈ   € ä�eœTÔ"Ø�ˆà%'€HØò TˆØ�bŠ=Ø�O‰O˜BÔØð	TØˆDØ—}‘} SÓ)ò <�ØŸ9™9 S›>‘��SÜ*6°sÓ*;�”\ #Ó&Ò'ð<ð �O‰O˜DÕ!ðTð €Oøô ò 	TÜ ˜{Ð*AÀ$ÀÐHÓIÈtÐSð	Tús   ³ABÂB&)ÚSERVICE_NAMEÚSERVICE_HOSTr=   ÚSERVICE_REALMÚAWS_SESSION_TOKENÚENVIRONMENTÚTOKEN_RESOURCEc           	     ó<  — i }t        |t        «      sêt        |t        «      st        dt	        |«      › �«      ‚|j                  «       D ]®  \  }}t        |t        «      r|||<   Œt        |t        «      rt        |«      j                  «       ||<   ŒI|dv rt        |t        «      r|||<   Œc|dv r/ddl	m
} t        ||«      st        dt	        |«      › �«      ‚|||<   Œ–t        d|› dt	        |«      › �«      ‚ |S t        | |«      }t        |«      }|j                  d	«      D ]t  }|j                  d
«      \  }}}|st        d«      ‚|t        vr,d|v rt        d«      ‚t        |› dt!        t        «      › �«      ‚|dk(  rddlm}  ||«      ||<   Œp|||<   Œv |S )z!Validate authMechanismProperties.zIAuth mechanism properties must be given as a string or a dictionary, not )ÚALLOWED_HOSTS)ÚOIDC_CALLBACKÚOIDC_HUMAN_CALLBACKr   )ÚOIDCCallbackz-callback must be an OIDCCallback object, not z)Invalid type for auth mechanism property rR   r¬   r?   z#Malformed auth mechanism propertiesrº   zPauth mechanism properties must be key:value pairs like AWS_SESSION_TOKEN:<token>z< is not a supported auth mechanism property. Must be one of r=   )Ú _validate_canonicalize_host_name)ra   rb   Údictrc   rl   ÚitemsÚboolrM   r­   Úpymongo.auth_oidc_sharedrÁ   rv   r   r¯   Ú	partitionÚ_MECHANISM_PROPSr¤   r£   rÂ   )	re   rf   ÚpropsrT   rÁ   ÚoptÚ_rq   rÂ   s	            rI   Ú"validate_auth_mechanism_propertiesrÌ   ¼  sÓ  € à€EÜ�eœSÔ!Ü˜%¤Ô&ÜØ[Ô\`ÐafÓ\gÐ[hÐióð ð  Ÿ+™+›-ò 	c‰JˆC�Ü˜%¤Ô%Ø"��c’
Ü˜E¤4Ô(Ü  ›Z×-Ñ-Ó/��c’
ØÐ)Ñ)¬j¸ÄÔ.EØ"��c’
ØÐ@Ñ@ÝAä! %¨Ô6Ü$Ð'TÔUYÐZ_ÓU`ÐTaÐ%bÓcÐcØ"��c’
ä Ð#LÈSÈEÐQSÔTXÐY^ÓT_ÐS`Ð!aÓbÐbð	cð ˆä˜F EÓ*€EÜ˜Ó€EØ�{‰{˜3Óò ˆØ—m‘m CÓ(‰ˆˆQ�ÙÜÐBÓCÐCØÔ&Ñ&à" cÑ)Ü ðEóð ô
 Ø�%ð 6äÔ)Ó*Ð+ð-óð ð Ð*Ò*ÝLá9¸#Ó>ˆE�#ŠJàˆE�#ŠJð/ð2 €LrK   c                óþ   — d}	 t        |t        j                  «      }|st        |t        «      st        | › d�«      ‚|S # t        $ r3 t	        |d«      r$t        |j
                  t        j                  «      }Y Œ]w xY w)z#Validate the document_class option.FÚ
__origin__zg must be dict, bson.son.SON, bson.raw_bson.RawBSONDocument, or a subclass of collections.MutableMapping)Ú
issubclassr   r   rk   ÚhasattrrÎ   r   )re   rf   Ú
is_mappings      rI   Úvalidate_document_classrÒ   ó  sˆ   € ð €JðJÜ ¤s×'9Ñ'9Ó:ˆ
ñ œj¨´Ô@ÜØˆhð 5ð 5ó
ð 	
ð
 €Løô ò JÜ�5˜,Ô'Ü# E×$4Ñ$4´c×6HÑ6HÓIˆJùðJús   „A  Á 9A<Á;A<c                óR   — |�$t        |t        «      st        | › dt        › �«      ‚|S )z"Validate the type_registry option.z must be an instance of )ra   r   rk   rd   s     rI   Úvalidate_type_registryrÔ     s-   € àÐ¤¨E´<Ô!@Ü˜6˜(Ð":¼<¸.ÐIÓJÐJØ€LrK   c                óX   — t        |t        «      st        | › dt        |«      › �«      ‚|S )z!Validates that 'value' is a list.z must be a list, not )ra   r­   rk   rl   rd   s     rI   Úvalidate_listrÖ     s,   € ä�eœTÔ"Ü˜6˜(Ð"7¼¸U»°}ÐEÓFÐFØ€LrK   c                ó"   — |€|S t        | |«      S )z)Validates that 'value' is a list or None.)rÖ   rd   s     rI   Úvalidate_list_or_nonerØ     s   € à€}ØˆÜ˜ Ó'Ð'rK   c                ó`   — t        |t        j                  t        f«      st	        | › d�«      ‚y)z/Validates that 'value' is a list or a document.zu must either be a list or an instance of dict, bson.son.SON, or any other type that inherits from collections.MappingN)ra   r   r   r­   rk   rd   s     rI   Úvalidate_list_or_mappingrÚ     s6   € ä�eœcŸk™k¬4Ð0Ô1ÜØˆhð "ð "ó
ð 	
ð 2rK   c                óT   — t        |t        j                  «      st        | › d�«      ‚y)z=Validate the type of method arguments that expect a document.zd must be an instance of dict, bson.son.SON, or any other type that inherits from collections.MappingN)ra   r   r   rk   rd   s     rI   Úvalidate_is_mappingrÜ   '  s1   € ä�eœSŸ[™[Ô)ÜØˆhð "ð "ó
ð 	
ð *rK   c                ó`   — t        |t        j                  t        f«      st	        | › d�«      ‚y)zEValidate the type of method arguments that expect a MongoDB document.z‚ must be an instance of dict, bson.son.SON, bson.raw_bson.RawBSONDocument, or a type that inherits from collections.MutableMappingN)ra   r   r   r   rk   rd   s     rI   Úvalidate_is_document_typerÞ   1  s9   € ä�eœc×0Ñ0´/ÐBÔCÜØˆhð )ð )ó
ð 	
ð DrK   c                ó|   — |€|S t        | |«       t        |j                  d«      «      dkD  rt        | › d�«      ‚|S )zValidate the appname option.zutf-8é€   z must be <= 128 bytes)rv   ÚlenÚencoderc   rd   s     rI   Úvalidate_appname_or_nonerã   <  sD   € à€}ØˆÜ�F˜EÔ"ä
ˆ5�<‰<˜Ó Ó! CÒ'Ü˜F˜8Ð#8Ð9Ó:Ð:Ø€LrK   c                óJ   — |€|S t        |t        «      st        | › d�«      ‚|S )ú Validate the driver keyword arg.z" must be an instance of DriverInfo)ra   r   rk   rd   s     rI   Úvalidate_driver_or_noneræ   G  s.   € à€}ØˆÜ�eœZÔ(Ü˜6˜(Ð"DÐEÓFÐFØ€LrK   c                ó`   — |€|S t        |t        «      st        | › dt        |«      › �«      ‚|S )z$Validate the server_api keyword arg.z' must be an instance of ServerApi, not )ra   r$   rk   rl   rd   s     rI   Úvalidate_server_api_or_nonerè   P  s6   € à€}ØˆÜ�eœYÔ'Ü˜6˜(Ð"IÌ$ÈuË+ÈÐWÓXÐXØ€LrK   c                óV   — |€|S t        |«      st        | › dt        |«      › �«      ‚|S )z%Validates that 'value' is a callable.z must be a callable, not )Úcallablerc   rl   rd   s     rI   Úvalidate_is_callable_or_nonerë   Y  s3   € à€}ØˆÜ�EŒ?Ü˜F˜8Ð#<¼TÀ%»[¸MÐJÓKÐKØ€LrK   c                ó¤   — t        d| «       | rBt        | t        «      s1t        t	        | «      «      }|j                  d«      rt        d«      ‚yyy)z Validate a replacement document.Úreplacementú$z'replacement can not include $ operatorsN)rÜ   ra   r   ÚnextÚiterrD   rc   )rí   Úfirsts     rI   Úvalidate_ok_for_replacerò   b  sN   € ä˜ {Ô3áœ: k´?ÔCÜ”T˜+Ó&Ó'ˆØ×Ñ˜CÔ ÜÐFÓGÐGð !ð D€{rK   c                ó¾   — t        d| «       | st        d«      ‚t        | t        «       }t	        t        | «      «      }|r|j                  d«      st        d«      ‚yy)zValidate an update document.Úupdatezupdate cannot be emptyrî   z"update only works with $ operatorsN)rÚ   rc   ra   r­   rï   rð   rD   )rô   Úis_documentrñ   s      rI   Úvalidate_ok_for_updaterö   l  s[   € ä˜X vÔ.áÜÐ1Ó2Ð2ä  ¬Ó.Ð.€KÜ”�f“Ó€EÙ˜5×+Ñ+¨CÔ0ÜÐ=Ó>Ð>ð 1€{rK   )ÚstrictÚreplaceÚignorec                óP   — |t         vrt        |› dt        t         «      › �«      ‚|S )zAValidate the Unicode decode error handler option of CodecOptions.z< is an invalid Unicode decode error handler. Must be one of )Ú_UNICODE_DECODE_ERROR_HANDLERSrc   r¤   rœ   s     rI   Ú%validate_unicode_decode_error_handlerrü   |  s:   € àÔ2Ñ2ÜØˆgð äÔ3Ó4Ð5ð7ó
ð 	
ð
 €LrK   c                óZ   — |�(t        |t        j                  «      st        d|z  «      ‚|S )zValidate the tzinfo optionz)%s must be an instance of datetime.tzinfo)ra   ÚdatetimeÚtzinfork   rœ   s     rI   Úvalidate_tzinfor   ‡  s+   € àÐ¤¨E´8·?±?Ô!CÜÐCÀeÑKÓLÐLØ€LrK   c                ód   — |€|S ddl m} t        ||«      st        | › dt	        |«      › �«      ‚|S )rå   r   )ÚAutoEncryptionOptsz0 must be an instance of AutoEncryptionOpts, not )Úpymongo.encryption_optionsr  ra   rk   rl   )re   rf   r  s      rI   Ú%validate_auto_encryption_opts_or_noner  Ž  s>   € à€}ØˆÝ=ä�eÐ/Ô0Ü˜6˜(Ð"RÔSWÐX]ÓS^ÐR_Ð`ÓaÐaà€LrK   c                ó  — |€t         j                  S t        |t        «      r-|j	                  «       rt        t        |«      «      S t         |   S t        |t
        «      rt        |«      S t        | › dt        |«      › �«      ‚)z%Validate a DatetimeConversion string.z; must be a str or int representing DatetimeConversion, not )r   ÚDATETIMEra   rb   ÚisdigitrC   rk   rl   rd   s     rI   Úvalidate_datetime_conversionr  š  sv   € à€}Ü!×*Ñ*Ð*ä�%œÔØ�=‰=Œ?Ü%¤c¨%£jÓ1Ð1Ü! %Ñ(Ð(Ü	�Eœ3Ô	Ü! %Ó(Ð(ä
Øˆ(ÐMÌdÐSXËkÈ]Ð[óð rK   c                ó0   — |dvrt        | › d|›d�«      ‚|S )z)Validate the serverMonitoringMode option.>   r<   ÚpollÚstreamú=z7 is invalid. Must be one of "auto", "stream", or "poll")rc   rd   s     rI   Úvalidate_server_monitoring_moder  «  s0   € àÐ.Ñ.ÜØˆh�a˜�yÐ WÐXó
ð 	
ð €LrK   ÚtlsÚsslzdict[str, list[str]]ÚURI_OPTIONS_ALIAS_MAPÚappnameÚauthmechanismÚauthmechanismpropertiesÚ
authsourceÚcompressorsÚconnecttimeoutmsÚdirectconnectionÚheartbeatfrequencymsÚjournalÚlocalthresholdmsÚmaxidletimemsÚmaxconnectingÚmaxpoolsizeÚmaxstalenesssecondsÚreadconcernlevelÚreadpreferenceÚreadpreferencetagsÚ
replicasetÚ
retryreadsÚretrywritesÚloadbalancedÚserverselectiontimeoutmsÚsockettimeoutmsÚtlsallowinvalidcertificatesÚtlsallowinvalidhostnamesÚ	tlscafileÚtlscertificatekeyfileÚtlscertificatekeyfilepasswordÚtlsdisableocspendpointcheckÚtlsinsecureÚwÚ
wtimeoutmsÚzlibcompressionlevel)ÚsrvservicenameÚsrvmaxhostsÚ	timeoutmsÚservermonitoringmodeú$dict[str, Callable[[Any, Any], Any]]ÚURI_OPTIONS_VALIDATOR_MAP)ÚconnectÚdriverÚ
server_apiÚfsyncÚminpoolsizeÚ
tlscrlfileÚtz_awareÚunicode_decode_error_handlerÚuuidrepresentationÚwaitqueuemultipleÚwaitqueuetimeoutmsÚdatetime_conversionÚNONSPEC_OPTIONS_VALIDATOR_MAP)
Údocument_classÚtype_registryÚread_preferenceÚevent_listenersrÿ   ÚusernameÚpasswordÚserver_selectorÚauto_encryption_optsÚauthoidcallowedhostsÚKW_VALIDATORSzdict[str, str]ÚINTERNAL_URI_OPTION_NAME_MAPzdict[str, tuple[str, str]]ÚURI_OPTIONS_DEPRECATION_MAPÚ
VALIDATORS)r  r  r  r  r&  r'  rB  z	list[str]ÚTIMEOUT_OPTIONSc                ób   — t        | |«      \  }}|t        vrt        d| › dt        › �«      ‚| |fS )z,Validate optional authentication parameters.rP   z. Must be in )ÚvalidateÚ_AUTH_OPTIONSr   )re   rf   rM   s      rI   Úvalidate_auth_optionrV  7  s=   € ä˜F EÓ*�L€Eˆ5Ø”MÑ!Ü Ð#3°F°8¸=ÌÈÐ!XÓYÐYØ�5ˆ=ÐrK   c                ól   — |xs | }	 ||   S # t         $ r t        ||d¬«      }t        | |«       Y y w xY w)Ngš™™™™™É?)Úcutoff)r¨   r   rW   )rT   Ú
validatorsÚ
normed_keyrU   s       rI   Ú_get_validatorr[  ?  sE   € ð Ò"˜s€Jð-Ø˜*Ñ%Ð%øÜò -Ü'¨
°JÀsÔKˆÜ˜3 Ö,ð-ús   ˆ �#3²3c                ó\   — t        | t        | j                  «       ¬«      } || |«      }| |fS )zGeneric validation function.©rZ  )r[  rQ  rM   )re   rf   Ú	validators      rI   rT  rT  J  s,   € ä˜v¤z¸f¿l¹l»nÔM€IÙ�f˜eÓ$€EØ�5ˆ=ÐrK   c                óÖ  ‡ ‡
— t        ‰ t        «      rt        «       }dd„}dˆ fd„}n
i }dd„}dd„}‰ j                  «       D ]4  \  }} ||«      }	 t        |t        |¬«      } |||«      }	|	| ||«      <   Œ6 |S # t
        t        t        f$ rYŠ
|dk(  r&t        ˆ
fd„t        D «       «      rdt        ‰
«      vr‚ |r!t        j                  t        ‰
«      d	¬
«       n‚ Y dŠ
‹
Œ¡dŠ
‹
ww xY w)aa  Validate each entry in options and raise a warning if it is not valid.
    Returns a copy of options with invalid entries removed.

    :param opts: A dict containing MongoDB URI options.
    :param warn: If ``True`` then warnings will be logged and
          invalid options will be ignored. Otherwise, invalid options will
          cause errors.
    c                ó   — | S ©N© ©Úxs    rI   Úget_normed_keyz-get_validated_options.<locals>.get_normed_key`  ó   € ØˆHrK   c                ó&   •— ‰j                  | «      S ra  )Ú	cased_key)rd  Úoptionss    €rI   Úget_setter_keyz-get_validated_options.<locals>.get_setter_keyc  s   ø€ Ø×$Ñ$ QÓ'Ð'rK   c                ó"   — | j                  «       S ra  )rM   rc  s    rI   re  z-get_validated_options.<locals>.get_normed_keyi  s   € Ø—7‘7“9ÐrK   c                ó   — | S ra  rb  rc  s    rI   rj  z-get_validated_options.<locals>.get_setter_keyl  rf  rK   r]  r  c              3  ó8   •K  — | ]  }|t        ‰«      v –— Œ y ­wra  )rb   )Ú.0ÚpÚexcs     €rI   ú	<genexpr>z(get_validated_options.<locals>.<genexpr>w  s   øè ø€ ÒE¨!˜œS ›XœÑEùs   ƒz*is not a supported auth mechanism propertyr1   )Ú
stacklevelN)rd  rb   Úreturnrb   )ra   Ú_CaseInsensitiveDictionaryrÄ   r[  r7  rc   rk   r   ÚanyÚ_MECH_PROP_MUST_RAISErb   ÚwarningsÚwarn)ri  rx  Úvalidated_optionsre  rj  rÊ   rf   rZ  r^  Ú	validatedrp  s   `         @rI   Úget_validated_optionsr{  Q  s÷   ù€ ô �'Ô5Ô6Ü6Ó8Ðó	ö	(ð Ðó	ó	ð —m‘m“oò F‰
ˆˆUÙ# CÓ(ˆ
ð	FÜ& sÔ,EÐR\Ô]ˆIÙ! # uÓ-ˆIð =FÐ™n¨ZÓ8Ò9ð#Fð$ Ðøô œIÔ'9Ð:ò 
	àÐ7Ò7ÜÓEÔ/DÔEÔEØ@ÌÈCËÑPàÙÜ—‘œc #›h°1Ö5àô 6ûð
	ús   ÁA;Á;C(ÂAC#Ã#C(c                ó.   — | j                  dd|› d�«      S )NÚescCollectionúenxcol_.z.esc©Úget©Úencrypted_fieldsr±   s     rI   Ú_esc_coll_namerƒ  „  s   € Ø×Ñ °8¸D¸6ÀÐ1FÓGÐGrK   c                ó.   — | j                  dd|› d�«      S )NÚecocCollectionr~  z.ecocr  r�  s     rI   Ú_ecoc_coll_namer†  ˆ  s   € Ø×ÑÐ 0°H¸T¸FÀ%Ð2HÓIÐIrK   )r/  Úwtimeoutr0  r;  Újr  c                  ó„   — e Zd ZdZ	 	 	 	 	 	 	 	 	 	 d
d„Zedd„«       Zedd„«       Zdd„Zedd„«       Z	dd„Z
edd„«       Zy	)Ú
BaseObjectz™A base class that provides attributes and methods common
    to multiple pymongo classes.

    SHOULD NOT BE USED BY DEVELOPERS EXTERNAL TO MONGODB.
    c                óJ  — t        |t        «      st        d«      ‚|| _        t        |t        «      st        |›d�«      ‚|| _        t        |t        «      st        dt        |«      › �«      ‚|| _        t        |t        «      st        dt        |«      › �«      ‚|| _
        y )NzDcodec_options must be an instance of bson.codec_options.CodecOptionszR is not valid for read_preference. See pymongo.read_preferences for valid options.zMwrite_concern must be an instance of pymongo.write_concern.WriteConcern, not zJread_concern must be an instance of pymongo.read_concern.ReadConcern, not )ra   r   rk   Ú_codec_optionsr#   Ú_read_preferencer&   rl   Ú_write_concernr!   Ú_read_concern)ÚselfÚcodec_optionsrG  Úwrite_concernÚread_concerns        rI   Ú__init__zBaseObject.__init__—  s¹   € ô ˜-¬Ô6ÜÐbÓcÐcØ+ˆÔä˜/¬;Ô7ÜØ"Ð%ð &ð óð ð
 !0ˆÔä˜-¬Ô6ÜØ_Ô`dÐerÓ`sÐ_tÐuóð ð ,ˆÔä˜,¬Ô4ÜØ\Ô]aÐbnÓ]oÐ\pÐqóð ð *ˆÕrK   c                ó   — | j                   S )zdRead only access to the :class:`~bson.codec_options.CodecOptions`
        of this instance.
        )rŒ  ©r�  s    rI   r‘  zBaseObject.codec_options¶  s   € ð
 ×"Ñ"Ð"rK   c                ó   — | j                   S )zÈRead only access to the :class:`~pymongo.write_concern.WriteConcern`
        of this instance.

        .. versionchanged:: 3.0
          The :attr:`write_concern` attribute is now read only.
        )rŽ  r–  s    rI   r’  zBaseObject.write_concern½  s   € ð ×"Ñ"Ð"rK   c                óB   — |r|j                   rt        S | j                  S )zBRead only access to the write concern of this instance or session.)Úin_transactionr%   r’  ©r�  Úsessions     rI   Ú_write_concern_forzBaseObject._write_concern_forÇ  s!   € ñ �w×-Ò-Ü(Ð(Ø×!Ñ!Ð!rK   c                ó   — | j                   S )z¥Read only access to the read preference of this instance.

        .. versionchanged:: 3.0
          The :attr:`read_preference` attribute is now read only.
        )r�  r–  s    rI   rG  zBaseObject.read_preferenceÎ  s   € ð ×$Ñ$Ð$rK   c                óZ   — |r|j                  «       xs | j                  S | j                  S )zDRead only access to the read preference of this instance or session.)Ú_txn_read_preferencer�  rš  s     rI   Ú_read_preference_forzBaseObject._read_preference_for×  s-   € ñ Ø×/Ñ/Ó1ÒJ°T×5JÑ5JÐJØ×$Ñ$Ð$rK   c                ó   — | j                   S )z„Read only access to the :class:`~pymongo.read_concern.ReadConcern`
        of this instance.

        .. versionadded:: 3.2
        )r�  r–  s    rI   r“  zBaseObject.read_concernÞ  s   € ð ×!Ñ!Ð!rK   N)
r‘  úCodecOptions[Any]rG  r#   r’  r&   r“  r!   rs  ÚNone)rs  r¢  )rs  r&   )r›  ú Optional[_AgnosticClientSession]rs  r&   )rs  r#   )r›  r¤  rs  r#   )rs  r!   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r”  Úpropertyr‘  r’  rœ  rG  r   r“  rb  rK   rI   rŠ  rŠ  �  s–   „ ñð*à(ð*ð %ð*ð $ð	*ð
 "ð*ð 
ó*ð> ò#ó ð#ð ò#ó ð#ó"ð ò%ó ð%ó%ð ò"ó ñ"rK   rŠ  c                  ó¶   — e Zd Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Z	dd„Z
dd	„Zddd„Zdd„Zd d„Zd!d„Zedd"d„«       Zed#d„«       Zdd$d„Zd%d„Zdd„Zy
)&rt  c                óT   — i | _         i | _        | j                  t        |i |¤Ž«       y ra  )Ú%_CaseInsensitiveDictionary__casedkeysÚ _CaseInsensitiveDictionary__datarô   rÃ   )r�  ÚargsÚkwargss      rI   r”  z#_CaseInsensitiveDictionary.__init__é  s'   € Ø+-ˆÔØ&(ˆŒØ�‰”D˜$Ð) &Ñ)Õ*rK   c                ó:   — |j                  «       | j                  v S ra  )rM   r­  ©r�  rT   s     rI   Ú__contains__z'_CaseInsensitiveDictionary.__contains__î  s   € Ø�y‰y‹{˜dŸk™kÐ)Ð)rK   c                ó,   — t        | j                  «      S ra  )rá   r­  r–  s    rI   Ú__len__z"_CaseInsensitiveDictionary.__len__ñ  s   € Ü�4—;‘;ÓÐrK   c                ó(   — d„ | j                   D «       S )Nc              3  ó    K  — | ]  }|–— Œ y ­wra  rb  )rn  rT   s     rI   rq  z6_CaseInsensitiveDictionary.__iter__.<locals>.<genexpr>õ  s   è ø€ Ò0˜”Ñ0ùs   ‚)r¬  r–  s    rI   Ú__iter__z#_CaseInsensitiveDictionary.__iter__ô  s   € Ù0˜t×/Ñ/Ô0Ð0rK   c                ót   — t        | D �ci c]  }| j                  |   | j                  |   “Œ! c}«      S c c}w ra  )rb   r¬  r­  )r�  Úks     rI   Ú__repr__z#_CaseInsensitiveDictionary.__repr__÷  s3   € ÜÀÖF¸A�D×$Ñ$ QÑ'¨¯©°Q©Ñ7ÒFÓGÐGùÒFs   Š$5c                ó`   — |j                  «       }|| j                  |<   || j                  |<   y ra  ©rM   r¬  r­  )r�  rT   rf   Úlc_keys       rI   Ú__setitem__z&_CaseInsensitiveDictionary.__setitem__ú  s+   € Ø—‘“ˆØ#&ˆ×Ñ˜Ñ Ø#ˆ�‰�FÒrK   c                ó<   — | j                   |j                  «          S ra  )r­  rM   r±  s     rI   Ú__getitem__z&_CaseInsensitiveDictionary.__getitem__ÿ  s   € Ø�{‰{˜3Ÿ9™9›;Ñ'Ð'rK   c                óX   — |j                  «       }| j                  |= | j                  |= y ra  r¼  )r�  rT   r½  s      rI   Ú__delitem__z&_CaseInsensitiveDictionary.__delitem__  s'   € Ø—‘“ˆØ×Ñ˜VÐ$Ø�K‰K˜ÑrK   c                óœ   — t        |t        j                  «      st        S t	        | «      t	        |«      k7  ry|D ]  }| |   ||   k7  sŒ y y)NFT)ra   r   r   ÚNotImplementedrá   ©r�  ÚotherrT   s      rI   Ú__eq__z!_CaseInsensitiveDictionary.__eq__  sP   € Ü˜%¤§¡Ô-Ü!Ð!Üˆt‹9œ˜E›
Ò"ØØò 	ˆCØ�C‰y˜E #™JÓ&Ùð	ð rK   Nc                óV   — | j                   j                  |j                  «       |«      S ra  )r­  r€  rM   ©r�  rT   Údefaults      rI   r€  z_CaseInsensitiveDictionary.get  s   € Ø�{‰{�‰˜sŸy™y›{¨GÓ4Ð4rK   c                óš   — |j                  «       }| j                  j                  |d «        | j                  j                  |g|¢­i |¤ŽS ra  )rM   r¬  Úpopr­  )r�  rT   r®  r¯  r½  s        rI   rÌ  z_CaseInsensitiveDictionary.pop  sB   € Ø—‘“ˆØ×Ñ×Ñ˜V TÔ*Øˆt�{‰{�‰˜vÐ7¨Ò7°Ñ7Ð7rK   c                óz   — | j                   j                  «       \  }}| j                  j                  |«      }||fS ra  )r¬  Úpopitemr­  rÌ  )r�  r½  rh  rf   s       rI   rÎ  z"_CaseInsensitiveDictionary.popitem  s8   € Ø ×,Ñ,×4Ñ4Ó6Ñˆ�	Ø—‘—‘ Ó'ˆØ˜%ÐÐrK   c                ól   — | j                   j                  «        | j                  j                  «        y ra  )r¬  Úclearr­  r–  s    rI   rÐ  z _CaseInsensitiveDictionary.clear  s$   € Ø×Ñ×ÑÔ Ø�‰×ÑÕrK   c                 ó   — y ra  rb  rÉ  s      rI   Ú
setdefaultz%_CaseInsensitiveDictionary.setdefault#  ó   € àrK   c                 ó   — y ra  rb  rÉ  s      rI   rÒ  z%_CaseInsensitiveDictionary.setdefault'  rÓ  rK   c                óˆ   — |j                  «       }|| v r| j                  |   S || j                  |<   || j                  |<   |S ra  )rM   r­  r¬  )r�  rT   rÊ  r½  s       rI   rÒ  z%_CaseInsensitiveDictionary.setdefault+  sF   € Ø—‘“ˆØ�$‰;Ø—;‘;˜vÑ&Ð&à'*ˆD×Ñ˜VÑ$Ø")ˆD�K‰K˜ÑØˆNrK   c                ó€   — t        |t        «      r|D ]  }||   | |j                  |«      <   Œ y |D ]
  }||   | |<   Œ y ra  )ra   rt  rh  rÅ  s      rI   rô   z!_CaseInsensitiveDictionary.update4  sQ   € Ü�eÔ7Ô8Øò 8�Ø-2°3©Z��U—_‘_ SÓ)Ò*ñ8ð ò '�Ø! #™J��S’	ñ'rK   c                ó<   — | j                   |j                  «          S ra  )r¬  rM   r±  s     rI   rh  z$_CaseInsensitiveDictionary.cased_key<  s   € Ø×Ñ §	¡	£Ñ,Ð,rK   )r®  r
   r¯  r
   )rT   rb   rs  rÅ   )rs  rC   )rs  zIterator[str]©rs  rb   )rT   rb   rf   r
   rs  r£  )rT   rb   rs  r
   )rT   rb   rs  r£  )rÆ  r
   rs  rÅ   ra  )rT   rb   rÊ  úOptional[Any]rs  r
   )rT   rb   r®  r
   r¯  r
   rs  r
   )rs  útuple[str, Any])rs  r£  )rT   rb   rÊ  r£  rs  rÙ  )rT   rb   rÊ  r
   rs  r
   )rT   rb   rÊ  rÙ  rs  rÙ  )rÆ  úMapping[str, Any]rs  r£  )r¥  r¦  r§  r”  r²  r´  r·  rº  r¾  rÀ  rÂ  rÇ  r€  rÌ  rÎ  rÐ  r   rÒ  rô   rh  rb  rK   rI   rt  rt  è  s{   „ ó+ó
*ó ó1óHó$ó
(ó ó
	ô5ó8ó
 ó
ð óó ðð òó ðôó'ô-rK   rt  c                 ó0   — 	 ddl m}  y# t        $ r Y yw xY w)zIs the C extension installed?r   ©Ú	_cmessageTF)ÚpymongorÞ  ÚImportErrorrÝ  s    rI   Úhas_crá  @  s   € ðÝ%àøÜò Ùðús   ‚	 ‰	”c                  ól   ‡ — e Zd ZdZdˆ fd„Zed	d
d„«       Zedd„«       Zedd„«       Zdd„Z	dd„Z
ˆ xZS )ÚVersionz4A class that can be used to compare version strings.c                óZ   •— | j                  |d«      }t        ‰| �	  | t        |«      «      S )Né   )Ú_paddedÚsuperÚ__new__r¤   )Úclsr   Úpadded_versionÚ	__class__s      €rI   rè  zVersion.__new__M  s)   ø€ ØŸ™ W¨aÓ0ˆÜ‰w‰˜s¤E¨.Ó$9Ó:Ð:rK   c                ó’   — t        |«      }t        |«      |k  r-t        |t        |«      z
  «      D ]  }|j                  |«       Œ |S ra  )r­   rá   Úranger®   )ré  rð   ÚlengthÚpaddingÚas_listrË   s         rI   ræ  zVersion._paddedQ  sE   € ä�t“*ˆÜˆw‹<˜&Ò Ü˜6¤C¨£LÑ0Ó1ò (�Ø—‘˜wÕ'ð(àˆrK   c                ó  — d}d}|j                  d«      r|dd }d}n1|j                  d«      r|dd }d}n|j                  d«      r|dd }d}d	|v r|d|j                  d	«       }d}d
|v r|d|j                  d
«       }d}nd|v r|d|j                  d«       }d}d}|j                  d«      D �cg c]  }t        |«      ‘Œ }}| j	                  |d«      }|r|dxx   dz  cc<    |j
                  |«       t        |Ž S c c}w )Nr   Fú+r@   r-   z-pre-éûÿÿÿú-z.devz-rcTrQ   é   )ÚendswithÚfindr¯   rC   ræ  r®   rã  )ré  Úversion_stringÚmodÚbump_patch_levelÚpartr   s         rI   Úfrom_stringzVersion.from_stringY  s@  € àˆØ ÐØ×"Ñ" 3Ô'Ø+¨A¨bÐ1ˆNØ‰CØ×$Ñ$ WÔ-Ø+¨A¨bÐ1ˆNØ‰CØ×$Ñ$ SÔ)Ø+¨A¨bÐ1ˆNØˆCà�^Ñ#Ø+¨A°×0CÑ0CÀFÓ0KÐLˆNØˆCà�NÑ"Ø+¨A°×0CÑ0CÀEÓ0JÐKˆNØ‰Cà�NÑ"Ø+¨A°×0CÑ0CÀCÓ0HÐIˆNØˆCØ#Ðà)7×)=Ñ)=¸cÓ)BÖC ”3�t•9ÐCˆÐCØ—+‘+˜g qÓ)ˆñ Ø�B‹K˜1Ñ‹KØˆ�‰�sÔä˜Ð Ð ùò Ds   Â3Dc                óf   — t        |«      }|d   dk  rd|d<   | j                  |d«      }t        |Ž S )Nr@   r   rõ  )r­   ræ  rã  )ré  Úversion_arrayr   s      rI   Úfrom_version_arrayzVersion.from_version_array�  s;   € ä�}Ó%ˆØ�2‰;˜Š?ØˆG�B‰KØ—+‘+˜g qÓ)ˆÜ˜Ð Ð rK   c                ó   — | t        |Ž k\  S ra  )rã  )r�  Úother_versions     rI   Úat_leastzVersion.at_least‰  s   € Ø”w Ð.Ñ.Ð.rK   c                ó@   — dj                  t        t        | «      «      S )NrQ   )rS   Úmaprb   r–  s    rI   Ú__str__zVersion.__str__Œ  s   € Ø�x‰xœœC ›Ó'Ð'rK   )r   rC   rs  rã  )r   )rð   r
   rî  rC   rï  rC   rs  z	list[int])rø  rb   rs  rã  )rþ  r
   rs  rã  )r  r
   rs  rÅ   rØ  )r¥  r¦  r§  r¨  rè  Úclassmethodræ  rü  rÿ  r  r  Ú__classcell__)rë  s   @rI   rã  rã  J  sR   ø„ Ù>õ;ð óó ðð ò%!ó ð%!ðN ò!ó ð!ó/÷(rK   rã  .c                óL  — t        | «      }t        j                  |«      }t        d«      }|€J ‚|D �cg c]  }|j	                  | «      sŒ|‘Œ c}d   }d|v r|j                  d«      d   }||j                  d«      dz   d }|t        j                  |«      k\  }|||fS c c}w )z<Test whether an installed package is of the desired version.rß  Nr   ú;z>=r1   )r   rã  rü  r   rD   r¯   r÷  )Úpackage_nameÚpackage_version_strÚpackage_versionÚrequirementsÚiÚrequirementÚrequired_versionÚis_valids           rI   Úcheck_for_min_versionr  �  s»   € ä! ,Ó/ÐÜ×)Ñ)Ð*=Ó>€Oô
 ˜IÓ&€LØÐ#Ð#Ð#Ø*ÖI˜¨a¯l©l¸<Õ.H’1ÒIÈ!ÑL€KØ
ˆkÑØ!×'Ñ'¨Ó,¨QÑ/ˆØ" ;×#3Ñ#3°DÓ#9¸AÑ#=Ð#?Ð@ÐØ¤'×"5Ñ"5Ð6FÓ"GÑG€HØÐ 0°(Ð:Ð:ùò Js   ´B!ÁB!)rE   rb   rs  ztuple[str, int]ra  )rT   rb   rU   zOptional[list[str]]rs  r   )re   rb   rf   r
   rs  rÅ   )re   rb   rf   r
   rs  rC   )re   rb   rf   r
   rs  úOptional[str])re   rb   rf   r
   rs  r2   )re   rb   rf   r
   rs  rb   )re   rb   rf   r
   rs  úUnion[int, str])re   r
   rf   r
   rs  r  )re   rb   rf   r
   rs  rˆ   )re   rb   rf   r
   rs  úOptional[float])re   r
   rf   r
   rs  r  )r�   r
   rf   r
   rs  r#   )r�   r
   rf   r
   rs  rC   )r±   rb   rf   r
   rs  zlist[dict[str, str]])re   rb   rf   r
   rs  zdict[str, Union[bool, str]])re   rb   rf   r
   rs  z<Union[Type[MutableMapping[str, Any]], Type[RawBSONDocument]])re   r
   rf   r
   rs  zOptional[TypeRegistry])re   rb   rf   r
   rs  z	list[Any])re   r
   rf   r
   rs  zOptional[list[Any]])re   r
   rf   r
   rs  r£  )re   rb   rf   r
   rs  r£  )re   r
   rf   r
   rs  zOptional[DriverInfo])re   r
   rf   r
   rs  zOptional[ServerApi])re   r
   rf   r
   rs  zOptional[Callable[..., Any]])rí   rÛ  rs  r£  )rô   r
   rs  r£  )r�   r
   rf   rb   rs  rb   )r�   r
   rf   r
   rs  zOptional[datetime.tzinfo])re   r
   rf   r
   rs  rÙ  )re   r
   rf   r
   rs  zOptional[DatetimeConversion])re   rb   rf   rb   rs  rb   )re   rb   rf   r
   rs  rÚ  )rT   rb   rY  r6  rZ  r  rs  zCallable[[Any, Any], Any])T)ri  rÛ  rx  rÅ   rs  zMutableMapping[str, Any])r‚  rÛ  r±   rb   rs  r
   )rs  rÅ   )r
  rb   rs  ztuple[str, str, bool])°r¨  Ú
__future__r   rþ   rw  Úcollectionsr   r   Údifflibr   Úimportlib.metadatar   r   Útypingr	   r
   r   r   r   r   r   r   r   r   r   r   Úurllib.parser   Úbsonr   Úbson.binaryr   Úbson.codec_optionsr   r   r   Úbson.raw_bsonr   Úpymongo.compression_supportr   r   Úpymongo.driver_infor   Úpymongo.errorsr   Úpymongo.monitoringr    Úpymongo.read_concernr!   Úpymongo.read_preferencesr"   r#   Úpymongo.server_apir$   Úpymongo.write_concernr%   r&   r'   Úpymongo.typingsr(   r)   Ú__annotations__ÚMAX_BSON_SIZEÚMAX_MESSAGE_SIZEÚMIN_WIRE_VERSIONÚMAX_WIRE_VERSIONÚMAX_WRITE_BATCH_SIZEÚMIN_SUPPORTED_SERVER_VERSIONÚMIN_SUPPORTED_WIRE_VERSIONÚMAX_SUPPORTED_WIRE_VERSIONÚHEARTBEAT_FREQUENCYÚKILL_CURSOR_FREQUENCYÚEVENTS_QUEUE_FREQUENCYÚSERVER_SELECTION_TIMEOUTÚMIN_HEARTBEAT_INTERVALÚMIN_SRV_RESCAN_INTERVALÚCONNECT_TIMEOUTÚMAX_POOL_SIZEÚMIN_POOL_SIZEÚMAX_CONNECTINGr3   r4   r5   ÚLOCAL_THRESHOLD_MSÚRETRY_WRITESÚRETRY_READSr8   r:   Ú_MAX_END_SESSIONSÚSRV_SERVICE_NAMEÚSERVER_MONITORING_MODErv  rJ   rN   rW   ÚUNSPECIFIEDÚSTANDARDÚPYTHON_LEGACYÚJAVA_LEGACYÚCSHARP_LEGACYr§   rg   rm   rr   rt   ry   r|   r~   rv   r�   r„   r†   rŠ   rŽ   r’   r”   r–   r˜   rš   rž   r    r¥   r©   r¶   Ú	frozensetrÈ   rÌ   rÒ   rÔ   rÖ   rØ   rÚ   rÜ   rÞ   rã   ræ   rè   rë   rò   rö   rû   rü   r   r  r  r  r  r7  rD  rN  rO  rP  rô   rÄ   ÚoptnameÚaliasesÚaliasÚcopyrQ  rR  rU  rV  r[  rT  r{  rƒ  r†  ÚWRITE_CONCERN_OPTIONSrŠ  rb   rt  rá  r¤   rC   rã  r  rb  rK   rI   ú<module>rM     sÊ  ðò  @Ý "ã Û ß (Ý %ß 0÷÷ ÷ ó õ &å Ý *ß MÑ MÝ )÷õ +Ý -Ý 8Ý ,ß ?Ý (ß WÑ WáÝ6ð '*¨;Ð%7€Ð"Ó 7ð €Ø#Ð ØÐ ØÐ ØÐ ð  %Ð ØÐ àÐ ð Ð ð Ð ð Ð ð Ð ð Ð ð Ð ð €ð €ð €ð €ð #'Ð �-Ó &ð $(Ð �=Ó 'ð %)Ð �MÓ (ð Ð ð €ð €ð */Ð ˜Ó .ð %7Ð �MÓ 6ð Ð ð Ð ð  Ð ð 2Ð2Ð ó	óô"ð &×1Ñ1Ø"×+Ñ+Ø&×4Ñ4Ø$×0Ñ0Ø&×4Ñ4ñÐ ó+ó	]óóóó4ó8óeó*óóóó&2ó;ó
;ó;óCó4óó	óó	óñ* òó
Ð ó4ðnØðØðàAóó*óó(ó
ó
ó
óóóóóHó
?ñ "+Ò+JÓ!KÐ óóó	óó"ð 
ˆEˆ7ð/Ð Ð+ó ð'CØÐ'ð'CàÐ,ð'Cð ÐAð'Cð �/ð	'Cð
 Ð'ð'Cð Ð8ð'Cð Ð2ð'Cð Ð4ð'Cð Ð)ð'Cð Ð7ð'Cð Ð-ð'Cð Ð.ð'Cð Ð8ð'Cð Ð1ð'Cð Ð/ð'Cð  Ð3ð!'Cð" Ð7ñ#'Cð$ Ð)ð%'Cð& Ð,ð''Cð( Ð-ð)'Cð* Ð.ð+'Cð, Ð 8ð-'Cð. Ð7ð/'Cð0 
Ð%ð1'Cð2 "Ð#=ð3'Cð4 Ð :ð5'Cð6 Ð"ð7'Cð8 Ð.ð9'Cð: $Ð%<ð;'Cð< "Ð#=ð='Cð> Ð-ð?'Cð@ Ð	0ðA'CðB Ð/ðC'CðD Ð;ñE'CðF &Ø0Ø#Ø;òM'CÐ Ð?ó 'ðX *Ø%Ø-Ø'Ø0Ø#Ø*Ø$IØ6Ø>Ø2Ø7ñGÐ ÐCó ð& .Ø+Ø/Ø0ØØ'Ø'Ø3ØAØ)ñ7€Ð3ó ð$ 
ˆ5ð0Ð ˜nó ð	;Ð Ð7ó 	ð ×  Ò  Ð!>Ô ?Ø-×3Ò3Ó5ò RÑ€GˆWØò RˆØÐ1Ò1Ø/HÈÑ/QÐ% eÒ,ñRðRð 4M×3QÒ3QÓ3S€
Ð0Ó SØ 
× Ò �-Ô  ò€�ó ñ Ð4Ð5Ó6€óð ]að-Ø	ð-Ø>ð-ØLYð-àó-óð .2ð0Øð0Ø&*ð0àó0ófHóJñ
 "Ò"ZÓ[Ð ÷U"ñ U"ôpU- °°S°Ñ!9ô U-ópôC(ˆe�C˜�H‰oô C(ôL;rK   