





from datasets.utils.patching import _PatchedModuleObj, patch_submodule

from . import _test_patching


def       UpperCamelCase__(			)->int:
       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__(			)->Dict:
       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__(			)->Optional[int]:
       # pandas.read_csv is not present in _test_patching
       A__		   =		'''__test_patch_submodule_missing_mock__'''
       with patch_submodule(_test_patching					,	'''pandas.read_csv'''					,	UpperCamelCase__    ):
              pass


def       UpperCamelCase__(			)->Tuple:
       # builtin should always be mocked even if they're not in the globals
       # in case they're loaded at one point
       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__(			)->Union[str, Any]:
       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__(			)->Tuple:
       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__(			)->str:
       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












import unittest
from dataclasses import dataclass

import pytest

from accelerate.commands.config.config_args import SageMakerConfig
from accelerate.utils import ComputeEnvironment
from accelerate.utils.launch import _convert_nargs_to_dict




@dataclass
class        SCREAMING_SNAKE_CASE__					(		UpperCamelCase__ ):
 __SCREAMING_SNAKE_CASE							=      ComputeEnvironment.AMAZON_SAGEMAKER
 __SCREAMING_SNAKE_CASE							=      True
 __SCREAMING_SNAKE_CASE							=      '''ml.p3.2xlarge'''
 __SCREAMING_SNAKE_CASE							=      '''accelerate_sagemaker_execution_role'''
 __SCREAMING_SNAKE_CASE							=      '''hf-sm'''
 __SCREAMING_SNAKE_CASE							=      '''us-east-1'''
 __SCREAMING_SNAKE_CASE							=      1
 __SCREAMING_SNAKE_CASE							=      '''accelerate-sagemaker-1'''
 __SCREAMING_SNAKE_CASE							=      '''1.6'''
 __SCREAMING_SNAKE_CASE							=      '''4.4'''
 __SCREAMING_SNAKE_CASE							=      '''train.py'''
 __SCREAMING_SNAKE_CASE							=      [
     '''--model_name_or_path''',
     '''bert''',
     '''--do_train''',
     '''False''',
     '''--epochs''',
     '''3''',
     '''--learning_rate''',
     '''5e-5''',
     '''--max_steps''',
     '''50.5''',
 ]
 __SCREAMING_SNAKE_CASE							=      [
     '''--model_name_or_path''',
     '''bert''',
     '''--do_train''',
     '''--do_test''',
     '''False''',
     '''--do_predict''',
     '''--epochs''',
     '''3''',
     '''--learning_rate''',
     '''5e-5''',
     '''--max_steps''',
     '''50.5''',
 ]




class        SCREAMING_SNAKE_CASE__					(		unittest.TestCase ):



 def 							UpperCamelCase     (				self					):
        # If no defaults are changed, `to_kwargs` returns an empty dict.
        A__		   =		_convert_nargs_to_dict(MockLaunchConfig.success_training_script_args					)
        assert isinstance(converted_args['''model_name_or_path'''],__lowerCamelCase					)
        assert isinstance(converted_args['''do_train'''],__lowerCamelCase					)
        assert isinstance(converted_args['''epochs'''],__lowerCamelCase					)
        assert isinstance(converted_args['''learning_rate'''],__lowerCamelCase					)
        assert isinstance(converted_args['''max_steps'''],__lowerCamelCase					)

        with pytest.raises(__lowerCamelCase					):
               _convert_nargs_to_dict(MockLaunchConfig.fail_training_script_args					)





