# Esto creará modulomodule.c y modulo-f2pywrappers2.f90 en tu carpeta ./src
cd ./src
python -m numpy.f2py modulo.pyf

# Como fortranobject.c no lo encuentra lo tengo que mover manualmente asi:
cp $(python -c "import numpy.f2py; import os; print(os.path.join(os.path.dirname(numpy.f2py.__file__), 'src', 'fortranobject.c'))") ./


!---------------------------------------
Para añadir una fase de test automático a tu flujo con pip, la forma más limpia y estándar en el ecosistema Python es utilizar pytest.

Si pytest no está, hay que instalarlo manualmente como

pip install pytest

Aquí tienes cómo configurarlo para que tu software en Fortran se valide nada más instalarse:

1. Estructura de archivos

mi_proyecto/
├── src/ (tus archivos .f90, .pyf y los .c generados)
├── tests/
│   └── test_modulo.py  # <-- Nuevo archivo de tests
├── pyproject.toml
└── meson.build

Ejecutar:

pip install .
pytest


!-----------------------------------------
Ahora quiero subir a PyPI (Python Package Index) mi_proyecto. Subiré el código fuente (también se puede subir con Wheel el binario ya compilado).

Hay que instalar la herramienta build:

pip install build

Inicializar un repositorio Git

git init
git add .
git commit -m "Versión inicial para empaquetar"

Y ejecutar:

python -m build

Esto generará una carpeta dist/ con dos archivos:

.tar.gz (sdist): El código fuente. Si alguien lo instala, su ordenador necesitará gfortran, gcc y ninja para compilarlo.

.whl (wheel): El paquete ya compilado para tu arquitectura (en tu caso, macOS ARM64). Ojo: Este wheel solo funcionará en otros Mac con Apple Silicon.

Ahora hay que subir a PyPI

pip install twine

Si no tengo cuenta, hay que tener una cuenta PyPI. Entro en pypi.org y me registro (YA ESTA). Ahora genero el Token en PyPI: Configuracion de cuenta; Añadir ficha de API; Ponerle un nombre (por ejemplo, "mi-token-fortran"); Se generan códigos de seguridad para recuperar cuenta; En Scope seleccionar "Entire account"; pulsar create token:

pypi-AgEIcHlwaS5vcmcCJGRiYjA5MmU5LTUwYzMtNGYzNy05N2JjLTg5NjgxYTlmZTBkMwACKlszLCJlZDQ0Nzg1Ny00ODA0LTQzYzItYjg0MS1kZDkxYzVlNTMxMzQiXQAABiCUztaKXF6Hodk-XHhBiSlD2Byms5HgQTh20I_VrZsbfw

Este toquen lo he guardado en /Usrs/joaquinlopez/.pypirc y en el fichero pypirc que tengo en la raiz de este directorio


Ahora ejecuto

twine upload dist/*

Requeriments en el ordenador remoto (gfortran, gcc, ninja)

