


"""simple docstring"""
import os

import pytest

from datasets import (
    get_dataset_config_info,
    get_dataset_config_names,
    get_dataset_infos,
    get_dataset_split_names,
    inspect_dataset,
    inspect_metric,
)


__SCREAMING_SNAKE_CASE							:    Dict		=    pytest.mark.integration







@pytest.mark.parametrize("""path"""				, ["""paws""", """csv"""]				)
def 						_a				(      _SCREAMING_SNAKE_CASE				, _SCREAMING_SNAKE_CASE				)    ->				Any:
							inspect_dataset(_SCREAMING_SNAKE_CASE				, _SCREAMING_SNAKE_CASE				)
							snake_case_           =		path + """.py"""
							assert script_name in os.listdir(_SCREAMING_SNAKE_CASE				)
							assert "__pycache__" not in os.listdir(_SCREAMING_SNAKE_CASE				)







@pytest.mark.filterwarnings("""ignore:inspect_metric is deprecated:FutureWarning"""				)
@pytest.mark.filterwarnings("""ignore:metric_module_factory is deprecated:FutureWarning"""				)
@pytest.mark.parametrize("""path"""				, ["""accuracy"""]				)
def 						_a				(      _SCREAMING_SNAKE_CASE				, _SCREAMING_SNAKE_CASE				)    ->				Optional[Any]:
							inspect_metric(_SCREAMING_SNAKE_CASE				, _SCREAMING_SNAKE_CASE				)
							snake_case_           =		path + """.py"""
							assert script_name in os.listdir(_SCREAMING_SNAKE_CASE				)
							assert "__pycache__" not in os.listdir(_SCREAMING_SNAKE_CASE				)







@pytest.mark.parametrize(
    """path, config_name, expected_splits"""				, [
        ("""squad""", """plain_text""", ["""train""", """validation"""]),
        ("""dalle-mini/wit""", """dalle-mini--wit""", ["""train"""]),
        ("""paws""", """labeled_final""", ["""train""", """test""", """validation"""]),
    ]				, )
def 						_a				(      _SCREAMING_SNAKE_CASE				, _SCREAMING_SNAKE_CASE				, _SCREAMING_SNAKE_CASE				)    ->				Optional[Any]:
							snake_case_           =		get_dataset_config_info(_SCREAMING_SNAKE_CASE				, config_name=_SCREAMING_SNAKE_CASE				)
							assert info.config_name == config_name
							assert list(info.splits.keys()				) == expected_splits







@pytest.mark.parametrize(
    """path, config_name, expected_exception"""				, [
        ("""paws""", None, ValueError),
    ]				, )
def 						_a				(      _SCREAMING_SNAKE_CASE				, _SCREAMING_SNAKE_CASE				, _SCREAMING_SNAKE_CASE				)    ->				Dict:
							with pytest.raises(_SCREAMING_SNAKE_CASE				):
														get_dataset_config_info(_SCREAMING_SNAKE_CASE				, config_name=_SCREAMING_SNAKE_CASE				)







@pytest.mark.parametrize(
    """path, expected"""				, [
        ("""squad""", """plain_text"""),
        ("""acronym_identification""", """default"""),
        ("""lhoestq/squad""", """plain_text"""),
        ("""lhoestq/test""", """default"""),
        ("""lhoestq/demo1""", """lhoestq--demo1"""),
        ("""dalle-mini/wit""", """dalle-mini--wit"""),
    ]				, )
def 						_a				(      _SCREAMING_SNAKE_CASE				, _SCREAMING_SNAKE_CASE				)    ->				Dict:
							snake_case_           =		get_dataset_config_names(_SCREAMING_SNAKE_CASE				)
							assert expected in config_names







@pytest.mark.parametrize(
    """path, expected_configs, expected_splits_in_first_config"""				, [
        ("""squad""", ["""plain_text"""], ["""train""", """validation"""]),
        ("""dalle-mini/wit""", ["""dalle-mini--wit"""], ["""train"""]),
        ("""paws""", ["""labeled_final""", """labeled_swap""", """unlabeled_final"""], ["""train""", """test""", """validation"""]),
    ]				, )
def 						_a				(      _SCREAMING_SNAKE_CASE				, _SCREAMING_SNAKE_CASE				, _SCREAMING_SNAKE_CASE				)    ->				Union[str, Any]:
							snake_case_           =		get_dataset_infos(_SCREAMING_SNAKE_CASE				)
							assert list(infos.keys()				) == expected_configs
							snake_case_           =		expected_configs[0]
							assert expected_config in infos
							snake_case_           =		infos[expected_config]
							assert info.config_name == expected_config
							assert list(info.splits.keys()				) == expected_splits_in_first_config







@pytest.mark.parametrize(
    """path, expected_config, expected_splits"""				, [
        ("""squad""", """plain_text""", ["""train""", """validation"""]),
        ("""dalle-mini/wit""", """dalle-mini--wit""", ["""train"""]),
        ("""paws""", """labeled_final""", ["""train""", """test""", """validation"""]),
    ]				, )
def 						_a				(      _SCREAMING_SNAKE_CASE				, _SCREAMING_SNAKE_CASE				, _SCREAMING_SNAKE_CASE				)    ->				Dict:
							snake_case_           =		get_dataset_infos(_SCREAMING_SNAKE_CASE				)
							assert expected_config in infos
							snake_case_           =		infos[expected_config]
							assert info.config_name == expected_config
							assert list(info.splits.keys()				) == expected_splits







@pytest.mark.parametrize(
    """path, config_name, expected_exception"""				, [
        ("""paws""", None, ValueError),
    ]				, )
def 						_a				(      _SCREAMING_SNAKE_CASE				, _SCREAMING_SNAKE_CASE				, _SCREAMING_SNAKE_CASE				)    ->				List[Any]:
							with pytest.raises(_SCREAMING_SNAKE_CASE				):
														get_dataset_split_names(_SCREAMING_SNAKE_CASE				, config_name=_SCREAMING_SNAKE_CASE				)







"""simple docstring"""
from math import factorial







def 						_a				(      _SCREAMING_SNAKE_CASE = 20				)    ->				int:
							snake_case_           =		2 * n  # middle entry of odd rows starting at row 3 is the solution for n = 1,
							# 2, 3,...
							snake_case_           =		n // 2

							return int(factorial(_SCREAMING_SNAKE_CASE				) / (factorial(_SCREAMING_SNAKE_CASE				) * factorial(n - k				))				)


if __name__ == "__main__":
				import sys

				if len(sys.argv) == 1:
								print(solution(20))
				else:
								try:
												__SCREAMING_SNAKE_CASE							:    Optional[int]		=    int(sys.argv[1])
												print(solution(n))
								except ValueError:
												print('Invalid entry - please enter a number.')



