File: //lib/python3/dist-packages/packaging/__pycache__/specifiers.cpython-310.pyc
o
    {ۓa�u  �                	   @   s�  d dl Z d dlZd dlZd dlZd dlZd dlmZmZmZm	Z	m
Z
mZmZm
Z
mZmZmZ ddlmZ ddlmZmZmZ eeef Zeeeef Zeded�Zeeegef ZG dd	� d	e�ZG d
d� de jd�Z G d
d� de �Z!G dd� de!�Z"dedeegef dedeegef fdd�Z#G dd� de!�Z$e�%d�Z&dede
e fdd�Z'dedefdd�Z(de
e de
e dee
e e
e f fd d!�Z)G d"d#� d#e �Z*dS )$�    N)�Callable�Dict�Iterable�Iterator�List�Optional�Pattern�Set�Tuple�TypeVar�Union�   )�canonicalize_version)�
LegacyVersion�Version�parse�VersionTypeVar)�boundc                   @   s   e Zd ZdZdS )�InvalidSpecifierzH
    An invalid specifier was found, users should refer to PEP 440.
    N)�__name__�
__module__�__qualname__�__doc__� r   r   �6/usr/lib/python3/dist-packages/packaging/specifiers.pyr   !   s    r   c                	   @   s�   e Zd Zejdefdd��Zejdefdd��Zejde	de
fdd��Zejde
e
 fd	d
��Zejde
ddfd
d
��Zejddede
e
 de
fdd��Zej	ddee de
e
 dee fdd��ZdS )�
BaseSpecifier�returnc                 C   �   dS )z�
        Returns the str representation of this Specifier like object. This
        should be representative of the Specifier itself.
        Nr   ��selfr   r   r   �__str__(   �    zBaseSpecifier.__str__c                 C   r   )zF
        Returns a hash value for this Specifier like object.
        Nr   r   r   r   r   �__hash__/   r!   zBaseSpecifier.__hash__�otherc                 C   r   )zq
        Returns a boolean representing whether or not the two Specifier like
        objects are equal.
        Nr   �r   r#   r   r   r   �__eq__5   r!   zBaseSpecifier.__eq__c                 C   r   )zg
        Returns whether or not pre-releases as a whole are allowed by this
        specifier.
        Nr   r   r   r   r   �prereleases<