




'''simple docstring'''






from __future__ import annotations

from string import ascii_letters






def 		UpperCamelCase__			(		__SCREAMING_SNAKE_CASE							,			__SCREAMING_SNAKE_CASE							,			__SCREAMING_SNAKE_CASE = None		)						->      str:
      snake_case__					:      List[str]  			=						alphabet or ascii_letters

      # The final result string
      snake_case__					:      Optional[Any]  			=						''

      for character in input_string:
            if character not in alpha:
                  # Append without encryption if character is not in the alphabet
                  result += character
            else:
                  # Get the index of the new key and make sure it isn't too large
                  snake_case__					:      Union[str, Any]  			=						(alpha.index(__SCREAMING_SNAKE_CASE		) + key) % len(__SCREAMING_SNAKE_CASE		)

                  # Append the encoded character to the alphabet
                  result += alpha[new_key]

      return result






def 		UpperCamelCase__			(		__SCREAMING_SNAKE_CASE							,			__SCREAMING_SNAKE_CASE							,			__SCREAMING_SNAKE_CASE = None		)						->      str:
      key *= -1

      return encrypt(__SCREAMING_SNAKE_CASE							,			__SCREAMING_SNAKE_CASE							,			__SCREAMING_SNAKE_CASE		)






def 		UpperCamelCase__			(		__SCREAMING_SNAKE_CASE							,			__SCREAMING_SNAKE_CASE = None		)						->      dict[int, str]:
      snake_case__					:      List[str]  			=						alphabet or ascii_letters

      # To store data on all the combinations
      snake_case__					:      List[Any]  			=						{}

      # Cycle through each combination
      for key in range(1							,			len(__SCREAMING_SNAKE_CASE		) + 1		):
            # Decrypt the message and store the result in the data
            snake_case__					:      Any  			=						decrypt(__SCREAMING_SNAKE_CASE							,			__SCREAMING_SNAKE_CASE							,			__SCREAMING_SNAKE_CASE		)

      return brute_force_data


if __name__ == "__main__":
      while True:
            print(F'\n{"-" * 10}\n Menu\n{"-" * 10}')
            print(*["1.Encrypt", "2.Decrypt", "3.BruteForce", "4.Quit"], sep="\n")

            # get user input
            A_ 			=		input("\nWhat would you like to do?: ").strip() or "4"

            # run functions based on what the user chose
            if choice not in ("1", "2", "3", "4"):
                  print("Invalid choice, please enter a valid choice")
            elif choice == "1":
                  A_ 			=		input("Please enter the string to be encrypted: ")
                  A_ 			=		int(input("Please enter off-set: ").strip())

                  print(encrypt(input_string, key))
            elif choice == "2":
                  A_ 			=		input("Please enter the string to be decrypted: ")
                  A_ 			=		int(input("Please enter off-set: ").strip())

                  print(decrypt(input_string, key))
            elif choice == "3":
                  A_ 			=		input("Please enter the string to be decrypted: ")
                  A_ 			=		brute_force(input_string)

                  for key, value in brute_force_data.items():
                        print(F'Key: {key} | Message: {value}')

            elif choice == "4":
                  print("Goodbye.")
                  break






'''simple docstring'''






import unittest

import numpy as np

from transformers.testing_utils import require_torch, require_vision
from transformers.utils import is_torch_available, is_vision_available

from ...test_image_processing_common import ImageProcessingSavingTestMixin, prepare_image_inputs


if is_torch_available():
      import torch

if is_vision_available():
      from PIL import Image

      from transformers import ViltImageProcessor






class 					lowercase_			(	unittest.TestCase       ):





     def __init__(    self    :				Optional[Any]    ,       __lowerCamelCase    :				Any    ,       __lowerCamelCase    :				Optional[Any]=7    ,       __lowerCamelCase    :				Optional[Any]=3    ,       __lowerCamelCase    :				int=18    ,       __lowerCamelCase    :				List[str]=30    ,       __lowerCamelCase    :				List[str]=400    ,       __lowerCamelCase    :				Optional[Any]=True    ,       __lowerCamelCase    :				Any=None    ,       __lowerCamelCase    :				List[str]=2    ,       __lowerCamelCase    :				Optional[Any]=True    ,       __lowerCamelCase    :				List[Any]=[0.5, 0.5, 0.5]    ,       __lowerCamelCase    :				Any=[0.5, 0.5, 0.5]    ,       ):
           snake_case__					:      Dict  			=						size if size is not None else {'shortest_edge': 30}
           snake_case__					:      Any  			=						parent
           snake_case__					:      int  			=						batch_size
           snake_case__					:      List[str]  			=						num_channels
           snake_case__					:      str  			=						image_size
           snake_case__					:      List[Any]  			=						min_resolution
           snake_case__					:      Dict  			=						max_resolution
           snake_case__					:      str  			=						do_resize
           snake_case__					:      str  			=						size
           snake_case__					:      List[str]  			=						size_divisor
           snake_case__					:      List[Any]  			=						do_normalize
           snake_case__					:      Optional[Any]  			=						image_mean
           snake_case__					:      Union[str, Any]  			=						image_std





     def  _lowerCAmelCase			(    self    :				Union[str, Any] ):
           return {
               "image_mean": self.image_mean,
               "image_std": self.image_std,
               "do_normalize": self.do_normalize,
               "do_resize": self.do_resize,
               "size": self.size,
               "size_divisor": self.size_divisor,
           }





     def  _lowerCAmelCase			(    self    :				Optional[Any]    ,       __lowerCamelCase    :				str    ,       __lowerCamelCase    :				Union[str, Any]=False ):
           if not batched:
                 snake_case__					:      int  			=						self.size['shortest_edge']
                 snake_case__					:      Union[str, Any]  			=						image_inputs[0]
                 if isinstance(__lowerCamelCase    ,       Image.Image ):
                       snake_case__			,       snake_case__					:      Any  			=						image.size
                 else:
                       snake_case__			,       snake_case__					:      Optional[Any]  			=						image.shape[1], image.shape[2]
                 snake_case__					:      int  			=						size / min(__lowerCamelCase    ,       __lowerCamelCase )
                 if h < w:
                       snake_case__			,       snake_case__					:      Tuple  			=						size, scale * w
                 else:
                       snake_case__			,       snake_case__					:      List[str]  			=						scale * h, size

                 snake_case__					:      List[Any]  			=						int((1333 / 800) * size )
                 if max(__lowerCamelCase    ,       __lowerCamelCase ) > max_size:
                       snake_case__					:      Dict  			=						max_size / max(__lowerCamelCase    ,       __lowerCamelCase )
                       snake_case__					:      List[Any]  			=						newh * scale
                       snake_case__					:      Optional[Any]  			=						neww * scale

                 snake_case__			,       snake_case__					:      str  			=						int(newh + 0.5 ), int(neww + 0.5 )
                 snake_case__			,       snake_case__					:      Any  			=						(
                     newh // self.size_divisor * self.size_divisor,
                     neww // self.size_divisor * self.size_divisor,
                 )

           else:
                 snake_case__					:      int  			=						[]
                 for image in image_inputs:
                       snake_case__			,       snake_case__					:      Union[str, Any]  			=						self.get_expected_values([image] )
                       expected_values.append((expected_height, expected_width) )
                 snake_case__					:      Any  			=						max(__lowerCamelCase    ,       key=lambda __lowerCamelCase : item[0] )[0]
                 snake_case__					:      List[Any]  			=						max(__lowerCamelCase    ,       key=lambda __lowerCamelCase : item[1] )[1]

           return expected_height, expected_width






@require_torch
@require_vision
class 					lowercase_			(	lowerCAmelCase_	,					unittest.TestCase       ):
     A_       							= ViltImageProcessor if is_vision_available() else None





     def  _lowerCAmelCase			(    self    :				Union[str, Any] ):
           snake_case__					:      int  			=						ViltImageProcessingTester(self )





     @property
     def  _lowerCAmelCase			(    self    :				List[Any] ):
           return self.image_processor_tester.prepare_image_processor_dict()





     def  _lowerCAmelCase			(    self    :				Optional[int] ):
           snake_case__					:      int  			=						self.image_processing_class(**self.image_processor_dict )
           self.assertTrue(hasattr(__lowerCamelCase    ,       'image_mean' ) )
           self.assertTrue(hasattr(__lowerCamelCase    ,       'image_std' ) )
           self.assertTrue(hasattr(__lowerCamelCase    ,       'do_normalize' ) )
           self.assertTrue(hasattr(__lowerCamelCase    ,       'do_resize' ) )
           self.assertTrue(hasattr(__lowerCamelCase    ,       'size' ) )
           self.assertTrue(hasattr(__lowerCamelCase    ,       'size_divisor' ) )





     def  _lowerCAmelCase			(    self    :				Tuple ):
           snake_case__					:      Optional[Any]  			=						self.image_processing_class.from_dict(self.image_processor_dict )
           self.assertEqual(image_processor.size    ,       {'shortest_edge': 30} )

           snake_case__					:      List[str]  			=						self.image_processing_class.from_dict(self.image_processor_dict    ,       size=42 )
           self.assertEqual(image_processor.size    ,       {'shortest_edge': 42} )





     def  _lowerCAmelCase			(    self    :				str ):
           pass





     def  _lowerCAmelCase			(    self    :				List[Any] ):
           # Initialize image_processing
           snake_case__					:      int  			=						self.image_processing_class(**self.image_processor_dict )
           # create random PIL images
           snake_case__					:      str  			=						prepare_image_inputs(self.image_processor_tester    ,       equal_resolution=__lowerCamelCase )
           for image in image_inputs:
                 self.assertIsInstance(__lowerCamelCase    ,       Image.Image )

           # Test not batched input
           snake_case__					:      int  			=						image_processing(image_inputs[0]    ,       return_tensors='pt' ).pixel_values

           snake_case__			,       snake_case__					:      Union[str, Any]  			=						self.image_processor_tester.get_expected_values(__lowerCamelCase )
           self.assertEqual(
               encoded_images.shape    ,       (1, self.image_processor_tester.num_channels, expected_height, expected_width)    ,       )

           # Test batched
           snake_case__					:      Tuple  			=						image_processing(__lowerCamelCase    ,       return_tensors='pt' ).pixel_values

           snake_case__			,       snake_case__					:      Optional[Any]  			=						self.image_processor_tester.get_expected_values(__lowerCamelCase    ,       batched=__lowerCamelCase )
           self.assertEqual(
               encoded_images.shape    ,       (
                   self.image_processor_tester.batch_size,
                   self.image_processor_tester.num_channels,
                   expected_height,
                   expected_width,
               )    ,       )





     def  _lowerCAmelCase			(    self    :				Union[str, Any] ):
           # Initialize image_processing
           snake_case__					:      List[Any]  			=						self.image_processing_class(**self.image_processor_dict )
           # create random numpy tensors
           snake_case__					:      Dict  			=						prepare_image_inputs(self.image_processor_tester    ,       equal_resolution=__lowerCamelCase    ,       numpify=__lowerCamelCase )
           for image in image_inputs:
                 self.assertIsInstance(__lowerCamelCase    ,       np.ndarray )

           # Test not batched input
           snake_case__					:      List[Any]  			=						image_processing(image_inputs[0]    ,       return_tensors='pt' ).pixel_values

           snake_case__			,       snake_case__					:      Tuple  			=						self.image_processor_tester.get_expected_values(__lowerCamelCase )
           self.assertEqual(
               encoded_images.shape    ,       (1, self.image_processor_tester.num_channels, expected_height, expected_width)    ,       )

           # Test batched
           snake_case__					:      Tuple  			=						image_processing(__lowerCamelCase    ,       return_tensors='pt' ).pixel_values

           snake_case__			,       snake_case__					:      Union[str, Any]  			=						self.image_processor_tester.get_expected_values(__lowerCamelCase    ,       batched=__lowerCamelCase )
           self.assertEqual(
               encoded_images.shape    ,       (
                   self.image_processor_tester.batch_size,
                   self.image_processor_tester.num_channels,
                   expected_height,
                   expected_width,
               )    ,       )





     def  _lowerCAmelCase			(    self    :				str ):
           # Initialize image_processing
           snake_case__					:      str  			=						self.image_processing_class(**self.image_processor_dict )
           # create random PyTorch tensors
           snake_case__					:      Dict  			=						prepare_image_inputs(self.image_processor_tester    ,       equal_resolution=__lowerCamelCase    ,       torchify=__lowerCamelCase )
           for image in image_inputs:
                 self.assertIsInstance(__lowerCamelCase    ,       torch.Tensor )

           # Test not batched input
           snake_case__					:      Optional[int]  			=						image_processing(image_inputs[0]    ,       return_tensors='pt' ).pixel_values

           snake_case__			,       snake_case__					:      Optional[int]  			=						self.image_processor_tester.get_expected_values(__lowerCamelCase )
           self.assertEqual(
               encoded_images.shape    ,       (1, self.image_processor_tester.num_channels, expected_height, expected_width)    ,       )

           # Test batched
           snake_case__					:      Optional[int]  			=						image_processing(__lowerCamelCase    ,       return_tensors='pt' ).pixel_values

           snake_case__			,       snake_case__					:      Tuple  			=						self.image_processor_tester.get_expected_values(__lowerCamelCase    ,       batched=__lowerCamelCase )
           self.assertEqual(
               encoded_images.shape    ,       (
                   self.image_processor_tester.batch_size,
                   self.image_processor_tester.num_channels,
                   expected_height,
                   expected_width,
               )    ,       )
