


from packaging import version

from .import_utils import is_accelerate_available


if is_accelerate_available():
 import accelerate



def 							UpperCamelCase_( lowerCamelCase_					)       ->		Union[str, Any]:
    if not is_accelerate_available():
        return method
    _lowercase			:				int 						=						version.parse(accelerate.__version__					).base_version
    if version.parse(lowerCamelCase_					) < version.parse('0.17.0'					):
        return method

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

    return wrapper








from typing import TYPE_CHECKING

from ....utils import OptionalDependencyNotAvailable, _LazyModule, is_torch_available


lowerCamelCase__					:  Optional[int]      							=				{'configuration_mmbt': ['MMBTConfig']}

try:
   if not is_torch_available():
      raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
   pass
else:
   lowerCamelCase__					:  Any      							=				['MMBTForClassification', 'MMBTModel', 'ModalEmbeddings']


if TYPE_CHECKING:
   from .configuration_mmbt import MMBTConfig

   try:
      if not is_torch_available():
         raise OptionalDependencyNotAvailable()
   except OptionalDependencyNotAvailable:
      pass
   else:
      from .modeling_mmbt import MMBTForClassification, MMBTModel, ModalEmbeddings

else:
   import sys

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