






"""simple docstring"""
import enum
import warnings

from ..tokenization_utils import TruncationStrategy
from ..utils import add_end_docstrings, is_tf_available, is_torch_available, logging
from .base import PIPELINE_INIT_ARGS, Pipeline


if is_tf_available():
 import tensorflow as tf

 from ..models.auto.modeling_tf_auto import TF_MODEL_FOR_SEQ_TO_SEQ_CAUSAL_LM_MAPPING

if is_torch_available():
 from ..models.auto.modeling_auto import MODEL_FOR_SEQ_TO_SEQ_CAUSAL_LM_MAPPING

snake_case : Union[str, Any]     		=		logging.get_logger(__name__)



class        UpperCamelCase__ (				enum.Enum):







    """simple docstring"""
    __UpperCAmelCase           = 0
    __UpperCAmelCase           = 1



@add_end_docstrings(a_)
class        UpperCamelCase__ (				a_):







    """simple docstring"""
    __UpperCAmelCase           = """generated"""







    def __init__(		self :	List[str]				,    *UpperCamelCase_ :	Tuple				,    **UpperCamelCase_ :	Union[str, Any] ):





           '''simple docstring'''

           super().__init__(*_lowerCAmelCase				,    **_lowerCAmelCase )

           self.check_model_type(
               TF_MODEL_FOR_SEQ_TO_SEQ_CAUSAL_LM_MAPPING
               if self.framework == 'tf'
               else MODEL_FOR_SEQ_TO_SEQ_CAUSAL_LM_MAPPING )







    def 				a__			(		self :	Any				,    UpperCamelCase_ :	Any=None				,    UpperCamelCase_ :	Dict=None				,    UpperCamelCase_ :	Any=None				,    UpperCamelCase_ :	Any=None				,    UpperCamelCase_ :	List[str]=None				,    UpperCamelCase_ :	List[str]=None				,    **UpperCamelCase_ :	Dict				,    ):





           '''simple docstring'''

           __magic_name__      				=    {}
           if truncation is not None:
                  __magic_name__      				=    truncation

           __magic_name__      				=    generate_kwargs

           __magic_name__      				=    {}
           if return_tensors is not None and return_type is None:
                  __magic_name__      				=    ReturnType.TENSORS if return_tensors else ReturnType.TEXT
           if return_type is not None:
                  __magic_name__      				=    return_type

           if clean_up_tokenization_spaces is not None:
                  __magic_name__      				=    clean_up_tokenization_spaces

           if stop_sequence is not None:
                  __magic_name__      				=    self.tokenizer.encode(_lowerCAmelCase				,    add_special_tokens=_lowerCAmelCase )
                  if len(_lowerCAmelCase ) > 1:
                         warnings.warn(
                             'Stopping on a multiple token sequence is not yet supported on transformers. The first token of'
                             ' the stop sequence will be used as the stop sequence string in the interim.' )
                  __magic_name__      				=    stop_sequence_ids[0]

           return preprocess_params, forward_params, postprocess_params







    def 				a__			(		self :	Optional[int]				,    UpperCamelCase_ :	int				,    UpperCamelCase_ :	int				,    UpperCamelCase_ :	int ):





           '''simple docstring'''

           return True







    def 				a__			(		self :	str				,    *UpperCamelCase_ :	int				,    UpperCamelCase_ :	Optional[Any] ):





           '''simple docstring'''

           __magic_name__      				=    self.model.config.prefix if self.model.config.prefix is not None else ''
           if isinstance(args[0]				,    _lowerCAmelCase ):
                  if self.tokenizer.pad_token_id is None:
                         raise ValueError('Please make sure that the tokenizer has a pad_token_id when using a batch input' )
                  __magic_name__      				=    ([prefix + arg for arg in args[0]],)
                  __magic_name__      				=    True

           elif isinstance(args[0]				,    _lowerCAmelCase ):
                  __magic_name__      				=    (prefix + args[0],)
                  __magic_name__      				=    False
           else:
                  raise ValueError(
                      f""" `args[0]`: {args[0]} have the wrong format. The should be either of type `str` or type `list`""" )
           __magic_name__      				=    self.tokenizer(*_lowerCAmelCase				,    padding=_lowerCAmelCase				,    truncation=_lowerCAmelCase				,    return_tensors=self.framework )
           # This is produced by tokenizers but is an invalid generate kwargs
           if "token_type_ids" in inputs:
                  del inputs["token_type_ids"]
           return inputs







    def __call__(		self :	Any				,    *UpperCamelCase_ :	List[str]				,    **UpperCamelCase_ :	Optional[Any] ):





           '''simple docstring'''

           __magic_name__      				=    super().__call__(*_lowerCAmelCase				,    **_lowerCAmelCase )
           if (
               isinstance(args[0]				,    _lowerCAmelCase )
               and all(isinstance(_lowerCAmelCase				,    _lowerCAmelCase ) for el in args[0] )
               and all(len(_lowerCAmelCase ) == 1 for res in result )
           ):
                  return [res[0] for res in result]
           return result







    def 				a__			(		self :	Union[str, Any]				,    UpperCamelCase_ :	Union[str, Any]				,    UpperCamelCase_ :	int=TruncationStrategy.DO_NOT_TRUNCATE				,    **UpperCamelCase_ :	Union[str, Any] ):





           '''simple docstring'''

           __magic_name__      				=    self._parse_and_tokenize(_lowerCAmelCase				,    truncation=_lowerCAmelCase				,    **_lowerCAmelCase )
           return inputs







    def 				a__			(		self :	str				,    UpperCamelCase_ :	str				,    **UpperCamelCase_ :	Union[str, Any] ):





           '''simple docstring'''

           if self.framework == "pt":
                  __magic_name__				,  __magic_name__      				=    model_inputs['input_ids'].shape
           elif self.framework == "tf":
                  __magic_name__				,  __magic_name__      				=    tf.shape(model_inputs['input_ids'] ).numpy()

           __magic_name__      				=    generate_kwargs.get('min_length'				,    self.model.config.min_length )
           __magic_name__      				=    generate_kwargs.get('max_length'				,    self.model.config.max_length )
           self.check_inputs(_lowerCAmelCase				,    generate_kwargs['min_length']				,    generate_kwargs['max_length'] )
           __magic_name__      				=    self.model.generate(**_lowerCAmelCase				,    **_lowerCAmelCase )
           __magic_name__      				=    output_ids.shape[0]
           if self.framework == "pt":
                  __magic_name__      				=    output_ids.reshape(_lowerCAmelCase				,    out_b // in_b				,    *output_ids.shape[1:] )
           elif self.framework == "tf":
                  __magic_name__      				=    tf.reshape(_lowerCAmelCase				,    (in_b, out_b // in_b, *output_ids.shape[1:]) )
           return {"output_ids": output_ids}







    def 				a__			(		self :	Union[str, Any]				,    UpperCamelCase_ :	Any				,    UpperCamelCase_ :	Union[str, Any]=ReturnType.TEXT				,    UpperCamelCase_ :	Union[str, Any]=False ):





           '''simple docstring'''

           __magic_name__      				=    []
           for output_ids in model_outputs["output_ids"][0]:
                  if return_type == ReturnType.TENSORS:
                         __magic_name__      				=    {f"""{self.return_name}_token_ids""": output_ids}
                  elif return_type == ReturnType.TEXT:
                         __magic_name__      				=    {
                             f"""{self.return_name}_text""": self.tokenizer.decode(
                                 _lowerCAmelCase				,    skip_special_tokens=_lowerCAmelCase				,    clean_up_tokenization_spaces=_lowerCAmelCase				,    )
                         }
                  records.append(_lowerCAmelCase )
           return records



@add_end_docstrings(a_)
class        UpperCamelCase__ (				a_):







    """simple docstring"""
    __UpperCAmelCase           = """summary"""







    def __call__(		self :	Optional[int]				,    *UpperCamelCase_ :	List[str]				,    **UpperCamelCase_ :	Dict ):





           '''simple docstring'''

           return super().__call__(*_lowerCAmelCase				,    **_lowerCAmelCase )







    def 				a__			(		self :	Union[str, Any]				,    UpperCamelCase_ :	int				,    UpperCamelCase_ :	int				,    UpperCamelCase_ :	int ):





           '''simple docstring'''

           if max_length < min_length:
                  logger.warning(f"""Your min_length={min_length} must be inferior than your max_length={max_length}.""" )

           if input_length < max_length:
                  logger.warning(
                      f"""Your max_length is set to {max_length}, but your input_length is only {input_length}. Since this is """
                      'a summarization task, where outputs shorter than the input are typically wanted, you might '
                      f"""consider decreasing max_length manually, e.g. summarizer(\'...\', max_length={input_length//2})""" )



@add_end_docstrings(a_)
class        UpperCamelCase__ (				a_):







    """simple docstring"""
    __UpperCAmelCase           = """translation"""







    def 				a__			(		self :	List[Any]				,    UpperCamelCase_ :	int				,    UpperCamelCase_ :	int				,    UpperCamelCase_ :	int ):





           '''simple docstring'''

           if input_length > 0.9 * max_length:
                  logger.warning(
                      f"""Your input_length: {input_length} is bigger than 0.9 * max_length: {max_length}. You might consider """
                      'increasing your max_length manually, e.g. translator(\'...\', max_length=400)' )
           return True







    def 				a__			(		self :	Optional[int]				,    *UpperCamelCase_ :	int				,    UpperCamelCase_ :	List[Any]=TruncationStrategy.DO_NOT_TRUNCATE				,    UpperCamelCase_ :	str=None				,    UpperCamelCase_ :	Tuple=None ):





           '''simple docstring'''

           if getattr(self.tokenizer				,    '_build_translation_inputs'				,    _lowerCAmelCase ):
                  return self.tokenizer._build_translation_inputs(
                      *_lowerCAmelCase				,    return_tensors=self.framework				,    truncation=_lowerCAmelCase				,    src_lang=_lowerCAmelCase				,    tgt_lang=_lowerCAmelCase )
           else:
                  return super()._parse_and_tokenize(*_lowerCAmelCase				,    truncation=_lowerCAmelCase )







    def 				a__			(		self :	Any				,    UpperCamelCase_ :	Optional[Any]=None				,    UpperCamelCase_ :	List[Any]=None				,    **UpperCamelCase_ :	Any ):





           '''simple docstring'''

           __magic_name__				,  __magic_name__				,  __magic_name__      				=    super()._sanitize_parameters(**_lowerCAmelCase )
           if src_lang is not None:
                  __magic_name__      				=    src_lang
           if tgt_lang is not None:
                  __magic_name__      				=    tgt_lang
           if src_lang is None and tgt_lang is None:
                  # Backward compatibility, direct arguments use is preferred.
                  __magic_name__      				=    kwargs.get('task'				,    self.task )
                  __magic_name__      				=    task.split('_' )
                  if task and len(_lowerCAmelCase ) == 4:
                         # translation, XX, to YY
                         __magic_name__      				=    items[1]
                         __magic_name__      				=    items[3]
           return preprocess_params, forward_params, postprocess_params







    def __call__(		self :	Dict				,    *UpperCamelCase_ :	int				,    **UpperCamelCase_ :	Dict ):





           '''simple docstring'''

           return super().__call__(*_lowerCAmelCase				,    **_lowerCAmelCase )



def       _lowerCAmelCase    (				lowerCAmelCase_				:int		,    lowerCAmelCase_				:int				)->int:
   '''simple docstring'''






   return int((input_a, input_a).count(0				) == 0				)



def       _lowerCAmelCase    (				)->None:
   '''simple docstring'''






   assert and_gate(0		,    0				) == 0
   assert and_gate(0		,    1				) == 0
   assert and_gate(1		,    0				) == 0
   assert and_gate(1		,    1				) == 1


if __name__ == "__main__":
   test_and_gate()
   print(and_gate(1, 0))
   print(and_gate(0, 0))
   print(and_gate(0, 1))
   print(and_gate(1, 1))




