
    G/Ph:(                     ~    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dS )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             dS d| |         vr)t          | |                    t          d|z             dS | |         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 rK|r"|d         dv rd|z  }nu|d|d|d         d}nc|d         dv r|d|d         d}nJ|d|d         }n<d|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                    | |         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          T/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/numpy/f2py/func2subr.pyvar2fixfortranr-      sN   	z}}T


DqHIIIra  T!WBQFGGGr!WZ FJ$q'11#VVT!WZ%8%8%89H	Ba  7>*	47	"	"7>*
h 		;} 111$/(.HSMMMB}
**&,ffhsmmm<$*FFHSMM:H$*FFHUOO<F!!*0&&(62B2B2BC&)x&,ffhv.>.>.>?F#Fd1g#VVSXXd1gk.B%C%C%C%CDM    c                     d}| d                                          D ]:\  }}|                    di                               d          }|t          v r dS ;|S )NFr%   r   r   T)itemsgetr   )routuseisockeyvalue
kind_values        r,   useiso_c_bindingr7   F   sg    G6l((**  
UYY~r2266v>>
%%44 &Nr.   c           	      	   t          |           sJ g | d         }| d         D ]}| d         |         }t          |                    dg                     D ]V\  }}|dk    rKd|d|}t          ddg	          }d
|d|d|d<                       |           |||<   ||d         |<   W| d                                        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    rJ|rd|dd          z   }nd|dd          z   }|         d         }|                    dd          dk    rd|d<   |
                    d|          }d }t          |           }d                    |          }|rn|
                     dd          }fd|D             }|| d<    |d| d         dd |d           |s |d!| d         d"|           |r |d#           nK |d$d |d           |r |d#           |	s* |d%|z             |
                    dd          d&z   |z   }|	rT| d'                             d(          D ]8}|                                                    d!          rd)|vr ||           9|dd          }g }|D ]:}t!          ||                   r# |d%|z             |                    |           ;|D ]L}||v rt#          ||                   r0 |t          |||*                     |                    |           M|D ]L}||v rt%          ||                   r0 |t          |||*                     |                    |           M|D ]"}||v r |t          |||*                     # ||           | ||           |	r<|rn9 |d+            || d'                                                     |d,           d                    fd-|D                       }|s8t'          |           r ||d.|d/|d0           n ||d1|d/|d           |r |d2| d         d           n |d3           |
d4         S )5Nr%   argsr"   r   f2py__dintegerhider   intentshape(, r   r    r   c                 &    |d         d| |d<   d S Nr   z
       linerets     r,   addzcreatefuncwrapper.<locals>.addb       #&q666440Ar.   namez
%sf2pywrapr   z
@@@NAME@@@   zcharacter*(*)zcharacter(len=10)zcharacter*10r   r   r   10c                      g | ]
}|k    |S rD   rD   ).0argrJ   s     r,   
<listcomp>z%createfuncwrapper.<locals>.<listcomp>   s    333sd{{{{{r.   subroutine f2pywrap_
modulename_ (use 	, only : use iso_c_bindingsubroutine f2pywrapexternal %sr!   saved_interface
__user__r(   	interfaceend interfacec                     g | ]}|v|	S rD   rD   rN   r&   
extra_argss     r,   rP   z%createfuncwrapper.<locals>.<listcomp>   #    >>>Q!:*=*=q*=*=*=r.   z = .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   	signaturer%   r&   viddndvneed_interfacerG   rH   fortrannamer(   newnamer9   l_tmpl
charselectl1rlr3   sargsrF   dumped_argsrb   rJ   s                           @@r,   createfuncwrapperr~   N   s   dJ<D&\ 	' 	'LOaeeK4455 	' 	'DAqCxxx&'aa+9fX>>>-.QQ23!!"%%%R$&+q!	' 	L
###*%%N$C 1 1 1 1<D &&Kd##Gd#GdT
Wy4<++y4<'D$g>>Fcrc{o%% 	2(6"##;6FF#fRSSk1F$Z/
>>#r""e++"JsO	g	.	.B	Bt$$GIIdOOE F kkk2..3333t333V,uuu. 	/ 	/ 	/ 	ICCtL'9'9'9;;GHHH 	%C#$$$DDD%%%8999 	%C#$$$ 	FC-...b11C7+EB *+11$77 	 	D{{}}''// Jd4J4JD			8DK " "d1g 	"C#$$$q!!! " "DG 	"CtQ888999q!!! " "tAw 	"CtQ888999q!!! 6 6N4G4445555CGGG	~B ! 	!CC&'..00111C   II>>>>$>>>??E ?T"" 	?CWWWkkk555IJJJJC+++uuu=>>> tL/A/A/A44HIIIIE


q6Mr.   c           	         t          |           sJ g | d         }| d         D ]}| d         |         }t          |                    dg                     D ]V\  }}|dk    rKd|d|}t          ddg	          }d
|d|d|d<                       |           |||<   ||d         |<   W| d                                        t                    }	dg}
|
fd}| d         }t          |           }t          |           }| d         }t          |           }d
                    |          }|rB |d| d         d|d|d           |r |d           |s |d| d         d|           n/ |d|d|d           |r |d           |	s |d|z             |	rT| d                             d          D ]8}|                                                    d          rd|vr ||           9g }|D ]:}t          ||                   r# |d|z             |                    |           ;|D ]L}||v rt          ||                   r0 |t!          |||                     |                    |           M|D ]"}||v r |t!          |||                     #|	rn|rnk |d           | d                             d          D ]9}|                                                    d          rd|v r. ||           : |d           d
                    fd |D                       }|s |d!|d"|d           |r |d#| d         d|           n |d$           |
d%         S )&Nr%   r9   r"   r   r:   r;   r<   r=   r>   r@   rA   r   r    r   c                 &    |d         d| |d<   d S rC   rD   rE   s     r,   rH   zcreatesubrwrapper.<locals>.add   rI   r.   rJ   rQ   rR   rS   rT   rW   rU   rV   rX   rY   rZ   r[   r\   r]   r^   r_   c                     g | ]}|v|	S rD   rD   ra   s     r,   rP   z%createsubrwrapper.<locals>.<listcomp>  rc   r.   zcall r   rd   re   r   )r   rf   r1   rg   rh   ri   rj   r   r   r7   r$   rl   rm   rn   r   r   r-   )r2   ro   r%   r&   rp   rq   rr   rs   rt   ru   rG   rH   rJ   rv   r(   r9   r3   r|   rF   r}   rb   s                       @r,   createsubrwrapperr      s   J<D&\ 	' 	'LOaeeK4455 	' 	'DAqCxxx&'aa+9fX>>>-.QQ23!!"%%%R$&+q!	' 	L
###*%%N$C 1 1 1 1<D &&Kd##G<Dt$$GIIdOOE /,uuu. 	/ 	/ 	/ 	%C#$$$ 	ICCtL'9'9'9;;GHHHDDD%%%8999 	%C#$$$ 	/C-... *+11$77 	 	D{{}}''// Jd4J4JD			K " "d1g 	"C#$$$q!!! " "DG 	"CtQ888999q!!! 6 6N4G4445555 
! 		!C./55d;;  ;;==++F33 
d8J8JD				C   II>>>>$>>>??E 2[[[%%%0111 tL/A/A/A44HIIIIE


q6Mr.   c                    t          |           rt          |           }| d         }t          d|d|d           t          j        |           } |}|}d| v r| d         }| d         |         | d         |<   | d         |         }t	          |          sjd|vrg |d<   |d                             d           d	}|d         D ]}|                    d
          rd} n|r|d                             d|z             |g| d         z   | d         d d <   | t          |           fS t          |           rRt          |           }| 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	   rh   rn   r~   r   r   )r2   rv   rJ   fnamernamefvarflagrq   s           r,   assubrr   "  s   t -$T**F|DD+++ 	  	  	 ytNE"&v,u"5DLF|E"D!! 
	:t##!#XN!!%(((D(^  <<'' DE  :X%%h%&8999 'DL0VQQQ&t,,,, -$T**F|44& 	' 	' 	'y&t,,,,8Or.   )NN)r   )__doc__r   auxfuncsr   r   r   r   r   r	   r
   r   r   r   r   r   r   	_isocbindr   r-   r7   r~   r   r   rD   r.   r,   <module>r      s3  
 
                               $ # # # # #. . . .`  y y y yxU U U Up! ! ! ! !r.   