



from datasets.utils.patching import _PatchedModuleObj, patch_submodule

from . import _test_patching


def 	UpperCAmelCase__      (      ):






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

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






 '''simple docstring'''

 assert _test_patching.open is open

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






 '''simple docstring'''

 a						=		"__test_patch_submodule_missing_mock__"
 with patch_submodule(_test_patching ,					"pandas.read_csv" ,					UpperCAmelCase__					):
  pass


def 	UpperCAmelCase__      (      ):






 '''simple docstring'''

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


def 	UpperCAmelCase__      (      ):






 '''simple docstring'''

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


def 	UpperCAmelCase__      (      ):






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

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






 '''simple docstring'''

 a						=		"__test_patch_submodule_doesnt_exist_mock__"
 with patch_submodule(_test_patching ,					"__module_that_doesn_exist__.__attribute_that_doesn_exist__" ,					UpperCAmelCase__					):
  pass
 with patch_submodule(_test_patching ,					"os.__attribute_that_doesn_exist__" ,					UpperCAmelCase__					):
  pass






def 	UpperCAmelCase__      (      UpperCAmelCase__ :int ,					UpperCAmelCase__ :int					):






 '''simple docstring'''

 if a < 0 or b < 0:
  raise ValueError("the value of both inputs must be positive"					)

 a						=		str(bin(UpperCAmelCase__					)					)[2:]  # remove the leading "0b"
 a						=		str(bin(UpperCAmelCase__					)					)[2:]  # remove the leading "0b"

 a						=		max(len(UpperCAmelCase__					) ,					len(UpperCAmelCase__					)					)

 return "0b" + "".join(
     str(int(char_a == "1" and char_b == "1"					)					)
     for char_a, char_b in zip(a_binary.zfill(UpperCAmelCase__					) ,					b_binary.zfill(UpperCAmelCase__					)					)					)


if __name__ == "__main__":
     import doctest

     doctest.testmod()

