





import tempfile
import unittest
from pathlib import Path
from shutil import copyfile

from transformers import MaMaaaTokenizer, is_torch_available
from transformers.testing_utils import (
    get_tests_dir,
    nested_simplify,
    require_sentencepiece,
    require_tokenizers,
    require_torch,
    slow,
)
from transformers.utils import is_sentencepiece_available


if is_sentencepiece_available():
       from transformers.models.mam_aaa.tokenization_mam_aaa import VOCAB_FILES_NAMES, save_json

from ...test_tokenization_common import TokenizerTesterMixin


if is_sentencepiece_available():
       _lowerCamelCase			       =      get_tests_dir('fixtures/test_sentencepiece.model')


if is_torch_available():
       from transformers.models.mam_aaa.modeling_mam_aaa import shift_tokens_right

_lowerCamelCase			       =      12_8022
_lowerCamelCase			       =      12_8028







@require_sentencepiece
class 			__A       (      lowerCamelCase__ ,unittest.TestCase  ):




      """simple docstring"""







      UpperCAmelCase__						=      MaMaaaTokenizer
      UpperCAmelCase__						=      False
      UpperCAmelCase__						=      False
      UpperCAmelCase__						=      True


      def 				__snake_case			(		self):



             """simple docstring"""





             super().setUp()

             _lowerCamelCase							:     List[Any]	=		['''</s>''', '''<unk>''', '''▁This''', '''▁is''', '''▁a''', '''▁t''', '''est''', '''\u0120''', '''<pad>''']
             _lowerCamelCase							:     List[Any]	=		dict(zip(a__      ,							range(len(a__))))
             _lowerCamelCase							:     Dict	=		Path(self.tmpdirname)
             save_json(a__      ,							save_dir / VOCAB_FILES_NAMES['''vocab_file'''])
             if not (save_dir / VOCAB_FILES_NAMES["spm_file"]).exists():
                    copyfile(a__      ,							save_dir / VOCAB_FILES_NAMES['''spm_file'''])

             _lowerCamelCase							:     Optional[int]	=		MaMaaaTokenizer.from_pretrained(self.tmpdirname)
             tokenizer.save_pretrained(self.tmpdirname)


      def 				__snake_case			(		self      ,							**a__):



             """simple docstring"""





             return MaMaaaTokenizer.from_pretrained(self.tmpdirname      ,							**a__)


      def 				__snake_case			(		self      ,							a__):



             """simple docstring"""





             return (
                 "This is a test",
                 "This is a test",
             )


      def 				__snake_case			(		self):



             """simple docstring"""





             _lowerCamelCase							:     Union[str, Any]	=		'''</s>'''
             _lowerCamelCase							:     Union[str, Any]	=		0

             self.assertEqual(self.get_tokenizer()._convert_token_to_id(a__)      ,							a__)
             self.assertEqual(self.get_tokenizer()._convert_id_to_token(a__)      ,							a__)


      def 				__snake_case			(		self):



             """simple docstring"""





             _lowerCamelCase							:     Optional[Any]	=		self.get_tokenizer()
             _lowerCamelCase							:     Dict	=		list(tokenizer.get_vocab().keys())

             self.assertEqual(vocab_keys[0]      ,							'''</s>''')
             self.assertEqual(vocab_keys[1]      ,							'''<unk>''')
             self.assertEqual(vocab_keys[-1]      ,							'''<s>''')
             self.assertEqual(len(a__)      ,							tokenizer.vocab_size + len(tokenizer.get_added_vocab()))


      @unittest.skip('''Skip this test while all models are still to be uploaded.''')
      def 				__snake_case			(		self):



             """simple docstring"""





             pass


      def 				__snake_case			(		self):



             """simple docstring"""





             _lowerCamelCase							:     List[Any]	=		self.get_tokenizer()

             _lowerCamelCase							:     Dict	=		tokenizer.tokenize('''This is a test''')
             self.assertListEqual(a__      ,							['''▁This''', '''▁is''', '''▁a''', '''▁t''', '''est'''])

             self.assertListEqual(
                 tokenizer.convert_tokens_to_ids(a__)      ,							[2, 3, 4, 5, 6]      ,							)

             _lowerCamelCase							:     Optional[Any]	=		tokenizer.convert_ids_to_tokens([2, 3, 4, 5, 6])
             self.assertListEqual(a__      ,							['''▁This''', '''▁is''', '''▁a''', '''▁t''', '''est'''])

             _lowerCamelCase							:     int	=		tokenizer.convert_tokens_to_string(a__)
             self.assertEqual(a__      ,							'''This is a test''')



      @slow
      def 				__snake_case			(		self):



             """simple docstring"""





             _lowerCamelCase							:     int	=		{'''input_ids''': [[12_8022, 11_0108, 397, 11, 3_8272, 2247, 12_4811, 285, 1_8105, 1586, 207, 7, 3_9534, 4428, 397, 1019, 1_8105, 1586, 207, 7, 4_1337, 1_6786, 241, 7, 2_0214, 17, 12_5690, 1_0398, 7, 4_4378, 5_8069, 6_8342, 7798, 7343, 11, 299, 3_3310, 4, 158, 3_7350, 9_4077, 4569, 299, 3_3310, 90, 4, 5_2840, 290, 4, 3_1270, 112, 299, 682, 4, 5_2840, 3_9953, 1_4079, 193, 5_2519, 9_0894, 1_7894, 12_0697, 11, 4_0445, 551, 17, 1019, 5_2519, 9_0894, 1_7756, 963, 11, 4_0445, 480, 17, 9792, 1120, 5173, 1393, 6240, 1_6786, 241, 12_0996, 28, 1245, 1393, 11_8240, 1_1123, 1019, 9_3612, 2691, 1_0618, 9_8058, 12_0409, 1928, 279, 4, 4_0683, 367, 178, 207, 1019, 103, 10_3121, 506, 6_5296, 5, 2], [12_8022, 2_1217, 367, 117, 12_5450, 128, 719, 7, 7308, 40, 9_3612, 1_2669, 1116, 1_6704, 71, 1_7785, 3699, 1_5592, 35, 144, 9584, 241, 1_1943, 713, 950, 799, 2247, 8_8427, 150, 149, 11_8813, 12_0706, 1019, 10_6906, 8_1518, 28, 1224, 2_2799, 397, 5, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [12_8022, 1658, 12_3311, 5155, 5578, 4722, 279, 1_4947, 2366, 1120, 1197, 14, 1348, 9232, 5, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]], '''attention_mask''': [[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]}  # noqa: E501
             # fmt: on

             self.tokenizer_integration_test_util(
                 expected_encoding=a__      ,							model_name='''facebook/m2m100_418M'''      ,							revision='''c168bae485c864188cf9aa0e4108b0b6934dc91e'''      ,							)







@require_torch
@require_sentencepiece
@require_tokenizers
class 			__A       (      unittest.TestCase  ):




      """simple docstring"""







      UpperCAmelCase__						=      """facebook/m2m100_418M"""
      UpperCAmelCase__						=      [
          """In my opinion, there are two levels of response from the French government.""",
          """NSA Affair Emphasizes Complete Lack of Debate on Intelligence""",
      ]
      UpperCAmelCase__						=      [
          """Selon moi, il y a deux niveaux de réponse de la part du gouvernement français.""",
          """L'affaire NSA souligne l'absence totale de débat sur le renseignement""",
      ]

      # fmt: off
      UpperCAmelCase__						=      [EN_CODE, 593, 1949, 115781, 4, 71586, 4234, 60633, 126233, 432, 123808, 15592, 1197, 117132, 120618, 5, 2]


      @classmethod
      def 				__snake_case			(		cls):



             """simple docstring"""





             _lowerCamelCase							:     MaMaaaTokenizer	=		MaMaaaTokenizer.from_pretrained(
                 cls.checkpoint_name      ,							src_lang='''en'''      ,							tgt_lang='''fr''')
             _lowerCamelCase							:     int	=		1
             return cls


      def 				__snake_case			(		self):



             """simple docstring"""





             self.assertEqual(self.tokenizer.get_lang_id('''ar''')      ,							12_8006)
             self.assertEqual(self.tokenizer.get_lang_id('''en''')      ,							12_8022)
             self.assertEqual(self.tokenizer.get_lang_id('''ro''')      ,							12_8076)
             self.assertEqual(self.tokenizer.get_lang_id('''mr''')      ,							12_8063)


      def 				__snake_case			(		self):



             """simple docstring"""





             _lowerCamelCase							:     int	=		self.tokenizer.get_vocab()
             self.assertEqual(len(a__)      ,							self.tokenizer.vocab_size)
             self.assertEqual(vocab['''<unk>''']      ,							3)
             self.assertIn(self.tokenizer.get_lang_token('''en''')      ,							a__)


      def 				__snake_case			(		self):



             """simple docstring"""





             _lowerCamelCase							:     int	=		'''en'''
             _lowerCamelCase							:     Tuple	=		self.tokenizer.batch_encode_plus(self.src_text).input_ids[0]
             self.assertListEqual(self.expected_src_tokens      ,							a__)


      def 				__snake_case			(		self):



             """simple docstring"""





             self.assertIn(a__      ,							self.tokenizer.all_special_ids)
             # fmt: off
             _lowerCamelCase							:     Optional[int]	=		[FR_CODE, 5364, 82, 8642, 4, 294, 47, 8, 1_4028, 136, 3286, 9706, 6, 9_0797, 6, 14_4012, 162, 8_8128, 3_0061, 5, 2]
             # fmt: on
             _lowerCamelCase							:     Any	=		self.tokenizer.decode(a__      ,							skip_special_tokens=a__)
             _lowerCamelCase							:     Any	=		self.tokenizer.decode(generated_ids[1:]      ,							skip_special_tokens=a__)
             self.assertEqual(a__      ,							a__)
             self.assertNotIn(self.tokenizer.eos_token      ,							a__)


      def 				__snake_case			(		self):



             """simple docstring"""





             _lowerCamelCase							:     Optional[Any]	=		tempfile.mkdtemp()
             _lowerCamelCase							:     List[str]	=		self.tokenizer.lang_token_to_id
             self.tokenizer.save_pretrained(a__)
             _lowerCamelCase							:     Optional[Any]	=		MaMaaaTokenizer.from_pretrained(a__)
             self.assertDictEqual(new_tok.lang_token_to_id      ,							a__)


      @require_torch
      def 				__snake_case			(		self):



             """simple docstring"""





             _lowerCamelCase							:     Tuple	=		'''en'''
             _lowerCamelCase							:     Dict	=		'''fr'''

             _lowerCamelCase							:     List[str]	=		self.tokenizer(self.src_text      ,							text_target=self.tgt_text      ,							padding=a__      ,							return_tensors='''pt''')

             _lowerCamelCase							:     Tuple	=		shift_tokens_right(
                 batch['''labels''']      ,							self.tokenizer.pad_token_id      ,							self.tokenizer.eos_token_id)

             for k in batch:
                    _lowerCamelCase							:     List[Any]	=		batch[k].tolist()
             # batch = {k: v.tolist() for k,v in batch.items()}
             # fairseq batch: https://gist.github.com/sshleifer/cba08bc2109361a74ac3760a7e30e4f4
             # batch.decoder_inputs_ids[0][0] ==
             assert batch.input_ids[1][0] == EN_CODE
             assert batch.input_ids[1][-1] == 2
             assert batch.labels[1][0] == FR_CODE
             assert batch.labels[1][-1] == 2
             assert batch.decoder_input_ids[1][:2] == [2, FR_CODE]


      @require_torch
      def 				__snake_case			(		self):



             """simple docstring"""





             _lowerCamelCase							:     Dict	=		'''mr'''
             self.assertListEqual(self.tokenizer.prefix_tokens      ,							[self.tokenizer.get_lang_id('''mr''')])
             self.assertListEqual(self.tokenizer.suffix_tokens      ,							[self.tokenizer.eos_token_id])

             _lowerCamelCase							:     Dict	=		'''zh'''
             self.assertListEqual(self.tokenizer.prefix_tokens      ,							[self.tokenizer.get_lang_id('''zh''')])
             self.assertListEqual(self.tokenizer.suffix_tokens      ,							[self.tokenizer.eos_token_id])


      @require_torch
      def 				__snake_case			(		self):



             """simple docstring"""





             _lowerCamelCase							:     List[str]	=		'''mr'''
             self.tokenizer._switch_to_target_mode()
             self.assertListEqual(self.tokenizer.prefix_tokens      ,							[self.tokenizer.get_lang_id('''mr''')])
             self.assertListEqual(self.tokenizer.suffix_tokens      ,							[self.tokenizer.eos_token_id])
             self.tokenizer._switch_to_input_mode()
             self.assertListEqual(self.tokenizer.prefix_tokens      ,							[self.tokenizer.get_lang_id(self.tokenizer.src_lang)])

             _lowerCamelCase							:     Optional[int]	=		'''zh'''
             self.tokenizer._switch_to_target_mode()
             self.assertListEqual(self.tokenizer.prefix_tokens      ,							[self.tokenizer.get_lang_id('''zh''')])
             self.assertListEqual(self.tokenizer.suffix_tokens      ,							[self.tokenizer.eos_token_id])
             self.tokenizer._switch_to_input_mode()
             self.assertListEqual(self.tokenizer.prefix_tokens      ,							[self.tokenizer.get_lang_id(self.tokenizer.src_lang)])



      @require_torch
      def 				__snake_case			(		self):



             """simple docstring"""





             _lowerCamelCase							:     List[Any]	=		self.tokenizer._build_translation_inputs('''A test'''      ,							return_tensors='''pt'''      ,							src_lang='''en'''      ,							tgt_lang='''ar''')

             self.assertEqual(
                 nested_simplify(a__)      ,							{
                     # en_XX, A, test, EOS
                     '''input_ids''': [[12_8022, 58, 4183, 2]],
                     '''attention_mask''': [[1, 1, 1, 1]],
                     # ar_AR
                     '''forced_bos_token_id''': 12_8006,
                 }      ,							)








import qiskit




def    __UpperCAmelCase(      lowercase_ = 2      ):
       _lowerCamelCase							:     Optional[Any]	=		qubits

       # Using Aer's simulator
       _lowerCamelCase							:     Optional[int]	=		qiskit.Aer.get_backend('''aer_simulator'''      )

       # Creating a Quantum Circuit acting on the q register
       _lowerCamelCase							:     List[str]	=		qiskit.QuantumCircuit(lowercase_ ,    lowercase_      )

       # Adding a H gate on qubit 0 (now q0 in superposition)
       circuit.h(0      )

       for i in range(1 ,    lowercase_      ):
              # Adding CX (CNOT) gate
              circuit.cx(i - 1 ,    lowercase_      )

       # Mapping the quantum measurement to the classical bits
       circuit.measure(list(range(lowercase_      )      ) ,    list(range(lowercase_      )      )      )

       # Now measuring any one qubit would affect other qubits to collapse
       # their super position and have same state as the measured one.

       # Executing the circuit on the simulator
       _lowerCamelCase							:     str	=		qiskit.execute(lowercase_ ,    lowercase_ ,    shots=10_00      )

       return job.result().get_counts(lowercase_      )


if __name__ == "__main__":
       print(F'''Total count for various states are: {quantum_entanglement(3)}''')

