Ë
    L²j.  ã                   ó”   — d dl Z d dlZd dlmZ d dlmZ ddlmZ  ej                  e	«      Z
 G d„ de«      Z G d„ d	«      Z e«       Zy)
é    N)ÚProtocol)ÚVersioné   )Ú_OpFnc                   ób   — e Zd ZdZdefd„Zdedz  fd„Zdd„Zdddœd	e	d
e	de	de
dededdfd„Zy)ÚDSLModuleProtocolz*Complete interface for DSL utility modulesÚreturnc                  ó   — y ©N© ©Úselfs    úY/var/www/html/ia-enhanced/venv/lib/python3.12/site-packages/torch/_native/dsl_registry.pyÚruntime_availablez#DSLModuleProtocol.runtime_available   ó   � ó    Nc                  ó   — y r   r   r   s    r   Úruntime_versionz!DSLModuleProtocol.runtime_version   r   r   c                  ó   — y r   r   r   s    r   Úderegister_op_overridesz)DSLModuleProtocol.deregister_op_overrides   r   r   F)Úallow_multiple_overrideÚunconditional_overrideÚ
lib_symbolÚ	op_symbolÚdispatch_keyÚimplr   r   c                 ó   — y r   r   )r   r   r   r   r   r   r   s          r   Úregister_op_overridez&DSLModuleProtocol.register_op_override   s   € ð r   )r	   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úboolr   r   r   r   Ústrr   r   r   r   r   r   r      sm   „ Ù4à, 4Ó,Ø4 ¨4¡Ó4ã2ð ).Ø',ò	àð	ð ð	ð ð		ð
 ð	ð "&ð	ð !%ð	ð 
ô	r   r   c                   ó  — e Zd ZdZd„ Zdeddfd„Zdededdfd„Ze	j                  d	edefd
„«       Ze	j                  d	ededz  fd„«       Ze	j                  deedf   fd„«       Ze	j                  deedf   fd„«       Zdededz  fd„Zy)ÚDSLRegistryzIRegistry for DSL modules - calls their existing API functions dynamicallyc                 ó   — i | _         y r   )Ú_dsl_modulesr   s    r   Ú__init__zDSLRegistry.__init__&   s
   € Ø:<ˆÕr   Únamer	   Nc                 óœ   — t        |t        «      s!t        dt        |«      j                  › �«      ‚|j                  «       st        d«      ‚y)zValidate DSL name at runtimezDSL name must be string, got z&DSL name cannot be empty or whitespaceN)Ú
isinstancer$   Ú	TypeErrorÚtyper   ÚstripÚ
ValueError©r   r*   s     r   Ú_validate_dsl_namezDSLRegistry._validate_dsl_name)   sD   € ä˜$¤Ô$ÜÐ;¼DÀ»J×<OÑ<OÐ;PÐQÓRÐRà�z‰zŒ|ÜÐEÓFÐFð r   Ú
dsl_modulec                 óL  — | j                  |«       g d¢}|D �cg c]  }t        ||«      rŒ|‘Œ }}|rt        d|› d|› �«      ‚|| j                  v r@| j                  |   }||u rt        j                  d|«       yt        j                  d|«       || j                  |<   | j                  j                  «        | j                  j                  «        | j                  j                  «        | j                  j                  «        t        j                  d|«       yc c}w )z-Register a DSL module with required interface)r   r   r   r   zDSL module 'z' missing required methods: z'DSL '%s' re-registered with same moduleNzPDSL '%s' re-registered with different module object (possibly from test imports)zSuccessfully registered DSL: %s)r2   Úhasattrr-   r(   ÚlogÚdebugÚwarningÚis_dsl_availableÚcache_clearÚget_dsl_versionÚlist_available_dslsÚlist_all_dslsÚinfo)r   r*   r3   Úrequired_methodsÚmethodÚmissing_methodsÚexisting_modules          r   Úregister_dslzDSLRegistry.register_dsl1   s'  € ð 	×Ñ Ô%ò
Ðð "2ö
Ø¼ÀÈVÕ9TŠFð
ˆð 
ñ ÜØ˜t˜fÐ$@ÀÐ@QÐRóð ð
 �4×$Ñ$Ñ$Ø"×/Ñ/°Ñ5ˆOØ *Ñ,ä—	‘	Ø=Øôð ô —‘ØfØôð #-ˆ×Ñ˜$Ñð 	×Ñ×)Ñ)Ô+Ø×Ñ×(Ñ(Ô*Ø× Ñ ×,Ñ,Ô.Ø×Ñ×&Ñ&Ô(ä�‰Ð2°DÕ9ùòI
s
   šD!¬D!Údsl_namec                 óî   — | j                   j                  |«      }|€y	 |j                  «       S # t        $ r t        j                  d|d¬«       Y yt        $ r t        j                  d|«       Y yw xY w)z<Check if DSL is available by calling its runtime_available()FzDSL %s import errorT©Úexc_infoz&Error checking availability for DSL %s)r(   Úgetr   ÚImportErrorr6   r7   Ú	ExceptionÚ	exception©r   rD   r3   s      r   r9   zDSLRegistry.is_dsl_availablec   sv   € ð ×&Ñ&×*Ñ*¨8Ó4ˆ
ØÐØð	Ø×/Ñ/Ó1Ð1øÜò 	Ü�I‰IÐ+¨XÀˆIÔEÙÜò 	Ü�M‰MÐBÀHÔMÙð	ús    0 °!A4ÁA4Á3A4c                 ó®   — | j                   j                  |«      }|€y	 |j                  «       S # t        $ r t        j                  d|d¬«       Y yw xY w)z0Get DSL version by calling its runtime_version()Nz Error getting version for DSL %sTrF   )r(   rH   r   rJ   r6   r7   rL   s      r   r;   zDSLRegistry.get_dsl_versionr   s\   € ð ×&Ñ&×*Ñ*¨8Ó4ˆ
ØÐØð	Ø×-Ñ-Ó/Ð/øÜò 	Ü�I‰IÐ8¸(ÈTˆIÔRÙð	ús    0 °!AÁA.c                 ó„   — g }| j                   D ]%  }| j                  |«      sŒ|j                  |«       Œ' t        |«      S )z%Get names of currently available DSLs)r(   r9   ÚappendÚtuple)r   Ú	availabler*   s      r   r<   zDSLRegistry.list_available_dsls~   sG   € ð ˆ	Ø×%Ñ%ò 	'ˆDØ×$Ñ$ TÕ*Ø× Ñ  Õ&ð	'ô �YÓÐr   c                 óH   — t        | j                  j                  «       «      S )z/Get all registered DSL names (available or not))rP   r(   Úkeysr   s    r   r=   zDSLRegistry.list_all_dsls‡   s   € ô �T×&Ñ&×+Ñ+Ó-Ó.Ð.r   c                 ó8   — | j                   j                  |«      S )z·Get a registered DSL module by name.

        Args:
            name: Name of the DSL to retrieve.

        Returns:
            The DSL module if registered, None otherwise.
        )r(   rH   r1   s     r   Úget_dsl_modulezDSLRegistry.get_dsl_moduleŒ   s   € ð × Ñ ×$Ñ$ TÓ*Ð*r   )r   r    r!   r"   r)   r$   r2   r   rC   Ú	functoolsÚcacher#   r9   r   r;   rP   r<   r=   rU   r   r   r   r&   r&   #   só   „ ÙSò=ðG sð G¨tó Gð0: ð 0:Ð2Cð 0:Èó 0:ðd ‡_�_ð¨ð °ò ó ðð ‡_�_ð	¨ð 	°¸$±ò 	ó ð	ð ‡_�_ð  U¨3°¨8¡_ò  ó ð ð ‡_�_ð/˜u S¨# X™ò /ó ð/ð	+ 3ð 	+Ð+<¸tÑ+Cô 	+r   r&   )rV   ÚloggingÚtypingr   Útorch._vendor.packaging.versionr   Úregistryr   Ú	getLoggerr   r6   r   r&   Údsl_registryr   r   r   ú<module>r^      sL   ðó Û Ý å 3å ð €g×Ñ˜Ó!€ô˜ô ÷(r+ñ r+ñl ‹}�r   