




from typing import TYPE_CHECKING

from ...utils import OptionalDependencyNotAvailable, _LazyModule, is_torch_available


SCREAMING_SNAKE_CASE__     :     Any		    =       {
    "configuration_swinv2": ["SWINV2_PRETRAINED_CONFIG_ARCHIVE_MAP", "Swinv2Config"],
}


try:
				if not is_torch_available():
								raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
				pass
else:
				SCREAMING_SNAKE_CASE__     :     Optional[int]		    =       [
				    "SWINV2_PRETRAINED_MODEL_ARCHIVE_LIST",
				    "Swinv2ForImageClassification",
				    "Swinv2ForMaskedImageModeling",
				    "Swinv2Model",
				    "Swinv2PreTrainedModel",
				]


if TYPE_CHECKING:
				from .configuration_swinva import SWINV2_PRETRAINED_CONFIG_ARCHIVE_MAP, SwinvaConfig

				try:
								if not is_torch_available():
												raise OptionalDependencyNotAvailable()
				except OptionalDependencyNotAvailable:
								pass
				else:
								from .modeling_swinva import (
								    SWINV2_PRETRAINED_MODEL_ARCHIVE_LIST,
								    SwinvaForImageClassification,
								    SwinvaForMaskedImageModeling,
								    SwinvaModel,
								    SwinvaPreTrainedModel,
								)


else:
				import sys

				SCREAMING_SNAKE_CASE__     :     Tuple		    =       _LazyModule(__name__, globals()["__file__"], _import_structure, module_spec=__spec__)






from packaging import version

from .import_utils import is_accelerate_available


if is_accelerate_available():
				import accelerate

def lowercase    (  SCREAMING_SNAKE_CASE )			->							Union[str, Any]:


			'''simple docstring'''







			if not is_accelerate_available():
						return method
			SCREAMING_SNAKE_CASE_								=						version.parse(accelerate.__version__ ).base_version
			if version.parse(SCREAMING_SNAKE_CASE ) < version.parse('0.17.0' ):
						return method

			def wrapper(self       ,    *SCREAMING_SNAKE_CASE       ,    **SCREAMING_SNAKE_CASE ):
						if hasattr(self       ,    '_hf_hook' ) and hasattr(self._hf_hook       ,    'pre_forward' ):
									self._hf_hook.pre_forward(self )
						return method(self       ,    *SCREAMING_SNAKE_CASE       ,    **SCREAMING_SNAKE_CASE )

			return wrapper
