File: D:/Python311/Lib/site-packages/soupsieve/__pycache__/__meta__.cpython-311.pyc
�
��nc� � � � d Z ddlmZ ddlZ ej d� � Zddddddddd �Zd
d
d
d
dddd
d �Zdddd�Z G d� d edg d�� � � � Z de
de fd�Z e ddddd�� � Ze�
� � ZdS )zMeta 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 - Alphaz4 - Betaz5 - Production/Stabler
r r )r r r c � � � e Zd ZdZ ddededededed ed
edd f� fd�
Zdefd
�Zdefd�Z defd�Z
defd�Zdefd�Z� xZ
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, ".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
```
r
r �major�minor�micro�release�pre�post�dev�returnc
�Z �� |||||fD ],}t |t � � r|dk st d� � ��-|t vr"t d� |� � � � �d|cxk rdk r;n n8|dk rt d� � �|rt d� � �|rt d� � �nU|d k r-|d
k r|dk rt d� � �|rt d� � �n"|rt d� � �|rt d� � �t t | � � � | |||||||� � S )
zValidate 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.zVersion is not a pre-release.)�
isinstance�int�
ValueError�REL_MAP�format�superr �__new__)
�clsr r r r r r r �value� __class__s
��4D:\Python311\Lib\site-packages\soupsieve/__meta__.pyr zVersion.__new__R s� �� � �U�E�3��5� [� [�E��u�c�*�*�
[�u��z�
[� �!Y�Z�Z�Z�
[� �'�!� R��@�G�G��P�P�Q�Q�Q� �g� J� J� J� J�� J� J� J� J� J��a�x�
U� �!E�F�F�F��
U� �!H�I�I�I��
U� �!S�T�T�T�
U� �w�
� J����
U�C�1�H�
U� �!D�E�E�E��
U� �!S�T�T�T�
U�
�
J� �!@�A�A�A��
J� �!H�I�I�I��W�c�"�"�*�*�3��u�e�W�c�SW�Y\�]�]�]� c �2 � t | j dk � � S )zIs prerelease.r )�boolr ��selfs r# �_is_prezVersion._is_prez s � � �D�H�q�L�!�!�!r$ c �2 � t | j dk � � S )zIs development.r
)r&