3 Ävhym ã @ sæ d dl mZmZmZ d dlZd dlZd dlZd dlZddlm Z m Z ddlmZm Z mZ G dd„ deƒZG dd „ d e ejeƒƒZG d d„ deƒZG dd „ d eƒZdd„ ZG dd„ deƒZejdƒZdd„ Zdd„ ZG dd„ deƒZdS )é )Úabsolute_importÚdivisionÚprint_functionNé )Ústring_typesÚwith_metaclass)ÚVersionÚ LegacyVersionÚparsec @ s e Zd ZdZdS )ÚInvalidSpecifierzH An invalid specifier was found, users should refer to PEP 440. N)Ú__name__Ú __module__Ú__qualname__Ú__doc__© r r ú /usr/lib/python3.6/specifiers.pyr s r c @ s€ e Zd Zejdd„ ƒZejdd„ ƒZejdd„ ƒZejdd„ ƒZej d d „ ƒZ e jdd „ ƒZ ejdd d„ƒZejddd„ƒZ dS )Ú BaseSpecifierc C s dS )zŽ Returns the str representation of this Specifier like object. This should be representative of the Specifier itself. Nr )Úselfr r r Ú__str__ s zBaseSpecifier.__str__c C s dS )zF Returns a hash value for this Specifier like object. Nr )r r r r Ú__hash__ s zBaseSpecifier.__hash__c C s dS )zq Returns a boolean representing whether or not the two Specifier like objects are equal. Nr )r Úotherr r r Ú__eq__$ s zBaseSpecifier.__eq__c C s dS )zu Returns a boolean representing whether or not the two Specifier like objects are not equal. Nr )r r r r r Ú__ne__+ s zBaseSpecifier.__ne__c C s dS )zg Returns whether or not pre-releases as a whole are allowed by this specifier. Nr )r r r r Úprereleases2 s zBaseSpecifier.prereleasesc C s dS )zd Sets whether or not pre-releases as a whole are allowed by this specifier. Nr )r Úvaluer r r r 9 s Nc C s dS )zR Determines if the given item is contained within this specifier. Nr )r Úitemr r r r Úcontains@ s zBaseSpecifier.containsc C s dS )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 ÚfilterF s zBaseSpecifier.filter)N)N)r r r ÚabcÚabstractmethodr r r r Úabstractpropertyr Úsetterr r r r r r r s r c @ s e Zd Zi Zd dd„Zdd„ Zdd„ Zd d „ Zdd„ Zd d„ Z dd„ Z dd„ Zedd„ ƒZ edd„ ƒZedd„ ƒZejdd„ ƒZdd„ Zd!dd„Zd"dd„ZdS )#Ú_IndividualSpecifierÚ Nc C sF | j j|ƒ}|stdj|ƒƒ‚|jdƒjƒ |jdƒjƒ f| _|| _d S )NzInvalid specifier: '{0}'ÚoperatorÚversion)Ú_regexÚsearchr ÚformatÚgroupÚstripÚ_specÚ_prereleases)r Úspecr Úmatchr r r Ú__init__R s z_IndividualSpecifier.__init__c C s0 | j d k rdj| jƒnd}dj| jjt| ƒ|ƒS )Nz, prereleases={0!r}r$ z<{0}({1!r}{2})>)r- r) r Ú __class__r Ústr)r Úprer r r Ú__repr___ s z_IndividualSpecifier.__repr__c C s dj | jŽ S )Nz{0}{1})r) r, )r r r r r l s z_IndividualSpecifier.__str__c C s t | jƒS )N)Úhashr, )r r r r r o s z_IndividualSpecifier.__hash__c C sL t |tƒr0y| j|ƒ}W q@ tk r, tS X nt || jƒs@tS | j|jkS )N)Ú isinstancer r1 r ÚNotImplementedr, )r r r r r r r s z_IndividualSpecifier.__eq__c C sL t |tƒr0y| j|ƒ}W q@ tk r, tS X nt || jƒs@tS | j|jkS )N)r6 r r1 r r7 r, )r r r r r r } s z_IndividualSpecifier.__ne__c C s t | dj| j| ƒƒS )Nz_compare_{0})Úgetattrr) Ú _operators)r Úopr r r Ú _get_operatorˆ s z"_IndividualSpecifier._get_operatorc C s t |ttfƒst|ƒ}|S )N)r6 r r r )r r&