





'''simple docstring'''


lowerCAmelCase   :	int   				={
    """Pillow""": """Pillow""",
    """accelerate""": """accelerate>=0.11.0""",
    """compel""": """compel==0.1.8""",
    """black""": """black~=23.1""",
    """datasets""": """datasets""",
    """filelock""": """filelock""",
    """flax""": """flax>=0.4.1""",
    """hf-doc-builder""": """hf-doc-builder>=0.3.0""",
    """huggingface-hub""": """huggingface-hub>=0.13.2""",
    """requests-mock""": """requests-mock==1.10.0""",
    """importlib_metadata""": """importlib_metadata""",
    """invisible-watermark""": """invisible-watermark""",
    """isort""": """isort>=5.5.4""",
    """jax""": """jax>=0.2.8,!=0.3.2""",
    """jaxlib""": """jaxlib>=0.1.65""",
    """Jinja2""": """Jinja2""",
    """k-diffusion""": """k-diffusion>=0.0.12""",
    """torchsde""": """torchsde""",
    """note_seq""": """note_seq""",
    """librosa""": """librosa""",
    """numpy""": """numpy""",
    """omegaconf""": """omegaconf""",
    """parameterized""": """parameterized""",
    """protobuf""": """protobuf>=3.20.3,<4""",
    """pytest""": """pytest""",
    """pytest-timeout""": """pytest-timeout""",
    """pytest-xdist""": """pytest-xdist""",
    """ruff""": """ruff>=0.0.241""",
    """safetensors""": """safetensors""",
    """sentencepiece""": """sentencepiece>=0.1.91,!=0.1.92""",
    """scipy""": """scipy""",
    """onnx""": """onnx""",
    """regex""": """regex!=2019.12.17""",
    """requests""": """requests""",
    """tensorboard""": """tensorboard""",
    """torch""": """torch>=1.4""",
    """torchvision""": """torchvision""",
    """transformers""": """transformers>=4.25.1""",
    """urllib3""": """urllib3<=2.0.0""",
}





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        A__(a_							):
						"""simple docstring"""






						def 			UpperCamelCase__					(    self    )     -> List[str]:
									a_						:						List[Any] 							= SMALL_MODEL_IDENTIFIER
									a_						:						Optional[int] 							= """pt"""
									a_						:						Union[str, Any] 							= """tf"""





						def 			UpperCamelCase__					(    self  ,      _lowercase    )     -> str:
									a_						:						Union[str, Any] 							= AutoModel.from_pretrained(self.test_model    )
									model_pt.save_pretrained(_lowercase    )





						def 			UpperCamelCase__					(    self  ,      _lowercase    )     -> List[str]:
									a_						:						int 							= TFAutoModel.from_pretrained(self.test_model  ,      from_pt=_lowercase    )
									model_tf.save_pretrained(_lowercase    )





						def 			UpperCamelCase__					(    self    )     -> Optional[Any]:
									a_						:						str 							= """mock_framework"""

									# Framework provided - return whatever the user provides
									a_						:						Optional[int] 							= FeaturesManager.determine_framework(self.test_model  ,      _lowercase    )
									self.assertEqual(_lowercase  ,      _lowercase    )

									# Local checkpoint and framework provided - return provided framework
									# PyTorch checkpoint
									with TemporaryDirectory() as local_pt_ckpt:
												self._setup_pt_ckpt(_lowercase    )
												a_						:						Optional[int] 							= FeaturesManager.determine_framework(_lowercase  ,      _lowercase    )
												self.assertEqual(_lowercase  ,      _lowercase    )

									# TensorFlow checkpoint
									with TemporaryDirectory() as local_tf_ckpt:
												self._setup_tf_ckpt(_lowercase    )
												a_						:						List[str] 							= FeaturesManager.determine_framework(_lowercase  ,      _lowercase    )
												self.assertEqual(_lowercase  ,      _lowercase    )





						def 			UpperCamelCase__					(    self    )     -> Union[str, Any]:
									# PyTorch checkpoint
									with TemporaryDirectory() as local_pt_ckpt:
												self._setup_pt_ckpt(_lowercase    )
												a_						:						Union[str, Any] 							= FeaturesManager.determine_framework(_lowercase    )
												self.assertEqual(_lowercase  ,      self.framework_pt    )

									# TensorFlow checkpoint
									with TemporaryDirectory() as local_tf_ckpt:
												self._setup_tf_ckpt(_lowercase    )
												a_						:						Union[str, Any] 							= FeaturesManager.determine_framework(_lowercase    )
												self.assertEqual(_lowercase  ,      self.framework_tf    )

									# Invalid local checkpoint
									with TemporaryDirectory() as local_invalid_ckpt:
												with self.assertRaises(_lowercase    ):
															a_						:						Union[str, Any] 							= FeaturesManager.determine_framework(_lowercase    )





						def 			UpperCamelCase__					(    self    )     -> List[Any]:
									a_						:						int 							= MagicMock(return_value=_lowercase    )
									with patch("""transformers.onnx.features.is_tf_available"""  ,      _lowercase    ):
												a_						:						Union[str, Any] 							= FeaturesManager.determine_framework(self.test_model    )
												self.assertEqual(_lowercase  ,      self.framework_pt    )

									# PyTorch not in environment -> use TensorFlow
									a_						:						Dict 							= MagicMock(return_value=_lowercase    )
									with patch("""transformers.onnx.features.is_torch_available"""  ,      _lowercase    ):
												a_						:						Union[str, Any] 							= FeaturesManager.determine_framework(self.test_model    )
												self.assertEqual(_lowercase  ,      self.framework_tf    )

									# Both in environment -> use PyTorch
									a_						:						Optional[Any] 							= MagicMock(return_value=_lowercase    )
									a_						:						List[Any] 							= MagicMock(return_value=_lowercase    )
									with patch("""transformers.onnx.features.is_tf_available"""  ,      _lowercase    ), patch(
									    """transformers.onnx.features.is_torch_available"""  ,      _lowercase    ):
												a_						:						Any 							= FeaturesManager.determine_framework(self.test_model    )
												self.assertEqual(_lowercase  ,      self.framework_pt    )

									# Both not in environment -> raise error
									a_						:						List[str] 							= MagicMock(return_value=_lowercase    )
									a_						:						Optional[Any] 							= MagicMock(return_value=_lowercase    )
									with patch("""transformers.onnx.features.is_tf_available"""  ,      _lowercase    ), patch(
									    """transformers.onnx.features.is_torch_available"""  ,      _lowercase    ):
												with self.assertRaises(_lowercase    ):
															a_						:						Dict 							= FeaturesManager.determine_framework(self.test_model    )


