§
    ÈÁ³g>?  ã                   óà  — d dl Z d dlZd dlZd dlZd dlmZmZ ddlm	Z	 d dl
mZ d dlZd dlZd dlZ G d„ de	j        ¦  «        Z G d„ d	¦  «        Z G d
„ d¦  «        Z G d„ de	j        ¦  «        Z G d„ de	j        ¦  «        Z G d„ d¦  «        Z G d„ de	j        ¦  «        Z G d„ d¦  «        Z G d„ de	j        ¦  «        Z G d„ de	j        ¦  «        Zej        j         G d„ de	j        ¦  «        ¦   «         Z G d„ d¦  «        Z G d„ de	j        ¦  «        Z G d „ d!e	j        ¦  «        Z G d"„ d#¦  «        Z  G d$„ d%¦  «        Z!ej        j         G d&„ d'e	j        ¦  «        ¦   «         Z"dS )(é    N)ÚmarkinnerspacesÚnameargspatterné   )Úutil)Úcrackfortranc                   ó<   — e Zd Z ej        dddd¦  «        gZd„ ZdS )ÚTestNoSpaceÚtestsÚsrcr   z	gh15035.fc                 ó¢  — t          j        g d¢t           j        ¬¦  «        }t          j        g d¢t           j        ¬¦  «        }| j                             |¦  «         t          j        ||dz   ¦  «        sJ ‚| j                             ||g¦  «         t          j        ||dz   ¦  «        sJ ‚| j                             d¦  «        dk    sJ ‚d S )N©r   é   é   )Údtyper   Ú23ó   2)ÚnpÚarrayÚfloat64ÚmoduleÚsubbÚallcloseÚsubcÚt0)ÚselfÚkÚws      ú`/var/www/html/mpstechhub/venv/lib/python3.11/site-packages/numpy/f2py/tests/test_crackfortran.pyÚtest_modulezTestNoSpace.test_module   sÃ   € ÝŒH�Y�Y�Y¥b¤jÐ1Ñ1Ô1ˆÝŒH�Y�Y�Y¥b¤jÐ1Ñ1Ô1ˆØŒ×Ò˜ÑÔÐÝŒ{˜1˜a !™eÑ$Ô$Ð$Ð$Ð$ØŒ×Ò˜!˜Q˜Ñ Ô Ð ÝŒ{˜1˜a !™eÑ$Ô$Ð$Ð$Ð$ØŒ{�~Š~˜dÑ#Ô# tÒ+Ð+Ð+Ð+Ð+Ð+ó    N)Ú__name__Ú
__module__Ú__qualname__r   ÚgetpathÚsourcesr   © r    r   r	   r	      s?   € € € € € ð ˆtŒ|˜G U¨N¸KÑHÔHÐI€Gð,ð ,ð ,ð ,ð ,r    r	   c                   ó&   — e Zd Zd„ Zd„ Zd„ Zd„ ZdS )ÚTestPublicPrivatec                 óÒ  — t          j        dddd¦  «        }t          j        t          |¦  «        g¦  «        }t	          |¦  «        dk    sJ ‚|d         }d|d         d	         d
         v sJ ‚d|d         d	         d
         vsJ ‚d|d         d         d
         v sJ ‚d|d         d         d
         vsJ ‚d|d         d         d
         vsJ ‚d|d         d         d
         v sJ ‚d S )Nr
   r   r   zprivatemod.f90r   r   ÚprivateÚvarsÚaÚattrspecÚpublicÚbÚseta©r   r$   r   ÚstrÚlen)r   ÚfpathÚmods      r   Útest_defaultPrivatez%TestPublicPrivate.test_defaultPrivate   s  € Ý”˜W e¨^Ð=MÑNÔNˆÝÔ'­¨U©¬¨Ñ5Ô5ˆÝ�3‰xŒx˜1Š}ˆ}ˆ}ˆ}Ø�!ŒfˆØ˜C œK¨Ô,¨ZÔ8Ð8Ð8Ð8Ð8Ø˜s 6œ{¨3Ô/°
Ô;Ð;Ð;Ð;Ð;Ø˜C œK¨Ô,¨ZÔ8Ð8Ð8Ð8Ð8Ø˜s 6œ{¨3Ô/°
Ô;Ð;Ð;Ð;Ð;Ø  F¤¨FÔ 3°JÔ ?Ð?Ð?Ð?Ð?Ø˜3˜vœ; vÔ.¨zÔ:Ð:Ð:Ð:Ð:Ð:Ð:r    c                 ór  — t          j        dddd¦  «        }t          j        t          |¦  «        g¦  «        }t	          |¦  «        dk    sJ ‚|d         }d|d         d	         d
         v sJ ‚d|d         d	         d
         vsJ ‚d|d         d         d
         vsJ ‚d|d         d         d
         v sJ ‚d S )Nr
   r   r   zpublicmod.f90r   r   r*   r+   r,   r-   r.   r0   r1   ©r   Útmp_pathr4   r5   s       r   Útest_defaultPublicz$TestPublicPrivate.test_defaultPublic)   sÍ   € Ý”˜W e¨^¸_ÑMÔMˆÝÔ'­¨U©¬¨Ñ5Ô5ˆÝ�3‰xŒx˜1Š}ˆ}ˆ}ˆ}Ø�!ŒfˆØ˜C œK¨Ô,¨ZÔ8Ð8Ð8Ð8Ð8Ø˜s 6œ{¨3Ô/°
Ô;Ð;Ð;Ð;Ð;Ø  F¤¨FÔ 3°JÔ ?Ð?Ð?Ð?Ð?Ø˜3˜vœ; vÔ.¨zÔ:Ð:Ð:Ð:Ð:Ð:Ð:r    c                 óŽ  — t          j        dddd¦  «        }t          j        t          |¦  «        g¦  «        }t	          |¦  «        dk    sJ ‚|d         d         }t          |d         d	         ¦  «        d
dhk    sJ ‚t          |d         d	         ¦  «        ddhk    sJ ‚t          |d         d	         ¦  «        dhk    sJ ‚d S )Nr
   r   r   zaccesstype.f90r   r   r+   r,   r-   r*   zbind(c)Úb_r.   Úc)r   r$   r   r2   r3   Úset)r   r9   r4   r5   Útts        r   Útest_access_typez"TestPublicPrivate.test_access_type3   sÈ   € Ý”˜W e¨^Ð=MÑNÔNˆÝÔ'­¨U©¬¨Ñ5Ô5ˆÝ�3‰xŒx˜1Š}ˆ}ˆ}ˆ}Ø�ŒV�FŒ^ˆÝ�2�c”7˜:Ô&Ñ'Ô'¨I°yÐ+AÒAÐAÐAÐAÝ�2�d”8˜JÔ'Ñ(Ô(¨X°yÐ,AÒAÐAÐAÐAÝ�2�c”7˜:Ô&Ñ'Ô'¨H¨:Ò5Ð5Ð5Ð5Ð5Ð5r    c                 óÖ   — t          j        dddd¦  «        }t          j        t          |¦  «        g¦  «        }t	          |¦  «        dk    sJ ‚t          j        |¦  «        }d|vsJ ‚d S )Nr
   r   r   zgh23879.f90r   Úbar)r   r$   r   r2   r3   Úcrack2fortran)r   r9   r4   r5   Úpyfs        r   Útest_nowrap_private_proceeduresz1TestPublicPrivate.test_nowrap_private_proceedures<   si   € Ý”˜W e¨^¸]ÑKÔKˆÝÔ'­¨U©¬¨Ñ5Ô5ˆÝ�3‰xŒx˜1Š}ˆ}ˆ}ˆ}ÝÔ(¨Ñ-Ô-ˆØ˜CÐÐÐÐÐÐr    N)r!   r"   r#   r6   r:   r@   rE   r&   r    r   r(   r(      sP   € € € € € ð
;ð 
;ð 
;ð;ð ;ð ;ð6ð 6ð 6ð ð  ð  ð  ð  r    r(   c                   ó   — e Zd Zd„ Zd„ ZdS )ÚTestModuleProcedurec                 óž  — t          j        dddd¦  «        }t          j        t          |¦  «        g¦  «        }t	          |¦  «        dk    sJ ‚|d         }d|v rt	          |d         ¦  «        dk    sJ ‚|d         d         d	         d
k    sJ ‚d|d         d         v sJ ‚|d         d         d         ddgk    sJ ‚|d         d         d	         dk    sJ ‚d|d         d         v sJ ‚|d         d         d         dgk    sJ ‚|d         d         d	         dk    sJ ‚d|d         d         v sJ ‚|d         d         d         ddgk    sJ ‚d S )Nr
   r   r   zoperators.f90r   r   Úbodyé	   Únamezoperator(.item.)ÚimplementedbyÚitem_intÚ	item_realr   zoperator(==)Úitems_are_equalr   zassignment(=)Úget_intÚget_realr1   r8   s       r   Útest_moduleOperatorsz(TestModuleProcedure.test_moduleOperatorsD   sš  € Ý”˜W e¨^¸_ÑMÔMˆÝÔ'­¨U©¬¨Ñ5Ô5ˆÝ�3‰xŒx˜1Š}ˆ}ˆ}ˆ}Ø�!ŒfˆØ˜ˆ}ˆ}¥ S¨¤[Ñ!1Ô!1°QÒ!6Ð!6Ð!6Ð!6Ø�6Œ{˜1Œ~˜fÔ%Ð);Ò;Ð;Ð;Ð;Ø # f¤+¨a¤.Ð0Ð0Ð0Ð0Ø�6Œ{˜1Œ~˜oÔ.Ø˜Ð%ò&ð &ð &ð &à�6Œ{˜1Œ~˜fÔ%¨Ò7Ð7Ð7Ð7Ø # f¤+¨a¤.Ð0Ð0Ð0Ð0Ø�6Œ{˜1Œ~˜oÔ.Ð3DÐ2EÒEÐEÐEÐEØ�6Œ{˜1Œ~˜fÔ%¨Ò8Ð8Ð8Ð8Ø # f¤+¨a¤.Ð0Ð0Ð0Ð0Ø�6Œ{˜1Œ~˜oÔ.Ø˜
Ð#ò$ð $ð $ð $ð $ð $r    c                 óT  — t          j        dddd¦  «        }t          j        t          |¦  «        g¦  «        }t	          |¦  «        dk    sJ ‚|d         }|d         d         d	         d
gk    sJ ‚|d         d         d	         dgk    sJ ‚|d         d         d	         dgk    sJ ‚d S )Nr
   r   r   zpubprivmod.f90r   r   r+   r,   r-   r*   r/   r.   r0   r1   r8   s       r   Útest_notPublicPrivatez)TestModuleProcedure.test_notPublicPrivateV   sµ   € Ý”˜W e¨^Ð=MÑNÔNˆÝÔ'­¨U©¬¨Ñ5Ô5ˆÝ�3‰xŒx˜1Š}ˆ}ˆ}ˆ}Ø�!ŒfˆØ�6Œ{˜3Ô 
Ô+°	¨}Ò<Ð<Ð<Ð<Ø�6Œ{˜3Ô 
Ô+°¨|Ò;Ð;Ð;Ð;Ø�6Œ{˜6Ô" :Ô.°8°,Ò>Ð>Ð>Ð>Ð>Ð>r    N)r!   r"   r#   rR   rT   r&   r    r   rG   rG   C   s2   € € € € € ð$ð $ð $ð$?ð ?ð ?ð ?ð ?r    rG   c                   óB   — e Zd Z ej        dddd¦  «        gZd„ Zd„ ZdS )ÚTestExternalr
   r   r   z	gh17859.fc                 óP   — d„ }| j                              |¦  «        }|dk    sJ ‚d S )Nc                 ó   — | dz   S ©Né{   r&   ©Úxs    r   Úincrz5TestExternal.test_external_as_statement.<locals>.incre   ó   € Ø�s‘7ˆNr    rZ   )r   Úexternal_as_statement©r   r]   Úrs      r   Útest_external_as_statementz'TestExternal.test_external_as_statementd   ó9   € ð	ð 	ð 	ð ŒK×-Ò-¨dÑ3Ô3ˆØ�CŠxˆxˆxˆxˆxˆxr    c                 óP   — d„ }| j                              |¦  «        }|dk    sJ ‚d S )Nc                 ó   — | dz   S rY   r&   r[   s    r   r]   z5TestExternal.test_external_as_attribute.<locals>.incrl   r^   r    rZ   )r   Úexternal_as_attributer`   s      r   Útest_external_as_attributez'TestExternal.test_external_as_attributek   rc   r    N)r!   r"   r#   r   r$   r%   rb   rg   r&   r    r   rV   rV   `   sL   € € € € € àˆtŒ|˜G U¨N¸KÑHÔHÐI€Gðð ð ðð ð ð ð r    rV   c                   ó<   — e Zd Z ej        dddd¦  «        gZd„ ZdS )ÚTestCrackFortranr
   r   r   z
gh2848.f90c                 óL   — | j                              dd¦  «        }|dk    sJ ‚d S )Nr   r   ©r   r   )r   Úgh2848)r   ra   s     r   Útest_gh2848zTestCrackFortran.test_gh2848w   s*   € ØŒK×Ò˜q !Ñ$Ô$ˆØ�FŠ{ˆ{ˆ{ˆ{ˆ{ˆ{r    N)r!   r"   r#   r   r$   r%   rm   r&   r    r   ri   ri   s   s=   € € € € € àˆtŒ|˜G U¨N¸LÑIÔIÐJ€Gðð ð ð ð r    ri   c                   ó&   — e Zd Zd„ Zd„ Zd„ Zd„ ZdS )ÚTestMarkinnerspacesc                 óB   — g d¢}|D ]}t          |¦  «        |k    sJ ‚Œd S )N)za z aza b cz'abcdefghij'©r   )r   Ú	test_listÚis      r   Útest_do_not_touch_normal_spacesz3TestMarkinnerspaces.test_do_not_touch_normal_spaces   sB   € Ø9Ð9Ð9ˆ	Øð 	+ð 	+ˆAÝ" 1Ñ%Ô%¨Ò*Ð*Ð*Ð*Ð*ð	+ð 	+r    c                 óZ   — t          d¦  «        dk    sJ ‚t          d¦  «        dk    sJ ‚d S )Nza 'b c' \' \'za 'b@_@c' \' \'za "b c" \" \"za "b@_@c" \" \"rq   ©r   s    r   Útest_one_relevant_spacez+TestMarkinnerspaces.test_one_relevant_space„   s>   € ÝÐ0Ñ1Ô1Ð5HÒHÐHÐHÐHÝÐ/Ñ0Ô0Ð4FÒFÐFÐFÐFÐFÐFr    c                 óZ   — t          d¦  «        dk    sJ ‚t          d¦  «        dk    sJ ‚d S )Nza 'b c" " d' eza 'b@_@c"@_@"@_@d' eza "b c' ' d" eza "b@_@c'@_@'@_@d" erq   rv   s    r   Útest_ignore_inner_quotesz,TestMarkinnerspaces.test_ignore_inner_quotesˆ   s>   € ÝÐ1Ñ2Ô2Ð6NÒNÐNÐNÐNÝÐ1Ñ2Ô2Ð6NÒNÐNÐNÐNÐNÐNr    c                 óZ   — t          d¦  «        dk    sJ ‚t          d¦  «        dk    sJ ‚d S )Nza 'b c' 'd e'za 'b@_@c' 'd@_@e'za "b c" "d e"za "b@_@c" "d@_@e"rq   rv   s    r   Útest_multiple_relevant_spacesz1TestMarkinnerspaces.test_multiple_relevant_spacesŒ   s=   € Ý˜Ñ/Ô/Ð3FÒFÐFÐFÐFÝÐ/Ñ0Ô0Ð4HÒHÐHÐHÐHÐHÐHr    N)r!   r"   r#   rt   rw   ry   r{   r&   r    r   ro   ro   |   s[   € € € € € ð+ð +ð +ð
Gð Gð GðOð Oð OðIð Ið Ið Ið Ir    ro   c            	       óÂ  — e Zd ZdZdZ ej        d¦  «        Zg d¢ZdgZ	ee	z   Z
dZ ee
¦  «        D ]R\  ZZd„ e                     d¦  «        D ¦   «         Zee                     eed	                     e¦  «        ¬
¦  «        z  ZŒSej                             de
¦  «        ej        j        d„ ¦   «         ¦   «         Zej                             de
¦  «        d„ ¦   «         ZdS )ÚTestDimSpecaÎ  This test suite tests various expressions that are used as dimension
    specifications.

    There exists two usage cases where analyzing dimensions
    specifications are important.

    In the first case, the size of output arrays must be defined based
    on the inputs to a Fortran function. Because Fortran supports
    arbitrary bases for indexing, for instance, `arr(lower:upper)`,
    f2py has to evaluate an expression `upper - lower + 1` where
    `lower` and `upper` are arbitrary expressions of input parameters.
    The evaluation is performed in C, so f2py has to translate Fortran
    expressions to valid C expressions (an alternative approach is
    that a developer specifies the corresponding C expressions in a
    .pyf file).

    In the second case, when user provides an input array with a given
    size but some hidden parameters used in dimensions specifications
    need to be determined based on the input array size. This is a
    harder problem because f2py has to solve the inverse problem: find
    a parameter `p` such that `upper(p) - lower(p) + 1` equals to the
    size of input array. In the case when this equation cannot be
    solved (e.g. because the input array size is wrong), raise an
    error before calling the Fortran function (that otherwise would
    likely crash Python process when the size of input arrays is
    wrong). f2py currently supports this case only when the equation
    is linear with respect to unknown parameter.

    z.f90a
  
      function get_arr_size_{count}(a, n) result (length)
        integer, intent(in) :: n
        integer, dimension({dimspec}), intent(out) :: a
        integer length
        length = size(a)
      end function

      subroutine get_inv_arr_size_{count}(a, n)
        integer :: n
        ! the value of n is computed in f2py wrapper
        !f2py intent(out) n
        integer, dimension({dimspec}), intent(in) :: a
        if (a({first}).gt.0) then
          ! print*, "a=", a
        endif
      end subroutine
    )Únz2*nz2:nzn/2z5 - n/2z3*n:20zn*(n+1):n*(n+5)z2*n, nz2*n:3*n*n+2*nÚ c                 óP   — g | ]#}d |v r|                      d ¦  «        d         nd‘Œ$S )ú:r   Ú1)Úsplit)Ú.0Úds     r   ú
<listcomp>zTestDimSpec.<listcomp>Î   s2   € ÐRÐRÐR¸! 3¨! 8 8�—’˜‘”˜Q”�°ÐRÐRÐRr    ú,z, )ÚcountÚdimspecÚfirstr‰   c                 óª   — | j                              |¦  «        }t          | j        d|› �¦  «        }dD ]} ||¦  «        \  }}|j        |k    sJ ‚Œd S )NÚget_arr_size_©r   r   r   é   é   )Úall_dimspecsÚindexÚgetattrr   Úsize)r   r‰   rˆ   Úget_arr_sizer~   Úszr,   s          r   Útest_array_sizezTestDimSpec.test_array_sizeÕ   so   € ð Ô!×'Ò'¨Ñ0Ô0ˆÝ˜tœ{Ð,C¸EÐ,CÐ,CÑDÔDˆà ð 	 ð 	 ˆAØ �L ‘O”O‰EˆB�Ø”6˜R’<�<�<�<�<ð	 ð 	 r    c                 óF  — | j                              |¦  «        }t          | j        d|› �¦  «        }t          | j        d|› �¦  «        }dD ]S} ||¦  «        \  }}|| j        v r |||¦  «        }n ||¦  «        } ||¦  «        \  }	}
||	k    sJ ||||	f¦   «         ‚ŒTd S )NrŒ   Úget_inv_arr_size_r�   )r�   r‘   r’   r   Únonlinear_dimspecs)r   r‰   rˆ   r”   Úget_inv_arr_sizer~   r•   r,   Ún1Úsz1Ú_s              r   Útest_inv_array_sizezTestDimSpec.test_inv_array_sizeà   sâ   € ð Ô!×'Ò'¨Ñ0Ô0ˆÝ˜tœ{Ð,C¸EÐ,CÐ,CÑDÔDˆÝ" 4¤;Ð0KÀEÐ0KÐ0KÑLÔLÐà ð 	/ð 	/ˆAØ �L ‘O”O‰EˆB�Ø˜$Ô1Ð1Ð1ð &Ð% a¨Ñ+Ô+��ð &Ð% aÑ(Ô(�ð "�\ "Ñ%Ô%‰FˆC�Ø˜’9�9�9˜q " b¨#Ð.‘9”9�9�9ð	/ð 	/r    N)r!   r"   r#   Ú__doc__ÚsuffixÚtextwrapÚdedentÚcode_templateÚlinear_dimspecsr™   r�   ÚcodeÚ	enumeraterˆ   r‰   rƒ   ÚlstÚformatÚjoinÚpytestÚmarkÚparametrizeÚslowr–   rž   r&   r    r   r}   r}   ‘   sG  € € € € € ðð ð< €Fà#�H”Oð %ñ 	ô 	€Mð&ð ð €Oð *Ð*ÐØ"Ð%7Ñ7€Là€DØ#˜) LÑ1Ô1ð 
ð 
‰ˆˆwØRÐR¸w¿}º}ÈSÑ?QÔ?QÐRÑRÔRˆØ�×$Ò$ØØØ—)’)˜C‘.”.ð %ñ 
ô 
ñ 	
ˆˆð „[×Ò˜Y¨Ñ5Ô5Ø„[Ôð ð  ñ Ôñ 6Ô5ð ð „[×Ò˜Y¨Ñ5Ô5ð/ð /ñ 6Ô5ð/ð /ð /r    r}   c                   ó   — e Zd Zd„ ZdS )ÚTestModuleDeclarationc                 óâ   — t          j        dddd¦  «        }t          j        t          |¦  «        g¦  «        }t	          |¦  «        dk    sJ ‚|d         d         d         d	         d
k    sJ ‚d S )Nr
   r   r   zfoo_deps.f90r   r   r+   Úabarú=zbar('abar')r1   r8   s       r   Útest_dependenciesz'TestModuleDeclaration.test_dependenciesù   sk   € Ý”˜W e¨^¸^ÑLÔLˆÝÔ'­¨U©¬¨Ñ5Ô5ˆÝ�3‰xŒx˜1Š}ˆ}ˆ}ˆ}Ø�1Œv�fŒ~˜fÔ% cÔ*¨mÒ;Ð;Ð;Ð;Ð;Ð;r    N)r!   r"   r#   r³   r&   r    r   r¯   r¯   ø   s#   € € € € € ð<ð <ð <ð <ð <r    r¯   c                   ó   — e Zd Zd„ ZdS )ÚTestEvalc                 óÌ   — t           j        } |di ¦  «        dk    sJ ‚ |di ¦  «        dk    sJ ‚ |dt          dd¬¦  «        ¦  «        dk    sJ ‚ |d	i ¦  «        d
k    sJ ‚d S )NÚ123z12 + 3Ú15za + br   r   )r,   r/   Ú3z"123"z'123')r   Ú_eval_scalarÚdict)r   Úeval_scalars     r   Útest_eval_scalarzTestEval.test_eval_scalar  sŽ   € Ý"Ô/ˆàˆ{˜5 "Ñ%Ô%¨Ò.Ð.Ð.Ð.Øˆ{˜8 RÑ(Ô(¨DÒ0Ð0Ð0Ð0Øˆ{˜7¥D¨1° N¡N¤NÑ3Ô3°sÒ:Ð:Ð:Ð:Øˆ{˜7 BÑ'Ô'¨7Ò2Ð2Ð2Ð2Ð2Ð2r    N)r!   r"   r#   r½   r&   r    r   rµ   rµ      s#   € € € € € ð3ð 3ð 3ð 3ð 3r    rµ   c                   óZ   — e Zd Zej                             dg d¢¦  «        d„ ¦   «         ZdS )ÚTestFortranReaderÚencoding)Úasciizutf-8zutf-16zutf-32c                 ó  — |d|› d�z  }|                      d|¬¦  «        5 }|                     d¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        t          |¦  «        g¦  «        }|d         d         dk    sJ ‚d S )	NÚinput_with_z_encoding.f90r   )rÀ   zd
                     subroutine foo()
                     end subroutine foo
                     r   rK   Úfoo)ÚopenÚwriter   r2   )r   r9   rÀ   Úf_pathÚffr5   s         r   Útest_input_encodingz%TestFortranReader.test_input_encoding  sÖ   € ð ÐA¨(ÐAÐAÐAÑAˆØ�[Š[˜ xˆ[Ñ0Ô0ð 	°BØ�HŠHð ñ ô ð ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	õ
 Ô'­¨V©¬¨Ñ6Ô6ˆØ�1Œv�fŒ~ Ò&Ð&Ð&Ð&Ð&Ð&s   ¡AÁAÁ
AN)r!   r"   r#   rª   r«   r¬   rÉ   r&   r    r   r¿   r¿   
  sQ   € € € € € Ø„[×Ò˜ZØCÐCÐCñEô Eð	'ð 	'ñEô Eð	'ð 	'ð 	'r    r¿   c                   ó´   — e Zd Z ej        dddd¦  «        gZej                             e	j         
                    d¦  «        du d¬¦  «        d	„ ¦   «         ZdS )
ÚTestUnicodeCommentr
   r   r   zunicode_comment.f90Úcharset_normalizerNz7test requires charset_normalizer which is not installed)Úreasonc                 ó:   — | j                              d¦  «         d S )Nr   )r   rÄ   rv   s    r   Útest_encoding_commentz(TestUnicodeComment.test_encoding_comment  s   € ð
 	Œ�Š˜ÑÔÐÐÐr    )r!   r"   r#   r   r$   r%   rª   r«   ÚskipifÚ	importlibÚ	find_specrÏ   r&   r    r   rË   rË     s~   € € € € € àˆtŒ|˜G U¨NÐ<QÑRÔRÐS€Gà„[×ÒØ	Œ×	!Ò	!Ð"6Ñ	7Ô	7¸4Ð	?ØHð ñ ô ðð ñ	ô ðð ð r    rË   c                   ó\   — e Zd Zej                             dgg d¢¦  «        d„ ¦   «         ZdS )ÚTestNameArgsPatternBacktrackingÚ	adversary))z
@)@bind@(@)z#@)@bind                         @(@)z@)@bind foo bar baz@(@c                 ó¦  — d}d}d\  }}t          ||¦  «        D ]¶}||z  }t          |¦  «        D ]€}g }	t          |¦  «        D ]R}t          j        ¦   «         }
t          j        |¦  «        }|	                     t          j        ¦   «         |
z
  ¦  «         ŒSt          j        |	¦  «        dk     sJ ‚Œ�|rJ ‚|dz   }t          j        |¦  «        sJ ‚Œ·dS )zPaddress ReDOS vulnerability:
        https://github.com/numpy/numpy/issues/23338é   rŽ   )é   é   gš™™™™™É?z@)@N)ÚrangeÚtimeÚperf_counterr   ÚsearchÚappendr   Úmedian)r   rÕ   Útrials_per_batchÚbatches_per_regexÚ
start_repsÚend_repsÚiiÚrepeated_adversaryr�   Útimesr   ÚmtchÚgood_version_of_adversarys                r   Ú!test_nameargspattern_backtrackingzATestNameArgsPatternBacktracking.test_nameargspattern_backtracking&  s  € ð ÐØÐØ%Ñˆ
�HÝ˜
 HÑ-Ô-ð 	Eð 	EˆBØ!*¨R¡Ðõ Ð,Ñ-Ô-ð .ð .�Ø�ÝÐ/Ñ0Ô0ð ;ð ;�AÝÔ*Ñ,Ô,�BÝ*Ô1Ð2DÑEÔE�DØ—L’L¥Ô!2Ñ!4Ô!4°rÑ!9Ñ:Ô:Ð:Ð:õ ”y Ñ'Ô'¨#Ò-Ð-Ð-Ð-Ð-ØˆOˆOˆOð );¸UÑ(BÐ%Ý"Ô)Ð*CÑDÔDÐDÐDÐDÐDð'	Eð 	Er    N)r!   r"   r#   rª   r«   r¬   ré   r&   r    r   rÔ   rÔ   %  s[   € € € € € Ø„[×ÒØ	ˆð	
ð 	
ð 	
ñô ðEð Eñô ðEð Eð Er    rÔ   c                   ó`   — e Zd Z ej        dddd¦  «        gZej        j        d„ ¦   «         Z	dS )ÚTestFunctionReturnr
   r   r   zgh23598.f90c                 óH   — | j                              dd¦  «        dk    sJ ‚d S )Nr   rŽ   r×   )r   Ú
intproductrv   s    r   Útest_function_rettypez(TestFunctionReturn.test_function_rettypeL  s-   € ð Œ{×%Ò% a¨Ñ+Ô+¨rÒ1Ð1Ð1Ð1Ð1Ð1r    N)
r!   r"   r#   r   r$   r%   rª   r«   r­   rî   r&   r    r   rë   rë   I  sM   € € € € € ØˆtŒ|˜G U¨N¸MÑJÔJÐK€Gà„[Ôð2ð 2ñ Ôð2ð 2ð 2r    rë   c                   ó   — e Zd Zd„ ZdS )ÚTestFortranGroupCountersc                 ó¸   — t          j        dddd¦  «        }	 t          j        t          |¦  «        g¦  «         d S # t          $ r}J d|› �¦   «         ‚d }~ww xY w)Nr
   r   r   z	gh23533.fFz0'crackfortran.crackfortran' raised an exception )r   r$   r   r2   Ú	Exception)r   r4   Úexcs      r   Útest_end_if_commentz,TestFortranGroupCounters.test_end_if_commentS  sv   € å”˜W e¨^¸[ÑIÔIˆð	SÝÔ%¥s¨5¡z¤z lÑ3Ô3Ð3Ð3Ð3øÝð 	Sð 	Sð 	SØRÐRÈSÐRÐRÑRÔRÐRøøøøð	Søøøs   ™"= ½
AÁAÁAN)r!   r"   r#   rô   r&   r    r   rð   rð   R  s(   € € € € € ðSð Sð Sð Sð Sr    rð   c                   ó   — e Zd Zd„ ZdS )ÚTestF77CommonBlockReaderc                 ó"  — t          j        dddd¦  «        }t          j        t	          j        ¦   «         ¦  «        5 }t          j        t          |¦  «        g¦  «        }d d d ¦  «         n# 1 swxY w Y   d|                     ¦   «         vsJ ‚d S )Nr
   r   r   zgh22648.pyfÚMismatch)	r   r$   Ú
contextlibÚredirect_stdoutÚioÚStringIOr   r2   Úgetvalue)r   r9   r4   Ústdout_f2pyr5   s        r   Útest_gh22648z%TestF77CommonBlockReader.test_gh22648]  s»   € Ý”˜W e¨^¸]ÑKÔKˆÝÔ'­¬©¬Ñ6Ô6ð 	:¸+ÝÔ+­S°©Z¬Z¨LÑ9Ô9ˆCð	:ð 	:ð 	:ñ 	:ô 	:ð 	:ð 	:ð 	:ð 	:ð 	:ð 	:øøøð 	:ð 	:ð 	:ð 	:à ×!5Ò!5Ñ!7Ô!7Ð7Ð7Ð7Ð7Ð7Ð7s   ½#A,Á,A0Á3A0N)r!   r"   r#   rÿ   r&   r    r   rö   rö   \  s#   € € € € € ð8ð 8ð 8ð 8ð 8r    rö   c                   ó,   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚTestParamEvalc                 óÎ   — d}t          t          j        t          j        t          j        ¬¦  «        }ddddœdddd	œd
œ}d}t          j        ||||¬¦  «        }|dddœk    sJ ‚d S )Nz(/3.14, 4./)©ÚkindÚselected_int_kindÚselected_real_kindé   r   r�   rk   r   r   r   )ÚdpÚintparamarrayÚnestedz(2)©r‰   g…ëQ¸	@g      @©r»   r   Ú
_kind_funcÚ_selected_int_kind_funcÚ_selected_real_kind_funcÚ
param_eval©r   ÚvÚg_paramsÚparamsr‰   Úrets         r   Útest_param_eval_nestedz$TestParamEval.test_param_eval_nestede  s’   € ØˆÝ�\Ô4Ý".Ô"FÝ#/Ô#HðJñ Jô Jˆð °°a¨L¨LØ ! a¨AÐ.Ð.ð0ð 0ˆàˆÝÔ% a¨°6À7ÐKÑKÔKˆØ˜$ 3Ð'Ð'Ò'Ð'Ð'Ð'Ð'Ð'r    c                 óº   — d}t          t          j        t          j        t          j        ¬¦  «        }i }d}t          j        ||||¬¦  «        }|ddddœk    sJ ‚d S )	Nz(/ 6, 3, 1 /)r  z(-1:1)r  é   r   r   )éÿÿÿÿr   r   r  r  s         r   Ú!test_param_eval_nonstandard_rangez/TestParamEval.test_param_eval_nonstandard_rangep  su   € ØˆÝ�\Ô4Ý".Ô"FÝ#/Ô#HðJñ Jô Jˆð ˆØˆÝÔ% a¨°6À7ÐKÑKÔKˆØ˜1  qÐ)Ð)Ò)Ð)Ð)Ð)Ð)Ð)r    c                 óÄ   — d}t          t          j        t          j        t          j        ¬¦  «        }i }d}t          j        t          t          j        ||||¬¦  «         d S )NÚ6r  r   r  ©	r»   r   r  r  r  rª   ÚraisesÚ
ValueErrorr  ©r   r  r  r  r‰   s        r   Útest_param_eval_empty_rangez)TestParamEval.test_param_eval_empty_rangez  sn   € ØˆÝ�\Ô4Ý".Ô"FÝ#/Ô#HðJñ Jô Jˆð ˆØˆÝŒ•j¥,Ô"9¸1¸hÈØ%ð	'ñ 	'ô 	'ð 	'ð 	'ð 	'r    c                 ó®   — d}t          t          j        t          j        t          j        ¬¦  «        }i }t          j        |||d ¬¦  «        }|dk    sJ ‚d S )Nz3.14_dpr  r  r  )r   r  r  r  r  s        r   Útest_param_eval_non_array_paramz-TestParamEval.test_param_eval_non_array_param„  sf   € ØˆÝ�\Ô4Ý".Ô"FÝ#/Ô#HðJñ Jô Jˆð ˆÝÔ% a¨°6À4ÐHÑHÔHˆØ�iÒÐÐÐÐÐr    c                 óÄ   — d}t          t          j        t          j        t          j        ¬¦  «        }i }d}t          j        t          t          j        ||||¬¦  «         d S )Nz*reshape((/ (i, i=1, 250) /), (/5, 10, 5/))r  z(0:4, 3:12, 5)r  r  r   s        r   Útest_param_eval_too_many_dimsz+TestParamEval.test_param_eval_too_many_dims�  sn   € Ø8ˆÝ�\Ô4Ý".Ô"FÝ#/Ô#HðJñ Jô Jˆð ˆØ"ˆÝŒ•j¥,Ô"9¸1¸hÈØ%ð	'ñ 	'ô 	'ð 	'ð 	'ð 	'r    N)r!   r"   r#   r  r  r!  r#  r%  r&   r    r   r  r  c  s_   € € € € € ð	(ð 	(ð 	(ð*ð *ð *ð'ð 'ð 'ð ð  ð  ð'ð 'ð 'ð 'ð 'r    r  c                   óB   — e Zd Z ej        dddd¦  «        gZdgZd„ ZdS )ÚTestLowerF2PYDirectiver
   r   r   zgh27697.f90z--lowerc                 ó¬   — t          j        t          d¬¦  «        5 }| j        j                             d¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nzaborting directly)Úmatch)rª   r  r  r   ÚutilsÚmy_abort)r   ró   s     r   Útest_no_lower_failz)TestLowerF2PYDirective.test_no_lower_failœ  s“   € ÝŒ]�:Ð-@ÐAÑAÔAð 	<ÀSØŒKÔ×&Ò&Ð':Ñ;Ô;Ð;ð	<ð 	<ð 	<ñ 	<ô 	<ð 	<ð 	<ð 	<ð 	<ð 	<ð 	<ð 	<øøøð 	<ð 	<ð 	<ð 	<ð 	<ð 	<s   œ A	Á	AÁAN)r!   r"   r#   r   r$   r%   Úoptionsr,  r&   r    r   r'  r'  —  sD   € € € € € àˆtŒ|˜G U¨N¸MÑJÔJÐK€GØˆk€Gð<ð <ð <ð <ð <r    r'  )#rÑ   rÛ   rª   Únumpyr   Únumpy.f2py.crackfortranr   r   r   r   Ú
numpy.f2pyr   r¡   rù   rû   ÚF2PyTestr	   r(   rG   rV   ri   ro   r}   r¯   rµ   r¿   r«   r­   rË   rÔ   rë   rð   rö   r  r'  r&   r    r   ú<module>r2     s«  ðØ Ð Ð Ð Ø €€€Ø €€€Ø Ð Ð Ð Ø DÐ DÐ DÐ DÐ DÐ DÐ DÐ DØ Ð Ð Ð Ð Ð Ø #Ð #Ð #Ð #Ð #Ð #Ø €€€Ø Ð Ð Ð Ø 	€	€	€	ð,ð ,ð ,ð ,ð ,�$”-ñ ,ô ,ð ,ð% ð % ð % ð % ð % ñ % ô % ð % ðN?ð ?ð ?ð ?ð ?ñ ?ô ?ð ?ð:ð ð ð ð �4”=ñ ô ð ð&ð ð ð ð �t”}ñ ô ð ðIð Ið Ið Ið Iñ Iô Ið Ið*d/ð d/ð d/ð d/ð d/�$”-ñ d/ô d/ð d/ðN<ð <ð <ð <ð <ñ <ô <ð <ð3ð 3ð 3ð 3ð 3ˆtŒ}ñ 3ô 3ð 3ð'ð 'ð 'ð 'ð '˜œñ 'ô 'ð 'ð „Ôðð ð ð ð ˜œñ ô ñ Ôðð"Eð "Eð "Eð "Eð "Eñ "Eô "Eð "EðH2ð 2ð 2ð 2ð 2˜œñ 2ô 2ð 2ðSð Sð Sð Sð S˜tœ}ñ Sô Sð Sð8ð 8ð 8ð 8ð 8ñ 8ô 8ð 8ð2'ð 2'ð 2'ð 2'ð 2'ñ 2'ô 2'ð 2'ðh „Ôð<ð <ð <ð <ð <˜Tœ]ñ <ô <ñ Ôð<ð <ð <r    