
    Ph/
                         d dl Z d dlZd dlZd dlmZmZmZ d dlZe j                   G d d             Z	 G d d      Z
dedefd	Zd
edeeef   fdZd
edej                  j                   fdZdedefdZy)    N)AnyCallableTuplec                   ,    e Zd ZU dZeed<   eed<   d Zy)Kernelz$Models a (function, source location)funcsourcec                 &     | j                   |i |S N)r   )selfargskwargss      _C:\Users\daisl\Desktop\realtime-object-detection\venv\Lib\site-packages\torch/_library/utils.py__call__zKernel.__call__   s    tyy$)&))    N)__name__
__module____qualname____doc__r   __annotations__strr    r   r   r   r   	   s    .
NK*r   r   c                   $    e Zd ZdZdefdZddZy)RegistrationHandlez2Does something when someone calls .destroy() on it
on_destroyc                     || _         y r   _on_destroy)r   r   s     r   __init__zRegistrationHandle.__init__   s
    %r   Nc                 $    | j                          y r   r   )r   s    r   destroyzRegistrationHandle.destroy   s    r   )returnN)r   r   r   r   r   r   r!   r   r   r   r   r      s    <&8 &r   r   
stacklevelr"   c                     t        j                  t        j                  |             }|j                   d|j
                   }|S )zGet a string that represents the caller.

    Example: "/path/to/foo.py:42"

    Use stacklevel=1 to get the caller's source
    Use stacklevel=2 to get the caller's caller's source
    etc.
    :)inspectgetframeinfosys	_getframefilenamelineno)r#   framer	   s      r   
get_sourcer-      s;       z!:;Eq/FMr   qualnamec                 r    | j                  d      }t        |      dk7  rt        d|  d      |d   |d   fS )Nz::   zAExpected `qualname` to be of the form "namespace::name", but got zf. The qualname passed to the torch.library APIs must consist of a namespace and a name, e.g. aten::sinr      )splitlen
ValueError)r.   splitss     r   parse_namespacer6   ,   sR    ^^D!F
6{a**2 489
 	
 !9fQir   c                     t        |       \  }}d|v r|j                  d      \  }}nd}t        t        j                  |      }t        ||      }t        ||      S )N.default)r6   r2   getattrtorchops)r.   	namespacenameoverloadnspackets         r   	lookup_oprB   8   sV    %h/OIt
d{Ch	I	&BRF68$$r   schemac                 6   ddl m}m} t        | t        |f      sJ t        | t              r|j                  |       } | j                         |j                  k7  ry| j                  }t        |      dkD  xr t        d |D              }|ry| j                  syy)zCheck if the schema is functional.

    An operator is functional if:
    - it does not mutate any of its inputs
    - it does not return a view on any of its inputs
    - it has at least one return
    r   )FunctionSchema
SchemaKindFc              3   j   K   | ]+  }|j                   d uxr |j                   j                    - y wr   )
annotationis_write).0rs     r   	<genexpr>z'is_functional_schema.<locals>.<genexpr>V   s2      1HL1D >)>)>%>>s   13T)torchgen.modelrE   rF   
isinstancer   parsekind
functionalreturnsr3   any)rC   rE   rF   retsis_non_mutating_views        r   is_functional_schemarV   C   s     :fsN3444&#%%f-{{}
--->>Dt9q= S 1HL1 . >>r   )dataclassesr&   r(   typingr   r   r   r;   	dataclassr   r   intr   r-   r6   _opsOpOverloadPacketrB   boolrV   r   r   r   <module>r^      s      
 ' '  * * * 3 3 	 c 	 eCHo 	 % %

 ; ; %  r   