ó
    mñ:iP/  ã                   ól  • S r SSKrSSKrSSKrSSKrSSKrSSKrSSKrSSK	r	SSK
r
SSKJr  SSKJr  SSKrSSKrSSKJr  SSKJr  SSKJrJr  S!S jrS	rS
r " S S5      r\(       d  \" 5       r\R;                  5         S rS rS r S r!Sq"Sq#\	RH                  S:X  a=  \" \%5      RL                  RL                  RL                  r'\(" \'R                  S5      5      r)S r*S r+S r,S r-\-/ / / S4S j5       r.\-/ / / SS4S j5       r/ " S S\5      r0S!S jr1 " S S5      r2S r3\Rh                  S  5       r5g)"z¥
Utility functions for

- building and importing modules on test time, using a temporary location
- detecting if compilers are present
- determining paths to tests

é    N)Úimport_module)ÚPath)Ú	asunicode)ÚMesonBackend)ÚIS_WASMÚtemppathc                 ó  • [         R                  S:X  a  [        R                  " SSS9  [        R
                  " 5       n [        R                  R                  US5      n[        US5       nUR                  S5        UR                  SU  S	35        U(       aL  UR                  U  S
U  S	35        UR                  U  SU S35        UR                  SU  SU  SU  SU  S3	5        S S S 5         [        R                  " / SQSUSS9nWR                  S:H  [        R                   " U5        $ ! , (       d  f       NM= f! [        R                   a    [        R                  " SSS9   Naf = f! [        R                   " U5        f = f)NÚwin32z*No Fortran tests on Windows (Issue #25134)T)Úallow_module_levelzmeson.buildÚwzproject('check_compilers')
zadd_languages('z')
z _compiler = meson.get_compiler('z_code = '''z'''
Ú_have_z
_feature =z_compiler.compiles(z_code, name: 'z feature check')
)ÚmesonÚsetupÚbtmpF)ÚcheckÚcwdÚcapture_outputz3meson not present, skipping compiler dependent testr   )ÚsysÚplatformÚpytestÚskipÚtempfileÚmkdtempÚosÚpathÚjoinÚopenÚwriteÚ
subprocessÚrunÚCalledProcessErrorÚ
returncodeÚshutilÚrmtree)ÚlangÚcode_snippetÚtmpdirÚ
meson_fileÚfÚrunmesons         ÚX/srv/projetos/modelo_ml_acdoc/venv/lib/python3.13/site-packages/numpy/f2py/tests/util.pyÚcheck_languager,       s]  € Ü
‡|�|�wÓÜ�ŠÐ@ÐUYÒZÜ×ÒÓ€FðÜ—W‘W—\‘\ &¨-Ó8ˆ
Ü�*˜cÔ" aØ�G‰GÐ2Ô3Ø�G‰G�o d V¨4Ð0Ô1ÞØ—‘˜4˜&Ð @ÀÀÀdÐKÔLØ—‘˜4˜& ¨L¨>¸Ð?Ô@Ø—‘Ø˜T˜F *Ø�fÐ/°¨vð 6Ø#˜fÐ$6ð8ô÷ #ð	hÜ!—~’~Ú*ØØØ#ñ	ˆHð ×"Ñ" aÑ'ä�Š�fÕ÷- #Õ"ûô$ ×,Ñ,ó 	hÜ�KŠKÐMÐbfÔgð	hûô 	�Š�fÕúsI   Á ,E- Á,A:D-Ã&E- Ã/D> ÄE- Ä-
D;Ä7E- Ä>)E*Å'E- Å)E*Å*E- Å-Fz]
C Example Fortran 77 code
      PROGRAM HELLO
      PRINT *, 'Hello, Fortran 77!'
      END
zÙ
! Example Fortran 90 code
program hello90
  type :: greeting
    character(len=20) :: text
  end type greeting

  type(greeting) :: greet
  greet%text = 'hello, fortran 90!'
  print *, greet%text
end program hello90
c                   ó    • \ rS rSrS rS rSrg)ÚCompilerCheckeréT   c                 ó<   • SU l         SU l        SU l        SU l        g )NF©Úcompilers_checkedÚhas_cÚhas_f77Úhas_f90©Úselfs    r+   Ú__init__ÚCompilerChecker.__init__U   s   € Ø!&ˆÔØˆŒ
ØˆŒØˆ�ó    c                 óö  • U R                   (       d×  [        R                  S:X  dÂ  [        R                  R                  5        nUR                  [        S5      UR                  [        S[        5      UR                  [        S[        5      /nUS   R                  5       U l        US   R                  5       U l        US   R                  5       U l        S S S 5        SU l         g g g ! , (       d  f       N= f)NÚcygwinÚcÚfortranr   é   é   T)r2   r   r   Ú
concurrentÚfuturesÚThreadPoolExecutorÚsubmitr,   Úfortran77_codeÚfortran90_codeÚresultr3   r4   r5   )r7   ÚexecutorrB   s      r+   Úcheck_compilersÚCompilerChecker.check_compilers[   s¼   € Ø×&×&´·±ÀÓ1IÜ×#Ñ#×6Ñ6Ô8¸Hà—O‘O¤N°CÓ8Ø—O‘O¤N°I¼~ÓNØ—O‘O¤N°I¼~ÓNð�ð % Q™Z×.Ñ.Ó0�”
Ø& q™z×0Ñ0Ó2�”Ø& q™z×0Ñ0Ó2�”÷ 9ð &*ˆDÕ"ð 2JÐ&ß8Õ8ús   ÁBC*Ã*
C8r1   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r8   rI   Ú__static_attributes__© r:   r+   r.   r.   T   s   † òõ*r:   r.   c                  ó"   • [         R                  $ ©N)Úcheckerr3   rP   r:   r+   Úhas_c_compilerrT   o   s   € Ü�=‰=Ðr:   c                  ó"   • [         R                  $ rR   )rS   r4   rP   r:   r+   Úhas_f77_compilerrV   r   ó   € Ü�?‰?Ðr:   c                  ó"   • [         R                  $ rR   )rS   r5   rP   r:   r+   Úhas_f90_compilerrY   u   rW   r:   c                  óP   • [         R                  =(       a    [         R                  $ rR   )rS   r5   r4   rP   r:   r+   Úhas_fortran_compilerr[   x   s   € Ü�O‰O×/¤§¡Ð0r:   i  r<   z**/*.dllc                  óÖ   • [         bB   [        R                  R                  [         5         [
        R                  " [         5        S q g g ! [         a     N+f = f! [         a     N f = frR   )Ú_module_dirr   r   ÚremoveÚ
ValueErrorr#   r$   ÚOSErrorrP   r:   r+   Ú_cleanupra   ˆ   sa   € äÑð	Ü�H‰H�O‰OœKÔ(ð	Ü�MŠMœ+Ô&ð ‰ð øô ó 	Ùð	ûô ó 	Ùð	ús"   ‰#A ­A Á
AÁAÁ
A(Á'A(c                  óò   • [         ck  [        R                  " 5       q [        R                  " [
        5        [         [        R                  ;  a$  [        R                  R                  S[         5        [         $ )Nr   )	r]   r   r   ÚatexitÚregisterra   r   r   ÚinsertrP   r:   r+   Úget_module_dirrf   –   sF   € äÑÜ×&Ò&Ó(ˆÜ�ŠœÔ!ÜœcŸh™hÓ&Ü�H‰H�O‰O˜Aœ{Ô+ÜÐr:   c                  ó|   • [        5         S[        -  n [        S-  qU [        R                  ;   a  [	        S5      eU $ )Nz_test_ext_module_%dr?   z%Temporary module name already in use.)rf   Ú_module_numr   ÚmodulesÚRuntimeError)Únames    r+   Úget_temp_module_namerl       s;   € ô ÔØ ¤;Ñ.€DÜ�1Ñ€KØŒs�{‰{ÓäÐBÓCÐCØ€Kr:   c                 ó>   ^ ^• 0 mU U4S jnT R                   Ul         U$ )Nc                  ó¬   >• [        X45      nUT;  a   T" U 0 UD6TU'   TU   n[        U[        5      (       a  UeU$ ! [         a  nUTU'   e S nAff = frR   )ÚreprÚ	ExceptionÚ
isinstance)ÚaÚkwÚkeyÚeÚretÚfuncÚmemos        €€r+   ÚwrapperÚ_memoize.<locals>.wrapper¯   sk   ø€ Ü�A�7‹mˆØ�d‹?ðÙ  !˜N r™N��S‘	ð �3‰iˆÜ�cœ9×%Ñ%ØˆIØˆ
øô ó Ø��S‘	Øûðús   •> ¾
AÁAÁA)rK   )rw   ry   rx   s   ` @r+   Ú_memoizer{   ¬   s    ù€ Ø€Döð —}‘}€GÔØ€Nr:   c           	      óT  • S[         R                  < S3n[        5       n[        5       (       d  [        R
                  " S5        / n/ nU  HÓ  n	[        R                  R                  U	5      (       d  [        U	 S35      e[        R                  R                  U[        R                  R                  U	5      5      n
[        R                  " Xš5        UR                  U
5        [        R                  R                  U
5      u  p¼US;   d  MÂ  UR                  U
5        MÕ     U(       d   eUc
  [        5       n/ nSU;  a	  SU;  a  S/nS	S
U/U-   U-   U-   nUSS/-  nU(       a	  US/U-   -  nU(       a	  US/U-   -  n[        R                   " 5       n [        R"                  " U5        [         R$                  S	U/U-   n[&        R(                  " U[&        R*                  [&        R,                  S9nUR/                  5       u  nnUR0                  S:w  a  [        SUSS  S[3        U5       35      e [        R"                  " U5        U H  n	[        R4                  " U	5        M     [         R6                  S:X  ai  [8        R;                  [<        R<                  " [        R                  R                  XdS S35      5      5        [&        R>                  " / SQ[8        -   5        [A        U5      $ ! [        R"                  " U5        U H  n	[        R4                  " U	5        M     f = f)z@
Compile and import a f2py module, built from the given files.

zimport sys; sys.path = z&; import numpy.f2py; numpy.f2py.main()úNo Fortran compiler availablez is not a file)ú.f90z.f95ú.fz.cú.pyfNz--freethreading-compatiblez--no-freethreading-compatiblez-cz-mz	--backendr   zskip:zonly:)ÚstdoutÚstderrr   zRunning f2py failed: é   Ú
r<   ÚsÚ*)z/usr/bin/rebasez
--databasez--obliviousz	--verbose)!r   r   rf   r[   r   r   r   Úisfilerj   r   Úbasenamer#   ÚcopyfileÚappendÚsplitextrl   ÚgetcwdÚchdirÚ
executabler   ÚPopenÚPIPEÚSTDOUTÚcommunicater"   r   Úunlinkr   Ú_module_listÚextendÚglobÚ
check_callr   )Úsource_filesÚoptionsr   ÚonlyÚmodule_nameÚcodeÚdÚdst_sourcesÚf2py_sourcesÚfnÚdstÚbaseÚextÚgil_optionsÚ	f2py_optsr   ÚcmdÚpÚoutÚerrs                       r+   Úbuild_modulerª   Å   s°  € ð %¤S§X¡X¡LÐ0VÐW€DäÓ€Aä×!Ñ!Ü�ŠÐ3Ô4ð €KØ€LÛˆÜ�w‰w�~‰~˜b×!Ñ!Ü "  ^Ð4Ó5Ð5Ü�g‰g�l‰l˜1œbŸg™g×.Ñ.¨rÓ2Ó3ˆÜ�Š˜Ô Ø×Ñ˜3Ôä—G‘G×$Ñ$ SÓ)‰	ˆØÐ6Õ6Ø×Ñ Ö$ñ ö Ðˆ<ð ÑÜ*Ó,ˆØ€KØ#¨7Ó2Ð7VÐ^eÓ7eà3Ð4ˆØ�t˜[Ð)¨GÑ3°kÑAÀLÑP€IØ�+˜wÐ'Ñ'€IÞØ�g�Y Ñ%Ñ%ˆ	ÞØ�g�Y Ñ%Ñ%ˆ	ô �)Š)‹+€CðÜ
�Š�ŒÜ�~‰~˜t TÐ*¨YÑ6ˆÜ×Ò˜SÜ$.§O¡OÜ$.×$5Ñ$5ñ7ˆð —=‘=“?‰ˆˆSØ�<‰<˜1ÓÜÐ!6°s¸1¸2°w°i¸rÄ)ÈCÃ.ÐAQÐRÓSÐSð ô 	�Š�Œó ˆBÜ�IŠI�bŽMñ ô ‡|�|�xÓô 	×ÑÜ�IŠI”b—g‘g—l‘l 1°Q¨°qÐ&9Ó:Ó;ô	
ô 	×ÒÚIÜñô	
ô ˜Ó%Ð%øô) 	�Š�Œó ˆBÜ�IŠI�bŽMò ús   ÆBK0 Ë07L'c           	      óÞ   • Uc  Sn[        US9 n[        US5       nUR                  U 5        SSS5        [        U/UUUUS9sSSS5        $ ! , (       d  f       N%= f! , (       d  f       g= f)z.
Compile and import Fortran code using f2py.

Nr   )Úsuffixr   ©r™   r   rš   r›   )r   r   r   rª   )Úsource_coder™   r   rš   r¬   r›   r   r)   s           r+   Ú
build_coder¯     sc   € ð �~ØˆÜ	˜Ò	  DÜ�$˜Œ_ Ø�G‰G�KÔ ÷ ä˜T˜FØ$+Ø!%Ø!%Ø(3ñ	5÷ 
!Ñ	 ß�_ú÷ 
!Õ	 ús!   �AœA®AÁ
A	ÁAÁ
A,c                   ó.   ^ • \ rS rSrU 4S jrS rSrU =r$ )ÚSimplifiedMesonBackendi0  c                 ó&   >• [         TU ]  " U0 UD6  g rR   )Úsuperr8   )r7   ÚargsÚkwargsÚ	__class__s      €r+   r8   ÚSimplifiedMesonBackend.__init__1  s   ø€ Ü‰Ò˜$Ð) &Ó)r:   c                 óp   • U R                  U R                  5        U R                  U R                  5        g rR   )Úwrite_meson_buildÚ	build_dirÚ	run_mesonr6   s    r+   ÚcompileÚSimplifiedMesonBackend.compile4  s$   € Ø×Ñ˜tŸ~™~Ô.Ø�‰�t—~‘~Õ&r:   rP   )rK   rL   rM   rN   r8   r¼   rO   Ú__classcell__)r¶   s   @r+   r±   r±   0  s   ø† õ*÷'ð 'r:   r±   c           	      ó   • [        5       (       d  [        R                  " S5        [        5       nUc
  [	        5       n[        S0 SU_SU _SUR                  S/ 5      _SU_SUR                  S/ 5      _SUR                  S/ 5      _SUR                  S/ 5      _S	UR                  S	/ 5      _S
UR                  S
/ 5      _SUR                  S/ 5      _SUR                  S/ 5      _SUR                  S/ 5      _SUR                  S/ 5      _SUR                  S/ 5      _SUR                  SS5      _SUR                  S0 5      _6nUR                  5         [        R                  R                  SU SUR                   35        [        U5      $ )z)
Build a module via Meson and import it.
r}   Ú
modulenameÚsourcesÚextra_objectsrº   Úinclude_dirsÚlibrary_dirsÚ	librariesÚdefine_macrosÚundef_macrosÚ
f2py_flagsÚsysinfo_flagsÚfc_flagsÚ
flib_flagsÚsetup_flagsÚremove_build_dirFÚ	extra_datr   Ú/rP   )r[   r   r   rf   rl   r±   Úgetr¼   r   r   re   Úmeson_build_dirr   )r˜   r›   rµ   rº   Úbackends        r+   Úbuild_mesonrÓ   9  s¥  € ô  ×!Ñ!Ü�ŠÐ3Ô4äÓ €IØÑÜ*Ó,ˆô %ò Ùðáðð —j‘j °"Ô5ðñ ð	ð
 —Z‘Z °Ô3ðð —Z‘Z °Ô3ðð —*‘*˜[¨"Ô-ðð —j‘j °"Ô5ðð —Z‘Z °Ô3ðð —:‘:˜l¨BÔ/ðð —j‘j °"Ô5ðð —‘˜J¨Ô+ðð —:‘:˜l¨BÔ/ðð —J‘J˜}¨bÔ1ðð  Ÿ™Ð$6¸Ô>ðð  —*‘*˜[¨"Ô-ð!€Gð& ‡O�OÔô ‡H�H‡O�O�A˜)˜ A g×&=Ñ&=Ð%>Ð?Ô@Ü˜Ó%Ð%r:   c                   ób   • \ rS rSrSrSr/ r/ r/ rSr	Sr
SrSrSr\S 5       r\S 5       rS rSrg)ÚF2PyTestif  Nr   c                 óx   • [        U 5      nSUR                  R                  SS5      S    SUR                   S3$ )NÚ_Ú.r?   éÿÿÿÿÚ_ext_module)ÚtyperL   ÚrsplitrK   )r7   Úclss     r+   r›   ÚF2PyTest.module_namer  s;   € ä�4‹jˆØ�3—>‘>×(Ñ(¨¨aÓ0°Ñ4Ð5°Q°s·|±|°nÀKÐPÐPr:   c                 óð   • [         R                  S:X  a  [        R                  " S5        [	        5       [
        l        [        5       [
        l        [        5       [
        l
        [        5       [
        l        g )Nr
   z)Fails with MinGW64 Gfortran (Issue #9673))r   r   r   r   rT   rÕ   Ú_has_c_compilerrV   Ú_has_f77_compilerrY   Ú_has_f90_compilerr[   Ú_has_fortran_compiler)rÝ   s    r+   Úsetup_classÚF2PyTest.setup_classw  sG   € ä�<‰<˜7Ó"Ü�KŠKÐCÔDÜ#1Ó#3ŒÔ Ü%5Ó%7ŒÔ"Ü%5Ó%7ŒÔ"Ü)=Ó)?ŒÕ&r:   c           	      ó~  • U R                   b  g U R                  =(       d    / nU R                  (       a  UR                  U R                  5        [        S U 5       5      n[        S U 5       5      n[        S U 5       5      nU(       a'  U R                  (       d  [        R                  " S5        U(       a'  U R                  (       d  [        R                  " S5        U(       a'  U R                  (       d  [        R                  " S5        U R                  bO  [        U R                  U R                  U R                  U R                  U R                  U R                  S9U l         U R                  bE  [        U R                  U R                  U R                  U R                  U R                  S9U l         g g )	Nc              3   óV   #   • U  H  n[        U5      R                  S 5      v •  M!     g7f)r   N©ÚstrÚendswith©Ú.0r    s     r+   Ú	<genexpr>Ú(F2PyTest.setup_method.<locals>.<genexpr>ˆ  s"   é € Ð?º°2œ˜B›×(Ñ(¨×.Ð.ºùó   ‚')c              3   óV   #   • U  H  n[        U5      R                  S 5      v •  M!     g7f)r~   Nrè   rë   s     r+   rí   rî   ‰  ó"   é € ÐAº5°Rœ˜B›×(Ñ(¨×0Ð0º5ùrï   c              3   óV   #   • U  H  n[        U5      R                  S 5      v •  M!     g7f)r€   Nrè   rë   s     r+   rí   rî   Š  rñ   rï   z No Fortran 77 compiler availablez No Fortran 90 compiler availabler}   )r™   r   rš   r¬   r›   r­   )ÚmodulerÁ   rœ   rŠ   r¬   Úanyrá   r   r   râ   rã   r¯   r™   rš   r›   rª   )r7   ÚcodesÚ	needs_f77Ú	needs_f90Ú	needs_pyfs        r+   Úsetup_methodÚF2PyTest.setup_method€  s2  € Ø�;‰;Ñ"Øà—‘×" ˆØ�9�9Ø�L‰L˜Ÿ™Ô%äÑ?¹Ó?Ó?ˆ	ÜÑA¹5ÓAÓAˆ	ÜÑA¹5ÓAÓAˆ	æ˜T×3×3Ü�KŠKÐ:Ô;Þ˜T×3×3Ü�KŠKÐ:Ô;Þ˜T×7×7Ü�KŠKÐ7Ô8ð �9‰9Ñ Ü$Ø—	‘	ØŸ™Ø—Y‘YØ—Y‘YØ—{‘{Ø ×,Ñ,ñˆDŒKð �<‰<Ñ#Ü&Ø—‘ØŸ™Ø—Y‘YØ—Y‘YØ ×,Ñ,ñˆD�Kð $r:   )ró   )rK   rL   rM   rN   rœ   rÁ   r™   r   rš   r¬   ró   rà   rá   râ   Úpropertyr›   Úclassmethodrä   rù   rO   rP   r:   r+   rÕ   rÕ   f  se   † Ø€DØ€GØ€GØ€DØ€DØ€FØ€FØ€OØÐØÐàñQó ðQð ñ@ó ð@õ%r:   rÕ   c                  ó–   • [        [        R                  R                  5      R                  R                  5       nUR                  " U 6 $ rR   )r   ÚnumpyÚf2pyÚ__file__ÚparentÚresolveÚjoinpath)rr   r�   s     r+   Úgetpathr  ­  s3   € äŒU�Z‰Z× Ñ Ó!×(Ñ(×0Ñ0Ó2€AØ�:Š:�qˆ>Ðr:   c              #   óÎ   #   • [         R                  " 5       n[        R                  " U 5         S v •  [        R                  " U5        g ! [        R                  " U5        f = f7frR   )r   r   r   r�   )r   Úcurpaths     r+   Ú	switchdirr  ³  s;   é € ä�hŠh‹j€GÜ‡H‚HˆT„NðÛä
�Š�ÕøŒ�Š�Õüs   ‚,A%¯A
 ³A%Á
A"Á"A%rR   )6Ú__doc__rc   Úconcurrent.futuresrA   Ú
contextlibr–   r   r#   r   r   r   Ú	importlibr   Úpathlibr   r   rþ   Únumpy._utilsr   Únumpy.f2py._backends._mesonr   Únumpy.testingr   r   r,   rE   rF   r.   rS   rI   rT   rV   rY   r[   r]   rh   r   r   r  ÚNUMPY_INSTALL_ROOTÚlistr”   ra   rf   rl   r{   rª   r¯   r±   rÓ   rÕ   r  Úcontextmanagerr  rP   r:   r+   Ú<module>r     sc  ðñó Û Û Û Û 	Û Û Û 
Û Ý #Ý ã ã Ý "Ý 4ß +ôð>€ð€÷*ñ *ö. ÙÓ€GØ×ÑÔòòòò1ð €Ø€à‡<�<�8ÓÙ˜h›×.Ñ.×5Ñ5×<Ñ<ÐÙÐ*×/Ñ/°
Ó;Ó<€Lòòò	òð2 
Ø')°¸Èó K&ó 
ðK&ð\ 
àØØØØó5ó 
ð5ô6'˜\ô 'ô%&÷Z?ñ ?òNð ×Ññó ñr:   