'''simple docstring'''





from typing import TYPE_CHECKING

from ..utils import OptionalDependencyNotAvailable, _LazyModule, is_flax_available, is_tf_available, is_torch_available


UpperCamelCase       :     List[Any]			=    {
    '''configuration_utils''': ['''GenerationConfig'''],
    '''streamers''': ['''TextIteratorStreamer''', '''TextStreamer'''],
}

try:
      if not is_torch_available():
            raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
      pass
else:
      UpperCamelCase       :     Union[str, Any]			=    [
          '''Constraint''',
          '''ConstraintListState''',
          '''DisjunctiveConstraint''',
          '''PhrasalConstraint''',
      ]
      UpperCamelCase       :     Any			=    [
          '''BeamHypotheses''',
          '''BeamScorer''',
          '''BeamSearchScorer''',
          '''ConstrainedBeamSearchScorer''',
      ]
      UpperCamelCase       :     Dict			=    [
          '''EpsilonLogitsWarper''',
          '''EtaLogitsWarper''',
          '''ForcedBOSTokenLogitsProcessor''',
          '''ForcedEOSTokenLogitsProcessor''',
          '''HammingDiversityLogitsProcessor''',
          '''InfNanRemoveLogitsProcessor''',
          '''LogitsProcessor''',
          '''LogitsProcessorList''',
          '''LogitsWarper''',
          '''MinLengthLogitsProcessor''',
          '''MinNewTokensLengthLogitsProcessor''',
          '''NoBadWordsLogitsProcessor''',
          '''NoRepeatNGramLogitsProcessor''',
          '''PrefixConstrainedLogitsProcessor''',
          '''RepetitionPenaltyLogitsProcessor''',
          '''SequenceBiasLogitsProcessor''',
          '''EncoderRepetitionPenaltyLogitsProcessor''',
          '''TemperatureLogitsWarper''',
          '''TopKLogitsWarper''',
          '''TopPLogitsWarper''',
          '''TypicalLogitsWarper''',
          '''EncoderNoRepeatNGramLogitsProcessor''',
          '''ExponentialDecayLengthPenalty''',
          '''LogitNormalization''',
      ]
      UpperCamelCase       :     Optional[Any]			=    [
          '''MaxNewTokensCriteria''',
          '''MaxLengthCriteria''',
          '''MaxTimeCriteria''',
          '''StoppingCriteria''',
          '''StoppingCriteriaList''',
          '''validate_stopping_criteria''',
      ]
      UpperCamelCase       :     Dict			=    [
          '''GenerationMixin''',
          '''top_k_top_p_filtering''',
          '''GreedySearchEncoderDecoderOutput''',
          '''GreedySearchDecoderOnlyOutput''',
          '''SampleEncoderDecoderOutput''',
          '''SampleDecoderOnlyOutput''',
          '''BeamSearchEncoderDecoderOutput''',
          '''BeamSearchDecoderOnlyOutput''',
          '''BeamSampleEncoderDecoderOutput''',
          '''BeamSampleDecoderOnlyOutput''',
          '''ContrastiveSearchEncoderDecoderOutput''',
          '''ContrastiveSearchDecoderOnlyOutput''',
      ]

try:
      if not is_tf_available():
            raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
      pass
else:
      UpperCamelCase       :     Optional[Any]			=    [
          '''TFForcedBOSTokenLogitsProcessor''',
          '''TFForcedEOSTokenLogitsProcessor''',
          '''TFLogitsProcessor''',
          '''TFLogitsProcessorList''',
          '''TFLogitsWarper''',
          '''TFMinLengthLogitsProcessor''',
          '''TFNoBadWordsLogitsProcessor''',
          '''TFNoRepeatNGramLogitsProcessor''',
          '''TFRepetitionPenaltyLogitsProcessor''',
          '''TFTemperatureLogitsWarper''',
          '''TFTopKLogitsWarper''',
          '''TFTopPLogitsWarper''',
          '''TFForceTokensLogitsProcessor''',
          '''TFSuppressTokensAtBeginLogitsProcessor''',
          '''TFSuppressTokensLogitsProcessor''',
      ]
      UpperCamelCase       :     Optional[Any]			=    [
          '''TFGenerationMixin''',
          '''tf_top_k_top_p_filtering''',
          '''TFGreedySearchDecoderOnlyOutput''',
          '''TFGreedySearchEncoderDecoderOutput''',
          '''TFSampleEncoderDecoderOutput''',
          '''TFSampleDecoderOnlyOutput''',
          '''TFBeamSearchEncoderDecoderOutput''',
          '''TFBeamSearchDecoderOnlyOutput''',
          '''TFBeamSampleEncoderDecoderOutput''',
          '''TFBeamSampleDecoderOnlyOutput''',
          '''TFContrastiveSearchEncoderDecoderOutput''',
          '''TFContrastiveSearchDecoderOnlyOutput''',
      ]

try:
      if not is_flax_available():
            raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
      pass
else:
      UpperCamelCase       :     Any			=    [
          '''FlaxForcedBOSTokenLogitsProcessor''',
          '''FlaxForcedEOSTokenLogitsProcessor''',
          '''FlaxLogitsProcessor''',
          '''FlaxLogitsProcessorList''',
          '''FlaxLogitsWarper''',
          '''FlaxMinLengthLogitsProcessor''',
          '''FlaxTemperatureLogitsWarper''',
          '''FlaxTopKLogitsWarper''',
          '''FlaxTopPLogitsWarper''',
      ]
      UpperCamelCase       :     Dict			=    [
          '''FlaxGenerationMixin''',
          '''FlaxGreedySearchOutput''',
          '''FlaxSampleOutput''',
          '''FlaxBeamSearchOutput''',
      ]

if TYPE_CHECKING:
      from .configuration_utils import GenerationConfig
      from .streamers import TextIteratorStreamer, TextStreamer

      try:
            if not is_torch_available():
                  raise OptionalDependencyNotAvailable()
      except OptionalDependencyNotAvailable:
            pass
      else:
            from .beam_constraints import Constraint, ConstraintListState, DisjunctiveConstraint, PhrasalConstraint
            from .beam_search import BeamHypotheses, BeamScorer, BeamSearchScorer, ConstrainedBeamSearchScorer
            from .logits_process import (
                EncoderNoRepeatNGramLogitsProcessor,
                EncoderRepetitionPenaltyLogitsProcessor,
                EpsilonLogitsWarper,
                EtaLogitsWarper,
                ExponentialDecayLengthPenalty,
                ForcedBOSTokenLogitsProcessor,
                ForcedEOSTokenLogitsProcessor,
                HammingDiversityLogitsProcessor,
                InfNanRemoveLogitsProcessor,
                LogitNormalization,
                LogitsProcessor,
                LogitsProcessorList,
                LogitsWarper,
                MinLengthLogitsProcessor,
                MinNewTokensLengthLogitsProcessor,
                NoBadWordsLogitsProcessor,
                NoRepeatNGramLogitsProcessor,
                PrefixConstrainedLogitsProcessor,
                RepetitionPenaltyLogitsProcessor,
                SequenceBiasLogitsProcessor,
                TemperatureLogitsWarper,
                TopKLogitsWarper,
                TopPLogitsWarper,
                TypicalLogitsWarper,
            )
            from .stopping_criteria import (
                MaxLengthCriteria,
                MaxNewTokensCriteria,
                MaxTimeCriteria,
                StoppingCriteria,
                StoppingCriteriaList,
                validate_stopping_criteria,
            )
            from .utils import (
                BeamSampleDecoderOnlyOutput,
                BeamSampleEncoderDecoderOutput,
                BeamSearchDecoderOnlyOutput,
                BeamSearchEncoderDecoderOutput,
                ContrastiveSearchDecoderOnlyOutput,
                ContrastiveSearchEncoderDecoderOutput,
                GenerationMixin,
                GreedySearchDecoderOnlyOutput,
                GreedySearchEncoderDecoderOutput,
                SampleDecoderOnlyOutput,
                SampleEncoderDecoderOutput,
                top_k_top_p_filtering,
            )

      try:
            if not is_tf_available():
                  raise OptionalDependencyNotAvailable()
      except OptionalDependencyNotAvailable:
            pass
      else:
            from .tf_logits_process import (
                TFForcedBOSTokenLogitsProcessor,
                TFForcedEOSTokenLogitsProcessor,
                TFForceTokensLogitsProcessor,
                TFLogitsProcessor,
                TFLogitsProcessorList,
                TFLogitsWarper,
                TFMinLengthLogitsProcessor,
                TFNoBadWordsLogitsProcessor,
                TFNoRepeatNGramLogitsProcessor,
                TFRepetitionPenaltyLogitsProcessor,
                TFSuppressTokensAtBeginLogitsProcessor,
                TFSuppressTokensLogitsProcessor,
                TFTemperatureLogitsWarper,
                TFTopKLogitsWarper,
                TFTopPLogitsWarper,
            )
            from .tf_utils import (
                TFBeamSampleDecoderOnlyOutput,
                TFBeamSampleEncoderDecoderOutput,
                TFBeamSearchDecoderOnlyOutput,
                TFBeamSearchEncoderDecoderOutput,
                TFContrastiveSearchDecoderOnlyOutput,
                TFContrastiveSearchEncoderDecoderOutput,
                TFGenerationMixin,
                TFGreedySearchDecoderOnlyOutput,
                TFGreedySearchEncoderDecoderOutput,
                TFSampleDecoderOnlyOutput,
                TFSampleEncoderDecoderOutput,
                tf_top_k_top_p_filtering,
            )

      try:
            if not is_flax_available():
                  raise OptionalDependencyNotAvailable()
      except OptionalDependencyNotAvailable:
            pass
      else:
            from .flax_logits_process import (
                FlaxForcedBOSTokenLogitsProcessor,
                FlaxForcedEOSTokenLogitsProcessor,
                FlaxLogitsProcessor,
                FlaxLogitsProcessorList,
                FlaxLogitsWarper,
                FlaxMinLengthLogitsProcessor,
                FlaxTemperatureLogitsWarper,
                FlaxTopKLogitsWarper,
                FlaxTopPLogitsWarper,
            )
            from .flax_utils import FlaxBeamSearchOutput, FlaxGenerationMixin, FlaxGreedySearchOutput, FlaxSampleOutput
else:
      import sys

      UpperCamelCase       :     Dict			=    _LazyModule(__name__, globals()["""__file__"""], _import_structure, module_spec=__spec__)






'''simple docstring'''

import torch

from transformers import PreTrainedModel

from .custom_configuration import CustomConfig, NoSuperInitConfig



class 		lowerCamelCase__   (    A  ):




					'''simple docstring'''



					A_         =    CustomConfig




					def __init__(	self					:						int  ,	UpperCamelCase_					:						List[str]       )	->							int:



						'''simple docstring'''





						super().__init__(UpperCamelCase_       )
						_lowercase       :							List[Any]  	=		torch.nn.Linear(config.hidden_size  ,	config.hidden_size       )




					def     __UpperCAmelCase  (	self					:						Optional[int]  ,	UpperCamelCase_					:						Any       )	->							Union[str, Any]:



						'''simple docstring'''





						return self.linear(UpperCamelCase_       )




					def     __UpperCAmelCase  (	self					:						Optional[int]  ,	UpperCamelCase_					:						Optional[Any]       )	->							str:



						'''simple docstring'''





						pass






class 		lowerCamelCase__   (    A  ):




					'''simple docstring'''



					A_         =    NoSuperInitConfig




					def __init__(	self					:						Optional[int]  ,	UpperCamelCase_					:						Dict       )	->							Optional[Any]:



						'''simple docstring'''





						super().__init__(UpperCamelCase_       )
						_lowercase       :							List[str]  	=		torch.nn.Linear(config.attribute  ,	config.attribute       )




					def     __UpperCAmelCase  (	self					:						Optional[Any]  ,	UpperCamelCase_					:						Optional[int]       )	->							List[Any]:



						'''simple docstring'''





						return self.linear(UpperCamelCase_       )




					def     __UpperCAmelCase  (	self					:						Optional[Any]  ,	UpperCamelCase_					:						int       )	->							List[str]:



						'''simple docstring'''





						pass
