

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





@pytest.fixture(scope='''session'''    )
def       lowercase__						(       snake_case_   :Optional[int]			,		snake_case_   :Tuple    ):
	__UpperCAmelCase      		= str(tmp_path_factory.mktemp('''data'''    ) / '''file.arrow'''    )
	dataset.map(cache_file_name=snake_case_    )
	return filename


# FILE_CONTENT + files


_lowercase   :	Tuple												=						'\\n    Text data.\n    Second line of data.'





@pytest.fixture(scope='''session'''    )
def       lowercase__						(       snake_case_   :Union[str, Any]    ):
	__UpperCAmelCase      		= tmp_path_factory.mktemp('''data'''    ) / '''file.txt'''
	__UpperCAmelCase      		= FILE_CONTENT
	with open(snake_case_			,		'''w'''    ) as f:
		f.write(snake_case_    )
	return filename





@pytest.fixture(scope='''session'''    )
def       lowercase__						(       snake_case_   :Tuple    ):
	import bza

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





@pytest.fixture(scope='''session'''    )
def       lowercase__						(       snake_case_   :Union[str, Any]    ):
	import gzip

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





@pytest.fixture(scope='''session'''    )
def       lowercase__						(       snake_case_   :Any    ):
	if datasets.config.LZ4_AVAILABLE:
		import lza.frame

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





@pytest.fixture(scope='''session'''    )
def       lowercase__						(       snake_case_   :Any			,		snake_case_   :Optional[int]    ):
	if datasets.config.PY7ZR_AVAILABLE:
		import pyazr

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





@pytest.fixture(scope='''session'''    )
def       lowercase__						(       snake_case_   :List[Any]			,		snake_case_   :List[str]    ):
	import tarfile

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





@pytest.fixture(scope='''session'''    )
def       lowercase__						(       snake_case_   :Dict    ):
	import lzma

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





@pytest.fixture(scope='''session'''    )
def       lowercase__						(       snake_case_   :str			,		snake_case_   :Dict    ):
	import zipfile

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





@pytest.fixture(scope='''session'''    )
def       lowercase__						(       snake_case_   :Union[str, Any]    ):
	if datasets.config.ZSTANDARD_AVAILABLE:
		import zstandard as zstd

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





@pytest.fixture(scope='''session'''    )
def       lowercase__						(       snake_case_   :Any    ):
	__UpperCAmelCase      		= tmp_path_factory.mktemp('''data'''    ) / '''file.xml'''
	__UpperCAmelCase      		= 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(snake_case_			,		'''w'''    ) as f:
		f.write(snake_case_    )
	return filename


_lowercase   :	Optional[int]												=						[
    {'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},
]
_lowercase   :	Optional[int]												=						[
    {'col_1': '4', 'col_2': 4, 'col_3': 4.0},
    {'col_1': '5', 'col_2': 5, 'col_3': 5.0},
]
_lowercase   :	str												=						{
    'col_1': ['0', '1', '2', '3'],
    'col_2': [0, 1, 2, 3],
    'col_3': [0.0, 1.0, 2.0, 3.0],
}

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

_lowercase   :	Dict												=						[
    {'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       lowercase__						(       ):
	return DATA_DICT_OF_LISTS





@pytest.fixture(scope='''session'''    )
def       lowercase__						(       snake_case_   :Optional[Any]    ):
	__UpperCAmelCase      		= datasets.Dataset.from_dict(snake_case_    )
	__UpperCAmelCase      		= str(tmp_path_factory.mktemp('''data'''    ) / '''dataset.arrow'''    )
	dataset.map(cache_file_name=snake_case_    )
	return path





@pytest.fixture(scope='''session'''    )
def       lowercase__						(       snake_case_   :int    ):
	__UpperCAmelCase      		= str(tmp_path_factory.mktemp('''data'''    ) / '''dataset.sqlite'''    )
	with contextlib.closing(sqlitea.connect(snake_case_    )    ) as con:
		__UpperCAmelCase      		= 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       lowercase__						(       snake_case_   :Optional[Any]    ):
	__UpperCAmelCase      		= str(tmp_path_factory.mktemp('''data'''    ) / '''dataset.csv'''    )
	with open(snake_case_			,		'''w'''			,		newline=''''''    ) as f:
		__UpperCAmelCase      		= csv.DictWriter(snake_case_			,		fieldnames=['''col_1''', '''col_2''', '''col_3''']    )
		writer.writeheader()
		for item in DATA:
			writer.writerow(snake_case_    )
	return path





@pytest.fixture(scope='''session'''    )
def       lowercase__						(       snake_case_   :List[Any]    ):
	__UpperCAmelCase      		= str(tmp_path_factory.mktemp('''data'''    ) / '''dataset2.csv'''    )
	with open(snake_case_			,		'''w'''			,		newline=''''''    ) as f:
		__UpperCAmelCase      		= csv.DictWriter(snake_case_			,		fieldnames=['''col_1''', '''col_2''', '''col_3''']    )
		writer.writeheader()
		for item in DATA:
			writer.writerow(snake_case_    )
	return path





@pytest.fixture(scope='''session'''    )
def       lowercase__						(       snake_case_   :Tuple			,		snake_case_   :List[Any]    ):
	import bza

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





@pytest.fixture(scope='''session'''    )
def       lowercase__						(       snake_case_   :str			,		snake_case_   :Union[str, Any]			,		snake_case_   :str    ):
	__UpperCAmelCase      		= tmp_path_factory.mktemp('''data'''    ) / '''dataset.csv.zip'''
	with zipfile.ZipFile(snake_case_			,		'''w'''    ) as f:
		f.write(snake_case_			,		arcname=os.path.basename(snake_case_    )    )
		f.write(snake_case_			,		arcname=os.path.basename(snake_case_    )    )
	return path





@pytest.fixture(scope='''session'''    )
def       lowercase__						(       snake_case_   :Dict			,		snake_case_   :List[Any]			,		snake_case_   :Optional[int]    ):
	__UpperCAmelCase      		= tmp_path_factory.mktemp('''data'''    ) / '''dataset.csv.zip'''
	with zipfile.ZipFile(snake_case_			,		'''w'''    ) as f:
		f.write(snake_case_			,		arcname=os.path.basename(csv_path.replace('''.csv'''			,		'''.CSV'''    )    )    )
		f.write(snake_case_			,		arcname=os.path.basename(csva_path.replace('''.csv'''			,		'''.CSV'''    )    )    )
	return path





@pytest.fixture(scope='''session'''    )
def       lowercase__						(       snake_case_   :Optional[Any]			,		snake_case_   :Optional[Any]			,		snake_case_   :Optional[Any]    ):
	__UpperCAmelCase      		= tmp_path_factory.mktemp('''data'''    ) / '''dataset_with_dir.csv.zip'''
	with zipfile.ZipFile(snake_case_			,		'''w'''    ) as f:
		f.write(snake_case_			,		arcname=os.path.join('''main_dir'''			,		os.path.basename(snake_case_    )    )    )
		f.write(snake_case_			,		arcname=os.path.join('''main_dir'''			,		os.path.basename(snake_case_    )    )    )
	return path





@pytest.fixture(scope='''session'''    )
def       lowercase__						(       snake_case_   :Any    ):
	__UpperCAmelCase      		= str(tmp_path_factory.mktemp('''data'''    ) / '''dataset.parquet'''    )
	__UpperCAmelCase      		= pa.schema(
	    {
	        '''col_1''': pa.string(),
	        '''col_2''': pa.intaa(),
	        '''col_3''': pa.floataa(),
	    }    )
	with open(snake_case_			,		'''wb'''    ) as f:
		__UpperCAmelCase      		= pq.ParquetWriter(snake_case_			,		schema=snake_case_    )
		__UpperCAmelCase      		= pa.Table.from_pydict({k: [DATA[i][k] for i in range(len(snake_case_    )    )] for k in DATA[0]}			,		schema=snake_case_    )
		writer.write_table(snake_case_    )
		writer.close()
	return path





@pytest.fixture(scope='''session'''    )
def       lowercase__						(       snake_case_   :Dict    ):
	__UpperCAmelCase      		= str(tmp_path_factory.mktemp('''data'''    ) / '''dataset.json'''    )
	__UpperCAmelCase      		= {'''data''': DATA}
	with open(snake_case_			,		'''w'''    ) as f:
		json.dump(snake_case_			,		snake_case_    )
	return path





@pytest.fixture(scope='''session'''    )
def       lowercase__						(       snake_case_   :Dict    ):
	__UpperCAmelCase      		= str(tmp_path_factory.mktemp('''data'''    ) / '''dataset.json'''    )
	__UpperCAmelCase      		= {'''data''': DATA_DICT_OF_LISTS}
	with open(snake_case_			,		'''w'''    ) as f:
		json.dump(snake_case_			,		snake_case_    )
	return path





@pytest.fixture(scope='''session'''    )
def       lowercase__						(       snake_case_   :Tuple    ):
	__UpperCAmelCase      		= str(tmp_path_factory.mktemp('''data'''    ) / '''dataset.jsonl'''    )
	with open(snake_case_			,		'''w'''    ) as f:
		for item in DATA:
			f.write(json.dumps(snake_case_    ) + '''\n'''    )
	return path





@pytest.fixture(scope='''session'''    )
def       lowercase__						(       snake_case_   :List[Any]    ):
	__UpperCAmelCase      		= str(tmp_path_factory.mktemp('''data'''    ) / '''dataset2.jsonl'''    )
	with open(snake_case_			,		'''w'''    ) as f:
		for item in DATA:
			f.write(json.dumps(snake_case_    ) + '''\n'''    )
	return path





@pytest.fixture(scope='''session'''    )
def       lowercase__						(       snake_case_   :List[str]    ):
	__UpperCAmelCase      		= str(tmp_path_factory.mktemp('''data'''    ) / '''dataset_312.jsonl'''    )
	with open(snake_case_			,		'''w'''    ) as f:
		for item in DATA_312:
			f.write(json.dumps(snake_case_    ) + '''\n'''    )
	return path





@pytest.fixture(scope='''session'''    )
def       lowercase__						(       snake_case_   :Dict    ):
	__UpperCAmelCase      		= str(tmp_path_factory.mktemp('''data'''    ) / '''dataset-str.jsonl'''    )
	with open(snake_case_			,		'''w'''    ) as f:
		for item in DATA_STR:
			f.write(json.dumps(snake_case_    ) + '''\n'''    )
	return path





@pytest.fixture(scope='''session'''    )
def       lowercase__						(       snake_case_   :List[Any]			,		snake_case_   :Optional[Any]    ):
	import gzip

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





@pytest.fixture(scope='''session'''    )
def       lowercase__						(       snake_case_   :List[Any]			,		snake_case_   :Optional[Any]    ):
	import gzip

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





@pytest.fixture(scope='''session'''    )
def       lowercase__						(       snake_case_   :str			,		snake_case_   :List[Any]			,		snake_case_   :List[str]    ):
	__UpperCAmelCase      		= tmp_path_factory.mktemp('''data'''    ) / '''dataset.jsonl.zip'''
	with zipfile.ZipFile(snake_case_			,		'''w'''    ) as f:
		f.write(snake_case_			,		arcname=os.path.basename(snake_case_    )    )
		f.write(snake_case_			,		arcname=os.path.basename(snake_case_    )    )
	return path





@pytest.fixture(scope='''session'''    )
def       lowercase__						(       snake_case_   :Tuple			,		snake_case_   :Optional[Any]			,		snake_case_   :Any			,		snake_case_   :Optional[int]    ):
	__UpperCAmelCase      		= tmp_path_factory.mktemp('''data'''    ) / '''dataset_nested.jsonl.zip'''
	with zipfile.ZipFile(snake_case_			,		'''w'''    ) as f:
		f.write(snake_case_			,		arcname=os.path.join('''nested'''			,		os.path.basename(snake_case_    )    )    )
	return path





@pytest.fixture(scope='''session'''    )
def       lowercase__						(       snake_case_   :Union[str, Any]			,		snake_case_   :Optional[int]			,		snake_case_   :List[str]    ):
	__UpperCAmelCase      		= tmp_path_factory.mktemp('''data'''    ) / '''dataset_with_dir.jsonl.zip'''
	with zipfile.ZipFile(snake_case_			,		'''w'''    ) as f:
		f.write(snake_case_			,		arcname=os.path.join('''main_dir'''			,		os.path.basename(snake_case_    )    )    )
		f.write(snake_case_			,		arcname=os.path.join('''main_dir'''			,		os.path.basename(snake_case_    )    )    )
	return path





@pytest.fixture(scope='''session'''    )
def       lowercase__						(       snake_case_   :Tuple			,		snake_case_   :Tuple			,		snake_case_   :List[str]    ):
	__UpperCAmelCase      		= tmp_path_factory.mktemp('''data'''    ) / '''dataset.jsonl.tar'''
	with tarfile.TarFile(snake_case_			,		'''w'''    ) as f:
		f.add(snake_case_			,		arcname=os.path.basename(snake_case_    )    )
		f.add(snake_case_			,		arcname=os.path.basename(snake_case_    )    )
	return path





@pytest.fixture(scope='''session'''    )
def       lowercase__						(       snake_case_   :int			,		snake_case_   :Optional[int]			,		snake_case_   :str			,		snake_case_   :List[str]    ):
	__UpperCAmelCase      		= tmp_path_factory.mktemp('''data'''    ) / '''dataset_nested.jsonl.tar'''
	with tarfile.TarFile(snake_case_			,		'''w'''    ) as f:
		f.add(snake_case_			,		arcname=os.path.join('''nested'''			,		os.path.basename(snake_case_    )    )    )
	return path





@pytest.fixture(scope='''session'''    )
def       lowercase__						(       snake_case_   :Any    ):
	__UpperCAmelCase      		= ['''0''', '''1''', '''2''', '''3''']
	__UpperCAmelCase      		= str(tmp_path_factory.mktemp('''data'''    ) / '''dataset.txt'''    )
	with open(snake_case_			,		'''w'''    ) as f:
		for item in data:
			f.write(item + '''\n'''    )
	return path





@pytest.fixture(scope='''session'''    )
def       lowercase__						(       snake_case_   :Any    ):
	__UpperCAmelCase      		= ['''0''', '''1''', '''2''', '''3''']
	__UpperCAmelCase      		= str(tmp_path_factory.mktemp('''data'''    ) / '''dataset2.txt'''    )
	with open(snake_case_			,		'''w'''    ) as f:
		for item in data:
			f.write(item + '''\n'''    )
	return path





@pytest.fixture(scope='''session'''    )
def       lowercase__						(       snake_case_   :Tuple    ):
	__UpperCAmelCase      		= ['''0''', '''1''', '''2''', '''3''']
	__UpperCAmelCase      		= tmp_path_factory.mktemp('''data'''    ) / '''dataset.abc'''
	with open(snake_case_			,		'''w'''    ) as f:
		for item in data:
			f.write(item + '''\n'''    )
	return path





@pytest.fixture(scope='''session'''    )
def       lowercase__						(       snake_case_   :Dict			,		snake_case_   :Optional[Any]			,		snake_case_   :Any    ):
	__UpperCAmelCase      		= tmp_path_factory.mktemp('''data'''    ) / '''dataset.text.zip'''
	with zipfile.ZipFile(snake_case_			,		'''w'''    ) as f:
		f.write(snake_case_			,		arcname=os.path.basename(snake_case_    )    )
		f.write(snake_case_			,		arcname=os.path.basename(snake_case_    )    )
	return path





@pytest.fixture(scope='''session'''    )
def       lowercase__						(       snake_case_   :Tuple			,		snake_case_   :Optional[Any]			,		snake_case_   :Any    ):
	__UpperCAmelCase      		= tmp_path_factory.mktemp('''data'''    ) / '''dataset_with_dir.text.zip'''
	with zipfile.ZipFile(snake_case_			,		'''w'''    ) as f:
		f.write(snake_case_			,		arcname=os.path.join('''main_dir'''			,		os.path.basename(snake_case_    )    )    )
		f.write(snake_case_			,		arcname=os.path.join('''main_dir'''			,		os.path.basename(snake_case_    )    )    )
	return path





@pytest.fixture(scope='''session'''    )
def       lowercase__						(       snake_case_   :Optional[int]			,		snake_case_   :Dict			,		snake_case_   :Tuple    ):
	__UpperCAmelCase      		= tmp_path_factory.mktemp('''data'''    ) / '''dataset.ext.zip'''
	with zipfile.ZipFile(snake_case_			,		'''w'''    ) as f:
		f.write(snake_case_			,		arcname=os.path.basename('''unsupported.ext'''    )    )
		f.write(snake_case_			,		arcname=os.path.basename('''unsupported_2.ext'''    )    )
	return path





@pytest.fixture(scope='''session'''    )
def       lowercase__						(       snake_case_   :Dict    ):
	__UpperCAmelCase      		= '''\n'''.join(['''First''', '''Second\u2029with Unicode new line''', '''Third''']    )
	__UpperCAmelCase      		= str(tmp_path_factory.mktemp('''data'''    ) / '''dataset_with_unicode_new_lines.txt'''    )
	with open(snake_case_			,		'''w'''			,		encoding='''utf-8'''    ) as f:
		f.write(snake_case_    )
	return path





@pytest.fixture(scope='''session'''    )
def       lowercase__						(       ):
	return os.path.join('''tests'''			,		'''features'''			,		'''data'''			,		'''test_image_rgb.jpg'''    )





@pytest.fixture(scope='''session'''    )
def       lowercase__						(       ):
	return os.path.join('''tests'''			,		'''features'''			,		'''data'''			,		'''test_audio_44100.wav'''    )





@pytest.fixture(scope='''session'''    )
def       lowercase__						(       snake_case_   :str			,		snake_case_   :int    ):
	__UpperCAmelCase      		= tmp_path_factory.mktemp('''data'''    ) / '''dataset.img.zip'''
	with zipfile.ZipFile(snake_case_			,		'''w'''    ) as f:
		f.write(snake_case_			,		arcname=os.path.basename(snake_case_    )    )
		f.write(snake_case_			,		arcname=os.path.basename(snake_case_    ).replace('''.jpg'''			,		'''2.jpg'''    )    )
	return path





@pytest.fixture(scope='''session'''    )
def       lowercase__						(       snake_case_   :Optional[int]    ):
	__UpperCAmelCase      		= 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




import tempfile
import unittest

import numpy as np

from diffusers import (
    DDIMScheduler,
    DPMSolverMultistepScheduler,
    EulerAncestralDiscreteScheduler,
    EulerDiscreteScheduler,
    LMSDiscreteScheduler,
    OnnxStableDiffusionPipeline,
    PNDMScheduler,
)
from diffusers.utils.testing_utils import is_onnx_available, nightly, require_onnxruntime, require_torch_gpu

from ..test_pipelines_onnx_common import OnnxPipelineTesterMixin


if is_onnx_available():
				import onnxruntime as ort




class 							lowerCamelCase   (  _UpperCamelCase							,						unittest.TestCase ):
	_lowerCAmelCase     :		int										=						'''hf-internal-testing/tiny-random-OnnxStableDiffusionPipeline'''


	def  A(    self				,     lowercase__=0):
							__UpperCAmelCase			:							str	    =	np.random.RandomState(lowercase__)
							__UpperCAmelCase			:							Dict	    =	{
							    '''prompt''': '''A painting of a squirrel eating a burger''',
							    '''generator''': generator,
							    '''num_inference_steps''': 2,
							    '''guidance_scale''': 7.5,
							    '''output_type''': '''numpy''',
							}
							return inputs


	def  A(    self):
							__UpperCAmelCase			:							Optional[Any]	    =	OnnxStableDiffusionPipeline.from_pretrained(self.hub_checkpoint				,     provider='''CPUExecutionProvider''')
							pipe.set_progress_bar_config(disable=lowercase__)

							__UpperCAmelCase			:							Tuple	    =	self.get_dummy_inputs()
							__UpperCAmelCase			:							int	    =	pipe(**lowercase__).images
							__UpperCAmelCase			:							Tuple	    =	image[0, -3:, -3:, -1]

							assert image.shape == (1, 1_2_8, 1_2_8, 3)
							__UpperCAmelCase			:							Optional[Any]	    =	np.array([0.6_5_0_7_2, 0.5_8_4_9_2, 0.4_8_2_1_9, 0.5_5_5_2_1, 0.5_3_1_8_0, 0.5_5_9_3_9, 0.5_0_6_9_7, 0.3_9_8_0_0, 0.4_6_4_5_5])

							assert np.abs(image_slice.flatten() - expected_slice).max() < 1e-2


	def  A(    self):
							__UpperCAmelCase			:							Optional[int]	    =	OnnxStableDiffusionPipeline.from_pretrained(self.hub_checkpoint				,     provider='''CPUExecutionProvider''')
							__UpperCAmelCase			:							Optional[int]	    =	PNDMScheduler.from_config(pipe.scheduler.config				,     skip_prk_steps=lowercase__)
							pipe.set_progress_bar_config(disable=lowercase__)

							__UpperCAmelCase			:							Union[str, Any]	    =	self.get_dummy_inputs()
							__UpperCAmelCase			:							int	    =	pipe(**lowercase__).images
							__UpperCAmelCase			:							Optional[int]	    =	image[0, -3:, -3:, -1]

							assert image.shape == (1, 1_2_8, 1_2_8, 3)
							__UpperCAmelCase			:							List[str]	    =	np.array([0.6_5_8_6_3, 0.5_9_4_2_5, 0.4_9_3_2_6, 0.5_6_3_1_3, 0.5_3_8_7_5, 0.5_6_6_2_7, 0.5_1_0_6_5, 0.3_9_7_7_7, 0.4_6_3_3_0])

							assert np.abs(image_slice.flatten() - expected_slice).max() < 1e-2


	def  A(    self):
							__UpperCAmelCase			:							Tuple	    =	OnnxStableDiffusionPipeline.from_pretrained(self.hub_checkpoint				,     provider='''CPUExecutionProvider''')
							__UpperCAmelCase			:							List[Any]	    =	LMSDiscreteScheduler.from_config(pipe.scheduler.config)
							pipe.set_progress_bar_config(disable=lowercase__)

							__UpperCAmelCase			:							Union[str, Any]	    =	self.get_dummy_inputs()
							__UpperCAmelCase			:							Union[str, Any]	    =	pipe(**lowercase__).images
							__UpperCAmelCase			:							Any	    =	image[0, -3:, -3:, -1]

							assert image.shape == (1, 1_2_8, 1_2_8, 3)
							__UpperCAmelCase			:							Union[str, Any]	    =	np.array([0.5_3_7_5_5, 0.6_0_7_8_6, 0.4_7_4_0_2, 0.4_9_4_8_8, 0.5_1_8_6_9, 0.4_9_8_1_9, 0.4_7_9_8_5, 0.3_8_9_5_7, 0.4_4_2_7_9])

							assert np.abs(image_slice.flatten() - expected_slice).max() < 1e-2


	def  A(    self):
							__UpperCAmelCase			:							Dict	    =	OnnxStableDiffusionPipeline.from_pretrained(self.hub_checkpoint				,     provider='''CPUExecutionProvider''')
							__UpperCAmelCase			:							Optional[Any]	    =	EulerDiscreteScheduler.from_config(pipe.scheduler.config)
							pipe.set_progress_bar_config(disable=lowercase__)

							__UpperCAmelCase			:							Union[str, Any]	    =	self.get_dummy_inputs()
							__UpperCAmelCase			:							Optional[Any]	    =	pipe(**lowercase__).images
							__UpperCAmelCase			:							str	    =	image[0, -3:, -3:, -1]

							assert image.shape == (1, 1_2_8, 1_2_8, 3)
							__UpperCAmelCase			:							int	    =	np.array([0.5_3_7_5_5, 0.6_0_7_8_6, 0.4_7_4_0_2, 0.4_9_4_8_8, 0.5_1_8_6_9, 0.4_9_8_1_9, 0.4_7_9_8_5, 0.3_8_9_5_7, 0.4_4_2_7_9])

							assert np.abs(image_slice.flatten() - expected_slice).max() < 1e-2


	def  A(    self):
							__UpperCAmelCase			:							List[str]	    =	OnnxStableDiffusionPipeline.from_pretrained(self.hub_checkpoint				,     provider='''CPUExecutionProvider''')
							__UpperCAmelCase			:							List[str]	    =	EulerAncestralDiscreteScheduler.from_config(pipe.scheduler.config)
							pipe.set_progress_bar_config(disable=lowercase__)

							__UpperCAmelCase			:							Dict	    =	self.get_dummy_inputs()
							__UpperCAmelCase			:							Optional[int]	    =	pipe(**lowercase__).images
							__UpperCAmelCase			:							Optional[Any]	    =	image[0, -3:, -3:, -1]

							assert image.shape == (1, 1_2_8, 1_2_8, 3)
							__UpperCAmelCase			:							Dict	    =	np.array([0.5_3_8_1_7, 0.6_0_8_1_2, 0.4_7_3_8_4, 0.4_9_5_3_0, 0.5_1_8_9_4, 0.4_9_8_1_4, 0.4_7_9_8_4, 0.3_8_9_5_8, 0.4_4_2_7_1])

							assert np.abs(image_slice.flatten() - expected_slice).max() < 1e-2


	def  A(    self):
							__UpperCAmelCase			:							Union[str, Any]	    =	OnnxStableDiffusionPipeline.from_pretrained(self.hub_checkpoint				,     provider='''CPUExecutionProvider''')
							__UpperCAmelCase			:							List[Any]	    =	DPMSolverMultistepScheduler.from_config(pipe.scheduler.config)
							pipe.set_progress_bar_config(disable=lowercase__)

							__UpperCAmelCase			:							Optional[int]	    =	self.get_dummy_inputs()
							__UpperCAmelCase			:							Optional[Any]	    =	pipe(**lowercase__).images
							__UpperCAmelCase			:							List[str]	    =	image[0, -3:, -3:, -1]

							assert image.shape == (1, 1_2_8, 1_2_8, 3)
							__UpperCAmelCase			:							Dict	    =	np.array([0.5_3_8_9_5, 0.6_0_8_0_8, 0.4_7_9_3_3, 0.4_9_6_0_8, 0.5_1_8_8_6, 0.4_9_9_5_0, 0.4_8_0_5_3, 0.3_8_9_5_7, 0.4_4_2_0_0])

							assert np.abs(image_slice.flatten() - expected_slice).max() < 1e-2


	def  A(    self):
							__UpperCAmelCase			:							Optional[int]	    =	OnnxStableDiffusionPipeline.from_pretrained(self.hub_checkpoint				,     provider='''CPUExecutionProvider''')
							pipe.set_progress_bar_config(disable=lowercase__)

							__UpperCAmelCase			:							Any	    =	self.get_dummy_inputs()
							__UpperCAmelCase			:							List[Any]	    =	3 * [inputs['''prompt''']]

							# forward
							__UpperCAmelCase			:							Dict	    =	pipe(**lowercase__)
							__UpperCAmelCase			:							List[Any]	    =	output.images[0, -3:, -3:, -1]

							__UpperCAmelCase			:							Union[str, Any]	    =	self.get_dummy_inputs()
							__UpperCAmelCase			:							Dict	    =	3 * [inputs.pop('''prompt''')]

							__UpperCAmelCase			:							Tuple	    =	pipe.tokenizer(
							    lowercase__				,     padding='''max_length'''				,     max_length=pipe.tokenizer.model_max_length				,     truncation=lowercase__				,     return_tensors='''np'''				,     )
							__UpperCAmelCase			:							Optional[Any]	    =	text_inputs['''input_ids''']

							__UpperCAmelCase			:							Union[str, Any]	    =	pipe.text_encoder(input_ids=text_inputs.astype(np.intaa))[0]

							__UpperCAmelCase			:							Union[str, Any]	    =	prompt_embeds

							# forward
							__UpperCAmelCase			:							Union[str, Any]	    =	pipe(**lowercase__)
							__UpperCAmelCase			:							Union[str, Any]	    =	output.images[0, -3:, -3:, -1]

							assert np.abs(image_slice_a.flatten() - image_slice_a.flatten()).max() < 1e-4


	def  A(    self):
							__UpperCAmelCase			:							List[Any]	    =	OnnxStableDiffusionPipeline.from_pretrained(self.hub_checkpoint				,     provider='''CPUExecutionProvider''')
							pipe.set_progress_bar_config(disable=lowercase__)

							__UpperCAmelCase			:							int	    =	self.get_dummy_inputs()
							__UpperCAmelCase			:							Any	    =	3 * ['''this is a negative prompt''']
							__UpperCAmelCase			:							Optional[int]	    =	negative_prompt
							__UpperCAmelCase			:							List[Any]	    =	3 * [inputs['''prompt''']]

							# forward
							__UpperCAmelCase			:							Any	    =	pipe(**lowercase__)
							__UpperCAmelCase			:							str	    =	output.images[0, -3:, -3:, -1]

							__UpperCAmelCase			:							Optional[int]	    =	self.get_dummy_inputs()
							__UpperCAmelCase			:							Any	    =	3 * [inputs.pop('''prompt''')]

							__UpperCAmelCase			:							Optional[int]	    =	[]
							for p in [prompt, negative_prompt]:
													__UpperCAmelCase			:							str	    =	pipe.tokenizer(
													    lowercase__				,     padding='''max_length'''				,     max_length=pipe.tokenizer.model_max_length				,     truncation=lowercase__				,     return_tensors='''np'''				,     )
													__UpperCAmelCase			:							List[Any]	    =	text_inputs['''input_ids''']

													embeds.append(pipe.text_encoder(input_ids=text_inputs.astype(np.intaa))[0])

							__UpperCAmelCase    ,      __UpperCAmelCase			:							Optional[int]	    =	embeds

							# forward
							__UpperCAmelCase			:							Union[str, Any]	    =	pipe(**lowercase__)
							__UpperCAmelCase			:							str	    =	output.images[0, -3:, -3:, -1]

							assert np.abs(image_slice_a.flatten() - image_slice_a.flatten()).max() < 1e-4






@nightly
@require_onnxruntime
@require_torch_gpu
class 							lowerCamelCase   (  unittest.TestCase ):


	@property
	def  A(    self):
							return (
							    "CUDAExecutionProvider",
							    {
							        "gpu_mem_limit": "15000000000",  # 15GB
							        "arena_extend_strategy": "kSameAsRequested",
							    },
							)


	@property
	def  A(    self):
							__UpperCAmelCase			:							Optional[Any]	    =	ort.SessionOptions()
							__UpperCAmelCase			:							List[Any]	    =	False
							return options


	def  A(    self):
							# using the PNDM scheduler by default
							__UpperCAmelCase			:							Tuple	    =	OnnxStableDiffusionPipeline.from_pretrained(
							    '''CompVis/stable-diffusion-v1-4'''				,     revision='''onnx'''				,     safety_checker=lowercase__				,     feature_extractor=lowercase__				,     provider=self.gpu_provider				,     sess_options=self.gpu_options				,     )
							sd_pipe.set_progress_bar_config(disable=lowercase__)

							__UpperCAmelCase			:							int	    =	'''A painting of a squirrel eating a burger'''
							np.random.seed(0)
							__UpperCAmelCase			:							Dict	    =	sd_pipe([prompt]				,     guidance_scale=6.0				,     num_inference_steps=1_0				,     output_type='''np''')
							__UpperCAmelCase			:							Dict	    =	output.images

							__UpperCAmelCase			:							str	    =	image[0, -3:, -3:, -1]

							assert image.shape == (1, 5_1_2, 5_1_2, 3)
							__UpperCAmelCase			:							List[str]	    =	np.array([0.0_4_5_2, 0.0_3_9_0, 0.0_0_8_7, 0.0_3_5_0, 0.0_6_1_7, 0.0_3_6_4, 0.0_5_4_4, 0.0_5_2_3, 0.0_7_2_0])

							assert np.abs(image_slice.flatten() - expected_slice).max() < 1e-3


	def  A(    self):
							__UpperCAmelCase			:							Optional[Any]	    =	DDIMScheduler.from_pretrained(
							    '''runwayml/stable-diffusion-v1-5'''				,     subfolder='''scheduler'''				,     revision='''onnx''')
							__UpperCAmelCase			:							Dict	    =	OnnxStableDiffusionPipeline.from_pretrained(
							    '''runwayml/stable-diffusion-v1-5'''				,     revision='''onnx'''				,     scheduler=lowercase__				,     safety_checker=lowercase__				,     feature_extractor=lowercase__				,     provider=self.gpu_provider				,     sess_options=self.gpu_options				,     )
							sd_pipe.set_progress_bar_config(disable=lowercase__)

							__UpperCAmelCase			:							Any	    =	'''open neural network exchange'''
							__UpperCAmelCase			:							Any	    =	np.random.RandomState(0)
							__UpperCAmelCase			:							List[Any]	    =	sd_pipe([prompt]				,     guidance_scale=7.5				,     num_inference_steps=1_0				,     generator=lowercase__				,     output_type='''np''')
							__UpperCAmelCase			:							List[str]	    =	output.images
							__UpperCAmelCase			:							Optional[int]	    =	image[0, -3:, -3:, -1]

							assert image.shape == (1, 5_1_2, 5_1_2, 3)
							__UpperCAmelCase			:							int	    =	np.array([0.2_8_6_7, 0.1_9_7_4, 0.1_4_8_1, 0.7_2_9_4, 0.7_2_5_1, 0.6_6_6_7, 0.4_1_9_4, 0.5_6_4_2, 0.6_4_8_6])

							assert np.abs(image_slice.flatten() - expected_slice).max() < 1e-3


	def  A(    self):
							__UpperCAmelCase			:							Union[str, Any]	    =	LMSDiscreteScheduler.from_pretrained(
							    '''runwayml/stable-diffusion-v1-5'''				,     subfolder='''scheduler'''				,     revision='''onnx''')
							__UpperCAmelCase			:							Union[str, Any]	    =	OnnxStableDiffusionPipeline.from_pretrained(
							    '''runwayml/stable-diffusion-v1-5'''				,     revision='''onnx'''				,     scheduler=lowercase__				,     safety_checker=lowercase__				,     feature_extractor=lowercase__				,     provider=self.gpu_provider				,     sess_options=self.gpu_options				,     )
							sd_pipe.set_progress_bar_config(disable=lowercase__)

							__UpperCAmelCase			:							Optional[Any]	    =	'''open neural network exchange'''
							__UpperCAmelCase			:							Optional[int]	    =	np.random.RandomState(0)
							__UpperCAmelCase			:							Dict	    =	sd_pipe([prompt]				,     guidance_scale=7.5				,     num_inference_steps=1_0				,     generator=lowercase__				,     output_type='''np''')
							__UpperCAmelCase			:							Union[str, Any]	    =	output.images
							__UpperCAmelCase			:							str	    =	image[0, -3:, -3:, -1]

							assert image.shape == (1, 5_1_2, 5_1_2, 3)
							__UpperCAmelCase			:							Optional[int]	    =	np.array([0.2_3_0_6, 0.1_9_5_9, 0.1_5_9_3, 0.6_5_4_9, 0.6_3_9_4, 0.5_4_0_8, 0.5_0_6_5, 0.6_0_1_0, 0.6_1_6_1])

							assert np.abs(image_slice.flatten() - expected_slice).max() < 1e-3


	def  A(    self):
							__UpperCAmelCase			:							Tuple	    =	0

							def test_callback_fn(lowercase__				,     lowercase__				,     lowercase__) -> None:
													__UpperCAmelCase			:							Optional[Any]	    =	True
													nonlocal number_of_steps
													number_of_steps += 1
													if step == 0:
																			assert latents.shape == (1, 4, 6_4, 6_4)
																			__UpperCAmelCase			:							Union[str, Any]	    =	latents[0, -3:, -3:, -1]
																			__UpperCAmelCase			:							Optional[Any]	    =	np.array(
																			    [-0.6_7_7_2, -0.3_8_3_5, -1.2_4_5_6, 0.1_9_0_5, -1.0_9_7_4, 0.6_9_6_7, -1.9_3_5_3, 0.0_1_7_8, 1.0_1_6_7])

																			assert np.abs(latents_slice.flatten() - expected_slice).max() < 1e-3
													elif step == 5:
																			assert latents.shape == (1, 4, 6_4, 6_4)
																			__UpperCAmelCase			:							Union[str, Any]	    =	latents[0, -3:, -3:, -1]
																			__UpperCAmelCase			:							Dict	    =	np.array(
																			    [-0.3_3_5_1, 0.2_2_4_1, -0.1_8_3_7, -0.2_3_2_5, -0.6_5_7_7, 0.3_3_9_3, -0.0_2_4_1, 0.5_8_9_9, 1.3_8_7_5])

																			assert np.abs(latents_slice.flatten() - expected_slice).max() < 1e-3

							__UpperCAmelCase			:							str	    =	False

							__UpperCAmelCase			:							List[str]	    =	OnnxStableDiffusionPipeline.from_pretrained(
							    '''runwayml/stable-diffusion-v1-5'''				,     revision='''onnx'''				,     safety_checker=lowercase__				,     feature_extractor=lowercase__				,     provider=self.gpu_provider				,     sess_options=self.gpu_options				,     )
							pipe.set_progress_bar_config(disable=lowercase__)

							__UpperCAmelCase			:							Union[str, Any]	    =	'''Andromeda galaxy in a bottle'''

							__UpperCAmelCase			:							List[Any]	    =	np.random.RandomState(0)
							pipe(
							    prompt=lowercase__				,     num_inference_steps=5				,     guidance_scale=7.5				,     generator=lowercase__				,     callback=lowercase__				,     callback_steps=1				,     )
							assert test_callback_fn.has_been_called
							assert number_of_steps == 6


	def  A(    self):
							__UpperCAmelCase			:							Union[str, Any]	    =	OnnxStableDiffusionPipeline.from_pretrained(
							    '''runwayml/stable-diffusion-v1-5'''				,     revision='''onnx'''				,     safety_checker=lowercase__				,     feature_extractor=lowercase__				,     provider=self.gpu_provider				,     sess_options=self.gpu_options				,     )
							assert isinstance(lowercase__				,     lowercase__)
							assert pipe.safety_checker is None

							__UpperCAmelCase			:							Union[str, Any]	    =	pipe('''example prompt'''				,     num_inference_steps=2).images[0]
							assert image is not None

							# check that there's no error when saving a pipeline with one of the models being None
							with tempfile.TemporaryDirectory() as tmpdirname:
													pipe.save_pretrained(lowercase__)
													__UpperCAmelCase			:							List[Any]	    =	OnnxStableDiffusionPipeline.from_pretrained(lowercase__)

							# sanity check that the pipeline still works
							assert pipe.safety_checker is None
							__UpperCAmelCase			:							Optional[int]	    =	pipe('''example prompt'''				,     num_inference_steps=2).images[0]
							assert image is not None

