Ë
    ¡ehÜl  ã                   ó¢  — 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
Z
ddlmZ d dlmZ d dlmZ d„ Z ed	d
«      ZdQd„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 e
j*                  d¬«      d„ «       Zd„ Zd„ Zd„ Zd„ Zd„ Z d„ Z!e
jD                  jG                  ejH                  dk  d¬«      d„ «       Z%e
jD                  jG                   e	jL                  «       dk7  xs ejH                  dk  d¬«      d „ «       Z'e
jD                  jP                  d!„ «       Z)d"„ Z*d#„ Z+d$„ Z,d%„ Z-d&„ Z.d'„ Z/d(„ Z0d)„ Z1d*„ Z2d+„ Z3d,„ Z4d-„ Z5d.„ Z6d/„ Z7e
jD                  jq                  d0¬«      d1„ «       Z9d2„ Z:d3„ Z;d4„ Z<d5„ Z=d6„ Z>d7„ Z?d8„ Z@d9„ ZAd:„ ZBe
jD                  jq                  d0¬«      d;„ «       ZCe
jD                  jG                   e	jL                  «       dk7  xs ejH                  dk  d<¬«      d=„ «       ZDe
jD                  jG                   e	jL                  «       dk7  xs ejH                  dk  d<¬«      d>„ «       ZEd?„ ZFd@„ ZGdA„ ZHdB„ ZIdC„ ZJdD„ ZKdE„ ZLdF„ ZMdG„ ZNdH„ ZOdI„ ZPdJ„ ZQdK„ ZRdL„ ZSdM„ ZTdN„ ZUdO„ ZVdP„ ZWy)Ré    N)ÚPath)Ú
namedtupleé   )Úutil)Úmain)ÚNOGIL_BUILDc                  ól   — t        j                  «       st        j                  d«       y t	        «        y )Nz$CLI command needs a Fortran compiler)r   Úhas_fortran_compilerÚpytestÚskipÚf2pycli© ó    úZ/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/numpy/f2py/tests/test_f2py2e.pyÚcompiler_check_f2pyclir      s    € Ü×$Ñ$Ô&Ü�‰Ð:Õ;ä�	r   Ú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      r   Úget_io_pathsr!   $   s~   € ô. �‹O€EÜØ×Ñ˜tÓ$Ø× Ñ  Ó(Ø×Ñ˜fÓ%Ø�‰ % ¨Ð8Ó9Ø�‰ % Ð(:Ð;Ó<Ø�o‰o   xÐ0Ó1ôð r   Ú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_f90r5   K   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,   r1   s      r   Úgh23598_warnr8   T   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 )z8F90 file for testing disallowed CLI arguments in ghff819r&   r'   r(   zgh_22819.pyfr)   r*   r,   r1   s      r   Úgh22819_clir:   ]   sI   € ô �<‰<˜ ¨¨~Ó>×HÑHÓJ€DØ	×	#Ñ	#Ó	%¨Ñ	6€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,   r1   s      r   Úhello_world_f77r=   f   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 )r<   r&   r'   Úreturn_realzfoo77.fzfoo.fr)   r*   r,   r1   s      r   Úretreal_f77r@   o   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,   )r2   r3   rB   r4   Úfmaps        r   Ú
f2cmap_f90rE   w   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                 ó¨  — t        |«      }|j                  t        dd|› �j                  «       «       t	        j
                  |j                  «      5  t        «        |j                  j                  d«      D �cg c]  }|j                  «       sŒ|j                  ‘Œ! }}d|vsJ ‚d|vsJ ‚d|v sJ ‚d|v sJ ‚	 ddd«       yc c}w # 1 sw Y   yxY w)	zÝCheck that module names are handled correctly
    gh-22819
    Essentially, the -m name cannot be used to import the module, so the module
    named in the .pyf needs to be used instead

    CLI :: -m and a .pyf file
    Úargvúf2py -m blah Ú*zblahmodule.czblah-f2pywrappers.fztest_22819-f2pywrappers.fztest_22819module.cN)r   ÚsetattrÚsysÚsplitr   Ú	switchdirÚparentr   ÚrglobÚis_fileÚname)Úcapfdr:   ÚmonkeypatchÚipathÚitemÚ	gen_pathss         r   Útest_gh22819_clirW   †   sË   € ô �Ó€EØ×Ñœ˜V }°U°GÐ%<×%BÑ%BÓ%DÔEÜ	�‰˜Ÿ™Ó	%ñ ÜŒ	Ø+0¯<©<×+=Ñ+=¸cÓ+BÖU 4ÀdÇlÁlÅn�T—Y“YÐUˆ	ÐUØ YÑ.Ð.Ð.Ø$¨IÑ5Ð5Ð5Ø*¨iÑ7Ð7Ð7Ø# yÑ0Ð0Ð0Ø÷ð ùâU÷ð ús$   Á(CÁ;CÂCÂCÃCÃCc                 óH  — t        |«      }|j                  t        dd|› d�j                  «       «       t	        j
                  |j                  «      5  t        j                  t        d¬«      5  t        «        ddd«       ddd«       y# 1 sw Y   ŒxY w# 1 sw Y   yxY w)zBOnly one .pyf file allowed
    gh-22819
    CLI :: .pyf files
    rG   rH   z
 hello.pyfzOnly one .pyf file per call)ÚmatchN)r   rJ   rK   rL   r   rM   rN   r   ÚraisesÚ
ValueErrorr   )rR   r:   rS   rT   s       r   Útest_gh22819_many_pyfr\   š   s…   € ô
 �Ó€EØ×Ñœ˜V }°U°G¸:Ð%F×%LÑ%LÓ%NÔOÜ	�‰˜Ÿ™Ó	%ñ Ü�]‰]œ:Ð-JÔKñ 	ÜŒI÷	÷ð ÷	ð 	ú÷ð ús$   ÁBÁ0BÁ;BÂB	ÂBÂB!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   rG   úf2py z -m testzintproductf2pywrap, intpr)r!   r   rJ   rK   rL   r   rM   rN   r   r   r.   )rR   r8   rS   ÚfoutlrT   Úwrappers         r   Útest_gh23598_warnrc   ¦   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   rG   zf2py -h ú úSaving signatures to fileN)r   ÚstemrJ   rK   rL   r   rM   rN   r   Ú
readouterrÚexists)rR   r5   rS   rT   ÚopathÚoutÚ_s          r   Útest_gen_pyfrm   ³   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
    rG   zf2py -h stdout rf   zfunction hi() ! in N©	r   rJ   rK   rL   r   rM   rN   r   rh   ©rR   r5   rS   rT   rk   rl   s         r   Útest_gen_pyf_stdoutrq   Â   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
    rG   úf2py -h faker.pyf ú	faker.pyfú	Fake newsr)   r*   z&Use --overwrite-signature to overwriteN)r   rJ   rK   rL   r   rM   rN   r0   r   rZ   Ú
SystemExitr   rh   )rR   r5   rS   rT   rl   Úerrs         r   Útest_gen_pyf_no_overwriterx   Ï   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)é   é   zPython 3.12 required)Úreasonc                 ó  — t        |«      }|j                  t        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@Check that modules are named correctly

    CLI :: defaults
    rG   zf2py --backend meson -c zuntitledmodule.cN)	r   rJ   rK   rL   r   rM   rN   r   rh   rp   s         r   Útest_untitled_clir}   Þ   s|   € ô �Ó!€EØ×Ñœ˜VÐ'?À¸wÐ%G×%MÑ%MÓ%OÔPÜ	�‰˜Ÿ™Ó	%ñ )ÜÔ Ø×!Ñ!Ó#‰ˆˆQØ! SÑ(Ð(Ñ(÷)÷ )ñ )ús   Á$BÂB
ÚLinuxzCompiler and 3.12 requiredc           	      óF  — d}t        ||¬«      }|j                  }|j                  t        dd|› d|› �j	                  «       «       t        j                  |j                  «      5  t        «        | j                  «       \  }}d|v sJ ‚	 ddd«       |j                  t        ddj	                  «       «       t        j                  |j                  «      5  t        «        | j                  «       \  }}d	|v sJ ‚	 ddd«       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   ŒõxY w# 1 sw Y   Œ�xY w# 1 sw Y   yxY w)zqCheck that no distutils imports are performed on 3.12
    CLI :: --fcompiler --help-link --backend distutils
    Úhir_   rG   r`   z -c --fcompiler=gfortran -m z%--fcompiler cannot be used with mesonNzf2py --help-linkzUse --dep for meson buildsÚhi2z -c -m z --backend distutilsz.Cannot use distutils backend with Python>=3.12)r!   r   rJ   rK   rL   r   rM   rN   r   rh   r   )rR   r5   rS   ÚMNAMEra   rT   rk   rl   s           r   Ú!test_no_py312_distutils_fcompilerrƒ   ì   s�  € ð
 €EÜ˜°Ô6€EØ�L‰L€EØ×ÑÜˆV�u˜U˜GÐ#?À¸wÐG×MÑMÓOôô 
�‰˜Ÿ™Ó	%ñ >ÜÔ Ø×!Ñ!Ó#‰ˆˆQØ6¸#Ñ=Ð=Ñ=÷>ð ×ÑÜˆVÐ'×-Ñ-Ó/ôô 
�‰˜Ÿ™Ó	%ñ 3ÜŒ	Ø×!Ñ!Ó#‰ˆˆQØ+¨sÑ2Ð2Ñ2÷3ð €EØ×ÑÜˆV�u˜U˜G 7¨5¨'Ð1EÐF×LÑLÓNôô 
�‰˜Ÿ™Ó	%ñ GÜŒ	Ø×!Ñ!Ó#‰ˆˆQØ?À3ÑFÐFÑF÷Gð G÷>ð >ú÷3ð 3ú÷Gð Gús$   Á&$E?Ã$FÅ$FÅ?FÆFÆF 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 s0rG   r`   z -m test skip: z=buildmodule: Could not found the body of interfaced routine "ú". Skipping.úConstructing wrapper function "ú"N©
r!   r   rJ   rK   rL   r   rM   rN   r   rh   )rR   r@   rS   ra   rT   ÚtoskipÚ	remainingrk   rw   ÚskeyÚrkeys              r   Útest_f2py_skipr�     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_   r…   r†   rG   r`   z -m test only: ú<buildmodule: Could not find the body of interfaced routine "r‡   rˆ   r‰   NrŠ   )rR   r@   rS   ra   rT   r‹   Útokeeprk   rw   r�   rŽ   s              r   Útest_f2py_onlyr”   $  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úr�   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_   r…   ztd s0 hiÚblahrG   r`   ú -m z only: z : r’   r‡   rˆ   r‰   N)r!   r   r   rJ   rK   rL   r   rM   rN   r   rh   )rR   r5   r@   rS   ra   rT   r‹   Úipath2r“   r   rk   rw   r�   rŽ   s                 r   Útest_file_processing_switchr™   ;  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
    r€   r_   rG   r`   r—   N)r!   r   rJ   rK   rL   r   rM   rN   r   r   ri   r   r   )rR   r5   rS   r‚   ra   rT   s         r   Útest_mod_gen_f77r›   Y  sž   € ð €EÜ˜°Ô6€EØ�L‰L€EØ×Ñœ˜V u¨U¨G°4¸°wÐ%?×%EÑ%EÓ%GÔHÜ	�‰˜Ÿ™Ó	%ñ ÜŒ	÷ô �;‰;�u—{‘{Ô#Ð#Ð#ä�;‰;�u—|‘|Ô$Ð$Ñ$÷ð ús   Á&B<Â<Cc           	      ó˜  — d}t        ||¬«      }|j                  }|j                  t        dd|› d|› d�j	                  «       «       t        j                  |j                  «      5  t        «        t        d«      j                  «       5 }|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)
z�Check that pyf files are correctly generated with module structure
    CLI :: -m <name> -h pyf_file
    BUG: numpy-gh #20520
    r€   r_   rG   r`   r—   z
 -h hi.pyfzhi.pyfzpython module hiN)r!   r   rJ   rK   rL   r   rM   rN   r   r   ÚopenÚread)rR   r=   rS   r‚   ra   rT   ÚhipyfÚpyfdats           r   Útest_mod_gen_gh25263r¡   j  s·   € ð
 €EÜ˜°Ô6€EØ�J‰J€EØ×Ñœ˜V u¨U¨G°4¸°w¸jÐ%I×%OÑ%OÓ%QÔRÜ	�‰˜Ÿ™Ó	%ñ 0ÜŒ	Ü�(‹^× Ñ Ó"ð 	0 eØ—Z‘Z“\ˆFØ%¨Ñ/Ð/Ñ/÷	0÷0ð 0÷	0ð 	0ú÷0ð 0ús$   Á'$C ÂB4Â#C Â4B=	Â9C Ã 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\(\)rG   r`   z -m test --lowerNz -m test --no-lower)r!   r   ÚreÚcompilerJ   rK   rL   r   rM   rN   r   rh   Úsearch©	rR   r=   rS   ra   rT   ÚcapshiÚcapslork   rl   s	            r   Útest_lower_cmodr©   z  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: hirG   r`   z -h z -m test --overwrite-signatureNz) -m test --overwrite-signature --no-lower)r!   r   r£   r¤   rJ   rK   r   rL   r   rM   rN   r   rh   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
    r–   ÚtttmprG   úf2py -m re   z --build-dir zWrote C/API module "r‰   Nro   )rR   r5   rS   rT   r   Úodirrk   rl   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
    rG   rs   z --overwrite-signaturert   ru   r)   r*   rf   N)
r   rJ   rK   rL   r   rM   rN   r0   r   rh   rp   s         r   Útest_overwriter²   Ì  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
    r–   rG   r®   re   z --latex-docúDocumentation is saved to fileú
module.texú\documentclassN©r   rJ   rK   rL   r   rM   rN   r   rh   r�   rž   ©rR   r5   rS   rT   r   rk   rl   Ú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
    r–   rG   r®   re   z --no-latex-docr´   Nro   ©rR   r5   rS   rT   r   rk   rl   s          r   Útest_nolatexdocr½   ï  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
    r–   rG   r®   re   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
    r–   rG   r®   re   z --rest-docú#ReST Documentation is saved to filerÀ   zmodule.restz.. -*- rest -*-Nr·   )rR   r5   rS   rT   r   rk   rl   Ú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
    r–   rG   r®   re   z --no-rest-docrÄ   Nro   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
    r–   rG   r®   re   z --debug-capirÀ   r   z#define DEBUGCFUNCSN©
r   rJ   rK   rL   r   rM   rN   r   r�   rž   )rR   r5   rS   rT   r   Úocmods         r   Útest_debugcapirÌ   7  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=z2Consistently fails on CI; noisy so skip not xfail.c           	      óâ  — t        | «      }d}|j                  t        dd|› d|› d�j                  «       «       t	        j
                  |j                  «      5  t        «        t        j                  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
    r–   rG   r®   re   z -c --debug-capiú -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   rJ   rK   rL   r   rM   rN   r   ÚshlexÚ
executableÚ
subprocessÚrunÚtextwrapÚdedentÚstdoutÚstderr)r5   rS   rT   r   Úcmd_runÚroutÚeoutÚeerrs           r   Útest_debugcapi_bldrß   G  sÙ   € ô �Ó!€EØ€EØ×Ñœ˜VØ" 5 '¨¨5¨'Ð1AÐB×HÑHÓJôLô 
�‰˜Ÿ™Ó	%ñ #ÜŒ	Ü—+‘+¤§¡Ð 0Ð0NÐOÓPˆÜ�~‰~˜g°dÀWÔMˆØˆÜ�‰ð 	 ó 	ˆð �{‰{˜dÒ"Ð"Ð"Ø�{‰{˜dÒ"Ð"Ñ"÷!#÷ #ñ #ús   ÁBC%Ã%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
    r–   rG   r®   re   Nú Fortran 77 wrappers are saved toz --wrap-functionsro   r¼   s          r   Útest_wrapfunc_defrâ   e  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
    r–   rG   r®   re   z --no-wrap-functionsrá   Nro   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
    r–   rG   r®   re   z' -include<stdbool.h> -include<stdio.h> rÀ   r   z#include <stdbool.h>z#include <stdio.h>NrÊ   )rR   r5   rS   rT   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
    Nr   r   r   r   Útest_inclpathré   ¥  ó   € ð 	r   c                   ó   — y)z;Add to the include directories

    CLI :: --help-link
    Nr   r   r   r   Ú
test_hlinkrì   ®  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
    rG   rH   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 changesNro   )rR   rE   rS   rT   rk   rl   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
    rG   rH   z --quietr   N)
r   rJ   rK   rL   r   rM   rN   r   rh   Úlenrp   s         r   Ú
test_quietrñ   É  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
    rG   rH   z
 --verboseÚanalyzelineNro   rp   s         r   Útest_verboserô   ×  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
    rG   zf2py -vr   N)rJ   rK   rL   r   rZ   rv   r   rh   ÚnumpyÚ__version__Ústrip)rR   rS   rk   rl   Únps        r   Útest_versionrú   å  sp   € ð
 ×Ñœ˜V Y§_¡_Ó%6Ô7ä	�‰”zÓ	"ñ -ÜŒ	Ø×!Ñ!Ó#‰ˆˆQÛØ�~‰~ §¡£Ò,Ð,Ñ,÷	-÷ -ñ -ús   ¿AB
Â
Bc                 óŒ  — t        | «      }|j                  t        dd|› d�j                  «       «       t	        j
                  |j                  «      5  t        «        t        j                  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
    rG   rH   z -crÎ   TrÏ   rÐ   rÒ   N)r   rJ   rK   rL   r   rM   rN   r   rÓ   rÔ   rÕ   rÖ   rÙ   )r5   rS   rT   rÛ   rÜ   rÝ   s         r   Útest_npdistoprü   ó  s    € ô
 �Ó!€EØ×Ñœ˜V }°U°G¸3Ð%?×%EÑ%EÓ%GÔHä	�‰˜Ÿ™Ó	%ñ #ÜŒ	Ü—+‘+¤§¡Ð 0Ð0NÐOÓPˆÜ�~‰~˜g°dÀWÔMˆØˆØ�{‰{˜dÒ"Ð"Ñ"÷#÷ #ñ #ús   ÁAB:Â:Cz*Compiler and Python 3.12 or newer requiredc                 ó   — t        | «      }|j                  t        dd|› d�j                  «       «       t	        j
                  |j                  «      5  t        «        t        j                  › d�}t        r|dz  }n|dz  }t        j                  |«      }t        j                  |dd¬	«      }d
}|j                  |k(  sJ ‚t        rd|j                  v sJ ‚|j                  dk(  sJ ‚	 ddd«       y# 1 sw Y   yxY w)z.
    CLI :: --no-freethreading-compatible
    rG   rH   z! -c --no-freethreading-compatibleú -c "import blah; blah.hi();z1import sys; assert sys._is_gil_enabled() is True"r‰   TrÏ   rÐ   rÒ   zHThe global interpreter lock (GIL) has been enabled to load module 'blah'r   N©r   rJ   rK   rL   r   rM   rN   r   rÔ   r   rÓ   rÕ   rÖ   rÙ   rÚ   Ú
returncode©r5   rS   rT   ÚcmdrÛ   rÜ   rÝ   s          r   Ú test_no_freethreading_compatibler    sè   € ô �Ó!€EØ×Ñœ˜V }°U°GÐ;\Ð%]×%cÑ%cÓ%eÔfä	�‰˜Ÿ™Ó	%ñ $ÜÔ Ü—‘Ð Ð =Ð>ˆÝØÐGÑG‰Cà�4‰KˆCÜ—+‘+˜cÓ"ˆÜ�~‰~˜g°dÀWÔMˆØˆØ�{‰{˜dÒ"Ð"Ð"ÝØ]Ðae×alÑalÑlÐlÐlØ�‰ !Ò#Ð#Ñ#÷$÷ $ñ $ús   ÁBC4Ã4C=c                 óö  — t        | «      }|j                  t        dd|› d�j                  «       «       t	        j
                  |j                  «      5  t        «        t        j                  › d�}t        r|dz  }n|dz  }t        j                  |«      }t        j                  |dd¬	«      }d
}|j                  |k(  sJ ‚|j                  dk(  sJ ‚|j                  dk(  sJ ‚	 ddd«       y# 1 sw Y   yxY w)z+
    CLI :: --freethreading_compatible
    rG   rH   z -c --freethreading-compatiblerþ   z2import sys; assert sys._is_gil_enabled() is False"r‰   TrÏ   rÐ   rÒ   Ú r   Nrÿ   r  s          r   Útest_freethreading_compatibler    sâ   € ô �Ó!€EØ×Ñœ˜V }°U°GÐ;YÐ%Z×%`Ñ%`Ó%bÔcä	�‰˜Ÿ™Ó	%ñ $ÜÔ Ü—‘Ð Ð =Ð>ˆÝØÐHÑH‰Cà�4‰KˆCÜ—+‘+˜cÓ"ˆÜ�~‰~˜g°dÀWÔMˆØˆØ�{‰{˜dÒ"Ð"Ð"Ø�{‰{˜bÒ Ð Ð Ø�‰ !Ò#Ð#Ñ#÷$÷ $ñ $ús   ÁBC/Ã/C8c                   ó   — y)z
    CLI :: -c --fcompiler
    Nr   r   r   r   Útest_npd_fcompilerr  7  ó   € ð
 	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  G  r	  r   c                   ó   — y)z
    CLI :: -c --f77exec
    Nr   r   r   r   Útest_npd_f77execr  O  r	  r   c                   ó   — y)z
    CLI :: -c --f90exec
    Nr   r   r   r   Útest_npd_f90execr  W  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  g  r	  r   c                   ó   — y)z
    CLI :: -c --opt
    Nr   r   r   r   Útest_npd_optr  o  r	  r   c                   ó   — y)z
    CLI :: -c --arch
    Nr   r   r   r   Útest_npd_archr  w  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)Xr£   rÓ   rÕ   rK   r×   Úpathlibr   Úcollectionsr   Úplatformr   r  r   Únumpy.f2py.f2py2er   r   Únumpy.testing._private.utilsr   r   r   r!   Úfixturer5   r8   r:   r=   r@   rE   rW   r\   rc   rm   rq   rx   ÚmarkÚskipifÚversion_infor}   Úsystemrƒ   Úxfailr�   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%  r'  r)  r+  r   r   r   ú<module>r8     sw  ðÛ 	Û Û Û 
Û Ý Ý "ã ã å Ý -Ý 4òñ 
�HÐHÓ	I€óðN €‡��iÔ ñó !ðð €‡��iÔ ñó !ðð €‡��iÔ ñó !ðð €‡��iÔ ñó !ðð €‡��iÔ ñó !ðð €‡��iÔ ñó !ðòò(	ò
:ò)ò
,òCð ‡�×Ñ�C×$Ñ$¨Ñ/Ð8NÐÓOñ
)ó Pð
)ð ‡�×Ñ�_�X—_‘_Ó&¨'Ñ1ÒS°s×7GÑ7GÈ7Ñ7RÐ\xÐÓyñGó zðGð> ‡�×ÑñDó ðDò.Dò.Dò<%ò"0ò .ò4$.òN8ò"2ò"4ò$;ò 8ò,5ò$@ò :ð  ‡�×ÑÐMÐÓNñ#ó Oð#ò::ò2>ò 0ò.	ò	òIò$ò$ò-ð ‡�×ÑÐMÐÓNñ#ó Oð#ð ‡�×Ñ�_�X—_‘_Ó&¨'Ñ1ÒQ°c×6FÑ6FÈ'Ñ6QØGð ó Iñ$óIð$ð. ‡�×Ñ�_�X—_‘_Ó&¨'Ñ1ÒQ°c×6FÑ6FÈ'Ñ6QØGð ó Iñ$óIð$ò2	ò	ò	ò	ò	ò	ò	ò	ò	ò	ò	ò	ò	ò	ò	ò	ò	ó	r   