
    thhA'                     ~    d Z ddlZddlm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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   )isoc_kindmap)getfortranname
isexternal
isfunctionisfunction_wrapisintent_inisintent_outislogicalfunctionismoduleroutineisscalarissubroutineissubroutine_wrapoutmessshowc                 "   ||}|| vr$t          |            t          d| d           dS d| |         vr*t          | |                    t          d| d           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}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	}nd|v r| d|d          d	}| d| }d| |         v r'| dd                    | |         d                    d	}|S )Nz,var2fixfortran: No definition for argument "z".
 typespecz*var2fixfortran: No typespec for argument "typetypename()kindselectorkindcharselectorlen*)r   :(*)z(len=*)=)r   r   z*(z(len=z,kind=z(kind= 	dimension,)r   r   join)varsafaf90modevardefselectorlks          K/var/www/histauto/venv/lib/python3.11/site-packages/numpy/f2py/func2subr.pyvar2fixfortranr-       sz   	z}}T


FqFFFGGGra  T!WDQDDDEEEr!WZ FJ$q'1133T!WZ0333H	Ba  7>*	47	"	"7>*
h 	1} 111"+++"::R::(3-:::c]j((22(3-222FF00#00FF	(		22%22X99hv&6999FF\\\FF	8		55(6"2555Fd1g>>SXXd1gk&:;;>>>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   N   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 ]J\  }}|dk    r?d| d| }ddgd	}d
| d| d|d<                       |           |||<   ||d         |<   K| d                                        t                    }	dg}
|
fd}| d         t          |           }t          |           } d}||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%|            |	                    dd          d&z   |z   }|	rT| d'                             d(          D ]8}|                                                    d!          rd)|vr ||           9|dd          }g }|D ]:}t          ||                   r# |d%|            |                    |           ;|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>.addj   !    F**D**Ar.   namef2pywrapr   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 r!   saved_interface
__user__r(   	interfaceend interfacec                     g | ]}|v|	S rD   rD   rO   r&   
extra_argss     r,   rQ   z%createfuncwrapper.<locals>.<listcomp>   #    >>>Q!:*=*=q*=*=*=r.   z = .not.(.not.r   z))z = end subroutine f2pywrap_endr   )r   	enumerater1   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_argsrc   rJ   s                           @@r,   createfuncwrapperr~   V   s   dJ<D&\ 	' 	'LOaeeK4455 	' 	'DAqCxx%Q%%!%%"+x@@,1,,,,,3!!"%%%R$&+q!	' 	L
###*%%N$C + + + +<D &&Kd##G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H4#5HHHHHHHIII 	CCAtL)AAKAABBB 	%C#$$$2$22%222333 	%C#$$$ 	FC)K))***b11C7+EB *+11$77 	 	D{{}}''// Jd4J4JD			8DK " "d1g 	"CA   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 7T"" 	7C7AA+AAAAABBBBC755{55U555666 BtL'9BBDBBCCCCE


q6Mr.   c           	         t          |           sJ g | d         }| d         D ]~}| d         |         }t          |                    dg                     D ]J\  }}|dk    r?d| d| }ddgd	}d
| d| d|d<                       |           |||<   ||d         |<   K| 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|            |	rT| d         
                    d          D ]8}|                                                    d          rd|vr ||           9g }|D ]:}t          ||                   r# |d|            |                    |           ;|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   rR   rS   rT   rU   rX   rV   rW   rY   rZ   r[   r\   r]   r^   r_   r`   c                     g | ]}|v|	S rD   rD   rb   s     r,   rQ   z%createsubrwrapper.<locals>.<listcomp>  rd   r.   zcall r   re   rf   r   )r   rg   r1   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}   rc   s                       @r,   createsubrwrapperr      s   J<D&\ 	' 	'LOaeeK4455 	' 	'DAqCxx%Q%%!%%"+x@@,1,,,,,3!!"%%%R$&+q!	' 	L
###*%%N$C + + + +<D &&Kd##G<Dt$$GIIdOOE +H4#5HHHHHHHIII 	%C#$$$ 	CCAtL)AAKAABBB2$22%222333 	%C#$$$ 	+C)K))*** *+11$77 	 	D{{}}''// Jd4J4JD			K " "d1g 	"CA   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 ,*K**%***+++ BtL'9BBDBBCCCC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
|            |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   r9   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!! 
	6t##!#XN!!%(((D(^  <<'' DE  6X%%nUnn555 'DL0VQQQ&t,,,, -$T**F|44& 	' 	' 	'y&t,,,,8Or.   )NN)r   )__doc__r   	_isocbindr   auxfuncsr   r   r   r   r	   r
   r   r   r   r   r   r   r   r-   r7   r~   r   r   rD   r.   r,   <module>r      s1  
 
  # # # # # #                             ", , , ,\  x x x xvT T T Tn! ! ! ! !r.   