§
    ÈÁ³gŽ/  ã                   óp  — d Z ddlZddlZddlZddlZddlZddlZ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mZmZ ddlmZ ddlmZ d!d„Zd	Zd
Z G d„ d¦  «        Zes e¦   «         Ze                     ¦   «          d„ Zd„ Zd„ Z d„ Z!da"da#ej$        dk    r8 ee%¦  «        j&        j&        j&        Z' e(e'                     d¦  «        ¦  «        Z)d„ Z*d„ Z+d„ Z,d„ Z-e-g g g dfd„¦   «         Z.e-g g g ddfd„¦   «         Z/ G d„ de¦  «        Z0d!d„Z1 G d„ d¦  «        Z2d„ Z3e	j4        d „ ¦   «         Z5dS )"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)ÚPath)Ú	asunicode)ÚtemppathÚIS_WASM)Úimport_module)ÚMesonBackendc                 ó  — t           j        dk    rt          j        dd¬¦  «         t	          j        ¦   «         }	 t          j                             |d¦  «        }t          |d¦  «        5 }| 
                    d¦  «         | 
                    d| › d	�¦  «         |rX| 
                    | › d
| › d	�¦  «         | 
                    | › d|› d�¦  «         | 
                    d| › d| › d| › d| › d�	¦  «         d d d ¦  «         n# 1 swxY w Y   	 t          j        g d¢d|d¬¦  «        }n+# t          j        $ r t          j        dd¬¦  «         Y nw xY w|j        dk    t          j        |¦  «         S # t          j        |¦  «         w xY w)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         úS/var/www/html/mpstechhub/venv/lib/python3.11/site-packages/numpy/f2py/tests/util.pyÚcheck_languager,      s'  € Ý
„|�wÒÐÝŒÐ@ÐUYÐZÑZÔZÐZÝÔÑÔ€FðÝ”W—\’\ &¨-Ñ8Ô8ˆ
Ý�*˜cÑ"Ô"ð 
	 aØ�GŠGÐ2Ñ3Ô3Ð3Ø�GŠGÐ0 dÐ0Ð0Ð0Ñ1Ô1Ð1Øð Ø—’˜4ÐKÐKÀÐKÐKÐKÑLÔLÐLØ—’˜4Ð?Ð?¨LÐ?Ð?Ð?Ñ@Ô@Ð@Ø—’ð8˜Tð 8ð 8Øð8ð 8Ø04ð8ð 8à#ð8ð 8ð 8ñô ð ð
	ð 
	ð 
	ñ 
	ô 
	ð 
	ð 
	ð 
	ð 
	ð 
	ð 
	øøøð 
	ð 
	ð 
	ð 
	ð	hÝ!”~Ø*Ð*Ð*ØØØ#ð	ñ ô ˆHˆHøõ Ô,ð 	hð 	hð 	hÝŒKÐMÐbfÐgÑgÔgÐgÐgÐgð	høøøàÔ" aÒ'åŒ�fÑÔÐÐø�Œ�fÑÔÐÐøøøsT   »0E1 Á+B	D Ã4E1 Ä DÄE1 ÄDÄE1 ÄD' Ä&E1 Ä'%EÅE1 ÅEÅE1 Å1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                   ó   — e Zd Zd„ Zd„ ZdS )ÚCompilerCheckerc                 ó>   — d| _         d| _        d| _        d| _        d S )NF)Úcompilers_checkedÚhas_cÚhas_f77Úhas_f90©Úselfs    r+   Ú__init__zCompilerChecker.__init__T   s#   € Ø!&ˆÔØˆŒ
ØˆŒØˆŒˆˆó    c                 ó*  — | j         �st          j        dk    sút          j                             ¦   «         5 }|                     t          d¦  «        |                     t          dt          ¦  «        |                     t          dt          ¦  «        g}|d          
                    ¦   «         | _        |d          
                    ¦   «         | _        |d          
                    ¦   «         | _        d d d ¦  «         n# 1 swxY w Y   d| _         d S d S d S )NÚcygwinÚcÚfortranr   é   é   T)r0   r   r   Ú
concurrentÚfuturesÚThreadPoolExecutorÚsubmitr,   Úfortran77_codeÚfortran90_codeÚresultr1   r2   r3   )r5   Úexecutorr?   s      r+   Úcheck_compilerszCompilerChecker.check_compilersZ   s%  € ØÔ&ñ 	*µ´ÀÒ1IÐ1IÝÔ#×6Ò6Ñ8Ô8ð 	3¸Hà—O’O¥N°CÑ8Ô8Ø—O’O¥N°I½~ÑNÔNØ—O’O¥N°I½~ÑNÔNð�ð % QœZ×.Ò.Ñ0Ô0�”
Ø& qœz×0Ò0Ñ2Ô2�”Ø& qœz×0Ò0Ñ2Ô2�”ð	3ð 	3ð 	3ñ 	3ô 	3ð 	3ð 	3ð 	3ð 	3ð 	3ð 	3øøøð 	3ð 	3ð 	3ð 	3ð &*ˆDÔ"Ð"Ð"ð	*ð 	*Ð1IÐ1Is   ·B:C=Ã=DÄDN)Ú__name__Ú
__module__Ú__qualname__r6   rF   © r7   r+   r.   r.   S   s2   € € € € € ðð ð ð*ð *ð *ð *ð *r7   r.   c                  ó   — t           j        S ©N)Úcheckerr1   rJ   r7   r+   Úhas_c_compilerrN   m   s
   € ÝŒ=Ðr7   c                  ó   — t           j        S rL   )rM   r2   rJ   r7   r+   Úhas_f77_compilerrP   p   ó
   € ÝŒ?Ðr7   c                  ó   — t           j        S rL   )rM   r3   rJ   r7   r+   Úhas_f90_compilerrS   s   rQ   r7   c                  ó2   — t           j        ot           j        S rL   )rM   r3   r2   rJ   r7   r+   Úhas_fortran_compilerrU   v   s   € ÝŒOÐ/¥¤Ð0r7   i  r9   z**/*.dllc                  óÞ   — t           �e	 t          j                             t           ¦  «         n# t          $ r Y nw xY w	 t          j        t           ¦  «         n# t          $ r Y nw xY wd a d S d S rL   )Ú_module_dirr   r   ÚremoveÚ
ValueErrorr#   r$   ÚOSErrorrJ   r7   r+   Ú_cleanupr[   †   s�   € åÐð	ÝŒH�OŠO�KÑ(Ô(Ð(Ð(øÝð 	ð 	ð 	ØˆDð	øøøð	ÝŒM�+Ñ&Ô&Ð&Ð&øÝð 	ð 	ð 	ØˆDð	øøøàˆˆˆð Ðs   ‰$. ®
;º;¿A Á
A&Á%A&c                  óæ   — t           €dt          j        ¦   «         a t          j        t
          ¦  «         t           t          j        vr%t          j                             dt           ¦  «         t           S )Nr   )	rW   r   r   ÚatexitÚregisterr[   r   r   ÚinsertrJ   r7   r+   Úget_module_dirr`   ”   sO   € åÐÝÔ&Ñ(Ô(ˆÝŒ�Ñ!Ô!Ð!Ý�cœhÐ&Ð&ÝŒH�OŠO˜A�{Ñ+Ô+Ð+ÝÐr7   c                  ó„   — t          ¦   «          dt          z  } t          dz  a| t          j        v r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   ž   sE   € õ ÑÔÐØ ¥;Ñ.€DÝ�1Ñ€KØ�sŒ{ÐÐåÐBÑCÔCÐCØ€Kr7   c                 ó2   ‡ ‡— i Šˆ ˆfd„}‰ j         |_         |S )Nc                  óº   •— t          | |f¦  «        }|‰vr%	  ‰| i |¤Ž‰|<   n# t          $ r}|‰|<   ‚ d }~ww xY w‰|         }t          |t          ¦  «        r|‚|S rL   )ÚreprÚ	ExceptionÚ
isinstance)ÚaÚkwÚkeyÚeÚretÚfuncÚmemos        €€r+   Úwrapperz_memoize.<locals>.wrapper­   s‰   ø€ Ý�A�r�7‰mŒmˆØ�dˆ?ˆ?ðØ ˜D !˜N r˜N˜N��S‘	�	øÝð ð ð Ø��S‘	Øøøøøðøøøð �3ŒiˆÝ�c�9Ñ%Ô%ð 	ØˆIØˆ
s   ˜$ ¤
9®4´9)rG   )rq   rs   rr   s   ` @r+   Ú_memoizert   ª   s8   øø€ Ø€Dðð ð ð ð ð ð ”}€GÔØ€Nr7   c           
      ó*  — dt           j        ›d�}t          ¦   «         }t          ¦   «         st	          j        d¦  «         g }g }| D ]Õ}	t          j                             |	¦  «        st          d|	z  ¦  «        ‚t          j         	                    |t          j         
                    |	¦  «        ¦  «        }
t          j        |	|
¦  «         |                     |
¦  «         t          j                             |
¦  «        \  }}|dv r|                     |
¦  «         ŒÖ|sJ ‚|€t          ¦   «         }g }d|vrd|vrdg}d	d
|g|z   |z   |z   }|ddgz  }|r	|dg|z   z  }|r	|dg|z   z  }t          j        ¦   «         }	 t          j        |¦  «         t           j        d	|g|z   }t'          j        |t&          j        t&          j        ¬¦  «        }|                     ¦   «         \  }}|j        dk    r*t          d|dd…         ›dt3          |¦  «        ›�¦  «        ‚	 t          j        |¦  «         |D ]}	t          j        |	¦  «         Œn2# t          j        |¦  «         |D ]}	t          j        |	¦  «         Œw xY wt           j        dk    r{t8                               t=          j        t          j         	                    |d                     |¦  «        ¦  «        ¦  «        ¦  «         t'          j         g d¢t8          z   ¦  «         tC          |¦  «        S )zH
    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%s 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: é   ú
r9   z{:s}*)z/usr/bin/rebasez
--databasez--obliviousz	--verbose)"r   r   r`   rU   r   r   r   Úisfilerd   r   Úbasenamer#   ÚcopyfileÚappendÚsplitextrf   ÚgetcwdÚchdirÚ
executabler   ÚPopenÚPIPEÚSTDOUTÚcommunicater"   r   Úunlinkr   Ú_module_listÚextendÚglobÚformatÚ
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¢   Ã   sM  € ð X¥S¤XÐWÐWÐW€DåÑÔ€AåÑ!Ô!ð 5ÝŒÐ3Ñ4Ô4Ð4ð €KØ€LØð 	%ð 	%ˆÝŒw�~Š~˜bÑ!Ô!ð 	8ÝÐ1°BÑ6Ñ7Ô7Ð7ÝŒg�lŠl˜1�bœg×.Ò.¨rÑ2Ô2Ñ3Ô3ˆÝŒ˜˜CÑ Ô Ð Ø×Ò˜3ÑÔÐå”G×$Ò$ SÑ)Ô)‰	ˆˆcØÐ6Ð6Ð6Ø×Ò Ñ$Ô$Ð$øàÐÐÐð ÐÝ*Ñ,Ô,ˆØ€KØ#¨7Ð2Ð2Ð7VÐ^eÐ7eÐ7eà3Ð4ˆØ�t˜[Ð)¨GÑ3°kÑAÀLÑP€IØ�+˜wÐ'Ñ'€IØð &Ø�g�Y Ñ%Ñ%ˆ	Øð &Ø�g�Y Ñ%Ñ%ˆ	õ Œ)‰+Œ+€CðÝ
Œ�‰ŒˆÝŒ~˜t TÐ*¨YÑ6ˆÝÔ˜SÝ$.¤OÝ$.Ô$5ð7ñ 7ô 7ˆð —=’=‘?”?‰ˆˆSØŒ<˜1ÒÐÝ�,Ø # A B B¤  ­°3©¬¨ð 9ñ :ô :ð :ð õ 	Œ�‰Œˆð ð 	ð 	ˆBÝŒI�b‰MŒMˆMˆMð	øõ 	Œ�‰Œˆð ð 	ð 	ˆBÝŒI�b‰MŒMˆMˆMð	øøøõ „|�xÒÐõ 	×ÒÝŒI•b”g—l’l 1 g§n¢n°[Ñ&AÔ&AÑBÔBÑCÔCñ	
ô 	
ð 	
õ 	ÔØIÐIÐIÝññ	
ô 	
ð 	
õ ˜Ñ%Ô%Ð%s   Å=BI	 É	/I8c                 ó  — |€d}t          |¬¦  «        5 }t          |d¦  «        5 }|                     | ¦  «         ddd¦  «         n# 1 swxY w Y   t          |g||||¬¦  «        cddd¦  «         S # 1 swxY w Y   dS )z6
    Compile and import Fortran code using f2py.

    Nrx   )Úsuffixr   ©r‘   r   r’   r“   )r   r   r   r¢   )Úsource_coder‘   r   r’   r¤   r“   r   r)   s           r+   Ú
build_coder§     s  € ð €~ØˆÝ	˜Ð	 Ñ	 Ô	 ð 5 DÝ�$˜‰_Œ_ð 	! Ø�GŠG�KÑ Ô Ð ð	!ð 	!ð 	!ñ 	!ô 	!ð 	!ð 	!ð 	!ð 	!ð 	!ð 	!øøøð 	!ð 	!ð 	!ð 	!å˜T˜FØ$+Ø!%Ø!%Ø(3ð	5ñ 5ô 5ð5ð 5ð 5ð 5ñ 5ô 5ð 5ð 5ð 5ð 5ð 5ð 5øøøð 5ð 5ð 5ð 5ð 5ð 5s3   •A4¦A¼A4ÁA	ÁA4ÁA	ÁA4Á4A8Á;A8c                   ó$   ‡ — e Zd Zˆ fd„Zd„ Zˆ xZS )ÚSimplifiedMesonBackendc                 ó:   •—  t          ¦   «         j        |i |¤Ž d S rL   )Úsuperr6   )r5   ÚargsÚkwargsÚ	__class__s      €r+   r6   zSimplifiedMesonBackend.__init__0  s%   ø€ Ø�‰ŒÔ˜$Ð) &Ð)Ð)Ð)Ð)Ð)r7   c                 ón   — |                       | j        ¦  «         |                      | j        ¦  «         d S rL   )Úwrite_meson_buildÚ	build_dirÚ	run_mesonr4   s    r+   ÚcompilezSimplifiedMesonBackend.compile3  s2   € Ø×Ò˜tœ~Ñ.Ô.Ð.Ø�Š�t”~Ñ&Ô&Ð&Ð&Ð&r7   )rG   rH   rI   r6   r³   Ú__classcell__)r®   s   @r+   r©   r©   /  sG   ø€ € € € € ð*ð *ð *ð *ð *ð'ð 'ð 'ð 'ð 'ð 'ð 'r7   r©   c           	      ó˜  — t          ¦   «         st          j        d¦  «         t          ¦   «         }|€t	          ¦   «         }t          di d|“d| “d|                     dg ¦  «        “d|“d|                     dg ¦  «        “d|                     dg ¦  «        “d	|                     d	g ¦  «        “d
|                     d
g ¦  «        “d|                     dg ¦  «        “d|                     dg ¦  «        “d|                     dg ¦  «        “d|                     dg ¦  «        “d|                     dg ¦  «        “d|                     dg ¦  «        “d|                     dd¦  «        “d|                     di ¦  «        “Ž}|                     ¦   «          t          j	         
                    d|› d|j        › �¦  «         t          |¦  «        S )z1
    Build a module via Meson and import it.
    rv   NÚ
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   )rU   r   r   r`   rf   r©   Úgetr³   r   r   r_   Úmeson_build_dirr   )r�   r“   r­   r±   Úbackends        r+   Úbuild_mesonrÉ   8  s  € õ  Ñ!Ô!ð 5ÝŒÐ3Ñ4Ô4Ð4åÑ Ô €IØÐÝ*Ñ,Ô,ˆõ %ð ð ð Ø�;ðà�ðð —j’j °"Ñ5Ô5Ð5ðð �)ð	ð
 —Z’Z °Ñ3Ô3Ð3ðð —Z’Z °Ñ3Ô3Ð3ðð —*’*˜[¨"Ñ-Ô-Ð-ðð —j’j °"Ñ5Ô5Ð5ðð —Z’Z °Ñ3Ô3Ð3ðð —:’:˜l¨BÑ/Ô/Ð/ðð —j’j °"Ñ5Ô5Ð5ðð —’˜J¨Ñ+Ô+Ð+ðð —:’:˜l¨BÑ/Ô/Ð/ðð —J’J˜}¨bÑ1Ô1Ð1ðð  ŸšÐ$6¸Ñ>Ô>Ð>ðð  —*’*˜[¨"Ñ-Ô-Ð-ð!€Gð& ‡O‚OÑÔÐõ „H‡O‚O�A˜)Ð?Ð? gÔ&=Ð?Ð?Ñ@Ô@Ð@Ý˜Ñ%Ô%Ð%r7   c                   óh   — e Zd ZdZdZg Zg Zg ZdZdZ	dZ
dZdZed„ ¦   «         Zed„ ¦   «         Zd„ ZdS )ÚF2PyTestNrx   c                 óz   — t          | ¦  «        }d|j                             dd¦  «        d         › d|j        › d�S )NÚ_ú.r<   éÿÿÿÿÚ_ext_module)ÚtyperH   ÚrsplitrG   )r5   Úclss     r+   r“   zF2PyTest.module_nameq  s?   € å�4‰jŒjˆØO�3”>×(Ò(¨¨QÑ/Ô/°Ô3ÐOÐO°c´lÐOÐOÐOÐOr7   c                 ó  — t           j        dk    rt          j        d¦  «         t	          ¦   «         t
          _        t          ¦   «         t
          _        t          ¦   «         t
          _
        t          ¦   «         t
          _        d S )Nr
   z)Fails with MinGW64 Gfortran (Issue #9673))r   r   r   r   rN   rË   Ú_has_c_compilerrP   Ú_has_f77_compilerrS   Ú_has_f90_compilerrU   Ú_has_fortran_compiler)rÓ   s    r+   Úsetup_classzF2PyTest.setup_classv  s^   € åŒ<˜7Ò"Ð"ÝŒKÐCÑDÔDÐDÝ#1Ñ#3Ô#3�Ô Ý%5Ñ%7Ô%7�Ô"Ý%5Ñ%7Ô%7�Ô"Ý)=Ñ)?Ô)?�Ô&Ð&Ð&r7   c                 ó²  — | j         �d S | j        r| j        ng }| j        r|                     | j        ¦  «         t          d„ |D ¦   «         ¦  «        }t          d„ |D ¦   «         ¦  «        }t          d„ |D ¦   «         ¦  «        }|r| j        st          j        d¦  «         |r| j	        st          j        d¦  «         |r| j
        st          j        d¦  «         | j        �8t          | j        | j        | j        | j        | j        | j        ¬¦  «        | _         | j        �4t          | j        | j        | j        | j        | j        ¬¦  «        | _         d S d S )	Nc              3   óZ   K  — | ]&}t          |¦  «                             d ¦  «        V — Œ'dS )rx   N©ÚstrÚendswith©Ú.0r˜   s     r+   ú	<genexpr>z(F2PyTest.setup_method.<locals>.<genexpr>‡  s6   è è € Ð?Ð?°2�˜B™œ×(Ò(¨Ñ.Ô.Ð?Ð?Ð?Ð?Ð?Ð?r7   c              3   óZ   K  — | ]&}t          |¦  «                             d ¦  «        V — Œ'dS )rw   NrÜ   rß   s     r+   rá   z(F2PyTest.setup_method.<locals>.<genexpr>ˆ  ó6   è è € ÐAÐA°R�˜B™œ×(Ò(¨Ñ0Ô0ÐAÐAÐAÐAÐAÐAr7   c              3   óZ   K  — | ]&}t          |¦  «                             d ¦  «        V — Œ'dS )ry   NrÜ   rß   s     r+   rá   z(F2PyTest.setup_method.<locals>.<genexpr>‰  rã   r7   z No Fortran 77 compiler availablez No Fortran 90 compiler availablerv   )r‘   r   r’   r¤   r“   r¥   )Úmoduler·   r”   r�   r¤   ÚanyrÖ   r   r   r×   rØ   r§   r‘   r’   r“   r¢   )r5   ÚcodesÚ	needs_f77Ú	needs_f90Ú	needs_pyfs        r+   Úsetup_methodzF2PyTest.setup_method  s�  € ØŒ;Ð"ØˆFà $¤Ð4�”�°"ˆØŒ9ð 	&Ø�LŠL˜œÑ%Ô%Ð%åÐ?Ð?¸Ð?Ñ?Ô?Ñ?Ô?ˆ	ÝÐAÐA¸5ÐAÑAÔAÑAÔAˆ	ÝÐAÐA¸5ÐAÑAÔAÑAÔAˆ	àð 	<˜TÔ3ð 	<ÝŒKÐ:Ñ;Ô;Ð;Øð 	<˜TÔ3ð 	<ÝŒKÐ:Ñ;Ô;Ð;Øð 	9˜TÔ7ð 	9ÝŒKÐ7Ñ8Ô8Ð8ð Œ9Ð Ý$Ø”	ØœØ”YØ”YØ”{Ø Ô,ðñ ô ˆDŒKð Œ<Ð#Ý&Ø”ØœØ”YØ”YØ Ô,ðñ ô ˆDŒKˆKˆKð $Ð#r7   )rG   rH   rI   r”   r·   r‘   r   r’   r¤   rå   rÕ   rÖ   r×   Úpropertyr“   ÚclassmethodrÙ   rë   rJ   r7   r+   rË   rË   e  s‘   € € € € € Ø€DØ€GØ€GØ€DØ€DØ€FØ€FØ€OØÐØÐàðPð Pñ „XðPð ð@ð @ñ „[ð@ð%ð %ð %ð %ð %r7   rË   c                  ó€   — t          t          j        j        ¦  «        j                             ¦   «         } |j        | Ž S rL   )r   ÚnumpyÚf2pyÚ__file__ÚparentÚresolveÚjoinpath)rl   r•   s     r+   Úgetpathrõ   ¬  s1   € å�UŒZÔ Ñ!Ô!Ô(×0Ò0Ñ2Ô2€AØˆ1Œ:�qˆ>Ðr7   c              #   ó¼   K  — t          j        ¦   «         }t          j        | ¦  «         	 d V — t          j        |¦  «         d S # t          j        |¦  «         w xY wrL   )r   r   r   r„   )r   Úcurpaths     r+   Ú	switchdirrø   ²  sX   è è € åŒh‰jŒj€GÝ„HˆT�N„N€NðØˆˆˆå
Œ�ÑÔÐÐÐø�Œ�ÑÔÐÐøøøs   «A ÁArL   )6Ú__doc__r�   r   r   r   r   r#   r]   r   Ú
contextlibrï   Úconcurrent.futuresr>   Úpathlibr   Únumpy._utilsr   Únumpy.testingr   r   Ú	importlibr   Únumpy.f2py._backends._mesonr   r,   rB   rC   r.   rM   rF   rN   rP   rS   rU   rW   rb   r   rñ   rò   ÚNUMPY_INSTALL_ROOTÚlistr‹   r[   r`   rf   rt   r¢   r§   r©   rÉ   rË   rõ   Úcontextmanagerrø   rJ   r7   r+   ú<module>r     s  ððð ð €€€Ø 	€	€	€	Ø 
€
€
€
Ø Ð Ð Ð Ø €€€Ø €€€Ø €€€Ø €€€Ø Ð Ð Ð Ø €€€Ø Ð Ð Ð à Ð Ð Ð Ð Ð Ø "Ð "Ð "Ð "Ð "Ð "Ø +Ð +Ð +Ð +Ð +Ð +Ð +Ð +Ø #Ð #Ð #Ð #Ð #Ð #Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4ðð ð ð ð>€ð€ð*ð *ð *ð *ð *ñ *ô *ð *ð, ð ØˆoÑÔ€GØ×ÒÑÔÐðð ð ðð ð ðð ð ð1ð 1ð 1ð €Ø€à„<�8ÒÐØ˜˜h™œÔ.Ô5Ô<ÐØ�4Ð*×/Ò/°
Ñ;Ô;Ñ<Ô<€Lðð ð ðð ð ð	ð 	ð 	ðð ð ð2 
Ø')°¸Èð L&ð L&ð L&ñ 
„ðL&ð^ 
àØØØØð5ð 5ð 5ñ 
„ð5ð6'ð 'ð 'ð 'ð '˜\ñ 'ô 'ð 'ð%&ð %&ð %&ð %&ðZ?ð ?ð ?ð ?ð ?ñ ?ô ?ð ?ðNð ð ð Ôðð ñ Ôðð ð r7   