


from dataclasses import dataclass
from typing import List, Optional, Union

import numpy as np
import PIL
from PIL import Image

from ...utils import (
    BaseOutput,
    OptionalDependencyNotAvailable,
    is_flax_available,
    is_k_diffusion_available,
    is_k_diffusion_version,
    is_onnx_available,
    is_torch_available,
    is_transformers_available,
    is_transformers_version,
)







@dataclass
class 		_snake_case  (				_snake_case							):
 SCREAMING_SNAKE_CASE__				=	42
 SCREAMING_SNAKE_CASE__				=	42


try:
     if not (is_transformers_available() and is_torch_available()):
          raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
     from ...utils.dummy_torch_and_transformers_objects import *  # noqa F403
else:
     from .pipeline_cycle_diffusion import CycleDiffusionPipeline
     from .pipeline_stable_diffusion import StableDiffusionPipeline
     from .pipeline_stable_diffusion_attend_and_excite import StableDiffusionAttendAndExcitePipeline
     from .pipeline_stable_diffusion_imgaimg import StableDiffusionImgaImgPipeline
     from .pipeline_stable_diffusion_inpaint import StableDiffusionInpaintPipeline
     from .pipeline_stable_diffusion_inpaint_legacy import StableDiffusionInpaintPipelineLegacy
     from .pipeline_stable_diffusion_instruct_pixapix import StableDiffusionInstructPixaPixPipeline
     from .pipeline_stable_diffusion_latent_upscale import StableDiffusionLatentUpscalePipeline
     from .pipeline_stable_diffusion_ldmad import StableDiffusionLDMaDPipeline
     from .pipeline_stable_diffusion_model_editing import StableDiffusionModelEditingPipeline
     from .pipeline_stable_diffusion_panorama import StableDiffusionPanoramaPipeline
     from .pipeline_stable_diffusion_paradigms import StableDiffusionParadigmsPipeline
     from .pipeline_stable_diffusion_sag import StableDiffusionSAGPipeline
     from .pipeline_stable_diffusion_upscale import StableDiffusionUpscalePipeline
     from .pipeline_stable_unclip import StableUnCLIPPipeline
     from .pipeline_stable_unclip_imgaimg import StableUnCLIPImgaImgPipeline
     from .safety_checker import StableDiffusionSafetyChecker
     from .stable_unclip_image_normalizer import StableUnCLIPImageNormalizer

try:
     if not (is_transformers_available() and is_torch_available() and is_transformers_version('''>=''', '''4.25.0''')):
          raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
     from ...utils.dummy_torch_and_transformers_objects import StableDiffusionImageVariationPipeline
else:
     from .pipeline_stable_diffusion_image_variation import StableDiffusionImageVariationPipeline


try:
     if not (is_transformers_available() and is_torch_available() and is_transformers_version('''>=''', '''4.26.0''')):
          raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
     from ...utils.dummy_torch_and_transformers_objects import (
         StableDiffusionDepthaImgPipeline,
         StableDiffusionDiffEditPipeline,
         StableDiffusionPixaPixZeroPipeline,
     )
else:
     from .pipeline_stable_diffusion_depthaimg import StableDiffusionDepthaImgPipeline
     from .pipeline_stable_diffusion_diffedit import StableDiffusionDiffEditPipeline
     from .pipeline_stable_diffusion_pixapix_zero import StableDiffusionPixaPixZeroPipeline


try:
     if not (
         is_torch_available()
         and is_transformers_available()
         and is_k_diffusion_available()
         and is_k_diffusion_version('''>=''', '''0.0.12''')
     ):
          raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
     from ...utils.dummy_torch_and_transformers_and_k_diffusion_objects import *  # noqa F403
else:
     from .pipeline_stable_diffusion_k_diffusion import StableDiffusionKDiffusionPipeline

try:
     if not (is_transformers_available() and is_onnx_available()):
          raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
     from ...utils.dummy_onnx_objects import *  # noqa F403
else:
     from .pipeline_onnx_stable_diffusion import OnnxStableDiffusionPipeline, StableDiffusionOnnxPipeline
     from .pipeline_onnx_stable_diffusion_imgaimg import OnnxStableDiffusionImgaImgPipeline
     from .pipeline_onnx_stable_diffusion_inpaint import OnnxStableDiffusionInpaintPipeline
     from .pipeline_onnx_stable_diffusion_inpaint_legacy import OnnxStableDiffusionInpaintPipelineLegacy
     from .pipeline_onnx_stable_diffusion_upscale import OnnxStableDiffusionUpscalePipeline

if is_transformers_available() and is_flax_available():
     import flax







     @flax.struct.dataclass
     class 		_snake_case  (				_snake_case							):
      SCREAMING_SNAKE_CASE__				=	42
      SCREAMING_SNAKE_CASE__				=	42







     from ...schedulers.scheduling_pndm_flax import PNDMSchedulerState
     from .pipeline_flax_stable_diffusion import FlaxStableDiffusionPipeline
     from .pipeline_flax_stable_diffusion_imgaimg import FlaxStableDiffusionImgaImgPipeline
     from .pipeline_flax_stable_diffusion_inpaint import FlaxStableDiffusionInpaintPipeline
     from .safety_checker_flax import FlaxStableDiffusionSafetyChecker









import json
import os
import unittest

from transformers import MgpstrTokenizer
from transformers.models.mgp_str.tokenization_mgp_str import VOCAB_FILES_NAMES
from transformers.testing_utils import require_tokenizers

from ...test_tokenization_common import TokenizerTesterMixin







@require_tokenizers
class 		_snake_case  (				_snake_case						,   unittest.TestCase							):
 SCREAMING_SNAKE_CASE__				=	MgpstrTokenizer
 SCREAMING_SNAKE_CASE__				=	False
 SCREAMING_SNAKE_CASE__				=	{}
 SCREAMING_SNAKE_CASE__				=	False




 def 	SCREAMING_SNAKE_CASE__    (		self   ):
       super().setUp()

       # fmt: off
       a						:int										=	['''[GO]''', '''[s]''', '''0''', '''1''', '''2''', '''3''', '''4''', '''5''', '''6''', '''7''', '''8''', '''9''', '''a''', '''b''', '''c''', '''d''', '''e''', '''f''', '''g''', '''h''', '''i''', '''j''', '''k''', '''l''', '''m''', '''n''', '''o''', '''p''', '''q''', '''r''', '''s''', '''t''', '''u''', '''v''', '''w''', '''x''', '''y''', '''z''']
       # fmt: on
       a						:List[str]										=	dict(zip(_lowerCamelCase ,  range(len(_lowerCamelCase   )   )   )   )

       a						:Any										=	os.path.join(self.tmpdirname ,  VOCAB_FILES_NAMES['''vocab_file''']   )
       with open(self.vocab_file ,  '''w''' ,  encoding='''utf-8'''   ) as fp:
             fp.write(json.dumps(_lowerCamelCase   ) + '''\n'''   )




 def 	SCREAMING_SNAKE_CASE__    (		self ,  **_lowerCamelCase   ):
       return MgpstrTokenizer.from_pretrained(self.tmpdirname ,  **_lowerCamelCase   )




 def 	SCREAMING_SNAKE_CASE__    (		self ,  _lowerCamelCase   ):
       a						:str										=	'''tester'''
       a						:Union[str, Any]										=	'''tester'''
       return input_text, output_text




 @unittest.skip('''MGP-STR always lower cases letters.'''   )
 def 	SCREAMING_SNAKE_CASE__    (		self   ):
       pass




 def 	SCREAMING_SNAKE_CASE__    (		self   ):
       a						:List[Any]										=	self.get_tokenizers(do_lower_case=_lowerCamelCase   )
       for tokenizer in tokenizers:
             with self.subTest(F'''{tokenizer.__class__.__name__}'''   ):
                   a						:Any										=	'''[SPECIAL_TOKEN]'''

                   tokenizer.add_special_tokens({'''cls_token''': special_token}   )
                   a						:str										=	tokenizer.encode([special_token] ,  add_special_tokens=_lowerCamelCase   )
                   self.assertEqual(len(_lowerCamelCase   ) ,  1   )

                   a						:Tuple										=	tokenizer.decode(_lowerCamelCase ,  skip_special_tokens=_lowerCamelCase   )
                   self.assertTrue(special_token not in decoded   )




 def 	SCREAMING_SNAKE_CASE__    (		self   ):
       a						:Optional[Any]										=	self.get_tokenizers()
       for tokenizer in tokenizers:
             with self.subTest(F'''{tokenizer.__class__.__name__}'''   ):
                   a							,    a						:Tuple										=	self.get_input_output_texts(_lowerCamelCase   )

                   a						:Tuple										=	tokenizer.tokenize(_lowerCamelCase   )
                   a						:int										=	tokenizer.convert_tokens_to_ids(_lowerCamelCase   )
                   a						:Optional[int]										=	tokenizer.encode(_lowerCamelCase ,  add_special_tokens=_lowerCamelCase   )
                   self.assertListEqual(_lowerCamelCase ,  _lowerCamelCase   )

                   a						:Any										=	tokenizer.convert_ids_to_tokens(_lowerCamelCase   )
                   self.assertNotEqual(len(_lowerCamelCase   ) ,  0   )
                   a						:str										=	tokenizer.decode(_lowerCamelCase   )
                   self.assertIsInstance(_lowerCamelCase ,  _lowerCamelCase   )

                   self.assertEqual(text_a.replace(''' ''' ,  ''''''   ) ,  _lowerCamelCase   )




 @unittest.skip('''MGP-STR tokenizer only handles one sequence.'''   )
 def 	SCREAMING_SNAKE_CASE__    (		self   ):
       pass




 @unittest.skip('''inputs cannot be pretokenized in MgpstrTokenizer'''   )
 def 	SCREAMING_SNAKE_CASE__    (		self   ):
       pass





