





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






def 					_a   (__SCREAMING_SNAKE_CASE  ,      __SCREAMING_SNAKE_CASE   ):


  """simple docstring"""

  _UpperCamelCase       			=[[] for _ in range(__SCREAMING_SNAKE_CASE   )]
  _UpperCamelCase       			=key - 1

  if key <= 0:
    raise ValueError('''Height of grid can\'t be 0 or negative'''   )
  if key == 1 or len(__SCREAMING_SNAKE_CASE   ) <= key:
    return input_string

  for position, character in enumerate(__SCREAMING_SNAKE_CASE   ):
    _UpperCamelCase       			=position % (lowest * 2)  # puts it in bounds
    _UpperCamelCase       			=min(__SCREAMING_SNAKE_CASE  ,      lowest * 2 - num   )  # creates zigzag pattern
    temp_grid[num].append(__SCREAMING_SNAKE_CASE   )
  _UpperCamelCase       			=[''''''.join(__SCREAMING_SNAKE_CASE   ) for row in temp_grid]
  _UpperCamelCase       			=''''''.join(__SCREAMING_SNAKE_CASE   )

  return output_string


def 					_a   (__SCREAMING_SNAKE_CASE  ,      __SCREAMING_SNAKE_CASE   ):


  """simple docstring"""

  _UpperCamelCase       			=[]
  _UpperCamelCase       			=key - 1

  if key <= 0:
    raise ValueError('''Height of grid can\'t be 0 or negative'''   )
  if key == 1:
    return input_string

  _UpperCamelCase       			=[[] for _ in range(__SCREAMING_SNAKE_CASE   )]  # generates template
  for position in range(len(__SCREAMING_SNAKE_CASE   )   ):
    _UpperCamelCase       			=position % (lowest * 2)  # puts it in bounds
    _UpperCamelCase       			=min(__SCREAMING_SNAKE_CASE  ,      lowest * 2 - num   )  # creates zigzag pattern
    temp_grid[num].append('''*'''   )

  _UpperCamelCase       			=0
  for row in temp_grid:  # fills in the characters
    _UpperCamelCase       			=input_string[counter : counter + len(__SCREAMING_SNAKE_CASE   )]
    grid.append(list(__SCREAMING_SNAKE_CASE   )   )
    counter += len(__SCREAMING_SNAKE_CASE   )

  _UpperCamelCase       			=''''''  # reads as zigzag
  for position in range(len(__SCREAMING_SNAKE_CASE   )   ):
    _UpperCamelCase       			=position % (lowest * 2)  # puts it in bounds
    _UpperCamelCase       			=min(__SCREAMING_SNAKE_CASE  ,      lowest * 2 - num   )  # creates zigzag pattern
    output_string += grid[num][0]
    grid[num].pop(0   )
  return output_string


def 					_a   (__SCREAMING_SNAKE_CASE   ):


  """simple docstring"""

  _UpperCamelCase       			={}
  for key_guess in range(1  ,      len(__SCREAMING_SNAKE_CASE   )   ):  # tries every key
    _UpperCamelCase       			=decrypt(__SCREAMING_SNAKE_CASE  ,      __SCREAMING_SNAKE_CASE   )
  return results


if __name__ == "__main__":
      import doctest

      doctest.testmod()






