
    uki	                     j   d Z ddlZddlZddlZddlmZmZ ddlmZ ddl	m
Z
 ddlZddlmZ  ej                  d       G d	 d
             Z G d de      Z G d de      Z ej                  d       G d d             Zi ZdefdZdee   fdZdedee   fdZej0                  d        Zd Zy)z,Common utilities for generating source maps.    N)AnyProtocol)Sequence)flags)	sourcemapT)frozenc                   D    e Zd ZU dZej
                  ed<   eed<   eed<   y)SourceMapDumpz;A container for a source map and the paired generated code.
source_mapgenerated_code	pass_nameN)__name__
__module____qualname____doc__r   	SourceMap__annotations__str     `/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/jax/experimental/source_mapper/common.pyr
   r
      s    C!!!.r   r
   c                       e Zd ZdefdZy)	CompileFnreturnc                      y Nr   )selfwork_dirfnf_argsf_kwargskwargss         r   __call__zCompileFn.__call__$       r   N)r   r   r   r   r#   r   r   r   r   r   "   s    # r   r   c                       e Zd ZdedefdZy)GenerateDumpFncompile_resultr   c                      y r   r   )r   r'   r"   s      r   r#   zGenerateDumpFn.__call__*   r$   r   N)r   r   r   r   r
   r#   r   r   r   r&   r&   (   s    S } r   r&   c                   ,    e Zd ZU eed<   eed<   eed<   y)Passname
compile_fngenerate_dumpN)r   r   r   r   r   r   r&   r   r   r   r*   r*   .   s    )r   r*   pass_c                     | j                   t        v rt        d| j                    d      | t        | j                   <   y )NzPass z already registered)r+   _pass_registry
ValueError)r.   s    r   register_passr2   8   s5    
ZZ>!
uUZZL(;<
==$.r   r   c                  <    t        t        j                               S r   )listr0   valuesr   r   r   
all_passesr6   >   s    	n##%	&&r   regexc                     t         j                         D cg c]$  }t        j                  | |j                        r|& c}S c c}w )zFGets all registered passes whose display name matches the given regex.)r0   r5   rematchr+   )r7   r.   s     r   filter_passesr;   B   s?     "((*

	%	$ 
  
s   )Ac               +     K   | D ci c]  }|t        t        j                  |       }}| j                         D ]   \  }}t	        t        j                  ||       " 	 d |j                         D ]   \  }}t	        t        j                  ||       " yc c}w # |j                         D ]   \  }}t	        t        j                  ||       " w xY ww)z2A context manager for setting and restoring flags.N)getattrr   FLAGSitemssetattr)r"   kwarg	old_flags	new_value	old_values        r   flag_envrE   K   s      @FFeugekk511F)F ,,. +eYEKK	*+-	%OO- -yekk5),- G &OO- -yekk5),-s'   C"B5CB #9C5CCc                      t        di |5   t        j                   fd      j                  |i |j	                  |       d d d        y # 1 sw Y   y xY w)Nc                       | i |S r   r   )argsr"   fs     r   <lambda>z"compile_with_env.<locals>.<lambda>Z   s    At$6v$6 r   r   )rE   jaxjitlowercompile)rI   r    r!   	env_flagscompiler_flagss   `    r   compile_with_envrQ   X   sR    ) =CGG67==	gn  s   8AA)r   
contextlibdataclassesr9   typingr   r   collections.abcr   abslr   rK   jax._srcr   	dataclassr
   r   r&   r*   r0   r2   r6   r   r;   contextmanagerrE   rQ   r   r   r   <module>rZ      s    3   	   $  
  d#  $ X  d#    $  % %'HTN ' $  	- 	-r   