




from datasets.utils.patching import _PatchedModuleObj, patch_submodule

from . import _test_patching






def 					snake_case(				) ->							int:





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

     lowercase					:   str								= """__test_patch_submodule_mock__"""
     with patch_submodule(_test_patching ,		'''os.path.join''' ,		__lowerCamelCase    ):
          # 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 					snake_case(				) ->							List[Any]:





     '''simple docstring'''


     assert _test_patching.open is open

     lowercase					:   int								= """__test_patch_submodule_builtin_mock__"""
     # _test_patching has "open" in its globals
     assert _test_patching.open is open
     with patch_submodule(_test_patching ,		'''open''' ,		__lowerCamelCase    ):
          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 					snake_case(				) ->							Union[str, Any]:





     '''simple docstring'''


     lowercase					:   Tuple								= """__test_patch_submodule_missing_mock__"""
     with patch_submodule(_test_patching ,		'''pandas.read_csv''' ,		__lowerCamelCase    ):
          pass






def 					snake_case(				) ->							Tuple:





     '''simple docstring'''


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






def 					snake_case(				) ->							Union[str, Any]:





     '''simple docstring'''


     lowercase					:   Union[str, Any]								= """__test_patch_submodule_start_and_stop_mock__"""
     lowercase					:   Tuple								= patch_submodule(_test_patching ,		'''open''' ,		__lowerCamelCase    )
     assert _test_patching.open is open
     patch.start()
     assert _test_patching.open is mock
     patch.stop()
     assert _test_patching.open is open






def 					snake_case(				) ->							Dict:





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

     lowercase					:   Tuple								= """__test_patch_submodule_successive_join__"""
     lowercase					:   List[Any]								= """__test_patch_submodule_successive_dirname__"""
     lowercase					:   Union[str, Any]								= """__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''' ,		__lowerCamelCase    ):
          with patch_submodule(_test_patching ,		'''os.rename''' ,		__lowerCamelCase    ):
               with patch_submodule(_test_patching ,		'''os.path.dirname''' ,		__lowerCamelCase    ):
                    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''' ,		__lowerCamelCase    ):
          with patch_submodule(_test_patching ,		'''os.path.join''' ,		__lowerCamelCase    ):
               with patch_submodule(_test_patching ,		'''os.path.dirname''' ,		__lowerCamelCase    ):
                    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 					snake_case(				) ->							Optional[int]:





     '''simple docstring'''


     lowercase					:   str								= """__test_patch_submodule_doesnt_exist_mock__"""
     with patch_submodule(_test_patching ,		'''__module_that_doesn_exist__.__attribute_that_doesn_exist__''' ,		__lowerCamelCase    ):
          pass
     with patch_submodule(_test_patching ,		'''os.__attribute_that_doesn_exist__''' ,		__lowerCamelCase    ):
          pass







import copy
from dataclasses import dataclass, field
from typing import ClassVar, Dict

from ..features import Audio, Features, Value
from .base import TaskTemplate
@dataclass(frozen=lowercase__   )
class     a    ( lowercase__   ):



      """simple docstring"""


      a  : str							       =	field(default='automatic-speech-recognition'							,       metadata={'include_in_asdict_even_if_is_default': True}   )
      a  : ClassVar[Features]							       =	Features({'audio': Audio()}   )
      a  : ClassVar[Features]							       =	Features({'transcription': Value('string'   )}   )
      a  : str							       =	"audio"
      a  : str							       =	"transcription"
      def 	UpperCAmelCase      (      self					:			Optional[Any]		,      __lowercase					:			Optional[int]					)							->      str:
        if self.audio_column not in features:
          raise ValueError(f"""Column {self.audio_column} is not present in features."""					)
        if not isinstance(features[self.audio_column]		,      __lowercase					):
          raise ValueError(f"""Column {self.audio_column} is not an Audio type."""					)
        __UpperCAmelCase							:	int           =  copy.deepcopy(self					)
        __UpperCAmelCase							:	str           =  self.input_schema.copy()
        __UpperCAmelCase							:	List[str]           =  features[self.audio_column]
        __UpperCAmelCase							:	Optional[Any]           =  input_schema
        return task_template




      @property
      def 	UpperCAmelCase      (      self					:			Union[str, Any]					)							->      Dict[str, str]:
        return {self.audio_column: "audio", self.transcription_column: "transcription"}


