File: //usr/local/lib/python3.10/dist-packages/numpy/f2py/tests/__pycache__/test_f2py2e.cpython-310.pyc
o
���gOc � @ s d dl Z d dlZd dlZd dlZd dlZd dlmZ d dlmZ d dl Z d dl
Z
ddlmZ d dl
mZ edd�Zd�d
d�Ze
jdd
�dd� �Ze
jdd
�dd� �Ze
jdd
�dd� �Ze
jdd
�dd� �Ze
jdd
�dd� �Ze
jdd
�dd� �Zdd� Zdd� Zdd� Zd d!� Zd"d#� Zd$d%� Ze
jj e �!� d&kp�ej"d'kd(d)�d*d+� �Z#e
jj e �!� d&kp�ej"d'kd(d)�d,d-� �Z$e
jj%d.d/� �Z&d0d1� Z'd2d3� Z(d4d5� Z)d6d7� Z*d8d9� Z+d:d;� Z,d<d=� Z-d>d?� Z.d@dA� Z/dBdC� Z0dDdE� Z1dFdG� Z2dHdI� Z3dJdK� Z4e
jj%dLd)�dMdN� �Z5dOdP� Z6dQdR� Z7dSdT� Z8dUdV� Z9dWdX� Z:dYdZ� Z;d[d\� Z<d]d^� Z=d_d`� Z>e
jj%dLd)�dadb� �Z?dcdd� Z@dedf� ZAdgdh� ZBdidj� ZCdkdl� ZDdmdn� ZEdodp� ZFdqdr� ZGdsdt� ZHdudv� ZIdwdx� ZJdydz� ZKd{d|� ZLd}d~� ZMdd�� ZNd�d�� ZOd�d�� ZPd�d�� ZQdS )�� N)�Path)�
namedtuple� )�util)�main�PPathsz(finp, f90inp, pyf, wrap77, wrap90, cmodf�untitledc
C sR t | �}t|�d�|�d�|�d�|�|� d��|�|� d��|�|� d��d�S )ax Takes in a temporary file for testing and returns the expected output and input paths
Here expected output is essentially one of any of the possible generated
files.
..note::
Since this does not actually run f2py, none of these are guaranteed to
exist, and module names are typically incorrect
Parameters
----------
fname_inp : str
The input filename
mname : str, optional
The name of the module, untitled by default
Returns
-------
genp : NamedTuple PPaths
The possible paths which are generated, not all of which exist
z.fz.f90�.pyfz-f2pywrappers.fz-f2pywrappers2.f90�module.c)�finp�f90inp�pyf�wrap77�wrap90�cmodf)r r �with_suffix� with_name)� fname_inp�mname�bpath� r �G/usr/local/lib/python3.10/dist-packages/numpy/f2py/tests/test_f2py2e.py�get_io_paths s �r �session)�scopec C �2 t �dddd��� }| �� d }|j|dd� |S )�'Generates a single f90 file for testing�tests�src�clizhiworld.f90z hello.f90�ascii��encoding�r �getpath� read_text�getbasetemp�
write_text��tmpdir_factory�fdat�fnr r r �hello_world_f909 � r, c C �2 t �dddd��� }| �� d }|j|dd� |S )z(F90 file for testing warnings in gh23598r r �crackfortranzgh23598Warn.f90r r! r# r( r r r �gh23598_warnB r- r0 c C r. )z8F90 file for testing disallowed CLI arguments in ghff819r r r zgh_22819.pyfr r! r# r( r r r �gh22819_cliK r- r1 c C r )�'Generates a single f77 file for testingr r r zhi77.fzhello.fr r! r# r( r r r �hello_world_f77T r- r3 c C r )r2 r r �return_realzfoo77.fzfoo.fr r! r# r( r r r �retreal_f77] r- r5 c C s` t �dddd��� }t �dddd��� }| �� d }| �� d }|j|dd � |j|dd � |S )
r r r �f2cmapzisoFortranEnvMap.f90z.f2py_f2cmapz
f2cmap.f90�mapfiler r! r# )r) r* r6 r+ �fmapr r r �
f2cmap_f90e s r9 c C s� t |�}|�tdd|� ��� � t�|j��0 t� dd� |j�d�D �}d|vs+J �d|vs1J �d|v s7J �d |v s=J � W d � dS 1 sIw Y dS )z�Check that module names are handled correctly
gh-22819
Essentially, the -m name cannot be used to import the module, so the module
named in the .pyf needs to be used instead
CLI :: -m and a .pyf file
�argv�
f2py -m blah c S s g | ] }|� � r|j�qS r )�is_file�name)�.0�itemr r r �
<listcomp>} s z$test_gh22819_cli.<locals>.<listcomp>�*zblahmodule.czblah-f2pywrappers.fztest_22819-f2pywrappers.fztest_22819module.cz
Ignoring blahN) r �setattr�sys�splitr � switchdir�parent�f2pycli�rglob)�capfdr1 �monkeypatch�ipath� gen_pathsr r r �test_gh22819_cliq s "�rM c C s� t |�}|�tdd|� d��� � t�|j��+ tjt dd�� t
� W d � n1 s-w Y W d � dS W d � dS 1 sEw Y dS )zBOnly one .pyf file allowed
gh-22819
CLI :: .pyf files
r: r; z
hello.pyfzOnly one .pyf file per call)�matchN)r rB rC rD r rE rF �pytest�raises�
ValueErrorrG )rI r1 rJ rK r r r �test_gh22819_many_pyf� s ��"�rR c C sz t |dd�}|j}|�tdd|� d��� � t�|j�� t� |j �
� }d|vs+J �W d � d S 1 s6w Y d S )N�test�r r: �f2py z -m testzintproductf2pywrap, intpr)r r rB rC rD r rE rF rG r r% )rI r0 rJ �foutlrK �wrapperr r r �test_gh23598_warn� s �
"�rX c C s� t |�}t |�jd }|�tdd|� d|� ��� � t�|j��! t� | � � \}}d|v s0J �t |� ��
� s9J �W d � dS 1 sDw Y dS )zIEnsures that a signature file is generated via the CLI
CLI :: -h
r r: zf2py -h � �Saving signatures to fileN)r �stemrB rC rD r rE rF rG �
readouterr�exists)rI r, rJ rK �opath�out�_r r r �test_gen_pyf� s "�ra c C s| t |�}|�tdd|� ��� � t�|j�� t� | �� \}}d|v s&J �d|v s,J �W d � dS 1 s7w Y dS )zHEnsures that a signature file can be dumped to stdout
CLI :: -h
r: zf2py -h stdout rZ zfunction hi() ! in N� r rB rC rD r rE rF rG r\ �rI r, rJ rK r_ r` r r r �test_gen_pyf_stdout� s "�rd c C s� t |�}|�tdd|� ��� � t�|j��> t d�jddd� t� t
�� t� | �� \}}d|v s5J �W d � n1 s?w Y W d � dS W d � dS 1 sWw Y dS ) zjEnsures that the CLI refuses to overwrite signature files
CLI :: -h without --overwrite-signature
r: �f2py -h faker.pyf � faker.pyf� Fake newsr r! z&Use --overwrite-signature to overwriteN)
r rB rC rD r rE rF r'