


'''simple docstring'''
from typing import TYPE_CHECKING

from ...utils import (
    OptionalDependencyNotAvailable,
    _LazyModule,
    is_flax_available,
    is_tf_available,
    is_tokenizers_available,
    is_torch_available,
)


UpperCAmelCase_ :     List[str]								=      {
    'configuration_distilbert': [
        'DISTILBERT_PRETRAINED_CONFIG_ARCHIVE_MAP',
        'DistilBertConfig',
        'DistilBertOnnxConfig',
    ],
    'tokenization_distilbert': ['DistilBertTokenizer'],
}

try:
 if not is_tokenizers_available():
  raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
 pass
else:
 UpperCAmelCase_ :     Optional[int]								=      ['DistilBertTokenizerFast']

try:
 if not is_torch_available():
  raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
 pass
else:
 UpperCAmelCase_ :     List[str]								=      [
     'DISTILBERT_PRETRAINED_MODEL_ARCHIVE_LIST',
     'DistilBertForMaskedLM',
     'DistilBertForMultipleChoice',
     'DistilBertForQuestionAnswering',
     'DistilBertForSequenceClassification',
     'DistilBertForTokenClassification',
     'DistilBertModel',
     'DistilBertPreTrainedModel',
 ]

try:
 if not is_tf_available():
  raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
 pass
else:
 UpperCAmelCase_ :     int								=      [
     'TF_DISTILBERT_PRETRAINED_MODEL_ARCHIVE_LIST',
     'TFDistilBertForMaskedLM',
     'TFDistilBertForMultipleChoice',
     'TFDistilBertForQuestionAnswering',
     'TFDistilBertForSequenceClassification',
     'TFDistilBertForTokenClassification',
     'TFDistilBertMainLayer',
     'TFDistilBertModel',
     'TFDistilBertPreTrainedModel',
 ]

try:
 if not is_flax_available():
  raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
 pass
else:
 UpperCAmelCase_ :     int								=      [
     'FlaxDistilBertForMaskedLM',
     'FlaxDistilBertForMultipleChoice',
     'FlaxDistilBertForQuestionAnswering',
     'FlaxDistilBertForSequenceClassification',
     'FlaxDistilBertForTokenClassification',
     'FlaxDistilBertModel',
     'FlaxDistilBertPreTrainedModel',
 ]


if TYPE_CHECKING:
 from .configuration_distilbert import (
     DISTILBERT_PRETRAINED_CONFIG_ARCHIVE_MAP,
     DistilBertConfig,
     DistilBertOnnxConfig,
 )
 from .tokenization_distilbert import DistilBertTokenizer

 try:
  if not is_tokenizers_available():
   raise OptionalDependencyNotAvailable()
 except OptionalDependencyNotAvailable:
  pass
 else:
  from .tokenization_distilbert_fast import DistilBertTokenizerFast

 try:
  if not is_torch_available():
   raise OptionalDependencyNotAvailable()
 except OptionalDependencyNotAvailable:
  pass
 else:
  from .modeling_distilbert import (
      DISTILBERT_PRETRAINED_MODEL_ARCHIVE_LIST,
      DistilBertForMaskedLM,
      DistilBertForMultipleChoice,
      DistilBertForQuestionAnswering,
      DistilBertForSequenceClassification,
      DistilBertForTokenClassification,
      DistilBertModel,
      DistilBertPreTrainedModel,
  )

 try:
  if not is_tf_available():
   raise OptionalDependencyNotAvailable()
 except OptionalDependencyNotAvailable:
  pass
 else:
  from .modeling_tf_distilbert import (
      TF_DISTILBERT_PRETRAINED_MODEL_ARCHIVE_LIST,
      TFDistilBertForMaskedLM,
      TFDistilBertForMultipleChoice,
      TFDistilBertForQuestionAnswering,
      TFDistilBertForSequenceClassification,
      TFDistilBertForTokenClassification,
      TFDistilBertMainLayer,
      TFDistilBertModel,
      TFDistilBertPreTrainedModel,
  )

 try:
  if not is_flax_available():
   raise OptionalDependencyNotAvailable()
 except OptionalDependencyNotAvailable:
  pass
 else:
  from .modeling_flax_distilbert import (
      FlaxDistilBertForMaskedLM,
      FlaxDistilBertForMultipleChoice,
      FlaxDistilBertForQuestionAnswering,
      FlaxDistilBertForSequenceClassification,
      FlaxDistilBertForTokenClassification,
      FlaxDistilBertModel,
      FlaxDistilBertPreTrainedModel,
  )

else:
 import sys

 UpperCAmelCase_ :     int								=      _LazyModule(__name__, globals()['__file__'], _import_structure, module_spec=__spec__)










'''simple docstring'''
import os
from pathlib import Path
from unittest.mock import patch

import pytest
import zstandard as zstd

from datasets.download.download_config import DownloadConfig
from datasets.utils.file_utils import (
    OfflineModeIsEnabled,
    cached_path,
    fsspec_get,
    fsspec_head,
    ftp_get,
    ftp_head,
    get_from_cache,
    http_get,
    http_head,
)


UpperCAmelCase_ :     int								=      '\\n    Text data.\n    Second line of data.'

UpperCAmelCase_ :     Tuple								=      'file'


@pytest.fixture(scope='session'			)
def 			_lowercase       (				UpperCamelCase__       :					Any			):
 __A  :		Optional[Any]       =			tmp_path_factory.mktemp('data'			) / (FILE_PATH + '.zstd')
 __A  :		Optional[int]       =			bytes(UpperCamelCase__,				'utf-8'			)
 with zstd.open(UpperCamelCase__,				'wb'			) as f:
  f.write(UpperCamelCase__			)
 return path


@pytest.fixture
def 			_lowercase       (				UpperCamelCase__       :					Optional[Any]			):
 with open(os.path.join(tmpfs.local_root_dir,				UpperCamelCase__			),				'w'			) as f:
  f.write(UpperCamelCase__			)
 return FILE_PATH


@pytest.mark.parametrize('compression_format',				['gzip', 'xz', 'zstd']			)
def 			_lowercase       (				UpperCamelCase__       :					List[Any],				UpperCamelCase__       :					Tuple,				UpperCamelCase__       :					Union[str, Any],				UpperCamelCase__       :					str,				UpperCamelCase__       :					Tuple,				UpperCamelCase__       :					List[str]			):
 __A  :		Any       =			{'gzip': gz_file, 'xz': xz_file, 'zstd': zstd_path}
 __A  :		str       =			input_paths[compression_format]
 __A  :		str       =			tmp_path / 'cache'
 __A  :		int       =			DownloadConfig(cache_dir=UpperCamelCase__,				extract_compressed_file=UpperCamelCase__			)
 __A  :		Tuple       =			cached_path(UpperCamelCase__,				download_config=UpperCamelCase__			)
 with open(UpperCamelCase__			) as f:
  __A  :		Union[str, Any]       =			f.read()
 with open(UpperCamelCase__			) as f:
  __A  :		int       =			f.read()
 assert extracted_file_content == expected_file_content


@pytest.mark.parametrize('default_extracted',				[True, False]			)
@pytest.mark.parametrize('default_cache_dir',				[True, False]			)
def 			_lowercase       (				UpperCamelCase__       :					List[Any],				UpperCamelCase__       :					Optional[int],				UpperCamelCase__       :					str,				UpperCamelCase__       :					int,				UpperCamelCase__       :					Dict			):
 __A  :		Optional[Any]       =			'custom_cache'
 __A  :		Dict       =			'custom_extracted_dir'
 __A  :		int       =			tmp_path / 'custom_extracted_path'
 if default_extracted:
  __A  :		List[str]       =			('downloads' if default_cache_dir else custom_cache_dir, 'extracted')
 else:
  monkeypatch.setattr('datasets.config.EXTRACTED_DATASETS_DIR',				UpperCamelCase__			)
  monkeypatch.setattr('datasets.config.EXTRACTED_DATASETS_PATH',				str(UpperCamelCase__			)			)
  __A  :		Optional[int]       =			custom_extracted_path.parts[-2:] if default_cache_dir else (custom_cache_dir, custom_extracted_dir)

 __A  :		Optional[Any]       =			xz_file
 __A  :		List[Any]       =			(
     DownloadConfig(extract_compressed_file=UpperCamelCase__			)
     if default_cache_dir
     else DownloadConfig(cache_dir=tmp_path / custom_cache_dir,				extract_compressed_file=UpperCamelCase__			)
 )
 __A  :		Tuple       =			cached_path(UpperCamelCase__,				download_config=UpperCamelCase__			)
 assert Path(UpperCamelCase__			).parent.parts[-2:] == expected


def 			_lowercase       (				UpperCamelCase__       :					Optional[int]			):
 # absolute path
 __A  :		Any       =			str(Path(UpperCamelCase__			).resolve()			)
 assert cached_path(UpperCamelCase__			) == text_file
 # relative path
 __A  :		Optional[Any]       =			str(Path(UpperCamelCase__			).resolve().relative_to(Path(os.getcwd()			)			)			)
 assert cached_path(UpperCamelCase__			) == text_file


def 			_lowercase       (				UpperCamelCase__       :					List[str]			):
 # absolute path
 __A  :		Any       =			str(tmp_path.resolve() / '__missing_file__.txt'			)
 with pytest.raises(UpperCamelCase__			):
  cached_path(UpperCamelCase__			)
 # relative path
 __A  :		Tuple       =			'./__missing_file__.txt'
 with pytest.raises(UpperCamelCase__			):
  cached_path(UpperCamelCase__			)


def 			_lowercase       (				UpperCamelCase__       :					Tuple			):
 __A  :		Optional[int]       =			get_from_cache(f"""tmp://{tmpfs_file}"""			)
 with open(UpperCamelCase__			) as f:
  __A  :		Tuple       =			f.read()
 assert output_file_content == FILE_CONTENT


@patch('datasets.config.HF_DATASETS_OFFLINE',				UpperCamelCase__			)
def 			_lowercase       (				):
 with pytest.raises(UpperCamelCase__			):
  cached_path('https://huggingface.co'			)


@patch('datasets.config.HF_DATASETS_OFFLINE',				UpperCamelCase__			)
def 			_lowercase       (				UpperCamelCase__       :					Optional[Any]			):
 __A  :		Optional[int]       =			tmp_path_factory.mktemp('data'			) / 'file.html'
 with pytest.raises(UpperCamelCase__			):
  http_get('https://huggingface.co',				temp_file=UpperCamelCase__			)
 with pytest.raises(UpperCamelCase__			):
  http_head('https://huggingface.co'			)


@patch('datasets.config.HF_DATASETS_OFFLINE',				UpperCamelCase__			)
def 			_lowercase       (				UpperCamelCase__       :					Any			):
 __A  :		Union[str, Any]       =			tmp_path_factory.mktemp('data'			) / 'file.html'
 with pytest.raises(UpperCamelCase__			):
  ftp_get('ftp://huggingface.co',				temp_file=UpperCamelCase__			)
 with pytest.raises(UpperCamelCase__			):
  ftp_head('ftp://huggingface.co'			)


@patch('datasets.config.HF_DATASETS_OFFLINE',				UpperCamelCase__			)
def 			_lowercase       (				UpperCamelCase__       :					Optional[Any]			):
 __A  :		Optional[int]       =			tmp_path_factory.mktemp('data'			) / 'file.html'
 with pytest.raises(UpperCamelCase__			):
  fsspec_get('s3://huggingface.co',				temp_file=UpperCamelCase__			)
 with pytest.raises(UpperCamelCase__			):
  fsspec_head('s3://huggingface.co'			)






