



from ..utils import DummyObject, requires_backends






class SCREAMING_SNAKE_CASE__					(		metaclass=SCREAMING_SNAKE_CASE__   ):




    '''simple docstring'''






    __lowerCamelCase      :			Any =				["""onnx"""]






    def __init__(	self,		*lowerCamelCase__,		**lowerCamelCase__		):
        requires_backends(self,		["""onnx"""]		)






    @classmethod
    def       _lowerCAmelCase (	cls,		*lowerCamelCase__,		**lowerCamelCase__		):
        requires_backends(cls,		["""onnx"""]		)






    @classmethod
    def       _lowerCAmelCase (	cls,		*lowerCamelCase__,		**lowerCamelCase__		):
        requires_backends(cls,		["""onnx"""]		)







import os
from pathlib import Path




def      __UpperCamelCase     (  )	->  Any:



    """simple docstring"""






    from torch.utils.cpp_extension import load

    A			:	Any										=       Path(_lowerCAmelCase		).resolve().parent.parent.parent / """kernels""" / """deformable_detr"""
    A			:	int										=       [
        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"""				,					_lowerCAmelCase				,					with_cuda=_lowerCAmelCase				,					extra_include_paths=[str(_lowerCAmelCase		)]				,					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


