




from datasets.utils.patching import _PatchedModuleObj, patch_submodule

from . import _test_patching


def 						lowerCamelCase__    (		):







	'''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

	snake_case_		    =     "__test_patch_submodule_mock__"
	with patch_submodule(_test_patching     ,	"os.path.join"     ,	_A							):
		# 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 						lowerCamelCase__    (		):







	'''simple docstring'''





	assert _test_patching.open is open

	snake_case_		    =     "__test_patch_submodule_builtin_mock__"
	# _test_patching has "open" in its globals
	assert _test_patching.open is open
	with patch_submodule(_test_patching     ,	"open"     ,	_A							):
		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 						lowerCamelCase__    (		):







	'''simple docstring'''





	snake_case_		    =     "__test_patch_submodule_missing_mock__"
	with patch_submodule(_test_patching     ,	"pandas.read_csv"     ,	_A							):
		pass


def 						lowerCamelCase__    (		):







	'''simple docstring'''





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


def 						lowerCamelCase__    (		):







	'''simple docstring'''





	snake_case_		    =     "__test_patch_submodule_start_and_stop_mock__"
	snake_case_		    =     patch_submodule(_test_patching     ,	"open"     ,	_A							)
	assert _test_patching.open is open
	patch.start()
	assert _test_patching.open is mock
	patch.stop()
	assert _test_patching.open is open


def 						lowerCamelCase__    (		):







	'''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

	snake_case_		    =     "__test_patch_submodule_successive_join__"
	snake_case_		    =     "__test_patch_submodule_successive_dirname__"
	snake_case_		    =     "__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"     ,	_A							):
		with patch_submodule(_test_patching     ,	"os.rename"     ,	_A							):
			with patch_submodule(_test_patching     ,	"os.path.dirname"     ,	_A							):
				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"     ,	_A							):
		with patch_submodule(_test_patching     ,	"os.path.join"     ,	_A							):
			with patch_submodule(_test_patching     ,	"os.path.dirname"     ,	_A							):
				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 						lowerCamelCase__    (		):







	'''simple docstring'''





	snake_case_		    =     "__test_patch_submodule_doesnt_exist_mock__"
	with patch_submodule(_test_patching     ,	"__module_that_doesn_exist__.__attribute_that_doesn_exist__"     ,	_A							):
		pass
	with patch_submodule(_test_patching     ,	"os.__attribute_that_doesn_exist__"     ,	_A							):
		pass






from __future__ import annotations


def 						lowerCamelCase__    (		_A							):







	'''simple docstring'''





	snake_case_		    =     str(_A							)
	return len(_A							) == 9 and set(_A							) == set("123456789"							)


def 						lowerCamelCase__    (		):







	'''simple docstring'''





	for base_num in range(9999     ,	4999     ,	-1							):
		snake_case_		    =     100002 * base_num
		if is_9_pandigital(_A							):
			return candidate

	for base_num in range(333     ,	99     ,	-1							):
		snake_case_		    =     1002003 * base_num
		if is_9_pandigital(_A							):
			return candidate

	return None


if __name__ == "__main__":
		print(f'''{solution() = }''')
