





'''simple docstring'''






A_		:  str		 =						[4, 1, 7, 4, 2, 6, 4, 1, 5, 3, 7, 5]
A_		:  Any		 =						[3, 7, 7, 4, 2, 6, 4, 1, 5, 3, 7, 5]
A_		:  List[Any]		 =						{
    0: "Sunday",
    1: "Monday",
    2: "Tuesday",
    3: "Wednesday",
    4: "Thursday",
    5: "Friday",
    6: "Saturday",
}



def        UpperCamelCase__		(						__magic_name__  :   int		,       __magic_name__  :   int		,       __magic_name__  :   int      )				->			str:
 '''simple docstring'''






 assert len(str(_snake_case      )      ) > 2, "year should be in YYYY format"
 assert 1 <= month <= 12, "month should be between 1 to 12"
 assert 1 <= day <= 31, "day should be between 1 to 31"

 # Doomsday algorithm:
 snake_case__     :					List[str]    =  year // 1_00
 snake_case__     :					Tuple    =  (5 * (century % 4) + 2) % 7
 snake_case__     :					Union[str, Any]    =  year % 1_00
 snake_case__     :					Optional[Any]    =  centurian % 12
 snake_case__     :					Optional[int]    =  (
     (centurian // 12) + centurian_m + (centurian_m // 4) + century_anchor
 ) % 7
 snake_case__     :					Optional[Any]    =  (
     DOOMSDAY_NOT_LEAP[month - 1]
     if (year % 4 != 0) or (centurian == 0 and (year % 4_00) == 0)
     else DOOMSDAY_LEAP[month - 1]
 )
 snake_case__     :					str    =  (dooms_day + day - day_anchor) % 7
 return WEEK_DAY_NAMES[week_day]


if __name__ == "__main__":
    import doctest

    doctest.testmod()












from typing import List, Optional, Union

from ...image_utils import ImageInput
from ...processing_utils import ProcessorMixin
from ...tokenization_utils_base import BatchEncoding, PaddingStrategy, PreTokenizedInput, TextInput, TruncationStrategy
from ...utils import TensorType






class 					SCREAMING_SNAKE_CASE_  (       _a ):
       """simple docstring"""


       __lowerCAmelCase    :		Dict					=['''image_processor''', '''tokenizer''']
       __lowerCAmelCase    :		List[Any]					='''BlipImageProcessor'''
       __lowerCAmelCase    :		Union[str, Any]					=('''BertTokenizer''', '''BertTokenizerFast''')





       def __init__(				self	:Optional[int],      snake_case	:int,      snake_case	:Optional[int]):



          """simple docstring"""

          _lowercase              =False
          super().__init__(snake_case,      snake_case)
          _lowercase              =self.image_processor





       def __call__(				self	:Dict,      snake_case	:ImageInput = None,      snake_case	:Union[TextInput, PreTokenizedInput, List[TextInput], List[PreTokenizedInput]] = None,      snake_case	:bool = True,      snake_case	:Union[bool, str, PaddingStrategy] = False,      snake_case	:Union[bool, str, TruncationStrategy] = None,      snake_case	:Optional[int] = None,      snake_case	:int = 0,      snake_case	:Optional[int] = None,      snake_case	:Optional[bool] = None,      snake_case	:bool = False,      snake_case	:bool = False,      snake_case	:bool = False,      snake_case	:bool = False,      snake_case	:bool = False,      snake_case	:bool = True,      snake_case	:Optional[Union[str, TensorType]] = None,      **snake_case	:str,      ):



          """simple docstring"""

          if images is None and text is None:
             raise ValueError('You have to specify either images or text.')

          # Get only text
          if images is None:
             _lowercase              =self.tokenizer
             _lowercase              =self.tokenizer(
                 text=snake_case,      add_special_tokens=snake_case,      padding=snake_case,      truncation=snake_case,      max_length=snake_case,      stride=snake_case,      pad_to_multiple_of=snake_case,      return_attention_mask=snake_case,      return_overflowing_tokens=snake_case,      return_special_tokens_mask=snake_case,      return_offsets_mapping=snake_case,      return_token_type_ids=snake_case,      return_length=snake_case,      verbose=snake_case,      return_tensors=snake_case,      **snake_case,      )
             return text_encoding

          # add pixel_values
          _lowercase              =self.image_processor(snake_case,      return_tensors=snake_case)

          if text is not None:
             _lowercase              =self.tokenizer(
                 text=snake_case,      add_special_tokens=snake_case,      padding=snake_case,      truncation=snake_case,      max_length=snake_case,      stride=snake_case,      pad_to_multiple_of=snake_case,      return_attention_mask=snake_case,      return_overflowing_tokens=snake_case,      return_special_tokens_mask=snake_case,      return_offsets_mapping=snake_case,      return_token_type_ids=snake_case,      return_length=snake_case,      verbose=snake_case,      return_tensors=snake_case,      **snake_case,      )
          else:
             _lowercase              =None

          if text_encoding is not None:
             encoding_image_processor.update(snake_case)

          return encoding_image_processor





       def 				UpperCamelCase__						(				self	:List[Any],      *snake_case	:int,      **snake_case	:str):



          """simple docstring"""

          return self.tokenizer.batch_decode(*snake_case,      **snake_case)





       def 				UpperCamelCase__						(				self	:Tuple,      *snake_case	:List[str],      **snake_case	:str):



          """simple docstring"""

          return self.tokenizer.decode(*snake_case,      **snake_case)





       @property
       def 				UpperCamelCase__						(				self	:List[Any]):



          """simple docstring"""

          _lowercase              =self.tokenizer.model_input_names
          _lowercase              =self.image_processor.model_input_names
          return list(dict.fromkeys(tokenizer_input_names + image_processor_input_names))


