code: 
  
  from typing import TYPE_CHECKING
  
  from ..utils import OptionalDependencyNotAvailable, _LazyModule, is_flax_available, is_tf_available, is_torch_available
  
  
  _lowerCAmelCase     :			List[str]    ={
      """configuration_utils""": ["""GenerationConfig"""],
      """streamers""": ["""TextIteratorStreamer""", """TextStreamer"""],
  }
  
  try:
  					if not is_torch_available():
  										raise OptionalDependencyNotAvailable()
  except OptionalDependencyNotAvailable:
  					pass
  else:
  					_lowerCAmelCase     :			Union[str, Any]    =[
  					    """Constraint""",
  					    """ConstraintListState""",
  					    """DisjunctiveConstraint""",
  					    """PhrasalConstraint""",
  					]
  					_lowerCAmelCase     :			Optional[Any]    =[
  					    """BeamHypotheses""",
  					    """BeamScorer""",
  					    """BeamSearchScorer""",
  					    """ConstrainedBeamSearchScorer""",
  					]
  					_lowerCAmelCase     :			Union[str, Any]    =[
  					    """EpsilonLogitsWarper""",
  					    """EtaLogitsWarper""",
  					    """ForcedBOSTokenLogitsProcessor""",
  					    """ForcedEOSTokenLogitsProcessor""",
  					    """HammingDiversityLogitsProcessor""",
  					    """InfNanRemoveLogitsProcessor""",
  					    """LogitsProcessor""",
  					    """LogitsProcessorList""",
  					    """LogitsWarper""",
  					    """MinLengthLogitsProcessor""",
  					    """MinNewTokensLengthLogitsProcessor""",
  					    """NoBadWordsLogitsProcessor""",
  					    """NoRepeatNGramLogitsProcessor""",
  					    """PrefixConstrainedLogitsProcessor""",
  					    """RepetitionPenaltyLogitsProcessor""",
  					    """SequenceBiasLogitsProcessor""",
  					    """EncoderRepetitionPenaltyLogitsProcessor""",
  					    """TemperatureLogitsWarper""",
  					    """TopKLogitsWarper""",
  					    """TopPLogitsWarper""",
  					    """TypicalLogitsWarper""",
  					    """EncoderNoRepeatNGramLogitsProcessor""",
  					    """ExponentialDecayLengthPenalty""",
  					    """LogitNormalization""",
  					]
  					_lowerCAmelCase     :			List[str]    =[
  					    """MaxNewTokensCriteria""",
  					    """MaxLengthCriteria""",
  					    """MaxTimeCriteria""",
  					    """StoppingCriteria""",
  					    """StoppingCriteriaList""",
  					    """validate_stopping_criteria""",
  					]
  					_lowerCAmelCase     :			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:
  					_lowerCAmelCase     :			Optional[int]    =[
  					    """TFForcedBOSTokenLogitsProcessor""",
  					    """TFForcedEOSTokenLogitsProcessor""",
  					    """TFLogitsProcessor""",
  					    """TFLogitsProcessorList""",
  					    """TFLogitsWarper""",
  					    """TFMinLengthLogitsProcessor""",
  					    """TFNoBadWordsLogitsProcessor""",
  					    """TFNoRepeatNGramLogitsProcessor""",
  					    """TFRepetitionPenaltyLogitsProcessor""",
  					    """TFTemperatureLogitsWarper""",
  					    """TFTopKLogitsWarper""",
  					    """TFTopPLogitsWarper""",
  					    """TFForceTokensLogitsProcessor""",
  					    """TFSuppressTokensAtBeginLogitsProcessor""",
  					    """TFSuppressTokensLogitsProcessor""",
  					]
  					_lowerCAmelCase     :			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:
  					_lowerCAmelCase     :			str    =[
  					    """FlaxForcedBOSTokenLogitsProcessor""",
  					    """FlaxForcedEOSTokenLogitsProcessor""",
  					    """FlaxLogitsProcessor""",
  					    """FlaxLogitsProcessorList""",
  					    """FlaxLogitsWarper""",
  					    """FlaxMinLengthLogitsProcessor""",
  					    """FlaxTemperatureLogitsWarper""",
  					    """FlaxTopKLogitsWarper""",
  					    """FlaxTopPLogitsWarper""",
  					]
  					_lowerCAmelCase     :			Any    =[
  					    """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
  
  					_lowerCAmelCase     :			Optional[Any]    =_LazyModule(__name__, globals()["""__file__"""], _import_structure, module_spec=__spec__)
style_context: 
  
  import json
  import os
  import random
  import shutil
  import tempfile
  import unittest
  
  import numpy as np
  import pytest
  
  from transformers import BertTokenizer, BertTokenizerFast
  from transformers.models.bert.tokenization_bert import VOCAB_FILES_NAMES
  from transformers.testing_utils import require_vision
  from transformers.utils import IMAGE_PROCESSOR_NAME, is_vision_available
  
  
  if is_vision_available():
  					from PIL import Image
  
  					from transformers import FlavaImageProcessor, FlavaProcessor
  					from transformers.models.flava.image_processing_flava import (
  					    FLAVA_CODEBOOK_MEAN,
  					    FLAVA_CODEBOOK_STD,
  					    FLAVA_IMAGE_MEAN,
  					    FLAVA_IMAGE_STD,
  					)
  
  @require_vision
  class __UpperCamelCase    (							unittest.TestCase		):
  
  
  
  
  
  
  					'''simple docstring'''
  
  
  
  					def       _UpperCAmelCase						(							self	):
  						UpperCAmelCase__:  Optional[int]		       =   tempfile.mkdtemp()
  
  						# fmt: off
  						UpperCAmelCase__:  Optional[Any]		       =   ["[UNK]", "[CLS]", "[SEP]", "[PAD]", "[MASK]", "want", "##want", "##ed", "wa", "un", "runn", "##ing", ",", "low", "lowest"]
  						# fmt: on
  						UpperCAmelCase__:  str		       =   os.path.join(self.tmpdirname							,			VOCAB_FILES_NAMES["vocab_file"]	)
  
  						with open(self.vocab_file							,			"w"							,			encoding="utf-8"	) as fp:
  							fp.write("".join([x + "\n" for x in vocab_tokens]	)	)
  
  						UpperCAmelCase__:  Tuple		       =   {
  						    "image_mean": FLAVA_IMAGE_MEAN,
  						    "image_std": FLAVA_IMAGE_STD,
  						    "do_normalize": True,
  						    "do_resize": True,
  						    "size": 2_2_4,
  						    "do_center_crop": True,
  						    "crop_size": 2_2_4,
  						    "input_size_patches": 1_4,
  						    "total_mask_patches": 7_5,
  						    "mask_group_max_patches": None,
  						    "mask_group_min_patches": 1_6,
  						    "mask_group_min_aspect_ratio": 0.3,
  						    "mask_group_max_aspect_ratio": None,
  						    "codebook_do_resize": True,
  						    "codebook_size": 1_1_2,
  						    "codebook_do_center_crop": True,
  						    "codebook_crop_size": 1_1_2,
  						    "codebook_do_map_pixels": True,
  						    "codebook_do_normalize": True,
  						    "codebook_image_mean": FLAVA_CODEBOOK_MEAN,
  						    "codebook_image_std": FLAVA_CODEBOOK_STD,
  						}
  
  						UpperCAmelCase__:  Tuple		       =   os.path.join(self.tmpdirname							,			lowerCamelCase__	)
  						with open(self.image_processor_file							,			"w"							,			encoding="utf-8"	) as fp:
  							json.dump(lowerCamelCase__							,			lowerCamelCase__	)
  
  
  
  
  
  					def       _UpperCAmelCase						(							self							,			**lowerCamelCase__	):
  						return BertTokenizer.from_pretrained(self.tmpdirname							,			**lowerCamelCase__	)
  
  
  
  
  
  					def       _UpperCAmelCase						(							self							,			**lowerCamelCase__	):
  						return BertTokenizerFast.from_pretrained(self.tmpdirname							,			**lowerCamelCase__	)
  
  
  
  
  
  					def       _UpperCAmelCase						(							self							,			**lowerCamelCase__	):
  						return FlavaImageProcessor.from_pretrained(self.tmpdirname							,			**lowerCamelCase__	)
  
  
  
  
  
  					def       _UpperCAmelCase						(							self	):
  						shutil.rmtree(self.tmpdirname	)
  
  
  
  
  
  					def       _UpperCAmelCase						(							self	):
  						UpperCAmelCase__:  Dict		       =   [np.random.randint(2_5_5							,			size=(3, 3_0, 4_0_0)							,			dtype=np.uinta	)]
  
  						UpperCAmelCase__:  Any		       =   [Image.fromarray(np.moveaxis(lowerCamelCase__							,			0							,			-1	)	) for x in image_inputs]
  
  						return image_inputs
  
  
  
  
  
  					def       _UpperCAmelCase						(							self	):
  						UpperCAmelCase__:  int		       =   self.get_tokenizer()
  						UpperCAmelCase__:  Any		       =   self.get_rust_tokenizer()
  						UpperCAmelCase__:  List[Any]		       =   self.get_image_processor()
  
  						UpperCAmelCase__:  Tuple		       =   FlavaProcessor(tokenizer=lowerCamelCase__							,			image_processor=lowerCamelCase__	)
  						processor_slow.save_pretrained(self.tmpdirname	)
  						UpperCAmelCase__:  Dict		       =   FlavaProcessor.from_pretrained(self.tmpdirname							,			use_fast=lowerCamelCase__	)
  
  						UpperCAmelCase__:  Union[str, Any]		       =   FlavaProcessor(tokenizer=lowerCamelCase__							,			image_processor=lowerCamelCase__	)
  						processor_fast.save_pretrained(self.tmpdirname	)
  						UpperCAmelCase__:  int		       =   FlavaProcessor.from_pretrained(self.tmpdirname	)
  
  						self.assertEqual(processor_slow.tokenizer.get_vocab()							,			tokenizer_slow.get_vocab()	)
  						self.assertEqual(processor_fast.tokenizer.get_vocab()							,			tokenizer_fast.get_vocab()	)
  						self.assertEqual(tokenizer_slow.get_vocab()							,			tokenizer_fast.get_vocab()	)
  						self.assertIsInstance(processor_slow.tokenizer							,			lowerCamelCase__	)
  						self.assertIsInstance(processor_fast.tokenizer							,			lowerCamelCase__	)
  
  						self.assertEqual(processor_slow.image_processor.to_json_string()							,			image_processor.to_json_string()	)
  						self.assertEqual(processor_fast.image_processor.to_json_string()							,			image_processor.to_json_string()	)
  						self.assertIsInstance(processor_slow.image_processor							,			lowerCamelCase__	)
  						self.assertIsInstance(processor_fast.image_processor							,			lowerCamelCase__	)
  
  
  
  
  
  					def       _UpperCAmelCase						(							self	):
  						UpperCAmelCase__:  Any		       =   FlavaProcessor(tokenizer=self.get_tokenizer()							,			image_processor=self.get_image_processor()	)
  						processor.save_pretrained(self.tmpdirname	)
  
  						UpperCAmelCase__:  Any		       =   self.get_tokenizer(bos_token="(BOS)"							,			eos_token="(EOS)"	)
  						UpperCAmelCase__:  str		       =   self.get_image_processor(do_normalize=lowerCamelCase__							,			padding_value=1.0	)
  
  						UpperCAmelCase__:  str		       =   FlavaProcessor.from_pretrained(
  						    self.tmpdirname							,			bos_token="(BOS)"							,			eos_token="(EOS)"							,			do_normalize=lowerCamelCase__							,			padding_value=1.0	)
  
  						self.assertEqual(processor.tokenizer.get_vocab()							,			tokenizer_add_kwargs.get_vocab()	)
  						self.assertIsInstance(processor.tokenizer							,			lowerCamelCase__	)
  
  						self.assertEqual(processor.image_processor.to_json_string()							,			image_processor_add_kwargs.to_json_string()	)
  						self.assertIsInstance(processor.image_processor							,			lowerCamelCase__	)
  
  
  
  
  
  					def       _UpperCAmelCase						(							self	):
  						UpperCAmelCase__:  int		       =   self.get_image_processor()
  						UpperCAmelCase__:  Optional[Any]		       =   self.get_tokenizer()
  
  						UpperCAmelCase__:  Optional[Any]		       =   FlavaProcessor(tokenizer=lowerCamelCase__							,			image_processor=lowerCamelCase__	)
  
  						UpperCAmelCase__:  Optional[int]		       =   self.prepare_image_inputs()
  
  						UpperCAmelCase__:  Tuple		       =   image_processor(lowerCamelCase__							,			return_tensors="np"	)
  						UpperCAmelCase__:  str		       =   processor(images=lowerCamelCase__							,			return_tensors="np"	)
  
  						for key in input_feat_extract.keys():
  							self.assertAlmostEqual(input_feat_extract[key].sum()							,			input_processor[key].sum()							,			delta=1e-2	)
  
  						# With rest of the args
  						random.seed(1_2_3_4	)
  						UpperCAmelCase__:  Optional[int]		       =   image_processor(
  						    lowerCamelCase__							,			return_image_mask=lowerCamelCase__							,			return_codebook_pixels=lowerCamelCase__							,			return_tensors="np"	)
  						random.seed(1_2_3_4	)
  						UpperCAmelCase__:  Tuple		       =   processor(
  						    images=lowerCamelCase__							,			return_image_mask=lowerCamelCase__							,			return_codebook_pixels=lowerCamelCase__							,			return_tensors="np"	)
  
  						for key in input_feat_extract.keys():
  							self.assertAlmostEqual(input_feat_extract[key].sum()							,			input_processor[key].sum()							,			delta=1e-2	)
  
  
  
  
  
  					def       _UpperCAmelCase						(							self	):
  						UpperCAmelCase__:  Dict		       =   self.get_image_processor()
  						UpperCAmelCase__:  str		       =   self.get_tokenizer()
  
  						UpperCAmelCase__:  List[str]		       =   FlavaProcessor(tokenizer=lowerCamelCase__							,			image_processor=lowerCamelCase__	)
  
  						UpperCAmelCase__:  Union[str, Any]		       =   "lower newer"
  
  						UpperCAmelCase__:  Optional[Any]		       =   processor(text=lowerCamelCase__	)
  
  						UpperCAmelCase__:  Optional[Any]		       =   tokenizer(lowerCamelCase__	)
  
  						for key in encoded_tok.keys():
  							self.assertListEqual(encoded_tok[key]							,			encoded_processor[key]	)
  
  
  
  
  
  					def       _UpperCAmelCase						(							self	):
  						UpperCAmelCase__:  List[Any]		       =   self.get_image_processor()
  						UpperCAmelCase__:  int		       =   self.get_tokenizer()
  
  						UpperCAmelCase__:  str		       =   FlavaProcessor(tokenizer=lowerCamelCase__							,			image_processor=lowerCamelCase__	)
  
  						UpperCAmelCase__:  Any		       =   "lower newer"
  						UpperCAmelCase__:  Any		       =   self.prepare_image_inputs()
  
  						UpperCAmelCase__:  Optional[int]		       =   processor(text=lowerCamelCase__							,			images=lowerCamelCase__	)
  
  						self.assertListEqual(list(inputs.keys()	)							,			["input_ids", "token_type_ids", "attention_mask", "pixel_values"]	)
  
  						# add extra args
  						UpperCAmelCase__:  str		       =   processor(text=lowerCamelCase__							,			images=lowerCamelCase__							,			return_codebook_pixels=lowerCamelCase__							,			return_image_mask=lowerCamelCase__	)
  
  						self.assertListEqual(
  						    list(inputs.keys()	)							,			[
  						        "input_ids",
  						        "token_type_ids",
  						        "attention_mask",
  						        "pixel_values",
  						        "codebook_pixel_values",
  						        "bool_masked_pos",
  						    ]							,			)
  
  						# test if it raises when no input is passed
  						with pytest.raises(lowerCamelCase__	):
  							processor()
  
  
  
  
  
  					def       _UpperCAmelCase						(							self	):
  						UpperCAmelCase__:  Optional[Any]		       =   self.get_image_processor()
  						UpperCAmelCase__:  List[Any]		       =   self.get_tokenizer()
  
  						UpperCAmelCase__:  Any		       =   FlavaProcessor(tokenizer=lowerCamelCase__							,			image_processor=lowerCamelCase__	)
  
  						UpperCAmelCase__:  List[Any]		       =   [[1, 4, 5, 8, 1, 0, 8], [3, 4, 3, 1, 1, 8, 9]]
  
  						UpperCAmelCase__:  str		       =   processor.batch_decode(lowerCamelCase__	)
  						UpperCAmelCase__:  Dict		       =   tokenizer.batch_decode(lowerCamelCase__	)
  
  						self.assertListEqual(lowerCamelCase__							,			lowerCamelCase__	)
  
  
  
  
  
  					def       _UpperCAmelCase						(							self	):
  						UpperCAmelCase__:  List[str]		       =   self.get_image_processor()
  						UpperCAmelCase__:  Dict		       =   self.get_tokenizer()
  
  						UpperCAmelCase__:  Tuple		       =   FlavaProcessor(tokenizer=lowerCamelCase__							,			image_processor=lowerCamelCase__	)
  
  						UpperCAmelCase__:  Optional[Any]		       =   "lower newer"
  						UpperCAmelCase__:  Dict		       =   self.prepare_image_inputs()
  
  						UpperCAmelCase__:  int		       =   processor(text=lowerCamelCase__							,			images=lowerCamelCase__	)
  
  						self.assertListEqual(list(inputs.keys()	)							,			processor.model_input_names	)