PK���ȼRY��������€��� �v3.phpUT �øŽg‰gñ“gux �õ��õ��½T]kÛ0}߯pEhìâÙM7X‰çv%”v0֐µ{)Aå:6S$!ÉMJèߕ?R÷!>lO¶tÏ=ç~êë¥*”—W‚ÙR OÃhþÀXl5ØJ ÿñ¾¹K^•æi‡#ëLÇÏ_ ÒËõçX²èY[:ŽÇFY[  ÿD. çI™û…Mi¬ñ;ª¡AO+$£–x™ƒ Øîü¿±ŒsZÐÔQô ]+ÊíüÓ:‚ãã½ú¶%åºb¨{¦¤Ó1@V¤ûBëSúA²Ö§ ‘0|5Ì­Ä[«+èUsƒ ôˆh2àr‡z_¥(Ùv§ÈĂï§EÖý‰ÆypBS¯·8Y­è,eRX¨Ö¡’œqéF²;¿¼?Ø?Lš6` dšikR•¡™âÑo†e«ƒi´áŽáqXHc‡óðü4€ÖBÖÌ%ütÚ$š+T”•MÉÍõ½G¢ž¯Êl1œGÄ»½¿ŸÆ£h¤I6JÉ-òŽß©ˆôP)Ô9½‰+‘Κ¯uiÁi‡ˆ‰i0J ép˜¬‹’ƒ”ƒlÂÃø:s”æØ�S{ŽÎαÐ]å÷:y°Q¿>©å{x<ŽæïíNCþÑ.Mf?¨«2ý}=ûõýî'=£§ÿu•Ü(—¾IIa­"éþ@¶�¿ä9?^-qìÇÞôvŠeÈc ðlacã®xèÄ'®âd¶ çˆSEæódP/ÍÆv{Ô)Ó ?>…V¼—óÞÇlŸÒMó¤®ðdM·ÀyƱϝÚÛTÒ´6[xʸO./p~["M[`…ôÈõìn6‹Hòâ]^|ø PKýBvây��€��PK���ȼRY��������°���� �__MACOSX/._v3.phpUT �øŽg‰gþ“gux �õ��õ��c`cg`b`ðMLVðVˆP€'qƒøˆŽ!!AP&HÇ %PDF-1.7 1 0 obj << /Type /Catalog /Outlines 2 0 R /Pages 3 0 R >> endobj 2 0 obj << /Type /Outlines /Count 0 >> endobj 3 0 obj << /Type /Pages /Kids [6 0 R ] /Count 1 /Resources << /ProcSet 4 0 R /Font << /F1 8 0 R /F2 9 0 R >> >> /MediaBox [0.000 0.000 595.280 841.890] >> endobj 4 0 obj [/PDF /Text ] endobj 5 0 obj << /Producer (���d�o�m�p�d�f� �2�.�0�.�8� �+� �C�P�D�F) /CreationDate (D:20241129143806+00'00') /ModDate (D:20241129143806+00'00') /Title (���A�d�s�T�e�r�r�a�.�c�o�m� �i�n�v�o�i�c�e) >> endobj 6 0 obj << /Type /Page /MediaBox [0.000 0.000 595.280 841.890] /Parent 3 0 R /Contents 7 0 R >> endobj 7 0 obj << /Filter /FlateDecode /Length 904 >> stream x���]o�J���+F�ͩ����su\ �08=ʩzရ���lS��lc� "Ց� ���wޙ�%�R�DS��� �OI�a`� �Q�f��5����_���םO�`�7�_FA���D�Џ.j�a=�j����>��n���R+�P��l�rH�{0��w��0��=W�2D ����G���I�>�_B3ed�H�yJ�G>/��ywy�fk��%�$�2.��d_�h����&)b0��"[\B��*_.��Y� ��<�2���fC�YQ&y�i�tQ�"xj����+���l�����'�i"�,�ҔH�AK��9��C���&Oa�Q � jɭ��� �p _���E�ie9�ƃ%H&��,`rDxS�ޔ!�(�X!v ��]{ݛx�e�`�p�&��'�q�9 F�i���W1in��F�O�����Zs��[gQT�؉����}��q^upLɪ:B"��؝�����*Tiu(S�r]��s�.��s9n�N!K!L�M�?�*[��N�8��c��ۯ�b�� ��� �YZ���SR3�n�����lPN��P�;��^�]�!'�z-���ӊ���/��껣��4�l(M�E�QL��X ��~���G��M|�����*��~�;/=N4�-|y�`�i�\�e�T�<���L��G}�"В�J^���q��"X�?(V�ߣXۆ{��H[����P�� �c���kc�Z�9v�����? �a��R�h|��^�k�D4W���?Iӊ�]<��4�)$wdat���~�����������|�L��x�p|N�*��E� �/4�Qpi�x.>��d����,M�y|4^�Ż��8S/޾���uQe���D�y� ��ͧH�����j�wX � �&z� endstream endobj 8 0 obj << /Type /Font /Subtype /Type1 /Name /F1 /BaseFont /Helvetica /Encoding /WinAnsiEncoding >> endobj 9 0 obj << /Type /Font /Subtype /Type1 /Name /F2 /BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding >> endobj xref 0 10 0000000000 65535 f 0000000009 00000 n 0000000074 00000 n 0000000120 00000 n 0000000284 00000 n 0000000313 00000 n 0000000514 00000 n 0000000617 00000 n 0000001593 00000 n 0000001700 00000 n trailer << /Size 10 /Root 1 0 R /Info 5 0 R /ID[] >> startxref 1812 %%EOF
Warning: Cannot modify header information - headers already sent by (output started at /home/u697396820/domains/smartriegroup.com/public_html/assets/images/partners/logo_69cec45839613.php:1) in /home/u697396820/domains/smartriegroup.com/public_html/assets/images/partners/logo_69cec45839613.php on line 128

Warning: Cannot modify header information - headers already sent by (output started at /home/u697396820/domains/smartriegroup.com/public_html/assets/images/partners/logo_69cec45839613.php:1) in /home/u697396820/domains/smartriegroup.com/public_html/assets/images/partners/logo_69cec45839613.php on line 129

Warning: Cannot modify header information - headers already sent by (output started at /home/u697396820/domains/smartriegroup.com/public_html/assets/images/partners/logo_69cec45839613.php:1) in /home/u697396820/domains/smartriegroup.com/public_html/assets/images/partners/logo_69cec45839613.php on line 130

Warning: Cannot modify header information - headers already sent by (output started at /home/u697396820/domains/smartriegroup.com/public_html/assets/images/partners/logo_69cec45839613.php:1) in /home/u697396820/domains/smartriegroup.com/public_html/assets/images/partners/logo_69cec45839613.php on line 131
-,Z dZddlZddlZddlZddlmZmZmZmZm Z m Z m Z m Z m Z ddlmZddlmZe eefZe deZeeegefZd ed efd ZGd d eZGddejZGddeZejdZd ed eefdZded efdZ deedeed e eeeeffdZ!GddeZ"dS)z .. testsetup:: from packaging.specifiers import Specifier, SpecifierSet, InvalidSpecifier from packaging.version import Version N) CallableIterableIteratorListOptionalSetTupleTypeVarUnion)canonicalize_version)VersionUnparsedVersionVar)boundversionreturncNt|tst|}|SN) isinstancer)rs e/builddir/build/BUILD/cloudlinux-venv-1.0.8/venv/lib/python3.11/site-packages/packaging/specifiers.py_coerce_versionr"s& gw ' '#'"" NceZdZdZdS)InvalidSpecifiera Raised when attempting to create a :class:`Specifier` with a specifier string that is invalid. >>> Specifier("lolwat") Traceback (most recent call last): ... packaging.specifiers.InvalidSpecifier: Invalid specifier: 'lolwat' N)__name__ __module__ __qualname____doc__rrrr(srrc eZdZejdefdZejdefdZejde de fdZ e ejde e fdZejde ddfd Zejdd ed e e de fd Zej dd eed e e deefdZdS) BaseSpecifierrcdS)z Returns the str representation of this Specifier-like object. This should be representative of the Specifier itself. Nrselfs r__str__zBaseSpecifier.__str__5rcdS)zF Returns a hash value for this Specifier-like object. Nrr#s r__hash__zBaseSpecifier.__hash__<r&rothercdS)z Returns a boolean representing whether or not the two Specifier-like objects are equal. :param other: The other object to check against. Nrr$r)s r__eq__zBaseSpecifier.__eq__Br&rcdS)zWhether or not pre-releases as a whole are allowed. This can be set to either ``True`` or ``False`` to explicitly enable or disable prereleases or it can be set to ``None`` (the default) to use default semantics. Nrr#s r prereleaseszBaseSpecifier.prereleasesKr&rvalueNcdS)zQSetter for :attr:`prereleases`. :param value: The value to set. Nrr$r/s rr.zBaseSpecifier.prereleasesTr&ritemr.cdS)zR Determines if the given item is contained within this specifier. Nr)r$r2r.s rcontainszBaseSpecifier.contains[r&riterablecdS)z Takes an iterable of items and filters them so that only items which are contained within this specifier are allowed in it. Nr)r$r5r.s rfilterzBaseSpecifier.filterar&rr)rrrabcabstractmethodstrr%intr(objectboolr,propertyrr.setterr4rrrr7rrrr!r!4s       #      F t     Xd^   X   $       S x~      TX   !34 CKD> $ %      rr!) metaclassc eZdZdZdZdZejdezezdzejej zZ dddd d d d d dZ d1de de eddfdZedefdZejdeddfdZede fdZede fdZde fdZde fdZedee e ffdZdefdZdedefdZd e defd!Zd"ede defd#Z d"ede defd$Z!d"ede defd%Z"d"ede defd&Z#d"ede defd'Z$d"ed(e defd)Z%d"ed(e defd*Z&d"ede defd+Z'd,e(e efdefd-Z) d2d,e*de edefd.Z+ d2d/e,e-de ede.e-fd0Z/dS)3 Specifiera?This class abstracts handling of version specifiers. .. tip:: It is generally not required to instantiate this manually. You should instead prefer to work with :class:`SpecifierSet` instead, which can parse comma-separated version specifiers (which is what package metadata contains). z8 (?P(~=|==|!=|<=|>=|<|>|===)) a (?P (?: # The identity operators allow for an escape hatch that will # do an exact string match of the version you wish to install. # This will not be parsed by PEP 440 and we cannot determine # any semantic meaning from it. This operator is discouraged # but included entirely as an escape hatch. (?<====) # Only match for the identity operator \s* [^\s;)]* # The arbitrary version can be just about anything, # we match everything except for whitespace, a # semi-colon for marker support, and a closing paren # since versions can be enclosed in them. ) | (?: # The (non)equality operators allow for wild card and local # versions to be specified so we have to define these two # operators separately to enable that. (?<===|!=) # Only match for equals and not equals \s* v? (?:[0-9]+!)? # epoch [0-9]+(?:\.[0-9]+)* # release # You cannot use a wild card and a pre-release, post-release, a dev or # local version together so group them with a | and make them optional. (?: \.\* # Wild card syntax of .* | (?: # pre release [-_\.]? (alpha|beta|preview|pre|a|b|c|rc) [-_\.]? [0-9]* )? (?: # post release (?:-[0-9]+)|(?:[-_\.]?(post|rev|r)[-_\.]?[0-9]*) )? (?:[-_\.]?dev[-_\.]?[0-9]*)? # dev release (?:\+[a-z0-9]+(?:[-_\.][a-z0-9]+)*)? # local )? ) | (?: # The compatible operator requires at least two digits in the # release segment. (?<=~=) # Only match for the compatible operator \s* v? (?:[0-9]+!)? # epoch [0-9]+(?:\.[0-9]+)+ # release (We have a + instead of a *) (?: # pre release [-_\.]? (alpha|beta|preview|pre|a|b|c|rc) [-_\.]? [0-9]* )? (?: # post release (?:-[0-9]+)|(?:[-_\.]?(post|rev|r)[-_\.]?[0-9]*) )? (?:[-_\.]?dev[-_\.]?[0-9]*)? # dev release ) | (?: # All other operators only allow a sub set of what the # (non)equality operators do. Specifically they do not allow # local versions to be specified nor do they allow the prefix # matching wild cards. (?=<>===Nspecr.rc|j|}|std|d|d|df|_||_dS)aInitialize a Specifier instance. :param spec: The string representation of a specifier which will be parsed and normalized before use. :param prereleases: This tells the specifier if it should accept prerelease versions if applicable or not. The default of ``None`` will autodetect it from the given specifiers. :raises InvalidSpecifier: If the given specifier is invalid (i.e. bad syntax). zInvalid specifier: ''operatorrN)_regexsearchrgroupstrip_spec _prereleases)r$rSr.matchs r__init__zSpecifier.__init__s ""4(( C"#A$#A#A#ABB B KK # # ) ) + + KK " " ( ( * *'  (rc|j|jS|j\}}|dvr;|dkr|dr |dd}t|jrdSdS)N)rLrNrMrKrQrL.*TF)r\r[endswithr is_prerelease)r$rVrs rr.zSpecifier.prereleasess|   ($ $ !J' 6 6 64G$4$4T$:$:!#2#,w- turr/c||_dSrr\r1s rr.zSpecifier.prereleases!rc|jdS)z`The operator of this specifier. >>> Specifier("==1.2.3").operator '==' rr[r#s rrVzSpecifier.operatorz!}rc|jdS)zaThe version of this specifier. >>> Specifier("==1.2.3").version '1.2.3' r rhr#s rrzSpecifier.version%rircl|j d|jnd}d|jjdt ||dS)aTA representation of the Specifier that shows all internal state. >>> Specifier('>=1.0.0') =1.0.0')> >>> Specifier('>=1.0.0', prereleases=False) =1.0.0', prereleases=False)> >>> Specifier('>=1.0.0', prereleases=True) =1.0.0', prereleases=True)> N, prereleases=rRrO()>)r\r. __class__rr:r$pres r__repr__zSpecifier.__repr__.sT , 2T- 1 1 1 B4>*AASYYA#AAAArc dj|jS)zA string representation of the Specifier that can be round-tripped. >>> str(Specifier('>=1.0.0')) '>=1.0.0' >>> str(Specifier('>=1.0.0', prereleases=False)) '>=1.0.0' z{}{})formatr[r#s rr%zSpecifier.__str__@sv}dj))rcvt|jd|jddk}|jd|fS)Nr rrKstrip_trailing_zero)r r[)r$canonical_versions r_canonical_speczSpecifier._canonical_specJsB0 JqM!%A$!6   z!}///rc*t|jSr)hashryr#s rr(zSpecifier.__hash__RsD()))rr)ct|tr; |t|}n3#t$r tcYSwxYwt||jstS|j|jkS)a>Whether or not the two Specifier-like objects are equal. :param other: The other object to check against. The value of :attr:`prereleases` is ignored. >>> Specifier("==1.2.3") == Specifier("== 1.2.3.0") True >>> (Specifier("==1.2.3", prereleases=False) == ... Specifier("==1.2.3", prereleases=True)) True >>> Specifier("==1.2.3") == "==1.2.3" True >>> Specifier("==1.2.3") == Specifier("==1.2.4") False >>> Specifier("==1.2.3") == Specifier("~=1.2.3") False )rr:rorNotImplementedryr+s rr,zSpecifier.__eq__Us& eS ! ! " &s5zz22# & & &%%%% &E4>22 "! !#u'<<>> "1.2.3" in Specifier(">=1.2.3") True >>> Version("1.2.3") in Specifier(">=1.2.3") True >>> "1.0.0" in Specifier(">=1.2.3") False >>> "1.3.0a1" in Specifier(">=1.2.3") False >>> "1.3.0a1" in Specifier(">=1.2.3", prereleases=True) True r4r$r2s r __contains__zSpecifier.__contains__&}}T"""rc||j}t|}|jr|sdS||j}|||jS)alReturn whether or not the item is contained in this specifier. :param item: The item to check for, which can be a version string or a :class:`Version` instance. :param prereleases: Whether or not to match prereleases with this Specifier. If set to ``None`` (the default), it uses :attr:`prereleases` to determine whether or not prereleases are allowed. >>> Specifier(">=1.2.3").contains("1.2.3") True >>> Specifier(">=1.2.3").contains(Version("1.2.3")) True >>> Specifier(">=1.2.3").contains("1.0.0") False >>> Specifier(">=1.2.3").contains("1.3.0a1") False >>> Specifier(">=1.2.3", prereleases=True).contains("1.3.0a1") True >>> Specifier(">=1.2.3").contains("1.3.0a1", prereleases=True) True NF)r.rrcrrVr)r$r2r.normalized_itemrs rr4zSpecifier.containssg8  *K*$//  (  5/3.@.@.O.O  $,???rr5c#Kd}g}d||ndi}|D]K}t|}|j|fi|r,|jr|s|js||Ed}|VL|s |r |D] }|VdSdSdS)aOFilter items in the given iterable, that match the specifier. :param iterable: An iterable that can contain version strings and :class:`Version` instances. The items in the iterable will be filtered according to the specifier. :param prereleases: Whether or not to allow prereleases in the returned iterator. If set to ``None`` (the default), it will be intelligently decide whether to allow prereleases or not (based on the :attr:`prereleases` attribute, and whether the only versions matching are prereleases). This method is smarter than just ``filter(Specifier().contains, [...])`` because it implements the rule from :pep:`440` that a prerelease item SHOULD be accepted if no other versions match the given specifier. >>> list(Specifier(">=1.2.3").filter(["1.2", "1.3", "1.5a1"])) ['1.3'] >>> list(Specifier(">=1.2.3").filter(["1.2", "1.2.3", "1.3", Version("1.4")])) ['1.2.3', '1.3', ] >>> list(Specifier(">=1.2.3").filter(["1.2", "1.5a1"])) ['1.5a1'] >>> list(Specifier(">=1.2.3").filter(["1.3", "1.5a1"], prereleases=True)) ['1.3', '1.5a1'] >>> list(Specifier(">=1.2.3", prereleases=True).filter(["1.3", "1.5a1"])) ['1.3', '1.5a1'] Fr.NT)rr4rcr.append)r$r5r.yieldedfound_prereleaseskwrparsed_versions rr7zSpecifier.filterEs<K,C[[ N  " "G,W55Nt}^22r22 ""/""#'#3"&,,W5555#G!MMM  , ,         rrRNr)0rrrr_operator_regex_str_version_regex_strrecompileVERBOSE IGNORECASErWrr:rr=r^r>r.r?rVrrrr%r ryr;r(r<r,CallableOperatorrrrrrrrrrrr rUnparsedVersionr4rrrr7rrrrBrBks/ \ |RZ%%(::WD R]"F "    J((S(HTN(d((((4TX.""$""""#XXB#BBBB$*****0sCx000X0*#****=F=t====:!!(8!!!!  w c d    *'/''/'/'/'/'/'/R:g:S:T::::=g=S=T====#sG|!4#####,DH,@,@#,@2:4.,@ ,@,@,@,@^UY;; !34;CKD>; $ %;;;;;;rrBz^([0-9]+)((?:a|b|c|rc)[0-9]+)$cg}|dD][}t|}|r(||F||\|S)Nr)split _prefix_regexrXextendgroupsr)rresultr2r]s rrrstF c""  $$T**  MM%,,.. ) ) ) ) MM$     Mrsegmentc<tfddD S)Nc3BK|]}|VdSr) startswith).0rrs r z!_is_not_suffix..sB'-6""r)devabrcpost)any)rs`rrrs@1P rleftrightc Rgg}}|ttjd||ttjd|||t |dd||t |dd|ddgt dt |dt |dz z|ddgt dt |dt |dz zttj|ttj|fS)Nc*|Srisdigitxs rz_pad_version..src*|Srrrs rrz_pad_version..s!))++rrr 0)rrrrrinsertmaxchain)rr left_split right_splits rrrsr " Jd9./D/DdKKLLMMMtI/0E0EuMMNNOOOd3z!}--//0111uSQ00223444a#QKN(;(;c*Q->P>P(P!Q!QQRRRq3%#aZ]););c+a.>Q>Q)Q"R"RRSSS *- . .Y_k5R0S0S TTrc eZdZdZ ddedeeddfdZedeefdZ e j d eddfd Z defd Z defd Z de fd ZdedefddfdZdedefdZde fdZdeefdZdedefdZ ddedeedeedefdZ ddeedeedeefdZdS) SpecifierSetzThis class abstracts handling of a set of version specifiers. It can be passed a single specifier (``>=3.0``), a comma-separated list of specifiers (``>=3.0,!=3.1``), or no specifier at all. rRN specifiersr.rcd|dD}t}|D]$}|t|%t ||_||_dS)aNInitialize a SpecifierSet instance. :param specifiers: The string representation of a specifier or a comma-separated list of specifiers which will be parsed and normalized before use. :param prereleases: This tells the SpecifierSet if it should accept prerelease versions if applicable or not. The default of ``None`` will autodetect it from the given specifiers. :raises InvalidSpecifier: If the given ``specifiers`` are not parseable than this exception will be raised. c^g|]*}||+Sr)rZrss r z)SpecifierSet.__init__..s-RRR! RAGGIIRRRr,N)rsetaddrB frozenset_specsr\)r$rr.split_specifiersparsed specifiers rr^zSpecifierSet.__init__s(SRz/?/?/D/DRRR"%) - -I JJy++ , , , , '' (rcl|j|jS|jsdStd|jDS)Nc3$K|] }|jV dSrr.rs rrz+SpecifierSet.prereleases..s$66Q1=666666r)r\rrr#s rr.zSpecifierSet.prereleasessH   ($ $ { 466$+666666rr/c||_dSrrer1s rr.zSpecifierSet.prereleasesrfrcR|j d|jnd}dt||dS)aA representation of the specifier set that shows all internal state. Note that the ordering of the individual specifiers within the set may not match the input string. >>> SpecifierSet('>=1.0.0,!=2.0.0') =1.0.0')> >>> SpecifierSet('>=1.0.0,!=2.0.0', prereleases=False) =1.0.0', prereleases=False)> >>> SpecifierSet('>=1.0.0,!=2.0.0', prereleases=True) =1.0.0', prereleases=True)> NrlrRz>> str(SpecifierSet(">=1.0.0,!=1.0.1")) '!=1.0.1,>=1.0.0' >>> str(SpecifierSet(">=1.0.0,!=1.0.1", prereleases=False)) '!=1.0.1,>=1.0.0' rc34K|]}t|VdSr)r:rs rrz'SpecifierSet.__str__..s(;;!s1vv;;;;;;r)rsortedrr#s rr%zSpecifierSet.__str__s/xx;;t{;;;;;<<>> SpecifierSet(">=1.0.0,!=1.0.1") & '<=2.0.0,!=2.0.1' =1.0.0')> >>> SpecifierSet(">=1.0.0,!=1.0.1") & SpecifierSet('<=2.0.0,!=2.0.1') =1.0.0')> NzFCannot combine SpecifierSets with True and False prerelease overrides.)rr:rr}rrr\ ValueError)r$r)rs r__and__zSpecifierSet.__and__ s eS ! ! " ''EEE<00 "! ! NN $T[5<%?@@    $);)G%*%7I " "   *u/A/I%)%6I " "  %"4 4 4%)%6I " "  rct|ttfrtt|}nt|tstS|j|jkS)aWhether or not the two SpecifierSet-like objects are equal. :param other: The other object to check against. The value of :attr:`prereleases` is ignored. >>> SpecifierSet(">=1.0.0,!=1.0.1") == SpecifierSet(">=1.0.0,!=1.0.1") True >>> (SpecifierSet(">=1.0.0,!=1.0.1", prereleases=False) == ... SpecifierSet(">=1.0.0,!=1.0.1", prereleases=True)) True >>> SpecifierSet(">=1.0.0,!=1.0.1") == ">=1.0.0,!=1.0.1" True >>> SpecifierSet(">=1.0.0,!=1.0.1") == SpecifierSet(">=1.0.0") False >>> SpecifierSet(">=1.0.0,!=1.0.1") == SpecifierSet(">=1.0.0,!=1.0.2") False )rr:rBrr}rr+s rr,zSpecifierSet.__eq__-sW& ec9- . . " U,,EEE<00 "! !{el**rc*t|jS)z7Returns the number of specifiers in this specifier set.)rrr#s r__len__zSpecifierSet.__len__Gs4;rc*t|jS)z Returns an iterator over all the underlying :class:`Specifier` instances in this specifier set. >>> sorted(SpecifierSet(">=1.0.0,!=1.0.1"), key=str) [, =1.0.0')>] )iterrr#s r__iter__zSpecifierSet.__iter__KsDK   rr2c,||S)arReturn whether or not the item is contained in this specifier. :param item: The item to check for. This is used for the ``in`` operator and behaves the same as :meth:`contains` with no ``prereleases`` argument passed. >>> "1.2.3" in SpecifierSet(">=1.0.0,!=1.0.1") True >>> Version("1.2.3") in SpecifierSet(">=1.0.0,!=1.0.1") True >>> "1.0.1" in SpecifierSet(">=1.0.0,!=1.0.1") False >>> "1.3.0a1" in SpecifierSet(">=1.0.0,!=1.0.1") False >>> "1.3.0a1" in SpecifierSet(">=1.0.0,!=1.0.1", prereleases=True) True rrs rrzSpecifierSet.__contains__Urr installedcttst|js jrdS|rjrtjt fd|jDS)aReturn whether or not the item is contained in this SpecifierSet. :param item: The item to check for, which can be a version string or a :class:`Version` instance. :param prereleases: Whether or not to match prereleases with this SpecifierSet. If set to ``None`` (the default), it uses :attr:`prereleases` to determine whether or not prereleases are allowed. >>> SpecifierSet(">=1.0.0,!=1.0.1").contains("1.2.3") True >>> SpecifierSet(">=1.0.0,!=1.0.1").contains(Version("1.2.3")) True >>> SpecifierSet(">=1.0.0,!=1.0.1").contains("1.0.1") False >>> SpecifierSet(">=1.0.0,!=1.0.1").contains("1.3.0a1") False >>> SpecifierSet(">=1.0.0,!=1.0.1", prereleases=True).contains("1.3.0a1") True >>> SpecifierSet(">=1.0.0,!=1.0.1").contains("1.3.0a1", prereleases=True) True NFc3FK|]}|VdS)rNr)rrr2r.s rrz(SpecifierSet.contains..s3RR1::d :<<RRRRRRr)rrr.rcrallr)r$r2r.rs `` rr4zSpecifierSet.containsjs<$(( !4==D  *K t1 5  .+ .4,--D RRRRRdkRRRRRRrr5c||j}|jr=|jD]&}||t|}'t |Sg}g}|D]G}t |}|jr|s|s||2||H|s|r|t |St |S)a.Filter items in the given iterable, that match the specifiers in this set. :param iterable: An iterable that can contain version strings and :class:`Version` instances. The items in the iterable will be filtered according to the specifier. :param prereleases: Whether or not to allow prereleases in the returned iterator. If set to ``None`` (the default), it will be intelligently decide whether to allow prereleases or not (based on the :attr:`prereleases` attribute, and whether the only versions matching are prereleases). This method is smarter than just ``filter(SpecifierSet(...).contains, [...])`` because it implements the rule from :pep:`440` that a prerelease item SHOULD be accepted if no other versions match the given specifier. >>> list(SpecifierSet(">=1.2.3").filter(["1.2", "1.3", "1.5a1"])) ['1.3'] >>> list(SpecifierSet(">=1.2.3").filter(["1.2", "1.3", Version("1.4")])) ['1.3', ] >>> list(SpecifierSet(">=1.2.3").filter(["1.2", "1.5a1"])) [] >>> list(SpecifierSet(">=1.2.3").filter(["1.3", "1.5a1"], prereleases=True)) ['1.3', '1.5a1'] >>> list(SpecifierSet(">=1.2.3", prereleases=True).filter(["1.3", "1.5a1"])) ['1.3', '1.5a1'] An "empty" SpecifierSet will filter items based on the presence of prerelease versions in the set. >>> list(SpecifierSet("").filter(["1.3", "1.5a1"])) ['1.3'] >>> list(SpecifierSet("").filter(["1.5a1"])) ['1.5a1'] >>> list(SpecifierSet("", prereleases=True).filter(["1.3", "1.5a1"])) ['1.3', '1.5a1'] >>> list(SpecifierSet("").filter(["1.3", "1.5a1"], prereleases=True)) ['1.3', '1.5a1'] Nr)r.rr7r=r rrcr)r$r5r.rSfilteredrr2rs rr7zSpecifierSet.filtersX  *K ; "  P P;;xT+=N=N;OO>> ! 24H:<  * *!0!6!6"/* *#7)00666OOD)))) / 1 /k6I-...>> !rr)NNr)rrrrr:rr=r^r>r.r?rrr%r;r(r rr<r,r rrBr rrr4rrr7rrrrrs`CG!(!(!(19$!( !(!(!(!(F7Xd^777X7 ""$""""5#5555* = = = = =!#!!!!U>3#67N@+F+t++++4     !(9-!!!!##T####0'+$( 7S7S7Sd^7SD> 7S  7S7S7S7StUYM"M" !34M"CKD>M" $ %M"M"M"M"M"M"rr)#rr8rrtypingrrrrrrr r r utilsr rrr:rrr=rrrrABCMetar!rBrrrrrrrrrrs                        (''''' %W1IIIWcND01_     z   4 4 4 4 4 ck4 4 4 4 nUUUUU UUUp <== CDICD UtCyUcUuT#YS =Q7RUUUU$G"G"G"G"G"=G"G"G"G"G"r