





import time
import warnings
from abc import ABC
from copy import deepcopy
from typing import Optional

import torch

from ..utils import add_start_docstrings, logging


_a						=   logging.get_logger(__name__)


_a						=   r"\n    Args:\n        input_ids (`torch.LongTensor` of shape `(batch_size, sequence_length)`):\n            Indices of input sequence tokens in the vocabulary.\n\n            Indices can be obtained using [`AutoTokenizer`]. See [`PreTrainedTokenizer.encode`] and\n            [`PreTrainedTokenizer.__call__`] for details.\n\n            [What are input IDs?](../glossary#input-ids)\n        scores (`torch.FloatTensor` of shape `(batch_size, config.vocab_size)`):\n            Prediction scores of a language modeling head. These can be scores for each vocabulary token before SoftMax\n            or scores for each vocabulary token after SoftMax.\n        kwargs (`Dict[str, Any]`, *optional*):\n            Additional stopping criteria specific kwargs.\n\n    Return:\n        `bool`. `False` indicates we should continue, `True` indicates we should stop.\n\n"






class       __A					(					lowerCAmelCase				):

   '''simple docstring'''







   @add_start_docstrings(__lowerCAmelCase							)
   def __call__(					self ,						__lowerCAmelCase ,						__lowerCAmelCase ,						**__lowerCAmelCase							):



    '''simple docstring'''







    raise NotImplementedError('''StoppingCriteria needs to be subclassed'''							)






class       __A					(					lowerCAmelCase				):

   '''simple docstring'''







   def __init__(					self ,						__lowerCAmelCase ,						__lowerCAmelCase = None							):



    '''simple docstring'''







    lowerCamelCase__              =	max_length
    lowerCamelCase__              =	max_position_embeddings





   @add_start_docstrings(__lowerCAmelCase							)
   def __call__(					self ,						__lowerCAmelCase ,						__lowerCAmelCase ,						**__lowerCAmelCase							):



    '''simple docstring'''







    lowerCamelCase__              =	input_ids.shape[-1]
    lowerCamelCase__              =	cur_len >= self.max_length
    if self.max_position_embeddings is not None and not is_done and cur_len >= self.max_position_embeddings:
     logger.warning_once(
         '''This is a friendly reminder - the current text generation call will exceed the model\'s predefined '''
         F'maximum length ({self.max_position_embeddings}). Depending on the model, you may observe '
         '''exceptions, performance degradation, or nothing at all.'''							)
    return is_done






class       __A					(					lowerCAmelCase				):

   '''simple docstring'''







   def __init__(					self ,						__lowerCAmelCase ,						__lowerCAmelCase							):



    '''simple docstring'''







    warnings.warn(
        '''The class `MaxNewTokensCriteria` is deprecated. '''
        F'Please use `MaxLengthCriteria(max_length={start_length + max_new_tokens})` '
        '''with `max_length = start_length + max_new_tokens` instead.''' ,						__lowerCAmelCase ,						)
    lowerCamelCase__              =	start_length
    lowerCamelCase__              =	max_new_tokens
    lowerCamelCase__              =	start_length + max_new_tokens





   @add_start_docstrings(__lowerCAmelCase							)
   def __call__(					self ,						__lowerCAmelCase ,						__lowerCAmelCase ,						**__lowerCAmelCase							):



    '''simple docstring'''







    return input_ids.shape[-1] >= self.max_length






class       __A					(					lowerCAmelCase				):

   '''simple docstring'''







   def __init__(					self ,						__lowerCAmelCase ,						__lowerCAmelCase = None							):



    '''simple docstring'''







    lowerCamelCase__              =	max_time
    lowerCamelCase__              =	time.time() if initial_timestamp is None else initial_timestamp





   @add_start_docstrings(__lowerCAmelCase							)
   def __call__(					self ,						__lowerCAmelCase ,						__lowerCAmelCase ,						**__lowerCAmelCase							):



    '''simple docstring'''







    return time.time() - self.initial_timestamp > self.max_time






class       __A					(					lowerCAmelCase				):

   '''simple docstring'''







   @add_start_docstrings(__lowerCAmelCase							)
   def __call__(					self ,						__lowerCAmelCase ,						__lowerCAmelCase ,						**__lowerCAmelCase							):



    '''simple docstring'''







    return any(criteria(__lowerCAmelCase ,						__lowerCAmelCase							) for criteria in self							)





   @property
   def 	__lowerCamelCase       (					self							):



    '''simple docstring'''







    for stopping_criterium in self:
     if isinstance(__lowerCAmelCase ,						__lowerCAmelCase							):
      return stopping_criterium.max_length
     elif isinstance(__lowerCAmelCase ,						__lowerCAmelCase							):
      return stopping_criterium.max_length
    return None





def lowerCAmelCase__(__snake_case ,__snake_case							)       ->   StoppingCriteriaList:







 '''simple docstring'''







 lowerCamelCase__              =	stopping_criteria.max_length
 lowerCamelCase__              =	deepcopy(__snake_case							)
 if stopping_max_length is not None and stopping_max_length != max_length:
  warnings.warn('''You set different `max_length` for stopping criteria and `max_length` parameter''' ,__snake_case							)
 elif stopping_max_length is None:
  new_stopping_criteria.append(MaxLengthCriteria(max_length=__snake_case							)							)
 return new_stopping_criteria










import warnings

from ...utils import logging
from .image_processing_segformer import SegformerImageProcessor


_a						=   logging.get_logger(__name__)






class       __A					(					lowerCAmelCase				):

			'''simple docstring'''







			def __init__(					self ,						*__lowerCAmelCase ,						**__lowerCAmelCase							):



				'''simple docstring'''







				warnings.warn(
				    '''The class SegformerFeatureExtractor is deprecated and will be removed in version 5 of Transformers.'''
				    ''' Please use SegformerImageProcessor instead.''' ,						__lowerCAmelCase ,						)
				super().__init__(*__lowerCAmelCase ,						**__lowerCAmelCase							)



