
"""simple docstring"""

import importlib.metadata
import operator
import re
import sys
from typing import Optional

from packaging import version


SCREAMING_SNAKE_CASE_    					=						{
    '''<''': operator.lt,
    '''<=''': operator.le,
    '''==''': operator.eq,
    '''!=''': operator.ne,
    '''>=''': operator.ge,
    '''>''': operator.gt,
}




def     lowercase__						(					lowerCAmelCase				:					int ,				lowerCAmelCase				:					List[Any] ,				lowerCAmelCase				:					Union[str, Any] ,				lowerCAmelCase				:					Union[str, Any] ,				lowerCAmelCase				:					str ,				lowerCAmelCase				:					Any ) ->      Any:






    """simple docstring"""




    if got_ver is None or want_ver is None:
        raise ValueError(
            F"Unable to compare versions for {requirement}: need={want_ver} found={got_ver}. This is unusual. Consider"
            F" reinstalling {pkg}." )
    if not ops[op](version.parse(lowerCAmelCase ) ,				version.parse(lowerCAmelCase ) ):
        raise ImportError(
            F"{requirement} is required for a normal functioning of this module, but found {pkg}=={got_ver}.{hint}" )




def     lowercase__						(					lowerCAmelCase				:					str ,				lowerCAmelCase				:					Optional[str] = None ) ->      None:






    """simple docstring"""




    UpperCAmelCase									=					F"\n{hint}" if hint is not None else ''

    # non-versioned check
    if re.match(r'^[\w_\-\d]+$' ,				lowerCAmelCase ):
        UpperCAmelCase			,							UpperCAmelCase			,							UpperCAmelCase									=					requirement, None, None
    else:
        UpperCAmelCase									=					re.findall(r'^([^!=<>\s]+)([\s!=<>]{1,2}.+)' ,				lowerCAmelCase )
        if not match:
            raise ValueError(
                'requirement needs to be in the pip package format, .e.g., package_a==1.23, or package_b>=1.23, but'
                F" got {requirement}" )
        UpperCAmelCase			,							UpperCAmelCase									=					match[0]
        UpperCAmelCase									=					want_full.split(',' )  # there could be multiple requirements
        UpperCAmelCase									=					{}
        for w in want_range:
            UpperCAmelCase									=					re.findall(r'^([\s!=<>]{1,2})(.+)' ,				lowerCAmelCase )
            if not match:
                raise ValueError(
                    'requirement needs to be in the pip package format, .e.g., package_a==1.23, or package_b>=1.23,'
                    F" but got {requirement}" )
            UpperCAmelCase			,							UpperCAmelCase									=					match[0]
            UpperCAmelCase									=					want_ver
            if op not in ops:
                raise ValueError(F"{requirement}: need one of {list(ops.keys() )}, but got {op}" )

    # special case
    if pkg == "python":
        UpperCAmelCase									=					'.'.join([str(lowerCAmelCase ) for x in sys.version_info[:3]] )
        for op, want_ver in wanted.items():
            _compare_versions(lowerCAmelCase ,				lowerCAmelCase ,				lowerCAmelCase ,				lowerCAmelCase ,				lowerCAmelCase ,				lowerCAmelCase )
        return

    # check if any version is installed
    try:
        UpperCAmelCase									=					importlib.metadata.version(lowerCAmelCase )
    except importlib.metadata.PackageNotFoundError:
        raise importlib.metadata.PackageNotFoundError(
            F"The '{requirement}' distribution was not found and is required by this application. {hint}" )

    # check that the right version is installed if version number or a range was provided
    if want_ver is not None:
        for op, want_ver in wanted.items():
            _compare_versions(lowerCAmelCase ,				lowerCAmelCase ,				lowerCAmelCase ,				lowerCAmelCase ,				lowerCAmelCase ,				lowerCAmelCase )







def     lowercase__						(					lowerCAmelCase				:					str ) ->      Union[str, Any]:






    """simple docstring"""




    UpperCAmelCase									=					'Try: pip install transformers -U or pip install -e \'.[dev]\' if you\'re working with git main'
    return require_version(lowerCAmelCase ,				lowerCAmelCase )





"""simple docstring"""

import argparse
import datetime




def     lowercase__						(					lowerCAmelCase				:					str ) ->      str:






    """simple docstring"""




    UpperCAmelCase									=					{
        '0': 'Sunday',
        '1': 'Monday',
        '2': 'Tuesday',
        '3': 'Wednesday',
        '4': 'Thursday',
        '5': 'Friday',
        '6': 'Saturday',
    }

    UpperCAmelCase									=					{0: 1, 1: 2, 2: 3, 3: 4, 4: 5, 5: 6, 6: 0}

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

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

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

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

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

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

    # Get datetime obj for validation
    UpperCAmelCase									=					datetime.date(int(lowerCAmelCase ) ,				int(lowerCAmelCase ) ,				int(lowerCAmelCase ) )

    # Start math
    if m <= 2:
        UpperCAmelCase									=					y - 1
        UpperCAmelCase									=					m + 12
    # maths var
    UpperCAmelCase									=					int(str(lowerCAmelCase )[:2] )
    UpperCAmelCase									=					int(str(lowerCAmelCase )[2:] )
    UpperCAmelCase									=					int(2.6 * m - 5.39 )
    UpperCAmelCase									=					int(c / 4 )
    UpperCAmelCase									=					int(k / 4 )
    UpperCAmelCase									=					int(d + k )
    UpperCAmelCase									=					int(t + u + v + x )
    UpperCAmelCase									=					int(z - (2 * c) )
    UpperCAmelCase									=					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
    UpperCAmelCase									=					F"Your date {date_input}, is a {days[str(lowerCAmelCase )]}!"
    return response


if __name__ == "__main__":
   import doctest

   doctest.testmod()
   SCREAMING_SNAKE_CASE_    					=						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)'''
   )
   SCREAMING_SNAKE_CASE_    					=						parser.parse_args()
   zeller(args.date_input)



