


"""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 lowerCAmelCase_   (					):






 """simple docstring"""







 __lowercase						=						10
 __lowercase						=						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"""			),
     }			)
 __lowercase						=						datasets.Dataset.from_dict(
     {
         """tokens""": [["""foo"""] * 5] * n,
         """labels""": [[1] * 5] * n,
         """answers""": [{"""answer_start""": [97], """text""": ["""1976"""]}] * 10,
         """id""": list(range(UpperCamelCase_			)			),
     }					, features=UpperCamelCase_					, )
 return dataset


@pytest.fixture(scope="""session"""			)
def lowerCAmelCase_   (					UpperCamelCase__						:			Optional[Any]					, UpperCamelCase__						:			Optional[int]			):






 """simple docstring"""







 __lowercase						=						str(tmp_path_factory.mktemp("""data"""			) / """file.arrow"""			)
 dataset.map(cache_file_name=UpperCamelCase_			)
 return filename


# FILE_CONTENT + files


UpperCAmelCase__					='''\
    Text data.
    Second line of data.'''


@pytest.fixture(scope="""session"""			)
def lowerCAmelCase_   (					UpperCamelCase__						:			List[str]			):






 """simple docstring"""







 __lowercase						=						tmp_path_factory.mktemp("""data"""			) / """file.txt"""
 __lowercase						=						FILE_CONTENT
 with open(UpperCamelCase_					, """w"""			) as f:
  f.write(UpperCamelCase_			)
 return filename


@pytest.fixture(scope="""session"""			)
def lowerCAmelCase_   (					UpperCamelCase__						:			List[Any]			):






 """simple docstring"""







 import bza

 __lowercase						=						tmp_path_factory.mktemp("""data"""			) / """file.txt.bz2"""
 __lowercase						=						bytes(UpperCamelCase_					, """utf-8"""			)
 with bza.open(UpperCamelCase_					, """wb"""			) as f:
  f.write(UpperCamelCase_			)
 return path


@pytest.fixture(scope="""session"""			)
def lowerCAmelCase_   (					UpperCamelCase__						:			Optional[int]			):






 """simple docstring"""







 import gzip

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


@pytest.fixture(scope="""session"""			)
def lowerCAmelCase_   (					UpperCamelCase__						:			Union[str, Any]			):






 """simple docstring"""







 if datasets.config.LZ4_AVAILABLE:
  import lza.frame

  __lowercase						=						tmp_path_factory.mktemp("""data"""			) / """file.txt.lz4"""
  __lowercase						=						bytes(UpperCamelCase_					, """utf-8"""			)
  with lza.frame.open(UpperCamelCase_					, """wb"""			) as f:
   f.write(UpperCamelCase_			)
  return path


@pytest.fixture(scope="""session"""			)
def lowerCAmelCase_   (					UpperCamelCase__						:			List[str]					, UpperCamelCase__						:			Union[str, Any]			):






 """simple docstring"""







 if datasets.config.PY7ZR_AVAILABLE:
  import pyazr

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


@pytest.fixture(scope="""session"""			)
def lowerCAmelCase_   (					UpperCamelCase__						:			Tuple					, UpperCamelCase__						:			Tuple			):






 """simple docstring"""







 import tarfile

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


@pytest.fixture(scope="""session"""			)
def lowerCAmelCase_   (					UpperCamelCase__						:			Tuple			):






 """simple docstring"""







 import lzma

 __lowercase						=						tmp_path_factory.mktemp("""data"""			) / """file.txt.xz"""
 __lowercase						=						bytes(UpperCamelCase_					, """utf-8"""			)
 with lzma.open(UpperCamelCase_					, """wb"""			) as f:
  f.write(UpperCamelCase_			)
 return path


@pytest.fixture(scope="""session"""			)
def lowerCAmelCase_   (					UpperCamelCase__						:			Any					, UpperCamelCase__						:			int			):






 """simple docstring"""







 import zipfile

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


@pytest.fixture(scope="""session"""			)
def lowerCAmelCase_   (					UpperCamelCase__						:			Union[str, Any]			):






 """simple docstring"""







 if datasets.config.ZSTANDARD_AVAILABLE:
  import zstandard as zstd

  __lowercase						=						tmp_path_factory.mktemp("""data"""			) / """file.txt.zst"""
  __lowercase						=						bytes(UpperCamelCase_					, """utf-8"""			)
  with zstd.open(UpperCamelCase_					, """wb"""			) as f:
   f.write(UpperCamelCase_			)
  return path


@pytest.fixture(scope="""session"""			)
def lowerCAmelCase_   (					UpperCamelCase__						:			Tuple			):






 """simple docstring"""







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






 """simple docstring"""







 return DATA_DICT_OF_LISTS


@pytest.fixture(scope="""session"""			)
def lowerCAmelCase_   (					UpperCamelCase__						:			Optional[Any]			):






 """simple docstring"""







 __lowercase						=						datasets.Dataset.from_dict(UpperCamelCase_			)
 __lowercase						=						str(tmp_path_factory.mktemp("""data"""			) / """dataset.arrow"""			)
 dataset.map(cache_file_name=UpperCamelCase_			)
 return path


@pytest.fixture(scope="""session"""			)
def lowerCAmelCase_   (					UpperCamelCase__						:			List[Any]			):






 """simple docstring"""







 __lowercase						=						str(tmp_path_factory.mktemp("""data"""			) / """dataset.sqlite"""			)
 with contextlib.closing(sqlitea.connect(UpperCamelCase_			)			) as con:
  __lowercase						=						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 lowerCAmelCase_   (					UpperCamelCase__						:			Union[str, Any]			):






 """simple docstring"""







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


@pytest.fixture(scope="""session"""			)
def lowerCAmelCase_   (					UpperCamelCase__						:			Tuple			):






 """simple docstring"""







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


@pytest.fixture(scope="""session"""			)
def lowerCAmelCase_   (					UpperCamelCase__						:			Dict					, UpperCamelCase__						:			Any			):






 """simple docstring"""







 import bza

 __lowercase						=						tmp_path_factory.mktemp("""data"""			) / """dataset.csv.bz2"""
 with open(UpperCamelCase_					, """rb"""			) as f:
  __lowercase						=						f.read()
 # data = bytes(FILE_CONTENT, "utf-8")
 with bza.open(UpperCamelCase_					, """wb"""			) as f:
  f.write(UpperCamelCase_			)
 return path


@pytest.fixture(scope="""session"""			)
def lowerCAmelCase_   (					UpperCamelCase__						:			Optional[int]					, UpperCamelCase__						:			Tuple					, UpperCamelCase__						:			List[str]			):






 """simple docstring"""







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


@pytest.fixture(scope="""session"""			)
def lowerCAmelCase_   (					UpperCamelCase__						:			List[Any]					, UpperCamelCase__						:			Dict					, UpperCamelCase__						:			Dict			):






 """simple docstring"""







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


@pytest.fixture(scope="""session"""			)
def lowerCAmelCase_   (					UpperCamelCase__						:			Tuple					, UpperCamelCase__						:			Dict					, UpperCamelCase__						:			Optional[Any]			):






 """simple docstring"""







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


@pytest.fixture(scope="""session"""			)
def lowerCAmelCase_   (					UpperCamelCase__						:			int			):






 """simple docstring"""







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


@pytest.fixture(scope="""session"""			)
def lowerCAmelCase_   (					UpperCamelCase__						:			Tuple			):






 """simple docstring"""







 __lowercase						=						str(tmp_path_factory.mktemp("""data"""			) / """dataset.json"""			)
 __lowercase						=						{"""data""": DATA}
 with open(UpperCamelCase_					, """w"""			) as f:
  json.dump(UpperCamelCase_					, UpperCamelCase_			)
 return path


@pytest.fixture(scope="""session"""			)
def lowerCAmelCase_   (					UpperCamelCase__						:			int			):






 """simple docstring"""







 __lowercase						=						str(tmp_path_factory.mktemp("""data"""			) / """dataset.json"""			)
 __lowercase						=						{"""data""": DATA_DICT_OF_LISTS}
 with open(UpperCamelCase_					, """w"""			) as f:
  json.dump(UpperCamelCase_					, UpperCamelCase_			)
 return path


@pytest.fixture(scope="""session"""			)
def lowerCAmelCase_   (					UpperCamelCase__						:			Optional[int]			):






 """simple docstring"""







 __lowercase						=						str(tmp_path_factory.mktemp("""data"""			) / """dataset.jsonl"""			)
 with open(UpperCamelCase_					, """w"""			) as f:
  for item in DATA:
   f.write(json.dumps(UpperCamelCase_			) + """\n"""			)
 return path


@pytest.fixture(scope="""session"""			)
def lowerCAmelCase_   (					UpperCamelCase__						:			Tuple			):






 """simple docstring"""







 __lowercase						=						str(tmp_path_factory.mktemp("""data"""			) / """dataset2.jsonl"""			)
 with open(UpperCamelCase_					, """w"""			) as f:
  for item in DATA:
   f.write(json.dumps(UpperCamelCase_			) + """\n"""			)
 return path


@pytest.fixture(scope="""session"""			)
def lowerCAmelCase_   (					UpperCamelCase__						:			List[Any]			):






 """simple docstring"""







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


@pytest.fixture(scope="""session"""			)
def lowerCAmelCase_   (					UpperCamelCase__						:			Tuple			):






 """simple docstring"""







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


@pytest.fixture(scope="""session"""			)
def lowerCAmelCase_   (					UpperCamelCase__						:			Dict					, UpperCamelCase__						:			str			):






 """simple docstring"""







 import gzip

 __lowercase						=						str(tmp_path_factory.mktemp("""data"""			) / """dataset.txt.gz"""			)
 with open(UpperCamelCase_					, """rb"""			) as orig_file:
  with gzip.open(UpperCamelCase_					, """wb"""			) as zipped_file:
   zipped_file.writelines(UpperCamelCase_			)
 return path


@pytest.fixture(scope="""session"""			)
def lowerCAmelCase_   (					UpperCamelCase__						:			Optional[int]					, UpperCamelCase__						:			int			):






 """simple docstring"""







 import gzip

 __lowercase						=						str(tmp_path_factory.mktemp("""data"""			) / """dataset.jsonl.gz"""			)
 with open(UpperCamelCase_					, """rb"""			) as orig_file:
  with gzip.open(UpperCamelCase_					, """wb"""			) as zipped_file:
   zipped_file.writelines(UpperCamelCase_			)
 return path


@pytest.fixture(scope="""session"""			)
def lowerCAmelCase_   (					UpperCamelCase__						:			Any					, UpperCamelCase__						:			Optional[int]					, UpperCamelCase__						:			str			):






 """simple docstring"""







 __lowercase						=						tmp_path_factory.mktemp("""data"""			) / """dataset.jsonl.zip"""
 with zipfile.ZipFile(UpperCamelCase_					, """w"""			) as f:
  f.write(UpperCamelCase_					, arcname=os.path.basename(UpperCamelCase_			)			)
  f.write(UpperCamelCase_					, arcname=os.path.basename(UpperCamelCase_			)			)
 return path


@pytest.fixture(scope="""session"""			)
def lowerCAmelCase_   (					UpperCamelCase__						:			Optional[Any]					, UpperCamelCase__						:			List[Any]					, UpperCamelCase__						:			Union[str, Any]					, UpperCamelCase__						:			str			):






 """simple docstring"""







 __lowercase						=						tmp_path_factory.mktemp("""data"""			) / """dataset_nested.jsonl.zip"""
 with zipfile.ZipFile(UpperCamelCase_					, """w"""			) as f:
  f.write(UpperCamelCase_					, arcname=os.path.join("""nested"""					, os.path.basename(UpperCamelCase_			)			)			)
 return path


@pytest.fixture(scope="""session"""			)
def lowerCAmelCase_   (					UpperCamelCase__						:			List[str]					, UpperCamelCase__						:			List[str]					, UpperCamelCase__						:			Optional[Any]			):






 """simple docstring"""







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


@pytest.fixture(scope="""session"""			)
def lowerCAmelCase_   (					UpperCamelCase__						:			Optional[Any]					, UpperCamelCase__						:			List[str]					, UpperCamelCase__						:			List[Any]			):






 """simple docstring"""







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


@pytest.fixture(scope="""session"""			)
def lowerCAmelCase_   (					UpperCamelCase__						:			int					, UpperCamelCase__						:			Any					, UpperCamelCase__						:			int					, UpperCamelCase__						:			Optional[int]			):






 """simple docstring"""







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


@pytest.fixture(scope="""session"""			)
def lowerCAmelCase_   (					UpperCamelCase__						:			Optional[Any]			):






 """simple docstring"""







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


@pytest.fixture(scope="""session"""			)
def lowerCAmelCase_   (					UpperCamelCase__						:			Dict			):






 """simple docstring"""







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


@pytest.fixture(scope="""session"""			)
def lowerCAmelCase_   (					UpperCamelCase__						:			Dict			):






 """simple docstring"""







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


@pytest.fixture(scope="""session"""			)
def lowerCAmelCase_   (					UpperCamelCase__						:			Dict					, UpperCamelCase__						:			Optional[int]					, UpperCamelCase__						:			List[str]			):






 """simple docstring"""







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


@pytest.fixture(scope="""session"""			)
def lowerCAmelCase_   (					UpperCamelCase__						:			Dict					, UpperCamelCase__						:			int					, UpperCamelCase__						:			Union[str, Any]			):






 """simple docstring"""







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


@pytest.fixture(scope="""session"""			)
def lowerCAmelCase_   (					UpperCamelCase__						:			List[Any]					, UpperCamelCase__						:			Optional[Any]					, UpperCamelCase__						:			Optional[int]			):






 """simple docstring"""







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


@pytest.fixture(scope="""session"""			)
def lowerCAmelCase_   (					UpperCamelCase__						:			Optional[Any]			):






 """simple docstring"""







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


@pytest.fixture(scope="""session"""			)
def lowerCAmelCase_   (					):






 """simple docstring"""







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


@pytest.fixture(scope="""session"""			)
def lowerCAmelCase_   (					):






 """simple docstring"""







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


@pytest.fixture(scope="""session"""			)
def lowerCAmelCase_   (					UpperCamelCase__						:			Tuple					, UpperCamelCase__						:			Dict			):






 """simple docstring"""







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


@pytest.fixture(scope="""session"""			)
def lowerCAmelCase_   (					UpperCamelCase__						:			Union[str, Any]			):






 """simple docstring"""







 __lowercase						=						tmp_path_factory.mktemp("""data_dir"""			)

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

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

 return data_dir




'''simple docstring'''
from __future__ import annotations

__SCREAMING_SNAKE_CASE					:				Optional[int]									=		list[tuple[int, int]]

__SCREAMING_SNAKE_CASE					:				Union[str, Any]									=		[
    [0, 0, 0, 0, 0, 0, 0],
    [0, 1, 0, 0, 0, 0, 0],  # 0 are free path whereas 1's are obstacles
    [0, 0, 0, 0, 0, 0, 0],
    [0, 0, 1, 0, 0, 0, 0],
    [1, 0, 1, 0, 0, 0, 0],
    [0, 0, 0, 0, 0, 0, 0],
    [0, 0, 0, 0, 1, 0, 0],
]

__SCREAMING_SNAKE_CASE					:				Optional[int]									=		([-1, 0], [0, -1], [1, 0], [0, 1])  # up, left, down, right






class 					__lowerCAmelCase   :

						"""simple docstring"""






						def __init__(  self							:      List[str] ,  lowerCAmelCase							:      int ,  lowerCAmelCase							:      int ,  lowerCAmelCase							:      int ,  lowerCAmelCase							:      int ,  lowerCAmelCase							:      float ,  lowerCAmelCase							:      Node | None ,  ):
													A_			    =		pos_x
													A_			    =		pos_y
													A_			    =		(pos_y, pos_x)
													A_			    =		goal_x
													A_			    =		goal_y
													A_			    =		g_cost
													A_			    =		parent
													A_			    =		self.calculate_heuristic()






						def 				_UpperCAmelCase       (  self							:      Tuple	):
													A_			    =		abs(self.pos_x - self.goal_x	)
													A_			    =		abs(self.pos_y - self.goal_y	)
													return dx + dy






						def __lt__(  self							:      Tuple ,  lowerCAmelCase							:      Any	):
													return self.f_cost < other.f_cost






class 					__lowerCAmelCase   :

						"""simple docstring"""






						def __init__(  self							:      Union[str, Any] ,  lowerCAmelCase							:      tuple[int, int] ,  lowerCAmelCase							:      tuple[int, int]	):
													A_			    =		Node(start[1] ,  start[0] ,  goal[1] ,  goal[0] ,  0 ,  lowerCAmelCase	)
													A_			    =		Node(goal[1] ,  goal[0] ,  goal[1] ,  goal[0] ,  9_99_99 ,  lowerCAmelCase	)

													A_			    =		[self.start]
													A_			    =		[]

													A_			    =		False






						def 				_UpperCAmelCase       (  self							:      str	):
													while self.open_nodes:
																				# Open Nodes are sorted using __lt__
																				self.open_nodes.sort()
																				A_			    =		self.open_nodes.pop(0	)

																				if current_node.pos == self.target.pos:
																											A_			    =		True
																											return self.retrace_path(lowerCAmelCase	)

																				self.closed_nodes.append(lowerCAmelCase	)
																				A_			    =		self.get_successors(lowerCAmelCase	)

																				for child_node in successors:
																											if child_node in self.closed_nodes:
																																		continue

																											if child_node not in self.open_nodes:
																																		self.open_nodes.append(lowerCAmelCase	)
																											else:
																																		# retrieve the best current path
																																		A_			    =		self.open_nodes.pop(self.open_nodes.index(lowerCAmelCase	)	)

																																		if child_node.g_cost < better_node.g_cost:
																																									self.open_nodes.append(lowerCAmelCase	)
																																		else:
																																									self.open_nodes.append(lowerCAmelCase	)

													if not self.reached:
																				return [self.start.pos]
													return None






						def 				_UpperCAmelCase       (  self							:      List[Any] ,  lowerCAmelCase							:      Node	):
													A_			    =		[]
													for action in delta:
																				A_			    =		parent.pos_x + action[1]
																				A_			    =		parent.pos_y + action[0]

																				if not (0 <= pos_x <= len(grid[0]	) - 1 and 0 <= pos_y <= len(lowerCAmelCase	) - 1):
																											continue

																				if grid[pos_y][pos_x] != 0:
																											continue

																				successors.append(
																				    Node(
																				        lowerCAmelCase ,  lowerCAmelCase ,  self.target.pos_y ,  self.target.pos_x ,  parent.g_cost + 1 ,  lowerCAmelCase ,  )	)
													return successors






						def 				_UpperCAmelCase       (  self							:      Tuple ,  lowerCAmelCase							:      Node | None	):
													A_			    =		node
													A_			    =		[]
													while current_node is not None:
																				path.append((current_node.pos_y, current_node.pos_x)	)
																				A_			    =		current_node.parent
													path.reverse()
													return path


if __name__ == "__main__":
							__SCREAMING_SNAKE_CASE					:				List[Any]									=		(0, 0)
							__SCREAMING_SNAKE_CASE					:				Dict									=		(len(grid) - 1, len(grid[0]) - 1)
							for elem in grid:
														print(elem)

							print('''------''')

							__SCREAMING_SNAKE_CASE					:				int									=		GreedyBestFirst(init, goal)
							__SCREAMING_SNAKE_CASE					:				Optional[Any]									=		greedy_bf.search()
							if path:
														for pos_x, pos_y in path:
																					__SCREAMING_SNAKE_CASE					:				List[Any]									=		2

														for elem in grid:
																					print(elem)





