a
    hÝEb‹$  ã                   @   s‚   d Z ddd… Z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	d
„Zddd„Zddd„Zdd„ ZdS )aW  

Rules for building C/API module with f2py2e.

Copyright 1999,2000 Pearu Peterson all rights reserved,
Pearu Peterson <pearu@ioc.ee>
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.
$Date: 2004/11/26 11:13:06 $
Pearu Peterson

z$Revision: 1.16 $é
   éÿÿÿÿzSee `f2py -v`é    Né   )ÚgetfortrannameÚ
isexternalÚ
isfunctionÚisfunction_wrapÚisintent_inÚisintent_outÚislogicalfunctionÚismoduleroutineÚisscalarÚissubroutineÚissubroutine_wrapÚoutmessÚshowc                 C   sÈ  |d u r|}|| vr,t | ƒ td| ƒ dS d| | vrTt | | ƒ td| ƒ dS | | d }|dkrˆd| | v rˆd|| | d f }i }d}d| | v r®| | d }d	}nd
| | v rÊ| | d
 }d}d|v �r6|�r|d dv rðd| }nd|||d f }n0|d dv �r$d||d f }nd||d f }nZd|v �rvd||d f }d	|v �rld||d	 f }nd| }nd	|v �r�d||d	 f }d||f }d| | v �rÄd|d | | d ¡f }|S )Nz1var2fixfortran: No definition for argument "%s".
Ú Útypespecz/var2fixfortran: No typespec for argument "%s".
ÚtypeÚtypenamez%s(%s)ZkindselectorÚkindÚcharselectorÚlenÚ*)r   ú:ú(*)z	%s(len=*)z	%s(%s=%s))r   r   z%s*(%s)z%s*%sz	%s(len=%sz%s,kind=%s)z%s)z%s(kind=%s)z%s %sÚ	dimensionú,)r   r   Újoin)ÚvarsÚaÚfaÚf90modeZvardefÚselectorZlk© r$   úT/home/ja/django-apps/lartica_env/lib/python3.9/site-packages/numpy/f2py/func2subr.pyÚvar2fixfortran   sP    





r&   c                    sà  t | ƒsJ ‚g ‰ | d }| d D ]z}| d | }t| dg ¡ƒD ]X\}}|dkr@d||f }tddgd�}d	||f |d
< ˆ  |¡ |||< ||d |< q@q | d  ˆ ¡ tˆ ƒ}	dg}
|
fdd„}| d }t| ƒ}t| ƒ}d| }||v�r|| ||< |g| d dd …  }n|g| d  }t	||||ƒ}|d d… dk�rŽ|�rXd|dd …  }nd|dd …  }|| d }| dd¡dk�rŽd|d< d 
|¡}|�rÐ|d| d ||f ƒ |�sþ|d| d |f ƒ n.|d||f ƒ |	�sþ|d| ƒ |d | }|	�r<| d  d ¡D ](}| ¡  d!¡�rd"|v�r||ƒ �q|dd … }g }|D ]*}t|| ƒ�rP|d| ƒ | |¡ �qP|D ]>}||v �r’�q€t|| ƒ�r€|t	|||d#�ƒ | |¡ �q€|D ]>}||v �rÖ�qÄt|| ƒ�rÄ|t	|||d#�ƒ | |¡ �qÄ|D ]&}||v �r�q|t	|||d#�ƒ �q||ƒ |	�rf|�rFn |d$ƒ || d  ¡ ƒ |d%ƒ d 
‡ fd&d'„|D ƒ¡}|�s´t| ƒ�r¢|d(|||f ƒ n|d)|||f ƒ |�rÐ|d*| d |f ƒ n|d+ƒ |
d, S )-Nr   Úargsr   r   úf2py_%s_d%sÚintegerÚhide©r   Úintentúshape(%s, %s)ú=r   c                 S   s   d|d | f |d< d S ©Nz%s
      %sr   r$   ©ÚlineÚretr$   r$   r%   Úaddb   s    zcreatefuncwrapper.<locals>.addÚnamez
%sf2pywrapr   é   zcharacter*(*)zcharacter(len=10)zcharacter*10r   r   r   Ú10ú, úsubroutine f2pywrap_%s_%s (%s)Ú
modulenameúuse %s, only : %súsubroutine f2pywrap%s (%s)úexternal %sÚsaved_interfaceÚ
úuse Ú__user__©r"   Ú	interfaceúend interfacec                    s   g | ]}|ˆ vr|‘qS r$   r$   ©Ú.0r    ©Ú
extra_argsr$   r%   Ú
<listcomp>ª   ó    z%createfuncwrapper.<locals>.<listcomp>z%s = .not.(.not.%s(%s))z%s = %s(%s)úend subroutine f2pywrap_%s_%sÚendr   )r   Ú	enumerateÚgetÚdictÚappendÚextendÚboolr   r   r&   r   ÚsplitÚlstripÚ
startswithr   r   r	   r   )ÚroutÚ	signaturer   r    ÚvÚiÚdÚdnÚdvÚneed_interfacer2   r3   r4   Úfortrannamer"   Znewnamer'   ÚlZ
charselectÚsargsr1   Údumped_argsr$   rF   r%   ÚcreatefuncwrapperN   s¬    


ÿ



ra   c                    sÞ  t | ƒsJ ‚g ‰ | d }| d D ]z}| d | }t| dg ¡ƒD ]X\}}|dkr@d||f }tddgd�}d	||f |d
< ˆ  |¡ |||< ||d |< q@q | d  ˆ ¡ tˆ ƒ}	dg}
|
fdd„}| d }t| ƒ}t| ƒ}| d }d 	|¡}|�r&|d| d ||f ƒ |�sH|d| d |f ƒ n"|d||f ƒ |	�sH|d| ƒ |	�r†| d  
d¡D ](}| ¡  d¡�r\d|v�r\||ƒ �q\g }|D ]*}t|| ƒ�rŽ|d| ƒ | |¡ �qŽ|D ]>}||v �rÐ�q¾t|| ƒ�r¾|t|||d�ƒ | |¡ �q¾|D ]&}||v �r�q|t|||d�ƒ �q|	�r„|�r8nL|dƒ | d  
d¡D ],}| ¡  d¡�rpd|v �rp�qN||ƒ �qN|dƒ d 	‡ fdd„|D ƒ¡}|�s²|d||f ƒ |�rÎ|d| d |f ƒ n|d ƒ |
d! S )"Nr   r'   r   r   r(   r)   r*   r+   r-   r.   r   c                 S   s   d|d | f |d< d S r/   r$   r0   r$   r$   r%   r3   Ì   s    zcreatesubrwrapper.<locals>.addr4   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   c                    s   g | ]}|ˆ vr|‘qS r$   r$   rD   rF   r$   r%   rH      rI   z%createsubrwrapper.<locals>.<listcomp>zcall %s(%s)rJ   rK   r   )r   rL   rM   rN   rO   rP   rQ   r   r   r   rR   rS   rT   r   r   r&   )rU   rV   r   r    rW   rX   rY   rZ   r[   r\   r2   r3   r4   r]   r"   r'   r_   r1   r`   r$   rF   r%   Úcreatesubrwrapper¸   s„    

ÿ

rb   c                 C   s8  t | ƒrðt| ƒ}| d }td||f ƒ t | ¡} |}|}d| v r^| d }| d | | d |< | d | }t|ƒsÊd|vr‚g |d< |d  d¡ d}|d D ]}| d¡rœd	} q´qœ|rÊ|d  d
| ¡ |g| d  | d d d …< | t| ƒfS t| ƒ�r0t| ƒ}| d }td||f ƒ t | ¡} | t	| ƒfS | dfS )Nr4   z6		Creating wrapper for Fortran function "%s"("%s")...
Úresultr   r,   Úoutr   zout=r   zout=%sr'   z8		Creating wrapper for Fortran subroutine "%s"("%s")...
r   )
r   r   r   Úcopyr
   rO   rT   ra   r   rb   )rU   r]   r4   ÚfnameÚrnameZfvarÚflagrX   r$   r$   r%   Úassubr  sF    ÿ


ÿ
ri   )NN)r   )r   )Ú__doc__Ú__version__Zf2py_versionre   Zauxfuncsr   r   r   r   r	   r
   r   r   r   r   r   r   r   r&   ra   rb   ri   r$   r$   r$   r%   Ú<module>   s   <
1
j
S