
"""simple docstring"""







from typing import Any, Dict, List, Union

from ..utils import add_end_docstrings, is_torch_available, is_vision_available, logging, requires_backends
from .base import PIPELINE_INIT_ARGS, ChunkPipeline


if is_vision_available():
						from PIL import Image

						from ..image_utils import load_image

if is_torch_available():
						import torch

						from transformers.modeling_outputs import BaseModelOutput

						from ..models.auto.modeling_auto import MODEL_FOR_ZERO_SHOT_OBJECT_DETECTION_MAPPING

lowerCamelCase__        =		logging.get_logger(__name__)




@add_end_docstrings(_lowerCAmelCase)
class 			A__	(     _lowerCAmelCase):

		def __init__(				self	,		**_SCREAMING_SNAKE_CASE			):
			super().__init__(**SCREAMING_SNAKE_CASE_			)

			if self.framework == "tf":
				raise ValueError(f"The {self.__class__} is only available in PyTorch."			)

			requires_backends(self	,		'vision'			)
			self.check_model_type(SCREAMING_SNAKE_CASE_			)

		def __call__(				self	,		_SCREAMING_SNAKE_CASE	,		_SCREAMING_SNAKE_CASE = None	,		**_SCREAMING_SNAKE_CASE	,		):
			if "text_queries" in kwargs:
				__lowerCAmelCase      :						Union[str, Any]						      =				kwargs.pop('text_queries'			)

			if isinstance(SCREAMING_SNAKE_CASE_	,		(str, Image.Image)			):
				__lowerCAmelCase      :						Any						      =				{"""image""": image, """candidate_labels""": candidate_labels}
			else:
				__lowerCAmelCase      :						int						      =				image
			__lowerCAmelCase      :						Any						      =				super().__call__(SCREAMING_SNAKE_CASE_	,		**SCREAMING_SNAKE_CASE_			)
			return results

		def 							__lowerCamelCase							(				self	,		**_SCREAMING_SNAKE_CASE			):
			__lowerCAmelCase      :						Optional[int]						      =				{}
			if "threshold" in kwargs:
				__lowerCAmelCase      :						Tuple						      =				kwargs["""threshold"""]
			if "top_k" in kwargs:
				__lowerCAmelCase      :						str						      =				kwargs["""top_k"""]
			return {}, {}, postprocess_params

		def 							__lowerCamelCase							(				self	,		_SCREAMING_SNAKE_CASE			):
			__lowerCAmelCase      :						Union[str, Any]						      =				load_image(inputs['image']			)
			__lowerCAmelCase      :						str						      =				inputs["""candidate_labels"""]
			if isinstance(SCREAMING_SNAKE_CASE_	,		SCREAMING_SNAKE_CASE_			):
				__lowerCAmelCase      :						int						      =				candidate_labels.split(','			)

			__lowerCAmelCase      :						Tuple						      =				torch.tensor([[image.height, image.width]]	,		dtype=torch.intaa			)
			for i, candidate_label in enumerate(SCREAMING_SNAKE_CASE_			):
				__lowerCAmelCase      :						Tuple						      =				self.tokenizer(SCREAMING_SNAKE_CASE_	,		return_tensors=self.framework			)
				__lowerCAmelCase      :						Any						      =				self.image_processor(SCREAMING_SNAKE_CASE_	,		return_tensors=self.framework			)
				yield {
				    "is_last": i == len(SCREAMING_SNAKE_CASE_			) - 1,
				    "target_size": target_size,
				    "candidate_label": candidate_label,
				    **text_inputs,
				    **image_features,
				}

		def 							__lowerCamelCase							(				self	,		_SCREAMING_SNAKE_CASE			):
			__lowerCAmelCase      :						Dict						      =				model_inputs.pop('target_size'			)
			__lowerCAmelCase      :						List[Any]						      =				model_inputs.pop('candidate_label'			)
			__lowerCAmelCase      :						str						      =				model_inputs.pop('is_last'			)

			__lowerCAmelCase      :						Optional[int]						      =				self.model(**SCREAMING_SNAKE_CASE_			)

			__lowerCAmelCase      :						Dict						      =				{"""target_size""": target_size, """candidate_label""": candidate_label, """is_last""": is_last, **outputs}
			return model_outputs

		def 							__lowerCamelCase							(				self	,		_SCREAMING_SNAKE_CASE	,		_SCREAMING_SNAKE_CASE=0.1	,		_SCREAMING_SNAKE_CASE=None			):
			__lowerCAmelCase      :						int						      =				[]
			for model_output in model_outputs:
				__lowerCAmelCase      :						Union[str, Any]						      =				model_output["""candidate_label"""]
				__lowerCAmelCase      :						Tuple						      =				BaseModelOutput(SCREAMING_SNAKE_CASE_			)
				__lowerCAmelCase      :						Optional[Any]						      =				self.image_processor.post_process_object_detection(
				    outputs=SCREAMING_SNAKE_CASE_	,		threshold=SCREAMING_SNAKE_CASE_	,		target_sizes=model_output['target_size']			)[0]

				for index in outputs["scores"].nonzero():
					__lowerCAmelCase      :						Tuple						      =				outputs["""scores"""][index].item()
					__lowerCAmelCase      :						Dict						      =				self._get_bounding_box(outputs['boxes'][index][0]			)

					__lowerCAmelCase      :						Optional[Any]						      =				{"""score""": score, """label""": label, """box""": box}
					results.append(SCREAMING_SNAKE_CASE_			)

			__lowerCAmelCase      :						List[str]						      =				sorted(SCREAMING_SNAKE_CASE_	,		key=lambda _SCREAMING_SNAKE_CASE			: x["score"]	,		reverse=SCREAMING_SNAKE_CASE_			)
			if top_k:
				__lowerCAmelCase      :						Tuple						      =				results[:top_k]

			return results







		def 							__lowerCamelCase							(				self	,		_SCREAMING_SNAKE_CASE			):
			if self.framework != "pt":
				raise ValueError('The ZeroShotObjectDetectionPipeline is only available in PyTorch.'			)
			__lowerCAmelCase      :						Union[str, Any]						      =				box.int().tolist()
			__lowerCAmelCase      :						Optional[int]						      =				{
			    """xmin""": xmin,
			    """ymin""": ymin,
			    """xmax""": xmax,
			    """ymax""": ymax,
			}
			return bbox

"""simple docstring"""







import argparse
import datetime
def    __lowerCAmelCase    (_UpperCamelCase		):
	__lowerCAmelCase      :						Optional[Any]						      =				{
	    '0': 'Sunday',
	    '1': 'Monday',
	    '2': 'Tuesday',
	    '3': 'Wednesday',
	    '4': 'Thursday',
	    '5': 'Friday',
	    '6': 'Saturday',
	}

	__lowerCAmelCase      :						Optional[Any]						      =				{0: 1, 1: 2, 2: 3, 3: 4, 4: 5, 5: 6, 6: 0}

	# Validate
	if not 0 < len(_UpperCamelCase		) < 11:
		raise ValueError('Must be 10 characters long'		)

	# Get month
	__lowerCAmelCase      :						int						      =				int(date_input[0] + date_input[1]		)
	# Validate
	if not 0 < m < 13:
		raise ValueError('Month must be between 1 - 12'		)

	__lowerCAmelCase      :						str						      =				date_input[2]
	# Validate
	if sep_a not in ["-", "/"]:
		raise ValueError('Date separator must be \'-\' or \'/\''		)

	# Get day
	__lowerCAmelCase      :						int						      =				int(date_input[3] + date_input[4]		)
	# Validate
	if not 0 < d < 32:
		raise ValueError('Date must be between 1 - 31'		)

	# Get second separator
	__lowerCAmelCase      :						str						      =				date_input[5]
	# Validate
	if sep_a not in ["-", "/"]:
		raise ValueError('Date separator must be \'-\' or \'/\''		)

	# Get year
	__lowerCAmelCase      :						int						      =				int(date_input[6] + date_input[7] + date_input[8] + date_input[9]		)
	# Arbitrary year range
	if not 45 < y < 8500:
		raise ValueError(
		    'Year out of range. There has to be some sort of limit...right?'		)

	# Get datetime obj for validation
	__lowerCAmelCase      :						Tuple						      =				datetime.date(int(_UpperCamelCase		)	,  int(_UpperCamelCase		)	,  int(_UpperCamelCase		)		)

	# Start math
	if m <= 2:
		__lowerCAmelCase      :						int						      =				y - 1
		__lowerCAmelCase      :						Tuple						      =				m + 12
	# maths var
	__lowerCAmelCase      :						int						      =				int(str(_UpperCamelCase		)[:2]		)
	__lowerCAmelCase      :						int						      =				int(str(_UpperCamelCase		)[2:]		)
	__lowerCAmelCase      :						int						      =				int(2.6 * m - 5.39		)
	__lowerCAmelCase      :						int						      =				int(c / 4		)
	__lowerCAmelCase      :						int						      =				int(k / 4		)
	__lowerCAmelCase      :						int						      =				int(d + k		)
	__lowerCAmelCase      :						int						      =				int(t + u + v + x		)
	__lowerCAmelCase      :						int						      =				int(z - (2 * c)		)
	__lowerCAmelCase      :						int						      =				round(w % 7		)
	# End math

	# Validate math
	if f != convert_datetime_days[dt_ck.weekday()]:
		raise AssertionError('The date was evaluated incorrectly. Contact developer.'		)

	# Response
	__lowerCAmelCase      :						str						      =				F"Your date {date_input}, is a {days[str(_UpperCamelCase		)]}!"
	return response


if __name__ == "__main__":
							import doctest

							doctest.testmod()
							lowerCamelCase__        =		argparse.ArgumentParser(
							    description=(
							        """Find out what day of the week nearly any date is or was. Enter """
							        """date as a string in the mm-dd-yyyy or mm/dd/yyyy format"""
							    )
							)
							parser.add_argument(
							    """date_input""", type=str, help="""Date as a string (mm-dd-yyyy or mm/dd/yyyy)"""
							)
							lowerCamelCase__        =		parser.parse_args()
							zeller(args.date_input)