fortranformat


Namefortranformat JSON
Version 2.0.0 PyPI version JSON
download
home_pagehttps://github.com/brendanarnold/py-fortranformat
SummaryMimics Fortran textual IO in Python
upload_time2023-05-29 22:57:57
maintainer
docs_urlNone
authorBrendan Arnold
requires_python
license
keywords fortran io interface format
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # 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.

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](https://github.com/brendanarnold/py-fortranformat/blob/master/docs/wiki/guide.md).

## 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

Characterisations for a selection of FORTRAN compilers already exists, but if you want to characterise a new compiler, do the following ...

1. Configure the compile string under `compilertests` target for your particular FORTRAN compiler e.g. `gfortran %s -o %s` where `%s` is the input and output file placeholders respectively
2. Configure the compiler tag under `compilertests` e.g. `gfortran_10_2_0_osx_intel` this is just used for naming although would advise to sticking to alphanumerics and underscores
3. Run `make compilertests`. This generates, compiles and executes hundreds of combinations of edit descriptor in the FORTRAN compiler under test and saves the results in the `.test` files under the build directories.
4. Move the `.test` files to an appropriate new location under `tests/autogen/[input/output]` into directories named `raw`
5. Run `make buildtests` to generate Python test files based on the generated `.test` files

### Running tests

Build the tests using

`make buildtests`

Make sure that pytest is installed then run using

`make runtests`

Note that some of the F output edit descriptors fail due to limitations in floating point number representation

To run a reduced test suite where time and resources are limited, use the following

`make runminimaltests`

To run a performance test, which currently only covers the reading and writing of floats, use the following

`make runperformancetests`

### Deploying a new package version

Update versions in `setup.py` and `__init__.py`

Update `CHANGELOG.md`

To create a local build to test run ...

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

To upload a version to PyPI run ...

```
python setup.py sdist
twine upload dist/<new version>
```

## 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
            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/brendanarnold/py-fortranformat",
    "name": "fortranformat",
    "maintainer": "",
    "docs_url": null,
    "requires_python": "",
    "maintainer_email": "",
    "keywords": "fortran,io,interface,format",
    "author": "Brendan Arnold",
    "author_email": "brendanarnold@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/91/b8/12298bdd8516eb81d012267b270fd0c3850528204d3021af0ea72503b9db/fortranformat-2.0.0.tar.gz",
    "platform": null,
    "description": "# FORTRAN format interpreter for Python\n\nGenerates text from a Python list of variables or will read a line of text into Python variables according to the FORTRAN format statement passed.\n\nTo read Fortran records,\n\n```\nimport fortranformat as ff\nheader_line = FortranRecordReader('(A15, A15, A15)')\nheader_line.read('              x              y              z')\n['              x', '              y', '              z']\nline = FortranRecordReader('(3F15.3)')\nline.read('          1.000          0.000          0.500')\n# Returns [1.0, 0.0, 0.5]\nline.read('          1.100          0.100          0.600')\n# Returns [1.1, 0.1, 0.6]\n```\n\nTo write Fortran records,\n\n```\nimport fortranformat as ff\nheader_line = FortranRecordWriter('(A15, A15, A15)')\nheader_line.write(['x', 'y', 'z'])\n# Results in '              x              y              z'\nline = FortranRecordWriter('(3F15.3)')\nline.write([1.0, 0.0, 0.5])\n# Results in '          1.000          0.000          0.500'\nline.write([1.1, 0.1, 0.6])\n# Results in '          1.100          0.100          0.600'\n```\n\nFor more detailed usage, see [the guide](https://github.com/brendanarnold/py-fortranformat/blob/master/docs/wiki/guide.md).\n\n## Notes\n\n- At present the library mimics the IO of the Intel FORTRAN compiler\n  v.9.1 run on a Linux system. Differences to other FORTRAN compilers\n  and platforms are generally minor.\n- The library should run on Python versions from at least 2.7\n\n## Development\n\n### Generating the tests for a FORTRAN compiler\n\nCharacterisations for a selection of FORTRAN compilers already exists, but if you want to characterise a new compiler, do the following ...\n\n1. Configure the compile string under `compilertests` target for your particular FORTRAN compiler e.g. `gfortran %s -o %s` where `%s` is the input and output file placeholders respectively\n2. Configure the compiler tag under `compilertests` e.g. `gfortran_10_2_0_osx_intel` this is just used for naming although would advise to sticking to alphanumerics and underscores\n3. Run `make compilertests`. This generates, compiles and executes hundreds of combinations of edit descriptor in the FORTRAN compiler under test and saves the results in the `.test` files under the build directories.\n4. Move the `.test` files to an appropriate new location under `tests/autogen/[input/output]` into directories named `raw`\n5. Run `make buildtests` to generate Python test files based on the generated `.test` files\n\n### Running tests\n\nBuild the tests using\n\n`make buildtests`\n\nMake sure that pytest is installed then run using\n\n`make runtests`\n\nNote that some of the F output edit descriptors fail due to limitations in floating point number representation\n\nTo run a reduced test suite where time and resources are limited, use the following\n\n`make runminimaltests`\n\nTo run a performance test, which currently only covers the reading and writing of floats, use the following\n\n`make runperformancetests`\n\n### Deploying a new package version\n\nUpdate versions in `setup.py` and `__init__.py`\n\nUpdate `CHANGELOG.md`\n\nTo create a local build to test run ...\n\n`python setup.py build sdist --formats=gztar`\n\nTo upload a version to PyPI run ...\n\n```\npython setup.py sdist\ntwine upload dist/<new version>\n```\n\n## Bugs\n\nAlthough the library has a large body of automatically generated test\ncode behind it, it has not been extensively user tested. Bug reports are\nwelcome!\n\nPlease report bugs to,\n\nhttps://github.com/brendanarnold/py-fortranformat/issues",
    "bugtrack_url": null,
    "license": "",
    "summary": "Mimics Fortran textual IO in Python",
    "version": "2.0.0",
    "project_urls": {
        "Homepage": "https://github.com/brendanarnold/py-fortranformat"
    },
    "split_keywords": [
        "fortran",
        "io",
        "interface",
        "format"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "91b812298bdd8516eb81d012267b270fd0c3850528204d3021af0ea72503b9db",
                "md5": "b4b2e1f1289f89dc686670cc6bbdcd8b",
                "sha256": "52473831d6f6bad7c2de0f26ad51856ea5d0ef097bcba5af3b855b871b815b0d"
            },
            "downloads": -1,
            "filename": "fortranformat-2.0.0.tar.gz",
            "has_sig": false,
            "md5_digest": "b4b2e1f1289f89dc686670cc6bbdcd8b",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 22237,
            "upload_time": "2023-05-29T22:57:57",
            "upload_time_iso_8601": "2023-05-29T22:57:57.185369Z",
            "url": "https://files.pythonhosted.org/packages/91/b8/12298bdd8516eb81d012267b270fd0c3850528204d3021af0ea72503b9db/fortranformat-2.0.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-05-29 22:57:57",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "brendanarnold",
    "github_project": "py-fortranformat",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "requirements": [],
    "lcname": "fortranformat"
}
        
Elapsed time: 1.13363s