

from __future__ import annotations

def        lowerCamelCase__       (    _a							,	_a							,	_a):
	if days_between_payments <= 0:
		raise ValueError("days_between_payments must be > 0")
	if daily_interest_rate < 0:
		raise ValueError("daily_interest_rate must be >= 0")
	if principal <= 0:
		raise ValueError("principal must be > 0")
	return principal * daily_interest_rate * days_between_payments

def        lowerCamelCase__       (    _a							,	_a							,	_a							,	):
	if number_of_compounding_periods <= 0:
		raise ValueError("number_of_compounding_periods must be > 0")
	if nominal_annual_interest_rate_percentage < 0:
		raise ValueError("nominal_annual_interest_rate_percentage must be >= 0")
	if principal <= 0:
		raise ValueError("principal must be > 0")

	return principal * (
	    (1 + nominal_annual_interest_rate_percentage) ** number_of_compounding_periods
	    - 1
	)

def        lowerCamelCase__       (    _a							,	_a							,	_a							,	):
	if number_of_years <= 0:
		raise ValueError("number_of_years must be > 0")
	if nominal_annual_percentage_rate < 0:
		raise ValueError("nominal_annual_percentage_rate must be >= 0")
	if principal <= 0:
		raise ValueError("principal must be > 0")

	return compound_interest(
	    _a							,	nominal_annual_percentage_rate / 365							,	number_of_years * 365)


if __name__ == "__main__":
			import doctest

			doctest.testmod()

import json
import os
import shutil
import tempfile
import unittest

import numpy as np

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


if is_vision_available():
   from PIL import Image

   from transformers import VisionTextDualEncoderProcessor, ViTImageProcessor






@require_tokenizers
@require_vision
class   UpperCAmelCase		(						unittest.TestCase ):



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


          '''simple docstring'''


          snake_case       :   int							=      tempfile.mkdtemp()

          # fmt: off
          snake_case       :   Optional[int]							=      ["[UNK]", "[CLS]", "[SEP]", "[PAD]", "[MASK]", "want", "##want", "##ed", "wa", "un", "runn", "##ing", ",", "low", "lowest"]
          # fmt: on
          snake_case       :   List[str]							=      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] ) )

          snake_case       :   int							=      {
              "do_resize": True,
              "size": {"height": 18, "width": 18},
              "do_normalize": True,
              "image_mean": [0.5, 0.5, 0.5],
              "image_std": [0.5, 0.5, 0.5],
          }
          snake_case       :   Optional[Any]							=      os.path.join(self.tmpdirname    ,						snake_case__ )
          with open(self.image_processor_file    ,						"w"    ,						encoding="utf-8" ) as fp:
                 json.dump(snake_case__    ,						snake_case__ )



   def 				_SCREAMING_SNAKE_CASE   (self		:					Optional[Any]    ,						**snake_case__		:					str )		->	Optional[int]:


          '''simple docstring'''


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



   def 				_SCREAMING_SNAKE_CASE   (self		:					Optional[Any]    ,						**snake_case__		:					List[str] )		->	int:


          '''simple docstring'''


          return ViTImageProcessor.from_pretrained(self.tmpdirname    ,						**snake_case__ )



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


          '''simple docstring'''


          shutil.rmtree(self.tmpdirname )



   def 				_SCREAMING_SNAKE_CASE   (self		:					Dict )		->	str:


          '''simple docstring'''


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

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

          return image_inputs



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


          '''simple docstring'''


          snake_case       :   Dict							=      self.get_tokenizer()
          snake_case       :   Optional[Any]							=      self.get_image_processor()

          snake_case       :   Optional[Any]							=      VisionTextDualEncoderProcessor(tokenizer=snake_case__    ,						image_processor=snake_case__ )

          processor.save_pretrained(self.tmpdirname )
          snake_case       :   Any							=      VisionTextDualEncoderProcessor.from_pretrained(self.tmpdirname )

          self.assertEqual(processor.tokenizer.get_vocab()    ,						tokenizer.get_vocab() )
          self.assertIsInstance(processor.tokenizer    ,						(BertTokenizer, BertTokenizerFast) )

          self.assertEqual(processor.image_processor.to_json_string()    ,						image_processor.to_json_string() )
          self.assertIsInstance(processor.image_processor    ,						snake_case__ )



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


          '''simple docstring'''


          snake_case       :   str							=      VisionTextDualEncoderProcessor(
              tokenizer=self.get_tokenizer()    ,						image_processor=self.get_image_processor() )
          processor.save_pretrained(self.tmpdirname )

          snake_case       :   Optional[int]							=      self.get_tokenizer(bos_token="(BOS)"    ,						eos_token="(EOS)" )
          snake_case       :   Tuple							=      self.get_image_processor(do_normalize=snake_case__    ,						padding_value=1.0 )

          snake_case       :   List[str]							=      VisionTextDualEncoderProcessor.from_pretrained(
              self.tmpdirname    ,						bos_token="(BOS)"    ,						eos_token="(EOS)"    ,						do_normalize=snake_case__    ,						padding_value=1.0 )

          self.assertEqual(processor.tokenizer.get_vocab()    ,						tokenizer_add_kwargs.get_vocab() )
          self.assertIsInstance(processor.tokenizer    ,						(BertTokenizer, BertTokenizerFast) )

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



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


          '''simple docstring'''


          snake_case       :   str							=      self.get_image_processor()
          snake_case       :   Optional[int]							=      self.get_tokenizer()

          snake_case       :   List[Any]							=      VisionTextDualEncoderProcessor(tokenizer=snake_case__    ,						image_processor=snake_case__ )

          snake_case       :   Optional[Any]							=      self.prepare_image_inputs()

          snake_case       :   str							=      image_processor(snake_case__    ,						return_tensors="np" )
          snake_case       :   Any							=      processor(images=snake_case__    ,						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 				_SCREAMING_SNAKE_CASE   (self		:					Tuple )		->	Optional[Any]:


          '''simple docstring'''


          snake_case       :   Dict							=      self.get_image_processor()
          snake_case       :   int							=      self.get_tokenizer()

          snake_case       :   Any							=      VisionTextDualEncoderProcessor(tokenizer=snake_case__    ,						image_processor=snake_case__ )

          snake_case       :   Tuple							=      "lower newer"

          snake_case       :   Tuple							=      processor(text=snake_case__ )

          snake_case       :   Union[str, Any]							=      tokenizer(snake_case__ )

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



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


          '''simple docstring'''


          snake_case       :   List[Any]							=      self.get_image_processor()
          snake_case       :   Dict							=      self.get_tokenizer()

          snake_case       :   Dict							=      VisionTextDualEncoderProcessor(tokenizer=snake_case__    ,						image_processor=snake_case__ )

          snake_case       :   int							=      "lower newer"
          snake_case       :   Dict							=      self.prepare_image_inputs()

          snake_case       :   Union[str, Any]							=      processor(text=snake_case__    ,						images=snake_case__ )

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

          # test if it raises when no input is passed
          with self.assertRaises(snake_case__ ):
                 processor()



   def 				_SCREAMING_SNAKE_CASE   (self		:					str )		->	Tuple:


          '''simple docstring'''


          snake_case       :   Tuple							=      self.get_image_processor()
          snake_case       :   Optional[Any]							=      self.get_tokenizer()

          snake_case       :   Tuple							=      VisionTextDualEncoderProcessor(tokenizer=snake_case__    ,						image_processor=snake_case__ )

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

          snake_case       :   List[Any]							=      processor.batch_decode(snake_case__ )
          snake_case       :   Union[str, Any]							=      tokenizer.batch_decode(snake_case__ )

          self.assertListEqual(snake_case__    ,						snake_case__ )



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


          '''simple docstring'''


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

          snake_case       :   Any							=      VisionTextDualEncoderProcessor(tokenizer=snake_case__    ,						image_processor=snake_case__ )

          snake_case       :   Optional[Any]							=      "lower newer"
          snake_case       :   List[Any]							=      self.prepare_image_inputs()

          snake_case       :   Tuple							=      processor(text=snake_case__    ,						images=snake_case__ )

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





