Skip to main content
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.8 / 2023-06-08

  • 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

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.8.tar.gz (15.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

fortran_magic-0.8-py3-none-any.whl (9.3 kB view details)

Uploaded Python 3

File details

Details for the file fortran-magic-0.8.tar.gz.

File metadata

  • Download URL: fortran-magic-0.8.tar.gz
  • Upload date:
  • Size: 15.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.1 CPython/3.11.4

File hashes

Hashes for fortran-magic-0.8.tar.gz
Algorithm Hash digest
SHA256 d5dcdbbc930cd47c3fadaf34775d25934014c7adfd86392a2dfccfec663b8ac5
MD5 645962109d18442a3102ae8ec2c982ea
BLAKE2b-256 a330a2f06c456501bf4a5f142e6fc635a87fcf21b0480653f87184b73f11da42

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fortran_magic-0.8-py3-none-any.whl
  • Upload date:
  • Size: 9.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.1 CPython/3.11.4

File hashes

Hashes for fortran_magic-0.8-py3-none-any.whl
Algorithm Hash digest
SHA256 af08fe345d9a0d6eb1128abb346003b0be51da43a4ba7adf97186d4cb91e5c79
MD5 d367edee75f918313e3e00d79fe3c565
BLAKE2b-256 29b45558fc0b4f7e403a4f5f43ebc88999e3b2b91e4858eb075a3cf9ad802aad

See more details on using hashes here.

Release history Release notifications | RSS feed

1.0

2 files

0.9

2 files

This release

0.8 This release

2 files

0.7.1

2 files

0.7

2 files

0.6.1

2 files

0.6

2 files

0.5.1

2 files

0.5

1 file

0.4.3

1 file

0.4.2

1 file

0.4.1

1 file

0.4

1 file

0.3

1 file

0.2.1

1 file

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page