1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
Ë
Kñúh
1ãóX—dZddlZddlZddlZddlZddlZddlZddlZddl    Z    ddl
Z
ddl m Z ddl mZddlZddlZddlmZddlmZddlmZmZd!d„Zd    Zd
ZGd „d «Zese«Zej;«d „Zd„Zd„Z d„Z!da"da#e    jHdk(r=ee%«jLjLjLZ'e(e'j d««Z)d„Z*d„Z+d„Z,d„Z-e-gggdfd„«Z.e-gggddfd„«Z/Gd„de«Z0d!d„Z1Gd„d«Z2d„Z3ejhd „«Z5y)"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 óþ—tjdk(rtjdd¬«t    j
«}    t jj|d«}t|d«5}|jd«|jd|›d    «|rL|j|›d
|›d    «|j|›d |›d «|jd |›d|›d|›d|›d    «ddd«    tjgd¢d|d¬«}jdk(tj |«S#1swYŒIxYw#tj$rtjdd¬«YŒ\wxYw#tj |«wxYw)NÚwin32z*No Fortran tests on Windows (Issue #25134)T)Úallow_module_levelz meson.buildÚwzproject('check_compilers')
zadd_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      úHH:\Change_password\venv_build\Lib\site-packages\numpy/f2py/tests/util.pyÚcheck_languager, sd€Ü
‡||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%Á,A5D)Ã!E%Ã*D5ÄE%Ä)D2Ä.E%Ä5*E"ÅE%Å!E"Å"E%Å%E<z]
C Example Fortran 77 code
      PROGRAM HELLO
      PRINT *, 'Hello, Fortran 77!'
      END
! 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ó—eZdZd„Zd„Zy)ÚCompilerCheckercó<—d|_d|_d|_d|_y)NF)Úcompilers_checkedÚhas_cÚhas_f77Úhas_f90©Úselfs r+Ú__init__zCompilerChecker.__init__Us€Ø!&ˆÔ؈Œ
؈Œ ؈ ócóà—|jsÖtjdk(sÂtjj «5}|j td«|j tdt«|j tdt«g}|dj«|_ |dj«|_ |dj«|_ ddd«d|_yyy#1swYŒxYw)NÚcygwinÚcÚfortranrééT)r0rrÚ
concurrentÚfuturesÚThreadPoolExecutorÚsubmitr,Úfortran77_codeÚfortran90_codeÚresultr1r2r3)r5Úexecutorr?s   r+Úcheck_compilerszCompilerChecker.check_compilers[sŀØ×&Ò&´·±ÀÒ1IÜ×#Ñ#×6Ñ6Ó8ð     3¸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” ÷     3ð&*ˆDÕ "ð2JÐ&÷     3ð     3ús ¾BC$Ã$C-N)Ú__name__Ú
__module__Ú __qualname__r6rF©r7r+r.r.Ts „òó *r7r.có"—tjS©N)Úcheckerr1rJr7r+Úhas_c_compilerrNos €Ü =‰=Ðr7có"—tjSrL)rMr2rJr7r+Úhas_f77_compilerrPró €Ü ?‰?Ðr7có"—tjSrL)rMr3rJr7r+Úhas_f90_compilerrSurQr7cóF—tjxrtjSrL)rMr3r2rJr7r+Úhas_fortran_compilerrUxs€Ü O‰OÒ /¤§¡Ð0r7ir9z**/*.dllcóΗtA    tjjt«    t j t«dayy#t$rYŒ)wxYw#t$rYŒwxYwrL)Ú _module_dirrrÚremoveÚ
ValueErrorr#r$ÚOSErrorrJr7r+Ú_cleanupr[ˆsa€äÐð    Ü H‰HO‰OœKÔ (ð    Ü M‰Mœ+Ô &ð‰ ðøôò    Ù ð    ûôò    Ù ð    ús"ˆ#A    ¬AÁ        AÁAÁ    A$Á#A$cóè—t€gtj«atjt
«tt jvr$t jjdt«tS)Nr)    rWrrÚatexitÚregisterr[rrÚinsertrJr7r+Úget_module_dirr`–sF€äÐÜ×&Ñ&Ó(ˆ ܏‰œÔ!Ü œcŸh™hÑ &Ü H‰HO‰O˜Aœ{Ô +Ü Ðr7cóx—t«dtz}tdz a|tjvr t    d«‚|S)Nz_test_ext_module_%dr<z%Temporary module name already in use.)r`Ú _module_numrÚmodulesÚ RuntimeError)Únames r+Úget_temp_module_namerf s;€ôÔØ  ¤;Ñ .€Dܐ1Ñ€KØ Œs{‰{ÑäÐBÓCÐCØ €Kr7có<‡‡—iŠˆˆfd„}‰j|_|S)Ncóž•—t||f«}|‰vr     ‰|i|¤Ž‰|<‰|}t|t«r|‚|S#t$r }|‰|<‚d}~wwxYwrL)ÚreprÚ    ExceptionÚ
isinstance)ÚaÚkwÚkeyÚeÚretÚfuncÚmemos     €€r+Úwrapperz_memoize.<locals>.wrapper¯sjø€ÜAr7‹mˆØ d‰?ð Ù  !˜N r™NS‘    ð3‰iˆÜ cœ9Ô %؈I؈
øô ò ؐS‘    Øûð ús” 8¸    A ÁAÁA )rG)rqrsrrs` @r+Ú_memoizert¬s ù€Ø €Dõ ð—}‘}€GÔØ €Nr7c    óø—dtj›d}t«}t«st    j
d«g}g}|D]Ë}    t jj|    «st|    ›d«‚t jj|t jj|    ««}
tj|    |
«|j|
«t jj|
«\} } | dvsŒ»|j|
«ŒÍ|sJ‚|€
t«}g} d|vrd|vrdg} d    d
|g|z| z|z}|d d gz }|r    |d g|zz }|r    |dg|zz }t j «}    t j"|«tj$d    |g|z}t'j(|t&j*t&j,¬«}|j/«\}}|j0dk7rtd|dd›dt3|«›«‚    t j"|«|D]}    t j4|    «Œ    tj6dk(rht8j;t=j<t jj||d›d«««t'j>gd¢t8z«tA|«S#t j"|«|D]}    t j4|    «ŒwxYw)zH
    Compile and import a f2py module, built from the given files.
 
    zimport 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    --backendrzskip:zonly:)ÚstdoutÚstderrrzRunning f2py failed: éú
r9ÚsÚ*)z/usr/bin/rebasez
--databasez --obliviousz    --verbose)!rrr`rUrrrÚisfilerdrÚbasenamer#ÚcopyfileÚappendÚsplitextrfÚ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ˆÜ‰˜˜CÔ Ø×ј3Ôä—G‘G×$Ñ$ SÓ)‰    ˆˆcØ Ð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 Å/BKË3K9cóԗ|€d}t|¬«5}t|d«5}|j|«ddd«t|g||||¬«cddd«S#1swYŒ#xYw#1swYyxYw)z6
    Compile and import Fortran code using f2py.
 
    Nrx)Úsuffixr ©r’rr“r”)rrrr£)Ú source_coder’rr“r¥r”rr)s        r+Ú
build_coder¨sv€ð€~؈ܠ   ˜Ô     ð5 DÜ $˜‹_ð    ! Ø G‰GKÔ  ÷    !ä˜T˜FØ$+Ø!%Ø!%Ø(3ô    5÷5ñ5÷    !ð    !ú÷5ð5ús!‘ AžA°AÁA    ÁAÁA'có$‡—eZdZˆfd„Zd„ZˆxZS)ÚSimplifiedMesonBackendcó$•—t‰||i|¤ŽyrL)Úsuperr6)r5ÚargsÚkwargsÚ    __class__s   €r+r6zSimplifiedMesonBackend.__init__1sø€Ü ‰Ñ˜$Ð) &Ó)r7cóp—|j|j«|j|j«yrL)Úwrite_meson_buildÚ    build_dirÚ    run_mesonr4s r+ÚcompilezSimplifiedMesonBackend.compile4s$€Ø ×јtŸ~™~Ô.Ø ‰t—~‘~Õ&r7)rGrHrIr6r´Ú __classcell__)r¯s@r+rªrª0s ø„ô*ö'r7rªc     ó—t«stjd«t«}|€
t    «}t did|“d|“d|j dg«“d|“d|j dg«“d|j dg«“d|j dg«“d    |j d    g«“d
|j d
g«“d |j d g«“d |j d g«“d |j d g«“d|j dg«“d|j dg«“d|j dd«“d|j di«“Ž}|j«tjjd|›d|j›«t|«S)z1
    Build a module via Meson and import it.
    rvÚ
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ú/rJ) rUrrr`rfrªÚgetr´rrr_Úmeson_build_dirr)r‘r”r®r²Úbackends     r+Ú build_mesonrÊ9s¢€ô  Ô !܏ ‰ Ð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×&=Ñ&=Ð%>Ð?Ô@Ü ˜Ó %Ð%r7cóZ—eZdZdZdZgZgZgZdZdZ    dZ
dZ dZ e d„«Zed„«Zd„Zy)ÚF2PyTestNrxcóx—t|«}d|jjdd«d›d|j›dS)NÚ_ú.r<éÿÿÿÿÚ _ext_module)ÚtyperHÚrsplitrG)r5Úclss  r+r”zF2PyTest.module_namers;€ä4‹jˆØ3—>‘>×(Ñ(¨¨aÓ0°Ñ4Ð5°Q°s·|±|°nÀKÐPÐPr7cóì—tjdk(rtjd«t    «t
_t«t
_t«t
_
t«t
_ y)Nr
z)Fails with MinGW64 Gfortran (Issue #9673)) rrrrrNrÌÚ_has_c_compilerrPÚ_has_f77_compilerrSÚ_has_f90_compilerrUÚ_has_fortran_compiler)rÔs r+Ú setup_classzF2PyTest.setup_classwsG€ä <‰<˜7Ò "Ü K‰KÐCÔ DÜ#1Ó#3ŒÔ Ü%5Ó%7ŒÔ"Ü%5Ó%7ŒÔ"Ü)=Ó)?ŒÕ&r7có.—|jy|jxsg}|jr|j|j«t d„|D««}t d„|D««}t d„|D««}|r!|j stjd«|r!|jstjd«|r!|jstjd«|jRt|j|j|j|j|j|j¬«|_|jHt|j|j|j|j|j¬«|_yy)    Nc3óPK—|]}t|«jd«–—Œ y­w)rxN©ÚstrÚendswith©Ú.0r™s  r+ú    <genexpr>z(F2PyTest.setup_method.<locals>.<genexpr>ˆsèø€Ò?°2œ˜B›×(Ñ(¨×.Ñ?ùó‚$&c3óPK—|]}t|«jd«–—Œ y­w)rwNrÝràs  r+râz(F2PyTest.setup_method.<locals>.<genexpr>‰óèø€ÒA°Rœ˜B›×(Ñ(¨×0ÑAùrãc3óPK—|]}t|«jd«–—Œ y­w)ryNrÝràs  r+râz(F2PyTest.setup_method.<locals>.<genexpr>Šrårãz No Fortran 77 compiler availablez No Fortran 90 compiler availablerv)r’rr“r¥r”r¦)Úmoduler¸r•rƒr¥Úanyr×rrrØrÙr¨r’r“r”r£)r5ÚcodesÚ    needs_f77Ú    needs_f90Ú    needs_pyfs     r+Ú setup_methodzF2PyTest.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ð $r7)rGrHrIr•r¸r’rr“r¥rçrÖr×rØÚpropertyr”Ú classmethodrÚrírJr7r+rÌrÌfse„Ø €DØ€GØ€GØ €DØ €DØ €FØ €FØ€OØÐØÐà ñQóðQðñ@óð@ó%r7rÌcó–—ttjj«jj «}|j |ŽSrL)rÚnumpyÚf2pyÚ__file__ÚparentÚresolveÚjoinpath)rlr–s  r+Úgetpathr÷­s5€ä ŒUZ‰Z×  Ñ  Ó!×(Ñ(×0Ñ0Ó2€AØ ˆ1:‰:qˆ>Ðr7c#óÆK—tj«}tj|«    d–—tj|«y#tj|«wxYw­wrL)rrrr†)rÚcurpaths  r+Ú    switchdirrú³s<èø€äh‰h‹j€G܇HHˆT„NðÛ ä
‰ÕøŒ‰Õüs‚*A!­A±A!ÁAÁA!rL)6Ú__doc__r]Úconcurrent.futuresr>Ú
contextlibrrr#rrrÚ    importlibrÚpathlibrrrñÚ numpy._utilsrÚnumpy.f2py._backends._mesonrÚ numpy.testingrrr,rBrCr.rMrFrNrPrSrUrWrbrrórôÚNUMPY_INSTALL_ROOTÚlistrr[r`rfrtr£r¨rªrÊrÌr÷ÚcontextmanagerrúrJr7r+ú<module>rscðñóÛÛÛ Û    Û ÛÛ
ÛÝ#Ýã ã Ý"Ý4ß+ó ð>€ð €÷*ñ*ñ.ÙÓ€GØ ×ÑÔòòòò1ð€ Ø€ à‡<<8ÒÙ˜h›×.Ñ.×5Ñ5×<Ñ<ÐÙÐ*×/Ñ/°
Ó;Ó<€Lò òò    òð2
Ø')°¸ÈòK&ó
ðK&ð\
àØØØØò 5ó
ð5ô6'˜\ô'ó%&÷Z?ñ?òNð  ×Ññóñr7