
    Ph                        U d dl Z d dlZd dlmZmZmZmZmZmZm	Z	 d dl
Z
d dl
mZ  G d de      Zeej                  ee
j                     gef   Z e       Zeeef   ed<   	 	 	 ddee   dee   d	ee   fd
Z e j*                  ed      Z e j*                  ed      Zd Zddee   fdZ e j4                  d      d        Z e j4                  d      defd       Zy)    N)CallableDictListOptionalProtocolSequenceTuple)fxc                   N    e Zd Zdej                  deej                  df   fdZy)
CompiledFnargsreturn.c                      y )N )selfr   s     jC:\Users\daisl\Desktop\realtime-object-detection\venv\Lib\site-packages\torch/_dynamo/backends/registry.py__call__zCompiledFn.__call__
   s        N)__name__
__module____qualname__torchTensorr	   r   r   r   r   r   r   	   s'    ell uU\\35F/G r   r   	_BACKENDScompiler_fnnametagsc                     | t        j                  t        ||      S t        |       sJ |xs | j                  }|t
        vs
J d|        | t
        |<   t        |      | _        | S )a  
    Decorator to add a given compiler to the registry to allow calling
    `torch.compile` with string shorthand.  Note: for projects not
    imported by default, it might be easier to pass a function directly
    as a backend and not use a string.

    Args:
        compiler_fn: Callable taking a FX graph and fake tensor inputs
        name: Optional name, defaults to `compiler_fn.__name__`
        tags: Optional set of string tags to categorize backend with
    )r   r   zduplicate name: )	functoolspartialregister_backendcallabler   r   tuple_tags)r   r   r   s      r   r!   r!      st        !14HHK   ';''Dy ;$4TF";; !IdOdKr   )debug)r   )experimentalc                     t        | t              rE| t        vr
t                | t        vrt	        |        | t        vrddlm}  ||       t        |    } | S )z#Expand backend strings to functions   )InvalidBackend)r   )
isinstancestrr   _lazy_import_lazy_import_entry_pointexcr)   )r   r)   s     r   lookup_backendr/   4   sO    +s#i'Ni'$[1i', k22,r   r   c           	          t                t        | xs d      } t        t        j	                         D cg c]"  \  }}| j                  |j                        s|$ c}}      S c c}}w )za
    Return valid strings that can be passed to:

        torch.compile(..., backend="name")
    r   )r,   setsortedr   itemsintersectionr$   )exclude_tagsr   backends      r   list_backendsr7   C   sd     N|)r*L "+!2	
!2g,,W]]; !2	
 	
s   'A%
c                  @    ddl m}  ddlm}  ||        ddlm} |J y )Nr(   )backends)import_submodule)dynamo_minifier_backend) r9   utilsr:   repro.after_dynamor;   )r9   r:   r;   s      r   r,   r,   T   s    (X<"...r   backend_namec                    ddl m} d }d}t        j                  dk  rX |       }|j	                  |d      D cg c]  }|j
                  | k(  s| }}t        |      dkD  r>|d   j                         }n* ||      }| |j                  v r||    j                         }|$| t        t                     vrt        ||        y y y c c}w )Nr   )entry_pointstorch_dynamo_backends)   
   r   )group)r   r   )importlib.metadatarA   sysversion_infogetr   lenloadnamesr7   r#   r!   )r?   rA   r   
group_namebackend_epsepepss          r   r-   r-   `   s    /K(J
'!"n'OOJ;W;brww,?Vr;Ws8a<a&++-K"4;,,,%l388:K<}UW7M#M[|D $N Xs   CC)NNr   ))r%   r&   )r   rG   typingr   r   r   r   r   r   r	   r   r
   r   GraphModuler   
CompilerFndictr   r+   __annotations__r!   r    register_debug_backendregister_experimental_backendr/   r7   	lru_cacher,   r-   r   r   r   <module>rY      s'    
 L L L   
 r~~tELL'9:JFG
#'6	4Z  ) )-*%
3- 3-6 +**+;*M  1	 1 1,! 
T#Y " T/ / TE3 E Er   