"""simple docstring"""




import gc
import random
import unittest

import numpy as np
import torch
from transformers import XLMRobertaTokenizerFast

from diffusers import DDIMScheduler, KandinskyPipeline, KandinskyPriorPipeline, UNetaDConditionModel, VQModel
from diffusers.pipelines.kandinsky.text_encoder import MCLIPConfig, MultilingualCLIP
from diffusers.utils import floats_tensor, load_numpy, slow, torch_device
from diffusers.utils.testing_utils import enable_full_determinism, require_torch_gpu

from ..test_pipelines_common import PipelineTesterMixin, assert_mean_pixel_difference


enable_full_determinism()

class        __SCREAMING_SNAKE_CASE     (   _lowerCAmelCase						,       unittest.TestCase							):
				UpperCAmelCase	=      KandinskyPipeline
				UpperCAmelCase	=      [
				    '''prompt''',
				    '''image_embeds''',
				    '''negative_image_embeds''',
				]
				UpperCAmelCase	=      ['''prompt''', '''negative_prompt''', '''image_embeds''', '''negative_image_embeds''']
				UpperCAmelCase	=      [
				    '''generator''',
				    '''height''',
				    '''width''',
				    '''latents''',
				    '''guidance_scale''',
				    '''negative_prompt''',
				    '''num_inference_steps''',
				    '''return_dict''',
				    '''guidance_scale''',
				    '''num_images_per_prompt''',
				    '''output_type''',
				    '''return_dict''',
				]
				UpperCAmelCase	=      False







				@property
				def   lowercase_		(    self    :Any  )      ->					Optional[int]:




									"""simple docstring"""



									return 32







				@property
				def   lowercase_		(    self    :Dict  )      ->					Union[str, Any]:




									"""simple docstring"""



									return 32







				@property
				def   lowercase_		(    self    :Union[str, Any]  )      ->					Tuple:




									"""simple docstring"""



									return self.time_input_dim







				@property
				def   lowercase_		(    self    :Optional[int]  )      ->					List[str]:




									"""simple docstring"""



									return self.time_input_dim * 4







				@property
				def   lowercase_		(    self    :Any  )      ->					List[str]:




									"""simple docstring"""



									return 1_00







				@property
				def   lowercase_		(    self    :Any  )      ->					Tuple:




									"""simple docstring"""



									lowerCamelCase__		:   Dict  				=					XLMRobertaTokenizerFast.from_pretrained('''YiYiXu/tiny-random-mclip-base'''  )
									return tokenizer







				@property
				def   lowercase_		(    self    :Dict  )      ->					List[Any]:




									"""simple docstring"""



									torch.manual_seed(0  )
									lowerCamelCase__		:   Any  				=					MCLIPConfig(
									    numDims=self.cross_attention_dim      ,transformerDimensions=self.text_embedder_hidden_size      ,hidden_size=self.text_embedder_hidden_size      ,intermediate_size=37      ,num_attention_heads=4      ,num_hidden_layers=5      ,vocab_size=10_05      ,)

									lowerCamelCase__		:   Dict  				=					MultilingualCLIP(__UpperCAmelCase  )
									lowerCamelCase__		:   List[Any]  				=					text_encoder.eval()

									return text_encoder







				@property
				def   lowercase_		(    self    :int  )      ->					Any:




									"""simple docstring"""



									torch.manual_seed(0  )

									lowerCamelCase__		:   Union[str, Any]  				=					{
									    '''in_channels''': 4,
									    # Out channels is double in channels because predicts mean and variance
									    '''out_channels''': 8,
									    '''addition_embed_type''': '''text_image''',
									    '''down_block_types''': ('''ResnetDownsampleBlock2D''', '''SimpleCrossAttnDownBlock2D'''),
									    '''up_block_types''': ('''SimpleCrossAttnUpBlock2D''', '''ResnetUpsampleBlock2D'''),
									    '''mid_block_type''': '''UNetMidBlock2DSimpleCrossAttn''',
									    '''block_out_channels''': (self.block_out_channels_a, self.block_out_channels_a * 2),
									    '''layers_per_block''': 1,
									    '''encoder_hid_dim''': self.text_embedder_hidden_size,
									    '''encoder_hid_dim_type''': '''text_image_proj''',
									    '''cross_attention_dim''': self.cross_attention_dim,
									    '''attention_head_dim''': 4,
									    '''resnet_time_scale_shift''': '''scale_shift''',
									    '''class_embed_type''': None,
									}

									lowerCamelCase__		:   Optional[int]  				=					UNetaDConditionModel(**__UpperCAmelCase  )
									return model







				@property
				def   lowercase_		(    self    :List[str]  )      ->					Optional[Any]:




									"""simple docstring"""



									return {
									    "block_out_channels": [32, 64],
									    "down_block_types": ["DownEncoderBlock2D", "AttnDownEncoderBlock2D"],
									    "in_channels": 3,
									    "latent_channels": 4,
									    "layers_per_block": 1,
									    "norm_num_groups": 8,
									    "norm_type": "spatial",
									    "num_vq_embeddings": 12,
									    "out_channels": 3,
									    "up_block_types": [
									        "AttnUpDecoderBlock2D",
									        "UpDecoderBlock2D",
									    ],
									    "vq_embed_dim": 4,
									}







				@property
				def   lowercase_		(    self    :List[Any]  )      ->					Dict:




									"""simple docstring"""



									torch.manual_seed(0  )
									lowerCamelCase__		:   Union[str, Any]  				=					VQModel(**self.dummy_movq_kwargs  )
									return model







				def   lowercase_		(    self    :List[str]  )      ->					Tuple:




									"""simple docstring"""



									lowerCamelCase__		:   List[Any]  				=					self.dummy_text_encoder
									lowerCamelCase__		:   Union[str, Any]  				=					self.dummy_tokenizer
									lowerCamelCase__		:   Dict  				=					self.dummy_unet
									lowerCamelCase__		:   Optional[int]  				=					self.dummy_movq

									lowerCamelCase__		:   List[Any]  				=					DDIMScheduler(
									    num_train_timesteps=10_00      ,beta_schedule='''linear'''      ,beta_start=0.00_085      ,beta_end=0.012      ,clip_sample=__UpperCAmelCase      ,set_alpha_to_one=__UpperCAmelCase      ,steps_offset=1      ,prediction_type='''epsilon'''      ,thresholding=__UpperCAmelCase      ,)

									lowerCamelCase__		:   Optional[Any]  				=					{
									    '''text_encoder''': text_encoder,
									    '''tokenizer''': tokenizer,
									    '''unet''': unet,
									    '''scheduler''': scheduler,
									    '''movq''': movq,
									}
									return components







				def   lowercase_		(    self    :Any      ,__UpperCAmelCase    :List[Any]      ,__UpperCAmelCase    :Optional[int]=0  )      ->					Any:




									"""simple docstring"""



									lowerCamelCase__		:   Dict  				=					floats_tensor((1, self.cross_attention_dim)      ,rng=random.Random(__UpperCAmelCase  )  ).to(__UpperCAmelCase  )
									lowerCamelCase__		:   Dict  				=					floats_tensor((1, self.cross_attention_dim)      ,rng=random.Random(seed + 1  )  ).to(__UpperCAmelCase  )
									if str(__UpperCAmelCase  ).startswith('''mps'''  ):
														lowerCamelCase__		:   Optional[Any]  				=					torch.manual_seed(__UpperCAmelCase  )
									else:
														lowerCamelCase__		:   Optional[int]  				=					torch.Generator(device=__UpperCAmelCase  ).manual_seed(__UpperCAmelCase  )
									lowerCamelCase__		:   Any  				=					{
									    '''prompt''': '''horse''',
									    '''image_embeds''': image_embeds,
									    '''negative_image_embeds''': negative_image_embeds,
									    '''generator''': generator,
									    '''height''': 64,
									    '''width''': 64,
									    '''guidance_scale''': 4.0,
									    '''num_inference_steps''': 2,
									    '''output_type''': '''np''',
									}
									return inputs







				def   lowercase_		(    self    :List[Any]  )      ->					Any:




									"""simple docstring"""



									lowerCamelCase__		:   int  				=					'''cpu'''

									lowerCamelCase__		:   Any  				=					self.get_dummy_components()

									lowerCamelCase__		:   Union[str, Any]  				=					self.pipeline_class(**__UpperCAmelCase  )
									lowerCamelCase__		:   str  				=					pipe.to(__UpperCAmelCase  )

									pipe.set_progress_bar_config(disable=__UpperCAmelCase  )

									lowerCamelCase__		:   Tuple  				=					pipe(**self.get_dummy_inputs(__UpperCAmelCase  )  )
									lowerCamelCase__		:   List[Any]  				=					output.images

									lowerCamelCase__		:   str  				=					pipe(
									    **self.get_dummy_inputs(__UpperCAmelCase  )      ,return_dict=__UpperCAmelCase      ,)[0]

									lowerCamelCase__		:   str  				=					image[0, -3:, -3:, -1]
									lowerCamelCase__		:   Optional[Any]  				=					image_from_tuple[0, -3:, -3:, -1]

									assert image.shape == (1, 64, 64, 3)

									lowerCamelCase__		:   List[str]  				=					np.array(
									    [0.328_663, 1.0, 0.23_216_873, 1.0, 0.92_717_564, 0.4_639_046, 0.96_894_777, 0.31_713_378, 0.6_293_953]  )

									assert (
									    np.abs(image_slice.flatten() - expected_slice  ).max() < 1E-2
									), F""" expected_slice {expected_slice}, but got {image_slice.flatten()}"""
									assert (
									    np.abs(image_from_tuple_slice.flatten() - expected_slice  ).max() < 1E-2
									), F""" expected_slice {expected_slice}, but got {image_from_tuple_slice.flatten()}"""





@slow
@require_torch_gpu
class        __SCREAMING_SNAKE_CASE     (   unittest.TestCase							):







				def   lowercase_		(    self    :Union[str, Any]  )      ->					Any:




									"""simple docstring"""



									super().tearDown()
									gc.collect()
									torch.cuda.empty_cache()







				def   lowercase_		(    self    :Optional[Any]  )      ->					Optional[int]:




									"""simple docstring"""



									lowerCamelCase__		:   int  				=					load_numpy(
									    '''https://huggingface.co/datasets/hf-internal-testing/diffusers-images/resolve/main'''
									    '''/kandinsky/kandinsky_text2img_cat_fp16.npy'''  )

									lowerCamelCase__		:   Dict  				=					KandinskyPriorPipeline.from_pretrained(
									    '''kandinsky-community/kandinsky-2-1-prior'''      ,torch_dtype=torch.floataa  )
									pipe_prior.to(__UpperCAmelCase  )

									lowerCamelCase__		:   str  				=					KandinskyPipeline.from_pretrained('''kandinsky-community/kandinsky-2-1'''      ,torch_dtype=torch.floataa  )
									lowerCamelCase__		:   Union[str, Any]  				=					pipeline.to(__UpperCAmelCase  )
									pipeline.set_progress_bar_config(disable=__UpperCAmelCase  )

									lowerCamelCase__		:   str  				=					'''red cat, 4k photo'''

									lowerCamelCase__		:   Dict  				=					torch.Generator(device='''cuda'''  ).manual_seed(0  )
									lowerCamelCase__				,						lowerCamelCase__		:   Union[str, Any]  				=					pipe_prior(
									    __UpperCAmelCase      ,generator=__UpperCAmelCase      ,num_inference_steps=5      ,negative_prompt=''''''      ,).to_tuple()

									lowerCamelCase__		:   Tuple  				=					torch.Generator(device='''cuda'''  ).manual_seed(0  )
									lowerCamelCase__		:   int  				=					pipeline(
									    __UpperCAmelCase      ,image_embeds=__UpperCAmelCase      ,negative_image_embeds=__UpperCAmelCase      ,generator=__UpperCAmelCase      ,num_inference_steps=1_00      ,output_type='''np'''      ,)

									lowerCamelCase__		:   List[str]  				=					output.images[0]

									assert image.shape == (5_12, 5_12, 3)

									assert_mean_pixel_difference(__UpperCAmelCase      ,__UpperCAmelCase  )







"""simple docstring"""




import os
import pickle
import tempfile
import unittest
from typing import Callable, Optional

import numpy as np

from transformers import (
    BatchEncoding,
    BertTokenizer,
    BertTokenizerFast,
    PreTrainedTokenizer,
    PreTrainedTokenizerFast,
    TensorType,
    TokenSpan,
    is_tokenizers_available,
)
from transformers.models.gpta.tokenization_gpta import GPTaTokenizer
from transformers.testing_utils import CaptureStderr, require_flax, require_tf, require_tokenizers, require_torch, slow


if is_tokenizers_available():
					from tokenizers import Tokenizer
					from tokenizers.models import WordPiece

class        __SCREAMING_SNAKE_CASE     (   unittest.TestCase							):







				def   lowercase_		(    self    :Optional[Any]      ,__UpperCAmelCase    :Dict  )      ->					Optional[Any]:




									"""simple docstring"""



									lowerCamelCase__		:   Dict  				=					list(tokenizer_class.max_model_input_sizes.keys()  )
									for model_name in sa_models[:1]:
														lowerCamelCase__		:   Tuple  				=					tokenizer_class.from_pretrained(__UpperCAmelCase  )
														self.assertIsNotNone(__UpperCAmelCase  )
														self.assertIsInstance(__UpperCAmelCase      ,__UpperCAmelCase  )
														self.assertIsInstance(__UpperCAmelCase      ,__UpperCAmelCase  )

														for special_tok in tokenizer.all_special_tokens:
																			self.assertIsInstance(__UpperCAmelCase      ,__UpperCAmelCase  )
																			lowerCamelCase__		:   str  				=					tokenizer.convert_tokens_to_ids(__UpperCAmelCase  )
																			self.assertIsInstance(__UpperCAmelCase      ,__UpperCAmelCase  )







				def   lowercase_		(    self    :Any      ,__UpperCAmelCase    :BatchEncoding      ,__UpperCAmelCase    :Optional[Callable] = None  )      ->					Optional[Any]:




									"""simple docstring"""



									lowerCamelCase__		:   List[str]  				=					pickle.dumps(__UpperCAmelCase  )
									self.assertIsNotNone(__UpperCAmelCase  )

									lowerCamelCase__		:   int  				=					pickle.loads(__UpperCAmelCase  )

									# Ensure is_fast is correctly restored
									self.assertEqual(be_restored.is_fast      ,be_original.is_fast  )

									# Ensure encodings are potentially correctly restored
									if be_original.is_fast:
														self.assertIsNotNone(be_restored.encodings  )
									else:
														self.assertIsNone(be_restored.encodings  )

									# Ensure the keys are the same
									for original_v, restored_v in zip(be_original.values()      ,be_restored.values()  ):
														if equal_op:
																			self.assertTrue(equal_op(__UpperCAmelCase      ,__UpperCAmelCase  )  )
														else:
																			self.assertEqual(__UpperCAmelCase      ,__UpperCAmelCase  )







				@slow
				def   lowercase_		(    self    :Tuple  )      ->					List[str]:




									"""simple docstring"""



									self.check_tokenizer_from_pretrained(__UpperCAmelCase  )







				def   lowercase_		(    self    :Optional[int]  )      ->					int:




									"""simple docstring"""



									self.assertEqual(TensorType('''tf'''  )      ,TensorType.TENSORFLOW  )
									self.assertEqual(TensorType('''pt'''  )      ,TensorType.PYTORCH  )
									self.assertEqual(TensorType('''np'''  )      ,TensorType.NUMPY  )







				@require_tokenizers
				def   lowercase_		(    self    :List[Any]  )      ->					Optional[Any]:




									"""simple docstring"""



									import numpy as np

									lowerCamelCase__		:   Any  				=					BertTokenizer.from_pretrained('''bert-base-cased'''  )
									lowerCamelCase__		:   Optional[int]  				=					BertTokenizerFast.from_pretrained('''bert-base-cased'''  )

									# Python no tensor
									with self.subTest('''BatchEncoding (Python, return_tensors=None)'''  ):
														self.assert_dump_and_restore(tokenizer_p('''Small example to encode'''  )  )

									with self.subTest('''BatchEncoding (Python, return_tensors=NUMPY)'''  ):
														self.assert_dump_and_restore(
														    tokenizer_p('''Small example to encode'''      ,return_tensors=TensorType.NUMPY  )      ,np.array_equal  )

									with self.subTest('''BatchEncoding (Rust, return_tensors=None)'''  ):
														self.assert_dump_and_restore(tokenizer_r('''Small example to encode'''  )  )

									with self.subTest('''BatchEncoding (Rust, return_tensors=NUMPY)'''  ):
														self.assert_dump_and_restore(
														    tokenizer_r('''Small example to encode'''      ,return_tensors=TensorType.NUMPY  )      ,np.array_equal  )







				@require_tf
				@require_tokenizers
				def   lowercase_		(    self    :Optional[int]  )      ->					int:




									"""simple docstring"""



									import tensorflow as tf

									def tf_array_equals(__UpperCAmelCase    :List[Any]      ,__UpperCAmelCase    :List[Any]  ):
														return tf.reduce_all(tf.equal(__UpperCAmelCase      ,__UpperCAmelCase  )  )

									lowerCamelCase__		:   str  				=					BertTokenizer.from_pretrained('''bert-base-cased'''  )
									lowerCamelCase__		:   List[Any]  				=					BertTokenizerFast.from_pretrained('''bert-base-cased'''  )

									with self.subTest('''BatchEncoding (Python, return_tensors=TENSORFLOW)'''  ):
														self.assert_dump_and_restore(
														    tokenizer_p('''Small example to encode'''      ,return_tensors=TensorType.TENSORFLOW  )      ,__UpperCAmelCase  )

									with self.subTest('''BatchEncoding (Rust, return_tensors=TENSORFLOW)'''  ):
														self.assert_dump_and_restore(
														    tokenizer_r('''Small example to encode'''      ,return_tensors=TensorType.TENSORFLOW  )      ,__UpperCAmelCase  )







				@require_torch
				@require_tokenizers
				def   lowercase_		(    self    :Dict  )      ->					Optional[int]:




									"""simple docstring"""



									import torch

									lowerCamelCase__		:   Optional[int]  				=					BertTokenizer.from_pretrained('''bert-base-cased'''  )
									lowerCamelCase__		:   List[str]  				=					BertTokenizerFast.from_pretrained('''bert-base-cased'''  )

									with self.subTest('''BatchEncoding (Python, return_tensors=PYTORCH)'''  ):
														self.assert_dump_and_restore(
														    tokenizer_p('''Small example to encode'''      ,return_tensors=TensorType.PYTORCH  )      ,torch.equal  )

									with self.subTest('''BatchEncoding (Rust, return_tensors=PYTORCH)'''  ):
														self.assert_dump_and_restore(
														    tokenizer_r('''Small example to encode'''      ,return_tensors=TensorType.PYTORCH  )      ,torch.equal  )







				@require_tokenizers
				def   lowercase_		(    self    :Tuple  )      ->					List[str]:




									"""simple docstring"""



									lowerCamelCase__		:   Dict  				=					BertTokenizer.from_pretrained('''bert-base-cased'''  )
									lowerCamelCase__		:   Any  				=					BertTokenizerFast.from_pretrained('''bert-base-cased'''  )

									with self.subTest('''Python Tokenizer'''  ):
														self.assertFalse(tokenizer_p('''Small example to_encode'''  ).is_fast  )

									with self.subTest('''Rust Tokenizer'''  ):
														self.assertTrue(tokenizer_r('''Small example to_encode'''  ).is_fast  )







				@require_tokenizers
				def   lowercase_		(    self    :List[str]  )      ->					str:




									"""simple docstring"""



									lowerCamelCase__		:   Optional[Any]  				=					BertTokenizerFast.from_pretrained('''bert-base-cased'''  )
									lowerCamelCase__		:   str  				=					tokenizer_r(['''Test''', '''\xad''', '''test''']      ,is_split_into_words=__UpperCAmelCase  )

									self.assertEqual(encoded.word_to_tokens(0  )      ,TokenSpan(start=1      ,end=2  )  )
									self.assertEqual(encoded.word_to_tokens(1  )      ,__UpperCAmelCase  )
									self.assertEqual(encoded.word_to_tokens(2  )      ,TokenSpan(start=2      ,end=3  )  )







				def   lowercase_		(    self    :Dict  )      ->					Optional[int]:




									"""simple docstring"""



									lowerCamelCase__		:   Optional[int]  				=					BatchEncoding({'''inputs''': [[1, 2, 3], [4, 5, 6]], '''labels''': [0, 1]}  )
									lowerCamelCase__		:   Tuple  				=					batch.convert_to_tensors(tensor_type='''np'''  )
									self.assertEqual(tensor_batch['''inputs'''].shape      ,(2, 3)  )
									self.assertEqual(tensor_batch['''labels'''].shape      ,(2,)  )
									# test converting the converted
									with CaptureStderr() as cs:
														lowerCamelCase__		:   List[str]  				=					batch.convert_to_tensors(tensor_type='''np'''  )
									self.assertFalse(len(cs.err  )      ,msg=F"""should have no warning, but got {cs.err}"""  )

									lowerCamelCase__		:   Union[str, Any]  				=					BatchEncoding({'''inputs''': [1, 2, 3], '''labels''': 0}  )
									lowerCamelCase__		:   Dict  				=					batch.convert_to_tensors(tensor_type='''np'''      ,prepend_batch_axis=__UpperCAmelCase  )
									self.assertEqual(tensor_batch['''inputs'''].shape      ,(1, 3)  )
									self.assertEqual(tensor_batch['''labels'''].shape      ,(1,)  )







				@require_torch
				def   lowercase_		(    self    :Optional[int]  )      ->					List[Any]:




									"""simple docstring"""



									lowerCamelCase__		:   List[Any]  				=					BatchEncoding({'''inputs''': [[1, 2, 3], [4, 5, 6]], '''labels''': [0, 1]}  )
									lowerCamelCase__		:   Any  				=					batch.convert_to_tensors(tensor_type='''pt'''  )
									self.assertEqual(tensor_batch['''inputs'''].shape      ,(2, 3)  )
									self.assertEqual(tensor_batch['''labels'''].shape      ,(2,)  )
									# test converting the converted
									with CaptureStderr() as cs:
														lowerCamelCase__		:   Optional[int]  				=					batch.convert_to_tensors(tensor_type='''pt'''  )
									self.assertFalse(len(cs.err  )      ,msg=F"""should have no warning, but got {cs.err}"""  )

									lowerCamelCase__		:   Optional[int]  				=					BatchEncoding({'''inputs''': [1, 2, 3], '''labels''': 0}  )
									lowerCamelCase__		:   Optional[Any]  				=					batch.convert_to_tensors(tensor_type='''pt'''      ,prepend_batch_axis=__UpperCAmelCase  )
									self.assertEqual(tensor_batch['''inputs'''].shape      ,(1, 3)  )
									self.assertEqual(tensor_batch['''labels'''].shape      ,(1,)  )







				@require_tf
				def   lowercase_		(    self    :Optional[Any]  )      ->					Union[str, Any]:




									"""simple docstring"""



									lowerCamelCase__		:   Optional[Any]  				=					BatchEncoding({'''inputs''': [[1, 2, 3], [4, 5, 6]], '''labels''': [0, 1]}  )
									lowerCamelCase__		:   Union[str, Any]  				=					batch.convert_to_tensors(tensor_type='''tf'''  )
									self.assertEqual(tensor_batch['''inputs'''].shape      ,(2, 3)  )
									self.assertEqual(tensor_batch['''labels'''].shape      ,(2,)  )
									# test converting the converted
									with CaptureStderr() as cs:
														lowerCamelCase__		:   Optional[Any]  				=					batch.convert_to_tensors(tensor_type='''tf'''  )
									self.assertFalse(len(cs.err  )      ,msg=F"""should have no warning, but got {cs.err}"""  )

									lowerCamelCase__		:   int  				=					BatchEncoding({'''inputs''': [1, 2, 3], '''labels''': 0}  )
									lowerCamelCase__		:   Dict  				=					batch.convert_to_tensors(tensor_type='''tf'''      ,prepend_batch_axis=__UpperCAmelCase  )
									self.assertEqual(tensor_batch['''inputs'''].shape      ,(1, 3)  )
									self.assertEqual(tensor_batch['''labels'''].shape      ,(1,)  )







				@require_flax
				def   lowercase_		(    self    :Optional[int]  )      ->					List[str]:




									"""simple docstring"""



									lowerCamelCase__		:   Optional[Any]  				=					BatchEncoding({'''inputs''': [[1, 2, 3], [4, 5, 6]], '''labels''': [0, 1]}  )
									lowerCamelCase__		:   str  				=					batch.convert_to_tensors(tensor_type='''jax'''  )
									self.assertEqual(tensor_batch['''inputs'''].shape      ,(2, 3)  )
									self.assertEqual(tensor_batch['''labels'''].shape      ,(2,)  )
									# test converting the converted
									with CaptureStderr() as cs:
														lowerCamelCase__		:   Any  				=					batch.convert_to_tensors(tensor_type='''jax'''  )
									self.assertFalse(len(cs.err  )      ,msg=F"""should have no warning, but got {cs.err}"""  )

									lowerCamelCase__		:   List[Any]  				=					BatchEncoding({'''inputs''': [1, 2, 3], '''labels''': 0}  )
									lowerCamelCase__		:   Tuple  				=					batch.convert_to_tensors(tensor_type='''jax'''      ,prepend_batch_axis=__UpperCAmelCase  )
									self.assertEqual(tensor_batch['''inputs'''].shape      ,(1, 3)  )
									self.assertEqual(tensor_batch['''labels'''].shape      ,(1,)  )







				def   lowercase_		(    self    :str  )      ->					Union[str, Any]:




									"""simple docstring"""



									lowerCamelCase__		:   str  				=					[{'''input_ids''': np.array([0, 1, 2]  )}, {'''input_ids''': np.array([0, 1, 2, 3]  )}]
									lowerCamelCase__		:   Optional[Any]  				=					BertTokenizer.from_pretrained('''bert-base-cased'''  )

									lowerCamelCase__		:   Dict  				=					tokenizer.pad(__UpperCAmelCase      ,padding=__UpperCAmelCase  )
									self.assertTrue(isinstance(batch['''input_ids''']      ,np.ndarray  )  )
									self.assertEqual(batch['''input_ids'''].tolist()      ,[[0, 1, 2, tokenizer.pad_token_id], [0, 1, 2, 3]]  )
									lowerCamelCase__		:   Optional[Any]  				=					tokenizer.pad(__UpperCAmelCase      ,padding=__UpperCAmelCase      ,return_tensors='''np'''  )
									self.assertTrue(isinstance(batch['''input_ids''']      ,np.ndarray  )  )
									self.assertEqual(batch['''input_ids'''].tolist()      ,[[0, 1, 2, tokenizer.pad_token_id], [0, 1, 2, 3]]  )







				@require_torch
				def   lowercase_		(    self    :Tuple  )      ->					List[str]:




									"""simple docstring"""



									import torch

									lowerCamelCase__		:   Union[str, Any]  				=					[{'''input_ids''': torch.tensor([0, 1, 2]  )}, {'''input_ids''': torch.tensor([0, 1, 2, 3]  )}]
									lowerCamelCase__		:   Any  				=					BertTokenizer.from_pretrained('''bert-base-cased'''  )

									lowerCamelCase__		:   Tuple  				=					tokenizer.pad(__UpperCAmelCase      ,padding=__UpperCAmelCase  )
									self.assertTrue(isinstance(batch['''input_ids''']      ,torch.Tensor  )  )
									self.assertEqual(batch['''input_ids'''].tolist()      ,[[0, 1, 2, tokenizer.pad_token_id], [0, 1, 2, 3]]  )
									lowerCamelCase__		:   Optional[int]  				=					tokenizer.pad(__UpperCAmelCase      ,padding=__UpperCAmelCase      ,return_tensors='''pt'''  )
									self.assertTrue(isinstance(batch['''input_ids''']      ,torch.Tensor  )  )
									self.assertEqual(batch['''input_ids'''].tolist()      ,[[0, 1, 2, tokenizer.pad_token_id], [0, 1, 2, 3]]  )







				@require_tf
				def   lowercase_		(    self    :int  )      ->					Optional[int]:




									"""simple docstring"""



									import tensorflow as tf

									lowerCamelCase__		:   List[Any]  				=					[{'''input_ids''': tf.constant([0, 1, 2]  )}, {'''input_ids''': tf.constant([0, 1, 2, 3]  )}]
									lowerCamelCase__		:   str  				=					BertTokenizer.from_pretrained('''bert-base-cased'''  )

									lowerCamelCase__		:   Tuple  				=					tokenizer.pad(__UpperCAmelCase      ,padding=__UpperCAmelCase  )
									self.assertTrue(isinstance(batch['''input_ids''']      ,tf.Tensor  )  )
									self.assertEqual(batch['''input_ids'''].numpy().tolist()      ,[[0, 1, 2, tokenizer.pad_token_id], [0, 1, 2, 3]]  )
									lowerCamelCase__		:   Tuple  				=					tokenizer.pad(__UpperCAmelCase      ,padding=__UpperCAmelCase      ,return_tensors='''tf'''  )
									self.assertTrue(isinstance(batch['''input_ids''']      ,tf.Tensor  )  )
									self.assertEqual(batch['''input_ids'''].numpy().tolist()      ,[[0, 1, 2, tokenizer.pad_token_id], [0, 1, 2, 3]]  )







				@require_tokenizers
				def   lowercase_		(    self    :Dict  )      ->					Optional[int]:




									"""simple docstring"""



									lowerCamelCase__		:   List[Any]  				=					Tokenizer(WordPiece(unk_token='''[UNK]'''  )  )
									PreTrainedTokenizerFast(tokenizer_object=__UpperCAmelCase  )







				@require_tokenizers
				def   lowercase_		(    self    :str  )      ->					Union[str, Any]:




									"""simple docstring"""



									lowerCamelCase__		:   int  				=					Tokenizer(WordPiece(unk_token='''[UNK]'''  )  )
									with tempfile.TemporaryDirectory() as tmpdirname:
														bert_tokenizer.save(os.path.join(__UpperCAmelCase      ,'''tokenizer.json'''  )  )
														PreTrainedTokenizerFast(tokenizer_file=os.path.join(__UpperCAmelCase      ,'''tokenizer.json'''  )  )






