Skip to main content

An extension for IPython that help to use Fortran in your interactive session.

Project description

PyPI PyPI - Downloads

Compile and import symbols from a cell with Fortran code, using f2py.



The contents of the cell are written to a .f90 file in the directory IPYTHONDIR/fortran using a filename with the hash of the code. This file is then compiled. The resulting module is imported and all of its symbols are injected into the user’s namespace.

homepage:

https://github.com/mgaitan/fortran_magic

documentation:

see this notebook

Install

You can install or upgrade via pip

pip install -U fortran-magic

Basic usage

Once it’s installed, you can load it with %load_ext fortranmagic. Then put your Fortran code in a cell started with the cell magic %%fortran. For example:

In[1]: %load_ext fortranmagic

In[2]: import sys

       if sys.platform.startswith("win"):
           # Depends of system, python builds, and compilers compatibility.
           # See `documentation.ipnb`.
           %fortran_config --fcompiler=gnu95 --compiler=mingw32

In[3]: %%fortran

       subroutine f1(x, y, z)
            real, intent(in) :: x,y
            real, intent(out) :: z

            z = sin(x+y)

       end subroutine f1

Every symbol is automatically imported. So the subroutine f1 is already available in your python session as a function:

In[4]:  f1(1.0, 2.1415)
Out[4]: 9.26574066397734e-05

See the documentation for further details.

Changelog

0.9 / 2024-05-27

  • Fix for NumPy 1.26 & Python 3.12. Warning: When using the Meson build system (3.12 and later), there are some limitations and differences in the interface.

  • Ready to NumPy 2.0

Serguei E. Leontiev

0.8 / 2023-06-16

  • Fix use deprecating imp module (removed from Python 3.12b2)

  • Fix exponential duplication any not boolean flags of %%fortran_config

  • Include stored %%fortran_config’s args in hashing

  • Don’t rebuild cell if the module already loaded and hash not changed (Unix don’t reload already loaded shared library with same name. Windows can’t rewrite already loaded DLL)

  • Repair fortran highlighting in a %%fortran cell for nbclassic (Fortran highlighting for JupyterLab - unimplemented, for IPython 3.x - removed)

  • Printing compilers diagnostics for build errors by %%fortran without -vvv flag

Serguei E. Leontiev

0.7.1 / 2023-04-12

  • Synchronize version number in fortranmagic.py & setup.py (2023-04-10, https://github.com/Serge3leo)

  • Patch fortran source in compiled object. (029d890, 2020-08-01, https://github.com/mgaitan)

  • Fix deprecation warning (3667bc1, 2017-08-18, https://github.com/guihigashi) [IPython.utils.path removed from IPython 8.x]

  • Simplify f2py execution. (d8a058f, 2016-06-04, https://github.com/QuLogic) Don’t change directories, and don’t mangle sys.argv. The former can be specified directly in the Popen constructor, and the latter is cruft from when the f2py module was imported directly.

0.7 / 2016-03-13

  • Fix cross compatibility with older NumPy and Python 3. (15ab10c)

Thanks to Elliott Sales de Andrade for this contribution

0.6 / 2015-12-02

  • Decode text before printing

  • Call f2py module instead of binary (numpy >=1.10 is mandatory)

  • Check if f2py command failed

Thanks to Juan Luis Cano Rodríguez for this contribution

0.5 / 2015-01-21

  • Call f2py via subprocess. It fixes problems finding fortran compilers under Windows. (Thanks to David Powell )

0.4.3 / 2013-12-09

  • Fix two python3.2+ incompatibilities (Thanks Ramon Crehuet for the report)

0.4.2 / 2013-10-08

  • Implement the --extra option (Thanks to Denis Vasilyev for the help)

  • Include %%fortran’s args in the hashing, so the same cell are recompiled with the same code but different arguments

0.3 / 2013-10-03

  • Added %fortran_config to set and persist default arguments for %%fortran

  • Improve documentation

0.2.1 / 2013-09-24

  • Packaged and registered in pypi

  • Starting a version’s changelog

0.2 / 2013-09-19

  • Fortran highlighting in a %%fortran cell

  • Works (or it should) in any platform (linux/windows/osx) and with py3 (thanks to Bradley Froehle)

  • Many f2py’s arguments exposed as magic arguments

  • Verbosity handling

  • Improved documentation

0.1 / 2013-09-08

  • First public release

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fortran_magic-0.9.tar.gz (16.0 kB view details)

Uploaded Source

Built Distribution

fortran_magic-0.9-py3-none-any.whl (10.1 kB view details)

Uploaded Python 3

File details

Details for the file fortran_magic-0.9.tar.gz.

File metadata

  • Download URL: fortran_magic-0.9.tar.gz
  • Upload date:
  • Size: 16.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.0.0 CPython/3.12.3

File hashes

Hashes for fortran_magic-0.9.tar.gz
Algorithm Hash digest
SHA256 718e32a16c9fb191f08333288b80916bbb83f4d26d98532e55d0b38a797607ac
MD5 0af7f203c68bc51b41c1c5a5f8d009d0
BLAKE2b-256 f92b2defc6a6da058366595895faa5f34e0c759a29da8d97d211a3b2d1ab0ad9

See more details on using hashes here.

File details

Details for the file fortran_magic-0.9-py3-none-any.whl.

File metadata

  • Download URL: fortran_magic-0.9-py3-none-any.whl
  • Upload date:
  • Size: 10.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.0.0 CPython/3.12.3

File hashes

Hashes for fortran_magic-0.9-py3-none-any.whl
Algorithm Hash digest
SHA256 7fe304fd6313d16162436c912570969c70a2211532adc74cc7f11c8491a72096
MD5 37b5ef60b316b1f999baaa3969afe742
BLAKE2b-256 94c1b99b269d137334e26e12945e4e4e183ec47a2e3866de9fe4f661d22aa968

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page