§
    ÈÁ³g  ã                   óv   — d Z ddlmZ ej        ZddlmZmZmZm	Z	m
Z
mZ ddlmZ ddlmZ ddlmZ d
d„Zd„ Zd	S )a5  
Build common block mechanism for 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.
é   )Ú__version__)ÚhasbodyÚ	hascommonÚhasnoteÚisintent_hideÚoutmessÚgetuseblocks)Ú	capi_maps)Ú	func2subr)Ú	rmbadnamec                 ó   ‡ — g }t          ‰ ¦  «        rG‰ d                              ¦   «         D ]+\  }}ˆ fd„|D ¦   «         }|                     |||f¦  «         Œ,n-t          ‰ ¦  «        r‰ d         D ]}|t	          |d¦  «        z   }Œ|rEg }g }|D ]<}	|	d         |vr0|                     |	d         ¦  «         |                     |	¦  «         Œ=|S |S )NÚcommonc                 ó.   •— i | ]}|‰d          |         “ŒS )Úvars© )Ú.0ÚvÚblocks     €úU/var/www/html/mpstechhub/venv/lib/python3.11/site-packages/numpy/f2py/common_rules.pyú
<dictcomp>z$findcommonblocks.<locals>.<dictcomp>   s$   ø€ Ð8Ð8Ð8¨Q�Q˜˜fœ aÔ(Ð8Ð8Ð8ó    Úbodyé    )r   ÚitemsÚappendr   Úfindcommonblocks)
r   ÚtopÚretÚkeyÚvalueÚvars_ÚbÚtretÚnamesÚts
   `         r   r   r      s  ø€ Ø
€CÝ�ÑÔð /Ø œ/×/Ò/Ñ1Ô1ð 	,ð 	,‰JˆC�Ø8Ð8Ð8Ð8°%Ð8Ñ8Ô8ˆEØ�JŠJ˜˜U EÐ*Ñ+Ô+Ð+Ð+ð	,õ 
�‰Œð /Ø�v”ð 	/ð 	/ˆAØÕ(¨¨AÑ.Ô.Ñ.ˆCˆCØ
ð ØˆØˆØð 	ð 	ˆAØ�Œt˜5Ð Ð Ø—’˜Q˜qœTÑ"Ô"Ð"Ø—’˜A‘”�øØˆØ€Jr   c                 ó°
  — g g dgdœ}dg}|fd„}dg}|fd„}dg}|fd„}dg}|fd„}	t          | ¦  «        D �]â\  }
}}|
                     ¦   «         }g g }}|D ]B}t          ||         ¦  «        r|                     |¦  «         Œ-|                     |¦  «         ŒC|r@t	          d|
›d	d
                     |¦  «        ›dd
                     |¦  «        ›d�¦  «         n)t	          d|
›d	d
                     |¦  «        ›d�¦  «          |d|
z  ¦  «         t          | ¦  «        D ]} |d|› �¦  «         Œ |d¦  «         |D ] } |t          j        ||¦  «        ¦  «         Œ!|
dk    r" |dd
                     |¦  «        z  ¦  «         n$ |d|
›dd
                     |¦  «        ›�¦  «          |dd
                     |¦  «        z  ¦  «          |d¦  «          |d|
z  ¦  «         g }|D ]Þ}t          j
        ||         ¦  «        }t          j        ||         ¦  «        }t          j        |         }t          j        |||         ¦  «        }|d         r|                     d|d         z  ¦  «         n|                     d¦  «         |d                              ¦   «         }|sd} |d|›d|d         ›d|›d|›d|›d �¦  «         Œß |d!¦  «         t          |¦  «        }d
                     d"„ |D ¦   «         ¦  «        } |d#|
›d$|›d%�¦  «          |d&¦  «         |D ]} |d'|
›d(|›d)�¦  «         Œ |d*¦  «         d+|v rd,}nd-} |d.|›d/|›d0|
                     ¦   «         ›d1d
                     d2gt#          |¦  «        z  ¦  «        ›d3�	¦  «          |d4|
z  ¦  «          |d5|›d/|›d0|
                     ¦   «         ›d6|
›d7�	¦  «          |d8¦  «          |d9|
›d:|
›d7�¦  «          |d;¦  «          |d<|
z  ¦  «          |d=¦  «         |
                     d+d>¦  «        } |	d?|z  ¦  «          |	d@¦  «         |D ]„} |	dAt          j        |||         ¦  «        z  ¦  «         t)          ||         ¦  «        rF||         dB         }t+          |t,          ¦  «        rd                     |¦  «        } |	dC|z  ¦  «         Œ… |	dD¦  «         |dE                              dF|
›dd
                     t/          dG„ ||¦  «        ¦  «        ›dH�¦  «         �Œä||dI<   ||dJ<   |dK         |dL<   t#          |dE         ¦  «        dMk    rd|dE<   ||dK         fS )NNz"COMMON blocks:\n")ÚcommonhooksÚinitcommonhooksÚdocsÚ c                 ó&   — |d         ›d| ›�|d<   d S )Nr   z
      r   ©ÚlineÚss     r   Úfaddzbuildhooks.<locals>.fadd/   s   € Ø!" 1¤   t tÐ,ˆˆ!‰ˆˆr   c                 ó&   — |d         ›d| ›�|d<   d S ©Nr   ú
r   r,   s     r   Úcaddzbuildhooks.<locals>.cadd3   ó   € Ø˜Qœ4˜4˜4  Ð&ˆˆ!‰ˆˆr   c                 ó&   — |d         ›d| ›�|d<   d S r1   r   r,   s     r   Úiaddzbuildhooks.<locals>.iadd7   r4   r   c                 ó&   — |d         ›d| ›�|d<   d S r1   r   r,   s     r   Údaddzbuildhooks.<locals>.dadd;   r4   r   z)		Constructing COMMON block support for "z	"...
		  ú,z
		  Hidden: r2   z subroutine f2pyinit%s(setupfunc)zuse zexternal setupfuncÚ_BLNK_z	common %szcommon /z/ zcall setupfunc(%s)zend
z'static FortranDataDef f2py_%s_def[] = {Údimsz(%s)z-1z	{"z",Úrankz,{{z}},z, z},z
	{NULL}
};c                 ó   — g | ]}d |z   ‘ŒS )zchar *r   )r   r.   s     r   ú
<listcomp>zbuildhooks.<locals>.<listcomp>i   s   € Ð>Ð>Ð>° ¨1¡Ð>Ð>Ð>r   zstatic void f2py_setup_ú(z) {z	int i_f2py=0;z	f2py_z_def[i_f2py++].data = ú;Ú}Ú_Ú	F_FUNC_USÚF_FUNCzextern void z	(f2pyinitz	,F2PYINITz
)(void(*)(zchar*z));z static void f2py_init_%s(void) {ú	z)(f2py_setup_z);z}
z 	tmp = PyFortranObject_New(f2py_z_def,f2py_init_z	if (tmp == NULL) return NULL;z=	if (F2PyDict_SetItemString(d, "%s", tmp) == -1) return NULL;z	Py_DECREF(tmp);z\_z&\subsection{Common block \texttt{%s}}
z\begin{description}z\item[]{{}\verb@%s@{}}Únotez--- %sz\end{description}r)   z"	/c                 ó   — | |z   S )Nr   )r   Úds     r   ú<lambda>zbuildhooks.<locals>.<lambda>Œ   s
   € ÀÀAÁ€ r   z\n"r'   r(   r   Úlatexdocr   )r   Úlowerr   r   r   Újoinr	   r   Úvar2fixfortranr
   ÚgetctypeÚ
get_elsizeÚ
c2capi_mapÚ
getarrdimsÚstripr   ÚupperÚlenÚreplaceÚgetarrdocsignr   Ú
isinstanceÚlistÚmap)Úmr   Úfwrapr/   Úchooksr3   Úihooksr6   Údocr8   ÚnameÚvnamesr   Ú
lower_nameÚhnamesÚinamesÚnÚusenameÚidimsÚctÚelsizeÚatÚdmÚdmsÚinames1Úinames1_tpsrD   ÚtnamerF   s                                r   Ú
buildhooksro   *   s+  € Ø°Ø)Ð*ð,ð ,€CàˆD€Eàð -ð -ð -ð -àˆT€Fàð 'ð 'ð 'ð 'àˆT€Fàð 'ð 'ð 'ð 'àˆ$€Càð 'ð 'ð 'ð 'å 0°Ñ 3Ô 3ð OYñ OYÑˆˆv�tØ—Z’Z‘\”\ˆ
Ø˜R�ˆØð 	!ð 	!ˆAÝ˜T !œWÑ%Ô%ð !Ø—’˜aÑ Ô Ð Ð à—’˜aÑ Ô Ð Ð Øð 	)ÝˆGØ���c—h’h˜vÑ&Ô&Ð&Ð&¨¯ª°Ñ(8Ô(8Ð(8Ð(8ð:ñ ;ô ;ð ;ð ;õ ˆGØ���c—h’h˜vÑ&Ô&Ð&Ð&ð(ñ )ô )ð )àˆÐ/°$Ñ6Ñ7Ô7Ð7Ý# A‘”ð 	#ð 	#ˆGØˆDÐ!˜Ð!Ð!Ñ"Ô"Ð"Ð"ØˆÐ!Ñ"Ô"Ð"Øð 	4ð 	4ˆAØˆD•Ô)¨$°Ñ2Ô2Ñ3Ô3Ð3Ð3Ø�8ÒÐØˆD� §¢¨Ñ 0Ô 0Ñ1Ñ2Ô2Ð2Ð2àˆDˆD T T T¨3¯8ª8°FÑ+;Ô+;Ð+;Ð<Ñ=Ô=Ð=ØˆÐ! S§X¢X¨fÑ%5Ô%5Ñ6Ñ7Ô7Ð7ØˆˆW‰ŒˆØˆÐ6¸$Ñ?Ñ@Ô@Ð@ØˆØð 	5ð 	5ˆAÝÔ# D¨¤GÑ,Ô,ˆBÝÔ)¨$¨q¬'Ñ2Ô2ˆFÝÔ% bÔ)ˆBÝÔ% a¨¨a¬Ñ1Ô1ˆBØ�&Œzð !Ø—’˜V r¨&¤zÑ2Ñ3Ô3Ð3Ð3à—’˜RÑ Ô Ð Ø�V”*×"Ò"Ñ$Ô$ˆCØð Ø�ØˆDˆDØ�A�A�r˜&”z�z�z 3 3 3¨¨¨¨F¨F¨Fð4ñ 5ô 5ð 5ð 5àˆˆ^ÑÔÐÝ˜FÑ#Ô#ˆØ—h’hÐ>Ð>°gÐ>Ñ>Ô>Ñ?Ô?ˆØˆˆ°$°$°$¸¸¸ÐDÑEÔEÐEØˆÐÑÔÐØð 	Cð 	CˆAØˆDˆD¸¸¸¸q¸q¸qÐAÑBÔBÐBÐBØˆˆS‰	Œ	ˆ	Ø�*ÐÐØ ˆFˆFàˆFØˆˆØ��˜
˜
˜
 D§J¢J¡L¤L L LØ—’˜'˜¥S¨¡\¤\Ñ1Ñ2Ô2Ð2Ð2ð4ñ 	5ô 	5ð 	5ð 	ˆÐ/°$Ñ6Ñ7Ô7Ð7ØˆˆØ��˜
˜
˜
 D§J¢J¡L¤L L L°$°$°$ð8ñ 	9ô 	9ð 	9àˆˆU‰ŒˆØˆˆÈÈÈÈtÈtÈtÐTÑUÔUÐUØˆÐ.Ñ/Ô/Ð/ØˆÐOØññ 	ô 	ð 	àˆÐ Ñ!Ô!Ð!Ø—’˜S %Ñ(Ô(ˆØˆÐ8¸EÑBÑCÔCÐCØˆÐ#Ñ$Ô$Ð$Øð 	(ð 	(ˆAØˆDÐ+ÝÔ)¨!¨T°!¬WÑ5Ô5ñ7ñ 8ô 8ð 8å�t˜A”wÑÔð (Ø˜A”w˜v”�Ý˜d¥DÑ)Ô)ð +ØŸ9š9 T™?œ?�DØ��X Ñ&Ñ'Ô'Ð'øØˆÐ!Ñ"Ô"Ð"ØˆFŒ×ÒÐØ $   c§h¢h­sÐ3EÐ3EÀvÈuÑ/UÔ/UÑ&VÔ&VÐ&VÐ&VÐWñ	Yô 	Yð 	Yñ 	Yà€CˆÑØ#€CÐÑØ˜!”f€Cˆ
�OÝ
ˆ3ˆvŒ;ÑÔ˜1ÒÐØˆˆF‰Ø��a”ˆ=Ðr   N)r   )Ú__doc__r*   r   ÚversionÚf2py_versionÚauxfuncsr   r   r   r   r   r	   r
   r   Úcrackfortranr   r   ro   r   r   r   ú<module>ru      så   ðð	ð 	ð Ð Ð Ð Ð Ð ØÔ"€ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø #Ð #Ð #Ð #Ð #Ð #ðð ð ð ð(hð hð hð hð hr   