





"""simple docstring"""




from typing import TYPE_CHECKING

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


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

try:
						if not is_torch_available():
												raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
						pass
else:
						UpperCamelCase_	 =[
						    """Constraint""",
						    """ConstraintListState""",
						    """DisjunctiveConstraint""",
						    """PhrasalConstraint""",
						]
						UpperCamelCase_	 =[
						    """BeamHypotheses""",
						    """BeamScorer""",
						    """BeamSearchScorer""",
						    """ConstrainedBeamSearchScorer""",
						]
						UpperCamelCase_	 =[
						    """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_	 =[
						    """MaxNewTokensCriteria""",
						    """MaxLengthCriteria""",
						    """MaxTimeCriteria""",
						    """StoppingCriteria""",
						    """StoppingCriteriaList""",
						    """validate_stopping_criteria""",
						]
						UpperCamelCase_	 =[
						    """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_	 =[
						    """TFForcedBOSTokenLogitsProcessor""",
						    """TFForcedEOSTokenLogitsProcessor""",
						    """TFLogitsProcessor""",
						    """TFLogitsProcessorList""",
						    """TFLogitsWarper""",
						    """TFMinLengthLogitsProcessor""",
						    """TFNoBadWordsLogitsProcessor""",
						    """TFNoRepeatNGramLogitsProcessor""",
						    """TFRepetitionPenaltyLogitsProcessor""",
						    """TFTemperatureLogitsWarper""",
						    """TFTopKLogitsWarper""",
						    """TFTopPLogitsWarper""",
						    """TFForceTokensLogitsProcessor""",
						    """TFSuppressTokensAtBeginLogitsProcessor""",
						    """TFSuppressTokensLogitsProcessor""",
						]
						UpperCamelCase_	 =[
						    """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_	 =[
						    """FlaxForcedBOSTokenLogitsProcessor""",
						    """FlaxForcedEOSTokenLogitsProcessor""",
						    """FlaxLogitsProcessor""",
						    """FlaxLogitsProcessorList""",
						    """FlaxLogitsWarper""",
						    """FlaxMinLengthLogitsProcessor""",
						    """FlaxTemperatureLogitsWarper""",
						    """FlaxTopKLogitsWarper""",
						    """FlaxTopPLogitsWarper""",
						]
						UpperCamelCase_	 =[
						    """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_	 =_LazyModule(__name__, globals()["""__file__"""], _import_structure, module_spec=__spec__)









"""simple docstring"""





import math
import os

import cva
import numpy as np

_lowercase						   =     2_55.0

def 		lowerCAmelCase				(			lowerCamelCase   ,      lowerCamelCase		):
						'''simple docstring'''


						snake_case__							:       Tuple				      =       np.mean((original - contrast) ** 2		)
						if mse == 0:
												return 100

						return 20 * math.logaa(PIXEL_MAX / math.sqrt(lowerCamelCase		)		)

def 		lowerCAmelCase				(			):
						'''simple docstring'''


						snake_case__							:       Any				      =       os.path.dirname(os.path.realpath(lowerCamelCase		)		)
						# Loading images (original image and compressed image)
						snake_case__							:       Any				      =       cva.imread(os.path.join(lowerCamelCase   ,      '''image_data/original_image.png'''		)		)
						snake_case__							:       Any				      =       cva.imread(os.path.join(lowerCamelCase   ,      '''image_data/compressed_image.png'''		)   ,      1		)

						snake_case__							:       Optional[Any]				      =       cva.imread(os.path.join(lowerCamelCase   ,      '''image_data/PSNR-example-base.png'''		)		)
						snake_case__							:       Tuple				      =       cva.imread(
						    os.path.join(lowerCamelCase   ,      '''image_data/PSNR-example-comp-10.jpg'''		)   ,      1		)

						# Value expected: 29.73dB
						print('''-- First Test --'''		)
						print(f'''PSNR value is {peak_signal_to_noise_ratio(lowerCamelCase   ,      lowerCamelCase		)} dB'''		)

						# # Value expected: 31.53dB (Wikipedia Example)
						print('''\n-- Second Test --'''		)
						print(f'''PSNR value is {peak_signal_to_noise_ratio(lowerCamelCase   ,      lowerCamelCase		)} dB'''		)


if __name__ == "__main__":
							main()


