




'''simple docstring'''






import textwrap

import pyarrow as pa
import pytest

from datasets import Features, Value
from datasets.packaged_modules.json.json import Json




@pytest.fixture
def 		a_(			lowerCamelCase   )					->List[Any]:






       '''simple docstring'''




       lowercase	:		Optional[int]    =   tmp_path / """file.jsonl"""
       lowercase	:		Dict    =   textwrap.dedent(
           '''\
        {\"col_1\": -1}
        {\"col_1\": 1, \"col_2\": 2}
        {\"col_1\": 10, \"col_2\": 20}
        '''   )
       with open(_lowerCAmelCase ,					'''w'''   ) as f:
              f.write(_lowerCAmelCase   )
       return str(_lowerCAmelCase   )




@pytest.fixture
def 		a_(			lowerCamelCase   )					->Optional[Any]:






       '''simple docstring'''




       lowercase	:		Union[str, Any]    =   tmp_path / """file_utf16_encoded.jsonl"""
       lowercase	:		Tuple    =   textwrap.dedent(
           '''\
        {\"col_1\": -1}
        {\"col_1\": 1, \"col_2\": 2}
        {\"col_1\": 10, \"col_2\": 20}
        '''   )
       with open(_lowerCAmelCase ,					'''w''' ,					encoding='''utf-16'''   ) as f:
              f.write(_lowerCAmelCase   )
       return str(_lowerCAmelCase   )




@pytest.fixture
def 		a_(			lowerCamelCase   )					->Optional[Any]:






       '''simple docstring'''




       lowercase	:		str    =   tmp_path / """file_with_list_of_dicts.json"""
       lowercase	:		List[Any]    =   textwrap.dedent(
           '''\
        [
            {\"col_1\": -1},
            {\"col_1\": 1, \"col_2\": 2},
            {\"col_1\": 10, \"col_2\": 20}
        ]
        '''   )
       with open(_lowerCAmelCase ,					'''w'''   ) as f:
              f.write(_lowerCAmelCase   )
       return str(_lowerCAmelCase   )




@pytest.fixture
def 		a_(			lowerCamelCase   )					->str:






       '''simple docstring'''




       lowercase	:		Tuple    =   tmp_path / """file_with_list_of_dicts_field.json"""
       lowercase	:		List[str]    =   textwrap.dedent(
           '''\
        {
            \"field1\": 1,
            \"field2\": \"aabb\",
            \"field3\": [
                {\"col_1\": -1},
                {\"col_1\": 1, \"col_2\": 2},
                {\"col_1\": 10, \"col_2\": 20}
            ]
        }
        '''   )
       with open(_lowerCAmelCase ,					'''w'''   ) as f:
              f.write(_lowerCAmelCase   )
       return str(_lowerCAmelCase   )




@pytest.mark.parametrize(
    '''file_fixture, config_kwargs''' ,					[
        ('''jsonl_file''', {}),
        ('''jsonl_file_utf16_encoded''', {'''encoding''': '''utf-16'''}),
        ('''json_file_with_list_of_dicts''', {}),
        ('''json_file_with_list_of_dicts_field''', {'''field''': '''field3'''}),
    ] ,					)
def 		a_(			lowerCamelCase ,					lowerCamelCase ,					lowerCamelCase   )					->int:






       '''simple docstring'''




       lowercase	:		List[str]    =   Json(**_lowerCAmelCase   )
       lowercase	:		List[str]    =   json._generate_tables([[request.getfixturevalue(_lowerCAmelCase   )]]   )
       lowercase	:		List[str]    =   pa.concat_tables([table for _, table in generator]   )
       assert pa_table.to_pydict() == {"col_1": [-1, 1, 10], "col_2": [None, 2, 20]}





@pytest.mark.parametrize(
    '''file_fixture, config_kwargs''' ,					[
        (
            '''jsonl_file''',
            {'''features''': Features({'''col_1''': Value('''int64'''   ), '''col_2''': Value('''int64'''   ), '''missing_col''': Value('''string'''   )}   )},
        ),
        (
            '''json_file_with_list_of_dicts''',
            {'''features''': Features({'''col_1''': Value('''int64'''   ), '''col_2''': Value('''int64'''   ), '''missing_col''': Value('''string'''   )}   )},
        ),
        (
            '''json_file_with_list_of_dicts_field''',
            {
                '''field''': '''field3''',
                '''features''': Features(
                    {'''col_1''': Value('''int64'''   ), '''col_2''': Value('''int64'''   ), '''missing_col''': Value('''string'''   )}   ),
            },
        ),
    ] ,					)
def 		a_(			lowerCamelCase ,					lowerCamelCase ,					lowerCamelCase   )					->Optional[int]:






       '''simple docstring'''




       lowercase	:		Tuple    =   Json(**_lowerCAmelCase   )
       lowercase	:		str    =   json._generate_tables([[request.getfixturevalue(_lowerCAmelCase   )]]   )
       lowercase	:		Dict    =   pa.concat_tables([table for _, table in generator]   )
       assert pa_table.to_pydict() == {"col_1": [-1, 1, 10], "col_2": [None, 2, 20], "missing_col": [None, None, None]}





def   a_					(_lowerCAmelCase  :   str       )->				int:
    snake_case:						List[str]         =   0
    for letter in data:
        snake_case:						int         =   (hash_ << 4) + ord(_lowerCAmelCase       )
        snake_case:						Optional[int]         =   hash_ & 0xf_0_0_0_0_0_0_0
        if x != 0:
            hash_ ^= x >> 24
        hash_ &= ~x
    return hash_


if __name__ == "__main__":
    import doctest

    doctest.testmod()


