
"""simple docstring"""
from tempfile import TemporaryDirectory
from unittest import TestCase
from unittest.mock import MagicMock, patch

from transformers import AutoModel, TFAutoModel
from transformers.onnx import FeaturesManager
from transformers.testing_utils import SMALL_MODEL_IDENTIFIER, require_tf, require_torch
@require_torch
@require_tf
class       lowerCAmelCase_		(				A__ ):



							'''simple docstring'''





							def    A__						( self				)       ->  int:
													__lowerCAmelCase     =  SMALL_MODEL_IDENTIFIER
													__lowerCAmelCase     =  """pt"""
													__lowerCAmelCase     =  """tf"""




							def    A__						( self    ,				snake_case_				)       ->  Dict:
													__lowerCAmelCase     =  AutoModel.from_pretrained(self.test_model				)
													model_pt.save_pretrained(snake_case_				)




							def    A__						( self    ,				snake_case_				)       ->  str:
													__lowerCAmelCase     =  TFAutoModel.from_pretrained(self.test_model    ,				from_pt=snake_case_				)
													model_tf.save_pretrained(snake_case_				)




							def    A__						( self				)       ->  Dict:
													__lowerCAmelCase     =  """mock_framework"""

													# Framework provided - return whatever the user provides
													__lowerCAmelCase     =  FeaturesManager.determine_framework(self.test_model    ,				snake_case_				)
													self.assertEqual(snake_case_    ,				snake_case_				)

													# Local checkpoint and framework provided - return provided framework
													# PyTorch checkpoint
													with TemporaryDirectory() as local_pt_ckpt:
																			self._setup_pt_ckpt(snake_case_				)
																			__lowerCAmelCase     =  FeaturesManager.determine_framework(snake_case_    ,				snake_case_				)
																			self.assertEqual(snake_case_    ,				snake_case_				)

													# TensorFlow checkpoint
													with TemporaryDirectory() as local_tf_ckpt:
																			self._setup_tf_ckpt(snake_case_				)
																			__lowerCAmelCase     =  FeaturesManager.determine_framework(snake_case_    ,				snake_case_				)
																			self.assertEqual(snake_case_    ,				snake_case_				)




							def    A__						( self				)       ->  str:
													# PyTorch checkpoint
													with TemporaryDirectory() as local_pt_ckpt:
																			self._setup_pt_ckpt(snake_case_				)
																			__lowerCAmelCase     =  FeaturesManager.determine_framework(snake_case_				)
																			self.assertEqual(snake_case_    ,				self.framework_pt				)

													# TensorFlow checkpoint
													with TemporaryDirectory() as local_tf_ckpt:
																			self._setup_tf_ckpt(snake_case_				)
																			__lowerCAmelCase     =  FeaturesManager.determine_framework(snake_case_				)
																			self.assertEqual(snake_case_    ,				self.framework_tf				)

													# Invalid local checkpoint
													with TemporaryDirectory() as local_invalid_ckpt:
																			with self.assertRaises(snake_case_				):
																									__lowerCAmelCase     =  FeaturesManager.determine_framework(snake_case_				)




							def    A__						( self				)       ->  Union[str, Any]:
													__lowerCAmelCase     =  MagicMock(return_value=snake_case_				)
													with patch("""transformers.onnx.features.is_tf_available"""    ,				snake_case_				):
																			__lowerCAmelCase     =  FeaturesManager.determine_framework(self.test_model				)
																			self.assertEqual(snake_case_    ,				self.framework_pt				)

													# PyTorch not in environment -> use TensorFlow
													__lowerCAmelCase     =  MagicMock(return_value=snake_case_				)
													with patch("""transformers.onnx.features.is_torch_available"""    ,				snake_case_				):
																			__lowerCAmelCase     =  FeaturesManager.determine_framework(self.test_model				)
																			self.assertEqual(snake_case_    ,				self.framework_tf				)

													# Both in environment -> use PyTorch
													__lowerCAmelCase     =  MagicMock(return_value=snake_case_				)
													__lowerCAmelCase     =  MagicMock(return_value=snake_case_				)
													with patch("""transformers.onnx.features.is_tf_available"""    ,				snake_case_				), patch(
													    """transformers.onnx.features.is_torch_available"""    ,				snake_case_				):
																			__lowerCAmelCase     =  FeaturesManager.determine_framework(self.test_model				)
																			self.assertEqual(snake_case_    ,				self.framework_pt				)

													# Both not in environment -> raise error
													__lowerCAmelCase     =  MagicMock(return_value=snake_case_				)
													__lowerCAmelCase     =  MagicMock(return_value=snake_case_				)
													with patch("""transformers.onnx.features.is_tf_available"""    ,				snake_case_				), patch(
													    """transformers.onnx.features.is_torch_available"""    ,				snake_case_				):
																			with self.assertRaises(snake_case_				):
																									__lowerCAmelCase     =  FeaturesManager.determine_framework(self.test_model				)


"""simple docstring"""
from ...configuration_utils import PretrainedConfig
from ...utils import logging


SCREAMING_SNAKE_CASE_					     =	logging.get_logger(__name__)

SCREAMING_SNAKE_CASE_					     =	{
    '''alibaba-damo/mgp-str-base''': '''https://huggingface.co/alibaba-damo/mgp-str-base/resolve/main/config.json''',
}
class       lowerCAmelCase_		(				A__ ):



							'''simple docstring'''





							_snake_case						      =		'''mgp-str'''




							def __init__( self    ,				snake_case_=[32, 128]    ,				snake_case_=4    ,				snake_case_=3    ,				snake_case_=27    ,				snake_case_=38    ,				snake_case_=50_257    ,				snake_case_=30_522    ,				snake_case_=768    ,				snake_case_=12    ,				snake_case_=12    ,				snake_case_=4.0    ,				snake_case_=True    ,				snake_case_=False    ,				snake_case_=1e-5    ,				snake_case_=0.0    ,				snake_case_=0.0    ,				snake_case_=0.0    ,				snake_case_=False    ,				snake_case_=0.02    ,				**snake_case_    ,				)       ->  List[Any]:
													super().__init__(**snake_case_				)

													__lowerCAmelCase     =  image_size
													__lowerCAmelCase     =  patch_size
													__lowerCAmelCase     =  num_channels
													__lowerCAmelCase     =  max_token_length
													__lowerCAmelCase     =  num_character_labels
													__lowerCAmelCase     =  num_bpe_labels
													__lowerCAmelCase     =  num_wordpiece_labels
													__lowerCAmelCase     =  hidden_size
													__lowerCAmelCase     =  num_hidden_layers
													__lowerCAmelCase     =  num_attention_heads
													__lowerCAmelCase     =  mlp_ratio
													__lowerCAmelCase     =  distilled
													__lowerCAmelCase     =  layer_norm_eps
													__lowerCAmelCase     =  drop_rate
													__lowerCAmelCase     =  qkv_bias
													__lowerCAmelCase     =  attn_drop_rate
													__lowerCAmelCase     =  drop_path_rate
													__lowerCAmelCase     =  output_aa_attentions
													__lowerCAmelCase     =  initializer_range
