�
㦧bmO � � � d Z ddlZddlZddlZ ddlZdZn
# e$ r dZY nw xY wd� Z G d� de� � Z G d� d e� � Z
dS )
z>
Utilities for consuming the version from importlib-metadata.
� NTFc �H � t | � � dS # t $ r Y dS w xY w)NTF)�int�
ValueError)�strings �-/usr/lib/python3/dist-packages/pbr/version.py�_is_intr s9 � ���F�����t��� � � ��u�u����s � �
!�!c � � e Zd ZdZ dd�Zd� Zd� Zd� Zd� Zd � Z d
� Z
d� Zd� Zd
� Z
ed� � � Zed� � � Zd� Zd� Zd� Zdd�Zdd�Zd� Zd� Zd� Zd� ZdS )�SemanticVersionzvA pure semantic version independent of serialisation.
See the pbr doc 'semver' for details on the semantics.
r Nc � � || _ || _ || _ || _ || _ | j r| j sd| _ |pd| _ dS )a
Create a SemanticVersion.
:param major: Major component of the version.
:param minor: Minor component of the version. Defaults to 0.
:param patch: Patch level component. Defaults to 0.
:param prerelease_type: What sort of prerelease version this is -
one of a(alpha), b(beta) or rc(release candidate).
:param prerelease: For prerelease versions, what number prerelease.
Defaults to 0.
:param dev_count: How many commits since the last release.
r N)�_major�_minor�_patch�_prerelease_type�_prerelease�
_dev_count)�self�major�minor�patch�prerelease_type�
prerelease� dev_counts r �__init__zSemanticVersion.__init__. sU � � ��������� /���%���� � !��)9� !� �D��#�.�q����� c �P � t |t � � sdS | j |j k S )NF)�
isinstancer
�__dict__�r �others r �__eq__zSemanticVersion.__eq__E s( � ��%��1�1� ��5��}���.�.r c �t � t t t | j � � � � � � � S �N)�sum�map�hashr �values�r s r �__hash__zSemanticVersion.__hash__J s( � ��3�t�T�]�1�1�3�3�4�4�5�5�5r c � � ddddd�}| j r
| j sd}nd}| j | j | j ||| j | j | j pt j fS )z.Return a key for sorting SemanticVersion's on.�a�b�rc�z)r* r+ r, Nr � )r r r r
r r �sys�maxsize)r � rc_lookup�uq_devs r � _sort_keyzSemanticVersion._sort_keyM sk � � �C�t�3�?�?� ��?� �4�#8� ��F�F��F��K���d�k���d�+�,�d�.>��O�*�s�{� ,� ,r c � � t |t � � st d� � �| � � � |� � � k S )z1Compare self and other, another Semantic Version.z,ordering to non-SemanticVersion is undefined)r r
� TypeErrorr3 r s r �__lt__zSemanticVersion.__lt__d sE � � �%��1�1� L��J�K�K�K��~�~���%�/�/�"3�"3�3�3r c � � | |k p| |k S r" |