
    IЦid                        % S SK r S SKrS SKrS SKJr  S SKJrJrJrJ	r	J
r
JrJr  S SKrS SKJr  \R                  " \5      r " S S\
5      r\\R&                  \\R(                     /\4   r0 r\\\	\   4   \S'   0 r\\\4   \S'      SS	\	\   S
\	\   S\\   4S jjr\ R6                  " \SS9r\ R6                  " \SS9rS rSS\\   4S jjr\ R@                  " S5      S 5       r!\ R@                  " S5      S 5       r"g)    N)
EntryPoint)CallableDictListOptionalProtocolSequenceTuple)fxc                   X    \ rS rSrS\R
                  S\\R
                  S4   4S jrSrg)
CompiledFn   argsreturn.c                     g )N )selfr   s     ^/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/torch/_dynamo/backends/registry.py__call__CompiledFn.__call__   s        r   N)	__name__
__module____qualname____firstlineno__torchTensorr
   r   __static_attributes__r   r   r   r   r      s'    ell uU\\35F/G r   r   	_BACKENDS_COMPILER_FNScompiler_fnnametagsc                    U c  [         R                  " [        XS9$ [        U 5      (       d   eU=(       d    U R                  nU[
        ;  d
   SU 35       eU [        ;  a	  S[        U'   U [
        U'   [        U5      U l        U $ )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HHK    ';''D}$?(8&??$)#	$%M$dKr   )debug)r#   )experimentalc                     [        U [        5      (       a^  U [        ;  a
  [        5         U [        ;  a  SSKJn  U" U S9eU [        ;  a!  [        U    n[        UR                  5       U S9  [        U    n U $ )z#Expand backend strings to functions   )InvalidBackend)r"   )r!   r"   )	
isinstancestrr   _lazy_importexcr/   r    r'   load)r!   r/   entry_points      r   lookup_backendr6   >   sg    +s##i'Ni', k22m+#K0K)9)9);+N#K0r   r   c                    [        5         [        U =(       d    S5      n [        R                  5        Vs/ s H8  nU[        ;  d)  U R                  [        U   R                  5      (       a  M6  UPM:     nn[        U5      $ s  snf )zU
Return valid strings that can be passed to:

    torch.compile(..., backend="name")
r   )r2   setr   keysr    intersectionr*   sorted)exclude_tagsr"   backendss      r   list_backendsr>   O   st     N|)r*L NN$$D}$((t)<)B)BC 	$   (s   5B.Bc                  V    SSK Jn   SSKJn  U" U 5        SSKJn  Uc   e[        5         g )Nr.   )r=   )import_submodule)dynamo_minifier_backend) r=   utilsr@   repro.after_dynamorA   _discover_entrypoint_backends)r=   r@   rA   s      r   r2   r2   a   s%    (X<"...!#r   c                     SSK Jn   Sn[        R                  S:  a/  U " 5       nX;   a  X!   O/ nU Vs0 s H  o3R                  U_M     nnO$U " US9nUR
                   Vs0 s H  oDX$   _M	     nnU H  nX%   [        U'   M     g s  snf s  snf )Nr   )entry_pointstorch_dynamo_backends)   
   )group)importlib.metadatarG   sysversion_infor"   namesr   )rG   
group_nameepsepr"   backend_names         r   rE   rE   o   s     0(J
'!n!+!2co%()Srww{S),+.99594SY95"%"3	, 	 * 6s   B B
)NNr   ))r+   r,   )#r%   loggingrM   rL   r   typingr   r   r   r   r   r	   r
   r   r   	getLoggerr   logr   GraphModuler   
CompilerFnr   r1   __annotations__r    r'   r&   register_debug_backendregister_experimental_backendr6   r>   	lru_cacher2   rE   r   r   r   <module>r^      sF     
 ) L L L   ! 
 r~~tELL'9:JFG
-/	4Xj))* /')tCO$ ) )-*%
3- 3-: #**+;*M  ) 1 1,! 
"T#Y $ T
$ 
$ T4 4r   