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 ...
- Configure
gen_input_tests.py
for your particular FORTRAN compiler - Run the above scripts to generate the
.test
files in the relevantraw
directory under thetests/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 - Repeat for the 'output' tests
- 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,
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 730b4f56ef64d7ec18537b357e92c7b17aec7e24e3d1e32c122c31dbdd64ef2b |
|
MD5 | 4a380c34d70d14ba7abd38bb9ed6d9af |
|
BLAKE2b-256 | 68110cdd03eb7cdd8736dac07066deb679814c0f8316caee84fb974aa02d0433 |
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | bfa14f5b6b62e90cc02852dcca5b6ea8caf782725be44b0ca39868e462ac88c8 |
|
MD5 | ece452b4f26a232a0a3195b7d69c82c8 |
|
BLAKE2b-256 | 98de6b19f39aa9c7126293d03481ad2f9414b8967385e0acba3d2fb63c07704e |