




import os
import unittest

from transformers import ElectraTokenizerFast
from transformers.models.electra.tokenization_electra import (
    VOCAB_FILES_NAMES,
    BasicTokenizer,
    ElectraTokenizer,
    WordpieceTokenizer,
    _is_control,
    _is_punctuation,
    _is_whitespace,
)
from transformers.testing_utils import require_tokenizers, slow

from ...test_tokenization_common import TokenizerTesterMixin, filter_non_english




@require_tokenizers
class     a__ (      UpperCamelCase__     ,      unittest.TestCase   ):
     a	:    Dict	      =			ElectraTokenizer
     a	:    int	      =			ElectraTokenizerFast
     a	:    str	      =			True
     a	:    Any	      =			True
     a	:    List[str]	      =			filter_non_english







     def     lowerCAmelCase_       (			self				)						->					int:



          '''simple docstring'''



          super().setUp()

          a											=   [
              "[UNK]",
              "[CLS]",
              "[SEP]",
              "[PAD]",
              "[MASK]",
              "want",
              "##want",
              "##ed",
              "wa",
              "un",
              "runn",
              "##ing",
              ",",
              "low",
              "lowest",
          ]
          a											=   os.path.join(self.tmpdirname						,	VOCAB_FILES_NAMES["vocab_file"]				)
          with open(self.vocab_file						,	"w"						,	encoding="utf-8"				) as vocab_writer:
               vocab_writer.write("".join([x + "\n" for x in vocab_tokens]				)				)







     def     lowerCAmelCase_       (			self						,	A				)						->					List[Any]:



          '''simple docstring'''



          a											=   "UNwant\u00E9d,running"
          a											=   "unwanted, running"
          return input_text, output_text







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



          '''simple docstring'''



          a											=   self.tokenizer_class(self.vocab_file				)

          a											=   tokenizer.tokenize("UNwant\u00E9d,running"				)
          self.assertListEqual(A						,	["un", "##want", "##ed", ",", "runn", "##ing"]				)
          self.assertListEqual(tokenizer.convert_tokens_to_ids(A				)						,	[9, 6, 7, 12, 10, 11]				)







     def     lowerCAmelCase_       (			self				)						->					Any:



          '''simple docstring'''



          if not self.test_rust_tokenizer:
               return

          a											=   self.get_tokenizer()
          a											=   self.get_rust_tokenizer()

          a											=   "UNwant\u00E9d,running"

          a											=   tokenizer.tokenize(A				)
          a											=   rust_tokenizer.tokenize(A				)
          self.assertListEqual(A						,	A				)

          a											=   tokenizer.encode(A						,	add_special_tokens=A				)
          a											=   rust_tokenizer.encode(A						,	add_special_tokens=A				)
          self.assertListEqual(A						,	A				)

          a											=   self.get_rust_tokenizer()
          a											=   tokenizer.encode(A				)
          a											=   rust_tokenizer.encode(A				)
          self.assertListEqual(A						,	A				)

          # With lower casing
          a											=   self.get_tokenizer(do_lower_case=A				)
          a											=   self.get_rust_tokenizer(do_lower_case=A				)

          a											=   "UNwant\u00E9d,running"

          a											=   tokenizer.tokenize(A				)
          a											=   rust_tokenizer.tokenize(A				)
          self.assertListEqual(A						,	A				)

          a											=   tokenizer.encode(A						,	add_special_tokens=A				)
          a											=   rust_tokenizer.encode(A						,	add_special_tokens=A				)
          self.assertListEqual(A						,	A				)

          a											=   self.get_rust_tokenizer()
          a											=   tokenizer.encode(A				)
          a											=   rust_tokenizer.encode(A				)
          self.assertListEqual(A						,	A				)







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



          '''simple docstring'''



          a											=   BasicTokenizer()

          self.assertListEqual(tokenizer.tokenize("ah\u535A\u63A8zz"				)						,	["ah", "\u535A", "\u63A8", "zz"]				)







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



          '''simple docstring'''



          a											=   BasicTokenizer(do_lower_case=A				)

          self.assertListEqual(
              tokenizer.tokenize(" \tHeLLo!how  \n Are yoU?  "				)						,	["hello", "!", "how", "are", "you", "?"]				)
          self.assertListEqual(tokenizer.tokenize("H\u00E9llo"				)						,	["hello"]				)







     def     lowerCAmelCase_       (			self				)						->					int:



          '''simple docstring'''



          a											=   BasicTokenizer(do_lower_case=A						,	strip_accents=A				)

          self.assertListEqual(
              tokenizer.tokenize(" \tHäLLo!how  \n Are yoU?  "				)						,	["hällo", "!", "how", "are", "you", "?"]				)
          self.assertListEqual(tokenizer.tokenize("H\u00E9llo"				)						,	["h\u00E9llo"]				)







     def     lowerCAmelCase_       (			self				)						->					Optional[Any]:



          '''simple docstring'''



          a											=   BasicTokenizer(do_lower_case=A						,	strip_accents=A				)

          self.assertListEqual(
              tokenizer.tokenize(" \tHäLLo!how  \n Are yoU?  "				)						,	["hallo", "!", "how", "are", "you", "?"]				)
          self.assertListEqual(tokenizer.tokenize("H\u00E9llo"				)						,	["hello"]				)







     def     lowerCAmelCase_       (			self				)						->					str:



          '''simple docstring'''



          a											=   BasicTokenizer(do_lower_case=A				)

          self.assertListEqual(
              tokenizer.tokenize(" \tHäLLo!how  \n Are yoU?  "				)						,	["hallo", "!", "how", "are", "you", "?"]				)
          self.assertListEqual(tokenizer.tokenize("H\u00E9llo"				)						,	["hello"]				)







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



          '''simple docstring'''



          a											=   BasicTokenizer(do_lower_case=A				)

          self.assertListEqual(
              tokenizer.tokenize(" \tHeLLo!how  \n Are yoU?  "				)						,	["HeLLo", "!", "how", "Are", "yoU", "?"]				)







     def     lowerCAmelCase_       (			self				)						->					List[str]:



          '''simple docstring'''



          a											=   BasicTokenizer(do_lower_case=A						,	strip_accents=A				)

          self.assertListEqual(
              tokenizer.tokenize(" \tHäLLo!how  \n Are yoU?  "				)						,	["HäLLo", "!", "how", "Are", "yoU", "?"]				)







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



          '''simple docstring'''



          a											=   BasicTokenizer(do_lower_case=A						,	strip_accents=A				)

          self.assertListEqual(
              tokenizer.tokenize(" \tHäLLo!how  \n Are yoU?  "				)						,	["HaLLo", "!", "how", "Are", "yoU", "?"]				)







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



          '''simple docstring'''



          a											=   BasicTokenizer(do_lower_case=A						,	never_split=["[UNK]"]				)

          self.assertListEqual(
              tokenizer.tokenize(" \tHeLLo!how  \n Are yoU? [UNK]"				)						,	["HeLLo", "!", "how", "Are", "yoU", "?", "[UNK]"]				)







     def     lowerCAmelCase_       (			self				)						->					Dict:



          '''simple docstring'''



          a											=   ["[UNK]", "[CLS]", "[SEP]", "want", "##want", "##ed", "wa", "un", "runn", "##ing"]

          a											=   {}
          for i, token in enumerate(A				):
               a											=   i
          a											=   WordpieceTokenizer(vocab=A						,	unk_token="[UNK]"				)

          self.assertListEqual(tokenizer.tokenize(""				)						,	[]				)

          self.assertListEqual(tokenizer.tokenize("unwanted running"				)						,	["un", "##want", "##ed", "runn", "##ing"]				)

          self.assertListEqual(tokenizer.tokenize("unwantedX running"				)						,	["[UNK]", "runn", "##ing"]				)







     def     lowerCAmelCase_       (			self				)						->					int:



          '''simple docstring'''



          self.assertTrue(_is_whitespace(" "				)				)
          self.assertTrue(_is_whitespace("\t"				)				)
          self.assertTrue(_is_whitespace("\r"				)				)
          self.assertTrue(_is_whitespace("\n"				)				)
          self.assertTrue(_is_whitespace("\u00A0"				)				)

          self.assertFalse(_is_whitespace("A"				)				)
          self.assertFalse(_is_whitespace("-"				)				)







     def     lowerCAmelCase_       (			self				)						->					Any:



          '''simple docstring'''



          self.assertTrue(_is_control("\u0005"				)				)

          self.assertFalse(_is_control("A"				)				)
          self.assertFalse(_is_control(" "				)				)
          self.assertFalse(_is_control("\t"				)				)
          self.assertFalse(_is_control("\r"				)				)







     def     lowerCAmelCase_       (			self				)						->					Optional[Any]:



          '''simple docstring'''



          self.assertTrue(_is_punctuation("-"				)				)
          self.assertTrue(_is_punctuation("$"				)				)
          self.assertTrue(_is_punctuation("`"				)				)
          self.assertTrue(_is_punctuation("."				)				)

          self.assertFalse(_is_punctuation("A"				)				)
          self.assertFalse(_is_punctuation(" "				)				)







     def     lowerCAmelCase_       (			self				)						->					Tuple:



          '''simple docstring'''



          a											=   self.get_tokenizer()
          a											=   self.get_rust_tokenizer()

          # Example taken from the issue https://github.com/huggingface/tokenizers/issues/340
          self.assertListEqual([tokenizer.tokenize(A				) for t in ["Test", "\xad", "test"]]						,	[["[UNK]"], [], ["[UNK]"]]				)

          self.assertListEqual(
              [rust_tokenizer.tokenize(A				) for t in ["Test", "\xad", "test"]]						,	[["[UNK]"], [], ["[UNK]"]]				)







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



          '''simple docstring'''



          a											=   self.tokenizer_class.from_pretrained("google/electra-base-discriminator"				)

          a											=   tokenizer.encode("sequence builders"						,	add_special_tokens=A				)
          a											=   tokenizer.encode("multi-sequence build"						,	add_special_tokens=A				)

          a											=   tokenizer.build_inputs_with_special_tokens(A				)
          a											=   tokenizer.build_inputs_with_special_tokens(A						,	A				)

          assert encoded_sentence == [101] + text + [102]
          assert encoded_pair == [101] + text + [102] + text_a + [102]







     def     lowerCAmelCase_       (			self				)						->					Any:



          '''simple docstring'''



          for tokenizer, pretrained_name, kwargs in self.tokenizers_list:
               with self.subTest(F'''{tokenizer.__class__.__name__} ({pretrained_name})'''				):
                    a											=   self.rust_tokenizer_class.from_pretrained(A						,	**A				)

                    a											=   F'''A, naïve {tokenizer_r.mask_token} AllenNLP sentence.'''
                    a											=   tokenizer_r.encode_plus(
                        A						,	return_attention_mask=A						,	return_token_type_ids=A						,	return_offsets_mapping=A						,	add_special_tokens=A						,	)

                    a											=   tokenizer_r.do_lower_case if hasattr(A						,	"do_lower_case"				) else False
                    a											=   (
                        [
                            ((0, 0), tokenizer_r.cls_token),
                            ((0, 1), "A"),
                            ((1, 2), ","),
                            ((3, 5), "na"),
                            ((5, 6), "##ï"),
                            ((6, 8), "##ve"),
                            ((9, 15), tokenizer_r.mask_token),
                            ((16, 21), "Allen"),
                            ((21, 23), "##NL"),
                            ((23, 24), "##P"),
                            ((25, 33), "sentence"),
                            ((33, 34), "."),
                            ((0, 0), tokenizer_r.sep_token),
                        ]
                        if not do_lower_case
                        else [
                            ((0, 0), tokenizer_r.cls_token),
                            ((0, 1), "a"),
                            ((1, 2), ","),
                            ((3, 8), "naive"),
                            ((9, 15), tokenizer_r.mask_token),
                            ((16, 21), "allen"),
                            ((21, 23), "##nl"),
                            ((23, 24), "##p"),
                            ((25, 33), "sentence"),
                            ((33, 34), "."),
                            ((0, 0), tokenizer_r.sep_token),
                        ]
                    )

                    self.assertEqual(
                        [e[1] for e in expected_results]						,	tokenizer_r.convert_ids_to_tokens(tokens["input_ids"]				)				)
                    self.assertEqual([e[0] for e in expected_results]						,	tokens["offset_mapping"]				)







     def     lowerCAmelCase_       (			self				)						->					int:



          '''simple docstring'''



          a											=   ["的", "人", "有"]
          a											=   "".join(A				)
          for tokenizer, pretrained_name, kwargs in self.tokenizers_list:
               with self.subTest(F'''{tokenizer.__class__.__name__} ({pretrained_name})'''				):
                    a											=   True
                    a											=   self.tokenizer_class.from_pretrained(A						,	**A				)
                    a											=   self.rust_tokenizer_class.from_pretrained(A						,	**A				)

                    a											=   tokenizer_p.encode(A						,	add_special_tokens=A				)
                    a											=   tokenizer_r.encode(A						,	add_special_tokens=A				)

                    a											=   tokenizer_r.convert_ids_to_tokens(A				)
                    a											=   tokenizer_p.convert_ids_to_tokens(A				)

                    # it is expected that each Chinese character is not preceded by "##"
                    self.assertListEqual(A						,	A				)
                    self.assertListEqual(A						,	A				)

                    a											=   False
                    a											=   self.rust_tokenizer_class.from_pretrained(A						,	**A				)
                    a											=   self.tokenizer_class.from_pretrained(A						,	**A				)

                    a											=   tokenizer_r.encode(A						,	add_special_tokens=A				)
                    a											=   tokenizer_p.encode(A						,	add_special_tokens=A				)

                    a											=   tokenizer_r.convert_ids_to_tokens(A				)
                    a											=   tokenizer_p.convert_ids_to_tokens(A				)

                    # it is expected that only the first Chinese character is not preceded by "##".
                    a											=   [
                        F'''##{token}''' if idx != 0 else token for idx, token in enumerate(A				)
                    ]
                    self.assertListEqual(A						,	A				)
                    self.assertListEqual(A						,	A				)







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

import numpy as np
import PIL

from ...utils import BaseOutput, is_invisible_watermark_available, is_torch_available, is_transformers_available




@dataclass
class     a__ (      UpperCamelCase__   ):
     a	:    Union[List[PIL.Image.Image], np.ndarray]


if is_transformers_available() and is_torch_available() and is_invisible_watermark_available():
   from .pipeline_stable_diffusion_xl import StableDiffusionXLPipeline
   from .pipeline_stable_diffusion_xl_imgaimg import StableDiffusionXLImgaImgPipeline

