






def 		SCREAMING_SNAKE_CASE							( __lowerCAmelCase ,   __lowerCAmelCase      )			->     str:
     if number < 0 or shift_amount < 0:
          raise ValueError("both inputs must be positive integers"      )

     UpperCamelCase__      :       Optional[Any]	    =  str(bin(__lowerCAmelCase      )      )
     binary_number += "0" * shift_amount
     return binary_number







def 		SCREAMING_SNAKE_CASE							( __lowerCAmelCase ,   __lowerCAmelCase      )			->     str:
     if number < 0 or shift_amount < 0:
          raise ValueError("both inputs must be positive integers"      )

     UpperCamelCase__      :       Any	    =  str(bin(__lowerCAmelCase      )      )[2:]
     if shift_amount >= len(__lowerCAmelCase      ):
          return "0b0"
     UpperCamelCase__      :       List[str]	    =  binary_number[: len(__lowerCAmelCase      ) - shift_amount]
     return "0b" + shifted_binary_number







def 		SCREAMING_SNAKE_CASE							( __lowerCAmelCase ,   __lowerCAmelCase      )			->     str:
     if number >= 0:  # Get binary representation of positive number
          UpperCamelCase__      :       int	    =  "0" + str(bin(__lowerCAmelCase      )      ).strip("-"      )[2:]
     else:  # Get binary (2's complement) representation of negative number
          UpperCamelCase__      :       Union[str, Any]	    =  len(bin(__lowerCAmelCase      )[3:]      )  # Find 2's complement of number
          UpperCamelCase__      :       List[str]	    =  bin(abs(__lowerCAmelCase      ) - (1 << binary_number_length)      )[3:]
          UpperCamelCase__      :       Dict	    =  (
              "1" + "0" * (binary_number_length - len(__lowerCAmelCase      )) + binary_number
          )

     if shift_amount >= len(__lowerCAmelCase      ):
          return "0b" + binary_number[0] * len(__lowerCAmelCase      )
     return (
         "0b"
         + binary_number[0] * shift_amount
         + binary_number[: len(__lowerCAmelCase      ) - shift_amount]
     )


if __name__ == "__main__":
 import doctest

 doctest.testmod()







import json
import os
import shutil
import tempfile
import unittest

import numpy as np
import pytest

from transformers import CLIPTokenizer, CLIPTokenizerFast
from transformers.models.clip.tokenization_clip import VOCAB_FILES_NAMES
from transformers.testing_utils import require_vision
from transformers.utils import IMAGE_PROCESSOR_NAME, is_vision_available


if is_vision_available():
 from PIL import Image

 from transformers import CLIPImageProcessor, CLIPProcessor





@require_vision
class       __a  (   unittest.TestCase	):







 def  __lowercase (		self :       Union[str, Any]						):


      '''simple docstring'''






      UpperCamelCase__      :       Dict	    =  tempfile.mkdtemp()

      # fmt: off
      UpperCamelCase__      :       List[Any]	    =  ["l", "o", "w", "e", "r", "s", "t", "i", "d", "n", "lo", "l</w>", "w</w>", "r</w>", "t</w>", "low</w>", "er</w>", "lowest</w>", "newer</w>", "wider", "<unk>", "<|startoftext|>", "<|endoftext|>"]
      # fmt: on
      UpperCamelCase__      :       List[Any]	    =  dict(zip(SCREAMING_SNAKE_CASE							,       range(len(SCREAMING_SNAKE_CASE						)						)						)						)
      UpperCamelCase__      :       Tuple	    =  ["#version: 0.2", "l o", "lo w</w>", "e r</w>", ""]
      UpperCamelCase__      :       Tuple	    =  {"unk_token": "<unk>"}

      UpperCamelCase__      :       Tuple	    =  os.path.join(self.tmpdirname							,       VOCAB_FILES_NAMES["vocab_file"]						)
      UpperCamelCase__      :       Optional[int]	    =  os.path.join(self.tmpdirname							,       VOCAB_FILES_NAMES["merges_file"]						)
      with open(self.vocab_file							,       "w"							,       encoding="utf-8"						) as fp:
           fp.write(json.dumps(SCREAMING_SNAKE_CASE						) + "\n"						)
      with open(self.merges_file							,       "w"							,       encoding="utf-8"						) as fp:
           fp.write("\n".join(SCREAMING_SNAKE_CASE						)						)

      UpperCamelCase__      :       List[str]	    =  {
          "do_resize": True,
          "size": 20,
          "do_center_crop": True,
          "crop_size": 18,
          "do_normalize": True,
          "image_mean": [0.4_8_1_4_5_4_6_6, 0.4_5_7_8_2_7_5, 0.4_0_8_2_1_0_7_3],
          "image_std": [0.2_6_8_6_2_9_5_4, 0.2_6_1_3_0_2_5_8, 0.2_7_5_7_7_7_1_1],
      }
      UpperCamelCase__      :       int	    =  os.path.join(self.tmpdirname							,       SCREAMING_SNAKE_CASE						)
      with open(self.image_processor_file							,       "w"							,       encoding="utf-8"						) as fp:
           json.dump(SCREAMING_SNAKE_CASE							,       SCREAMING_SNAKE_CASE						)







 def  __lowercase (		self :       List[str]							,       **SCREAMING_SNAKE_CASE :       List[str]						):


      '''simple docstring'''






      return CLIPTokenizer.from_pretrained(self.tmpdirname							,       **SCREAMING_SNAKE_CASE						)







 def  __lowercase (		self :       List[Any]							,       **SCREAMING_SNAKE_CASE :       Union[str, Any]						):


      '''simple docstring'''






      return CLIPTokenizerFast.from_pretrained(self.tmpdirname							,       **SCREAMING_SNAKE_CASE						)







 def  __lowercase (		self :       Any							,       **SCREAMING_SNAKE_CASE :       Union[str, Any]						):


      '''simple docstring'''






      return CLIPImageProcessor.from_pretrained(self.tmpdirname							,       **SCREAMING_SNAKE_CASE						)







 def  __lowercase (		self :       Optional[Any]						):


      '''simple docstring'''






      shutil.rmtree(self.tmpdirname						)







 def  __lowercase (		self :       Any						):


      '''simple docstring'''






      UpperCamelCase__      :       int	    =  [np.random.randint(2_55							,       size=(3, 30, 4_00)							,       dtype=np.uinta						)]

      UpperCamelCase__      :       int	    =  [Image.fromarray(np.moveaxis(SCREAMING_SNAKE_CASE							,       0							,       -1						)						) for x in image_inputs]

      return image_inputs







 def  __lowercase (		self :       Tuple						):


      '''simple docstring'''






      UpperCamelCase__      :       Union[str, Any]	    =  self.get_tokenizer()
      UpperCamelCase__      :       List[str]	    =  self.get_rust_tokenizer()
      UpperCamelCase__      :       str	    =  self.get_image_processor()

      UpperCamelCase__      :       List[str]	    =  CLIPProcessor(tokenizer=SCREAMING_SNAKE_CASE							,       image_processor=SCREAMING_SNAKE_CASE						)
      processor_slow.save_pretrained(self.tmpdirname						)
      UpperCamelCase__      :       List[Any]	    =  CLIPProcessor.from_pretrained(self.tmpdirname							,       use_fast=SCREAMING_SNAKE_CASE						)

      UpperCamelCase__      :       Tuple	    =  CLIPProcessor(tokenizer=SCREAMING_SNAKE_CASE							,       image_processor=SCREAMING_SNAKE_CASE						)
      processor_fast.save_pretrained(self.tmpdirname						)
      UpperCamelCase__      :       Any	    =  CLIPProcessor.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							,       SCREAMING_SNAKE_CASE						)
      self.assertIsInstance(processor_fast.tokenizer							,       SCREAMING_SNAKE_CASE						)

      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							,       SCREAMING_SNAKE_CASE						)
      self.assertIsInstance(processor_fast.image_processor							,       SCREAMING_SNAKE_CASE						)







 def  __lowercase (		self :       List[str]						):


      '''simple docstring'''






      UpperCamelCase__      :       str	    =  CLIPProcessor(tokenizer=self.get_tokenizer()							,       image_processor=self.get_image_processor()						)
      processor.save_pretrained(self.tmpdirname						)

      UpperCamelCase__      :       Union[str, Any]	    =  self.get_tokenizer(bos_token="(BOS)"							,       eos_token="(EOS)"						)
      UpperCamelCase__      :       int	    =  self.get_image_processor(do_normalize=SCREAMING_SNAKE_CASE							,       padding_value=1.0						)

      UpperCamelCase__      :       Tuple	    =  CLIPProcessor.from_pretrained(
          self.tmpdirname							,       bos_token="(BOS)"							,       eos_token="(EOS)"							,       do_normalize=SCREAMING_SNAKE_CASE							,       padding_value=1.0						)

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

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







 def  __lowercase (		self :       List[Any]						):


      '''simple docstring'''






      UpperCamelCase__      :       List[str]	    =  self.get_image_processor()
      UpperCamelCase__      :       Union[str, Any]	    =  self.get_tokenizer()

      UpperCamelCase__      :       Any	    =  CLIPProcessor(tokenizer=SCREAMING_SNAKE_CASE							,       image_processor=SCREAMING_SNAKE_CASE						)

      UpperCamelCase__      :       Dict	    =  self.prepare_image_inputs()

      UpperCamelCase__      :       List[Any]	    =  image_processor(SCREAMING_SNAKE_CASE							,       return_tensors="np"						)
      UpperCamelCase__      :       Optional[Any]	    =  processor(images=SCREAMING_SNAKE_CASE							,       return_tensors="np"						)

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







 def  __lowercase (		self :       Union[str, Any]						):


      '''simple docstring'''






      UpperCamelCase__      :       str	    =  self.get_image_processor()
      UpperCamelCase__      :       int	    =  self.get_tokenizer()

      UpperCamelCase__      :       Any	    =  CLIPProcessor(tokenizer=SCREAMING_SNAKE_CASE							,       image_processor=SCREAMING_SNAKE_CASE						)

      UpperCamelCase__      :       List[Any]	    =  "lower newer"

      UpperCamelCase__      :       int	    =  processor(text=SCREAMING_SNAKE_CASE						)

      UpperCamelCase__      :       Tuple	    =  tokenizer(SCREAMING_SNAKE_CASE						)

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







 def  __lowercase (		self :       int						):


      '''simple docstring'''






      UpperCamelCase__      :       List[str]	    =  self.get_image_processor()
      UpperCamelCase__      :       Dict	    =  self.get_tokenizer()

      UpperCamelCase__      :       Optional[Any]	    =  CLIPProcessor(tokenizer=SCREAMING_SNAKE_CASE							,       image_processor=SCREAMING_SNAKE_CASE						)

      UpperCamelCase__      :       Dict	    =  "lower newer"
      UpperCamelCase__      :       List[Any]	    =  self.prepare_image_inputs()

      UpperCamelCase__      :       Tuple	    =  processor(text=SCREAMING_SNAKE_CASE							,       images=SCREAMING_SNAKE_CASE						)

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

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







 def  __lowercase (		self :       Optional[int]						):


      '''simple docstring'''






      UpperCamelCase__      :       Optional[Any]	    =  self.get_image_processor()
      UpperCamelCase__      :       Optional[int]	    =  self.get_tokenizer()

      UpperCamelCase__      :       Optional[Any]	    =  CLIPProcessor(tokenizer=SCREAMING_SNAKE_CASE							,       image_processor=SCREAMING_SNAKE_CASE						)

      UpperCamelCase__      :       List[str]	    =  [[1, 4, 5, 8, 1, 0, 8], [3, 4, 3, 1, 1, 8, 9]]

      UpperCamelCase__      :       Optional[Any]	    =  processor.batch_decode(SCREAMING_SNAKE_CASE						)
      UpperCamelCase__      :       List[Any]	    =  tokenizer.batch_decode(SCREAMING_SNAKE_CASE						)

      self.assertListEqual(SCREAMING_SNAKE_CASE							,       SCREAMING_SNAKE_CASE						)







 def  __lowercase (		self :       List[str]						):


      '''simple docstring'''






      UpperCamelCase__      :       Dict	    =  self.get_image_processor()
      UpperCamelCase__      :       Tuple	    =  self.get_tokenizer()

      UpperCamelCase__      :       Dict	    =  CLIPProcessor(tokenizer=SCREAMING_SNAKE_CASE							,       image_processor=SCREAMING_SNAKE_CASE						)

      UpperCamelCase__      :       Dict	    =  "lower newer"
      UpperCamelCase__      :       List[str]	    =  self.prepare_image_inputs()

      UpperCamelCase__      :       str	    =  processor(text=SCREAMING_SNAKE_CASE							,       images=SCREAMING_SNAKE_CASE						)

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