
    1yi              	           d Z ddlmZ ddlZ ej                  d      Zddddddddd	Zd
d
d
d
ddddd	ZddddZ G d d edg d            Z	d Z
 e	dddd      Zej                         Zy)zMeta related things.    )
namedtupleNz(?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+))?
     abrc).devz
.dev-alphaz	.dev-beta.dev-candidatealphabeta	candidatefinalz2 - Pre-Alphaz	3 - Alphaz4 - Betaz5 - Production/Stabler
   r   r   )r   r   r   c                   B     e Zd ZdZd fd	Zd Zd Zd Zd Zd Z	 xZ
S )	Versional  
    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, "alpha", pre=4)             1.2a4
    Version(1, 2, 0, "beta", pre=4)              1.2b4
    Version(1, 2, 0, "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
    ```

    c           
         |||||fD ]"  }t        |t              r|dk\  rt        d       |t        vrt        dj	                  |            d|cxk  rdk  r-n n*|dk(  rt        d      |rt        d      |rLt        d      |d	k  r"|d
kD  r|dk(  rt        d      |r%t        d      |rt        d      |rt        d      t
        	|   | |||||||      S )zValidate version info.r   z6All version parts except 'release' should be integers.z!'{}' is not a valid release type.r	   r   z"Implicit pre-releases not allowed.z%Version is not a development release.z0Post-releases are not allowed with pre-releases.r
   r   z!Implicit pre-release not allowed.zVersion is not a pre-release.)
isinstanceint
ValueErrorREL_MAPformatsuper__new__)
clsmajorminormicroreleaseprepostdevvalue	__class__s
            T/var/www/html/content_weaver/venv/lib/python3.12/site-packages/materialx/__meta__.pyr   zVersion.__new__R   s    UE35 	[Euc*uz !YZZ	[ '!@GGPQQ g//ax !EFF !HII !STT wC1H !DEE !STT  !@AA !HIIwsE5%#tSQQ    c                 2    t        | j                  dkD        S )zIs prerelease.r   )boolr   selfs    r"   _is_prezVersion._is_prev   s     DHHqL!!r#   c                 2    t        | j                  dk        S )zIs development.r
   )r%   r   r&   s    r"   _is_devzVersion._is_dev{   s     DLL7*++r#   c                 2    t        | j                  dkD        S )zIs post.r   )r%   r   r&   s    r"   _is_postzVersion._is_post   s     DIIM""r#   c                 (    t         | j                     S )zGet development status string.)
DEV_STATUSr   r&   s    r"   _get_dev_statuszVersion._get_dev_status   s     $,,''r#   c                 *   | j                   dk(  r6| j                  dk7  r'dj                  | j                  | j                        }n1dj                  | j                  | j                  | j                         }| j	                         r0|dj                  t
        | j                     | j                        z  }| j                         r|dj                  | j                        z  }| j                         r|dj                  | j                        z  }|S )z Get the canonical output string.r   z{}.{}z{}.{}.{}z{}{}z.post{}z.dev{})r   r   r   r   r(   r   r   r   r,   r   r*   r   )r'   vers     r"   _get_canonicalzVersion._get_canonical   s     ::?tzzQ..TZZ8C##DJJ

DJJGC<<>6==!6AAC==?9##DII..C<<>8??488,,C
r#   )r   r   r   r   )__name__
__module____qualname____doc__r   r(   r*   r,   r/   r2   __classcell__)r!   s   @r"   r   r   '   s)    (T"RH"
,
#
(
r#   r   )r   r   r   r   r   r   r   c           	         t         j                  |       }|t        dj                  |             t	        |j                  d            }|j                  d      rt	        |j                  d            nd}|j                  d      rt	        |j                  d            nd}|j                  d      r3t        |j                  d         }t	        |j                  d            }nd}d}|j                  d	      r|j                  d	      nd}|j                  d	      r$t	        |j                  d	            }|rd
|z   nd}nd}|j                  d      rt	        |j                  d            nd}t        |||||||      S )z.Parse version into a comparable Version tuple.z'{}' is not a valid versionr   r   r   r   typer   r   r   z.dev-r   r   )RE_VERmatchr   r   r   groupPRE_REL_MAPr   )	r1   mr   r   r   r   r   r   r   s	            r"   parse_versionr?      s@    	SAy6==cBCC  !E%&WWW%5C !1E%&WWW%5C !1E 	wwvaggfo.!''%.! GGEN!''%.Cwwu~!''%.!'*'G# $%776?3qwwvD5%dC@@r#         r   )r6   collectionsr   recompiler:   r   r.   r=   r   r?   __version_info__r2   __version__ r#   r"   <module>rH      s     " 		
 	 ! %$	
 &<rj$`a rj AF 1aG, --/r#   