a
    p=ic$                     @   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rd| | v rd|| | d f }i }d}d| | v r| | d }d	}nd
| | v r| | d
 }d}d|v r6|r|d dv rd| }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 rd||d	 f }d||f }d| | v rd|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selectorlk r%   e/home/droni/.local/share/virtualenvs/DPS-5Je3_V2c/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rd|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qt|| r|t	|||d# || q|D ]>}||v r֐qt|| r|t	|||d# || q|D ]&}||v rq|t	|||d# q|| |	rf|rFn |d$ || d   |d% d
 fd&d'|D }|st| 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_interfacer3   r4   r5   fortrannamer"   Znewnamer(   lZ
charselectsargsr2   dumped_argsr%   rG   r&   createfuncwrapperN   s    






rb   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Аqt|| 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 r0   r%   r1   r%   r%   r&   r4      s    zcreatesubrwrapper.<locals>.addr5   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   c                    s   g | ]}| vr|qS r%   r%   rE   rG   r%   r&   rI      rJ   z%createsubrwrapper.<locals>.<listcomp>zcall %s(%s)rK   rL   r   )r   rM   rN   rO   rP   rQ   rR   r   r   r   rS   rT   rU   r   r   r'   )rV   rW   r   r    rX   rY   rZ   r[   r\   r]   r3   r4   r5   r^   r"   r(   r`   r2   ra   r%   rG   r&   createsubrwrapper   s    



rc   c                 C   s8  t | rt| }| d }td||f  t| } |}|}d| v r^| d }| d | | d |< | d | }t|sd|vrg |d< |d d d}|d D ]}|drd	} qq|r|d d
|  |g| d  | d d d < | t| fS t| r0t| }| d }td||f  t| } | t	| fS | dfS )Nr5   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
   rP   rU   rb   r   rc   )rV   r^   r5   fnamernameZfvarflagrY   r%   r%   r&   assubr  sF    



rj   )NN)r   )r   )__doc____version__Zf2py_versionrf   Zauxfuncsr   r   r   r   r	   r
   r   r   r   r   r   r   r   r'   rb   rc   rj   r%   r%   r%   r&   <module>   s   <
1
j
S