Ë
    ›2ÚiBT  ã                   ó@  — d dl Z d dlZd dlZd dlZd dlZd dlmZ d dlmZ d dl	Z	ddl
mZ d dlmZ  edd«      ZdBd	„Z e	j"                  d
¬«      d„ «       Z e	j"                  d
¬«      d„ «       Z e	j"                  d
¬«      d„ «       Z e	j"                  d
¬«      d„ «       Z e	j"                  d
¬«      d„ «       Zd„ Zd„ Zd„ Zd„ Ze	j6                  j8                  d„ «       Zd„ Zd„ Zd„ Z d„ Z!d„ Z"d„ Z#d„ Z$d„ Z%d„ Z&d„ Z'd „ Z(d!„ Z)d"„ Z*e	j6                  j9                  d#¬$«      d%„ «       Z+d&„ Z,d'„ Z-d(„ Z.d)„ Z/d*„ Z0d+„ Z1d,„ Z2d-„ Z3d.„ Z4e	j6                  j9                  d#¬$«      d/„ «       Z5d0„ Z6d1„ Z7d2„ Z8d3„ Z9d4„ Z:d5„ Z;d6„ Z<d7„ Z=d8„ Z>d9„ Z?d:„ Z@d;„ ZAd<„ ZBd=„ ZCd>„ ZDd?„ ZEd@„ ZFdA„ ZGy)Cé    N)ÚPath)Ú
namedtupleé   )Úutil)ÚmainÚPPathsz(finp, f90inp, pyf, wrap77, wrap90, cmodfc                 ó   — t        | «      }t        |j                  d«      |j                  d«      |j                  d«      |j                  |› d�«      |j                  |› d�«      |j                  |› d�«      ¬«      S )ax  Takes in a temporary file for testing and returns the expected output and input paths

    Here expected output is essentially one of any of the possible generated
    files.

    ..note::

         Since this does not actually run f2py, none of these are guaranteed to
         exist, and module names are typically incorrect

    Parameters
    ----------
    fname_inp : str
                The input filename
    mname : str, optional
                The name of the module, untitled by default

    Returns
    -------
    genp : NamedTuple PPaths
            The possible paths which are generated, not all of which exist
    z.fz.f90ú.pyfz-f2pywrappers.fz-f2pywrappers2.f90úmodule.c)ÚfinpÚf90inpÚpyfÚwrap77Úwrap90Úcmodf)r   r   Úwith_suffixÚ	with_name)Ú	fname_inpÚmnameÚbpaths      úS/var/www/html/acx/venv/lib/python3.12/site-packages/numpy/f2py/tests/test_f2py2e.pyÚget_io_pathsr      s~   € ô. �‹O€EÜØ×Ñ˜tÓ$Ø× Ñ  Ó(Ø×Ñ˜fÓ%Ø�‰ % ¨Ð8Ó9Ø�‰ % Ð(:Ð;Ó<Ø�o‰o   xÐ0Ó1ôð ó    Úsession)Úscopec                 óž   — t        j                  dddd«      j                  «       }| j                  «       dz  }|j	                  |d¬«       |S )ú'Generates a single f90 file for testingÚtestsÚsrcÚclizhiworld.f90z	hello.f90Úascii©Úencoding©r   ÚgetpathÚ	read_textÚgetbasetempÚ
write_text©Útmpdir_factoryÚfdatÚfns      r   Úhello_world_f90r-   8   sI   € ô �<‰<˜ ¨¨}Ó=×GÑGÓI€DØ	×	#Ñ	#Ó	%¨Ñ	3€BØ‡M�M�$ €MÔ)Ø€Ir   c                 óž   — t        j                  dddd«      j                  «       }| j                  «       dz  }|j	                  |d¬«       |S )z(F90 file for testing warnings in gh23598r   r   Úcrackfortranzgh23598Warn.f90r!   r"   r$   r)   s      r   Úgh23598_warnr0   A   sK   € ô �<‰<˜ ¨Ð8IÓJ×TÑTÓV€DØ	×	#Ñ	#Ó	%Ð(9Ñ	9€BØ‡M�M�$ €MÔ)Ø€Ir   c                 óž   — t        j                  dddd«      j                  «       }| j                  «       dz  }|j	                  |d¬«       |S )ú'Generates a single f77 file for testingr   r   r    zhi77.fzhello.fr!   r"   r$   r)   s      r   Úhello_world_f77r3   J   sI   € ô �<‰<˜ ¨¨xÓ8×BÑBÓD€DØ	×	#Ñ	#Ó	%¨	Ñ	1€BØ‡M�M�$ €MÔ)Ø€Ir   c                 óž   — t        j                  dddd«      j                  «       }| j                  «       dz  }|j	                  |d¬«       |S )r2   r   r   Úreturn_realzfoo77.fzfoo.fr!   r"   r$   r)   s      r   Úretreal_f77r6   S   sI   € ô �<‰<˜ ¨°yÓA×KÑKÓM€DØ	×	#Ñ	#Ó	%¨Ñ	/€BØ‡M�M�$ €MÔ)Ø€Ir   c                 ó6  — t        j                  dddd«      j                  «       }t        j                  dddd«      j                  «       }| j                  «       dz  }| j                  «       dz  }|j	                  |d¬	«       |j	                  |d¬	«       |S )
r   r   r   Úf2cmapzisoFortranEnvMap.f90z.f2py_f2cmapz
f2cmap.f90Úmapfiler!   r"   r$   )r*   r+   r8   r,   Úfmaps        r   Ú
f2cmap_f90r;   [   sŠ   € ô �<‰<˜ ¨Ð2HÓI×SÑSÓU€DÜ�\‰\˜' 5¨(°NÓC×MÑMÓO€FØ	×	#Ñ	#Ó	%¨Ñ	4€BØ×%Ñ%Ó'¨)Ñ3€DØ‡M�M�$ €MÔ)Ø‡O�O�F W€OÔ-Ø€Ir   c                 óF  — t        |d¬«      }|j                  }|j                  t        dd|› d�j	                  «       «       t        j                  |j                  «      5  t        «        |j                  j                  «       }d|vsJ ‚	 d d d «       y # 1 sw Y   y xY w)NÚtest©r   Úargvúf2py z -m testzintproductf2pywrap, intpr)r   r   ÚsetattrÚsysÚsplitr   Ú	switchdirÚparentÚf2pyclir   r&   )Úcapfdr0   ÚmonkeypatchÚfoutlÚipathÚwrappers         r   Útest_gh23598_warnrL   g   s‹   € Ü˜¨VÔ4€EØ�L‰L€EØ×ÑÜˆVØ
�ˆw�hÐ×%Ñ%Ó'ô)ô 
�‰˜Ÿ™Ó	%ñ :ÜŒ	Ø—,‘,×(Ñ(Ó*ˆØ*°'Ñ9Ð9Ñ9÷:÷ :ñ :ús   Á"+BÂB c                 óˆ  — t        |«      }t        |«      j                  dz   }|j                  t        dd|› d|› �j	                  «       «       t        j                  |j                  «      5  t        «        | j                  «       \  }}d|v sJ ‚t        |› «      j                  «       sJ ‚	 ddd«       y# 1 sw Y   yxY w)zIEnsures that a signature file is generated via the CLI
    CLI :: -h
    r
   r?   zf2py -h ú úSaving signatures to fileN)r   ÚstemrA   rB   rC   r   rD   rE   rF   Ú
readouterrÚexists)rG   r-   rH   rJ   ÚopathÚoutÚ_s          r   Útest_gen_pyfrV   t   s®   € ô �Ó!€EÜ�Ó!×&Ñ&¨Ñ/€EØ×Ñœ˜V x°¨w°a¸°wÐ%?×%EÑ%EÓ%GÔHä	�‰˜Ÿ™Ó	%ñ )ÜŒ	Ø×!Ñ!Ó#‰ˆˆQØ*¨cÑ1Ð1Ð1Ü�u�gÓ×&Ñ&Ô(Ð(Ñ(÷	)÷ )ñ )ús   Á.A B8Â8Cc                 ó&  — t        |«      }|j                  t        dd|› �j                  «       «       t	        j
                  |j                  «      5  t        «        | j                  «       \  }}d|v sJ ‚d|v sJ ‚	 ddd«       y# 1 sw Y   yxY w)zHEnsures that a signature file can be dumped to stdout
    CLI :: -h
    r?   zf2py -h stdout rO   zfunction hi() ! in N©	r   rA   rB   rC   r   rD   rE   rF   rQ   ©rG   r-   rH   rJ   rT   rU   s         r   Útest_gen_pyf_stdoutrZ   ƒ   sˆ   € ô �Ó!€EØ×Ñœ˜V °u°gÐ%>×%DÑ%DÓ%FÔGÜ	�‰˜Ÿ™Ó	%ñ ,ÜŒ	Ø×!Ñ!Ó#‰ˆˆQØ*¨cÑ1Ð1Ð1Ø$¨Ñ+Ð+Ñ+÷	,÷ ,ñ ,ús   Á*BÂBc                 ó®  — t        |«      }|j                  t        dd|› �j                  «       «       t	        j
                  |j                  «      5  t        d«      j                  dd¬«       t        j                  t        «      5  t        «        | j                  «       \  }}d|v sJ ‚	 ddd«       ddd«       y# 1 sw Y   ŒxY w# 1 sw Y   yxY w)	zjEnsures that the CLI refuses to overwrite signature files
    CLI :: -h without --overwrite-signature
    r?   úf2py -h faker.pyf ú	faker.pyfú	Fake newsr!   r"   z&Use --overwrite-signature to overwriteN)r   rA   rB   rC   r   rD   rE   r(   ÚpytestÚraisesÚ
SystemExitrF   rQ   )rG   r-   rH   rJ   rU   Úerrs         r   Útest_gen_pyf_no_overwriterc   �   sÂ   € ô �Ó!€EØ×Ñœ˜VÐ'9¸%¸Ð%A×%GÑ%GÓ%IÔJä	�‰˜Ÿ™Ó	%ñ CÜˆ[Ó×$Ñ$ [¸7Ð$ÔCÜ�]‰]œ:Ó&ñ 	CÜŒIØ×%Ñ%Ó'‰FˆAˆsØ;¸sÑBÐBÑB÷	C÷Cð C÷	Cð 	Cú÷Cð Cús$   Á6CÂ	$B?Â.CÂ?C	ÃCÃCc                 ó´  — t        |d¬«      }|j                  }d}d}|j                  t        dd|› d|› �j	                  «       «       t        j                  |j                  «      5  t        «        | j                  «       \  }}|j	                  «       D ]  }	d|	› d	�|v rŒJ ‚ |j	                  «       D ]  }
d
|
› d�|v rŒJ ‚ 	 ddd«       y# 1 sw Y   yxY w)z9Tests that functions can be skipped
    CLI :: skip:
    r=   r>   út0 t4 t8 sd s8 s4útd s0r?   r@   z -m test skip: z=buildmodule: Could not found the body of interfaced routine "ú". Skipping.úConstructing wrapper function "ú"N©
r   r   rA   rB   rC   r   rD   rE   rF   rQ   )rG   r6   rH   rI   rJ   ÚtoskipÚ	remainingrT   rb   ÚskeyÚrkeys              r   Útest_f2py_skipro   Ÿ   s÷   € ô
 ˜¨FÔ3€EØ�J‰J€EØ €FØ€IØ×ÑÜˆVØ
�ˆw�o f XÐ.×4Ñ4Ó6ô8ô 
�‰˜Ÿ™Ó	%ñ DÜŒ	Ø×#Ñ#Ó%‰ˆˆSØ—L‘L“Nò 	ˆDàOÐPTÈvÐUaÐbØòððð	ð —O‘OÓ%ò 	DˆDØ4°T°F¸!Ð<ÀÒCÐCÐCñ	D÷D÷ Dñ Dúó   Á(9CÂ"CÃCÃCc                 ó´  — t        |d¬«      }|j                  }d}d}|j                  t        dd|› d|› �j	                  «       «       t        j                  |j                  «      5  t        «        | j                  «       \  }}|j	                  «       D ]  }	d|	› d	�|v rŒJ ‚ |j	                  «       D ]  }
d
|
› d�|v rŒJ ‚ 	 ddd«       y# 1 sw Y   yxY w)z>Test that functions can be kept by only:
    CLI :: only:
    r=   r>   re   rf   r?   r@   z -m test only: ú<buildmodule: Could not find the body of interfaced routine "rg   rh   ri   Nrj   )rG   r6   rH   rI   rJ   rk   ÚtokeeprT   rb   rm   rn   s              r   Útest_f2py_onlyrt   ·   sõ   € ô ˜¨FÔ3€EØ�J‰J€EØ €FØ€FØ×ÑÜˆVØ
�ˆw�o f XÐ.×4Ñ4Ó6ô8ô 
�‰˜Ÿ™Ó	%ñ DÜŒ	Ø×#Ñ#Ó%‰ˆˆSØ—L‘L“Nò 	ˆDàNÈtÈfÐT`ÐaØòððð	ð —L‘L“Nò 	DˆDØ4°T°F¸!Ð<ÀÒCÐCÐCñ	D÷D÷ Dñ Dúrp   c                 óÚ  — t        |d¬«      }|j                  }d}t        |«      }d}d}	|j                  t        dd|› d|	› d	|› d
|› �j                  «       «       t        j                  |j                  «      5  t        «        | j                  «       \  }
}|j                  «       D ]  }d|› d�|v rŒJ ‚ |j                  «       D ]  }d|› d�|
v rŒJ ‚ 	 ddd«       y# 1 sw Y   yxY w)zfTests that it is possible to return to file processing mode
    CLI :: :
    BUG: numpy-gh #20520
    r=   r>   re   ztd s0 hiÚblahr?   r@   ú -m z only: z : rr   rg   rh   ri   N)r   r   r   rA   rB   rC   r   rD   rE   rF   rQ   )rG   r-   r6   rH   rI   rJ   rk   Úipath2rs   r   rT   rb   rm   rn   s                 r   Útest_file_processing_switchry   Î   s  € ô ˜¨FÔ3€EØ�J‰J€EØ €FÜ�/Ó"€FØ€FØ€EØ×ÑÜØØ
�ˆw�d˜5˜' ¨¨°°F°8Ð<×BÑBó 	
ôô 
�‰˜Ÿ™Ó	%ñ DÜŒ	Ø×#Ñ#Ó%‰ˆˆSØ—L‘L“Nò 	ˆDàNÈtÈfÐT`ÐaØòððð	ð —L‘L“Nò 	DˆDØ4°T°F¸!Ð<ÀÒCÐCÐCñ	D÷D÷ Dñ Dús   Á;9C!Â5C!ÃC!Ã!C*c                 ó�  — d}t        ||¬«      }|j                  }|j                  t        dd|› d|› �j	                  «       «       t        j                  |j                  «      5  t        «        ddd«       t        j                  |j                  «      sJ ‚t        j                  |j                  «      sJ ‚y# 1 sw Y   ŒLxY w)zHChecks the generation of files based on a module name
    CLI :: -m
    Úhir>   r?   r@   rw   N)r   r   rA   rB   rC   r   rD   rE   rF   r   rR   r   r   )rG   r-   rH   ÚMNAMErI   rJ   s         r   Útest_mod_gen_f77r}   ì   sž   € ð €EÜ˜°Ô6€EØ�L‰L€EØ×Ñœ˜V u¨U¨G°4¸°wÐ%?×%EÑ%EÓ%GÔHÜ	�‰˜Ÿ™Ó	%ñ ÜŒ	÷ô �;‰;�u—{‘{Ô#Ð#Ð#ä�;‰;�u—|‘|Ô$Ð$Ñ$÷ð ús   Á&B<Â<Cc                 ó  — t        |d¬«      }|j                  }t        j                  d«      }t        j                  d«      }|j	                  t
        dd|› d�j                  «       «       t        j                  |j                  «      5  t        «        | j                  «       \  }}|j                  |«      €J ‚|j                  |«      �J ‚	 ddd«       |j	                  t
        dd|› d	�j                  «       «       t        j                  |j                  «      5  t        «        | j                  «       \  }}|j                  |«      �J ‚|j                  |«      €J ‚	 ddd«       y# 1 sw Y   ŒŸxY w# 1 sw Y   yxY w)
zHLowers cases by flag or when -h is present

    CLI :: --[no-]lower
    r=   r>   zHI\(\)zhi\(\)r?   r@   z -m test --lowerNz -m test --no-lower)r   r   ÚreÚcompilerA   rB   rC   r   rD   rE   rF   rQ   Úsearch©	rG   r3   rH   rI   rJ   ÚcapshiÚcapslorT   rU   s	            r   Útest_lower_cmodr…   ý   sV  € ô
 ˜°Ô7€EØ�J‰J€EÜ�Z‰Z˜	Ó"€FÜ�Z‰Z˜	Ó"€Fà×Ñœ˜V u¨U¨GÐ3CÐ%D×%JÑ%JÓ%LÔMÜ	�‰˜Ÿ™Ó	%ñ *ÜŒ	Ø×!Ñ!Ó#‰ˆˆQØ�}‰}˜SÓ!Ð-Ð-Ð-Ø�}‰}˜SÓ!Ð)Ð)Ñ)÷	*ð ×Ñœ˜VØ ˜wÐ&9Ð:×@Ñ@ÓBôDä	�‰˜Ÿ™Ó	%ñ .ÜŒ	Ø×!Ñ!Ó#‰ˆˆQØ�}‰}˜SÓ!Ð)Ð)Ð)Ø�}‰}˜SÓ!Ð-Ð-Ñ-÷	.ð .÷*ð *ú÷.ð .ús   ÂAE/Ä!AE;Å/E8Å;Fc           	      óB  — t        |d¬«      }|j                  }t        j                  d«      }t        j                  d«      }|j	                  t
        dd|› d|j                  › d�j                  «       «       t        j                  |j                  «      5  t        «        | j                  «       \  }}|j                  |«      €J ‚|j                  |«      �J ‚	 d	d	d	«       |j	                  t
        dd|› d|j                  › d
�j                  «       «       t        j                  |j                  «      5  t        «        | j                  «       \  }}|j                  |«      �J ‚|j                  |«      €J ‚	 d	d	d	«       y	# 1 sw Y   Œ¬xY w# 1 sw Y   y	xY w)z^Lowers cases in signature files by flag or when -h is present

    CLI :: --[no-]lower -h
    r=   r>   z	Block: HIz	Block: hir?   r@   z -h z -m test --overwrite-signatureNz) -m test --overwrite-signature --no-lower)r   r   r   r€   rA   rB   r   rC   r   rD   rE   rF   rQ   r�   r‚   s	            r   Útest_lower_sigr‡     st  € ô
 ˜°Ô7€EØ�J‰J€Eä�Z‰Z˜Ó%€FÜ�Z‰Z˜Ó%€Fð ×ÑÜØØ
�ˆw�d˜5Ÿ9™9˜+Ð%CÐD×JÑJÓLôô 
�‰˜Ÿ™Ó	%ñ *ÜŒ	Ø×!Ñ!Ó#‰ˆˆQØ�}‰}˜SÓ!Ð-Ð-Ð-Ø�}‰}˜SÓ!Ð)Ð)Ñ)÷	*ð ×ÑÜØØ
�ˆw�d˜5Ÿ9™9˜+Ð%NÐOß	‰‹ô	ô 
�‰˜Ÿ™Ó	%ñ .ÜŒ	Ø×!Ñ!Ó#‰ˆˆQØ�}‰}˜SÓ!Ð)Ð)Ð)Ø�}‰}˜SÓ!Ð-Ð-Ñ-÷	.ð .÷*ð *ú÷.ð .ús   ÂAF	Ä;AFÆ	FÆFc           
      ó6  — t        |«      }d}d}|j                  t        dd|› d|› d|› �j                  «       «       t	        j
                  |j                  «      5  t        «        | j                  «       \  }}d|› d�|v sJ ‚	 d	d	d	«       y	# 1 sw Y   y	xY w)
zNEnsures that the build directory can be specified

    CLI :: --build-dir
    rv   Útttmpr?   úf2py -m rN   z --build-dir zWrote C/API module "ri   NrX   )rG   r-   rH   rJ   r   ÚodirrT   rU   s           r   Útest_build_dirrŒ   >  sŸ   € ô
 �Ó!€EØ€EØ€DØ×Ñœ˜VØ" 5 '¨¨5¨'°¸t¸fÐE×KÑKÓMôOô 
�‰˜Ÿ™Ó	%ñ 8ÜŒ	Ø×!Ñ!Ó#‰ˆˆQØ& u g¨RÐ0°CÑ7Ð7Ñ7÷8÷ 8ñ 8ús   Á(BÂBc                 óT  — t        |«      }|j                  t        dd|› d�j                  «       «       t	        j
                  |j                  «      5  t        d«      j                  dd¬«       t        «        | j                  «       \  }}d|v sJ ‚	 d	d	d	«       y	# 1 sw Y   y	xY w)
zXEnsures that the build directory can be specified

    CLI :: --overwrite-signature
    r?   r\   z --overwrite-signaturer]   r^   r!   r"   rO   N)
r   rA   rB   rC   r   rD   rE   r(   rF   rQ   rY   s         r   Útest_overwriterŽ   O  sœ   € ô
 �Ó!€EØ×ÑÜˆVØ
˜U˜GÐ#9Ð:×@Ñ@ÓBôDô 
�‰˜Ÿ™Ó	%ñ 2Üˆ[Ó×$Ñ$ [¸7Ð$ÔCÜŒ	Ø×!Ñ!Ó#‰ˆˆQØ*¨cÑ1Ð1Ñ1÷	2÷ 2ñ 2ús   ÁA BÂB'c           	      ó°  — t        |«      }d}|j                  t        dd|› d|› d�j                  «       «       t	        j
                  |j                  «      5  t        «        | j                  «       \  }}d|v sJ ‚t        |› d�«      j                  «       5 }d|j                  «       v sJ ‚	 d	d	d	«       d	d	d	«       y	# 1 sw Y   ŒxY w# 1 sw Y   y	xY w)
zJEnsures that TeX documentation is written out

    CLI :: --latex-doc
    rv   r?   rŠ   rN   z --latex-docúDocumentation is saved to fileú
module.texú\documentclassN©r   rA   rB   rC   r   rD   rE   rF   rQ   ÚopenÚread©rG   r-   rH   rJ   r   rT   rU   Úotexs           r   Útest_latexdocr˜   `  sÕ   € ô
 �Ó!€EØ€EØ×Ñœ˜VØ" 5 '¨¨5¨'°Ð>×DÑDÓFôHô 
�‰˜Ÿ™Ó	%ñ 4ÜŒ	Ø×!Ñ!Ó#‰ˆˆQØ/°3Ñ6Ð6Ð6Ü�U�G˜:Ð&Ó'×,Ñ,Ó.ð 	4°$Ø$¨¯	©	«Ñ3Ð3Ñ3÷	4÷	4ð 4÷	4ð 	4ú÷	4ð 4ús%   ÁA CÂC Â/CÃ C		ÃCÃCc           	      ó&  — t        |«      }d}|j                  t        dd|› d|› d�j                  «       «       t	        j
                  |j                  «      5  t        «        | j                  «       \  }}d|vsJ ‚	 ddd«       y# 1 sw Y   yxY w)zMEnsures that TeX documentation is written out

    CLI :: --no-latex-doc
    rv   r?   rŠ   rN   z --no-latex-docr�   NrX   ©rG   r-   rH   rJ   r   rT   rU   s          r   Útest_nolatexdocr›   r  s�   € ô
 �Ó!€EØ€EØ×Ñœ˜VØ" 5 '¨¨5¨'°ÐA×GÑGÓIôKô 
�‰˜Ÿ™Ó	%ñ ;ÜŒ	Ø×!Ñ!Ó#‰ˆˆQØ/°sÑ:Ð:Ñ:÷;÷ ;ñ ;úó   Á$BÂBc           	      ó²  — t        |«      }d}|j                  t        dd|› d|› d�j                  «       «       t	        j
                  |j                  «      5  t        «        | j                  «       \  }}d|v sJ ‚t        d|› d�«      j                  «       5 }d	|j                  «       vsJ ‚	 d
d
d
«       d
d
d
«       y
# 1 sw Y   ŒxY w# 1 sw Y   y
xY w)zžEnsures that truncated documentation is written out

    TODO: Test to ensure this has no effect without --latex-doc
    CLI :: --latex-doc --short-latex
    rv   r?   rŠ   rN   z --latex-doc --short-latexr�   ú./r‘   r’   Nr“   r–   s           r   Útest_shortlatexrŸ   ‚  sÙ   € ô �Ó!€EØ€EØ×ÑÜØØ
�5�'˜˜5˜'Ð!;Ð<×BÑBÓDôô 
�‰˜Ÿ™Ó	%ñ 8ÜŒ	Ø×!Ñ!Ó#‰ˆˆQØ/°3Ñ6Ð6Ð6Ü�B�u�g˜ZÐ(Ó)×.Ñ.Ó0ð 	8°DØ$¨D¯I©I«KÑ7Ð7Ñ7÷	8÷	8ð 8÷	8ð 	8ú÷	8ð 8úó%   ÁACÂCÂ0CÃC
	ÃCÃCc           	      ó²  — t        |«      }d}|j                  t        dd|› d|› d�j                  «       «       t	        j
                  |j                  «      5  t        «        | j                  «       \  }}d|v sJ ‚t        d|› d�«      j                  «       5 }d	|j                  «       v sJ ‚	 d
d
d
«       d
d
d
«       y
# 1 sw Y   ŒxY w# 1 sw Y   y
xY w)zIEnsures that RsT documentation is written out

    CLI :: --rest-doc
    rv   r?   rŠ   rN   z --rest-docú#ReST Documentation is saved to filerž   zmodule.restz.. -*- rest -*-Nr“   )rG   r-   rH   rJ   r   rT   rU   Úorsts           r   Útest_restdocr¤   ˜  s×   € ô
 �Ó!€EØ€EØ×Ñœ˜VØ" 5 '¨¨5¨'°Ð=×CÑCÓEôGô 
�‰˜Ÿ™Ó	%ñ 5ÜŒ	Ø×!Ñ!Ó#‰ˆˆQØ4¸Ñ;Ð;Ð;Ü�B�u�g˜[Ð)Ó*×/Ñ/Ó1ð 	5°TØ%¨¯©«Ñ4Ð4Ñ4÷	5÷	5ð 5÷	5ð 	5ú÷	5ð 5úr    c           	      ó&  — t        |«      }d}|j                  t        dd|› d|› d�j                  «       «       t	        j
                  |j                  «      5  t        «        | j                  «       \  }}d|vsJ ‚	 ddd«       y# 1 sw Y   yxY w)zLEnsures that TeX documentation is written out

    CLI :: --no-rest-doc
    rv   r?   rŠ   rN   z --no-rest-docr¢   NrX   rš   s          r   Útest_norestexdocr¦   ª  s‘   € ô
 �Ó!€EØ€EØ×Ñœ˜VØ" 5 '¨¨5¨'°Ð@×FÑFÓHôJô 
�‰˜Ÿ™Ó	%ñ @ÜŒ	Ø×!Ñ!Ó#‰ˆˆQØ4¸CÑ?Ð?Ñ?÷@÷ @ñ @úrœ   c           	      ó€  — t        |«      }d}|j                  t        dd|› d|› d�j                  «       «       t	        j
                  |j                  «      5  t        «        t        d|› d�«      j                  «       5 }d|j                  «       v sJ ‚	 d	d	d	«       d	d	d	«       y	# 1 sw Y   ŒxY w# 1 sw Y   y	xY w)
zIEnsures that debugging wrappers are written

    CLI :: --debug-capi
    rv   r?   rŠ   rN   z --debug-capirž   r   z#define DEBUGCFUNCSN©
r   rA   rB   rC   r   rD   rE   rF   r”   r•   )rG   r-   rH   rJ   r   Úocmods         r   Útest_debugcapirª   º  s·   € ô
 �Ó!€EØ€EØ×Ñœ˜VØ" 5 '¨¨5¨'°Ð?×EÑEÓGôIô 
�‰˜Ÿ™Ó	%ñ :ÜŒ	Ü�B�u�g˜XÐ&Ó'×,Ñ,Ó.ð 	:°%Ø)¨U¯Z©Z«\Ñ9Ð9Ñ9÷	:÷:ð :÷	:ð 	:ú÷:ð :ús$   Á(B4ÂB(ÂB4Â(B1	Â-B4Â4B=zConsistently fails on CI.)Úreasonc           	      óÀ  — t        | «      }d}|j                  t        dd|› d|› d�j                  «       «       t	        j
                  |j                  «      5  t        «        t        j                  d«      }t        j                  |dd¬	«      }d
}t        j                  d«      }|j                  |k(  sJ ‚|j                  |k(  sJ ‚	 ddd«       y# 1 sw Y   yxY w)zEEnsures that debugging wrappers work

    CLI :: --debug-capi -c
    rv   r?   rŠ   rN   z -c --debug-capiz#python3 -c "import blah; blah.hi()"TúUTF-8©Úcapture_outputr#   ú Hello World
a   debug-capi:Python C/API function blah.hi()
debug-capi:float hi=:output,hidden,scalar
debug-capi:hi=0
debug-capi:Fortran subroutine `f2pywraphi(&hi)'
debug-capi:hi=0
debug-capi:Building return value.
debug-capi:Python C/API function blah.hi: successful.
debug-capi:Freeing memory.
        N)r   rA   rB   rC   r   rD   rE   rF   ÚshlexÚ
subprocessÚrunÚtextwrapÚdedentÚstdoutÚstderr)r-   rH   rJ   r   Úcmd_runÚroutÚeoutÚeerrs           r   Útest_debugcapi_bldr¼   Ê  sÍ   € ô �Ó!€EØ€EØ×Ñœ˜VØ" 5 '¨¨5¨'Ð1AÐB×HÑHÓJôLô 
�‰˜Ÿ™Ó	%ñ #ÜŒ	Ü—+‘+ÐEÓFˆÜ�~‰~˜g°dÀWÔMˆØˆÜ�‰ð 	 ó 	ˆð �{‰{˜dÒ"Ð"Ð"Ø�{‰{˜dÒ"Ð"Ñ"÷!#÷ #ñ #ús   ÁA1CÃCc           	      ó*  — t        |«      }d}|j                  t        dd|› d|› �j                  «       «       t	        j
                  |j                  «      5  t        «        ddd«       | j                  «       \  }}d|v sJ ‚|j                  t        dd|› d|› d�j                  «       «       t	        j
                  |j                  «      5  t        «        | j                  «       \  }}d|v sJ ‚	 ddd«       y# 1 sw Y   Œ›xY w# 1 sw Y   yxY w)zoEnsures that fortran subroutine wrappers for F77 are included by default

    CLI :: --[no]-wrap-functions
    rv   r?   rŠ   rN   Nú Fortran 77 wrappers are saved toz --wrap-functionsrX   rš   s          r   Útest_wrapfunc_defr¿   è  s  € ô �Ó!€EØ€EØ×Ñœ˜V x°¨w°a¸°wÐ%?×%EÑ%EÓ%GÔHä	�‰˜Ÿ™Ó	%ñ ÜŒ	÷à×ÑÓ�F€CˆØ.°#Ñ5Ð5Ð5ð ×Ñœ˜VØ" 5 '¨¨5¨'Ð1BÐC×IÑIÓKôMô 
�‰˜Ÿ™Ó	%ñ :ÜŒ	Ø×!Ñ!Ó#‰ˆˆQØ2°cÑ9Ð9Ñ9÷:ð :÷ð ú÷:ð :ús   ÁC=Ã$D	Ã=DÄ	Dc           	      ó&  — t        |«      }d}|j                  t        dd|› d|› d�j                  «       «       t	        j
                  |j                  «      5  t        «        | j                  «       \  }}d|vsJ ‚	 ddd«       y# 1 sw Y   yxY w)zeEnsures that fortran subroutine wrappers for F77 can be disabled

    CLI :: --no-wrap-functions
    rv   r?   rŠ   rN   z --no-wrap-functionsr¾   NrX   rš   s          r   Útest_nowrapfuncrÁ     sŽ   € ô
 �Ó!€EØ€EØ×Ñœ˜VØ" 5 '¨¨5¨'Ð1EÐF×LÑLÓNôPô 
�‰˜Ÿ™Ó	%ñ >ÜŒ	Ø×!Ñ!Ó#‰ˆˆQØ2¸#Ñ=Ð=Ñ=÷>÷ >ñ >úrœ   c           	      ó�  — t        |«      }d}|j                  t        dd|› d|› d�j                  «       «       t	        j
                  |j                  «      5  t        «        t        d|› d�«      j                  «       5 }|j                  «       }d|v sJ ‚d	|v sJ ‚	 d
d
d
«       d
d
d
«       y
# 1 sw Y   ŒxY w# 1 sw Y   y
xY w)zcAdd to the include directories

    CLI :: -include
    TODO: Document this in the help string
    rv   r?   rŠ   rN   z' -include<stdbool.h> -include<stdio.h> rž   r   z#include <stdbool.h>z#include <stdio.h>Nr¨   )rG   r-   rH   rJ   r   r©   Úocmrs          r   Útest_inclheaderrÄ     sÊ   € ô �Ó!€EØ€EØ×ÑÜØØ
�5�'˜˜5˜'Ð!HÐIß‰‹ô	ô 
�‰˜Ÿ™Ó	%ñ 0ÜŒ	Ü�B�u�g˜XÐ&Ó'×,Ñ,Ó.ð 	0°%Ø—:‘:“<ˆDØ)¨TÑ1Ð1Ð1Ø'¨4Ñ/Ð/Ñ/÷	0÷0ð 0÷	0ð 	0ú÷0ð 0ús$   Á(B<ÂB0ÂB<Â0B9	Â5B<Â<Cc                   ó   — y)z?Add to the include directories

    CLI :: --include-paths
    N© rÆ   r   r   Útest_inclpathrÇ   (  ó   € ð 	r   c                   ó   — y)z;Add to the include directories

    CLI :: --help-link
    NrÆ   rÆ   r   r   Ú
test_hlinkrÊ   1  rÈ   r   c                 óL  — t        |«      }|j                  t        dd|› d�j                  «       «       t	        j
                  |j                  «      5  t        «        | j                  «       \  }}d|v sJ ‚d|v sJ ‚d|v sJ ‚d|v sJ ‚d|v sJ ‚	 d	d	d	«       y	# 1 sw Y   y	xY w)
zOCheck that Fortran-to-Python KIND specs can be passed

    CLI :: --f2cmap
    r?   úf2py -m blah z --f2cmap mapfilez!Reading f2cmap from 'mapfile' ...z&Mapping "real(kind=real32)" to "float"z'Mapping "real(kind=real64)" to "double"z,Mapping "integer(kind=int64)" to "long_long"z0Successfully applied user defined f2cmap changesNrX   )rG   r;   rH   rJ   rT   rU   s         r   Útest_f2cmaprÍ   :  s¹   € ô
 �Ó€EØ×Ñœ˜V }°U°GÐ;LÐ%M×%SÑ%SÓ%UÔVä	�‰˜Ÿ™Ó	%ñ IÜŒ	Ø×!Ñ!Ó#‰ˆˆQØ2°cÑ9Ð9Ð9Ø;¸sÑBÐBÐBØ<ÀÑCÐCÐCØAÀSÑHÐHÐHØAÀSÑHÐHÑH÷I÷ Iñ Iús   Á<BÂB#c                 ó0  — t        |«      }|j                  t        dd|› d�j                  «       «       t	        j
                  |j                  «      5  t        «        | j                  «       \  }}t        |«      dk(  sJ ‚	 ddd«       y# 1 sw Y   yxY w)z)Reduce verbosity

    CLI :: --quiet
    r?   rÌ   z --quietr   N)
r   rA   rB   rC   r   rD   rE   rF   rQ   ÚlenrY   s         r   Ú
test_quietrÐ   L  s~   € ô
 �Ó!€EØ×Ñœ˜V }°U°G¸8Ð%D×%JÑ%JÓ%LÔMä	�‰˜Ÿ™Ó	%ñ ÜŒ	Ø×!Ñ!Ó#‰ˆˆQÜ�3‹x˜1Š}Ð‰}÷÷ ñ ús   Á.BÂBc                 ó  — t        |«      }|j                  t        dd|› d�j                  «       «       t	        j
                  |j                  «      5  t        «        | j                  «       \  }}d|v sJ ‚	 ddd«       y# 1 sw Y   yxY w)z-Increase verbosity

    CLI :: --verbose
    r?   rÌ   z
 --verboseÚanalyzelineNrX   rY   s         r   Útest_verboserÓ   Z  s|   € ô
 �Ó!€EØ×Ñœ˜V }°U°G¸:Ð%F×%LÑ%LÓ%NÔOä	�‰˜Ÿ™Ó	%ñ $ÜŒ	Ø×!Ñ!Ó#‰ˆˆQØ Ñ#Ð#Ñ#÷$÷ $ñ $ús   Á$BÂBc                 ó,  — |j                  t        ddj                  «       «       t        j                  t
        «      5  t        «        | j                  «       \  }}ddl}|j                  |j                  «       k(  sJ ‚	 ddd«       y# 1 sw Y   yxY w)z"Ensure version

    CLI :: -v
    r?   zf2py -vr   N)rA   rB   rC   r_   r`   ra   rF   rQ   ÚnumpyÚ__version__Ústrip)rG   rH   rT   rU   Únps        r   Útest_versionrÙ   h  sp   € ð
 ×Ñœ˜V Y§_¡_Ó%6Ô7ä	�‰”zÓ	"ñ -ÜŒ	Ø×!Ñ!Ó#‰ˆˆQÛØ�~‰~ §¡£Ò,Ð,Ñ,÷	-÷ -ñ -ús   ¿AB
Â
Bc                 ój  — t        | «      }|j                  t        dd|› d�j                  «       «       t	        j
                  |j                  «      5  t        «        t        j                  d«      }t        j                  |dd¬«      }d}|j                  |k(  sJ ‚	 d	d	d	«       y	# 1 sw Y   y	xY w)
z
    CLI :: -c
    r?   rÌ   z -cz"python -c "import blah; blah.hi()"Tr­   r®   r°   N)r   rA   rB   rC   r   rD   rE   rF   r±   r²   r³   r¶   )r-   rH   rJ   r¸   r¹   rº   s         r   Útest_npdistoprÛ   v  s”   € ô
 �Ó!€EØ×Ñœ˜V }°U°G¸3Ð%?×%EÑ%EÓ%GÔHä	�‰˜Ÿ™Ó	%ñ #ÜŒ	Ü—+‘+ÐDÓEˆÜ�~‰~˜g°dÀWÔMˆØˆØ�{‰{˜dÒ"Ð"Ñ"÷#÷ #ñ #ús   ÁAB)Â)B2c                   ó   — y)z
    CLI :: -c --fcompiler
    NrÆ   rÆ   r   r   Útest_npd_fcompilerrÝ   Š  ó   € ð
 	r   c                   ó   — y)z
    CLI :: -c --compiler
    NrÆ   rÆ   r   r   Útest_npd_compilerrà   ’  rÞ   r   c                   ó   — y)z$
    CLI :: -c --help-fcompiler
    NrÆ   rÆ   r   r   Útest_npd_help_fcompilerrâ   š  rÞ   r   c                   ó   — y)z
    CLI :: -c --f77exec
    NrÆ   rÆ   r   r   Útest_npd_f77execrä   ¢  rÞ   r   c                   ó   — y)z
    CLI :: -c --f90exec
    NrÆ   rÆ   r   r   Útest_npd_f90execræ   ª  rÞ   r   c                   ó   — y)z
    CLI :: -c --f77flags
    NrÆ   rÆ   r   r   Útest_npd_f77flagsrè   ²  rÞ   r   c                   ó   — y)z
    CLI :: -c --f90flags
    NrÆ   rÆ   r   r   Útest_npd_f90flagsrê   º  rÞ   r   c                   ó   — y)z
    CLI :: -c --opt
    NrÆ   rÆ   r   r   Útest_npd_optrì   Â  rÞ   r   c                   ó   — y)z
    CLI :: -c --arch
    NrÆ   rÆ   r   r   Útest_npd_archrî   Ê  rÞ   r   c                   ó   — y)z
    CLI :: -c --noopt
    NrÆ   rÆ   r   r   Útest_npd_nooptrð   Ò  rÞ   r   c                   ó   — y)z
    CLI :: -c --noarch
    NrÆ   rÆ   r   r   Útest_npd_noarchrò   Ú  rÞ   r   c                   ó   — y)z
    CLI :: -c --debug
    NrÆ   rÆ   r   r   Útest_npd_debugrô   â  rÞ   r   c                   ó   — y)z%
    CLI :: -c --link-<resource>
    NrÆ   rÆ   r   r   Útest_npd_link_autorö   ê  rÞ   r   c                   ó   — y)z/
    CLI :: -c -L/path/to/lib/ -l<libname>
    NrÆ   rÆ   r   r   Útest_npd_librø   ò  rÞ   r   c                   ó   — y)z
    CLI :: -D<define>
    NrÆ   rÆ   r   r   Útest_npd_definerú   ú  rÞ   r   c                   ó   — y)z
    CLI :: -U<name>
    NrÆ   rÆ   r   r   Útest_npd_undefinerü     rÞ   r   c                   ó   — y)z$
    CLI :: -I/path/to/include/
    NrÆ   rÆ   r   r   Útest_npd_inclrþ   
  rÞ   r   c                   ó   — y)z8
    CLI :: <filename>.o <filename>.so <filename>.a
    NrÆ   rÆ   r   r   Útest_npd_linkerr     rÞ   r   )Úuntitled)Hr´   r   rB   r²   r±   Úpathlibr   Úcollectionsr   r_   Ú r   Únumpy.f2py.f2py2er   rF   r   r   Úfixturer-   r0   r3   r6   r;   rL   rV   rZ   rc   ÚmarkÚxfailro   rt   ry   r}   r…   r‡   rŒ   rŽ   r˜   r›   rŸ   r¤   r¦   rª   r¼   r¿   rÁ   rÄ   rÇ   rÊ   rÍ   rÐ   rÓ   rÙ   rÛ   rÝ   rà   râ   rä   ræ   rè   rê   rì   rî   rð   rò   rô   rö   rø   rú   rü   rþ   r   rÆ   r   r   ú<module>r	     s  ðß +× +Ó +Ý Ý "ã å Ý -ñ 
�HÐHÓ	I€óðN €‡��iÔ ñó !ðð €‡��iÔ ñó !ðð €‡��iÔ ñó !ðð €‡��iÔ ñó !ðð €‡��iÔ ñó !ðò
:ò)ò
,òCð ‡�×ÑñDó ðDò.Dò.Dò<%ò".ò4$.òN8ò"2ò"4ò$;ò 8ò,5ò$@ò :ð  ‡�×ÑÐ5ÐÓ6ñ#ó 7ð#ò::ò2>ò 0ò.	ò	òIò$ò$ò-ð ‡�×ÑÐ5ÐÓ6ñ#ó 7ð#ò&	ò	ò	ò	ò	ò	ò	ò	ò	ò	ò	ò	ò	ò	ò	ò	ò	ó	r   