



'''simple docstring'''




import pytest

from datasets.parallel import ParallelBackendConfig, parallel_backend
from datasets.utils.py_utils import map_nested

from .utils import require_dill_gt_0_3_2, require_joblibspark, require_not_windows



def 	a			( lowerCamelCase__    ):  # picklable for multiprocessing
			'''simple docstring'''





			return i + 1



@require_dill_gt_0_3_2
@require_joblibspark
@require_not_windows
def 	a			( ):
			'''simple docstring'''





			with parallel_backend("""spark"""    ):
						assert ParallelBackendConfig.backend_name == "spark"

			A_	:						Dict	=     [1, 2, 3]
			with pytest.raises(lowerCamelCase__    ):
						with parallel_backend("""unsupported backend"""    ):
									map_nested(lowerCamelCase__						,      lowerCamelCase__						,      num_proc=2    )

			with pytest.raises(lowerCamelCase__    ):
						with parallel_backend("""unsupported backend"""    ):
									map_nested(lowerCamelCase__						,      lowerCamelCase__						,      num_proc=-1    )



@require_dill_gt_0_3_2
@require_joblibspark
@require_not_windows
@pytest.mark.parametrize("""num_proc"""						,      [2, -1]    )
def 	a			( lowerCamelCase__    ):
			'''simple docstring'''





			A_	:						Any	=     [1, 2]
			A_	:						Tuple	=     {"""a""": 1, """b""": 2}
			A_	:						Dict	=     {"""a""": [1, 2], """b""": [3, 4]}
			A_	:						int	=     {"""a""": {"""1""": 1}, """b""": 2}
			A_	:						Optional[Any]	=     {"""a""": 1, """b""": 2, """c""": 3, """d""": 4}
			A_	:						Tuple	=     [2, 3]
			A_	:						Tuple	=     {"""a""": 2, """b""": 3}
			A_	:						int	=     {"""a""": [2, 3], """b""": [4, 5]}
			A_	:						Union[str, Any]	=     {"""a""": {"""1""": 2}, """b""": 3}
			A_	:						Optional[Any]	=     {"""a""": 2, """b""": 3, """c""": 4, """d""": 5}

			with parallel_backend("""spark"""    ):
						assert map_nested(lowerCamelCase__						,      lowerCamelCase__						,      num_proc=lowerCamelCase__    ) == expected_map_nested_sa
						assert map_nested(lowerCamelCase__						,      lowerCamelCase__						,      num_proc=lowerCamelCase__    ) == expected_map_nested_sa
						assert map_nested(lowerCamelCase__						,      lowerCamelCase__						,      num_proc=lowerCamelCase__    ) == expected_map_nested_sa
						assert map_nested(lowerCamelCase__						,      lowerCamelCase__						,      num_proc=lowerCamelCase__    ) == expected_map_nested_sa
						assert map_nested(lowerCamelCase__						,      lowerCamelCase__						,      num_proc=lowerCamelCase__    ) == expected_map_nested_sa




'''simple docstring'''




# Copyright 2021 The HuggingFace Team. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

import argparse

from .config import config_command_parser
from .config_args import default_config_file, load_config_from_file  # noqa: F401
from .default import default_command_parser
from .update import update_command_parser



def 	a			( lowerCamelCase__=None    ):
			'''simple docstring'''





			A_	:						int	=     argparse.ArgumentParser(add_help=lowerCamelCase__						,      allow_abbrev=lowerCamelCase__    )
			# The main config parser
			A_	:						int	=     config_command_parser(lowerCamelCase__    )
			# The subparser to add commands to
			A_	:						int	=     config_parser.add_subparsers(title="""subcommands"""						,      dest="""subcommand"""    )

			# Then add other parsers with the parent parser
			default_command_parser(lowerCamelCase__						,      parents=[parent_parser]    )
			update_command_parser(lowerCamelCase__						,      parents=[parent_parser]    )

			return config_parser



def 	a			( ):
			'''simple docstring'''





			A_	:						Optional[int]	=     get_config_parser()
			A_	:						List[str]	=     config_parser.parse_args()

			if not hasattr(lowerCamelCase__						,      """func"""    ):
						config_parser.print_help()
						exit(1    )

			# Run
			args.func(lowerCamelCase__    )


if __name__ == "__main__":
						main()