
    3j                    v    S SK Jr  S SKJrJrJr  S SKJr  S SKJr	  S SK
JrJr  SS/r " S S\\5      rSS	 jrg
)    )annotations)AnyOptionalUnion)onnx)onnxruntime)	ONNXMixinONNXRuntimeMixin
ONNXModuleloadc                     ^  \ rS rSrSr     S             S	S jjr S
     SU 4S jjjrSU 4S jjrSSU 4S jjjrSr	U =r
$ )r      a]  ONNXModule to wrap an ONNX operator.

Args:
    arg: A variable number of ONNX models (either ONNX ModelProto objects or file paths).
        For Hugging Face-hosted models, use the format 'hf://model_name'. Valid `model_name` can be found on
        https://huggingface.co/kornia/ONNX_models. Or a URL to the ONNX model.
    providers: A list of execution providers for ONNXRuntime
        (e.g., ['CUDAExecutionProvider', 'CPUExecutionProvider']).
    session_options: Optional ONNXRuntime session options for optimizing the session.
    cache_dir: The directory where ONNX models are cached locally (only for downloading from HuggingFace).
        Defaults to None, which will use a default `kornia.config.hub_onnx_dir` directory.
    target_ir_version: The target IR version to convert to.
    target_opset_version: The target OPSET version to convert to.

c                    U R                  X5      U l        Uc  Ub  U R                  U R                  XVS9U l        U R                  X#S9nU R	                  US9  g )N)target_ir_versiontarget_opset_version)	providerssession_options)session)_load_opop_onnx_version_conversioncreate_sessionset_session)selfr   r   r   	cache_dirr   r   r   s           L/home/wildlama/miniconda3/lib/python3.13/site-packages/kornia/onnx/module.py__init__ONNXModule.__init__.   sg     --.(,@,L33+< 4 DG %%	%[)    c                8   > [         TU ]  U R                  X5      $ N)super_create_sessionr   )r   r   r   	__class__s      r   r   ONNXModule.create_session?   s     w&tww	KKr   c                <   > [         TU ]  " U R                  U40 UD6$ r!   )r"   _exportr   )r   	file_pathkwargsr$   s      r   exportONNXModule.exportD   s    wtww	<V<<r   c                8   > [         TU ]  U R                  U5      $ r!   )r"   _add_metadatar   )r   additional_metadatar$   s     r   add_metadataONNXModule.add_metadataG   s    w$TWW.ABBr   )r   )NNNNN)r   Union[onnx.ModelProto, str]r   zOptional[list[str]]r   zOptional[ort.SessionOptions]r   zOptional[str]r   Optional[int]r   r2   returnNone)NN)r   zlist[str] | Noner   z
Any | Noner3   zort.InferenceSession)r(   strr)   r   r3   r4   r!   )r.   zOptional[list[tuple[str, str]]]r3   zonnx.ModelProto)__name__
__module____qualname____firstlineno____doc__r   r   r*   r/   __static_attributes____classcell__)r$   s   @r   r   r      s    & *.8<#'+/.2*'* '* 6	*
 !* )* ,* 
*$ QUL)LCML	L L
=C Cr   c                    [        U 5      $ )a  Load an ONNX model from either a file path or HuggingFace.

The loaded model is an ONNXModule object, of which you may run the model with
the `__call__` method, with less boilerplate.

Args:
    model_name: The name of the model to load. For Hugging Face-hosted models,
        use the format 'hf://model_name'. Valid `model_name` can be found on
        https://huggingface.co/kornia/ONNX_models. Or a URL to the ONNX model.

)r   )
model_names    r   r   r   K   s     j!!r   N)r>   r1   r3   r   )
__future__r   typingr   r   r   kornia.core.externalr   r   ortkornia.core.mixin.onnxr	   r
   __all__r   r    r   r   <module>rF      s:   $ # ' ' % 3 >
 +C, +C\"r   