
    9j                     0   d dl Z d dlZej                  j                  dd      Zej                  d       ej                  j                  edd      ej                  j                  edd      dej                  d	ed
ej                  fd              Z	d Z
y)    NexportFRAGMENTzLaccess_subclass_inner_tensor(Tensor src_subclass_tensor, str attr) -> Tensoraccess_subclass_inner_tensorAutogradPythonsrc_subclass_tensorattrreturnc                     ddl m}  ||       st        dt        |              t	        | |d       }|t        |t        j                        st        d| d|        |S )Nr   )is_traceable_wrapper_subclasszIExpected src_subclass_tensor to be a traceable wrapper subclass, but got z
Attribute z% is not a tensor or doesn't exist in )	torch.utils._python_dispatchr   AssertionErrortypegetattr
isinstancetorchTensorRuntimeError)r   r	   r   vals       W/media/conek/DATA/Code/OCR/venv/lib/python3.12/site-packages/torch/export/custom_ops.py_access_subclass_inner_tensorr      s~     K()<=/013
 	
 %tT
2C
{*S%,,7CDWCXY
 	
 J    c                     | j                  dd      \  }}t        j                  |      }t        ||      }t	        |d      st        d|  d       |j                  |i |S )a]  
    Import a custom autograd function by string name and call it. This is pretty bad
    because:
    1) There is no schema

    Ideally we should automatically wrap custom autograd functions with a custom op, but
    that is too much work because we need to schematize custom autograd functions. For now,
    we just hackily put it in the IR.
    .   applyzExpected function class z to have 'apply' method)rsplit	importlibimport_moduler   hasattrr   r   )function_cls_nameargskwargsmodule_name
class_namemodulefunction_clss          r   ._call_custom_autograd_function_in_pre_dispatchr(   $   sy     066sA>K $$[1F6:.L<)&'8&99PQ
 	
 <t.v..r   )r   r   libraryLibrarylibdefineimplr   strr   r(    r   r   <module>r0      s      mmHj1 

R
 C7D C7B-0
\\ C E$/r   