
"""simple docstring"""


import subprocess
import sys

from transformers import BertConfig, BertModel, BertTokenizer, pipeline
from transformers.testing_utils import TestCasePlus, require_torch







class  lowerCAmelCase_ (					_snake_case			):



						'''simple docstring'''


						@require_torch
						def   _SCREAMING_SNAKE_CASE					(       self   :					Dict					)   ->      List[Any]:
							# this test is a bit tricky since TRANSFORMERS_OFFLINE can only be changed before
							# `transformers` is loaded, and it's too late for inside pytest - so we are changing it
							# while running an external program

							# python one-liner segments

							# this must be loaded before socket.socket is monkey-patched
							A        =      '\nfrom transformers import BertConfig, BertModel, BertTokenizer, pipeline\n        '

							A        =      '\nmname = "hf-internal-testing/tiny-random-bert"\nBertConfig.from_pretrained(mname)\nBertModel.from_pretrained(mname)\nBertTokenizer.from_pretrained(mname)\npipe = pipeline(task="fill-mask", model=mname)\nprint("success")\n        '

							A        =      '\nimport socket\ndef offline_socket(*args, **kwargs): raise RuntimeError("Offline mode is enabled, we shouldn\'t access internet")\nsocket.socket = offline_socket\n        '

							# Force fetching the files so that we can use the cache
							A        =      'hf-internal-testing/tiny-random-bert'
							BertConfig.from_pretrained(_UpperCamelCase					)
							BertModel.from_pretrained(_UpperCamelCase					)
							BertTokenizer.from_pretrained(_UpperCamelCase					)
							pipeline(task='fill-mask'     ,model=_UpperCamelCase					)

							# baseline - just load from_pretrained with normal network
							A        =      [sys.executable, '-c', '\n'.join([load, run, mock]					)]

							# should succeed
							A        =      self.get_env()
							# should succeed as TRANSFORMERS_OFFLINE=1 tells it to use local files
							A        =      '1'
							A        =      subprocess.run(_UpperCamelCase     ,env=_UpperCamelCase     ,check=_UpperCamelCase     ,capture_output=_UpperCamelCase					)
							self.assertEqual(result.returncode     ,0     ,result.stderr					)
							self.assertIn('success'     ,result.stdout.decode()					)


						@require_torch
						def   _SCREAMING_SNAKE_CASE					(       self   :					int					)   ->      List[str]:
							# python one-liner segments
							# this must be loaded before socket.socket is monkey-patched
							A        =      '\nfrom transformers import BertConfig, BertModel, BertTokenizer, pipeline\n        '

							A        =      '\nmname = "hf-internal-testing/tiny-random-bert"\nBertConfig.from_pretrained(mname)\nBertModel.from_pretrained(mname)\nBertTokenizer.from_pretrained(mname)\npipe = pipeline(task="fill-mask", model=mname)\nprint("success")\n        '

							A        =      '\nimport socket\ndef offline_socket(*args, **kwargs): raise socket.error("Faking flaky internet")\nsocket.socket = offline_socket\n        '

							# Force fetching the files so that we can use the cache
							A        =      'hf-internal-testing/tiny-random-bert'
							BertConfig.from_pretrained(_UpperCamelCase					)
							BertModel.from_pretrained(_UpperCamelCase					)
							BertTokenizer.from_pretrained(_UpperCamelCase					)
							pipeline(task='fill-mask'     ,model=_UpperCamelCase					)

							# baseline - just load from_pretrained with normal network
							A        =      [sys.executable, '-c', '\n'.join([load, run, mock]					)]

							# should succeed
							A        =      self.get_env()
							A        =      subprocess.run(_UpperCamelCase     ,env=_UpperCamelCase     ,check=_UpperCamelCase     ,capture_output=_UpperCamelCase					)
							self.assertEqual(result.returncode     ,0     ,result.stderr					)
							self.assertIn('success'     ,result.stdout.decode()					)


						@require_torch
						def   _SCREAMING_SNAKE_CASE					(       self   :					Optional[int]					)   ->      str:
							# this test is a bit tricky since TRANSFORMERS_OFFLINE can only be changed before
							# `transformers` is loaded, and it's too late for inside pytest - so we are changing it
							# while running an external program

							# python one-liner segments

							# this must be loaded before socket.socket is monkey-patched
							A        =      '\nfrom transformers import BertConfig, BertModel, BertTokenizer\n        '

							A        =      '\nmname = "hf-internal-testing/tiny-random-bert-sharded"\nBertConfig.from_pretrained(mname)\nBertModel.from_pretrained(mname)\nprint("success")\n        '

							A        =      '\nimport socket\ndef offline_socket(*args, **kwargs): raise ValueError("Offline mode is enabled")\nsocket.socket = offline_socket\n        '

							# baseline - just load from_pretrained with normal network
							A        =      [sys.executable, '-c', '\n'.join([load, run]					)]

							# should succeed
							A        =      self.get_env()
							A        =      subprocess.run(_UpperCamelCase     ,env=_UpperCamelCase     ,check=_UpperCamelCase     ,capture_output=_UpperCamelCase					)
							self.assertEqual(result.returncode     ,0     ,result.stderr					)
							self.assertIn('success'     ,result.stdout.decode()					)

							# next emulate no network
							A        =      [sys.executable, '-c', '\n'.join([load, mock, run]					)]

							# Doesn't fail anymore since the model is in the cache due to other tests, so commenting this.
							# env["TRANSFORMERS_OFFLINE"] = "0"
							# result = subprocess.run(cmd, env=env, check=False, capture_output=True)
							# self.assertEqual(result.returncode, 1, result.stderr)

							# should succeed as TRANSFORMERS_OFFLINE=1 tells it to use local files
							A        =      '1'
							A        =      subprocess.run(_UpperCamelCase     ,env=_UpperCamelCase     ,check=_UpperCamelCase     ,capture_output=_UpperCamelCase					)
							self.assertEqual(result.returncode     ,0     ,result.stderr					)
							self.assertIn('success'     ,result.stdout.decode()					)


						@require_torch
						def   _SCREAMING_SNAKE_CASE					(       self   :					List[str]					)   ->      List[str]:
							A        =      '\nfrom transformers import pipeline\n        '
							A        =      '\nmname = "hf-internal-testing/tiny-random-bert"\npipe = pipeline(model=mname)\n        '

							A        =      '\nimport socket\ndef offline_socket(*args, **kwargs): raise socket.error("Offline mode is enabled")\nsocket.socket = offline_socket\n        '
							A        =      self.get_env()
							A        =      '1'
							A        =      [sys.executable, '-c', '\n'.join([load, mock, run]					)]
							A        =      subprocess.run(_UpperCamelCase     ,env=_UpperCamelCase     ,check=_UpperCamelCase     ,capture_output=_UpperCamelCase					)
							self.assertEqual(result.returncode     ,1     ,result.stderr					)
							self.assertIn(
							    'You cannot infer task automatically within `pipeline` when using offline mode'     ,result.stderr.decode().replace('\n'     ,''					)     ,)




						@require_torch
						def   _SCREAMING_SNAKE_CASE					(       self   :					Any					)   ->      str:
							A        =      '\nfrom transformers import AutoModel\n        '
							A        =      '\nmname = "hf-internal-testing/test_dynamic_model"\nAutoModel.from_pretrained(mname, trust_remote_code=True)\nprint("success")\n        '

							# baseline - just load from_pretrained with normal network
							A        =      [sys.executable, '-c', '\n'.join([load, run]					)]

							# should succeed
							A        =      self.get_env()
							A        =      subprocess.run(_UpperCamelCase     ,env=_UpperCamelCase     ,check=_UpperCamelCase     ,capture_output=_UpperCamelCase					)
							self.assertEqual(result.returncode     ,0     ,result.stderr					)
							self.assertIn('success'     ,result.stdout.decode()					)

							# should succeed as TRANSFORMERS_OFFLINE=1 tells it to use local files
							A        =      '1'
							A        =      subprocess.run(_UpperCamelCase     ,env=_UpperCamelCase     ,check=_UpperCamelCase     ,capture_output=_UpperCamelCase					)
							self.assertEqual(result.returncode     ,0     ,result.stderr					)
							self.assertIn('success'     ,result.stdout.decode()					)







from typing import TYPE_CHECKING

from ...utils import OptionalDependencyNotAvailable, _LazyModule, is_torch_available


__UpperCAmelCase								=						{'configuration_vit_msn': ['VIT_MSN_PRETRAINED_CONFIG_ARCHIVE_MAP', 'ViTMSNConfig']}

try:
		if not is_torch_available():
				raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
		pass
else:
		__UpperCAmelCase								=						[
		    'VIT_MSN_PRETRAINED_MODEL_ARCHIVE_LIST',
		    'ViTMSNModel',
		    'ViTMSNForImageClassification',
		    'ViTMSNPreTrainedModel',
		]

if TYPE_CHECKING:
		from .configuration_vit_msn import VIT_MSN_PRETRAINED_CONFIG_ARCHIVE_MAP, ViTMSNConfig

		try:
				if not is_torch_available():
						raise OptionalDependencyNotAvailable()
		except OptionalDependencyNotAvailable:
				pass
		else:
				from .modeling_vit_msn import (
				    VIT_MSN_PRETRAINED_MODEL_ARCHIVE_LIST,
				    ViTMSNForImageClassification,
				    ViTMSNModel,
				    ViTMSNPreTrainedModel,
				)

else:
		import sys

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






