




"""simple docstring"""




import copy
import os
from typing import Union

from ...configuration_utils import PretrainedConfig
from ...utils import logging


a_        =       logging.get_logger(__name__)

a_        =       {
    'BAAI/AltCLIP': 'https://huggingface.co/BAAI/AltCLIP/resolve/main/config.json',
    # See all AltCLIP models at https://huggingface.co/models?filter=altclip
}

class   UpperCAmelCase_    (			snake_case		):
		UpperCamelCase							="altclip_text_model"
		def __init__(						self				,						UpperCamelCase_=25_00_02				,						UpperCamelCase_=10_24				,						UpperCamelCase_=24				,						UpperCamelCase_=16				,						UpperCamelCase_=40_96				,						UpperCamelCase_="gelu"				,						UpperCamelCase_=0.1				,						UpperCamelCase_=0.1				,						UpperCamelCase_=5_14				,						UpperCamelCase_=1				,						UpperCamelCase_=0.0_2				,						UpperCamelCase_=0.0_2				,						UpperCamelCase_=1E-05				,						UpperCamelCase_=1				,						UpperCamelCase_=0				,						UpperCamelCase_=2				,						UpperCamelCase_="absolute"				,						UpperCamelCase_=True				,						UpperCamelCase_=7_68				,						**UpperCamelCase_				,						)						->       List[str]:
					super().__init__(pad_token_id=UpperCamelCase_				,						bos_token_id=UpperCamelCase_				,						eos_token_id=UpperCamelCase_				,						**UpperCamelCase_       )

					__lowercase			:  List[str]								=       vocab_size
					__lowercase			:  Optional[int]								=       hidden_size
					__lowercase			:  Optional[Any]								=       num_hidden_layers
					__lowercase			:  Optional[int]								=       num_attention_heads
					__lowercase			:  Optional[Any]								=       hidden_act
					__lowercase			:  int								=       intermediate_size
					__lowercase			:  str								=       hidden_dropout_prob
					__lowercase			:  List[Any]								=       attention_probs_dropout_prob
					__lowercase			:  int								=       max_position_embeddings
					__lowercase			:  Dict								=       type_vocab_size
					__lowercase			:  int								=       initializer_range
					__lowercase			:  Optional[int]								=       initializer_factor
					__lowercase			:  Union[str, Any]								=       layer_norm_eps
					__lowercase			:  int								=       position_embedding_type
					__lowercase			:  Optional[Any]								=       use_cache
					__lowercase			:  Optional[Any]								=       project_dim


class   UpperCAmelCase_    (			snake_case		):
		UpperCamelCase							="altclip_vision_model"
		def __init__(						self				,						UpperCamelCase_=7_68				,						UpperCamelCase_=30_72				,						UpperCamelCase_=5_12				,						UpperCamelCase_=12				,						UpperCamelCase_=12				,						UpperCamelCase_=3				,						UpperCamelCase_=2_24				,						UpperCamelCase_=32				,						UpperCamelCase_="quick_gelu"				,						UpperCamelCase_=1E-5				,						UpperCamelCase_=0.0				,						UpperCamelCase_=0.0_2				,						UpperCamelCase_=1.0				,						**UpperCamelCase_				,						)						->       Optional[int]:
					super().__init__(**UpperCamelCase_       )

					__lowercase			:  Tuple								=       hidden_size
					__lowercase			:  Optional[int]								=       intermediate_size
					__lowercase			:  int								=       projection_dim
					__lowercase			:  Tuple								=       num_hidden_layers
					__lowercase			:  str								=       num_attention_heads
					__lowercase			:  str								=       num_channels
					__lowercase			:  int								=       patch_size
					__lowercase			:  List[str]								=       image_size
					__lowercase			:  Optional[int]								=       initializer_range
					__lowercase			:  Union[str, Any]								=       initializer_factor
					__lowercase			:  Optional[int]								=       attention_dropout
					__lowercase			:  str								=       layer_norm_eps
					__lowercase			:  Dict								=       hidden_act
		@classmethod
		def 	_lowerCamelCase							(						cls				,						UpperCamelCase_				,						**UpperCamelCase_       )						->       "PretrainedConfig":
					cls._set_token_in_kwargs(UpperCamelCase_       )

					__lowercase			,__lowercase			:  Optional[Any]								=       cls.get_config_dict(UpperCamelCase_				,						**UpperCamelCase_       )

					# get the vision config dict if we are loading from AltCLIPConfig
					if config_dict.get('''model_type'''       ) == "altclip":
								__lowercase			:  int								=       config_dict['''vision_config''']

					if "model_type" in config_dict and hasattr(cls				,						'''model_type'''       ) and config_dict["model_type"] != cls.model_type:
								logger.warning(
								    F"""You are using a model of type {config_dict["model_type"]} to instantiate a model of type """
								    F"""{cls.model_type}. This is not supported for all configurations of models and can yield errors."""       )

					return cls.from_dict(UpperCamelCase_				,						**UpperCamelCase_       )


class   UpperCAmelCase_    (			snake_case		):
		UpperCamelCase							="altclip"
		UpperCamelCase							=True
		def __init__(						self				,						UpperCamelCase_=None				,						UpperCamelCase_=None				,						UpperCamelCase_=7_68				,						UpperCamelCase_=2.6_5_9_2				,						**UpperCamelCase_       )						->       Optional[int]:
					# If `_config_dict` exist, we use them for the backward compatibility.
					# We pop out these 2 attributes before calling `super().__init__` to avoid them being saved (which causes a lot
					# of confusion!).
					__lowercase			:  Optional[Any]								=       kwargs.pop('''text_config_dict'''				,						UpperCamelCase_       )
					__lowercase			:  Tuple								=       kwargs.pop('''vision_config_dict'''				,						UpperCamelCase_       )

					super().__init__(**UpperCamelCase_       )

					# Instead of simply assigning `[text|vision]_config_dict` to `[text|vision]_config`, we use the values in
					# `[text|vision]_config_dict` to update the values in `[text|vision]_config`. The values should be same in most
					# cases, but we don't want to break anything regarding `_config_dict` that existed before commit `8827e1b2`.
					if text_config_dict is not None:
								if text_config is None:
											__lowercase			:  Any								=       {}

								# This is the complete result when using `text_config_dict`.
								__lowercase			:  Any								=       AltCLIPTextConfig(**UpperCamelCase_       ).to_dict()

								# Give a warning if the values exist in both `_text_config_dict` and `text_config` but being different.
								for key, value in _text_config_dict.items():
											if key in text_config and value != text_config[key] and key not in ["transformers_version"]:
														# If specified in `text_config_dict`
														if key in text_config_dict:
																	__lowercase			:  Union[str, Any]								=       (
																	    F"""`{key}` is found in both `text_config_dict` and `text_config` but with different values. """
																	    F"""The value `text_config_dict[\"{key}\"]` will be used instead."""
																	)
														# If inferred from default argument values (just to be super careful)
														else:
																	__lowercase			:  Tuple								=       (
																	    F"""`text_config_dict` is provided which will be used to initialize `AltCLIPTextConfig`. The """
																	    F"""value `text_config[\"{key}\"]` will be overriden."""
																	)
														logger.warning(UpperCamelCase_       )

            # Update all values in `text_config` with the ones in `_text_config_dict`.
								text_config.update(_text_config_dict       )

					if vision_config_dict is not None:
								if vision_config is None:
											__lowercase			:  Optional[Any]								=       {}

								# This is the complete result when using `vision_config_dict`.
								__lowercase			:  List[str]								=       AltCLIPVisionConfig(**UpperCamelCase_       ).to_dict()
								# convert keys to string instead of integer
								if "id2label" in _vision_config_dict:
											__lowercase			:  Any								=       {
											    str(UpperCamelCase_       ): value for key, value in _vision_config_dict['''id2label'''].items()
											}

								# Give a warning if the values exist in both `_vision_config_dict` and `vision_config` but being different.
								for key, value in _vision_config_dict.items():
											if key in vision_config and value != vision_config[key] and key not in ["transformers_version"]:
														# If specified in `vision_config_dict`
														if key in vision_config_dict:
																	__lowercase			:  Union[str, Any]								=       (
																	    F"""`{key}` is found in both `vision_config_dict` and `vision_config` but with different """
																	    F"""values. The value `vision_config_dict[\"{key}\"]` will be used instead."""
																	)
														# If inferred from default argument values (just to be super careful)
														else:
																	__lowercase			:  Optional[int]								=       (
																	    F"""`vision_config_dict` is provided which will be used to initialize `AltCLIPVisionConfig`. """
																	    F"""The value `vision_config[\"{key}\"]` will be overriden."""
																	)
														logger.warning(UpperCamelCase_       )

            # Update all values in `vision_config` with the ones in `_vision_config_dict`.
								vision_config.update(_vision_config_dict       )

					if text_config is None:
								__lowercase			:  Optional[int]								=       {}
								logger.info('''`text_config` is `None`. Initializing the `AltCLIPTextConfig` with default values.'''       )

					if vision_config is None:
								__lowercase			:  Tuple								=       {}
								logger.info('''`vision_config` is `None`. initializing the `AltCLIPVisionConfig` with default values.'''       )

					__lowercase			:  Union[str, Any]								=       AltCLIPTextConfig(**UpperCamelCase_       )
					__lowercase			:  List[Any]								=       AltCLIPVisionConfig(**UpperCamelCase_       )

					__lowercase			:  str								=       projection_dim
					__lowercase			:  str								=       logit_scale_init_value
					__lowercase			:  List[Any]								=       1.0
		@classmethod
		def 	_lowerCamelCase							(						cls				,						UpperCamelCase_				,						UpperCamelCase_				,						**UpperCamelCase_       )						->       Optional[int]:
					return cls(text_config=text_config.to_dict()				,						vision_config=vision_config.to_dict()				,						**UpperCamelCase_       )
		def 	_lowerCamelCase							(						self       )						->       Optional[int]:
					__lowercase			:  List[Any]								=       copy.deepcopy(self.__dict__       )
					__lowercase			:  Optional[Any]								=       self.text_config.to_dict()
					__lowercase			:  int								=       self.vision_config.to_dict()
					__lowercase			:  Optional[int]								=       self.__class__.model_type
					return output







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



@pytest.fixture(scope='session'					)
def 							UpperCamelCase_( lowerCamelCase_				,					lowerCamelCase_					)       ->		int:
    _lowercase			:				int 						=						str(tmp_path_factory.mktemp('data'					) / 'file.arrow'					)
    dataset.map(cache_file_name=lowerCamelCase_					)
    return filename


# FILE_CONTENT + files


SCREAMING_SNAKE_CASE			: str				   =					"\\n    Text data.\n    Second line of data."



@pytest.fixture(scope='session'					)
def 							UpperCamelCase_( lowerCamelCase_					)       ->		List[Any]:
    _lowercase			:				str 						=						tmp_path_factory.mktemp('data'					) / 'file.txt'
    _lowercase			:				List[str] 						=						FILE_CONTENT
    with open(lowerCamelCase_				,					'w'					) as f:
        f.write(lowerCamelCase_					)
    return filename



@pytest.fixture(scope='session'					)
def 							UpperCamelCase_( lowerCamelCase_					)       ->		Tuple:
    import bza

    _lowercase			:				Any 						=						tmp_path_factory.mktemp('data'					) / 'file.txt.bz2'
    _lowercase			:				Optional[Any] 						=						bytes(lowerCamelCase_				,					'utf-8'					)
    with bza.open(lowerCamelCase_				,					'wb'					) as f:
        f.write(lowerCamelCase_					)
    return path



@pytest.fixture(scope='session'					)
def 							UpperCamelCase_( lowerCamelCase_					)       ->		List[Any]:
    import gzip

    _lowercase			:				Optional[int] 						=						str(tmp_path_factory.mktemp('data'					) / 'file.txt.gz'					)
    _lowercase			:				Optional[int] 						=						bytes(lowerCamelCase_				,					'utf-8'					)
    with gzip.open(lowerCamelCase_				,					'wb'					) as f:
        f.write(lowerCamelCase_					)
    return path



@pytest.fixture(scope='session'					)
def 							UpperCamelCase_( lowerCamelCase_					)       ->		str:
    if datasets.config.LZ4_AVAILABLE:
        import lza.frame

        _lowercase			:				Any 						=						tmp_path_factory.mktemp('data'					) / 'file.txt.lz4'
        _lowercase			:				Optional[Any] 						=						bytes(lowerCamelCase_				,					'utf-8'					)
        with lza.frame.open(lowerCamelCase_				,					'wb'					) as f:
            f.write(lowerCamelCase_					)
        return path



@pytest.fixture(scope='session'					)
def 							UpperCamelCase_( lowerCamelCase_				,					lowerCamelCase_					)       ->		str:
    if datasets.config.PY7ZR_AVAILABLE:
        import pyazr

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



@pytest.fixture(scope='session'					)
def 							UpperCamelCase_( lowerCamelCase_				,					lowerCamelCase_					)       ->		List[str]:
    import tarfile

    _lowercase			:				Optional[Any] 						=						tmp_path_factory.mktemp('data'					) / 'file.txt.tar'
    with tarfile.TarFile(lowerCamelCase_				,					'w'					) as f:
        f.add(lowerCamelCase_				,					arcname=os.path.basename(lowerCamelCase_					)					)
    return path



@pytest.fixture(scope='session'					)
def 							UpperCamelCase_( lowerCamelCase_					)       ->		str:
    import lzma

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



@pytest.fixture(scope='session'					)
def 							UpperCamelCase_( lowerCamelCase_				,					lowerCamelCase_					)       ->		str:
    import zipfile

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



@pytest.fixture(scope='session'					)
def 							UpperCamelCase_( lowerCamelCase_					)       ->		Optional[Any]:
    if datasets.config.ZSTANDARD_AVAILABLE:
        import zstandard as zstd

        _lowercase			:				Optional[Any] 						=						tmp_path_factory.mktemp('data'					) / 'file.txt.zst'
        _lowercase			:				Dict 						=						bytes(lowerCamelCase_				,					'utf-8'					)
        with zstd.open(lowerCamelCase_				,					'wb'					) as f:
            f.write(lowerCamelCase_					)
        return path



@pytest.fixture(scope='session'					)
def 							UpperCamelCase_( lowerCamelCase_					)       ->		str:
    _lowercase			:				Union[str, Any] 						=						tmp_path_factory.mktemp('data'					) / 'file.xml'
    _lowercase			:				Optional[Any] 						=						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(lowerCamelCase_				,					'w'					) as f:
        f.write(lowerCamelCase_					)
    return filename


SCREAMING_SNAKE_CASE			: Dict				   =					[
    {"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},
]
SCREAMING_SNAKE_CASE			: Dict				   =					[
    {"col_1": "4", "col_2": 4, "col_3": 4.0},
    {"col_1": "5", "col_2": 5, "col_3": 5.0},
]
SCREAMING_SNAKE_CASE			: Optional[Any]				   =					{
    "col_1": ["0", "1", "2", "3"],
    "col_2": [0, 1, 2, 3],
    "col_3": [0.0, 1.0, 2.0, 3.0],
}

SCREAMING_SNAKE_CASE			: Tuple				   =					[
    {"col_3": 0.0, "col_1": "0", "col_2": 0},
    {"col_3": 1.0, "col_1": "1", "col_2": 1},
]

SCREAMING_SNAKE_CASE			: Any				   =					[
    {"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 							UpperCamelCase_( )       ->		List[str]:
    return DATA_DICT_OF_LISTS



@pytest.fixture(scope='session'					)
def 							UpperCamelCase_( lowerCamelCase_					)       ->		Dict:
    _lowercase			:				Optional[int] 						=						datasets.Dataset.from_dict(lowerCamelCase_					)
    _lowercase			:				List[Any] 						=						str(tmp_path_factory.mktemp('data'					) / 'dataset.arrow'					)
    dataset.map(cache_file_name=lowerCamelCase_					)
    return path



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



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



@pytest.fixture(scope='session'					)
def 							UpperCamelCase_( lowerCamelCase_				,					lowerCamelCase_					)       ->		Any:
    import bza

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



@pytest.fixture(scope='session'					)
def 							UpperCamelCase_( lowerCamelCase_				,					lowerCamelCase_				,					lowerCamelCase_					)       ->		Optional[int]:
    _lowercase			:				Optional[Any] 						=						tmp_path_factory.mktemp('data'					) / 'dataset.csv.zip'
    with zipfile.ZipFile(lowerCamelCase_				,					'w'					) as f:
        f.write(lowerCamelCase_				,					arcname=os.path.basename(lowerCamelCase_					)					)
        f.write(lowerCamelCase_				,					arcname=os.path.basename(lowerCamelCase_					)					)
    return path



@pytest.fixture(scope='session'					)
def 							UpperCamelCase_( lowerCamelCase_				,					lowerCamelCase_				,					lowerCamelCase_					)       ->		Optional[Any]:
    _lowercase			:				str 						=						tmp_path_factory.mktemp('data'					) / 'dataset.csv.zip'
    with zipfile.ZipFile(lowerCamelCase_				,					'w'					) as f:
        f.write(lowerCamelCase_				,					arcname=os.path.basename(csv_path.replace('.csv'				,					'.CSV'					)					)					)
        f.write(lowerCamelCase_				,					arcname=os.path.basename(csva_path.replace('.csv'				,					'.CSV'					)					)					)
    return path



@pytest.fixture(scope='session'					)
def 							UpperCamelCase_( lowerCamelCase_				,					lowerCamelCase_				,					lowerCamelCase_					)       ->		Union[str, Any]:
    _lowercase			:				Union[str, Any] 						=						tmp_path_factory.mktemp('data'					) / 'dataset_with_dir.csv.zip'
    with zipfile.ZipFile(lowerCamelCase_				,					'w'					) as f:
        f.write(lowerCamelCase_				,					arcname=os.path.join('main_dir'				,					os.path.basename(lowerCamelCase_					)					)					)
        f.write(lowerCamelCase_				,					arcname=os.path.join('main_dir'				,					os.path.basename(lowerCamelCase_					)					)					)
    return path



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



@pytest.fixture(scope='session'					)
def 							UpperCamelCase_( lowerCamelCase_					)       ->		Optional[Any]:
    _lowercase			:				Optional[Any] 						=						str(tmp_path_factory.mktemp('data'					) / 'dataset.json'					)
    _lowercase			:				List[Any] 						=						{'data': DATA}
    with open(lowerCamelCase_				,					'w'					) as f:
        json.dump(lowerCamelCase_				,					lowerCamelCase_					)
    return path



@pytest.fixture(scope='session'					)
def 							UpperCamelCase_( lowerCamelCase_					)       ->		Any:
    _lowercase			:				Tuple 						=						str(tmp_path_factory.mktemp('data'					) / 'dataset.json'					)
    _lowercase			:				Optional[Any] 						=						{'data': DATA_DICT_OF_LISTS}
    with open(lowerCamelCase_				,					'w'					) as f:
        json.dump(lowerCamelCase_				,					lowerCamelCase_					)
    return path



@pytest.fixture(scope='session'					)
def 							UpperCamelCase_( lowerCamelCase_					)       ->		Union[str, Any]:
    _lowercase			:				Any 						=						str(tmp_path_factory.mktemp('data'					) / 'dataset.jsonl'					)
    with open(lowerCamelCase_				,					'w'					) as f:
        for item in DATA:
            f.write(json.dumps(lowerCamelCase_					) + '\n'					)
    return path



@pytest.fixture(scope='session'					)
def 							UpperCamelCase_( lowerCamelCase_					)       ->		Dict:
    _lowercase			:				Dict 						=						str(tmp_path_factory.mktemp('data'					) / 'dataset2.jsonl'					)
    with open(lowerCamelCase_				,					'w'					) as f:
        for item in DATA:
            f.write(json.dumps(lowerCamelCase_					) + '\n'					)
    return path



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



@pytest.fixture(scope='session'					)
def 							UpperCamelCase_( lowerCamelCase_					)       ->		List[Any]:
    _lowercase			:				str 						=						str(tmp_path_factory.mktemp('data'					) / 'dataset-str.jsonl'					)
    with open(lowerCamelCase_				,					'w'					) as f:
        for item in DATA_STR:
            f.write(json.dumps(lowerCamelCase_					) + '\n'					)
    return path



@pytest.fixture(scope='session'					)
def 							UpperCamelCase_( lowerCamelCase_				,					lowerCamelCase_					)       ->		Optional[Any]:
    import gzip

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



@pytest.fixture(scope='session'					)
def 							UpperCamelCase_( lowerCamelCase_				,					lowerCamelCase_					)       ->		Dict:
    import gzip

    _lowercase			:				Optional[int] 						=						str(tmp_path_factory.mktemp('data'					) / 'dataset.jsonl.gz'					)
    with open(lowerCamelCase_				,					'rb'					) as orig_file:
        with gzip.open(lowerCamelCase_				,					'wb'					) as zipped_file:
            zipped_file.writelines(lowerCamelCase_					)
    return path



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



@pytest.fixture(scope='session'					)
def 							UpperCamelCase_( lowerCamelCase_				,					lowerCamelCase_				,					lowerCamelCase_				,					lowerCamelCase_					)       ->		str:
    _lowercase			:				str 						=						tmp_path_factory.mktemp('data'					) / 'dataset_nested.jsonl.zip'
    with zipfile.ZipFile(lowerCamelCase_				,					'w'					) as f:
        f.write(lowerCamelCase_				,					arcname=os.path.join('nested'				,					os.path.basename(lowerCamelCase_					)					)					)
    return path



@pytest.fixture(scope='session'					)
def 							UpperCamelCase_( lowerCamelCase_				,					lowerCamelCase_				,					lowerCamelCase_					)       ->		int:
    _lowercase			:				Optional[Any] 						=						tmp_path_factory.mktemp('data'					) / 'dataset_with_dir.jsonl.zip'
    with zipfile.ZipFile(lowerCamelCase_				,					'w'					) as f:
        f.write(lowerCamelCase_				,					arcname=os.path.join('main_dir'				,					os.path.basename(lowerCamelCase_					)					)					)
        f.write(lowerCamelCase_				,					arcname=os.path.join('main_dir'				,					os.path.basename(lowerCamelCase_					)					)					)
    return path



@pytest.fixture(scope='session'					)
def 							UpperCamelCase_( lowerCamelCase_				,					lowerCamelCase_				,					lowerCamelCase_					)       ->		Optional[int]:
    _lowercase			:				Tuple 						=						tmp_path_factory.mktemp('data'					) / 'dataset.jsonl.tar'
    with tarfile.TarFile(lowerCamelCase_				,					'w'					) as f:
        f.add(lowerCamelCase_				,					arcname=os.path.basename(lowerCamelCase_					)					)
        f.add(lowerCamelCase_				,					arcname=os.path.basename(lowerCamelCase_					)					)
    return path



@pytest.fixture(scope='session'					)
def 							UpperCamelCase_( lowerCamelCase_				,					lowerCamelCase_				,					lowerCamelCase_				,					lowerCamelCase_					)       ->		Any:
    _lowercase			:				str 						=						tmp_path_factory.mktemp('data'					) / 'dataset_nested.jsonl.tar'
    with tarfile.TarFile(lowerCamelCase_				,					'w'					) as f:
        f.add(lowerCamelCase_				,					arcname=os.path.join('nested'				,					os.path.basename(lowerCamelCase_					)					)					)
    return path



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



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



@pytest.fixture(scope='session'					)
def 							UpperCamelCase_( lowerCamelCase_					)       ->		List[str]:
    _lowercase			:				List[Any] 						=						['0', '1', '2', '3']
    _lowercase			:				Optional[int] 						=						tmp_path_factory.mktemp('data'					) / 'dataset.abc'
    with open(lowerCamelCase_				,					'w'					) as f:
        for item in data:
            f.write(item + '\n'					)
    return path



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



@pytest.fixture(scope='session'					)
def 							UpperCamelCase_( lowerCamelCase_				,					lowerCamelCase_				,					lowerCamelCase_					)       ->		Dict:
    _lowercase			:				List[Any] 						=						tmp_path_factory.mktemp('data'					) / 'dataset_with_dir.text.zip'
    with zipfile.ZipFile(lowerCamelCase_				,					'w'					) as f:
        f.write(lowerCamelCase_				,					arcname=os.path.join('main_dir'				,					os.path.basename(lowerCamelCase_					)					)					)
        f.write(lowerCamelCase_				,					arcname=os.path.join('main_dir'				,					os.path.basename(lowerCamelCase_					)					)					)
    return path



@pytest.fixture(scope='session'					)
def 							UpperCamelCase_( lowerCamelCase_				,					lowerCamelCase_				,					lowerCamelCase_					)       ->		str:
    _lowercase			:				Any 						=						tmp_path_factory.mktemp('data'					) / 'dataset.ext.zip'
    with zipfile.ZipFile(lowerCamelCase_				,					'w'					) as f:
        f.write(lowerCamelCase_				,					arcname=os.path.basename('unsupported.ext'					)					)
        f.write(lowerCamelCase_				,					arcname=os.path.basename('unsupported_2.ext'					)					)
    return path



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



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



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



@pytest.fixture(scope='session'					)
def 							UpperCamelCase_( lowerCamelCase_				,					lowerCamelCase_					)       ->		Any:
    _lowercase			:				Dict 						=						tmp_path_factory.mktemp('data'					) / 'dataset.img.zip'
    with zipfile.ZipFile(lowerCamelCase_				,					'w'					) as f:
        f.write(lowerCamelCase_				,					arcname=os.path.basename(lowerCamelCase_					)					)
        f.write(lowerCamelCase_				,					arcname=os.path.basename(lowerCamelCase_					).replace('.jpg'				,					'2.jpg'					)					)
    return path



@pytest.fixture(scope='session'					)
def 							UpperCamelCase_( lowerCamelCase_					)       ->		Optional[Any]:
    _lowercase			:				str 						=						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


