'''simple docstring'''




from typing import TYPE_CHECKING

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


__SCREAMING_SNAKE_CASE :  Dict  =						{
    """configuration_utils""": ["""GenerationConfig"""],
    """streamers""": ["""TextIteratorStreamer""", """TextStreamer"""],
}

try:
  if not is_torch_available():
    raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
  pass
else:
  __SCREAMING_SNAKE_CASE :  Dict  =						[
      """Constraint""",
      """ConstraintListState""",
      """DisjunctiveConstraint""",
      """PhrasalConstraint""",
  ]
  __SCREAMING_SNAKE_CASE :  List[Any]  =						[
      """BeamHypotheses""",
      """BeamScorer""",
      """BeamSearchScorer""",
      """ConstrainedBeamSearchScorer""",
  ]
  __SCREAMING_SNAKE_CASE :  List[str]  =						[
      """EpsilonLogitsWarper""",
      """EtaLogitsWarper""",
      """ForcedBOSTokenLogitsProcessor""",
      """ForcedEOSTokenLogitsProcessor""",
      """HammingDiversityLogitsProcessor""",
      """InfNanRemoveLogitsProcessor""",
      """LogitsProcessor""",
      """LogitsProcessorList""",
      """LogitsWarper""",
      """MinLengthLogitsProcessor""",
      """MinNewTokensLengthLogitsProcessor""",
      """NoBadWordsLogitsProcessor""",
      """NoRepeatNGramLogitsProcessor""",
      """PrefixConstrainedLogitsProcessor""",
      """RepetitionPenaltyLogitsProcessor""",
      """SequenceBiasLogitsProcessor""",
      """EncoderRepetitionPenaltyLogitsProcessor""",
      """TemperatureLogitsWarper""",
      """TopKLogitsWarper""",
      """TopPLogitsWarper""",
      """TypicalLogitsWarper""",
      """EncoderNoRepeatNGramLogitsProcessor""",
      """ExponentialDecayLengthPenalty""",
      """LogitNormalization""",
  ]
  __SCREAMING_SNAKE_CASE :  int  =						[
      """MaxNewTokensCriteria""",
      """MaxLengthCriteria""",
      """MaxTimeCriteria""",
      """StoppingCriteria""",
      """StoppingCriteriaList""",
      """validate_stopping_criteria""",
  ]
  __SCREAMING_SNAKE_CASE :  List[Any]  =						[
      """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:
  __SCREAMING_SNAKE_CASE :  str  =						[
      """TFForcedBOSTokenLogitsProcessor""",
      """TFForcedEOSTokenLogitsProcessor""",
      """TFLogitsProcessor""",
      """TFLogitsProcessorList""",
      """TFLogitsWarper""",
      """TFMinLengthLogitsProcessor""",
      """TFNoBadWordsLogitsProcessor""",
      """TFNoRepeatNGramLogitsProcessor""",
      """TFRepetitionPenaltyLogitsProcessor""",
      """TFTemperatureLogitsWarper""",
      """TFTopKLogitsWarper""",
      """TFTopPLogitsWarper""",
      """TFForceTokensLogitsProcessor""",
      """TFSuppressTokensAtBeginLogitsProcessor""",
      """TFSuppressTokensLogitsProcessor""",
  ]
  __SCREAMING_SNAKE_CASE :  Dict  =						[
      """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:
  __SCREAMING_SNAKE_CASE :  Tuple  =						[
      """FlaxForcedBOSTokenLogitsProcessor""",
      """FlaxForcedEOSTokenLogitsProcessor""",
      """FlaxLogitsProcessor""",
      """FlaxLogitsProcessorList""",
      """FlaxLogitsWarper""",
      """FlaxMinLengthLogitsProcessor""",
      """FlaxTemperatureLogitsWarper""",
      """FlaxTopKLogitsWarper""",
      """FlaxTopPLogitsWarper""",
  ]
  __SCREAMING_SNAKE_CASE :  str  =						[
      """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

  __SCREAMING_SNAKE_CASE :  Union[str, Any]  =						_LazyModule(__name__, globals()["""__file__"""], _import_structure, module_spec=__spec__)


'''simple docstring'''




import pytest

from datasets.utils.version import Version

@pytest.mark.parametrize(
    "other, expected_equality"    ,			[
        (Version("1.0.0"					), True),
        ("1.0.0", True),
        (Version("2.0.0"					), False),
        ("2.0.0", False),
        ("1", False),
        ("a", False),
        (1, False),
        (None, False),
    ]    ,			)
def 			UpperCamelCase_							(      _UpperCAmelCase						:   Tuple    ,			_UpperCAmelCase						:   List[Any]					)					->					int:


       """simple docstring"""







       _UpperCAmelCase  :						Union[str, Any]							   =					Version("1.0.0"					)
       assert (version == other) is expected_equality
       assert (version != other) is not expected_equality
       assert (hash(_UpperCAmelCase					) == hash(_UpperCAmelCase					)) is expected_equality

