
"""simple docstring"""






import contextlib
import csv
import json
import os
import sqlitea
import tarfile
import textwrap
import zipfile

import pyarrow as pa
import pyarrow.parquet as pq
import pytest

import datasets
import datasets.config






@pytest.fixture(scope="""session"""		)
def 						_snake_case       (	)  ->				List[str]:


			'''simple docstring'''





			lowerCAmelCase_    :Union[str, Any]			     =  1_0
			lowerCAmelCase_    :Optional[int]			     =  datasets.Features(
			    {
			        """tokens""": datasets.Sequence(datasets.Value("""string"""		)		),
			        """labels""": datasets.Sequence(datasets.ClassLabel(names=["""negative""", """positive"""]		)		),
			        """answers""": datasets.Sequence(
			            {
			                """text""": datasets.Value("""string"""		),
			                """answer_start""": datasets.Value("""int32"""		),
			            }		),
			        """id""": datasets.Value("""int64"""		),
			    }		)
			lowerCAmelCase_    :int			     =  datasets.Dataset.from_dict(
			    {
			        """tokens""": [["""foo"""] * 5] * n,
			        """labels""": [[1] * 5] * n,
			        """answers""": [{"""answer_start""": [9_7], """text""": ["""1976"""]}] * 1_0,
			        """id""": list(range(lowercase__		)		),
			    }      ,     features=lowercase__      ,     )
			return dataset






@pytest.fixture(scope="""session"""		)
def 						_snake_case       (	lowercase__		:  Tuple      ,     lowercase__		:  int		)  ->				List[str]:


			'''simple docstring'''





			lowerCAmelCase_    :List[str]			     =  str(tmp_path_factory.mktemp("""data"""		) / """file.arrow"""		)
			dataset.map(cache_file_name=lowercase__		)
			return filename


# FILE_CONTENT + files


__UpperCAmelCase       =  '\\n    Text data.\n    Second line of data.'






@pytest.fixture(scope="""session"""		)
def 						_snake_case       (	lowercase__		:  str		)  ->				str:


			'''simple docstring'''





			lowerCAmelCase_    :Union[str, Any]			     =  tmp_path_factory.mktemp("""data"""		) / """file.txt"""
			lowerCAmelCase_    :List[Any]			     =  FILE_CONTENT
			with open(lowercase__      ,     """w"""		) as f:
						f.write(lowercase__		)
			return filename






@pytest.fixture(scope="""session"""		)
def 						_snake_case       (	lowercase__		:  List[Any]		)  ->				Tuple:


			'''simple docstring'''





			import bza

			lowerCAmelCase_    :Optional[int]			     =  tmp_path_factory.mktemp("""data"""		) / """file.txt.bz2"""
			lowerCAmelCase_    :Tuple			     =  bytes(lowercase__      ,     """utf-8"""		)
			with bza.open(lowercase__      ,     """wb"""		) as f:
						f.write(lowercase__		)
			return path






@pytest.fixture(scope="""session"""		)
def 						_snake_case       (	lowercase__		:  Optional[Any]		)  ->				Dict:


			'''simple docstring'''





			import gzip

			lowerCAmelCase_    :int			     =  str(tmp_path_factory.mktemp("""data"""		) / """file.txt.gz"""		)
			lowerCAmelCase_    :Tuple			     =  bytes(lowercase__      ,     """utf-8"""		)
			with gzip.open(lowercase__      ,     """wb"""		) as f:
						f.write(lowercase__		)
			return path






@pytest.fixture(scope="""session"""		)
def 						_snake_case       (	lowercase__		:  Dict		)  ->				Optional[int]:


			'''simple docstring'''





			if datasets.config.LZ4_AVAILABLE:
						import lza.frame

						lowerCAmelCase_    :List[Any]			     =  tmp_path_factory.mktemp("""data"""		) / """file.txt.lz4"""
						lowerCAmelCase_    :int			     =  bytes(lowercase__      ,     """utf-8"""		)
						with lza.frame.open(lowercase__      ,     """wb"""		) as f:
									f.write(lowercase__		)
						return path






@pytest.fixture(scope="""session"""		)
def 						_snake_case       (	lowercase__		:  Dict      ,     lowercase__		:  Optional[int]		)  ->				Any:


			'''simple docstring'''





			if datasets.config.PY7ZR_AVAILABLE:
						import pyazr

						lowerCAmelCase_    :Dict			     =  tmp_path_factory.mktemp("""data"""		) / """file.txt.7z"""
						with pyazr.SevenZipFile(lowercase__      ,     """w"""		) as archive:
									archive.write(lowercase__      ,     arcname=os.path.basename(lowercase__		)		)
						return path






@pytest.fixture(scope="""session"""		)
def 						_snake_case       (	lowercase__		:  Optional[Any]      ,     lowercase__		:  Union[str, Any]		)  ->				Union[str, Any]:


			'''simple docstring'''





			import tarfile

			lowerCAmelCase_    :Any			     =  tmp_path_factory.mktemp("""data"""		) / """file.txt.tar"""
			with tarfile.TarFile(lowercase__      ,     """w"""		) as f:
						f.add(lowercase__      ,     arcname=os.path.basename(lowercase__		)		)
			return path






@pytest.fixture(scope="""session"""		)
def 						_snake_case       (	lowercase__		:  Tuple		)  ->				str:


			'''simple docstring'''





			import lzma

			lowerCAmelCase_    :Optional[Any]			     =  tmp_path_factory.mktemp("""data"""		) / """file.txt.xz"""
			lowerCAmelCase_    :Optional[Any]			     =  bytes(lowercase__      ,     """utf-8"""		)
			with lzma.open(lowercase__      ,     """wb"""		) as f:
						f.write(lowercase__		)
			return path






@pytest.fixture(scope="""session"""		)
def 						_snake_case       (	lowercase__		:  Union[str, Any]      ,     lowercase__		:  List[Any]		)  ->				Any:


			'''simple docstring'''





			import zipfile

			lowerCAmelCase_    :Dict			     =  tmp_path_factory.mktemp("""data"""		) / """file.txt.zip"""
			with zipfile.ZipFile(lowercase__      ,     """w"""		) as f:
						f.write(lowercase__      ,     arcname=os.path.basename(lowercase__		)		)
			return path






@pytest.fixture(scope="""session"""		)
def 						_snake_case       (	lowercase__		:  int		)  ->				Tuple:


			'''simple docstring'''





			if datasets.config.ZSTANDARD_AVAILABLE:
						import zstandard as zstd

						lowerCAmelCase_    :Union[str, Any]			     =  tmp_path_factory.mktemp("""data"""		) / """file.txt.zst"""
						lowerCAmelCase_    :Any			     =  bytes(lowercase__      ,     """utf-8"""		)
						with zstd.open(lowercase__      ,     """wb"""		) as f:
									f.write(lowercase__		)
						return path






@pytest.fixture(scope="""session"""		)
def 						_snake_case       (	lowercase__		:  List[str]		)  ->				str:


			'''simple docstring'''





			lowerCAmelCase_    :str			     =  tmp_path_factory.mktemp("""data"""		) / """file.xml"""
			lowerCAmelCase_    :Any			     =  textwrap.dedent(
			    """\
    <?xml version=\"1.0\" encoding=\"UTF-8\" ?>
    <tmx version=\"1.4\">
      <header segtype=\"sentence\" srclang=\"ca\" />
      <body>
        <tu>
          <tuv xml:lang=\"ca\"><seg>Contingut 1</seg></tuv>
          <tuv xml:lang=\"en\"><seg>Content 1</seg></tuv>
        </tu>
        <tu>
          <tuv xml:lang=\"ca\"><seg>Contingut 2</seg></tuv>
          <tuv xml:lang=\"en\"><seg>Content 2</seg></tuv>
        </tu>
        <tu>
          <tuv xml:lang=\"ca\"><seg>Contingut 3</seg></tuv>
          <tuv xml:lang=\"en\"><seg>Content 3</seg></tuv>
        </tu>
        <tu>
          <tuv xml:lang=\"ca\"><seg>Contingut 4</seg></tuv>
          <tuv xml:lang=\"en\"><seg>Content 4</seg></tuv>
        </tu>
        <tu>
          <tuv xml:lang=\"ca\"><seg>Contingut 5</seg></tuv>
          <tuv xml:lang=\"en\"><seg>Content 5</seg></tuv>
        </tu>
      </body>
    </tmx>"""		)
			with open(lowercase__      ,     """w"""		) as f:
						f.write(lowercase__		)
			return filename


__UpperCAmelCase       =  [
    {'col_1': '0', 'col_2': 0, 'col_3': 0.0},
    {'col_1': '1', 'col_2': 1, 'col_3': 1.0},
    {'col_1': '2', 'col_2': 2, 'col_3': 2.0},
    {'col_1': '3', 'col_2': 3, 'col_3': 3.0},
]
__UpperCAmelCase       =  [
    {'col_1': '4', 'col_2': 4, 'col_3': 4.0},
    {'col_1': '5', 'col_2': 5, 'col_3': 5.0},
]
__UpperCAmelCase       =  {
    'col_1': ['0', '1', '2', '3'],
    'col_2': [0, 1, 2, 3],
    'col_3': [0.0, 1.0, 2.0, 3.0],
}

__UpperCAmelCase       =  [
    {'col_3': 0.0, 'col_1': '0', 'col_2': 0},
    {'col_3': 1.0, 'col_1': '1', 'col_2': 1},
]

__UpperCAmelCase       =  [
    {'col_1': 's0', 'col_2': 0, 'col_3': 0.0},
    {'col_1': 's1', 'col_2': 1, 'col_3': 1.0},
    {'col_1': 's2', 'col_2': 2, 'col_3': 2.0},
    {'col_1': 's3', 'col_2': 3, 'col_3': 3.0},
]






@pytest.fixture(scope="""session"""		)
def 						_snake_case       (	)  ->				Union[str, Any]:


			'''simple docstring'''





			return DATA_DICT_OF_LISTS






@pytest.fixture(scope="""session"""		)
def 						_snake_case       (	lowercase__		:  int		)  ->				Any:


			'''simple docstring'''





			lowerCAmelCase_    :Tuple			     =  datasets.Dataset.from_dict(lowercase__		)
			lowerCAmelCase_    :List[Any]			     =  str(tmp_path_factory.mktemp("""data"""		) / """dataset.arrow"""		)
			dataset.map(cache_file_name=lowercase__		)
			return path






@pytest.fixture(scope="""session"""		)
def 						_snake_case       (	lowercase__		:  int		)  ->				str:


			'''simple docstring'''





			lowerCAmelCase_    :List[Any]			     =  str(tmp_path_factory.mktemp("""data"""		) / """dataset.sqlite"""		)
			with contextlib.closing(sqlitea.connect(lowercase__		)		) as con:
						lowerCAmelCase_    :Union[str, Any]			     =  con.cursor()
						cur.execute("""CREATE TABLE dataset(col_1 text, col_2 int, col_3 real)"""		)
						for item in DATA:
									cur.execute("""INSERT INTO dataset(col_1, col_2, col_3) VALUES (?, ?, ?)"""      ,     tuple(item.values()		)		)
						con.commit()
			return path






@pytest.fixture(scope="""session"""		)
def 						_snake_case       (	lowercase__		:  Tuple		)  ->				int:


			'''simple docstring'''





			lowerCAmelCase_    :List[str]			     =  str(tmp_path_factory.mktemp("""data"""		) / """dataset.csv"""		)
			with open(lowercase__      ,     """w"""      ,     newline=""""""		) as f:
						lowerCAmelCase_    :Optional[int]			     =  csv.DictWriter(lowercase__      ,     fieldnames=["""col_1""", """col_2""", """col_3"""]		)
						writer.writeheader()
						for item in DATA:
									writer.writerow(lowercase__		)
			return path






@pytest.fixture(scope="""session"""		)
def 						_snake_case       (	lowercase__		:  Dict		)  ->				Any:


			'''simple docstring'''





			lowerCAmelCase_    :str			     =  str(tmp_path_factory.mktemp("""data"""		) / """dataset2.csv"""		)
			with open(lowercase__      ,     """w"""      ,     newline=""""""		) as f:
						lowerCAmelCase_    :Dict			     =  csv.DictWriter(lowercase__      ,     fieldnames=["""col_1""", """col_2""", """col_3"""]		)
						writer.writeheader()
						for item in DATA:
									writer.writerow(lowercase__		)
			return path






@pytest.fixture(scope="""session"""		)
def 						_snake_case       (	lowercase__		:  str      ,     lowercase__		:  Dict		)  ->				Union[str, Any]:


			'''simple docstring'''





			import bza

			lowerCAmelCase_    :int			     =  tmp_path_factory.mktemp("""data"""		) / """dataset.csv.bz2"""
			with open(lowercase__      ,     """rb"""		) as f:
						lowerCAmelCase_    :Union[str, Any]			     =  f.read()
			# data = bytes(FILE_CONTENT, "utf-8")
			with bza.open(lowercase__      ,     """wb"""		) as f:
						f.write(lowercase__		)
			return path






@pytest.fixture(scope="""session"""		)
def 						_snake_case       (	lowercase__		:  str      ,     lowercase__		:  Optional[Any]      ,     lowercase__		:  Any		)  ->				List[str]:


			'''simple docstring'''





			lowerCAmelCase_    :str			     =  tmp_path_factory.mktemp("""data"""		) / """dataset.csv.zip"""
			with zipfile.ZipFile(lowercase__      ,     """w"""		) as f:
						f.write(lowercase__      ,     arcname=os.path.basename(lowercase__		)		)
						f.write(lowercase__      ,     arcname=os.path.basename(lowercase__		)		)
			return path






@pytest.fixture(scope="""session"""		)
def 						_snake_case       (	lowercase__		:  List[str]      ,     lowercase__		:  List[str]      ,     lowercase__		:  Union[str, Any]		)  ->				Optional[Any]:


			'''simple docstring'''





			lowerCAmelCase_    :str			     =  tmp_path_factory.mktemp("""data"""		) / """dataset.csv.zip"""
			with zipfile.ZipFile(lowercase__      ,     """w"""		) as f:
						f.write(lowercase__      ,     arcname=os.path.basename(csv_path.replace(""".csv"""      ,     """.CSV"""		)		)		)
						f.write(lowercase__      ,     arcname=os.path.basename(csva_path.replace(""".csv"""      ,     """.CSV"""		)		)		)
			return path






@pytest.fixture(scope="""session"""		)
def 						_snake_case       (	lowercase__		:  Optional[int]      ,     lowercase__		:  Tuple      ,     lowercase__		:  str		)  ->				Any:


			'''simple docstring'''





			lowerCAmelCase_    :int			     =  tmp_path_factory.mktemp("""data"""		) / """dataset_with_dir.csv.zip"""
			with zipfile.ZipFile(lowercase__      ,     """w"""		) as f:
						f.write(lowercase__      ,     arcname=os.path.join("""main_dir"""      ,     os.path.basename(lowercase__		)		)		)
						f.write(lowercase__      ,     arcname=os.path.join("""main_dir"""      ,     os.path.basename(lowercase__		)		)		)
			return path






@pytest.fixture(scope="""session"""		)
def 						_snake_case       (	lowercase__		:  Dict		)  ->				Optional[Any]:


			'''simple docstring'''





			lowerCAmelCase_    :Optional[int]			     =  str(tmp_path_factory.mktemp("""data"""		) / """dataset.parquet"""		)
			lowerCAmelCase_    :Optional[Any]			     =  pa.schema(
			    {
			        """col_1""": pa.string(),
			        """col_2""": pa.intaa(),
			        """col_3""": pa.floataa(),
			    }		)
			with open(lowercase__      ,     """wb"""		) as f:
						lowerCAmelCase_    :Optional[int]			     =  pq.ParquetWriter(lowercase__      ,     schema=lowercase__		)
						lowerCAmelCase_    :List[str]			     =  pa.Table.from_pydict({k: [DATA[i][k] for i in range(len(lowercase__		)		)] for k in DATA[0]}      ,     schema=lowercase__		)
						writer.write_table(lowercase__		)
						writer.close()
			return path






@pytest.fixture(scope="""session"""		)
def 						_snake_case       (	lowercase__		:  Tuple		)  ->				List[Any]:


			'''simple docstring'''





			lowerCAmelCase_    :Dict			     =  str(tmp_path_factory.mktemp("""data"""		) / """dataset.json"""		)
			lowerCAmelCase_    :Union[str, Any]			     =  {"""data""": DATA}
			with open(lowercase__      ,     """w"""		) as f:
						json.dump(lowercase__      ,     lowercase__		)
			return path






@pytest.fixture(scope="""session"""		)
def 						_snake_case       (	lowercase__		:  str		)  ->				List[Any]:


			'''simple docstring'''





			lowerCAmelCase_    :List[str]			     =  str(tmp_path_factory.mktemp("""data"""		) / """dataset.json"""		)
			lowerCAmelCase_    :Optional[Any]			     =  {"""data""": DATA_DICT_OF_LISTS}
			with open(lowercase__      ,     """w"""		) as f:
						json.dump(lowercase__      ,     lowercase__		)
			return path






@pytest.fixture(scope="""session"""		)
def 						_snake_case       (	lowercase__		:  Tuple		)  ->				List[Any]:


			'''simple docstring'''





			lowerCAmelCase_    :Optional[int]			     =  str(tmp_path_factory.mktemp("""data"""		) / """dataset.jsonl"""		)
			with open(lowercase__      ,     """w"""		) as f:
						for item in DATA:
									f.write(json.dumps(lowercase__		) + """\n"""		)
			return path






@pytest.fixture(scope="""session"""		)
def 						_snake_case       (	lowercase__		:  Any		)  ->				List[str]:


			'''simple docstring'''





			lowerCAmelCase_    :List[Any]			     =  str(tmp_path_factory.mktemp("""data"""		) / """dataset2.jsonl"""		)
			with open(lowercase__      ,     """w"""		) as f:
						for item in DATA:
									f.write(json.dumps(lowercase__		) + """\n"""		)
			return path






@pytest.fixture(scope="""session"""		)
def 						_snake_case       (	lowercase__		:  Optional[int]		)  ->				List[Any]:


			'''simple docstring'''





			lowerCAmelCase_    :str			     =  str(tmp_path_factory.mktemp("""data"""		) / """dataset_312.jsonl"""		)
			with open(lowercase__      ,     """w"""		) as f:
						for item in DATA_312:
									f.write(json.dumps(lowercase__		) + """\n"""		)
			return path






@pytest.fixture(scope="""session"""		)
def 						_snake_case       (	lowercase__		:  Any		)  ->				Optional[Any]:


			'''simple docstring'''





			lowerCAmelCase_    :Tuple			     =  str(tmp_path_factory.mktemp("""data"""		) / """dataset-str.jsonl"""		)
			with open(lowercase__      ,     """w"""		) as f:
						for item in DATA_STR:
									f.write(json.dumps(lowercase__		) + """\n"""		)
			return path






@pytest.fixture(scope="""session"""		)
def 						_snake_case       (	lowercase__		:  int      ,     lowercase__		:  Dict		)  ->				Optional[int]:


			'''simple docstring'''





			import gzip

			lowerCAmelCase_    :Optional[Any]			     =  str(tmp_path_factory.mktemp("""data"""		) / """dataset.txt.gz"""		)
			with open(lowercase__      ,     """rb"""		) as orig_file:
						with gzip.open(lowercase__      ,     """wb"""		) as zipped_file:
									zipped_file.writelines(lowercase__		)
			return path






@pytest.fixture(scope="""session"""		)
def 						_snake_case       (	lowercase__		:  List[str]      ,     lowercase__		:  List[Any]		)  ->				Any:


			'''simple docstring'''





			import gzip

			lowerCAmelCase_    :Optional[Any]			     =  str(tmp_path_factory.mktemp("""data"""		) / """dataset.jsonl.gz"""		)
			with open(lowercase__      ,     """rb"""		) as orig_file:
						with gzip.open(lowercase__      ,     """wb"""		) as zipped_file:
									zipped_file.writelines(lowercase__		)
			return path






@pytest.fixture(scope="""session"""		)
def 						_snake_case       (	lowercase__		:  List[str]      ,     lowercase__		:  Optional[int]      ,     lowercase__		:  List[Any]		)  ->				Dict:


			'''simple docstring'''





			lowerCAmelCase_    :Optional[int]			     =  tmp_path_factory.mktemp("""data"""		) / """dataset.jsonl.zip"""
			with zipfile.ZipFile(lowercase__      ,     """w"""		) as f:
						f.write(lowercase__      ,     arcname=os.path.basename(lowercase__		)		)
						f.write(lowercase__      ,     arcname=os.path.basename(lowercase__		)		)
			return path






@pytest.fixture(scope="""session"""		)
def 						_snake_case       (	lowercase__		:  Any      ,     lowercase__		:  str      ,     lowercase__		:  Optional[Any]      ,     lowercase__		:  Union[str, Any]		)  ->				Tuple:


			'''simple docstring'''





			lowerCAmelCase_    :Optional[int]			     =  tmp_path_factory.mktemp("""data"""		) / """dataset_nested.jsonl.zip"""
			with zipfile.ZipFile(lowercase__      ,     """w"""		) as f:
						f.write(lowercase__      ,     arcname=os.path.join("""nested"""      ,     os.path.basename(lowercase__		)		)		)
			return path






@pytest.fixture(scope="""session"""		)
def 						_snake_case       (	lowercase__		:  Any      ,     lowercase__		:  List[Any]      ,     lowercase__		:  List[str]		)  ->				int:


			'''simple docstring'''





			lowerCAmelCase_    :str			     =  tmp_path_factory.mktemp("""data"""		) / """dataset_with_dir.jsonl.zip"""
			with zipfile.ZipFile(lowercase__      ,     """w"""		) as f:
						f.write(lowercase__      ,     arcname=os.path.join("""main_dir"""      ,     os.path.basename(lowercase__		)		)		)
						f.write(lowercase__      ,     arcname=os.path.join("""main_dir"""      ,     os.path.basename(lowercase__		)		)		)
			return path






@pytest.fixture(scope="""session"""		)
def 						_snake_case       (	lowercase__		:  Any      ,     lowercase__		:  str      ,     lowercase__		:  List[str]		)  ->				List[Any]:


			'''simple docstring'''





			lowerCAmelCase_    :Any			     =  tmp_path_factory.mktemp("""data"""		) / """dataset.jsonl.tar"""
			with tarfile.TarFile(lowercase__      ,     """w"""		) as f:
						f.add(lowercase__      ,     arcname=os.path.basename(lowercase__		)		)
						f.add(lowercase__      ,     arcname=os.path.basename(lowercase__		)		)
			return path






@pytest.fixture(scope="""session"""		)
def 						_snake_case       (	lowercase__		:  Dict      ,     lowercase__		:  str      ,     lowercase__		:  List[str]      ,     lowercase__		:  int		)  ->				Dict:


			'''simple docstring'''





			lowerCAmelCase_    :int			     =  tmp_path_factory.mktemp("""data"""		) / """dataset_nested.jsonl.tar"""
			with tarfile.TarFile(lowercase__      ,     """w"""		) as f:
						f.add(lowercase__      ,     arcname=os.path.join("""nested"""      ,     os.path.basename(lowercase__		)		)		)
			return path






@pytest.fixture(scope="""session"""		)
def 						_snake_case       (	lowercase__		:  List[str]		)  ->				Tuple:


			'''simple docstring'''





			lowerCAmelCase_    :str			     =  ["""0""", """1""", """2""", """3"""]
			lowerCAmelCase_    :List[Any]			     =  str(tmp_path_factory.mktemp("""data"""		) / """dataset.txt"""		)
			with open(lowercase__      ,     """w"""		) as f:
						for item in data:
									f.write(item + """\n"""		)
			return path






@pytest.fixture(scope="""session"""		)
def 						_snake_case       (	lowercase__		:  List[str]		)  ->				Dict:


			'''simple docstring'''





			lowerCAmelCase_    :int			     =  ["""0""", """1""", """2""", """3"""]
			lowerCAmelCase_    :List[str]			     =  str(tmp_path_factory.mktemp("""data"""		) / """dataset2.txt"""		)
			with open(lowercase__      ,     """w"""		) as f:
						for item in data:
									f.write(item + """\n"""		)
			return path






@pytest.fixture(scope="""session"""		)
def 						_snake_case       (	lowercase__		:  List[Any]		)  ->				List[str]:


			'''simple docstring'''





			lowerCAmelCase_    :Dict			     =  ["""0""", """1""", """2""", """3"""]
			lowerCAmelCase_    :Tuple			     =  tmp_path_factory.mktemp("""data"""		) / """dataset.abc"""
			with open(lowercase__      ,     """w"""		) as f:
						for item in data:
									f.write(item + """\n"""		)
			return path






@pytest.fixture(scope="""session"""		)
def 						_snake_case       (	lowercase__		:  List[str]      ,     lowercase__		:  str      ,     lowercase__		:  int		)  ->				str:


			'''simple docstring'''





			lowerCAmelCase_    :Any			     =  tmp_path_factory.mktemp("""data"""		) / """dataset.text.zip"""
			with zipfile.ZipFile(lowercase__      ,     """w"""		) as f:
						f.write(lowercase__      ,     arcname=os.path.basename(lowercase__		)		)
						f.write(lowercase__      ,     arcname=os.path.basename(lowercase__		)		)
			return path






@pytest.fixture(scope="""session"""		)
def 						_snake_case       (	lowercase__		:  Tuple      ,     lowercase__		:  Tuple      ,     lowercase__		:  List[str]		)  ->				List[str]:


			'''simple docstring'''





			lowerCAmelCase_    :str			     =  tmp_path_factory.mktemp("""data"""		) / """dataset_with_dir.text.zip"""
			with zipfile.ZipFile(lowercase__      ,     """w"""		) as f:
						f.write(lowercase__      ,     arcname=os.path.join("""main_dir"""      ,     os.path.basename(lowercase__		)		)		)
						f.write(lowercase__      ,     arcname=os.path.join("""main_dir"""      ,     os.path.basename(lowercase__		)		)		)
			return path






@pytest.fixture(scope="""session"""		)
def 						_snake_case       (	lowercase__		:  Optional[int]      ,     lowercase__		:  Any      ,     lowercase__		:  Tuple		)  ->				List[Any]:


			'''simple docstring'''





			lowerCAmelCase_    :Tuple			     =  tmp_path_factory.mktemp("""data"""		) / """dataset.ext.zip"""
			with zipfile.ZipFile(lowercase__      ,     """w"""		) as f:
						f.write(lowercase__      ,     arcname=os.path.basename("""unsupported.ext"""		)		)
						f.write(lowercase__      ,     arcname=os.path.basename("""unsupported_2.ext"""		)		)
			return path






@pytest.fixture(scope="""session"""		)
def 						_snake_case       (	lowercase__		:  Tuple		)  ->				Dict:


			'''simple docstring'''





			lowerCAmelCase_    :Optional[Any]			     =  """\n""".join(["""First""", """Second\u2029with Unicode new line""", """Third"""]		)
			lowerCAmelCase_    :str			     =  str(tmp_path_factory.mktemp("""data"""		) / """dataset_with_unicode_new_lines.txt"""		)
			with open(lowercase__      ,     """w"""      ,     encoding="""utf-8"""		) as f:
						f.write(lowercase__		)
			return path






@pytest.fixture(scope="""session"""		)
def 						_snake_case       (	)  ->				int:


			'''simple docstring'''





			return os.path.join("""tests"""      ,     """features"""      ,     """data"""      ,     """test_image_rgb.jpg"""		)






@pytest.fixture(scope="""session"""		)
def 						_snake_case       (	)  ->				Tuple:


			'''simple docstring'''





			return os.path.join("""tests"""      ,     """features"""      ,     """data"""      ,     """test_audio_44100.wav"""		)






@pytest.fixture(scope="""session"""		)
def 						_snake_case       (	lowercase__		:  Any      ,     lowercase__		:  Tuple		)  ->				Optional[int]:


			'''simple docstring'''





			lowerCAmelCase_    :Tuple			     =  tmp_path_factory.mktemp("""data"""		) / """dataset.img.zip"""
			with zipfile.ZipFile(lowercase__      ,     """w"""		) as f:
						f.write(lowercase__      ,     arcname=os.path.basename(lowercase__		)		)
						f.write(lowercase__      ,     arcname=os.path.basename(lowercase__		).replace(""".jpg"""      ,     """2.jpg"""		)		)
			return path






@pytest.fixture(scope="""session"""		)
def 						_snake_case       (	lowercase__		:  Tuple		)  ->				Dict:


			'''simple docstring'''





			lowerCAmelCase_    :int			     =  tmp_path_factory.mktemp("""data_dir"""		)

			(data_dir / "subdir").mkdir()
			with open(data_dir / """subdir""" / """train.txt"""      ,     """w"""		) as f:
						f.write("""foo\n""" * 1_0		)
			with open(data_dir / """subdir""" / """test.txt"""      ,     """w"""		) as f:
						f.write("""bar\n""" * 1_0		)
			# hidden file
			with open(data_dir / """subdir""" / """.test.txt"""      ,     """w"""		) as f:
						f.write("""bar\n""" * 1_0		)

			# hidden directory
			(data_dir / ".subdir").mkdir()
			with open(data_dir / """.subdir""" / """train.txt"""      ,     """w"""		) as f:
						f.write("""foo\n""" * 1_0		)
			with open(data_dir / """.subdir""" / """test.txt"""      ,     """w"""		) as f:
						f.write("""bar\n""" * 1_0		)

			return data_dir








"""simple docstring"""





import inspect
import unittest

import numpy as np

from transformers import ViTConfig, is_flax_available
from transformers.testing_utils import require_flax, slow

from ...test_configuration_common import ConfigTester
from ...test_modeling_flax_common import FlaxModelTesterMixin, floats_tensor


if is_flax_available():
    import jax

    from transformers.models.vit.modeling_flax_vit import FlaxViTForImageClassification, FlaxViTModel


class A_	(unittest.TestCase      ):




  '''simple docstring'''







  def __init__(		self				,   lowercase_				,   lowercase_=13				,   lowercase_=30				,   lowercase_=2				,   lowercase_=3				,   lowercase_=True				,   lowercase_=True				,   lowercase_=32				,   lowercase_=5				,   lowercase_=4				,   lowercase_=37				,   lowercase_="gelu"				,   lowercase_=0.1				,   lowercase_=0.1				,   lowercase_=10				,   lowercase_=0.02				,   ):

     """simple docstring"""
     UpperCAmelCase_					:					Tuple			     =    parent
     UpperCAmelCase_					:					List[str]			     =    batch_size
     UpperCAmelCase_					:					Union[str, Any]			     =    image_size
     UpperCAmelCase_					:					List[str]			     =    patch_size
     UpperCAmelCase_					:					Union[str, Any]			     =    num_channels
     UpperCAmelCase_					:					Optional[int]			     =    is_training
     UpperCAmelCase_					:					Dict			     =    use_labels
     UpperCAmelCase_					:					Any			     =    hidden_size
     UpperCAmelCase_					:					Optional[Any]			     =    num_hidden_layers
     UpperCAmelCase_					:					Optional[Any]			     =    num_attention_heads
     UpperCAmelCase_					:					Dict			     =    intermediate_size
     UpperCAmelCase_					:					Optional[Any]			     =    hidden_act
     UpperCAmelCase_					:					Optional[Any]			     =    hidden_dropout_prob
     UpperCAmelCase_					:					Tuple			     =    attention_probs_dropout_prob
     UpperCAmelCase_					:					Dict			     =    type_sequence_label_size
     UpperCAmelCase_					:					Optional[Any]			     =    initializer_range

     # in ViT, the seq length equals the number of patches + 1 (we add 1 for the [CLS] token)
     UpperCAmelCase_					:					Any			     =    (image_size // patch_size) ** 2
     UpperCAmelCase_					:					List[str]			     =    num_patches + 1







  def        UpperCamelCase__					(		self  ):

     """simple docstring"""
     UpperCAmelCase_					:					Optional[Any]			     =    floats_tensor([self.batch_size, self.num_channels, self.image_size, self.image_size]  )

     UpperCAmelCase_					:					Dict			     =    ViTConfig(
         image_size=self.image_size				,   patch_size=self.patch_size				,   num_channels=self.num_channels				,   hidden_size=self.hidden_size				,   num_hidden_layers=self.num_hidden_layers				,   num_attention_heads=self.num_attention_heads				,   intermediate_size=self.intermediate_size				,   hidden_act=self.hidden_act				,   hidden_dropout_prob=self.hidden_dropout_prob				,   attention_probs_dropout_prob=self.attention_probs_dropout_prob				,   is_decoder=lowercase_				,   initializer_range=self.initializer_range				,   )

     return config, pixel_values







  def        UpperCamelCase__					(		self				,   lowercase_				,   lowercase_  ):

     """simple docstring"""
     UpperCAmelCase_					:					List[str]			     =    FlaxViTModel(config=lowercase_  )
     UpperCAmelCase_					:					int			     =    model(lowercase_  )
     # expected sequence length = num_patches + 1 (we add 1 for the [CLS] token)
     UpperCAmelCase_					:					Optional[Any]			     =    (self.image_size, self.image_size)
     UpperCAmelCase_					:					List[Any]			     =    (self.patch_size, self.patch_size)
     UpperCAmelCase_					:					str			     =    (image_size[1] // patch_size[1]) * (image_size[0] // patch_size[0])
     self.parent.assertEqual(result.last_hidden_state.shape				,   (self.batch_size, num_patches + 1, self.hidden_size)  )







  def        UpperCamelCase__					(		self				,   lowercase_				,   lowercase_  ):

     """simple docstring"""
     UpperCAmelCase_					:					Tuple			     =    self.type_sequence_label_size
     UpperCAmelCase_					:					Tuple			     =    FlaxViTForImageClassification(config=lowercase_  )
     UpperCAmelCase_					:					str			     =    model(lowercase_  )
     self.parent.assertEqual(result.logits.shape				,   (self.batch_size, self.type_sequence_label_size)  )

     # test greyscale images
     UpperCAmelCase_					:					Any			     =    1
     UpperCAmelCase_					:					Optional[int]			     =    FlaxViTForImageClassification(lowercase_  )

     UpperCAmelCase_					:					List[Any]			     =    floats_tensor([self.batch_size, 1, self.image_size, self.image_size]  )
     UpperCAmelCase_					:					List[Any]			     =    model(lowercase_  )







  def        UpperCamelCase__					(		self  ):

     """simple docstring"""
     UpperCAmelCase_					:					List[Any]			     =    self.prepare_config_and_inputs()
     (
         (
         UpperCAmelCase_
     )     ,   (
         UpperCAmelCase_
     )     ,   
     )					:					Tuple			     =    config_and_inputs
     UpperCAmelCase_					:					Union[str, Any]			     =    {"pixel_values": pixel_values}
     return config, inputs_dict




@require_flax
class A_	(lowercase__				,unittest.TestCase      ):




  '''simple docstring'''
  SCREAMING_SNAKE_CASE__			:						Any       =		(FlaxViTModel, FlaxViTForImageClassification) if is_flax_available() else ()







  def        UpperCamelCase__					(		self  ):

     """simple docstring"""
     UpperCAmelCase_					:					List[Any]			     =    FlaxViTModelTester(self  )
     UpperCAmelCase_					:					Dict			     =    ConfigTester(self				,   config_class=lowercase_				,   has_text_modality=lowercase_				,   hidden_size=37  )







  def        UpperCamelCase__					(		self  ):

     """simple docstring"""
     self.config_tester.run_common_tests()







  def        UpperCamelCase__					(		self  ):

     """simple docstring"""
     UpperCAmelCase_					:					List[Any]			     =    self.model_tester.prepare_config_and_inputs()
     self.model_tester.create_and_check_model(*lowercase_  )







  def        UpperCamelCase__					(		self  ):

     """simple docstring"""
     UpperCAmelCase_					:					Optional[Any]			     =    self.model_tester.prepare_config_and_inputs()
     self.model_tester.create_and_check_for_image_classification(*lowercase_  )







  def        UpperCamelCase__					(		self  ):

     """simple docstring"""
     UpperCAmelCase_     ,   UpperCAmelCase_					:					List[str]			     =    self.model_tester.prepare_config_and_inputs_for_common()

     for model_class in self.all_model_classes:
        UpperCAmelCase_					:					Optional[Any]			     =    model_class(lowercase_  )
        UpperCAmelCase_					:					Optional[int]			     =    inspect.signature(model.__call__  )
        # signature.parameters is an OrderedDict => so arg_names order is deterministic
        UpperCAmelCase_					:					List[str]			     =    [*signature.parameters.keys()]

        UpperCAmelCase_					:					List[str]			     =    ["pixel_values"]
        self.assertListEqual(arg_names[:1]				,   lowercase_  )







  def        UpperCamelCase__					(		self  ):

     """simple docstring"""
     UpperCAmelCase_     ,   UpperCAmelCase_					:					Tuple			     =    self.model_tester.prepare_config_and_inputs_for_common()

     for model_class in self.all_model_classes:
        with self.subTest(model_class.__name__  ):
           UpperCAmelCase_					:					Union[str, Any]			     =    self._prepare_for_class(lowercase_				,   lowercase_  )
           UpperCAmelCase_					:					Tuple			     =    model_class(lowercase_  )

           @jax.jit
           def model_jitted(lowercase_				,   **lowercase_  ):
              return model(pixel_values=lowercase_				,   **lowercase_  )

           with self.subTest("JIT Enabled"  ):
              UpperCAmelCase_					:					Union[str, Any]			     =    model_jitted(**lowercase_  ).to_tuple()

           with self.subTest("JIT Disabled"  ):
              with jax.disable_jit():
                 UpperCAmelCase_					:					Tuple			     =    model_jitted(**lowercase_  ).to_tuple()

           self.assertEqual(len(lowercase_  )				,   len(lowercase_  )  )
           for jitted_output, output in zip(lowercase_				,   lowercase_  ):
              self.assertEqual(jitted_output.shape				,   output.shape  )







  @slow
  def        UpperCamelCase__					(		self  ):

     """simple docstring"""
     for model_class_name in self.all_model_classes:
        UpperCAmelCase_					:					Union[str, Any]			     =    model_class_name.from_pretrained("google/vit-base-patch16-224"  )
        UpperCAmelCase_					:					List[str]			     =    model(np.ones((1, 3, 224, 224)  )  )
        self.assertIsNotNone(lowercase_  )


