Closed zjttoefs closed 2 years ago
@zjttoefs Thanks for reporting this!
While addressing this issue, we'll try to keep the code compliant with either Py2.7 or Py3.7+ (no assurances on intervening versions). If necessary, Py2 support will be dropped. Do not expect that is necessary.
Look at these lines first:
(nexusformat) prjemian@zap:~/.../NeXus/definitions$ git grep raise
manual/source/examples/h5py/reader_attributes_trail.py: raise ValueError(f"expected 1-D data but @axes={attr_axes}")
utils/build_preparation.py: '''raise error if this program cannot continue, based on the inputs'''
utils/build_preparation.py: raise RuntimeError('Cannot find ' + source_dir)
utils/build_preparation.py: raise RuntimeError('Not a directory: ' + source_dir)
utils/build_preparation.py: raise RuntimeError(msg)
utils/build_preparation.py: raise RuntimeError(msg)
utils/create_release_notes.py: raise ValueError(msg)
utils/create_release_notes.py: raise ValueError(msg)
utils/create_release_notes.py: raise ValueError(msg)
utils/create_release_notes.py: raise ValueError(msg)
utils/local_utilities.py: raise RuntimeWarning(msg)
utils/local_utilities.py: raise RuntimeError('Directory not found: ' + source)
utils/nxdl2rst.py: raise Exception( 'Too many doc elements: line %d, %s' %
utils/nxdl2rst.py: raise Exception( 'unexpected docstring [%s] ' % s )
utils/nxdl2rst.py: raise Exception( 'Missing initial indentation in <doc> of %s [%s]' %
utils/nxdl2rst.py: raise Exception( 'Bad indentation in <doc> of %s [%s]: expected "%s" found "%s".' %
utils/nxdl2rst.py: raise Exception( 'Unexpected multi-paragraph doc [%s]' %
utils/nxdl2rst.py: raise Exception( 'No documentation for: ' + node.get('name') )
utils/nxdl2rst.py: raise Exception( 'Unexpected class name "%s"; does not start with NX' %
utils/nxdl2rst.py: raise Exception( 'Invalid symbol table in ' % root.get('name') )
utils/nxdl_desc2rst.py: raise "Must supply a valid parent node"
utils/nxdl_desc2rst.py: raise "Duplicate name found: " + name
utils/nxdl_desc2rst.py: raise "Something wrong with indentation on this line:\n" + line
utils/nxdl_summary.py: raise RuntimeError('wrong number of <doc> nodes in NXDL: ' + nxdl_file)
utils/nxdl_summary.py: raise KeyError('unknown NXDL section: ' + section)
utils/nxdl_summary.py: raise IOError('not found: ' + nxdl_path)
utils/nxdl_summary.py: raise IOError('not found: ' + rst_path)
utils/test_nxdl.py: raise NXDL_Invalid(msg)
utils/test_nxdl.py: # there is no assertNotRaises so raise this when successful
utils/test_nxdl.py: raise NXDL_Valid
utils/test_nxdl.py: raise NXDL_Invalid(msg)
utils/update_copyright_date.py: '''raise error if this program cannot continue, based on the inputs'''
utils/update_copyright_date.py: raise RuntimeError('Cannot find ' + root_dir)
utils/update_copyright_date.py: raise RuntimeError('Not a directory: ' + root_dir)
utils/update_copyright_date.py: raise RuntimeError(msg)
Only utils/nxdl_desc2rst.py
needs attention.
With py27, the Python code runs but the conda environment (built with "Python<3" and the .github/env-workflow.yml
file) needs a newer Sphinx version:
(py27) prjemian@zap:~/.../NeXus/definitions$ !make
make impatient-guide manual -C build
make: Entering directory '/home/prjemian/Documents/projects/NeXus/definitions/build'
make html -C impatient-guide
make[1]: Entering directory '/home/prjemian/Documents/projects/NeXus/definitions/build/impatient-guide'
sphinx-build -b html -d _build/doctrees . _build/html
Running Sphinx v1.8.5
loading pickled environment... failed: unsupported pickle protocol: 5
building [mo]: targets for 0 po files that are out of date
building [html]: targets for 1 source files that are out of date
updating environment: 1 added, 0 changed, 0 removed
reading sources... [100%] index
looking for now-outdated files... none found
pickling environment... done
checking consistency... done
preparing documents... done
writing output... [100%] index
generating indices...
writing additional pages... search
copying images... [100%] NeXus-logo.png
copying static files... done
copying extra files... done
dumping search index in English (code: en) ... done
dumping object inventory... done
build succeeded.
The HTML pages are in _build/html.
touch _build/html/.nojekyll
Build finished. The HTML pages are in _build/html.
make[1]: Leaving directory '/home/prjemian/Documents/projects/NeXus/definitions/build/impatient-guide'
make -C manual/source
make[1]: Entering directory '/home/prjemian/Documents/projects/NeXus/definitions/build/manual/source'
make -C classes
make[2]: Entering directory '/home/prjemian/Documents/projects/NeXus/definitions/build/manual/source/classes'
make -C base_classes
make[3]: Entering directory '/home/prjemian/Documents/projects/NeXus/definitions/build/manual/source/classes/base_classes'
echo "Adding summaries to base_classes/index.rst"
Adding summaries to base_classes/index.rst
python ../../../../utils/nxdl_summary.py base_classes
make[3]: Leaving directory '/home/prjemian/Documents/projects/NeXus/definitions/build/manual/source/classes/base_classes'
make -C applications
make[3]: Entering directory '/home/prjemian/Documents/projects/NeXus/definitions/build/manual/source/classes/applications'
echo "Adding summaries to applications/index.rst"
Adding summaries to applications/index.rst
python ../../../../utils/nxdl_summary.py applications
make[3]: Leaving directory '/home/prjemian/Documents/projects/NeXus/definitions/build/manual/source/classes/applications'
make -C contributed_definitions
make[3]: Entering directory '/home/prjemian/Documents/projects/NeXus/definitions/build/manual/source/classes/contributed_definitions'
echo "Adding summaries to contributed_definitions/index.rst"
Adding summaries to contributed_definitions/index.rst
python ../../../../utils/nxdl_summary.py contributed_definitions
make[3]: Leaving directory '/home/prjemian/Documents/projects/NeXus/definitions/build/manual/source/classes/contributed_definitions'
make[2]: Leaving directory '/home/prjemian/Documents/projects/NeXus/definitions/build/manual/source/classes'
make[1]: Leaving directory '/home/prjemian/Documents/projects/NeXus/definitions/build/manual/source'
make html -C manual
make[1]: Entering directory '/home/prjemian/Documents/projects/NeXus/definitions/build/manual'
Running Sphinx v1.8.5
Sphinx version error:
This project needs at least Sphinx v2.3 and therefore cannot be built with this version.
make[1]: *** [Makefile:26: html] Error 2
make[1]: Leaving directory '/home/prjemian/Documents/projects/NeXus/definitions/build/manual'
make: *** [Makefile:18: manual] Error 2
make: Leaving directory '/home/prjemian/Documents/projects/NeXus/definitions/build'
The Sphinx version is not a problem for this issue.
Suggest dropping support for Python 2.7 due to upstream package conflicts with Sphinx and pyRestTable. Py2.7 is EOL. Time to stop maintaining our code for compatibility. Here is an example of the problems we face now:
Building the docs with Python 3.9.5 results in an error early on in nxdl_desc2rst.py:
This results in the following error:
It runs fine in python2, so I suspect that to be the issue. I might be wrong, though. Would be nice to this migrate to supported python in the near future.
Replacing the
raise
statement above with apass
builds successful with the newer python. So at least for the success path, the work required will be low.