import subprocess
import sys

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



class  UpperCamelCase				( __lowercase ):

     '''simple docstring'''

     @require_torch
     def 		UpperCamelCase_						(					self						) ->				Optional[int]:






           """simple docstring"""
           # 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
           _lowerCamelCase			    =				'''
from transformers import BertConfig, BertModel, BertTokenizer, pipeline
        '''

           _lowerCamelCase			    =				'''
mname = "hf-internal-testing/tiny-random-bert"
BertConfig.from_pretrained(mname)
BertModel.from_pretrained(mname)
BertTokenizer.from_pretrained(mname)
pipe = pipeline(task="fill-mask", model=mname)
print("success")
        '''

           _lowerCamelCase			    =				'''
import socket
def offline_socket(*args, **kwargs): raise RuntimeError("Offline mode is enabled, we shouldn\'t access internet")
socket.socket = offline_socket
        '''

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

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

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



     @require_torch
     def 		UpperCamelCase_						(					self						) ->				Optional[Any]:






           """simple docstring"""
           # python one-liner segments
           # this must be loaded before socket.socket is monkey-patched
           _lowerCamelCase			    =				'''
from transformers import BertConfig, BertModel, BertTokenizer, pipeline
        '''

           _lowerCamelCase			    =				'''
mname = "hf-internal-testing/tiny-random-bert"
BertConfig.from_pretrained(mname)
BertModel.from_pretrained(mname)
BertTokenizer.from_pretrained(mname)
pipe = pipeline(task="fill-mask", model=mname)
print("success")
        '''

           _lowerCamelCase			    =				'''
import socket
def offline_socket(*args, **kwargs): raise socket.error("Faking flaky internet")
socket.socket = offline_socket
        '''

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

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

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



     @require_torch
     def 		UpperCamelCase_						(					self						) ->				List[str]:






           """simple docstring"""
           # 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
           _lowerCamelCase			    =				'''
from transformers import BertConfig, BertModel, BertTokenizer
        '''

           _lowerCamelCase			    =				'''
mname = "hf-internal-testing/tiny-random-bert-sharded"
BertConfig.from_pretrained(mname)
BertModel.from_pretrained(mname)
print("success")
        '''

           _lowerCamelCase			    =				'''
import socket
def offline_socket(*args, **kwargs): raise ValueError("Offline mode is enabled")
socket.socket = offline_socket
        '''

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

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

           # next emulate no network
           _lowerCamelCase			    =				[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
           _lowerCamelCase			    =				'''1'''
           _lowerCamelCase			    =				subprocess.run(A_				,				env=A_				,				check=A_				,				capture_output=A_						)
           self.assertEqual(result.returncode				,				0				,				result.stderr						)
           self.assertIn('''success'''				,				result.stdout.decode()						)



     @require_torch
     def 		UpperCamelCase_						(					self						) ->				Dict:






           """simple docstring"""
           _lowerCamelCase			    =				'''
from transformers import pipeline
        '''
           _lowerCamelCase			    =				'''
mname = "hf-internal-testing/tiny-random-bert"
pipe = pipeline(model=mname)
        '''

           _lowerCamelCase			    =				'''
import socket
def offline_socket(*args, **kwargs): raise socket.error("Offline mode is enabled")
socket.socket = offline_socket
        '''
           _lowerCamelCase			    =				self.get_env()
           _lowerCamelCase			    =				'''1'''
           _lowerCamelCase			    =				[sys.executable, '''-c''', '''\n'''.join([load, mock, run]						)]
           _lowerCamelCase			    =				subprocess.run(A_				,				env=A_				,				check=A_				,				capture_output=A_						)
           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 		UpperCamelCase_						(					self						) ->				Any:






           """simple docstring"""
           _lowerCamelCase			    =				'''
from transformers import AutoModel
        '''
           _lowerCamelCase			    =				'''
mname = "hf-internal-testing/test_dynamic_model"
AutoModel.from_pretrained(mname, trust_remote_code=True)
print("success")
        '''

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

           # should succeed
           _lowerCamelCase			    =				self.get_env()
           _lowerCamelCase			    =				subprocess.run(A_				,				env=A_				,				check=A_				,				capture_output=A_						)
           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
           _lowerCamelCase			    =				'''1'''
           _lowerCamelCase			    =				subprocess.run(A_				,				env=A_				,				check=A_				,				capture_output=A_						)
           self.assertEqual(result.returncode				,				0				,				result.stderr						)
           self.assertIn('''success'''				,				result.stdout.decode()						)
import warnings

from ...utils import logging
from .image_processing_dpt import DPTImageProcessor


snake_case__				= logging.get_logger(__name__)



class  UpperCamelCase				( __lowercase ):

     '''simple docstring'''

     def __init__(					self				,				*A_				,				**A_						) ->				None:






           """simple docstring"""
           warnings.warn(
               '''The class DPTFeatureExtractor is deprecated and will be removed in version 5 of Transformers. Please'''
               ''' use DPTImageProcessor instead.'''				,				A_				,				)
           super().__init__(*A_				,				**A_						)