



'''simple docstring'''
from typing import TYPE_CHECKING

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


snake_case_					:      Dict    			=    {
    'configuration_swiftformer': [
        'SWIFTFORMER_PRETRAINED_CONFIG_ARCHIVE_MAP',
        'SwiftFormerConfig',
        'SwiftFormerOnnxConfig',
    ]
}

try:
					if not is_torch_available():
										raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
					pass
else:
					snake_case_					:      Union[str, Any]    			=    [
					    'SWIFTFORMER_PRETRAINED_MODEL_ARCHIVE_LIST',
					    'SwiftFormerForImageClassification',
					    'SwiftFormerModel',
					    'SwiftFormerPreTrainedModel',
					]

if TYPE_CHECKING:
					from .configuration_swiftformer import (
					    SWIFTFORMER_PRETRAINED_CONFIG_ARCHIVE_MAP,
					    SwiftFormerConfig,
					    SwiftFormerOnnxConfig,
					)

					try:
										if not is_torch_available():
															raise OptionalDependencyNotAvailable()
					except OptionalDependencyNotAvailable:
										pass
					else:
										from .modeling_swiftformer import (
										    SWIFTFORMER_PRETRAINED_MODEL_ARCHIVE_LIST,
										    SwiftFormerForImageClassification,
										    SwiftFormerModel,
										    SwiftFormerPreTrainedModel,
										)

else:
					import sys

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







'''simple docstring'''
import os
from pathlib import Path






def A__       (	):
						from torch.utils.cpp_extension import load

						_UpperCamelCase   :						Optional[Any]												=  Path(UpperCAmelCase_				).resolve().parent.parent.parent / 'kernels' / 'deformable_detr'
						_UpperCamelCase   :						Tuple												=  [
						    root / filename
						    for filename in [
						        'vision.cpp',
						        os.path.join('cpu'    ,    'ms_deform_attn_cpu.cpp'				),
						        os.path.join('cuda'    ,    'ms_deform_attn_cuda.cu'				),
						    ]
						]

						load(
						    'MultiScaleDeformableAttention'    ,    UpperCAmelCase_    ,    with_cuda=UpperCAmelCase_    ,    extra_include_paths=[str(UpperCAmelCase_				)]    ,    extra_cflags=['-DWITH_CUDA=1']    ,    extra_cuda_cflags=[
						        '-DCUDA_HAS_FP16=1',
						        '-D__CUDA_NO_HALF_OPERATORS__',
						        '-D__CUDA_NO_HALF_CONVERSIONS__',
						        '-D__CUDA_NO_HALF2_OPERATORS__',
						    ]    ,    )

						import MultiScaleDeformableAttention as MSDA

						return MSDA


