
"""simple docstring"""




from ...utils import (
    OptionalDependencyNotAvailable,
    is_torch_available,
    is_transformers_available,
    is_transformers_version,
)


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 UnCLIPImageVariationPipeline, UnCLIPPipeline
else:
						from .pipeline_unclip import UnCLIPPipeline
						from .pipeline_unclip_image_variation import UnCLIPImageVariationPipeline
						from .text_proj import UnCLIPTextProjModel

"""simple docstring"""




import json
import os
import unittest

from transformers.models.ctrl.tokenization_ctrl import VOCAB_FILES_NAMES, CTRLTokenizer

from ...test_tokenization_common import TokenizerTesterMixin





class  snake_case     (							__lowercase       ,			unittest.TestCase   ):
							UpperCAmelCase__						     =      CTRLTokenizer
							UpperCAmelCase__						     =      False
							UpperCAmelCase__						     =      False

							def _lowercase					(self    ):

									"""simple docstring"""







									super().setUp()

									# Adapted from Sennrich et al. 2015 and https://github.com/rsennrich/subword-nmt
									SCREAMING_SNAKE_CASE_						 = ['''adapt''', '''re@@''', '''a@@''', '''apt''', '''c@@''', '''t''', '''<unk>''']
									SCREAMING_SNAKE_CASE_						 = dict(zip(SCREAMING_SNAKE_CASE_       ,       range(len(SCREAMING_SNAKE_CASE_    )    )    )    )
									SCREAMING_SNAKE_CASE_						 = ['''#version: 0.2''', '''a p''', '''ap t</w>''', '''r e''', '''a d''', '''ad apt</w>''', '''''']
									SCREAMING_SNAKE_CASE_						 = {'''unk_token''': '''<unk>'''}

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

							def _lowercase					(self       ,       **SCREAMING_SNAKE_CASE_    ):

									"""simple docstring"""







									kwargs.update(self.special_tokens_map    )
									return CTRLTokenizer.from_pretrained(self.tmpdirname       ,       **SCREAMING_SNAKE_CASE_    )

							def _lowercase					(self       ,       SCREAMING_SNAKE_CASE_    ):

									"""simple docstring"""







									SCREAMING_SNAKE_CASE_						 = '''adapt react readapt apt'''
									SCREAMING_SNAKE_CASE_						 = '''adapt react readapt apt'''
									return input_text, output_text







							def _lowercase					(self    ):

									"""simple docstring"""







									SCREAMING_SNAKE_CASE_						 = CTRLTokenizer(self.vocab_file       ,       self.merges_file       ,       **self.special_tokens_map    )
									SCREAMING_SNAKE_CASE_						 = '''adapt react readapt apt'''
									SCREAMING_SNAKE_CASE_						 = '''adapt re@@ a@@ c@@ t re@@ adapt apt'''.split()
									SCREAMING_SNAKE_CASE_						 = tokenizer.tokenize(SCREAMING_SNAKE_CASE_    )
									self.assertListEqual(SCREAMING_SNAKE_CASE_       ,       SCREAMING_SNAKE_CASE_    )

									SCREAMING_SNAKE_CASE_						 = tokens + [tokenizer.unk_token]

									SCREAMING_SNAKE_CASE_						 = [0, 1, 2, 4, 5, 1, 0, 3, 6]
									self.assertListEqual(tokenizer.convert_tokens_to_ids(SCREAMING_SNAKE_CASE_    )       ,       SCREAMING_SNAKE_CASE_    )