
'''simple docstring'''


import os
import shutil
import unittest
from unittest.mock import patch

from transformers.testing_utils import CaptureStd, is_pt_tf_cross_test, require_torch

class 		__lowercase			(					unittest.TestCase      ):

   @patch('''sys.argv'''     ,				['''fakeprogrampath''', '''env'''] )
   def     UpperCAmelCase__	(self ):
        # test transformers-cli env
        import transformers.commands.transformers_cli

        with CaptureStd() as cs:
             transformers.commands.transformers_cli.main()
        self.assertIn('''Python version'''     ,				cs.out )
        self.assertIn('''Platform'''     ,				cs.out )
        self.assertIn('''Using distributed or parallel set-up in script?'''     ,				cs.out )

   @is_pt_tf_cross_test
   @patch(
       '''sys.argv'''     ,				['''fakeprogrampath''', '''pt-to-tf''', '''--model-name''', '''hf-internal-testing/tiny-random-gptj''', '''--no-pr'''] )
   def     UpperCAmelCase__	(self ):
        import transformers.commands.transformers_cli

        shutil.rmtree('''/tmp/hf-internal-testing/tiny-random-gptj'''     ,				ignore_errors=A )  # cleans potential past runs
        transformers.commands.transformers_cli.main()

        # The original repo has no TF weights -- if they exist, they were created by the CLI
        self.assertTrue(os.path.exists('''/tmp/hf-internal-testing/tiny-random-gptj/tf_model.h5''' ) )

   @require_torch
   @patch('''sys.argv'''     ,				['''fakeprogrampath''', '''download''', '''hf-internal-testing/tiny-random-gptj''', '''--cache-dir''', '''/tmp'''] )
   def     UpperCAmelCase__	(self ):
        import transformers.commands.transformers_cli

        # # remove any previously downloaded model to start clean
        shutil.rmtree('''/tmp/models--hf-internal-testing--tiny-random-gptj'''     ,				ignore_errors=A )

        # run the command
        transformers.commands.transformers_cli.main()

        # check if the model files are downloaded correctly on /tmp/models--hf-internal-testing--tiny-random-gptj
        self.assertTrue(os.path.exists('''/tmp/models--hf-internal-testing--tiny-random-gptj/blobs''' ) )
        self.assertTrue(os.path.exists('''/tmp/models--hf-internal-testing--tiny-random-gptj/refs''' ) )
        self.assertTrue(os.path.exists('''/tmp/models--hf-internal-testing--tiny-random-gptj/snapshots''' ) )






   @require_torch
   @patch(
       '''sys.argv'''     ,				[
           '''fakeprogrampath''',
           '''download''',
           '''hf-internal-testing/test_dynamic_model_with_tokenizer''',
           '''--trust-remote-code''',
           '''--cache-dir''',
           '''/tmp''',
       ]     ,				)
   def     UpperCAmelCase__	(self ):
        import transformers.commands.transformers_cli

        # # remove any previously downloaded model to start clean
        shutil.rmtree('''/tmp/models--hf-internal-testing--test_dynamic_model_with_tokenizer'''     ,				ignore_errors=A )

        # run the command
        transformers.commands.transformers_cli.main()

        # check if the model files are downloaded correctly on /tmp/models--hf-internal-testing--test_dynamic_model_with_tokenizer
        self.assertTrue(os.path.exists('''/tmp/models--hf-internal-testing--test_dynamic_model_with_tokenizer/blobs''' ) )
        self.assertTrue(os.path.exists('''/tmp/models--hf-internal-testing--test_dynamic_model_with_tokenizer/refs''' ) )
        self.assertTrue(
            os.path.exists('''/tmp/models--hf-internal-testing--test_dynamic_model_with_tokenizer/snapshots''' ) )




'''simple docstring'''


from typing import TYPE_CHECKING

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


__lowercase							:				List[str]					=       {
    '''configuration_sam''': [
        '''SAM_PRETRAINED_CONFIG_ARCHIVE_MAP''',
        '''SamConfig''',
        '''SamMaskDecoderConfig''',
        '''SamPromptEncoderConfig''',
        '''SamVisionConfig''',
    ],
    '''processing_sam''': ['''SamProcessor'''],
}


try:
					if not is_torch_available():
										raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
					pass
else:
					__lowercase							:				List[Any]					=       [
					    '''SAM_PRETRAINED_MODEL_ARCHIVE_LIST''',
					    '''SamModel''',
					    '''SamPreTrainedModel''',
					]
try:
					if not is_tf_available():
										raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
					pass
else:
					__lowercase							:				int					=       [
					    '''TF_SAM_PRETRAINED_MODEL_ARCHIVE_LIST''',
					    '''TFSamModel''',
					    '''TFSamPreTrainedModel''',
					]
try:
					if not is_vision_available():
										raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
					pass
else:
					__lowercase							:				str					=       ['''SamImageProcessor''']


if TYPE_CHECKING:
					from .configuration_sam import (
					    SAM_PRETRAINED_CONFIG_ARCHIVE_MAP,
					    SamConfig,
					    SamMaskDecoderConfig,
					    SamPromptEncoderConfig,
					    SamVisionConfig,
					)
					from .processing_sam import SamProcessor

					try:
										if not is_torch_available():
															raise OptionalDependencyNotAvailable()
					except OptionalDependencyNotAvailable:
										pass
					else:
										from .modeling_sam import SAM_PRETRAINED_MODEL_ARCHIVE_LIST, SamModel, SamPreTrainedModel

					try:
										if not is_tf_available():
															raise OptionalDependencyNotAvailable()
					except OptionalDependencyNotAvailable:
										pass
					else:
										from .modeling_tf_sam import TF_SAM_PRETRAINED_MODEL_ARCHIVE_LIST, TFSamModel, TFSamPreTrainedModel

					try:
										if not is_vision_available():
															raise OptionalDependencyNotAvailable()
					except OptionalDependencyNotAvailable:
										pass
					else:
										from .image_processing_sam import SamImageProcessor

else:
					import sys

					__lowercase							:				List[str]					=       _LazyModule(__name__, globals()['''__file__'''], _import_structure, module_spec=__spec__)


