
(°hÐ}  ã               @   sê  d  d l  m Z m Z m Z d  d l Z d  d l Z d  d l 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 d d l m Z m Z m Z e r#d  d l m Z m Z m Z m Z m Z m Z m Z m Z e e e f Z e e e e f Z e e e g e  f Z! Gd	 d
 „  d
 e" ƒ Z# Gd d „  d e e j$ e% ƒ ƒ Z& Gd d „  d e& ƒ Z' Gd d „  d e' ƒ Z( d d „  Z) Gd d „  d e' ƒ Z* e j+ d ƒ Z, d d „  Z- d d „  Z. Gd d „  d e& ƒ Z/ d S)é    )Úabsolute_importÚdivisionÚprint_functionNé   )Ústring_typesÚwith_metaclass)ÚTYPE_CHECKING)Úcanonicalize_version)ÚVersionÚLegacyVersionÚparse)ÚListÚDictÚUnionÚIterableÚIteratorÚOptionalÚCallableÚTuplec               @   s   e  Z d  Z d Z d S)ÚInvalidSpecifierzH
    An invalid specifier was found, users should refer to PEP 440.
    N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__© r   r   ú?/tmp/pip-build-kmztzv_d/pip/pip/_vendor/packaging/specifiers.pyr      s   r   c               @   s¾   e  Z d  Z e j d d „  ƒ Z e j d d „  ƒ Z e j d d „  ƒ Z e j d d „  ƒ Z e j	 d	 d
 „  ƒ Z
 e
 j d d
 „  ƒ Z
 e j d d d „ ƒ Z e j d d d „ ƒ Z d S)ÚBaseSpecifierc             C   s   d S)zŽ
        Returns the str representation of this Specifier like object. This
        should be representative of the Specifier itself.
        Nr   )Úselfr   r   r   Ú__str__    s    zBaseSpecifier.__str__c             C   s   d S)zF
        Returns a hash value for this Specifier like object.
        Nr   )r   r   r   r   Ú__hash__(   s    zBaseSpecifier.__hash__c             C   s   d S)zq
        Returns a boolean representing whether or not the two Specifier like
        objects are equal.
        Nr   )r   Úotherr   r   r   Ú__eq__/   s    zBaseSpecifier.__eq__c             C   s   d S)zu
        Returns a boolean representing whether or not the two Specifier like
        objects are not equal.
        Nr   )r   r    r   r   r   Ú__ne__7   s    zBaseSpecifier.__ne__c             C   s   d S)zg
        Returns whether or not pre-releases as a whole are allowed by this
        specifier.
        Nr   )r   r   r   r   Úprereleases?   s    zBaseSpecifier.prereleasesc             C   s   d S)zd
        Sets whether or not pre-releases as a whole are allowed by this
        specifier.
        Nr   )r   Úvaluer   r   r   r#   G   s    Nc             C   s   d S)zR
        Determines if the given item is contained within this specifier.
        Nr   )r   Úitemr#   r   r   r   ÚcontainsO   s    zBaseSpecifier.containsc             C   s   d S)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   Úiterabler#   r   r   r   ÚfilterV   s    zBaseSpecifier.filter)r   r   r   ÚabcÚabstractmethodr   r   r!   r"   Úabstractpropertyr#   Úsetterr&   r(   r   r   r   r   r      s   r   c               @   s  e  Z d  Z i  Z d d d d „ Z d d „  Z d d „  Z e d	 d
 „  ƒ Z d d „  Z	 d d „  Z
 d d „  Z d d „  Z d d „  Z e d d „  ƒ Z e d d „  ƒ Z e d d „  ƒ Z e j d d „  ƒ Z d d „  Z d d d „ Z d d  d! „ Z d S)"Ú_IndividualSpecifierÚ Nc             C   sg   |  j  j | ƒ } | s- t d j | ƒ ƒ ‚ | j d ƒ j ƒ  | j d ƒ j ƒ  f |  _ | |  _ d  S)NzInvalid specifier: '{0}'ÚoperatorÚversion)Ú_regexÚsearchr   ÚformatÚgroupÚstripÚ_specÚ_prereleases)r   Úspecr#   Úmatchr   r   r   Ú__init__c   s    z_IndividualSpecifier.__init__c             C   sF   |  j  d  k	 r! d j |  j ƒ n d } d j |  j j t |  ƒ | ƒ S)Nz, prereleases={0!r}r.   z<{0}({1!r}{2})>)r7   r3   r#   Ú	__class__r   Ústr)r   Úprer   r   r   Ú__repr__q   s    !z_IndividualSpecifier.__repr__c             C   s   d j  |  j Œ  S)Nz{0}{1})r3   r6   )r   r   r   r   r   {   s    z_IndividualSpecifier.__str__c             C   s   |  j  d t |  j  d ƒ f S)Nr   r   )r6   r	   )r   r   r   r   Ú_canonical_spec   s    z$_IndividualSpecifier._canonical_specc             C   s   t  |  j ƒ S)N)Úhashr?   )r   r   r   r   r   „   s    z_IndividualSpecifier.__hash__c             C   sj   t  | t ƒ rD y |  j t | ƒ ƒ } WqZ t k
 r@ t SYqZ Xn t  | |  j ƒ sZ t S|  j | j k S)N)Ú
isinstancer   r;   r<   r   ÚNotImplementedr?   )r   r    r   r   r   r!   ˆ   s    z_IndividualSpecifier.__eq__c             C   sj   t  | t ƒ rD y |  j t | ƒ ƒ } WqZ t k
 r@ t SYqZ Xn t  | |  j ƒ sZ t S|  j | j k S)N)rA   r   r;   r<   r   rB   r6   )r   r    r   r   r   r"   ”   s    z_IndividualSpecifier.__ne__c             C   s#   t  |  d j |  j | ƒ ƒ } | S)Nz_compare_{0})Úgetattrr3   Ú
_operators)r   ÚopÚoperator_callabler   r   r   Ú_get_operator    s    z"_IndividualSpecifier._get_operatorc             C   s%   t  | t t f ƒ s! t | ƒ } | S)N)rA   r   r
   r   )r   r0   r   r   r   Ú_coerce_version§   s    z$_IndividualSpecifier._coerce_versionc             C   s   |  j  d S)Nr   )r6   )r   r   r   r   r/   ­   s    z_IndividualSpecifier.operatorc             C   s   |  j  d S)Nr   )r6   )r   r   r   r   r0   ²   s    z_IndividualSpecifier.versionc             C   s   |  j  S)N)r7   )r   r   r   r   r#   ·   s    z _IndividualSpecifier.prereleasesc             C   s   | |  _  d  S)N)r7   )r   r$   r   r   r   r#   ¼   s    c             C   s   |  j  | ƒ S)N)r&   )r   r%   r   r   r   Ú__contains__Á   s    z!_IndividualSpecifier.__contains__c             C   sZ   | d  k r |  j  } |  j | ƒ } | j r8 | r8 d S|  j |  j ƒ } | | |  j ƒ S)NF)r#   rH   Úis_prereleaserG   r/   r0   )r   r%   r#   Znormalized_itemrF   r   r   r   r&   Å   s    	z_IndividualSpecifier.containsc             c   s·   d } g  } d | d  k	 r! | n d i } xc | D][ } |  j  | ƒ } |  j | |  r1 | j r | pm |  j r | j | ƒ q1 d } | Vq1 W| r³ | r³ x | D] } | Vq¤ Wd  S)NFr#   T)rH   r&   rJ   r#   Úappend)r   r'   r#   ÚyieldedÚfound_prereleasesÚkwr0   Úparsed_versionr   r   r   r(   Û   s    		z_IndividualSpecifier.filter)r   r   r   rD   r:   r>   r   Úpropertyr?   r   r!   r"   rG   rH   r/   r0   r#   r,   rI   r&   r(   r   r   r   r   r-   _   s"   
r-   c                   sÐ   e  Z d  Z d Z e j d e d e j e j Bƒ Z d d d d d d	 d
 d d d d d i Z	 d d ‡  f d d † Z
 d d „  Z d d „  Z d d „  Z d d „  Z d d „  Z d d „  Z d  d! „  Z ‡  S)"ÚLegacySpecifieraÛ  
        (?P<operator>(==|!=|<=|>=|<|>))
        \s*
        (?P<version>
            [^,;\s)]* # Since this is a "legacy" specifier, and the version
                      # string can be just about anything, we match everything
                      # except for whitespace, a semi-colon for marker support,
                      # a closing paren since versions can be enclosed in
                      # them, and a comma since it's a version separator.
        )
        z^\s*z\s*$z==Úequalz!=Ú	not_equalz<=Úless_than_equalz>=Úgreater_than_equalú<Ú	less_thanú>Úgreater_thanr.   Nc                s-   t  t |  ƒ j | | ƒ t j d t ƒ d  S)NzZCreating a LegacyVersion has been deprecated and will be removed in the next major release)ÚsuperrQ   r:   ÚwarningsÚwarnÚDeprecationWarning)r   r8   r#   )r;   r   r   r:     s    zLegacySpecifier.__init__c             C   s%   t  | t ƒ s! t t | ƒ ƒ } | S)N)rA   r   r<   )r   r0   r   r   r   rH   !  s    zLegacySpecifier._coerce_versionc             C   s   | |  j  | ƒ k S)N)rH   )r   Úprospectiver8   r   r   r   Ú_compare_equal'  s    zLegacySpecifier._compare_equalc             C   s   | |  j  | ƒ k S)N)rH   )r   r^   r8   r   r   r   Ú_compare_not_equal+  s    z"LegacySpecifier._compare_not_equalc             C   s   | |  j  | ƒ k S)N)rH   )r   r^   r8   r   r   r   Ú_compare_less_than_equal/  s    z(LegacySpecifier._compare_less_than_equalc             C   s   | |  j  | ƒ k S)N)rH   )r   r^   r8   r   r   r   Ú_compare_greater_than_equal3  s    z+LegacySpecifier._compare_greater_than_equalc             C   s   | |  j  | ƒ k  S)N)rH   )r   r^   r8   r   r   r   Ú_compare_less_than7  s    z"LegacySpecifier._compare_less_thanc             C   s   | |  j  | ƒ k S)N)rH   )r   r^   r8   r   r   r   Ú_compare_greater_than;  s    z%LegacySpecifier._compare_greater_than)r   r   r   Ú
_regex_strÚreÚcompileÚVERBOSEÚ
IGNORECASEr1   rD   r:   rH   r_   r`   ra   rb   rc   rd   r   r   )r;   r   rQ   þ   s    $
rQ   c                s%   t  j ˆ  ƒ ‡  f d d †  ƒ } | S)Nc                s#   t  | t ƒ s d Sˆ  |  | | ƒ S)NF)rA   r
   )r   r^   r8   )Úfnr   r   ÚwrappedD  s    z)_require_version_compare.<locals>.wrapped)Ú	functoolsÚwraps)rj   rk   r   )rj   r   Ú_require_version_compare@  s    !rn   c               @   s!  e  Z d  Z d Z e j d e d e j e j Bƒ Z d d d d d d	 d
 d d d d d d d d d i Z	 e
 d d „  ƒ Z e
 d d „  ƒ Z e
 d d „  ƒ Z e
 d d „  ƒ Z e
 d d „  ƒ Z e
 d d „  ƒ Z e
 d  d! „  ƒ Z d" d# „  Z e d$ d% „  ƒ Z e j d& d% „  ƒ Z d' S)(Ú	Specifiera  
        (?P<operator>(~=|==|!=|<=|>=|<|>|===))
        (?P<version>
            (?:
                # 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]*    # We just match everything, except for whitespace
                          # since we are only testing for strict identity.
            )
            |
            (?:
                # 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
                (?:                   # pre release
                    [-_\.]?
                    (a|b|c|rc|alpha|beta|pre|preview)
                    [-_\.]?
                    [0-9]*
                )?
                (?:                   # post release
                    (?:-[0-9]+)|(?:[-_\.]?(post|rev|r)[-_\.]?[0-9]*)
                )?

                # You cannot use a wild card and a dev or local version
                # together so group them with a | and make them optional.
                (?:
                    (?:[-_\.]?dev[-_\.]?[0-9]*)?         # dev release
                    (?:\+[a-z0-9]+(?:[-_\.][a-z0-9]+)*)? # local
                    |
                    \.\*  # Wild card syntax of .*
                )?
            )
            |
            (?:
                # 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
                    [-_\.]?
                    (a|b|c|rc|alpha|beta|pre|preview)
                    [-_\.]?
                    [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.
                (?<!==|!=|~=)         # We have special cases for these
                                      # operators so we want to make sure they
                                      # don't match here.

                \s*
                v?
                (?:[0-9]+!)?          # epoch
                [0-9]+(?:\.[0-9]+)*   # release
                (?:                   # pre release
                    [-_\.]?
                    (a|b|c|rc|alpha|beta|pre|preview)
                    [-_\.]?
                    [0-9]*
                )?
                (?:                                   # post release
                    (?:-[0-9]+)|(?:[-_\.]?(post|rev|r)[-_\.]?[0-9]*)
                )?
                (?:[-_\.]?dev[-_\.]?[0-9]*)?          # dev release
            )
        )
        z^\s*z\s*$z~=Ú
compatiblez==rR   z!=rS   z<=rT   z>=rU   rV   rW   rX   rY   z===Ú	arbitraryc             C   so   d j  t t j d d „  t | ƒ ƒ ƒ d  d … ƒ } | d 7} |  j d ƒ | | ƒ on |  j d ƒ | | ƒ S)	NÚ.c             S   s   |  j  d ƒ o |  j  d ƒ S)NÚpostÚdev)Ú
startswith)Úxr   r   r   Ú<lambda>Ê  s    z/Specifier._compare_compatible.<locals>.<lambda>r   z.*z>=z==éÿÿÿÿ)ÚjoinÚlistÚ	itertoolsÚ	takewhileÚ_version_splitrG   )r   r^   r8   Úprefixr   r   r   Ú_compare_compatibleº  s    	
$zSpecifier._compare_compatiblec       	      C   s­   | j  d ƒ r{ t | j ƒ } t | d  d … ƒ } t t | ƒ ƒ } | d  t | ƒ … } t | | ƒ \ } } | | k St | ƒ } | j sŸ t | j ƒ } | | k Sd  S)Nz.*é   éþÿÿÿ)Úendswithr
   Úpublicr}   r<   ÚlenÚ_pad_versionÚlocal)	r   r^   r8   Z
split_specZsplit_prospectiveZshortened_prospectiveZpadded_specZpadded_prospectiveZspec_versionr   r   r   r_   ×  s    
	zSpecifier._compare_equalc             C   s   |  j  | | ƒ S)N)r_   )r   r^   r8   r   r   r   r`      s    zSpecifier._compare_not_equalc             C   s   t  | j ƒ t  | ƒ k S)N)r
   rƒ   )r   r^   r8   r   r   r   ra     s    z"Specifier._compare_less_than_equalc             C   s   t  | j ƒ t  | ƒ k S)N)r
   rƒ   )r   r^   r8   r   r   r   rb     s    z%Specifier._compare_greater_than_equalc             C   sU   t  | ƒ } | | k  s d S| j rQ | j rQ t  | j ƒ t  | j ƒ k rQ d Sd S)NFT)r
   rJ   Úbase_version)r   r^   Úspec_strr8   r   r   r   rc     s    zSpecifier._compare_less_thanc             C   s†   t  | ƒ } | | k s d S| j rQ | j rQ t  | j ƒ t  | j ƒ k rQ d S| j d  k	 r‚ t  | j ƒ t  | j ƒ k r‚ d Sd S)NFT)r
   Úis_postreleaser‡   r†   )r   r^   rˆ   r8   r   r   r   rd   2  s    zSpecifier._compare_greater_thanc             C   s"   t  | ƒ j ƒ  t  | ƒ j ƒ  k S)N)r<   Úlower)r   r^   r8   r   r   r   Ú_compare_arbitraryS  s    zSpecifier._compare_arbitraryc             C   ss   |  j  d  k	 r |  j  S|  j \ } } | d
 k ro | d k r\ | j d ƒ r\ | d  d … } t | ƒ j ro d Sd	 S)Nú==ú>=ú<=ú~=ú===z.*r€   TF)rŒ   r   rŽ   r   r   r   )r7   r6   r‚   r   rJ   )r   r/   r0   r   r   r   r#   W  s    zSpecifier.prereleasesc             C   s   | |  _  d  S)N)r7   )r   r$   r   r   r   r#   q  s    N)r   r   r   re   rf   rg   rh   ri   r1   rD   rn   r   r_   r`   ra   rb   rc   rd   r‹   rP   r#   r,   r   r   r   r   ro   N  s(   ]$)		!ro   z^([0-9]+)((?:a|b|c|rc)[0-9]+)$c             C   s\   g  } xO |  j  d ƒ D]> } t j | ƒ } | rG | j | j ƒ  ƒ q | j | ƒ q W| S)Nrr   )ÚsplitÚ_prefix_regexr2   ÚextendÚgroupsrK   )r0   Úresultr%   r9   r   r   r   r}   z  s    r}   c          	   C   s1  g  g  } } | j  t t j d d „  |  ƒ ƒ ƒ | j  t t j d d „  | ƒ ƒ ƒ | j  |  t | d ƒ d  … ƒ | j  | t | d ƒ d  … ƒ | j d d g t d t | d ƒ t | d ƒ ƒ ƒ | j d d g t d t | d ƒ t | d ƒ ƒ ƒ t t j | Œ  ƒ t t j | Œ  ƒ f S)Nc             S   s
   |  j  ƒ  S)N)Úisdigit)rv   r   r   r   rw   ‹  s    z_pad_version.<locals>.<lambda>c             S   s
   |  j  ƒ  S)N)r–   )rv   r   r   r   rw   Œ  s    r   r   Ú0)rK   rz   r{   r|   r„   ÚinsertÚmaxÚchain)ÚleftÚrightÚ
left_splitÚright_splitr   r   r   r…   †  s    %%!!88r…   c               @   sÓ   e  Z d  Z d d 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 e d d „  ƒ Z e j d d „  ƒ Z d d „  Z d d d „ Z d d d „ Z d S)ÚSpecifierSetr.   Nc             C   s‘   d d „  | j  d ƒ Dƒ } t ƒ  } xM | D]E } y | j t | ƒ ƒ Wq, t k
 rp | j t | ƒ ƒ Yq, Xq, Wt | ƒ |  _ | |  _ d  S)Nc             S   s(   g  |  ] } | j  ƒ  r | j  ƒ  ‘ q Sr   )r5   )Ú.0Úsr   r   r   ú
<listcomp>Ÿ  s   	 z)SpecifierSet.__init__.<locals>.<listcomp>ú,)	r‘   ÚsetÚaddro   r   rQ   Ú	frozensetÚ_specsr7   )r   Ú
specifiersr#   Zsplit_specifiersÚparsedÚ	specifierr   r   r   r:   š  s    	zSpecifierSet.__init__c             C   s=   |  j  d  k	 r! d j |  j ƒ n d } d j t |  ƒ | ƒ S)Nz, prereleases={0!r}r.   z<SpecifierSet({0!r}{1})>)r7   r3   r#   r<   )r   r=   r   r   r   r>   ±  s    !zSpecifierSet.__repr__c             C   s#   d j  t d d „  |  j Dƒ ƒ ƒ S)Nr£   c             s   s   |  ] } t  | ƒ Vq d  S)N)r<   )r    r¡   r   r   r   ú	<genexpr>½  s    z'SpecifierSet.__str__.<locals>.<genexpr>)ry   Úsortedr§   )r   r   r   r   r   »  s    zSpecifierSet.__str__c             C   s   t  |  j ƒ S)N)r@   r§   )r   r   r   r   r   ¿  s    zSpecifierSet.__hash__c             C   sÞ   t  | t ƒ r t | ƒ } n t  | t ƒ s1 t St ƒ  } t |  j | j Bƒ | _ |  j d  k r€ | j d  k	 r€ | j | _ nZ |  j d  k	 r­ | j d  k r­ |  j | _ n- |  j | j k rÎ |  j | _ n t d ƒ ‚ | S)NzFCannot combine SpecifierSets with True and False prerelease overrides.)rA   r   rŸ   rB   r¦   r§   r7   Ú
ValueError)r   r    rª   r   r   r   Ú__and__Ã  s    		zSpecifierSet.__and__c             C   sM   t  | t t f ƒ r* t t | ƒ ƒ } n t  | t ƒ s= t S|  j | j k S)N)rA   r   r-   rŸ   r<   rB   r§   )r   r    r   r   r   r!   Û  s
    zSpecifierSet.__eq__c             C   sM   t  | t t f ƒ r* t t | ƒ ƒ } n t  | t ƒ s= t S|  j | j k S)N)rA   r   r-   rŸ   r<   rB   r§   )r   r    r   r   r   r"   ä  s
    zSpecifierSet.__ne__c             C   s   t  |  j ƒ S)N)r„   r§   )r   r   r   r   Ú__len__í  s    zSpecifierSet.__len__c             C   s   t  |  j ƒ S)N)Úiterr§   )r   r   r   r   Ú__iter__ñ  s    zSpecifierSet.__iter__c             C   s=   |  j  d  k	 r |  j  S|  j s# d  St d d „  |  j Dƒ ƒ S)Nc             s   s   |  ] } | j  Vq d  S)N)r#   )r    r¡   r   r   r   r«     s    z+SpecifierSet.prereleases.<locals>.<genexpr>)r7   r§   Úany)r   r   r   r   r#   õ  s
    	zSpecifierSet.prereleasesc             C   s   | |  _  d  S)N)r7   )r   r$   r   r   r   r#     s    c             C   s   |  j  | ƒ S)N)r&   )r   r%   r   r   r   rI     s    zSpecifierSet.__contains__c                sm   t  ˆ  t t f ƒ s! t ˆ  ƒ ‰  ˆ d  k r6 |  j ‰ ˆ rJ ˆ  j rJ d St ‡  ‡ f d d †  |  j Dƒ ƒ S)NFc             3   s$   |  ] } | j  ˆ  d  ˆ ƒVq d S)r#   N)r&   )r    r¡   )r%   r#   r   r   r«   +  s    z(SpecifierSet.contains.<locals>.<genexpr>)rA   r   r
   r   r#   rJ   Úallr§   )r   r%   r#   r   )r%   r#   r   r&     s    	zSpecifierSet.containsc             C   s  | d  k r |  j  } |  j rQ x, |  j D]! } | j | d t | ƒ ƒ} q( W| Sg  } g  } x} | D]u } t | t t f ƒ sŽ t | ƒ } n | } t | t ƒ r¦ qd | j rÌ | rÌ | sÙ | j	 | ƒ qd | j	 | ƒ qd W| rú | rú | d  k rú | S| Sd  S)Nr#   )
r#   r§   r(   ÚboolrA   r   r
   r   rJ   rK   )r   r'   r#   r8   ÚfilteredrM   r%   rO   r   r   r   r(   -  s*    
		zSpecifierSet.filter)r   r   r   r:   r>   r   r   r®   r!   r"   r¯   r±   rP   r#   r,   rI   r&   r(   r   r   r   r   rŸ   ™  s   
		rŸ   )0Ú
__future__r   r   r   r)   rl   r{   rf   r[   Ú_compatr   r   Z_typingr   Úutilsr	   r0   r
   r   r   Ztypingr   r   r   r   r   r   r   r   ZParsedVersionr<   ZUnparsedVersionr´   ZCallableOperatorr­   r   ÚABCMetaÚobjectr   r-   rQ   rn   ro   rg   r’   r}   r…   rŸ   r   r   r   r   Ú<module>   s2   :"@ŸBÿ *