
'''simple docstring'''







# Copyright 2023 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.
from typing import TYPE_CHECKING

# rely on isort to merge the imports
from ...utils import OptionalDependencyNotAvailable, _LazyModule, is_tokenizers_available, is_torch_available


lowercase    :							Tuple      =					{"configuration_mra": ["MRA_PRETRAINED_CONFIG_ARCHIVE_MAP", "MraConfig"]}

try:
					if not is_torch_available():
										raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
					pass
else:
					lowercase    :							Union[str, Any]      =					[
					    "MRA_PRETRAINED_MODEL_ARCHIVE_LIST",
					    "MraForMaskedLM",
					    "MraForMultipleChoice",
					    "MraForQuestionAnswering",
					    "MraForSequenceClassification",
					    "MraForTokenClassification",
					    "MraLayer",
					    "MraModel",
					    "MraPreTrainedModel",
					]


if TYPE_CHECKING:
					from .configuration_mra import MRA_PRETRAINED_CONFIG_ARCHIVE_MAP, MraConfig

					try:
										if not is_torch_available():
															raise OptionalDependencyNotAvailable()
					except OptionalDependencyNotAvailable:
										pass
					else:
										from .modeling_mra import (
										    MRA_PRETRAINED_MODEL_ARCHIVE_LIST,
										    MraForMaskedLM,
										    MraForMultipleChoice,
										    MraForQuestionAnswering,
										    MraForSequenceClassification,
										    MraForTokenClassification,
										    MraLayer,
										    MraModel,
										    MraPreTrainedModel,
										)
else:
					import sys

					lowercase    :							Dict      =					_LazyModule(__name__, globals()["__file__"], _import_structure)








'''simple docstring'''

from unittest import TestCase

from datasets import Sequence, Value
from datasets.arrow_dataset import Dataset


class 					a_     (				snake_case_       ):

    '''simple docstring'''


    def 			snake_case_(		self       )		->   Tuple:
        return [
            {"col_1": 3, "col_2": "a"},
            {"col_1": 2, "col_2": "b"},
            {"col_1": 1, "col_2": "c"},
            {"col_1": 0, "col_2": "d"},
        ]


    def 			snake_case_(		self       )		->   Optional[int]:
        _SCREAMING_SNAKE_CASE									=			{"""col_1""": [3, 2, 1, 0], """col_2""": ["""a""", """b""", """c""", """d"""]}
        return Dataset.from_dict(A       )


    def 			snake_case_(		self       )		->   str:
        _SCREAMING_SNAKE_CASE									=			self._create_example_records()
        _SCREAMING_SNAKE_CASE									=			Dataset.from_list(A       )
        self.assertListEqual(dset.column_names ,		["""col_1""", """col_2"""]       )
        for i, r in enumerate(A       ):
            self.assertDictEqual(A ,		example_records[i]       )


    def 			snake_case_(		self       )		->   str:
        _SCREAMING_SNAKE_CASE									=			self._create_example_records()
        _SCREAMING_SNAKE_CASE									=			Dataset.from_list(A       )
        _SCREAMING_SNAKE_CASE									=			Dataset.from_dict({k: [r[k] for r in example_records] for k in example_records[0]}       )
        self.assertEqual(dset.info ,		dset_from_dict.info       )


    def 			snake_case_(		self       )		->   Union[str, Any]:  # checks what happens with missing columns
        _SCREAMING_SNAKE_CASE									=			[{"""col_1""": 1}, {"""col_2""": """x"""}]
        _SCREAMING_SNAKE_CASE									=			Dataset.from_list(A       )
        self.assertDictEqual(dset[0] ,		{"""col_1""": 1}       )
        self.assertDictEqual(dset[1] ,		{"""col_1""": None}       )  # NB: first record is used for columns


    def 			snake_case_(		self       )		->   Optional[Any]:  # checks if the type can be inferred from the second record
        _SCREAMING_SNAKE_CASE									=			[{"""col_1""": []}, {"""col_1""": [1, 2]}]
        _SCREAMING_SNAKE_CASE									=			Dataset.from_list(A       )
        self.assertEqual(dset.info.features["""col_1"""] ,		Sequence(Value("""int64"""       )       )       )





    def 			snake_case_(		self       )		->   str:
        _SCREAMING_SNAKE_CASE									=			Dataset.from_list([]       )
        self.assertEqual(len(A       ) ,		0       )
        self.assertListEqual(dset.column_names ,		[]       )



