o
    U=ºi·%  ã                   @   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r*t | | ƒ td| ƒ dS | | d }|dkrDd| | v rDd|| | d f }i }d}d| | v rW| | d }d	}nd
| | v re| | d
 }d}d|v r˜|r€|d dv rvd| }nLd|||d f }nB|d dv r�d||d f }n3d||d f }n*d|v r¶d||d f }d	|v r±d||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$   úZC:\Users\psant\Downloads\PAF backend\school\venv\Lib\site-packages\numpy/f2py/func2subr.pyÚvar2fixfortran   sP   

r&   c                    sØ  t | ƒsJ ‚g ‰ | d }| d D ]=}| d | }t| dg ¡ƒD ],\}}|dkrLd||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Ã|r©d|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|| ƒ�r5|d| ƒ | |¡ �q!|D ]}||v �rB�q9t|| ƒ�rW|t	|||d#�ƒ | |¡ �q9|D ]}||v �rd�q[t|| ƒ�ry|t	|||d#�ƒ | |¡ �q[|D ]}||v �r†�q}|t	|||d#�ƒ �q}||ƒ |	�r¬|�rœn|d$ƒ || d  ¡ ƒ |d%ƒ d 
‡ fd&d'„|D ƒ¡}|�sÓt| ƒ�rÊ|d(|||f ƒ n	|d)|||f ƒ |�rä|d*| d |f ƒ |
d, S |d+ƒ |
d, S )-Nr   Úargsr   r   úf2py_%s_d%sÚintegerÚhide©r   Úintentúshape(%s, %s)ú=r   c                 S   ó   d|d | f |d< d S ©Nz%s
      %sr   r$   ©ÚlineÚretr$   r$   r%   Úaddb   ó   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                    ó   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   r6   Úfortrannamer"   Znewnamer'   ÚlZ
charselectÚsargsr2   Údumped_argsr$   rI   r%   ÚcreatefuncwrapperN   s¼   
€ù
ÿ€€
€

€

€

ÿrd   c                    sÄ  t | ƒsJ ‚g ‰ | d }| d D ]=}| d | }t| dg ¡ƒD ],\}}|dkrLd||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 ƒ |s�|d| d |f ƒ n|d||f ƒ |	s¡|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ô|	�r2|�rn&|dƒ | d  
d¡D ]}| ¡  d¡�r(d|v �r(�q||ƒ �q|dƒ d 	‡ fdd„|D ƒ¡}|�sI|d||f ƒ |�rZ|d| d |f ƒ |
d! S |d ƒ |
d! S )"Nr   r'   r   r   r(   r)   r*   r+   r-   r.   r   c                 S   r/   r0   r$   r1   r$   r$   r%   r4   Ì   r5   zcreatesubrwrapper.<locals>.addr6   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   c                    rF   r$   r$   rG   rI   r$   r%   rK      rL   z%createsubrwrapper.<locals>.<listcomp>zcall %s(%s)rM   rN   r   )r   rO   rP   rQ   rR   rS   rT   r   r   r   rU   rV   rW   r   r   r&   )rX   rY   r   r    rZ   r[   r\   r]   r^   r_   r3   r4   r6   r`   r"   r'   rb   r2   rc   r$   rI   r%   Úcreatesubrwrapper¸   s’   
€ù
ÿ€€
€
€ÿre   c                 C   s6  t | ƒrxt| ƒ}| d }td||f ƒ t | ¡} |}|}d| v r/| d }| d | | d |< | d | }t|ƒsed|vrAg |d< |d  d¡ d}|d D ]}| d¡rYd	} qZqN|re|d  d
| ¡ |g| d  | d d d …< | t| ƒfS t| ƒr—t| ƒ}| d }td||f ƒ t | ¡} | t	| ƒfS | dfS )Nr6   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
   rR   rW   rd   r   re   )rX   r`   r6   ÚfnameÚrnameZfvarÚflagr[   r$   r$   r%   Úassubr  sH   ÿ

þÿ
rl   )NN)r   )Ú__doc__Ú__version__Zf2py_versionrh   Zauxfuncsr   r   r   r   r	   r
   r   r   r   r   r   r   r   r&   rd   re   rl   r$   r$   r$   r%   Ú<module>   s   <

1
jS