





'''simple docstring'''






from datasets.utils.patching import _PatchedModuleObj, patch_submodule

from . import _test_patching


def 					_a   ():


		"""simple docstring"""

		import os as original_os
		from os import path as original_path
		from os import rename as original_rename
		from os.path import dirname as original_dirname
		from os.path import join as original_join

		assert _test_patching.os is original_os
		assert _test_patching.path is original_path
		assert _test_patching.join is original_join

		assert _test_patching.renamed_os is original_os
		assert _test_patching.renamed_path is original_path
		assert _test_patching.renamed_join is original_join

		_UpperCamelCase       			='''__test_patch_submodule_mock__'''
		with patch_submodule(_test_patching  ,      '''os.path.join'''  ,      __SCREAMING_SNAKE_CASE   ):
				# Every way to access os.path.join must be patched, and the rest must stay untouched

				# check os.path.join
				assert isinstance(_test_patching.os  ,      _PatchedModuleObj   )
				assert isinstance(_test_patching.os.path  ,      _PatchedModuleObj   )
				assert _test_patching.os.path.join is mock

				# check path.join
				assert isinstance(_test_patching.path  ,      _PatchedModuleObj   )
				assert _test_patching.path.join is mock

				# check join
				assert _test_patching.join is mock

				# check that the other attributes are untouched
				assert _test_patching.os.rename is original_rename
				assert _test_patching.path.dirname is original_dirname
				assert _test_patching.os.path.dirname is original_dirname

				# Even renamed modules or objects must be patched

				# check renamed_os.path.join
				assert isinstance(_test_patching.renamed_os  ,      _PatchedModuleObj   )
				assert isinstance(_test_patching.renamed_os.path  ,      _PatchedModuleObj   )
				assert _test_patching.renamed_os.path.join is mock

				# check renamed_path.join
				assert isinstance(_test_patching.renamed_path  ,      _PatchedModuleObj   )
				assert _test_patching.renamed_path.join is mock

				# check renamed_join
				assert _test_patching.renamed_join is mock

				# check that the other attributes are untouched
				assert _test_patching.renamed_os.rename is original_rename
				assert _test_patching.renamed_path.dirname is original_dirname
				assert _test_patching.renamed_os.path.dirname is original_dirname

		# check that everthing is back to normal when the patch is over

		assert _test_patching.os is original_os
		assert _test_patching.path is original_path
		assert _test_patching.join is original_join

		assert _test_patching.renamed_os is original_os
		assert _test_patching.renamed_path is original_path
		assert _test_patching.renamed_join is original_join


def 					_a   ():


		"""simple docstring"""

		assert _test_patching.open is open

		_UpperCamelCase       			='''__test_patch_submodule_builtin_mock__'''
		# _test_patching has "open" in its globals
		assert _test_patching.open is open
		with patch_submodule(_test_patching  ,      '''open'''  ,      __SCREAMING_SNAKE_CASE   ):
				assert _test_patching.open is mock

		# check that everthing is back to normal when the patch is over

		assert _test_patching.open is open


def 					_a   ():


		"""simple docstring"""

		_UpperCamelCase       			='''__test_patch_submodule_missing_mock__'''
		with patch_submodule(_test_patching  ,      '''pandas.read_csv'''  ,      __SCREAMING_SNAKE_CASE   ):
				pass


def 					_a   ():


		"""simple docstring"""

		_UpperCamelCase       			='''__test_patch_submodule_missing_builtin_mock__'''
		# _test_patching doesn't have "len" in its globals
		assert getattr(_test_patching  ,      '''len'''  ,      __SCREAMING_SNAKE_CASE   ) is None
		with patch_submodule(_test_patching  ,      '''len'''  ,      __SCREAMING_SNAKE_CASE   ):
				assert _test_patching.len is mock
		assert _test_patching.len is len


def 					_a   ():


		"""simple docstring"""

		_UpperCamelCase       			='''__test_patch_submodule_start_and_stop_mock__'''
		_UpperCamelCase       			=patch_submodule(_test_patching  ,      '''open'''  ,      __SCREAMING_SNAKE_CASE   )
		assert _test_patching.open is open
		patch.start()
		assert _test_patching.open is mock
		patch.stop()
		assert _test_patching.open is open


def 					_a   ():


		"""simple docstring"""

		from os import rename as original_rename
		from os.path import dirname as original_dirname
		from os.path import join as original_join

		_UpperCamelCase       			='''__test_patch_submodule_successive_join__'''
		_UpperCamelCase       			='''__test_patch_submodule_successive_dirname__'''
		_UpperCamelCase       			='''__test_patch_submodule_successive_rename__'''
		assert _test_patching.os.path.join is original_join
		assert _test_patching.os.path.dirname is original_dirname
		assert _test_patching.os.rename is original_rename

		with patch_submodule(_test_patching  ,      '''os.path.join'''  ,      __SCREAMING_SNAKE_CASE   ):
				with patch_submodule(_test_patching  ,      '''os.rename'''  ,      __SCREAMING_SNAKE_CASE   ):
						with patch_submodule(_test_patching  ,      '''os.path.dirname'''  ,      __SCREAMING_SNAKE_CASE   ):
								assert _test_patching.os.path.join is mock_join
								assert _test_patching.os.path.dirname is mock_dirname
								assert _test_patching.os.rename is mock_rename

				# try another order
		with patch_submodule(_test_patching  ,      '''os.rename'''  ,      __SCREAMING_SNAKE_CASE   ):
				with patch_submodule(_test_patching  ,      '''os.path.join'''  ,      __SCREAMING_SNAKE_CASE   ):
						with patch_submodule(_test_patching  ,      '''os.path.dirname'''  ,      __SCREAMING_SNAKE_CASE   ):
								assert _test_patching.os.path.join is mock_join
								assert _test_patching.os.path.dirname is mock_dirname
								assert _test_patching.os.rename is mock_rename

		assert _test_patching.os.path.join is original_join
		assert _test_patching.os.path.dirname is original_dirname
		assert _test_patching.os.rename is original_rename


def 					_a   ():


		"""simple docstring"""

		_UpperCamelCase       			='''__test_patch_submodule_doesnt_exist_mock__'''
		with patch_submodule(_test_patching  ,      '''__module_that_doesn_exist__.__attribute_that_doesn_exist__'''  ,      __SCREAMING_SNAKE_CASE   ):
				pass
		with patch_submodule(_test_patching  ,      '''os.__attribute_that_doesn_exist__'''  ,      __SCREAMING_SNAKE_CASE   ):
				pass













'''simple docstring'''






import argparse
import datetime


def 					_a   (__SCREAMING_SNAKE_CASE   ):


  """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(__SCREAMING_SNAKE_CASE   ) < 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 < 8500:
    raise ValueError(
        '''Year out of range. There has to be some sort of limit...right?'''   )

  # Get datetime obj for validation
  _UpperCamelCase       			=datetime.date(int(__SCREAMING_SNAKE_CASE   )  ,      int(__SCREAMING_SNAKE_CASE   )  ,      int(__SCREAMING_SNAKE_CASE   )   )

  # Start math
  if m <= 2:
    _UpperCamelCase       			=y - 1
    _UpperCamelCase       			=m + 12
  # maths var
  _UpperCamelCase       			=int(str(__SCREAMING_SNAKE_CASE   )[:2]   )
  _UpperCamelCase       			=int(str(__SCREAMING_SNAKE_CASE   )[2:]   )
  _UpperCamelCase       			=int(2.6 * m - 5.3_9   )
  _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(__SCREAMING_SNAKE_CASE   )]}!'''
  return response


if __name__ == "__main__":
      import doctest

      doctest.testmod()
      __lowerCamelCase						: List[Any]		=   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						: Union[str, Any]		=   parser.parse_args()
      zeller(args.date_input)






