§
    ƒÛgâ  ã                   óØ   — d dl Z d dlmZ d dlmZ d dlmZmZmZm	Z	  G d„ de
¦  «        Z G d„ de¦  «        Z ed	¦  «        Z G d
„ dej        ¦  «        Z G d„ dej        ¦  «        ZdS )é    N)Úcached_property)ÚTargetDescriptor)ÚutilsÚtypingÚ
dispatcherÚcpuc                   ó6   — e Zd ZdZdZej        d„ ¦   «         ZdS )Ú_NestedContextNc              #   ó’   K  — | j         | j        f}	 || _         || _        d V — |\  | _         | _        d S # |\  | _         | _        w xY w©N)Ú_typing_contextÚ_target_context)ÚselfÚtyping_contextÚtarget_contextÚ
old_nesteds       úI/granary/edev/quantum/lib/python3.11/site-packages/numba/core/registry.pyÚnestedz_NestedContext.nested   sg   è è € àÔ)¨4Ô+?Ð?ˆ
ð	DØ#1ˆDÔ Ø#1ˆDÔ ØˆEˆEˆEà9CÑ6ˆDÔ  $Ô"6Ð"6Ð"6ø¸Ñ6ˆDÔ  $Ô"6ÐCÐCÐCÐCs	   ’5 µA)Ú__name__Ú
__module__Ú__qualname__r   r   Ú
contextlibÚcontextmanagerr   © ó    r   r
   r
   
   s@   € € € € € Ø€OØ€OàÔðDð Dñ ÔðDð Dð Dr   r
   c                   óŽ   — e Zd Zej        Z e¦   «         Zed„ ¦   «         Z	ed„ ¦   «         Z
ed„ ¦   «         Zed„ ¦   «         Zd„ ZdS )Ú	CPUTargetc                 ó@   — t          j        | j        | j        ¦  «        S r   )r   Ú
CPUContextr   Ú_target_name©r   s    r   Ú_toplevel_target_contextz"CPUTarget._toplevel_target_context   s   € õ Œ~˜dÔ1°4Ô3DÑEÔEÐEr   c                 ó(   — t          j        ¦   «         S r   )r   ÚContextr!   s    r   Ú_toplevel_typing_contextz"CPUTarget._toplevel_typing_context"   s   € õ Œ~ÑÔÐr   c                 ó0   — | j         j        }|�|S | j        S )z5
        The target context for CPU targets.
        )Ú_nestedr   r"   ©r   r   s     r   r   zCPUTarget.target_context'   ó"   € ð
 ”Ô-ˆØÐØˆMàÔ0Ð0r   c                 ó0   — | j         j        }|�|S | j        S )z5
        The typing context for CPU targets.
        )r'   r   r%   r(   s     r   r   zCPUTarget.typing_context2   r)   r   c                 ó8   — | j                              ||¦  «        S )zˆ
        A context manager temporarily replacing the contexts with the
        given ones, for the current thread of execution.
        )r'   r   )r   r   r   s      r   Únested_contextzCPUTarget.nested_context=   s   € ð
 Œ|×"Ò" >°>ÑBÔBÐBr   N)r   r   r   r   ÚCPUTargetOptionsÚoptionsr
   r'   r   r"   r%   Úpropertyr   r   r,   r   r   r   r   r      sª   € € € € € ØÔ"€GØˆnÑÔ€GàðFð Fñ „_ðFð ð ð  ñ „_ð ð ð1ð 1ñ „Xð1ð ð1ð 1ñ „Xð1ðCð Cð Cð Cð Cr   r   r   c                   ó   — e Zd ZeZdS )ÚCPUDispatcherN)r   r   r   Ú
cpu_targetÚtargetdescrr   r   r   r1   r1   I   s   € € € € € Ø€K€K€Kr   r1   c                   ó6   ‡ — e Zd ZdZˆ fd„Zˆ fd„Zˆ fd„Zˆ xZS )ÚDelayedRegistrya#  
    A unique dictionary but with deferred initialisation of the values.

    Attributes
    ----------
    ondemand:

        A dictionary of key -> value, where value is executed
        the first time it is is used.  It is used for part of a deferred
        initialization strategy.
    c                 ó
  •— t          j        ¦   «         | _        |                     dd ¦  «        | _        |                     dd ¦  «        | _        | j        p| j        | _         t          t          | ¦  «        j	        |i |¤Ž d S )NÚkey_typeÚ
value_type)
r   Ú
UniqueDictÚondemandÚpopr7   r8   Ú_type_checkÚsuperr5   Ú__init__)r   ÚargsÚkwsÚ	__class__s      €r   r>   zDelayedRegistry.__init__Y   sv   ø€ ÝÔ(Ñ*Ô*ˆŒØŸš 
¨DÑ1Ô1ˆŒØŸ'š' ,°Ñ5Ô5ˆŒØœ=Ð;¨D¬OˆÔØ-��o˜tÑ$Ô$Ô-¨tÐ;°sÐ;Ð;Ð;Ð;Ð;r   c                 ó¦   •— || j         v r  | j         |         ¦   «         | |<   | j         |= t          t          | ¦  «                             |¦  «        S r   )r:   r=   r5   Ú__getitem__)r   ÚitemrA   s     €r   rC   zDelayedRegistry.__getitem__`   sP   ø€ Ø�4”=Ð Ð Ø,˜œ tÔ,Ñ.Ô.ˆD�‰JØ”˜dÐ#Ý•_ dÑ+Ô+×7Ò7¸Ñ=Ô=Ð=r   c                 óÊ   •— | j         r3d„ }| j        � ||| j        ¦  «         | j        � ||| j        ¦  «         t          t          | ¦  «                             ||¦  «        S )Nc                 ó–   — t          |t          ¦  «        r|| j        v sJ | |f¦   «         ‚d S t          | |¦  «        sJ | |f¦   «         ‚d S r   )Ú
isinstanceÚtypeÚ__mro__)ÚxÚty_xs     r   Úcheckz*DelayedRegistry.__setitem__.<locals>.checkh   sa   € Ý˜d¥DÑ)Ô)ð :Ø 1¤9Ð,Ð,Ð,¨q°$¨iÑ,Ô,Ð,Ð,Ð,å% a¨Ñ.Ô.Ð9Ð9°°D°	Ñ9Ô9Ð9Ð9Ð9r   )r<   r7   r8   r=   r5   Ú__setitem__)r   ÚkeyÚvaluerL   rA   s       €r   rM   zDelayedRegistry.__setitem__f   sw   ø€ ØÔð 		.ð:ð :ð :ð
 Œ}Ð(Ø��c˜4œ=Ñ)Ô)Ð)ØŒÐ*Ø��e˜Tœ_Ñ-Ô-Ð-Ý•_ dÑ+Ô+×7Ò7¸¸UÑCÔCÐCr   )r   r   r   Ú__doc__r>   rC   rM   Ú__classcell__)rA   s   @r   r5   r5   M   s}   ø€ € € € € ð
ð 
ð<ð <ð <ð <ð <ð>ð >ð >ð >ð >ðDð Dð Dð Dð Dð Dð Dð Dð Dr   r5   )r   Ú	functoolsr   Únumba.core.descriptorsr   Ú
numba.corer   r   r   r   Úobjectr
   r   r2   Ú
Dispatcherr1   r9   r5   r   r   r   ú<module>rW      s>  ðØ Ð Ð Ð Ø %Ð %Ð %Ð %Ð %Ð %à 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5ð
Dð Dð Dð Dð D�Vñ Dô Dð Dð)Cð )Cð )Cð )Cð )CÐ ñ )Cô )Cð )CðZ ˆY�uÑÔ€
ðð ð ð ð �JÔ)ñ ô ð ð$Dð $Dð $Dð $Dð $D�eÔ&ñ $Dô $Dð $Dð $Dð $Dr   