


import json
import os
import shutil
import tempfile
import unittest

import numpy as np
import pytest

from transformers import BertTokenizer, BertTokenizerFast
from transformers.models.bert.tokenization_bert import VOCAB_FILES_NAMES
from transformers.testing_utils import require_vision
from transformers.utils import FEATURE_EXTRACTOR_NAME, is_vision_available


if is_vision_available():
   from PIL import Image

   from transformers import ChineseCLIPImageProcessor, ChineseCLIPProcessor






@require_vision
class   __lowercase				(  unittest.TestCase  ):





      def        _lowercase				(		self						:					Dict       )    ->   List[Any]:






         """simple docstring"""







         UpperCAmelCase							=     tempfile.mkdtemp()

         UpperCAmelCase							=     [
             """[UNK]""",
             """[CLS]""",
             """[SEP]""",
             """[PAD]""",
             """[MASK]""",
             """的""",
             """价""",
             """格""",
             """是""",
             """15""",
             """便""",
             """alex""",
             """##andra""",
             """，""",
             """。""",
             """-""",
             """t""",
             """shirt""",
         ]
         UpperCAmelCase							=     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]       )       )

         UpperCAmelCase							=     {
             """do_resize""": True,
             """size""": {"""height""": 2_2_4, """width""": 2_2_4},
             """do_center_crop""": True,
             """crop_size""": {"""height""": 1_8, """width""": 1_8},
             """do_normalize""": True,
             """image_mean""": [0.48_145_466, 0.4_578_275, 0.40_821_073],
             """image_std""": [0.26_862_954, 0.26_130_258, 0.27_577_711],
             """do_convert_rgb""": True,
         }
         UpperCAmelCase							=     os.path.join(self.tmpdirname					,       __lowerCamelCase       )
         with open(self.image_processor_file					,       """w"""					,       encoding="""utf-8"""       ) as fp:
            json.dump(__lowerCamelCase					,       __lowerCamelCase       )





      def        _lowercase				(		self						:					Any					,       **__lowerCamelCase						:					Tuple       )    ->   int:






         """simple docstring"""







         return BertTokenizer.from_pretrained(self.tmpdirname					,       **__lowerCamelCase       )





      def        _lowercase				(		self						:					int					,       **__lowerCamelCase						:					Any       )    ->   Optional[Any]:






         """simple docstring"""







         return BertTokenizerFast.from_pretrained(self.tmpdirname					,       **__lowerCamelCase       )





      def        _lowercase				(		self						:					Optional[int]					,       **__lowerCamelCase						:					int       )    ->   Tuple:






         """simple docstring"""







         return ChineseCLIPImageProcessor.from_pretrained(self.tmpdirname					,       **__lowerCamelCase       )





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






         """simple docstring"""







         shutil.rmtree(self.tmpdirname       )





      def        _lowercase				(		self						:					str       )    ->   Any:






         """simple docstring"""







         UpperCAmelCase							=     [np.random.randint(2_5_5					,       size=(3, 3_0, 4_0_0)					,       dtype=np.uinta       )]

         UpperCAmelCase							=     [Image.fromarray(np.moveaxis(__lowerCamelCase					,       0					,       -1       )       ) for x in image_inputs]

         return image_inputs





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






         """simple docstring"""







         UpperCAmelCase							=     self.get_tokenizer()
         UpperCAmelCase							=     self.get_rust_tokenizer()
         UpperCAmelCase							=     self.get_image_processor()

         UpperCAmelCase							=     ChineseCLIPProcessor(tokenizer=__lowerCamelCase					,       image_processor=__lowerCamelCase       )
         processor_slow.save_pretrained(self.tmpdirname       )
         UpperCAmelCase							=     ChineseCLIPProcessor.from_pretrained(self.tmpdirname					,       use_fast=__lowerCamelCase       )

         UpperCAmelCase							=     ChineseCLIPProcessor(tokenizer=__lowerCamelCase					,       image_processor=__lowerCamelCase       )
         processor_fast.save_pretrained(self.tmpdirname       )
         UpperCAmelCase							=     ChineseCLIPProcessor.from_pretrained(self.tmpdirname       )

         self.assertEqual(processor_slow.tokenizer.get_vocab()					,       tokenizer_slow.get_vocab()       )
         self.assertEqual(processor_fast.tokenizer.get_vocab()					,       tokenizer_fast.get_vocab()       )
         self.assertEqual(tokenizer_slow.get_vocab()					,       tokenizer_fast.get_vocab()       )
         self.assertIsInstance(processor_slow.tokenizer					,       __lowerCamelCase       )
         self.assertIsInstance(processor_fast.tokenizer					,       __lowerCamelCase       )

         self.assertEqual(processor_slow.image_processor.to_json_string()					,       image_processor.to_json_string()       )
         self.assertEqual(processor_fast.image_processor.to_json_string()					,       image_processor.to_json_string()       )
         self.assertIsInstance(processor_slow.image_processor					,       __lowerCamelCase       )
         self.assertIsInstance(processor_fast.image_processor					,       __lowerCamelCase       )





      def        _lowercase				(		self						:					Optional[Any]       )    ->   Tuple:






         """simple docstring"""







         UpperCAmelCase							=     ChineseCLIPProcessor(tokenizer=self.get_tokenizer()					,       image_processor=self.get_image_processor()       )
         processor.save_pretrained(self.tmpdirname       )

         UpperCAmelCase							=     self.get_tokenizer(cls_token="""(CLS)"""					,       sep_token="""(SEP)"""       )
         UpperCAmelCase							=     self.get_image_processor(do_normalize=__lowerCamelCase       )

         UpperCAmelCase							=     ChineseCLIPProcessor.from_pretrained(
             self.tmpdirname					,       cls_token="""(CLS)"""					,       sep_token="""(SEP)"""					,       do_normalize=__lowerCamelCase       )

         self.assertEqual(processor.tokenizer.get_vocab()					,       tokenizer_add_kwargs.get_vocab()       )
         self.assertIsInstance(processor.tokenizer					,       __lowerCamelCase       )

         self.assertEqual(processor.image_processor.to_json_string()					,       image_processor_add_kwargs.to_json_string()       )
         self.assertIsInstance(processor.image_processor					,       __lowerCamelCase       )





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






         """simple docstring"""







         UpperCAmelCase							=     self.get_image_processor()
         UpperCAmelCase							=     self.get_tokenizer()

         UpperCAmelCase							=     ChineseCLIPProcessor(tokenizer=__lowerCamelCase					,       image_processor=__lowerCamelCase       )

         UpperCAmelCase							=     self.prepare_image_inputs()

         UpperCAmelCase							=     image_processor(__lowerCamelCase					,       return_tensors="""np"""       )
         UpperCAmelCase							=     processor(images=__lowerCamelCase					,       return_tensors="""np"""       )

         for key in input_feat_extract.keys():
            self.assertAlmostEqual(input_feat_extract[key].sum()					,       input_processor[key].sum()					,       delta=1e-2       )





      def        _lowercase				(		self						:					Any       )    ->   int:






         """simple docstring"""







         UpperCAmelCase							=     self.get_image_processor()
         UpperCAmelCase							=     self.get_tokenizer()

         UpperCAmelCase							=     ChineseCLIPProcessor(tokenizer=__lowerCamelCase					,       image_processor=__lowerCamelCase       )

         UpperCAmelCase							=     """Alexandra，T-shirt的价格是15便士。"""

         UpperCAmelCase							=     processor(text=__lowerCamelCase       )

         UpperCAmelCase							=     tokenizer(__lowerCamelCase       )

         for key in encoded_tok.keys():
            self.assertListEqual(encoded_tok[key]					,       encoded_processor[key]       )





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






         """simple docstring"""







         UpperCAmelCase							=     self.get_image_processor()
         UpperCAmelCase							=     self.get_tokenizer()

         UpperCAmelCase							=     ChineseCLIPProcessor(tokenizer=__lowerCamelCase					,       image_processor=__lowerCamelCase       )

         UpperCAmelCase							=     """Alexandra，T-shirt的价格是15便士。"""
         UpperCAmelCase							=     self.prepare_image_inputs()

         UpperCAmelCase							=     processor(text=__lowerCamelCase					,       images=__lowerCamelCase       )

         self.assertListEqual(list(inputs.keys()       )					,       ["""input_ids""", """token_type_ids""", """attention_mask""", """pixel_values"""]       )

         # test if it raises when no input is passed
         with pytest.raises(__lowerCamelCase       ):
            processor()





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






         """simple docstring"""







         UpperCAmelCase							=     self.get_image_processor()
         UpperCAmelCase							=     self.get_tokenizer()

         UpperCAmelCase							=     ChineseCLIPProcessor(tokenizer=__lowerCamelCase					,       image_processor=__lowerCamelCase       )

         UpperCAmelCase							=     [[1, 4, 5, 8, 1, 0, 8], [3, 4, 3, 1, 1, 8, 9]]

         UpperCAmelCase							=     processor.batch_decode(__lowerCamelCase       )
         UpperCAmelCase							=     tokenizer.batch_decode(__lowerCamelCase       )

         self.assertListEqual(__lowerCamelCase					,       __lowerCamelCase       )





      def        _lowercase				(		self						:					Tuple       )    ->   str:






         """simple docstring"""







         UpperCAmelCase							=     self.get_image_processor()
         UpperCAmelCase							=     self.get_tokenizer()

         UpperCAmelCase							=     ChineseCLIPProcessor(tokenizer=__lowerCamelCase					,       image_processor=__lowerCamelCase       )

         UpperCAmelCase							=     """Alexandra，T-shirt的价格是15便士。"""
         UpperCAmelCase							=     self.prepare_image_inputs()

         UpperCAmelCase							=     processor(text=__lowerCamelCase					,       images=__lowerCamelCase       )

         self.assertListEqual(list(inputs.keys()       )					,       processor.model_input_names       )







import math

import qiskit
def   _UpperCamelCase				(						lowerCAmelCase_ = 1  ,						lowerCAmelCase_ = 1  ,						lowerCAmelCase_ = 1   )						->qiskit.result.counts.Counts:
   if (
       isinstance(lowerCAmelCase_  ,						lowerCAmelCase_   )
       or isinstance(lowerCAmelCase_  ,						lowerCAmelCase_   )
       or isinstance(lowerCAmelCase_  ,						lowerCAmelCase_   )
   ):
      raise TypeError("""inputs must be integers."""   )

   if (input_a < 0) or (input_a < 0) or (carry_in < 0):
      raise ValueError("""inputs must be positive."""   )

   if (
       (math.floor(lowerCAmelCase_   ) != input_a)
       or (math.floor(lowerCAmelCase_   ) != input_a)
       or (math.floor(lowerCAmelCase_   ) != carry_in)
   ):
      raise ValueError("""inputs must be exact integers."""   )

   if (input_a > 2) or (input_a > 2) or (carry_in > 2):
      raise ValueError("""inputs must be less or equal to 2."""   )

   # build registers
   UpperCAmelCase							=     qiskit.QuantumRegister(4  ,						"""qr"""   )
   UpperCAmelCase							=     qiskit.ClassicalRegister(2  ,						"""cr"""   )
   # list the entries
   UpperCAmelCase							=     [input_a, input_a, carry_in]

   UpperCAmelCase							=     qiskit.QuantumCircuit(lowerCAmelCase_  ,						lowerCAmelCase_   )

   for i in range(0  ,						3   ):
      if entry[i] == 2:
         quantum_circuit.h(lowerCAmelCase_   )  # for hadamard entries
      elif entry[i] == 1:
         quantum_circuit.x(lowerCAmelCase_   )  # for 1 entries
      elif entry[i] == 0:
         quantum_circuit.i(lowerCAmelCase_   )  # for 0 entries

    # build the circuit
   quantum_circuit.ccx(0  ,						1  ,						3   )  # ccx = toffoli gate
   quantum_circuit.cx(0  ,						1   )
   quantum_circuit.ccx(1  ,						2  ,						3   )
   quantum_circuit.cx(1  ,						2   )
   quantum_circuit.cx(0  ,						1   )

   quantum_circuit.measure([2, 3]  ,						lowerCAmelCase_   )  # measure the last two qbits

   UpperCAmelCase							=     qiskit.Aer.get_backend("""aer_simulator"""   )
   UpperCAmelCase							=     qiskit.execute(lowerCAmelCase_  ,						lowerCAmelCase_  ,						shots=1_0_0_0   )

   return job.result().get_counts(lowerCAmelCase_   )


if __name__ == "__main__":
 print(F"""Total sum count for state is: {quantum_full_adder(1, 1, 1)}""")



