§
    ŠŠtja  ã                   ó¨   — 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dS )
é    N)ÚProtocol)ÚVersioné   )Ú	_OpCondFnÚ	_OpImplFnc                   ón   — 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dS )ÚDSLModuleProtocolz*Complete interface for DSL utility modulesÚreturnc                 ó   — d S ©N© ©Úselfs    úX/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/torch/_native/dsl_registry.pyÚruntime_availablez#DSLModuleProtocol.runtime_available   ó   € € € ó    Nc                 ó   — d S r   r   r   s    r   Úruntime_versionz!DSLModuleProtocol.runtime_version   r   r   c                 ó   — d S 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                ó   — d S r   r   )r   r   r   r   r   r   r   r   s           r   Úregister_op_overridez&DSLModuleProtocol.register_op_override   s	   € ð ˆsr   )r
   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úboolr   r   r   r   Ústrr   r   r    r   r   r   r	   r	      sÅ   € € € € € Ø4Ð4à, 4Ð,Ð,Ð,Ð,Ø4 ¨4¡Ð4Ð4Ð4Ð4à2Ð2Ð2Ð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dS )ÚDSLRegistryzIRegistry for DSL modules - calls their existing API functions dynamicallyc                 ó   — i | _         d S r   )Ú_dsl_modulesr   s    r   Ú__init__zDSLRegistry.__init__'   s   € Ø:<ˆÔÐÐr   Únamer
   Nc                 ó¾   — t          |t          ¦  «        s$t          dt          |¦  «        j        › �¦  «        ‚|                     ¦   «         st          d¦  «        ‚dS )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*   sa   € å˜$¥Ñ$Ô$ð 	SÝÐQ½DÀ¹J¼JÔ<OÐQÐQÑRÔRÐRà�zŠz‰|Œ|ð 	GÝÐEÑFÔFÐFð	Gð 	Gr   Ú
dsl_modulec                 ó:  ‡— |                       |¦  «         g d¢}ˆfd„|D ¦   «         }|rt          d|› d|› �¦  «        ‚|| j        v rI| j        |         }|‰u rt                               d|¦  «         dS t                               d|¦  «         ‰| j        |<   | j                             ¦   «          | j                             ¦   «          | j	                             ¦   «          | j
                             ¦   «          t                               d|¦  «         dS )	z-Register a DSL module with required interface)r   r   r    r   c                 ó4   •— g | ]}t          ‰|¦  «        °|‘ŒS r   )Úhasattr)Ú.0Úmethodr5   s     €r   ú
<listcomp>z,DSLRegistry.register_dsl.<locals>.<listcomp>>   s8   ø€ ð 
ð 
ð 
Ø½ÀÈVÑ9TÔ9Tð
Øð
ð 
ð 
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   r/   r*   ÚlogÚdebugÚwarningÚis_dsl_availableÚcache_clearÚget_dsl_versionÚlist_available_dslsÚlist_all_dslsÚinfo)r   r,   r5   Úrequired_methodsÚmissing_methodsÚexisting_modules     `   r   Úregister_dslzDSLRegistry.register_dsl2   sk  ø€ ð 	×Ò Ñ%Ô%Ð%ð
ð 
ð 
Ðð
ð 
ð 
ð 
Ø!1ð
ñ 
ô 
ˆð ð 	ÝØR˜tÐRÐRÀÐRÐRñô ð ð
 �4Ô$Ð$Ð$Ø"Ô/°Ô5ˆOØ *Ð,Ð,å—	’	Ø=Øñô ð ð �õ —’ØfØñô ð ð #-ˆÔ˜$Ñð 	Ô×)Ò)Ñ+Ô+Ð+ØÔ×(Ò(Ñ*Ô*Ð*ØÔ ×,Ò,Ñ.Ô.Ð.ØÔ×&Ò&Ñ(Ô(Ð(å�ŠÐ2°DÑ9Ô9Ð9Ð9Ð9r   Údsl_namec                 ó  — | j                              |¦  «        }|€dS 	 |                     ¦   «         S # t          $ r! t                               d|d¬¦  «         Y dS t          $ r t                               d|¦  «         Y dS w xY w)z<Check if DSL is available by calling its runtime_available()NFzDSL %s import errorT©Úexc_infoz&Error checking availability for DSL %s)r*   Úgetr   ÚImportErrorr<   r=   Ú	ExceptionÚ	exception©r   rI   r5   s      r   r?   zDSLRegistry.is_dsl_availabled   s¥   € ð Ô&×*Ò*¨8Ñ4Ô4ˆ
ØÐØ�5ð	Ø×/Ò/Ñ1Ô1Ð1øÝð 	ð 	ð 	Ý�IŠIÐ+¨XÀˆIÑEÔEÐEØ�5�5Ýð 	ð 	ð 	Ý�MŠMÐBÀHÑMÔMÐMØ�5�5ð	øøøs    4 ´'BÁ$BÂBc                 óÄ   — | j                              |¦  «        }|€dS 	 |                     ¦   «         S # t          $ r! t                               d|d¬¦  «         Y dS w xY w)z0Get DSL version by calling its runtime_version()Nz Error getting version for DSL %sTrK   )r*   rM   r   rO   r<   r=   rQ   s      r   rA   zDSLRegistry.get_dsl_versions   sw   € ð Ô&×*Ò*¨8Ñ4Ô4ˆ
ØÐØ�4ð	Ø×-Ò-Ñ/Ô/Ð/øÝð 	ð 	ð 	Ý�IŠIÐ8¸(ÈTˆIÑRÔRÐRØ�4�4ð	øøøs    4 ´'AÁA.c                 óŒ   — g }| j         D ],}|                      |¦  «        r|                     |¦  «         Œ-t          |¦  «        S )z%Get names of currently available DSLs)r*   r?   ÚappendÚtuple)r   Ú	availabler,   s      r   rB   zDSLRegistry.list_available_dsls   sT   € ð ˆ	ØÔ%ð 	'ð 	'ˆDØ×$Ò$ TÑ*Ô*ð 'Ø× Ò  Ñ&Ô&Ð&øÝ�YÑÔÐr   c                 óN   — t          | j                             ¦   «         ¦  «        S )z/Get all registered DSL names (available or not))rU   r*   Úkeysr   s    r   rC   zDSLRegistry.list_all_dslsˆ   s!   € õ �TÔ&×+Ò+Ñ-Ô-Ñ.Ô.Ð.r   c                 ó6   — | 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*   rM   r3   s     r   Úget_dsl_modulezDSLRegistry.get_dsl_module�   s   € ð Ô ×$Ò$ TÑ*Ô*Ð*r   )r!   r"   r#   r$   r+   r&   r4   r	   rH   Ú	functoolsÚcacher%   r?   r   rA   rU   rB   rC   rZ   r   r   r   r(   r(   $   sj  € € € € € ØSÐSð=ð =ð =ðG sð G¨tð Gð Gð Gð Gð0: ð 0:Ð2Cð 0:Èð 0:ð 0:ð 0:ð 0:ðd „_ð¨ð °ð ð ð ñ „_ðð „_ð	¨ð 	°¸$±ð 	ð 	ð 	ñ „_ð	ð „_ð  U¨3°¨8¤_ð  ð  ð  ñ „_ð ð „_ð/˜u S¨# Xœð /ð /ð /ñ „_ð/ð	+ 3ð 	+Ð+<¸tÑ+Cð 	+ð 	+ð 	+ð 	+ð 	+ð 	+r   r(   )r[   ÚloggingÚtypingr   Útorch._vendor.packaging.versionr   Úregistryr   r   Ú	getLoggerr!   r<   r	   r(   Údsl_registryr   r   r   ú<module>rc      sØ   ðð Ð Ð Ð Ø €€€Ø Ð Ð Ð Ð Ð à 3Ð 3Ð 3Ð 3Ð 3Ð 3à *Ð *Ð *Ð *Ð *Ð *Ð *Ð *ð €gÔ˜Ñ!Ô!€ðð ð ð ð ˜ñ ô ð ð*r+ð r+ð r+ð r+ð r+ñ r+ô r+ð r+ðl ˆ{‰}Œ}€€€r   