


# Copyright 2021 The HuggingFace Team. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

import argparse

from .config import config_command_parser
from .config_args import default_config_file, load_config_from_file  # noqa: F401
from .default import default_command_parser
from .update import update_command_parser





def __UpperCAmelCase       (		__A=None			)						->					Optional[Any]:



							'''simple docstring'''





							UpperCAmelCase__										=     argparse.ArgumentParser(add_help=__A ,						allow_abbrev=__A			)
							# The main config parser
							UpperCAmelCase__										=     config_command_parser(__A			)
							# The subparser to add commands to
							UpperCAmelCase__										=     config_parser.add_subparsers(title="subcommands" ,						dest="subcommand"			)

							# Then add other parsers with the parent parser
							default_command_parser(__A ,						parents=[parent_parser]			)
							update_command_parser(__A ,						parents=[parent_parser]			)

							return config_parser





def __UpperCAmelCase       (		)						->					List[str]:



							'''simple docstring'''





							UpperCAmelCase__										=     get_config_parser()
							UpperCAmelCase__										=     config_parser.parse_args()

							if not hasattr(__A ,						"func"			):
														config_parser.print_help()
														exit(1			)

							# Run
							args.func(__A			)


if __name__ == "__main__":
				main()









import os
import unittest

from transformers.models.bartpho.tokenization_bartpho import VOCAB_FILES_NAMES, BartphoTokenizer
from transformers.testing_utils import get_tests_dir

from ...test_tokenization_common import TokenizerTesterMixin


A      = get_tests_dir("fixtures/test_sentencepiece_bpe.model")


class     lowercase__  (					__SCREAMING_SNAKE_CASE					,							unittest.TestCase		):
  A__=  BartphoTokenizer
  A__=  False
  A__=  True






  def 			_UpperCAmelCase  (					self      :					Dict ):




         """simple docstring"""







         super().setUp()

         UpperCAmelCase__										=     ["▁This", "▁is", "▁a", "▁t", "est"]
         UpperCAmelCase__										=     dict(zip(_lowercase		,						range(len(_lowercase ) ) ) )
         UpperCAmelCase__										=     {"unk_token": "<unk>"}

         UpperCAmelCase__										=     os.path.join(self.tmpdirname		,						VOCAB_FILES_NAMES["monolingual_vocab_file"] )
         with open(self.monolingual_vocab_file		,						"w"		,						encoding="utf-8" ) as fp:
                for token in vocab_tokens:
                       fp.write(F"""{token} {vocab_tokens[token]}\n""" )

         UpperCAmelCase__										=     BartphoTokenizer(_lowercase		,						self.monolingual_vocab_file		,						**self.special_tokens_map )
         tokenizer.save_pretrained(self.tmpdirname )






  def 			_UpperCAmelCase  (					self      :					Dict		,						**_lowercase      :					Optional[Any] ):




         """simple docstring"""







         kwargs.update(self.special_tokens_map )
         return BartphoTokenizer.from_pretrained(self.tmpdirname		,						**_lowercase )






  def 			_UpperCAmelCase  (					self      :					List[Any]		,						_lowercase      :					Union[str, Any] ):




         """simple docstring"""







         UpperCAmelCase__										=     "This is a là test"
         UpperCAmelCase__										=     "This is a<unk><unk> test"
         return input_text, output_text






  def 			_UpperCAmelCase  (					self      :					Optional[Any] ):




         """simple docstring"""







         UpperCAmelCase__										=     BartphoTokenizer(_lowercase		,						self.monolingual_vocab_file		,						**self.special_tokens_map )
         UpperCAmelCase__										=     "This is a là test"
         UpperCAmelCase__										=     "▁This ▁is ▁a ▁l à ▁t est".split()
         UpperCAmelCase__										=     tokenizer.tokenize(_lowercase )
         self.assertListEqual(_lowercase		,						_lowercase )

         UpperCAmelCase__										=     tokens + [tokenizer.unk_token]
         UpperCAmelCase__										=     [4, 5, 6, 3, 3, 7, 8, 3]
         self.assertListEqual(tokenizer.convert_tokens_to_ids(_lowercase )		,						_lowercase )





