a
    hÝEb¢  ã                   @   s¤   d Z g d¢ZddlZddlZddlZddlmZ ddlmZ ejZej	Z	ddd„Z
dd„ Zejdd… dkr~dd„ Zdd„ Zn"ddlmZ ddlmZ eeƒZ[dS )z(Fortran to Python Interface Generator.

)Úrun_mainÚcompileÚget_includeé    Né   )Úf2py2e)ÚdiagnoseÚuntitledÚ Tú.fFc              	   C   sb  ddl }ddl}|du r4|j|d�\}	}
t |	¡ n|}
t| tƒsLt| dƒ} zêt|
dƒ�}	|	 | ¡ W d  ƒ n1 sx0    Y  dd||	j	g}t|tƒr²tj	dk}|j
||d	�}| |¡ tjdd
g| }ztj|tjtjd�}W n& t�y
   tj|dddd�}Y n0 |�r t|j ¡ ƒ W |du �rNt |
¡ n|du �rLt |
¡ 0 |�rX|S |jS dS )a  
    Build extension module from a Fortran 77 source string with f2py.

    Parameters
    ----------
    source : str or bytes
        Fortran source of module / subroutine to compile

        .. versionchanged:: 1.16.0
           Accept str as well as bytes

    modulename : str, optional
        The name of the compiled python module
    extra_args : str or list, optional
        Additional parameters passed to f2py

        .. versionchanged:: 1.16.0
            A list of args may also be provided.

    verbose : bool, optional
        Print f2py output to screen
    source_fn : str, optional
        Name of the file where the fortran source is written.
        The default is to use a temporary file with the extension
        provided by the `extension` parameter
    extension : {'.f', '.f90'}, optional
        Filename extension if `source_fn` is not provided.
        The extension tells which fortran standard is used.
        The default is `.f`, which implies F77 standard.

        .. versionadded:: 1.11.0

    full_output : bool, optional
        If True, return a `subprocess.CompletedProcess` containing
        the stdout and stderr of the compile process, instead of just
        the status code.

        .. versionadded:: 1.20.0


    Returns
    -------
    result : int or `subprocess.CompletedProcess`
        0 on success, or a `subprocess.CompletedProcess` if
        ``full_output=True``

    Examples
    --------
    .. literalinclude:: ../../source/f2py/code/results/compile_session.dat
        :language: python

    r   N)Úsuffixzutf-8Úwz-cz-mÚposix)r   z)import numpy.f2py as f2py2e;f2py2e.main())ÚstdoutÚstderré   ó    )ÚtempfileÚshlexÚmkstempÚosÚcloseÚ
isinstanceÚstrÚopenÚwriteÚnameÚsplitÚextendÚsysÚ
executableÚ
subprocessÚrunÚPIPEÚOSErrorÚCompletedProcessÚprintr   ÚdecodeÚremoveÚ
returncode)ÚsourceÚ
modulenameÚ
extra_argsÚverboseZ	source_fnÚ	extensionZfull_outputr   r   ÚfÚfnameÚargsZis_posixÚcÚcp© r3   úS/home/ja/django-apps/lartica_env/lib/python3.9/site-packages/numpy/f2py/__init__.pyr      sJ    <

(


þþ
ÿ

ÿ
r   c                   C   s   t j t j t¡d¡S )a›  
    Return the directory that contains the fortranobject.c and .h files.

    .. note::

        This function is not needed when building an extension with
        `numpy.distutils` directly from ``.f`` and/or ``.pyf`` files
        in one go.

    Python extension modules built with f2py-generated code need to use
    ``fortranobject.c`` as a source file, and include the ``fortranobject.h``
    header. This function can be used to obtain the directory containing
    both of these files.

    Returns
    -------
    include_path : str
        Absolute path to the directory containing ``fortranobject.c`` and
        ``fortranobject.h``.

    Notes
    -----
    .. versionadded:: 1.22.0

    Unless the build system you are using has specific support for f2py,
    building a Python extension using a ``.pyf`` signature file is a two-step
    process. For a module ``mymod``:

        - Step 1: run ``python -m numpy.f2py mymod.pyf --quiet``. This
          generates ``_mymodmodule.c`` and (if needed)
          ``_fblas-f2pywrappers.f`` files next to ``mymod.pyf``.
        - Step 2: build your Python extension module. This requires the
          following source files:

              - ``_mymodmodule.c``
              - ``_mymod-f2pywrappers.f`` (if it was generated in step 1)
              - ``fortranobject.c``

    See Also
    --------
    numpy.get_include : function that returns the numpy include directory

    Úsrc)r   ÚpathÚjoinÚdirnameÚ__file__r3   r3   r3   r4   r   }   s    ,r   é   )é   é   c                 C   sR   | dkrdd l m  m} |S | dkr>ddlm} |tƒ}|S td t| ¡ƒ‚d S )NÚf2py_testingr   Útest©ÚPytestTesterz!module {!r} has no attribute {!r})Znumpy.f2py.f2py_testingZf2pyr=   Únumpy._pytesttesterr@   Ú__name__ÚAttributeErrorÚformat)Úattrr=   r@   r>   r3   r3   r4   Ú__getattr__¯   s    ÿrF   c                   C   s   t tƒ  ¡ ddhB ƒS )Nr=   r>   )ÚlistÚglobalsÚkeysr3   r3   r3   r4   Ú__dir__À   s    rJ   )r=   r?   )r   r	   TNr
   F)Ú__doc__Ú__all__r   r    r   r	   r   r   r   Úmainr   r   Úversion_inforF   rJ   r=   rA   r@   rB   r>   r3   r3   r3   r4   Ú<module>   s.         ú
k/
