Ë
    P/æjd  ã                   ó
  — 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     úb/root/repos/pocs/video-evals/.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'   „ ð˜eŸl™lð ¨u°U·\±\À3Ð5FÑ/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Ñ0ˆKÜ¨×)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ô —N‘NÓ$öàØ”}Ñ$Ø×(Ñ(¬°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Ñ!2ˆc�*Šo¸ˆØ%(Ö)˜rˆr�w‰w˜‰{Ð)ˆÑ)á Ô,ˆØ+.¯9©9Ö5 4ˆt�S˜‘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—~‘~ t¨E¯L©LÑ'9Ð:¸JÐFÑG€
à-/€	ˆ4��X˜jÑ)Ð)Ñ*Ó /Ø')€ˆt�C˜�OÑ$Ó )ð )-ØØñØ˜*Ñ%ðà
�3‰-ðð �3‰-óð: +˜×*Ñ*Ð+;À*ÔMÐ Ø 1 	× 1Ñ 1ØÐ,ô!Ð ò
ñ"¸TÀ#¹Yó ð$ €×Ñ�TÓñ
$ó ð
$ð €×Ñ�TÓñ4ó ñ4r   