
'''simple docstring'''





import importlib.metadata
import subprocess
import sys





def 							snake_case				(		UpperCAmelCase = False						)->      Union[str, Any]:







      """simple docstring"""
      __A													=      False
      if "IPython" in sys.modules:
            __A													=      'google.colab' in str(sys.modules['IPython'].get_ipython()						)

      if in_colab:
            if upgrade:
                  __A													=      ['pip', 'install', '-U', 'torch']
                  subprocess.run(UpperCAmelCase   ,	check=UpperCAmelCase						)
            # get the current version of torch
            __A													=      importlib.metadata.version('torch'						)
            __A													=      torch_version[: torch_version.rindex('.'						)]
            __A													=      f'https://storage.googleapis.com/tpu-pytorch/wheels/colab/torch_xla-{torch_version_trunc}-cp37-cp37m-linux_x86_64.whl'
            __A													=      ['pip', 'install', xla_wheel]
            subprocess.run(UpperCAmelCase   ,	check=UpperCAmelCase						)
      else:
            raise RuntimeError('`install_xla` utility works only on google colab.'						)







from typing import TYPE_CHECKING

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


_SCREAMING_SNAKE_CASE:    Optional[Any]     						=							{
    '''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:
			_SCREAMING_SNAKE_CASE:    Dict     						=							[
			    '''SAM_PRETRAINED_MODEL_ARCHIVE_LIST''',
			    '''SamModel''',
			    '''SamPreTrainedModel''',
			]
try:
			if not is_tf_available():
						raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
			pass
else:
			_SCREAMING_SNAKE_CASE:    Optional[Any]     						=							[
			    '''TF_SAM_PRETRAINED_MODEL_ARCHIVE_LIST''',
			    '''TFSamModel''',
			    '''TFSamPreTrainedModel''',
			]
try:
			if not is_vision_available():
						raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
			pass
else:
			_SCREAMING_SNAKE_CASE:    List[Any]     						=							['''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

			_SCREAMING_SNAKE_CASE:    Union[str, Any]     						=							_LazyModule(__name__, globals()['''__file__'''], _import_structure, module_spec=__spec__)

