


"""simple docstring"""






from typing import TYPE_CHECKING

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


_lowerCamelCase     =  {
    'configuration_mobilebert': [
        'MOBILEBERT_PRETRAINED_CONFIG_ARCHIVE_MAP',
        'MobileBertConfig',
        'MobileBertOnnxConfig',
    ],
    'tokenization_mobilebert': ['MobileBertTokenizer'],
}

try:
		if not is_tokenizers_available():
				raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
		pass
else:
		_lowerCamelCase     =  ['MobileBertTokenizerFast']

try:
		if not is_torch_available():
				raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
		pass
else:
		_lowerCamelCase     =  [
		    'MOBILEBERT_PRETRAINED_MODEL_ARCHIVE_LIST',
		    'MobileBertForMaskedLM',
		    'MobileBertForMultipleChoice',
		    'MobileBertForNextSentencePrediction',
		    'MobileBertForPreTraining',
		    'MobileBertForQuestionAnswering',
		    'MobileBertForSequenceClassification',
		    'MobileBertForTokenClassification',
		    'MobileBertLayer',
		    'MobileBertModel',
		    'MobileBertPreTrainedModel',
		    'load_tf_weights_in_mobilebert',
		]

try:
		if not is_tf_available():
				raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
		pass
else:
		_lowerCamelCase     =  [
		    'TF_MOBILEBERT_PRETRAINED_MODEL_ARCHIVE_LIST',
		    'TFMobileBertForMaskedLM',
		    'TFMobileBertForMultipleChoice',
		    'TFMobileBertForNextSentencePrediction',
		    'TFMobileBertForPreTraining',
		    'TFMobileBertForQuestionAnswering',
		    'TFMobileBertForSequenceClassification',
		    'TFMobileBertForTokenClassification',
		    'TFMobileBertMainLayer',
		    'TFMobileBertModel',
		    'TFMobileBertPreTrainedModel',
		]


if TYPE_CHECKING:
		from .configuration_mobilebert import (
		    MOBILEBERT_PRETRAINED_CONFIG_ARCHIVE_MAP,
		    MobileBertConfig,
		    MobileBertOnnxConfig,
		)
		from .tokenization_mobilebert import MobileBertTokenizer

		try:
				if not is_tokenizers_available():
						raise OptionalDependencyNotAvailable()
		except OptionalDependencyNotAvailable:
				pass
		else:
				from .tokenization_mobilebert_fast import MobileBertTokenizerFast

		try:
				if not is_torch_available():
						raise OptionalDependencyNotAvailable()
		except OptionalDependencyNotAvailable:
				pass
		else:
				from .modeling_mobilebert import (
				    MOBILEBERT_PRETRAINED_MODEL_ARCHIVE_LIST,
				    MobileBertForMaskedLM,
				    MobileBertForMultipleChoice,
				    MobileBertForNextSentencePrediction,
				    MobileBertForPreTraining,
				    MobileBertForQuestionAnswering,
				    MobileBertForSequenceClassification,
				    MobileBertForTokenClassification,
				    MobileBertLayer,
				    MobileBertModel,
				    MobileBertPreTrainedModel,
				    load_tf_weights_in_mobilebert,
				)

		try:
				if not is_tf_available():
						raise OptionalDependencyNotAvailable()
		except OptionalDependencyNotAvailable:
				pass
		else:
				from .modeling_tf_mobilebert import (
				    TF_MOBILEBERT_PRETRAINED_MODEL_ARCHIVE_LIST,
				    TFMobileBertForMaskedLM,
				    TFMobileBertForMultipleChoice,
				    TFMobileBertForNextSentencePrediction,
				    TFMobileBertForPreTraining,
				    TFMobileBertForQuestionAnswering,
				    TFMobileBertForSequenceClassification,
				    TFMobileBertForTokenClassification,
				    TFMobileBertMainLayer,
				    TFMobileBertModel,
				    TFMobileBertPreTrainedModel,
				)

else:
		import sys

		_lowerCamelCase     =  _LazyModule(__name__, globals()['__file__'], _import_structure, module_spec=__spec__)




"""simple docstring"""






import json
import os
import tempfile

import transformers

import datasets
from utils import generate_example_dataset, get_duration


_lowerCamelCase     =  500000

_lowerCamelCase     ,     _lowerCamelCase     =  os.path.split(__file__)
_lowerCamelCase     =  os.path.join(RESULTS_BASEPATH, 'results', RESULTS_FILENAME.replace('.py', '.json'))


@get_duration
def __lowercase     (      lowerCamelCase_  :      datasets.Dataset						,					**lowerCamelCase_  :      Optional[int]  ):
				SCREAMING_SNAKE_CASE__     							=				dataset.map(**lowerCamelCase_  )


@get_duration
def __lowercase     (      lowerCamelCase_  :      datasets.Dataset						,					**lowerCamelCase_  :      Optional[int]  ):
				SCREAMING_SNAKE_CASE__     							=				dataset.filter(**lowerCamelCase_  )


def __lowercase     (      ):
				SCREAMING_SNAKE_CASE__     							=				{"num examples": SPEED_TEST_N_EXAMPLES}
				with tempfile.TemporaryDirectory() as tmp_dir:
								SCREAMING_SNAKE_CASE__     							=				datasets.Features({"text": datasets.Value("string"  ), "numbers": datasets.Value("float32"  )}  )
								SCREAMING_SNAKE_CASE__     							=				generate_example_dataset(
								    os.path.join(lowerCamelCase_						,					"dataset.arrow"  )						,					lowerCamelCase_						,					num_examples=lowerCamelCase_  )

								SCREAMING_SNAKE_CASE__     							=				transformers.AutoTokenizer.from_pretrained("bert-base-cased"						,					use_fast=lowerCamelCase_  )

								def tokenize(lowerCamelCase_  :      Union[str, Any]  ):
												return tokenizer(examples["text"]  )

								SCREAMING_SNAKE_CASE__     							=				map(lowerCamelCase_  )

								SCREAMING_SNAKE_CASE__     							=				map(lowerCamelCase_						,					batched=lowerCamelCase_  )

								SCREAMING_SNAKE_CASE__     							=				map(lowerCamelCase_						,					function=lambda lowerCamelCase_  : None						,					batched=lowerCamelCase_  )

								with dataset.formatted_as(type="numpy"  ):
												SCREAMING_SNAKE_CASE__     							=				map(lowerCamelCase_						,					function=lambda lowerCamelCase_  : None						,					batched=lowerCamelCase_  )

								with dataset.formatted_as(type="pandas"  ):
												SCREAMING_SNAKE_CASE__     							=				map(lowerCamelCase_						,					function=lambda lowerCamelCase_  : None						,					batched=lowerCamelCase_  )

								with dataset.formatted_as(type="torch"						,					columns="numbers"  ):
												SCREAMING_SNAKE_CASE__     							=				map(lowerCamelCase_						,					function=lambda lowerCamelCase_  : None						,					batched=lowerCamelCase_  )

								with dataset.formatted_as(type="tensorflow"						,					columns="numbers"  ):
												SCREAMING_SNAKE_CASE__     							=				map(lowerCamelCase_						,					function=lambda lowerCamelCase_  : None						,					batched=lowerCamelCase_  )

								SCREAMING_SNAKE_CASE__     							=				map(lowerCamelCase_						,					function=lowerCamelCase_						,					batched=lowerCamelCase_  )

								SCREAMING_SNAKE_CASE__     							=				filter(lowerCamelCase_  )

								# Activate later when tokenizer support batched inputs
								# with dataset.formatted_as(type='numpy'):
								#     times[func.__name__ + " fast-tokenizer batched numpy"] = func(dataset, function=tokenize, batched=True)

				with open(lowerCamelCase_						,					"wb"  ) as f:
								f.write(json.dumps(lowerCamelCase_  ).encode("utf-8"  )  )


if __name__ == "__main__":  # useful to run the profiler
	benchmark_map_filter()
