Ë
    ›2Úi�4  ã                   óf  — 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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 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 y)$é    N)ÚmarkinnerspacesÚnameargspatterné   )Úutil)Úcrackfortranc                   ó>   — e Zd Z ej                  dddd«      gZd„ Zy)ÚTestNoSpaceÚtestsÚsrcr   z	gh15035.fc                 ó¼  — t        j                  g d¢t         j                  ¬«      }t        j                  g d¢t         j                  ¬«      }| j                  j	                  |«       t        j
                  ||dz   «      sJ ‚| j                  j                  ||g«       t        j
                  ||dz   «      sJ ‚| j                  j                  d«      dk(  sJ ‚y )N)r   é   é   )Údtyper   Ú23ó   2)ÚnpÚarrayÚfloat64ÚmoduleÚsubbÚallcloseÚsubcÚt0)ÚselfÚkÚws      úY/var/www/html/acx/venv/lib/python3.12/site-packages/numpy/f2py/tests/test_crackfortran.pyÚtest_modulezTestNoSpace.test_module   s�   € Ü�H‰H’Y¤b§j¡jÔ1ˆÜ�H‰H’Y¤b§j¡jÔ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ÐI€Gó,r   r	   c                   ó$   — e Zd Zd„ Zd„ Zd„ Zd„ Zy)ÚTestPublicPrivatec                 óP  — 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 ‚y )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ˆÜ×'Ñ'¬¨U«¨Ó5ˆÜ�3‹x˜1Š}Ðˆ}Ø�!‰fˆØ˜C ™K¨Ñ,¨ZÑ8Ñ8Ð8Ð8Ø˜s 6™{¨3Ñ/°
Ñ;Ñ;Ð;Ð;Ø˜C ™K¨Ñ,¨ZÑ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|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 ‚y )Nr
   r   r   zpublicmod.f90r   r   r)   r*   r+   r,   r-   r/   r0   ©r   Útmp_pathr3   r4   s       r   Útest_defaultPublicz$TestPublicPrivate.test_defaultPublic+   sµ   € Ü—‘˜W e¨^¸_ÓMˆÜ×'Ñ'¬¨U«¨Ó5ˆÜ�3‹x˜1Š}Ðˆ}Ø�!‰fˆØ˜C ™K¨Ñ,¨ZÑ8Ñ8Ð8Ð8Ø˜s 6™{¨3Ñ/°
Ñ;Ñ;Ð;Ð;Ø  F¡¨FÑ 3°JÑ ?Ñ?Ð?Ð?Ø˜3˜v™; vÑ.¨zÑ:Ñ:Ð:Ñ:r   c                 ó0  — 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 ‚y )Nr
   r   r   zaccesstype.f90r   r   r*   r+   r,   r)   zbind(c)Úb_r-   Úc)r   r#   r   r1   r2   Úset)r   r8   r3   r4   Útts        r   Útest_access_typez"TestPublicPrivate.test_access_type5   sª   € Ü—‘˜W e¨^Ð=MÓNˆÜ×'Ñ'¬¨U«¨Ó5ˆÜ�3‹x˜1Š}Ðˆ}Ø�‰V�F‰^ˆÜ�2�c‘7˜:Ñ&Ó'¨I°yÐ+AÒAÐAÐAÜ�2�d‘8˜JÑ'Ó(¨X°yÐ,AÒAÐAÐAÜ�2�c‘7˜:Ñ&Ó'¨H¨:Ò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 ‚y )Nr
   r   r   zgh23879.f90r   Úbar)r   r#   r   r1   r2   Úcrack2fortran)r   r8   r3   r4   Úpyfs        r   Útest_nowrap_private_proceeduresz1TestPublicPrivate.test_nowrap_private_proceedures>   sZ   € Ü—‘˜W e¨^¸]ÓKˆÜ×'Ñ'¬¨U«¨Ó5ˆÜ�3‹x˜1Š}Ðˆ}Ü×(Ñ(¨Ó-ˆØ˜CÑÐÑr   N)r    r!   r"   r5   r9   r?   rD   r%   r   r   r'   r'      s   „ ò
;ò;ò6ó r   r'   c                   ó   — e Zd Zd„ Zd„ Zy)Ú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 ‚y )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_realr0   r7   s       r   Útest_moduleOperatorsz(TestModuleProcedure.test_moduleOperatorsF   sc  € Ü—‘˜W e¨^¸_ÓMˆÜ×'Ñ'¬¨U«¨Ó5ˆÜ�3‹x˜1Š}Ðˆ}Ø�!‰fˆØ˜‰}¤ S¨¡[Ó!1°QÒ!6Ð6Ð6Ø�6‰{˜1‰~˜fÑ%Ð);Ò;Ð;Ð;Ø # f¡+¨a¡.Ñ0Ð0Ð0Ø�6‰{˜1‰~˜oÑ.Ø˜Ð%ò&ð 	&ð &à�6‰{˜1‰~˜fÑ%¨Ò7Ð7Ð7Ø # f¡+¨a¡.Ñ0Ð0Ð0Ø�6‰{˜1‰~˜oÑ.Ð3DÐ2EÒEÐEÐEØ�6‰{˜1‰~˜fÑ%¨Ò8Ð8Ð8Ø # f¡+¨a¡.Ñ0Ð0Ð0Ø�6‰{˜1‰~˜oÑ.Ø˜
Ð#ò$ð 	$ñ $r   c                 ó  — 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 ‚y )Nr
   r   r   zpubprivmod.f90r   r   r*   r+   r,   r)   r.   r-   r/   r0   r7   s       r   Útest_notPublicPrivatez)TestModuleProcedure.test_notPublicPrivateX   s    € Ü—‘˜W e¨^Ð=MÓNˆÜ×'Ñ'¬¨U«¨Ó5ˆÜ�3‹x˜1Š}Ðˆ}Ø�!‰fˆØ�6‰{˜3Ñ 
Ñ+°	¨}Ò<Ð<Ð<Ø�6‰{˜3Ñ 
Ñ+°¨|Ò;Ð;Ð;Ø�6‰{˜6Ñ" :Ñ.°8°,Ò>Ð>Ñ>r   N)r    r!   r"   rQ   rS   r%   r   r   rF   rF   E   s   „ ò$ó$?r   rF   c                   óD   — e Zd Z ej                  dddd«      gZd„ Zd„ Zy)ÚTestExternalr
   r   r   z	gh17859.fc                 óN   — d„ }| j                   j                  |«      }|dk(  sJ ‚y )Nc                 ó   — | dz   S ©Né{   r%   ©Úxs    r   Úincrz5TestExternal.test_external_as_statement.<locals>.incrg   ó   € Ø�s‘7ˆNr   rY   )r   Úexternal_as_statement©r   r\   Úrs      r   Útest_external_as_statementz'TestExternal.test_external_as_statementf   ó(   € ò	ð �K‰K×-Ñ-¨dÓ3ˆØ�CŠxˆ‰xr   c                 óN   — d„ }| j                   j                  |«      }|dk(  sJ ‚y )Nc                 ó   — | dz   S rX   r%   rZ   s    r   r\   z5TestExternal.test_external_as_attribute.<locals>.incrn   r]   r   rY   )r   Úexternal_as_attributer_   s      r   Útest_external_as_attributez'TestExternal.test_external_as_attributem   rb   r   N)r    r!   r"   r   r#   r$   ra   rf   r%   r   r   rU   rU   b   s%   „ àˆt�|‰|˜G U¨N¸KÓHÐI€Gòór   rU   c                   ó>   — e Zd Z ej                  dddd«      gZd„ Zy)ÚTestCrackFortranr
   r   r   z
gh2848.f90c                 óJ   — | j                   j                  dd«      }|dk(  sJ ‚y )Nr   r   )r   r   )r   Úgh2848)r   r`   s     r   Útest_gh2848zTestCrackFortran.test_gh2848y   s$   € Ø�K‰K×Ñ˜q !Ó$ˆØ�FŠ{Ð‰{r   N)r    r!   r"   r   r#   r$   rk   r%   r   r   rh   rh   u   s    „ àˆt�|‰|˜G U¨N¸LÓIÐJ€Gór   rh   c                   ó$   — e Zd Zd„ Zd„ Zd„ Zd„ Zy)ÚTestMarkinnerspacesc                 ó:   — g d¢}|D ]  }t        |«      |k(  rŒJ ‚ y )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�   s)   € Ú9ˆ	Øò 	+ˆAÜ" 1Ó%¨Ó*Ð*Ð*ñ	+r   c                 óD   — t        d«      dk(  sJ ‚t        d«      dk(  sJ ‚y )Nza 'b c' \' \'za 'b@_@c' \' \'za "b c" \" \"za "b@_@c" \" \"ro   ©r   s    r   Útest_one_relevant_spacez+TestMarkinnerspaces.test_one_relevant_space†   s,   € ÜÐ0Ó1Ð5HÒHÐHÐHÜÐ/Ó0Ð4FÒFÐFÑFr   c                 óD   — t        d«      dk(  sJ ‚t        d«      dk(  sJ ‚y )Nza 'b c" " d' eza 'b@_@c"@_@"@_@d' eza "b c' ' d" eza "b@_@c'@_@'@_@d" ero   rt   s    r   Útest_ignore_inner_quotesz,TestMarkinnerspaces.test_ignore_inner_quotesŠ   s,   € ÜÐ1Ó2Ð6NÒNÐNÐNÜÐ1Ó2Ð6NÒNÐNÑNr   c                 óD   — t        d«      dk(  sJ ‚t        d«      dk(  sJ ‚y )Nza 'b c' 'd e'za 'b@_@c' 'd@_@e'za "b c" "d e"za "b@_@c" "d@_@e"ro   rt   s    r   Útest_multiple_relevant_spacesz1TestMarkinnerspaces.test_multiple_relevant_spacesŽ   s+   € Ü˜Ó/Ð3FÒFÐFÐFÜÐ/Ó0Ð4HÒHÐHÑHr   N)r    r!   r"   rr   ru   rw   ry   r%   r   r   rm   rm   ~   s   „ ò+ò
GòOóIr   rm   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 ]d  \  ZZej                  d«      D � �cg c]  }d|v r|j                  d«      d	   nd
‘Œ c}} Zeej#                  eedj%                  e«      ¬«      z  ZŒf ej(                  j+                  de
«      d„ «       Zej(                  j+                  de
«      d„ «       Zyc c}} w )Ú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
      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Ú ú,ú:r   Ú1z, )ÚcountÚdimspecÚfirstr‚   c                 ó²   — | j                   j                  |«      }t        | j                  d|› �«      }dD ]  } ||«      \  }}|j                  |k(  rŒJ ‚ y )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Ô   s]   € ð ×!Ñ!×'Ñ'¨Ó0ˆÜ˜tŸ{™{¨m¸E¸7Ð,CÓDˆà ò 	 ˆAÙ  “O‰EˆB�Ø—6‘6˜R“<Ð�<ñ	 r   c                 ó8  — | j                   j                  |«      }t        | j                  d|› �«      }t        | j                  d|› �«      }dD ]H  } ||«      \  }}|| j                  v r
 |||«      }n ||«      } ||«      \  }	}
||	k(  rŒ?J ||||	f«       ‚ y )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ˆÜ˜tŸ{™{¨m¸E¸7Ð,CÓDˆÜ" 4§;¡;Ð2CÀEÀ7Ð0KÓLÐà ò 	/ˆAÙ  “O‰EˆB�Ø˜$×1Ñ1Ñ1ñ & a¨Ó+‘ñ & aÓ(�ñ " "Ó%‰FˆC�Ø˜“9Ð.˜q " b¨#Ð.Ó.�9ñ	/r   N)r    r!   r"   Ú__doc__ÚsuffixÚtextwrapÚdedentÚcode_templateÚlinear_dimspecsr’   r‰   ÚcodeÚ	enumerater�   r‚   ÚsplitÚlstÚformatÚjoinÚpytestÚmarkÚparametrizer�   r—   )Ú.0Úds   00r   r{   r{   “   s
  „ ñð< €Fà#�H—O‘Oð %ó 	€Mò €Oð *Ð*ÐØ"Ð%7Ñ7€Là€DÙ# LÓ1ò 
‰ˆˆwØ?F¿}¹}ÈSÓ?Q×R¸! 3¨!¡8�—‘˜“˜Q’°Ñ4ÓRˆØ�×$Ñ$ØØØ—)‘)˜C“.ð %ó 
ñ 	
‰ð
ð ‡[�[×Ñ˜Y¨Ó5ñ ó 6ð ð ‡[�[×Ñ˜Y¨Ó5ñ/ó 6ñ/ùó% Ss   Á!Cr{   c                   ó   — e Zd Zd„ Zy)ÚTestModuleDeclarationc                 ó¸   — t        j                  dddd«      }t        j                  t        |«      g«      }t	        |«      dk(  sJ ‚|d   d   d   d	   d
k(  sJ ‚y )Nr
   r   r   zfoo_deps.f90r   r   r*   Úabarú=zbar('abar')r0   r7   s       r   Útest_dependenciesz'TestModuleDeclaration.test_dependencies÷   s\   € Ü—‘˜W e¨^¸^ÓLˆÜ×'Ñ'¬¨U«¨Ó5ˆÜ�3‹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y)Ú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 ‚y )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ÿ   sg   € Ü"×/Ñ/ˆá˜5 "Ó%¨Ò.Ð.Ð.Ù˜8 RÓ(¨DÒ0Ð0Ð0Ù˜7¤D¨1°¤NÓ3°sÒ:Ð:Ð:Ù˜7 BÓ'¨7Ò2Ð2Ñ2r   N)r    r!   r"   r¸   r%   r   r   r°   r°   þ   s   „ ó3r   r°   c                   óT   — e Zd Zej                  j                  dg d¢«      d„ «       Zy)ÚTestFortranReaderÚencoding)Úasciizutf-8zutf-16zutf-32c                 óà   — |d|› d�z  }|j                  d|¬«      5 }|j                  d«       d d d «       t        j                  t        |«      g«      }|d   d   dk(  sJ ‚y # 1 sw Y   Œ6xY w)	NÚinput_with_z_encoding.f90r   )r»   zd
                     subroutine foo()
                     end subroutine foo
                     r   rJ   Úfoo)ÚopenÚwriter   r1   )r   r8   r»   Úf_pathÚffr4   s         r   Útest_input_encodingz%TestFortranReader.test_input_encoding	  s}   € ð ˜k¨(¨°=ÐAÑAˆØ�[‰[˜ xˆ[Ó0ð 	°BØ�H‰Hð ô ÷	ô
 ×'Ñ'¬¨V«¨Ó6ˆØ�1‰v�f‰~ Ò&Ð&Ñ&÷	ð 	ús   �A$Á$A-N)r    r!   r"   r¤   r¥   r¦   rÄ   r%   r   r   rº   rº     s*   „ Ø‡[�[×Ñ˜ZÚCóEñ	'óEñ	'r   rº   c                   ó´   — e Zd Z ej                  dddd«      gZej                  j                  e	j                  j                  d«      du d¬«      d	„ «       Zy)
ÚTestUnicodeCommentr
   r   r   zunicode_comment.f90Úcharset_normalizerNz7test requires charset_normalizer which is not installed)Úreasonc                 ó:   — | j                   j                  d«       y )Nr   )r   r¿   rt   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ÐS€Gà‡[�[×ÑØ	�‰×	!Ñ	!Ð"6Ó	7¸4Ð	?ØHð ó ñó	ñr   rÆ   c                   óV   — e Zd Zej                  j                  dgg d¢«      d„ «       Zy)ÚTestNameArgsPatternBacktrackingÚ	adversary))z
@)@bind@(@)z#@)@bind                         @(@)z@)@bind foo bar baz@(@c                 ó˜  — d}d}d\  }}t        ||«      D ]²  }||z  }t        |«      D ]}  }g }	t        |«      D ]Q  }t        j                  «       }
t        j                  |«      }|	j                  t        j                  «       |
z
  «       ŒS t        j                  |	«      dk  rŒ}J ‚ rJ ‚|dz   }t        j                  |«      rŒ²J ‚ y)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ˆBØ!*¨R¡Ðô Ð,Ó-ò .�Ø�ÜÐ/Ó0ò ;�AÜ×*Ñ*Ó,�BÜ*×1Ñ1Ð2DÓE�DØ—L‘L¤×!2Ñ!2Ó!4°rÑ!9Õ:ð;ô —y‘y Ó'¨#Ó-Ð-Ð-ð.ñ ˆO�8ð );¸UÑ(BÐ%Ü"×)Ñ)Ð*CÕDÐDÐDñ'	Er   N)r    r!   r"   r¤   r¥   r¦   rä   r%   r   r   rÏ   rÏ   "  s/   „ Ø‡[�[×ÑØ	ˆò	
óñEóñEr   rÏ   c                   ó>   — e Zd Z ej                  dddd«      gZd„ Zy)ÚTestFunctionReturnr
   r   r   zgh23598.f90c                 óF   — | j                   j                  dd«      dk(  sJ ‚y )Nr   r‡   rÒ   )r   Ú
intproductrt   s    r   Útest_function_rettypez(TestFunctionReturn.test_function_rettypeJ  s!   € à�{‰{×%Ñ% a¨Ó+¨rÒ1Ð1Ñ1r   N)r    r!   r"   r   r#   r$   ré   r%   r   r   ræ   ræ   G  s    „ Øˆt�|‰|˜G U¨N¸MÓJÐK€Gó2r   ræ   c                   ó   — e Zd Zd„ Zy)ÚTestFortranGroupCountersc                 óª   — t        j                  dddd«      }	 t        j                  t        |«      g«       y # t        $ r}J d|› �«       ‚d }~ww xY w)Nr
   r   r   z	gh23533.fz0'crackfortran.crackfortran' raised an exception )r   r#   r   r1   Ú	Exception)r   r3   Úexcs      r   Útest_end_if_commentz,TestFortranGroupCounters.test_end_if_commentP  sT   € ä—‘˜W e¨^¸[ÓIˆð	SÜ×%Ñ%¤s¨5£z lÕ3øÜò 	SØRÐLÈSÈEÐRÓR�5ûð	Sús   š: º	AÁ
AÁAN)r    r!   r"   rï   r%   r   r   rë   rë   O  s   „ óSr   rë   c                   ó   — e Zd Zd„ Zy)ÚTestF77CommonBlockReaderc                 ó  — t        j                  dddd«      }t        j                  t	        j
                  «       «      5 }t        j                  t        |«      g«      }d d d «       dj                  «       vsJ ‚y # 1 sw Y   ŒxY w)Nr
   r   r   zgh22648.pyfÚMismatch)	r   r#   Ú
contextlibÚredirect_stdoutÚioÚStringIOr   r1   Úgetvalue)r   r8   r3   Ústdout_f2pyr4   s        r   Útest_gh22648z%TestF77CommonBlockReader.test_gh22648Z  sn   € Ü—‘˜W e¨^¸]ÓKˆÜ×'Ñ'¬¯©«Ó6ð 	:¸+Ü×+Ñ+¬S°«Z¨LÓ9ˆC÷	:à ×!5Ñ!5Ó!7Ñ7Ð7Ñ7÷	:ð 	:ús   Á  A=Á=BN)r    r!   r"   rú   r%   r   r   rñ   rñ   Y  s   „ ó8r   rñ   )!rÌ   ÚcodecsrÖ   Úunicodedatar¤   Únumpyr   Únumpy.f2py.crackfortranr   r   r}   r   Ú
numpy.f2pyr   rš   rô   rö   ÚF2PyTestr	   r'   rF   rU   rh   rm   r{   rª   r°   rº   rÆ   rÏ   ræ   rë   rñ   r%   r   r   ú<module>r     s   ðÛ Û Û Û Û Û ß DÝ Ý #Û Û Û 	ô,�$—-‘-ô ,÷% ñ % ÷N?ñ ?ô:�4—=‘=ô ô&�t—}‘}ô ÷Iñ Iô*`/�$—-‘-ô `/÷F<ñ <ô3ˆt�}‰}ô 3ô'˜Ÿ™ô 'ô˜Ÿ™ô ÷"Eñ "EôJ2˜Ÿ™ô 2ôS˜tŸ}™}ô S÷8ò 8r   