Ë
    ÄÓ^ja  ã                   ó˜   — d dl Z d dlZd dlmZ d dlmZ ddlmZmZ  ej                  e
«      Z G d„ de«      Z G d„ d	«      Z e«       Zy)
é    N)ÚProtocol)ÚVersioné   )Ú	_OpCondFnÚ	_OpImplFnc                   ól   — 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z  dedededdfd„Zy)ÚDSLModuleProtocolz*Complete interface for DSL utility modulesÚreturnc                  ó   — y ©N© ©Úselfs    úe/var/www/ramen.bs-engineer-server.com/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ÚcondÚimplr   r   c                 ó   — y r   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	   r	      s|   „ Ù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)r4   Úhasattrr/   r*   ÚlogÚdebugÚwarningÚis_dsl_availableÚcache_clearÚget_dsl_versionÚlist_available_dslsÚlist_all_dslsÚinfo)r   r,   r5   Úrequired_methodsÚmethodÚmissing_methodsÚexisting_modules          r   Úregister_dslzDSLRegistry.register_dsl2   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   ÚImportErrorr8   r9   Ú	ExceptionÚ	exception©r   rF   r5   s      r   r;   zDSLRegistry.is_dsl_availabled   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 %sTrH   )r*   rJ   r   rL   r8   r9   rN   s      r   r=   zDSLRegistry.get_dsl_versions   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*   r;   Ú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))rR   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*   rJ   r3   s     r   Úget_dsl_modulezDSLRegistry.get_dsl_module�   s   € ð × Ñ ×$Ñ$ TÓ*Ð*r   )r!   r"   r#   r$   r+   r&   r4   r	   rE   Ú	functoolsÚcacher%   r;   r   r=   rR   r>   r?   rW   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(   )rX   ÚloggingÚtypingr   Útorch._vendor.packaging.versionr   Úregistryr   r   Ú	getLoggerr!   r8   r	   r(   Údsl_registryr   r   r   ú<module>r`      sL   ðó Û Ý å 3ç *ð €g×Ñ˜Ó!€ô˜ô ÷*r+ñ r+ñl ‹}�r   