
    sgd                     
   U d dl Z d dlZd dlZd dlm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  ej                  e      Z G d de
      Zeej&                  eej(                     gef   Zi Zeee	e   f   ed<   i Zeeef   ed<   	 	 	 dd	e	e   d
e	e   dee   fdZ e j6                  ed      Z e j6                  ed      Zd Zddee   fdZ e j@                  d      d        Z! e j@                  d      d        Z"y)    N)
EntryPoint)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     R/var/www/html/venv/lib/python3.12/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_FNScompiler_fnnametagsc                     | t        j                  t        ||      S t        |       sJ |xs | j                  }|t
        vs
J d|        | t        vr	dt        |<   | 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
    N)r   r   zduplicate name: )		functoolspartialregister_backendcallabler   r   r   tuple_tags)r   r   r   s      r   r#   r#      s        !14HHK   ';''D}$?(8&??$)#	$%M$dKr   )debug)r   )experimentalc                     t        | t              r^| t        vr
t                | t        vrddlm}  ||       | t        vr$t        |    }t        |j                         |        t        |    } | S )z#Expand backend strings to functions   )InvalidBackend)r   )r   r   )	
isinstancestrr   _lazy_importexcr+   r   r#   load)r   r+   entry_points      r   lookup_backendr2   >   sd    +s#i'Ni', k22m+#K0K)9)9);+N#K0r   r   c                     t                t        | xs d      } t        j                         D cg c].  }|t        vs"| j                  t        |   j                        s|0 }}t        |      S c c}w )za
    Return valid strings that can be passed to:

        torch.compile(..., backend="name")
    r   )r.   setr   keysr   intersectionr&   sorted)exclude_tagsr   backendss      r   list_backendsr:   O   sq     N|)r*L NN$}$((t)<)B)BC 	H  (s   3A0c                  T    ddl m}  ddlm}  ||        ddlm} |J t                y )Nr*   )r9   )import_submodule)dynamo_minifier_backend) r9   utilsr<   repro.after_dynamor=   _discover_entrypoint_backends)r9   r<   r=   s      r   r.   r.   a   s%    (X<"...!#r   c                     ddl m}  d}t        j                  dk  r- |        }||v r||   ng }|D ci c]  }|j                  | }}n& | |      }|j
                  D ci c]  }|||   
 }}|D ]  }||   t        |<    y c c}w c c}w )Nr   )entry_pointstorch_dynamo_backends)   
   )group)importlib.metadatarC   sysversion_infor   namesr   )rC   
group_nameepsepr   backend_names         r   rA   rA   o   s     0(J
'!n!+s!2c*o%()rrww{)),+.9954tSY55 4"%l"3	,4	 * 6s   B B)NNr   ))r'   r(   )#r!   loggingrI   rH   r   typingr   r   r   r   r   r	   r
   r   r   	getLoggerr   logr   GraphModuler   
CompilerFnr   r-   __annotations__r   r#   r"   register_debug_backendregister_experimental_backendr2   r:   	lru_cacher.   rA   r   r   r   <module>rZ      sP     
 ) L L L   g! 
 r~~tELL'9:JFG
-/	4Xj))* /')tCO$ ) )-*%
3- 3-: +**+;*M  1	 1 1,! 
"T#Y $ T
$ 
$ T4 4r   