
    wg:(                     |    d Z ddlZddlmZmZmZmZmZmZm	Z	m
Z
mZmZmZmZmZ ddlmZ ddZd ZddZdd	Zd
 Zy)a;  

Rules for building C/API module with f2py2e.

Copyright 1999 -- 2011 Pearu Peterson all rights reserved.
Copyright 2011 -- present NumPy Developers.
Permission to use, modify, and distribute this software is given under the
terms of the NumPy License.

NO WARRANTY IS EXPRESSED OR IMPLIED.  USE AT YOUR OWN RISK.
    N   )getfortranname
isexternal
isfunctionisfunction_wrapisintent_inisintent_outislogicalfunctionismoduleroutineisscalarissubroutineissubroutine_wrapoutmessshow)isoc_kindmapc                 `   ||}|| vrt        |        t        d|z         yd| |   vrt        | |          t        d|z         y| |   d   }|dk(  rd| |   v r|d| |   d   d}i }d}d	| |   v r| |   d	   }d
}nd| |   v r
| |   d   }d}d|v r<|r|d   dv rd|z  }n`|d|d|d   d}nQ|d   dv r|d|d   d}n>|d|d   }n3d|v r |d|d   }d
|v r|d|d
   d}nd|z  }nd
|v r|d|d
   d}|d|}d| |   v r|ddj                  | |   d         d}|S )Nz1var2fixfortran: No definition for argument "%s".
 typespecz/var2fixfortran: No typespec for argument "%s".
typetypename()kindselectorkindcharselectorlen*)r   :(*)z	%s(len=*)=)r   r   z*(z(len=z,kind=z%s)z(kind= 	dimension,)r   r   join)varsafaf90modevardefselectorlks          Y/home/mcse/projects/flask/flask-venv/lib/python3.12/site-packages/numpy/f2py/func2subr.pyvar2fixfortranr-      s   	z}T
DqHIa T!WBQFG!WZ FJ$q'1#T!WZ%89H	Ba 7>*	47	"7>*
h} 11$/(.HSMB}
*&,hsm<$*HSM:H$*HUO<F!*0(62BC&)x&,hv.>?F#Fd1g#SXXd1gk.B%CDM    c                     d}| d   j                         D ]0  \  }}|j                  di       j                  d      }|t        v s0 y |S )NFr%   r   r   T)itemsgetr   )routuseisockeyvalue
kind_values        r,   useiso_c_bindingr7   F   sT    G6l((* 
UYY~r266v>
% Nr.   c           	         t        |       sJ g }| d   }| d   D ]s  }| d   |   }t        |j                  dg             D ]K  \  }}|dk(  sd|d|}t        ddg	      }	d
|d|d|	d<   |j	                  |       |	||<   ||d   |<   M u | d   j                  |       t        |      }
dg}|fd}| d   }t        |       }t        |       }d|z  }||vr||   ||<   |g| d   dd  z   }n	|g| d   z   }t        ||d|      }|d d dk(  r5|r	d|dd  z   }nd|dd  z   }||   d   }|j                  dd      dk(  rd|d<   |j                  d|      }d }t        |       }dj                  |      }|rb|j                  | dd      }|D cg c]
  }||k7  s	| }}|| d<    |d| d   d|d|d       |s |d | d   d!|       |rG |d"       n> |d#|d|d       |r |d"       |
s# |d$|z         |j                  dd      d%z   |z   }|
rF| d&   j                  d'      D ]/  }|j                         j                  d       s#d(|vs( ||       1 |dd  }g }|D ]-  }t!        ||         s |d$|z         |j	                  |       / |D ];  }||v rt#        ||         s |t        |||)             |j	                  |       = |D ];  }||v rt%        ||         s |t        |||)             |j	                  |       = |D ]  }||v r |t        |||)               ||       | ||       |
r,|rn) |d*        || d&   j                                 |d+       dj                  |D cg c]	  }||vs| c}      }|s.t'        |       r ||d,|d-|d.       n ||d/|d-|d       |r |d0| d   d|       |d2   S  |d1       |d2   S c c}w c c}w )3Nr%   argsr"   r   f2py__dintegerhider   intentshape(, r   r    r   c                     |d   d| |d<   y Nr   z
       linerets     r,   addzcreatefuncwrapper.<locals>.addb       #&q640Ar.   namez
%sf2pywrapr   z
@@@NAME@@@   zcharacter*(*)zcharacter(len=10)zcharacter*10r   r   r   10subroutine f2pywrap_
modulename_ (use 	, only : use iso_c_bindingsubroutine f2pywrapexternal %sr!   saved_interface
__user__r(   	interfaceend interfacez = .not.(.not.r   z))z = end subroutine f2pywrap_endr   )r   	enumerater1   dictappendextendboolr   r   r-   replacer7   r$   splitlstrip
startswithr   r   r   r
   )r2   	signature
extra_argsr%   r&   viddndvneed_interfacerG   rH   rJ   fortrannamer(   newnamer9   l_tmpl
charselectl1rlr3   sargsargrF   dumped_argss                              r,   createfuncwrapperrx   N   s   dJ<D&\ 	'LOaeeK45 	'DAqCx&'+9fX>-.23!!"%R$&+q!	'	' 	L
#*%N$C 1<D &Kd#Gd#GdT
Wy4<++y4<'D$g>Fcr{o%(6"#;6F#fRSk1F$Z/
>>#r"e+"JsO	g	.B	Bt$GIIdOE bk2.#3sd{33V,u. 	/tL'9;GH#$D%89#$-.b1C7+EB*+11$7 	D{{}''/Jd4JD		 8DK "d1g#$q!"  "DGtQ89q!"  "tAwtQ89q!"  6N4G456
 G	~B&'..01 II$>Q!:*=q>?ET"Wk5IJ+u=>tL/A4HI q6M 	E
q6MI 4r ?s   
O0O0	O5O5c           	         t        |       sJ g }| d   }| d   D ]s  }| d   |   }t        |j                  dg             D ]K  \  }}|dk(  sd|d|}t        ddg	      }	d
|d|d|	d<   |j	                  |       |	||<   ||d   |<   M u | d   j                  |       t        |      }
dg}|fd}| d   }t        |       }t        |       }| d   }t        |       }dj                  |      }|r3 |d| d   d|d|d       |r |d       |s8 |d| d   d|       n& |d|d|d       |r |d       |
s |d|z         |
rF| d   j                  d      D ]/  }|j                         j                  d      s#d|vs( ||       1 g }|D ]-  }t        ||         s |d|z         |j	                  |       / |D ];  }||v rt        ||         s |t!        |||             |j	                  |       = |D ]  }||v r |t!        |||              |
rX|rnU |d       | d   j                  d      D ].  }|j                         j                  d      rd|v r' ||       0  |d       dj                  |D cg c]	  }||vs| c}      }|s |d |d!|d       |r |d"| d   d|       |d$   S  |d#       |d$   S c c}w )%Nr%   r9   r"   r   r:   r;   r<   r=   r>   r@   rA   r   r    r   c                     |d   d| |d<   y rC   rD   rE   s     r,   rH   zcreatesubrwrapper.<locals>.add   rI   r.   rJ   rM   rN   rO   rP   rS   rQ   rR   rT   rU   rV   rW   rX   rY   rZ   r[   zcall r   r\   r]   r   )r   r^   r1   r_   r`   ra   rb   r   r   r7   r$   rd   re   rf   r   r   r-   )r2   rg   rh   r%   r&   ri   rj   rk   rl   rm   rn   rG   rH   rJ   ro   r(   r9   r3   ru   rF   rw   s                        r,   createsubrwrapperr{      sB   J<D&\ 	'LOaeeK45 	'DAqCx&'+9fX>-.23!!"%R$&+q!	'	' 	L
#*%N$C 1<D &Kd#G<Dt$GIIdOE,u. 	/#$tL'9;GHD%89#$-.*+11$7 	D{{}''/Jd4JD		 K "d1g#$q!"  "DGtQ89q!"  6N4G456
 ./55d; ;;=++F3
d8JD	  II$>Q!:*=q>?E[%01tL/A4HI q6M 	E
q6M ?s   	KKc                 n   t        |       rt        |       }| d   }t        d|d|d       t        j                  |       } |}|}d| v r| d   }| d   |   | d   |<   | d   |   }t	        |      sWd|vrg |d<   |d   j                  d       d	}|d   D ]  }|j                  d
      sd} n |r|d   j                  d|z         |g| d   z   | d   d d  | t        |       fS t        |       rDt        |       }| d   }t        d|d|d       t        j                  |       } | t        |       fS | dfS )NrJ   z)		Creating wrapper for Fortran function "z"("z")...
resultr%   r?   outr   zout=r   zout=%sr9   z+		Creating wrapper for Fortran subroutine "r   )
r   r   r   copyr	   r`   rf   rx   r   r{   )r2   ro   rJ   fnamernamefvarflagrj   s           r,   assubrr   "  sl   t$T*F|+ 	 yytNE"&v,u"5DLF|E"D!t#!#XN!!%(D(^ <<'D X%%h%&89 'DL0VQ&t,,,$T*F|& 	'yy&t,,,8Or.   )NN)r   )__doc__r   auxfuncsr   r   r   r   r   r	   r
   r   r   r   r   r   r   	_isocbindr   r-   r7   rx   r{   r   rD   r.   r,   <module>r      sF   
     $.`yxUp!r.   