�
J�gb� � � � d dl mZ d dlZd dlZd dlmZ d dlmZ d dlmZ d dlmZ d dlm Z d dlm
Z
d d lmZ d d
lmZ d dlm
Z
d dlmZ d d
lmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ ddlmZ ddlmZ erd dlmZ eeee eedf f Zeeeee ee f Z eeeedf df Z!edef Z"ed Z#e
edf Z$e
edeed f ed f Z% ed� � Z& edee" � � � Z' ej( d!� � Z)g d"�Z* G d#� d$e� � Z+ G d%� d&e,� � Z- G d'� d(e-� � Z. G d)� d*e-� � Z/ G d+� d,e-� � Z0 G d-� d.e-� � Z1 G d/� d0e1� � Z2 G d1� d2e1� � Z3 G d3� d4e2e3� � Z4 G d5� d6� � Z5 G d7� d� � Z6edDd;�� � Z7edEd>�� � Z7dFdA�Z7dGdC�Z8dS )H� )�annotationsN)�Any)�Callable)�cast)�
Collection)�Deque)�Dict)� FrozenSet)�Iterable)�Iterator)�List)�Optional)�overload)�Protocol)�Sequence)�Set)�Tuple)�
TYPE_CHECKING)�TypeVar)�Union)�util� )�not_none)�Literal.�Revision)r zLiteral['base']� �_T�_TR)�boundz(?:(.+?)@)?(\w+)?((?:\+|-)\d+))�@�-�+c � � e Zd Zdd
�ZdS )
�_CollectRevisionsProtocol�upper�_RevisionIdentifierType�lower� inclusive�bool�
implicit_base�assert_relative_length�return�;Tuple[Set[Revision], Tuple[Optional[_RevisionOrBase], ...]]c � � d S �Nr )�selfr% r'