
    Ng                         d Z g d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
 e	j        Ze	j        Z	 	 	 	 	 	 ddZd Zd Zd ZdS )a3  Fortran to Python Interface Generator.

Copyright 1999 -- 2011 Pearu Peterson all rights reserved.
Copyright 2011 -- present NumPy Developers.
Permission to use, modify, and distribute this software is given under the terms
of the NumPy License.

NO WARRANTY IS EXPRESSED OR IMPLIED.  USE AT YOUR OWN RISK.
)run_maincompileget_include    N)VisibleDeprecationWarning   )f2py2e)diagnoseuntitled T.fFc                 d   ddl }ddl}|.|                    |          \  }	}
t          j        |	           n|}
t          | t                    st          | d          } 	 t          |
d          5 }	|	                    |            ddd           n# 1 swxY w Y   dd||	j	        g}t          |t                    r't          j	        dk    }|
                    ||	          }|                    |           t          j        dd
g|z   }	 t          j        |d          }|r&t!          |j                                                   n(# t&          $ r t          j        |ddd          }Y nw xY w|t          j        |
           n# |t          j        |
           w w xY w|r|S |j        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()T)capture_output       )stdoutstderr)tempfileshlexmkstemposclose
isinstancestropenwritenamesplitextendsys
executable
subprocessrunprintr   decodeOSErrorCompletedProcessremove
returncode)source
modulename
extra_argsverbose	source_fn	extensionfull_outputr   r   ffnameargsis_posixccps                  O/var/www/html/ai-engine/env/lib/python3.11/site-packages/numpy/f2py/__init__.pyr   r      s)   x OOOLLL##9#555 	fc"" &VW%%% 	GGFOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dJ/j#&& 	A7*HZx@@JJ^8:<@A	*$777B
  *bi&&(()))  	M 	M 	M,QCLLLBBB	M Ie Ie   	}sU   !F 1BF BF BA1F E #)F "E1.F 0E11F F$c                      t           j                            t           j                            t                    d          S )aw  
    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.21.1

    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__ r   r9   r   r      s)    X 7<<115999r   c                     | dk    rddl m}  |t                    }|S t          d                    t          |                     )Ntestr   )PytestTesterz!module {!r} has no attribute {!r})numpy._pytesttesterrC   __name__AttributeErrorformat)attrrC   rB   s      r9   __getattr__rI      s[     v~~444444|H%%  %%+VHd%;%;= = 	=r   c                  d    t          t                                                      dhz            S )NrB   )listglobalskeysr@   r   r9   __dir__rN      s%    		  F8+,,,r   )r
   r   TNr   F)__doc____all__r"   r$   r   warningsnumpy.exceptionsr   r   r   r	   r   mainr   r   rI   rN   r@   r   r9   <module>rT      s     1
0
0 



     				  6 6 6 6 6 6            ?{ "g g g gT,: ,: ,:^= = =- - - - -r   