Skip to main content

Mimics Fortran textual IO in Python

Project description

FORTRAN format interpreter for Python

Generates text from a Python list of variables or will read a line of text into Python variables according to the FORTRAN format statement passed.

Licensed under the MIT license

The library is extensively unit-tested against the Intel FORTRAN compiler on a Linux platform. Differences between platforms/compilers are generally minor.

To read Fortran records,

import fortranformat as ff
header_line = FortranRecordReader('(A15, A15, A15)')
header_line.read('              x              y              z')
['              x', '              y', '              z']
line = FortranRecordReader('(3F15.3)')
line.read('          1.000          0.000          0.500')
# Returns [1.0, 0.0, 0.5]
line.read('          1.100          0.100          0.600')
# Returns [1.1, 0.1, 0.6]

To write Fortran records,

import fortranformat as ff
header_line = FortranRecordWriter('(A15, A15, A15)')
header_line.write(['x', 'y', 'z'])
# Results in '              x              y              z'
line = FortranRecordWriter('(3F15.3)')
line.write([1.0, 0.0, 0.5])
# Results in '          1.000          0.000          0.500'
line.write([1.1, 0.1, 0.6])
# Results in '          1.100          0.100          0.600'

For more detailed usage, see the guide.

Notes

  • At present the library mimics the IO of the Intel FORTRAN compiler v.9.1 run on a Linux system. Differences to other FORTRAN compilers and platforms are generally minor.
  • The library should run on Python versions from at least 2.7

Development

Generating the tests for a FORTRAN compiler

The bulk of the tests are auto generated using Python scripts located in tests/autogen/generate. The tests were generated as follows ...

  1. Configure gen_input_tests.py for your particular FORTRAN compiler
  2. Run the above scripts to generate the .test files in the relevant raw directory under the tests/autogen/input directory. These generate, compile and execute hundreds of combinations of edit descriptor in the FORTRAN compiler under test and saves the results in the .test files
  3. Repeat for the 'output' tests
  4. Run build_unittests.py to generate Python test files based on the generated .test files

Running tests

Make sure that nose tests is installed and run using

sh scripts/runtests.sh

Note some of the Z input edit descriptor tests fail because in FORTRAN they overflow whereas Python can handle arbitrarily large integers

Some of the F output edit descriptors fail due to precision issues

Deploying a new package version

Update versions in setup.py and __init__.py

To create a local build to test run ...

python setup.py build sdist --formats=gztar bdist_wininst

To upload a version to PyPI run ...

python setup.py sdist --formats=gztar bdist_wininst upload

Bugs

Although the library has a large body of automatically generated test code behind it, it has not been extensively user tested. Bug reports are welcome!

Please report bugs to,

https://github.com/brendanarnold/py-fortranformat/issues

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

fortranformat-1.0.1.tar.gz (22.0 kB view details)

Uploaded Source

Built Distribution

fortranformat-1.0.1-py2-none-any.whl (24.4 kB view details)

Uploaded Python 2

File details

Details for the file fortranformat-1.0.1.tar.gz.

File metadata

  • Download URL: fortranformat-1.0.1.tar.gz
  • Upload date:
  • Size: 22.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.15.0 pkginfo/1.7.0 requests/2.25.1 setuptools/44.0.0.post20200106 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/2.7.18

File hashes

Hashes for fortranformat-1.0.1.tar.gz
Algorithm Hash digest
SHA256 730b4f56ef64d7ec18537b357e92c7b17aec7e24e3d1e32c122c31dbdd64ef2b
MD5 4a380c34d70d14ba7abd38bb9ed6d9af
BLAKE2b-256 68110cdd03eb7cdd8736dac07066deb679814c0f8316caee84fb974aa02d0433

See more details on using hashes here.

File details

Details for the file fortranformat-1.0.1-py2-none-any.whl.

File metadata

  • Download URL: fortranformat-1.0.1-py2-none-any.whl
  • Upload date:
  • Size: 24.4 kB
  • Tags: Python 2
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.15.0 pkginfo/1.7.0 requests/2.25.1 setuptools/44.0.0.post20200106 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/2.7.18

File hashes

Hashes for fortranformat-1.0.1-py2-none-any.whl
Algorithm Hash digest
SHA256 bfa14f5b6b62e90cc02852dcca5b6ea8caf782725be44b0ca39868e462ac88c8
MD5 ece452b4f26a232a0a3195b7d69c82c8
BLAKE2b-256 98de6b19f39aa9c7126293d03481ad2f9414b8967385e0acba3d2fb63c07704e

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