





import argparse
import glob
import logging
import os
import time
from argparse import Namespace

import numpy as np
import torch
from lightning_base import BaseTransformer, add_generic_args, generic_train
from torch.utils.data import DataLoader, TensorDataset

from transformers import glue_compute_metrics as compute_metrics
from transformers import glue_convert_examples_to_features as convert_examples_to_features
from transformers import glue_output_modes, glue_tasks_num_labels
from transformers import glue_processors as processors


SCREAMING_SNAKE_CASE_						       =	logging.getLogger(__name__)

class 		UpperCamelCase__			(				lowerCAmelCase_       ):



     '''simple docstring'''

     __snake_case   :     List[str]		     =      "sequence-classification"






     def __init__(							self						:   Dict						,lowerCamelCase__						:   Union[str, Any]	)					->		Tuple:




           '''simple docstring'''


           if type(lowerCamelCase__	) == dict:
                 SCREAMING_SNAKE_CASE		=						Namespace(**lowerCamelCase__	)
           SCREAMING_SNAKE_CASE		=						glue_output_modes[hparams.task]
           SCREAMING_SNAKE_CASE		=						glue_tasks_num_labels[hparams.task]

           super().__init__(lowerCamelCase__						,lowerCamelCase__						,self.mode	)






     def     SCREAMING_SNAKE_CASE__  (							self						:   Union[str, Any]						,**lowerCamelCase__						:   Optional[int]	)					->		Dict:




           '''simple docstring'''


           return self.model(**lowerCamelCase__	)






     def     SCREAMING_SNAKE_CASE__  (							self						:   List[Any]						,lowerCamelCase__						:   List[Any]						,lowerCamelCase__						:   List[str]	)					->		Dict:




           '''simple docstring'''


           SCREAMING_SNAKE_CASE		=						{"""input_ids""": batch[0], """attention_mask""": batch[1], """labels""": batch[3]}

           if self.config.model_type not in ["distilbert", "bart"]:
                 SCREAMING_SNAKE_CASE		=						batch[2] if self.config.model_type in ["""bert""", """xlnet""", """albert"""] else None

           SCREAMING_SNAKE_CASE		=						self(**lowerCamelCase__	)
           SCREAMING_SNAKE_CASE		=						outputs[0]

           SCREAMING_SNAKE_CASE		=						self.trainer.lr_schedulers[0]["""scheduler"""]
           SCREAMING_SNAKE_CASE		=						{"""loss""": loss, """rate""": lr_scheduler.get_last_lr()[-1]}
           return {"loss": loss, "log": tensorboard_logs}






     def     SCREAMING_SNAKE_CASE__  (							self						:   List[str]	)					->		Optional[int]:




           '''simple docstring'''


           SCREAMING_SNAKE_CASE		=						self.hparams
           SCREAMING_SNAKE_CASE		=						processors[args.task]()
           SCREAMING_SNAKE_CASE		=						processor.get_labels()

           for mode in ["train", "dev"]:
                 SCREAMING_SNAKE_CASE		=						self._feature_file(lowerCamelCase__	)
                 if os.path.exists(lowerCamelCase__	) and not args.overwrite_cache:
                       logger.info("""Loading features from cached file %s"""						,lowerCamelCase__	)
                 else:
                       logger.info("""Creating features from dataset file at %s"""						,args.data_dir	)
                       SCREAMING_SNAKE_CASE		=						(
                           processor.get_dev_examples(args.data_dir	)
                           if mode == """dev"""
                           else processor.get_train_examples(args.data_dir	)
                       )
                       SCREAMING_SNAKE_CASE		=						convert_examples_to_features(
                           lowerCamelCase__						,self.tokenizer						,max_length=args.max_seq_length						,label_list=self.labels						,output_mode=args.glue_output_mode						,)
                       logger.info("""Saving features into cached file %s"""						,lowerCamelCase__	)
                       torch.save(lowerCamelCase__						,lowerCamelCase__	)






     def     SCREAMING_SNAKE_CASE__  (							self						:   List[Any]						,lowerCamelCase__						:   str						,lowerCamelCase__						:   int						,lowerCamelCase__						:   bool = False	)					->		DataLoader:




           '''simple docstring'''


           SCREAMING_SNAKE_CASE		=						"""dev""" if mode == """test""" else mode

           SCREAMING_SNAKE_CASE		=						self._feature_file(lowerCamelCase__	)
           logger.info("""Loading features from cached file %s"""						,lowerCamelCase__	)
           SCREAMING_SNAKE_CASE		=						torch.load(lowerCamelCase__	)
           SCREAMING_SNAKE_CASE		=						torch.tensor([f.input_ids for f in features]						,dtype=torch.long	)
           SCREAMING_SNAKE_CASE		=						torch.tensor([f.attention_mask for f in features]						,dtype=torch.long	)
           SCREAMING_SNAKE_CASE		=						torch.tensor([f.token_type_ids for f in features]						,dtype=torch.long	)
           if self.hparams.glue_output_mode == "classification":
                 SCREAMING_SNAKE_CASE		=						torch.tensor([f.label for f in features]						,dtype=torch.long	)
           elif self.hparams.glue_output_mode == "regression":
                 SCREAMING_SNAKE_CASE		=						torch.tensor([f.label for f in features]						,dtype=torch.float	)

           return DataLoader(
               TensorDataset(lowerCamelCase__						,lowerCamelCase__						,lowerCamelCase__						,lowerCamelCase__	)						,batch_size=lowerCamelCase__						,shuffle=lowerCamelCase__						,)






     def     SCREAMING_SNAKE_CASE__  (							self						:   Dict						,lowerCamelCase__						:   Tuple						,lowerCamelCase__						:   str	)					->		Optional[Any]:




           '''simple docstring'''


           SCREAMING_SNAKE_CASE		=						{"""input_ids""": batch[0], """attention_mask""": batch[1], """labels""": batch[3]}

           if self.config.model_type not in ["distilbert", "bart"]:
                 SCREAMING_SNAKE_CASE		=						batch[2] if self.config.model_type in ["""bert""", """xlnet""", """albert"""] else None

           SCREAMING_SNAKE_CASE		=						self(**lowerCamelCase__	)
           SCREAMING_SNAKE_CASE, SCREAMING_SNAKE_CASE		=						outputs[:2]
           SCREAMING_SNAKE_CASE		=						logits.detach().cpu().numpy()
           SCREAMING_SNAKE_CASE		=						inputs["""labels"""].detach().cpu().numpy()

           return {"val_loss": tmp_eval_loss.detach().cpu(), "pred": preds, "target": out_label_ids}






     def     SCREAMING_SNAKE_CASE__  (							self						:   Optional[Any]						,lowerCamelCase__						:   Tuple	)					->		tuple:




           '''simple docstring'''


           SCREAMING_SNAKE_CASE		=						torch.stack([x["""val_loss"""] for x in outputs]	).mean().detach().cpu().item()
           SCREAMING_SNAKE_CASE		=						np.concatenate([x["""pred"""] for x in outputs]						,axis=0	)

           if self.hparams.glue_output_mode == "classification":
                 SCREAMING_SNAKE_CASE		=						np.argmax(lowerCamelCase__						,axis=1	)
           elif self.hparams.glue_output_mode == "regression":
                 SCREAMING_SNAKE_CASE		=						np.squeeze(lowerCamelCase__	)

           SCREAMING_SNAKE_CASE		=						np.concatenate([x["""target"""] for x in outputs]						,axis=0	)
           SCREAMING_SNAKE_CASE		=						[[] for _ in range(out_label_ids.shape[0]	)]
           SCREAMING_SNAKE_CASE		=						[[] for _ in range(out_label_ids.shape[0]	)]

           SCREAMING_SNAKE_CASE		=						{**{"""val_loss""": val_loss_mean}, **compute_metrics(self.hparams.task						,lowerCamelCase__						,lowerCamelCase__	)}

           SCREAMING_SNAKE_CASE		=						dict(results.items()	)
           SCREAMING_SNAKE_CASE		=						results
           return ret, preds_list, out_label_list






     def     SCREAMING_SNAKE_CASE__  (							self						:   Union[str, Any]						,lowerCamelCase__						:   list	)					->		dict:




           '''simple docstring'''


           SCREAMING_SNAKE_CASE, SCREAMING_SNAKE_CASE, SCREAMING_SNAKE_CASE		=						self._eval_end(lowerCamelCase__	)
           SCREAMING_SNAKE_CASE		=						ret["""log"""]
           return {"val_loss": logs["val_loss"], "log": logs, "progress_bar": logs}






     def     SCREAMING_SNAKE_CASE__  (							self						:   Dict						,lowerCamelCase__						:   int	)					->		dict:




           '''simple docstring'''


           SCREAMING_SNAKE_CASE, SCREAMING_SNAKE_CASE, SCREAMING_SNAKE_CASE		=						self._eval_end(lowerCamelCase__	)
           SCREAMING_SNAKE_CASE		=						ret["""log"""]
           # `val_loss` is the key returned by `self._eval_end()` but actually refers to `test_loss`
           return {"avg_test_loss": logs["val_loss"], "log": logs, "progress_bar": logs}






     @staticmethod
     def     SCREAMING_SNAKE_CASE__  (							lowerCamelCase__						:   int						,lowerCamelCase__						:   List[Any]	)					->		Tuple:




           '''simple docstring'''


           BaseTransformer.add_model_specific_args(lowerCamelCase__						,lowerCamelCase__	)
           parser.add_argument(
               """--max_seq_length"""						,default=128						,type=lowerCamelCase__						,help=(
                   """The maximum total input sequence length after tokenization. Sequences longer """
                   """than this will be truncated, sequences shorter will be padded."""
               )						,)

           parser.add_argument(
               """--task"""						,default=""""""						,type=lowerCamelCase__						,required=lowerCamelCase__						,help="""The GLUE task to run"""						,)
           parser.add_argument(
               """--gpus"""						,default=0						,type=lowerCamelCase__						,help="""The number of GPUs allocated for this, it is by default 0 meaning none"""						,)

           parser.add_argument(
               """--overwrite_cache"""						,action="""store_true"""						,help="""Overwrite the cached training and evaluation sets"""	)

           return parser



def        __lowercase       (				)			->       Optional[Any]:


      '''simple docstring'''


      SCREAMING_SNAKE_CASE		=						argparse.ArgumentParser()
      add_generic_args(_SCREAMING_SNAKE_CASE			,						os.getcwd()     )
      SCREAMING_SNAKE_CASE		=						GLUETransformer.add_model_specific_args(_SCREAMING_SNAKE_CASE			,						os.getcwd()     )
      SCREAMING_SNAKE_CASE		=						parser.parse_args()

      # If output_dir not provided, a folder will be generated in pwd
      if args.output_dir is None:
            SCREAMING_SNAKE_CASE		=						os.path.join(
                """./results"""			,						F"""{args.task}_{time.strftime('%Y%m%d_%H%M%S'     )}"""			,						)
            os.makedirs(args.output_dir     )

      SCREAMING_SNAKE_CASE		=						GLUETransformer(_SCREAMING_SNAKE_CASE     )
      SCREAMING_SNAKE_CASE		=						generic_train(_SCREAMING_SNAKE_CASE			,						_SCREAMING_SNAKE_CASE     )

      # Optionally, predict on dev set and write to output_dir
      if args.do_predict:
            SCREAMING_SNAKE_CASE		=						sorted(glob.glob(os.path.join(args.output_dir			,						"""checkpoint-epoch=*.ckpt"""     )			,						recursive=_SCREAMING_SNAKE_CASE     )     )
            SCREAMING_SNAKE_CASE		=						model.load_from_checkpoint(checkpoints[-1]     )
            return trainer.test(_SCREAMING_SNAKE_CASE     )


if __name__ == "__main__":
      main()









import os
import unittest

from transformers import BertTokenizerFast
from transformers.models.bert.tokenization_bert import (
    VOCAB_FILES_NAMES,
    BasicTokenizer,
    BertTokenizer,
    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 		UpperCamelCase__			(				lowerCAmelCase_							,				unittest.TestCase       ):



     '''simple docstring'''

     __snake_case   :     Any		     =      BertTokenizer
     __snake_case   :     Dict		     =      BertTokenizerFast
     __snake_case   :     Tuple		     =      True
     __snake_case   :     List[Any]		     =      True
     __snake_case   :     Optional[Any]		     =      filter_non_english






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




           '''simple docstring'''


           super().setUp()

           SCREAMING_SNAKE_CASE		=						[
               """[UNK]""",
               """[CLS]""",
               """[SEP]""",
               """[PAD]""",
               """[MASK]""",
               """want""",
               """##want""",
               """##ed""",
               """wa""",
               """un""",
               """runn""",
               """##ing""",
               """,""",
               """low""",
               """lowest""",
           ]
           SCREAMING_SNAKE_CASE		=						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     SCREAMING_SNAKE_CASE__  (							self						:   str						,lowerCamelCase__						:   List[Any]	)					->		str:




           '''simple docstring'''


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






     def     SCREAMING_SNAKE_CASE__  (							self						:   Dict	)					->		str:




           '''simple docstring'''


           SCREAMING_SNAKE_CASE		=						self.tokenizer_class(self.vocab_file	)

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






     def     SCREAMING_SNAKE_CASE__  (							self						:   Optional[Any]	)					->		List[Any]:




           '''simple docstring'''


           if not self.test_rust_tokenizer:
                 return

           SCREAMING_SNAKE_CASE		=						self.get_tokenizer()
           SCREAMING_SNAKE_CASE		=						self.get_rust_tokenizer()

           SCREAMING_SNAKE_CASE		=						"""UNwant\u00E9d,running"""

           SCREAMING_SNAKE_CASE		=						tokenizer.tokenize(lowerCamelCase__	)
           SCREAMING_SNAKE_CASE		=						rust_tokenizer.tokenize(lowerCamelCase__	)
           self.assertListEqual(lowerCamelCase__						,lowerCamelCase__	)

           SCREAMING_SNAKE_CASE		=						tokenizer.encode(lowerCamelCase__						,add_special_tokens=lowerCamelCase__	)
           SCREAMING_SNAKE_CASE		=						rust_tokenizer.encode(lowerCamelCase__						,add_special_tokens=lowerCamelCase__	)
           self.assertListEqual(lowerCamelCase__						,lowerCamelCase__	)

           SCREAMING_SNAKE_CASE		=						self.get_rust_tokenizer()
           SCREAMING_SNAKE_CASE		=						tokenizer.encode(lowerCamelCase__	)
           SCREAMING_SNAKE_CASE		=						rust_tokenizer.encode(lowerCamelCase__	)
           self.assertListEqual(lowerCamelCase__						,lowerCamelCase__	)

           # With lower casing
           SCREAMING_SNAKE_CASE		=						self.get_tokenizer(do_lower_case=lowerCamelCase__	)
           SCREAMING_SNAKE_CASE		=						self.get_rust_tokenizer(do_lower_case=lowerCamelCase__	)

           SCREAMING_SNAKE_CASE		=						"""UNwant\u00E9d,running"""

           SCREAMING_SNAKE_CASE		=						tokenizer.tokenize(lowerCamelCase__	)
           SCREAMING_SNAKE_CASE		=						rust_tokenizer.tokenize(lowerCamelCase__	)
           self.assertListEqual(lowerCamelCase__						,lowerCamelCase__	)

           SCREAMING_SNAKE_CASE		=						tokenizer.encode(lowerCamelCase__						,add_special_tokens=lowerCamelCase__	)
           SCREAMING_SNAKE_CASE		=						rust_tokenizer.encode(lowerCamelCase__						,add_special_tokens=lowerCamelCase__	)
           self.assertListEqual(lowerCamelCase__						,lowerCamelCase__	)

           SCREAMING_SNAKE_CASE		=						self.get_rust_tokenizer()
           SCREAMING_SNAKE_CASE		=						tokenizer.encode(lowerCamelCase__	)
           SCREAMING_SNAKE_CASE		=						rust_tokenizer.encode(lowerCamelCase__	)
           self.assertListEqual(lowerCamelCase__						,lowerCamelCase__	)






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




           '''simple docstring'''


           SCREAMING_SNAKE_CASE		=						BasicTokenizer()

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






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




           '''simple docstring'''


           SCREAMING_SNAKE_CASE		=						BasicTokenizer(do_lower_case=lowerCamelCase__	)

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






     def     SCREAMING_SNAKE_CASE__  (							self						:   Any	)					->		Dict:




           '''simple docstring'''


           SCREAMING_SNAKE_CASE		=						BasicTokenizer(do_lower_case=lowerCamelCase__						,strip_accents=lowerCamelCase__	)

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






     def     SCREAMING_SNAKE_CASE__  (							self						:   str	)					->		List[Any]:




           '''simple docstring'''


           SCREAMING_SNAKE_CASE		=						BasicTokenizer(do_lower_case=lowerCamelCase__						,strip_accents=lowerCamelCase__	)

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






     def     SCREAMING_SNAKE_CASE__  (							self						:   List[str]	)					->		Any:




           '''simple docstring'''


           SCREAMING_SNAKE_CASE		=						BasicTokenizer(do_lower_case=lowerCamelCase__	)

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






     def     SCREAMING_SNAKE_CASE__  (							self						:   Optional[int]	)					->		Union[str, Any]:




           '''simple docstring'''


           SCREAMING_SNAKE_CASE		=						BasicTokenizer(do_lower_case=lowerCamelCase__	)

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






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




           '''simple docstring'''


           SCREAMING_SNAKE_CASE		=						BasicTokenizer(do_lower_case=lowerCamelCase__						,strip_accents=lowerCamelCase__	)

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






     def     SCREAMING_SNAKE_CASE__  (							self						:   int	)					->		List[Any]:




           '''simple docstring'''


           SCREAMING_SNAKE_CASE		=						BasicTokenizer(do_lower_case=lowerCamelCase__						,strip_accents=lowerCamelCase__	)

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






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




           '''simple docstring'''


           SCREAMING_SNAKE_CASE		=						BasicTokenizer(do_lower_case=lowerCamelCase__						,never_split=["""[UNK]"""]	)

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






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




           '''simple docstring'''


           SCREAMING_SNAKE_CASE		=						BasicTokenizer()
           SCREAMING_SNAKE_CASE		=						"""a\n'll !!to?'d of, can't."""
           SCREAMING_SNAKE_CASE		=						["""a""", """'""", """ll""", """!""", """!""", """to""", """?""", """'""", """d""", """of""", """,""", """can""", """'""", """t""", """."""]
           self.assertListEqual(tokenizer.tokenize(lowerCamelCase__	)						,lowerCamelCase__	)






     def     SCREAMING_SNAKE_CASE__  (							self						:   Dict	)					->		int:




           '''simple docstring'''


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

           SCREAMING_SNAKE_CASE		=						{}
           for i, token in enumerate(lowerCamelCase__	):
                 SCREAMING_SNAKE_CASE		=						i
           SCREAMING_SNAKE_CASE		=						WordpieceTokenizer(vocab=lowerCamelCase__						,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     SCREAMING_SNAKE_CASE__  (							self						:   Optional[int]	)					->		Dict:




           '''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     SCREAMING_SNAKE_CASE__  (							self						:   Optional[int]	)					->		Optional[int]:




           '''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     SCREAMING_SNAKE_CASE__  (							self						:   Tuple	)					->		List[str]:




           '''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     SCREAMING_SNAKE_CASE__  (							self						:   Optional[Any]	)					->		Any:




           '''simple docstring'''


           SCREAMING_SNAKE_CASE		=						self.get_tokenizer()
           SCREAMING_SNAKE_CASE		=						self.get_rust_tokenizer()

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

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






     @slow
     def     SCREAMING_SNAKE_CASE__  (							self						:   Any	)					->		Optional[Any]:




           '''simple docstring'''


           SCREAMING_SNAKE_CASE		=						self.tokenizer_class.from_pretrained("""bert-base-uncased"""	)

           SCREAMING_SNAKE_CASE		=						tokenizer.encode("""sequence builders"""						,add_special_tokens=lowerCamelCase__	)
           SCREAMING_SNAKE_CASE		=						tokenizer.encode("""multi-sequence build"""						,add_special_tokens=lowerCamelCase__	)

           SCREAMING_SNAKE_CASE		=						tokenizer.build_inputs_with_special_tokens(lowerCamelCase__	)
           SCREAMING_SNAKE_CASE		=						tokenizer.build_inputs_with_special_tokens(lowerCamelCase__						,lowerCamelCase__	)

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






     def     SCREAMING_SNAKE_CASE__  (							self						:   Optional[int]	)					->		str:




           '''simple docstring'''


           for tokenizer, pretrained_name, kwargs in self.tokenizers_list:
                 with self.subTest(F"""{tokenizer.__class__.__name__} ({pretrained_name})"""	):
                       SCREAMING_SNAKE_CASE		=						self.rust_tokenizer_class.from_pretrained(lowerCamelCase__						,**lowerCamelCase__	)

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

                       SCREAMING_SNAKE_CASE		=						tokenizer_r.do_lower_case if hasattr(lowerCamelCase__						,"""do_lower_case"""	) else False
                       SCREAMING_SNAKE_CASE		=						(
                           [
                               ((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     SCREAMING_SNAKE_CASE__  (							self						:   Any	)					->		List[Any]:




           '''simple docstring'''


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

                       SCREAMING_SNAKE_CASE		=						tokenizer_p.encode(lowerCamelCase__						,add_special_tokens=lowerCamelCase__	)
                       SCREAMING_SNAKE_CASE		=						tokenizer_r.encode(lowerCamelCase__						,add_special_tokens=lowerCamelCase__	)

                       SCREAMING_SNAKE_CASE		=						tokenizer_r.convert_ids_to_tokens(lowerCamelCase__	)
                       SCREAMING_SNAKE_CASE		=						tokenizer_p.convert_ids_to_tokens(lowerCamelCase__	)

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

                       SCREAMING_SNAKE_CASE		=						False
                       SCREAMING_SNAKE_CASE		=						self.rust_tokenizer_class.from_pretrained(lowerCamelCase__						,**lowerCamelCase__	)
                       SCREAMING_SNAKE_CASE		=						self.tokenizer_class.from_pretrained(lowerCamelCase__						,**lowerCamelCase__	)

                       SCREAMING_SNAKE_CASE		=						tokenizer_r.encode(lowerCamelCase__						,add_special_tokens=lowerCamelCase__	)
                       SCREAMING_SNAKE_CASE		=						tokenizer_p.encode(lowerCamelCase__						,add_special_tokens=lowerCamelCase__	)

                       SCREAMING_SNAKE_CASE		=						tokenizer_r.convert_ids_to_tokens(lowerCamelCase__	)
                       SCREAMING_SNAKE_CASE		=						tokenizer_p.convert_ids_to_tokens(lowerCamelCase__	)

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


