Skip to content

BUG: f2py crackfortran: missing dict key 'implementedby' #21889

@bnavigator

Description

@bnavigator

Describe the issue:

We have a user report at python-control/Slycot#177 who tried to build Slycot with NumPy 1.23.0 which fails with the f2py error below.

Using a system NumPy 1.21.5 or pip install 'numpy<1.23.0' scikit-build; pip install -v --no-build-isolation slycot does not throw the error.

Reproduce the code example:

docker container run -it ubuntu bash
# in docker container:
apt update
apt install python3 python3-dev gcc gfortran libopenblas-dev python3-pip cmake
pip install -v slycot

Error message:

Traceback (most recent call last):
    File "/usr/local/bin/f2py3", line 8, in <module>
      sys.exit(main())
    File "/tmp/pip-build-env-ve213n4q/overlay/local/lib/python3.10/dist-packages/numpy/f2py/f2py2e.py", line 704, in main
      run_main(sys.argv[1:])
    File "/tmp/pip-build-env-ve213n4q/overlay/local/lib/python3.10/dist-packages/numpy/f2py/f2py2e.py", line 441, in run_main
      postlist = callcrackfortran(files, options)
    File "/tmp/pip-build-env-ve213n4q/overlay/local/lib/python3.10/dist-packages/numpy/f2py/f2py2e.py", line 342, in callcrackfortran
      postlist = crackfortran.crackfortran(files)
    File "/tmp/pip-build-env-ve213n4q/overlay/local/lib/python3.10/dist-packages/numpy/f2py/crackfortran.py", line 3265, in crackfortran
      postlist = postcrack(grouplist[0])
    File "/tmp/pip-build-env-ve213n4q/overlay/local/lib/python3.10/dist-packages/numpy/f2py/crackfortran.py", line 1967, in postcrack
      g = postcrack(g, tab=tab + '\t')
    File "/tmp/pip-build-env-ve213n4q/overlay/local/lib/python3.10/dist-packages/numpy/f2py/crackfortran.py", line 1986, in postcrack
      block['body'] = analyzebody(block, args, tab=tab)
    File "/tmp/pip-build-env-ve213n4q/overlay/local/lib/python3.10/dist-packages/numpy/f2py/crackfortran.py", line 2150, in analyzebody
      not b['body'] and not b['implementedby']:
  KeyError: 'implementedby'
  gmake[2]: *** [slycot/CMakeFiles/_wrapper.dir/build.make:79: slycot/_wrappermodule.c] Error 1
  gmake[1]: *** [CMakeFiles/Makefile2:170: slycot/CMakeFiles/_wrapper.dir/all] Error 2
  gmake: *** [Makefile:136: all] Error 2

NumPy/Python version information:

1.23.0 3.10.4 (main, Apr 2 2022, 09:04:19) [GCC 11.2.0]

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions