

import importlib.metadata
from typing import Union

from packaging.version import Version, parse

from .constants import STR_OPERATION_TO_FUNC


a_      =     parse(importlib.metadata.version('torch'))

def 			lowerCamelCase__			(       _a				,      _a				,      _a):
	if operation not in STR_OPERATION_TO_FUNC.keys():
		raise ValueError(f"`operation` must be one of {list(STR_OPERATION_TO_FUNC.keys())}, received {operation}")
	SCREAMING_SNAKE_CASE :   Union[str, Any]					  =							STR_OPERATION_TO_FUNC[operation]
	if isinstance(_a				,      _a):
		SCREAMING_SNAKE_CASE :   Any					  =							parse(importlib.metadata.version(_a))
	return operation(_a				,      parse(_a))


def 			lowerCamelCase__			(       _a				,      _a):
	return compare_versions(_a				,      _a				,      _a)


from typing import TYPE_CHECKING

from ...utils import OptionalDependencyNotAvailable, _LazyModule, is_torch_available


a_      =     {
    'configuration_swinv2': ['SWINV2_PRETRAINED_CONFIG_ARCHIVE_MAP', 'Swinv2Config'],
}


try:
			if not is_torch_available():
						raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
			pass
else:
			a_      =     [
			    '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

			a_      =     _LazyModule(__name__, globals()['__file__'], _import_structure, module_spec=__spec__)