ó
æŽ‹]c        
   @  s=  d  Z  d d l m Z d d l m Z d d l Z e j d ƒ Z i d d 6d d	 6d
 d 6d d 6d d 6d
 d 6d d 6d d 6Z i d d 6d d	 6d d 6d d 6d d 6d d 6d d 6d d 6Z	 i d d 6d d
 6d d 6Z
 d e d d d d d d d d g ƒ f d „  ƒ  YZ e d  „ Z e d! d" d# d ƒ Z e j ƒ  Z d S($   u   Meta related things.iÿÿÿÿ(   t   unicode_literals(   t
   namedtupleNu¤   (?x)
    (?P<major>\d+)(?:\.(?P<minor>\d+))?(?:\.(?P<micro>\d+))?
    (?:(?P<type>a|b|rc)(?P<pre>\d+))?
    (?:\.post(?P<post>\d+))?
    (?:\.dev(?P<dev>\d+))?
    u    u   .devu   au
   .dev-alphau   bu	   .dev-betau   rcu   .dev-candidateu   alphau   betau	   candidateu   finalu   2 - Pre-Alphau	   3 - Alphau   4 - Betau   5 - Production/Stablet   Versionu   Versionu   majoru   minoru   microu   releaseu   preu   postu   devc           B  sP   e  Z d  Z d d d d d „ Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(	   ul  
    Get the version (PEP 440).

    A biased approach to the PEP 440 semantic version.

    Provides a tuple structure which is sorted for comparisons `v1 > v2` etc.
      (major, minor, micro, release type, pre-release build, post-release build, development release build)
    Release types are named in is such a way they are comparable with ease.
    Accessors to check if a development, pre-release, or post-release build. Also provides accessor to get
    development status for setup files.

    How it works (currently):

    - You must specify a release type as either `final`, `alpha`, `beta`, or `candidate`.
    - To define a development release, you can use either `.dev`, `.dev-alpha`, `.dev-beta`, or `.dev-candidate`.
      The dot is used to ensure all development specifiers are sorted before `alpha`.
      You can specify a `dev` number for development builds, but do not have to as implicit development releases
      are allowed.
    - You must specify a `pre` value greater than zero if using a prerelease as this project (not PEP 440) does not
      allow implicit prereleases.
    - You can optionally set `post` to a value greater than zero to make the build a post release. While post releases
      are technically allowed in prereleases, it is strongly discouraged, so we are rejecting them. It should be
      noted that we do not allow `post0` even though PEP 440 does not restrict this. This project specifically
      does not allow implicit post releases.
    - It should be noted that we do not support epochs `1!` or local versions `+some-custom.version-1`.

    Acceptable version releases:

    ```
    Version(1, 0, 0, "final")                    1.0
    Version(1, 2, 0, "final")                    1.2
    Version(1, 2, 3, "final")                    1.2.3
    Version(1, 2, 0, ".dev-alpha", pre=4)        1.2a4
    Version(1, 2, 0, ".dev-beta", pre=4)         1.2b4
    Version(1, 2, 0, ".dev-candidate", pre=4)    1.2rc4
    Version(1, 2, 0, "final", post=1)            1.2.post1
    Version(1, 2, 3, ".dev")                     1.2.3.dev0
    Version(1, 2, 3, ".dev", dev=1)              1.2.3.dev1
    ```

    u   finali    c   	   	   C  sr  xG | | | | | f D]0 } t  | t ƒ o4 | d k s t d ƒ ‚ q q W| t k rn t d j | ƒ ƒ ‚ n  d | k  o… d k  n rÒ | d k r¥ t d ƒ ‚ qG| rº t d ƒ ‚ qG| rGt d ƒ ‚ qGnu | d	 k  r| d
 k r| d k rt d ƒ ‚ qG| rGt d ƒ ‚ qGn* | r2t d ƒ ‚ n | rGt d ƒ ‚ n  t t |  ƒ j |  | | | | | | | ƒ S(   u   Validate version info.i    u6   All version parts except 'release' should be integers.u!   '{}' is not a valid release type.u   .dev-candidateu   finalu"   Implicit pre-releases not allowed.u%   Version is not a development release.u0   Post-releases are not allowed with pre-releases.u   alphau   .devu!   Implicit pre-release not allowed.u   Version is not a pre-release.(   t
   isinstancet   intt
   ValueErrort   REL_MAPt   formatt   superR   t   __new__(	   t   clst   majort   minort   microt   releaset   pret   postt   devt   value(    (    s1   lib/python2.7/site-packages/soupsieve/__meta__.pyR	   S   s,    c         C  s   |  j  d k S(   u   Is prerelease.i    (   R   (   t   self(    (    s1   lib/python2.7/site-packages/soupsieve/__meta__.pyt   _is_prew   s    c         C  s   t  |  j d k  ƒ S(   u   Is development.u   alpha(   t   boolR   (   R   (    (    s1   lib/python2.7/site-packages/soupsieve/__meta__.pyt   _is_dev|   s    c         C  s   |  j  d k S(   u   Is post.i    (   R   (   R   (    (    s1   lib/python2.7/site-packages/soupsieve/__meta__.pyt   _is_post   s    c         C  s   t  |  j S(   u   Get development status string.(   t
   DEV_STATUSR   (   R   (    (    s1   lib/python2.7/site-packages/soupsieve/__meta__.pyt   _get_dev_status†   s    c         C  sÅ   |  j  d k r* d j |  j |  j ƒ } n d j |  j |  j |  j  ƒ } |  j ƒ  rw | d j t |  j |  j ƒ 7} n  |  j ƒ  rœ | d j |  j	 ƒ 7} n  |  j
 ƒ  rÁ | d j |  j ƒ 7} n  | S(   u    Get the canonical output string.i    u   {}.{}u   {}.{}.{}u   {}{}u   .post{}u   .dev{}(   R   R   R   R   R   R   R   R   R   R   R   R   (   R   t   ver(    (    s1   lib/python2.7/site-packages/soupsieve/__meta__.pyt   _get_canonical‹   s    #(	   t   __name__t
   __module__t   __doc__R	   R   R   R   R   R   (    (    (    s1   lib/python2.7/site-packages/soupsieve/__meta__.pyR   (   s   )$				c   	      C  sk  t  j |  ƒ } t | j d ƒ ƒ } | j d ƒ rH t | j d ƒ ƒ n d } | j d ƒ rr t | j d ƒ ƒ n d } | j d ƒ r² t | j d ƒ } t | j d ƒ ƒ } n d } d } | j d ƒ rÜ | j d ƒ n d } | j d ƒ rt | j d ƒ ƒ } | rd	 | n d
 } n d } | j d ƒ rIt | j d ƒ ƒ n d } t | | | | | | | ƒ S(   u.   Parse version into a comparable Version tuple.u   majoru   minori    u   microu   typeu   preu   finalu   devu   .dev-u   .devu   post(   t   RE_VERt   matchR   t   groupt   PRE_REL_MAPR   (	   R   R   t   mR   R   R   R   R   R   (    (    s1   lib/python2.7/site-packages/soupsieve/__meta__.pyt   parse_version   s     **$*i   i	   i   (   R   t
   __future__R    t   collectionsR   t   ret   compileR   R   R   R"   R   t   FalseR$   t   __version_info__R   t   __version__(    (    (    s1   lib/python2.7/site-packages/soupsieve/__meta__.pyt   <module>   s8   	

4u 