
    Ae4              	          d dl mZ d dlZd dl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ZddlmZmZ ddlmZmZ ddlmZ dd	lmZ dd
lmZ ddlmZmZmZ ddlmZ ddlm Z  d dl!Z"ejF                  dk\  Z$e$sd Z%nd Z%ejF                  dk  rd dl&Z&d Z'nd dl(Z)d dl*m+Z+ d Z' G d dee      Z,ed,d       Z-d,dZ.d,dZ/d Z0ed        Z1i Z2 e1d      Z3d-dZ4d Z5e.ejl                  jo                   e        d       ddd!d!dddf	d"Z8de8_9         ejt                  d#      jv                  Z<d$ Z= ejt                  d%      Z>d& Z?	 d d'lm@Z@ d) ZB G d* d+eC      ZDy# eA$ r d( Z@Y w xY w).    )absolute_importN)Distribution	Extension)	build_ext   )Contextdefault_options)CythonTransformEnvTransform)SkipDeclarations)parse_from_strings)_unicode   )strip_string_literals	cythonizecached_function)Pipeline)get_cython_cache_dir)   c                 H    t        | t              r| j                  d      S | S )Nascii)
isinstancebytesdecode)ss    3lib/python3.12/site-packages/Cython/Build/Inline.py
to_unicoder      s     a88G$$H    c                     | S N xs    r   <lambda>r$   #   s    1 r   )r      c                 .    t        j                  | |      S r    )impload_dynamic)namemodule_paths     r   r(   r(   '   s    k22r   )ExtensionFileLoaderc                     t         j                  j                  | t        | |            }t         j                  j	                  |      }|j
                  j                  |       |S )N)loader)	importlibutilspec_from_file_locationr+   module_from_specr-   exec_module)r)   pathspecmodules       r   r(   r(   -   sP    ~~55dCVW[]aCb5c006'r   c                   *     e Zd Zd Zd Z fdZ xZS )UnboundSymbolsc                 N    t        j                  | d        t               | _        y r    )r
   __init__setunbound)selfs    r   r9   zUnboundSymbols.__init__4   s      t,ur   c                     | j                         j                  |j                        s%| j                  j	                  |j                         |S r    )current_envlookupr)   r;   add)r<   nodes     r   visit_NameNodezUnboundSymbols.visit_NameNode7   s8    !((3LLTYY'r   c                 B    t         t        |   |       | j                  S r    )superr7   __call__r;   )r<   rA   	__class__s     r   rE   zUnboundSymbols.__call__;   s    nd,T2||r   )__name__
__module____qualname__r9   rB   rE   __classcell__)rF   s   @r   r7   r7   3   s     r   r7   c                 T   t        |       } |t        g t              }ddlm} t        d|       }t        j                  |d      D ]  }| ||      }t        ||      s n 	 dd l	}t         t               |      t        t        |            z
        S # t        $ r dd l}Y =w xY w)Nr   )AnalyseDeclarationsTransformz(tree fragment)pyxr   )r   r   r	   Compiler.ParseTreeTransformsrL   r   r   create_pipeliner   builtinsImportError__builtin__tupler7   r:   dir)codecontextrL   treephaserP   s         r   unbound_symbolsrY   @   s    dD"o.K/6D))'59 =T{e9:' !!$'#c(m*<<==  '&'s   %B B'&B'c                 B    t        |       }|t        u ryt        | |      S )Nlong)typeint	safe_type)argrV   py_types      r   unsafe_typera   T   s"    3iG#~g&&r   c                 b   t        |       }|t        t        t        t        fv r|j
                  S |t        u ry|t        u ry|t        u rydt        j                  v rNt        | t        j                  d   j                        r'd| j                  j                  d| j                  dS |j                   D ]v  }|j"                  dv r y	|j%                  |j"                  d
      }|s3|j'                  |j
                        }|j(                  s[|j"                  d|j
                  c S  y	)Nzdouble complexdoublebintnumpyznumpy.ndarray[numpy.z	_t, ndim=])rR   rP   objectF)need_pxd.)r\   listrS   dictstrrG   complexfloatboolsysmodulesr   ndarraydtyper)   ndim__mro__rH   find_moduler?   is_type)r_   rV   r`   	base_typer5   entrys         r   r^   r^   \   s    3iG4c**	G		E		D	CKK	JsCKK4H4P4P$Q7:yy~~sxxPP  	PI##'BB(()=)=(NFi&8&89==&/&:&:I<N<NOO	P r   c                      t               } | j                         }| j                  |       t        |       }|j	                          |S r    )r   find_config_filesparse_config_filesr   finalize_options)distconfig_filesbuild_extensions      r   _get_build_extensionr   t   sB    >D ))+LL)oO$$&r   c                 4    t        t        |       t              S r    )r   rj   r	   )cython_include_dirss    r   _create_contextr      s    4+,o>>r   )ri   c                    |D ]  }|| vs||Nt        j                         j                  j                  j                  }||j                  }||j                  }||v r	||   | |<   g||v r	||   | |<   tt        d|z          y )NzCouldn't find %r)inspectcurrentframef_backf_locals	f_globalsprint)kwdsrY   localsglobalssymbolcalling_frames         r   _populate_unboundr      s    ! 3~ ' 4 4 6 = = D D K K>*33F?+55G%f~V7"&vV(6123r   c                     | |t         j                  t         j                  |t        j                  f}t        j                  t        |      j                  d            j                         S )Nzutf-8)
rp   version_info
executableCython__version__hashlibsha1r   encode	hexdigest)	orig_codearg_sigslanguage_levelkeys       r   _inline_keyr      sL    
Xs//QWQcQc
cC<<,,W56@@BBr   inlineFc
           
      
   |d }|rt        t        |            nt        }|rt        |      ni }|	d|vrd}	|	|	|d<   t        j                  |       }|t        |
|||       t        |
j                               }t        |D cg c]  \  }} |||      |f c}}      }t        | ||	      }t        j                  | ||f      }||D cg c]  }|d   	 }} || S | }t        |       } t        |       \  } }t        |       } |2t        j                         j                  j                  j                   }|2t        j                         j                  j                  j"                  }	 t%        |       xt        |<   }t        |
|||       g }t+        |
j                               D ]%  \  }}|t,        u s|j/                  d|z         |
|= ' t        |
      }t        |D cg c]  } ||
|   |      |f c}      }t        |||	      }d|z   }|t0        j2                  v rt0        j2                  |   }nd }t4        j6                  $t9               }|j;                  d      t4        _        t<        j>                  jA                  ||t4        j6                  z         }t<        j>                  jC                  |      st=        jD                  |       |s t<        j>                  jG                  |      sg }g }tI        jJ                  d	      }|D ]x  \  } }!|jM                  |       }"|"s|j/                  d
|"jO                         d   z         |"jO                         d   dk(  sVdd l(}#|j/                  |#jS                                z tU        |       \  }$}%djA                  |D &cg c]  }&d|&z  	 c}&      }'ddjA                  |      |$|'|%dz  }(|j                         D ]  \  })}|(jW                  |)|      }( t<        j>                  jA                  ||dz         }*tY        |*d      }+	 |+j[                  |(       |+j]                          t_        ||*g||      },|
t9               }ta        |,g|xs dg||      |_1        t<        j>                  je                  |*      |_3        ||_4        |jk                          tm        ||      }|jn                  t        |||f<   |D cg c]  }|
|   	 }} |jn                  | S c c}}w c c}w # t&        $ r |st)        d       Y w xY wc c}w c c}&w # |+j]                          w xY wc c}w )Nc                      y)Nrg   r!   r"   s    r   r$   zcython_inline.<locals>.<lambda>   s    r   r   3strr   z>Could not parse code as a string (to extract unbound symbols).z
cimport cython as %s_cython_inline_ z([.\w]+)[.]z
cimport %sr   re   z, z%s %szf
%(module_body)s
%(cimports)s
def __invoke(%(params)s):
%(func_body)s
    return locals()
            
)cimportsmodule_bodyparams	func_bodyz.pyxw)r)   sourcesinclude_dirsextra_compile_argsri   )include_pathcompiler_directivesquiet)8r   rS   _cython_inline_default_contextrk   _cython_inline_cachegetr   sorteditemsr   r   r   strip_common_indentr   r   r   r   r   rY   AssertionErrorr   rj   cython_moduleappendrp   rq   cython_inlineso_extr   get_ext_filenameosr3   joinexistsmakedirsisfilerecompilematchgroupsre   get_includeextract_func_codereplaceopenwritecloser   r   
extensionsdirname
build_temp	build_librunr(   __invoke)-rU   get_typelib_dirr   cython_compiler_directivesforcer   r   r   r   r   ctx_unbound_symbolsargsr_   valuer   key_hashinvokearg_listr   literalsr   r)   	arg_namesmodule_namer5   r   r*   cflagsc_include_dirs	qualifiedr\   _mre   r   r   ar   module_coder   pyx_filefh	extensions-                                                r   r   r      s   
 %9L/% 34
5RpCE_&@!Aeg"2:T"T!7E"#34 ,//5#$ 0&'Bdjjl#M*#u8E3/5MNtX~>%))48*DE*./3A/H/8$$IdD*40ND(t$D~%%'..55>>&&(//66@@T=LT=RRY'*:$ 0&'B H$**,' 	c-OO4t;<T
 tIK#xS	3/5KLH9h?H#h.Kckk![) '24O#2#C#CB#GM ggll7K-:N:N,NOww~~g&KK {3FN

>2I# CaOOD)OONQXXZ]$BCxxz!}/$&--e.?.?.ABC &7t%<"KYYX>!>?F  $yy2"-# ),	,K 'nn. >
U)11#u=>ww||G[6-ABHh$B%
!"#*-%+	-I
 &"6"8)209SE$>	*O&
 *,)BO&)0O%!k;7:@//Hh67%./cS	/H/6??H%%I N 0  TRST L@  ?$ 
( 0s<   T
T2"T +T30T86T= .UT0/T0=Uz[^ ]c                 $   d }| j                         }|D ]3  }t        |      }|s|j                         }||   dk(  r*|||kD  s2|}5 t        |      D ](  \  }}t        |      }|r|r||dz    dk(  r!||d  ||<   * dj	                  |      S )N#r   r   )
splitlines_find_non_spacestart	enumerater   )rU   
min_indentlinesliner   indentixs          r   r   r      s    JOOE  %<3f!4J  e$ &D%DDq$9S$@%b		&
 99Ur   zI^((cdef +(extern|class))|cimport|(from .+ cimport)|(from .+ import +[*]))c                 $   g }g }|}| j                  dd      } | j                  d      }|D ]>  }|j                  d      st        j	                  |      r|}n|}|j                  |       @ dj                  |      ddj                  |      z   fS )N	 r   z    z
    )r   split
startswithmodule_statementr   r   r   )rU   r5   functioncurrentr   r   s         r   r   r   5  s    FHG<<c"DJJtE s#%%d+ "t 99Vfx}}X'>>>>r   )getcallargsc                    i }t        j                  |       \  }}}}||t        |      d  ||<   t        ||      D ]
  \  }}	|	||<    t	        |j                               D ]0  \  }}	||v s||v rt        d|z        |j                  |      ||<   2 ||||<   n|rt        dt	        |      z        |d}t        |      t        |      z
  }
t        |      D ](  \  }}||vs||
k\  r|||
z
     ||<   t        d|z         |S )NzDuplicate argument %sz Unexpected keyword arguments: %sr!   zMissing argument: %s)	r   
getargspeclenziprj   r   	TypeErrorpopr   )func
arg_values
kwd_valuesallr   varargsr   defaultsr)   r   first_defaultr   s               r   r   r   H  sI   (/(:(:4(@%gtX%c$ij1CLtZ0 	KD%CI	
 0 0 23 	1KD%t|3;#$;d$BCC&NN40D			1
 "CI>jAQQRRHD	CM1!$ 	CHB3& (m); <CI#$:T$ABB	C 
r   c                 Z    | j                  d      }| d d dk(  rd| |dz   d  z  S | |dz   d  S )N:r%   lambdaz	return %sr   )index)sourcer   s     r   get_bodyr  d  sC    	c	BbqzXVBqDE]**bde}r   c                       e Zd Zd Zd Zy)RuntimeCompiledFunctionc                 X    || _         t        t        j                  |            | _        y r    )_fr  r   	getsource_body)r<   fs     r   r9   z RuntimeCompiledFunction.__init__p  s     g//23
r   c                 D   t        | j                  g|i |}t        rAt        | j                  f| j                  j
                  | j                  j
                  d|S t        | j                  f| j                  j                  | j                  j                  d|S )N)r   r   )r   r  IS_PY3r   r  __globals__func_globals)r<   r   r   r  s       r   rE   z RuntimeCompiledFunction.__call__t  s    $''1D1D1 lDGG4G4GQUQXQXQdQdlhkll nDGG4H4HRVRYRYRfRfnjmnnr   N)rG   rH   rI   r9   rE   r!   r   r   r  r  n  s    4or   r  r    )NN)E
__future__r   r   r   r   r   rp   distutils.corer   r   distutils.command.build_extr   r   Compiler.Mainr   r	   Compiler.Visitorr
   r   rN   r   Compiler.TreeFragmentr   Compiler.StringEncodingr   Dependenciesr   r   r   Compilerr   Utilsr   cythonr   r   r  r   r'   r(   importlib.utilr.   importlib.machineryr+   r7   rY   ra   r^   r   r   r   r   r   r   r3   r   r   r   r   searchr   r   r   r   r   rQ   r  rg   r  r!   r   r   <module>r+     s   &   	 	 
 2 1  4 < ; 6 . K K  (  
		T	!  Jf3 7
\#3 
 > >&'0 ? ?  !0!8 3"C
 "-'',,';'=xH&*tU4VZx&z  "**V$++( 2::jk ? #<of oO  s   E E&%E&