scikit-hep / pyhf

pure-Python HistFactory implementation with tensors and autodiff
https://pyhf.readthedocs.io/
Apache License 2.0
283 stars 83 forks source link

docs build failing on Pygments lexter warning #2067

Closed matthewfeickert closed 1 year ago

matthewfeickert commented 1 year ago

Hm. Something related to https://github.com/spatialaudio/nbsphinx/issues/24 is breaking the docs build. We're getting

WARNING: Pygments lexer name 'ipython3' is not known

for all the notebooks during the docs build and we fail on warnings.

Originally posted by @matthewfeickert in https://github.com/scikit-hep/pyhf/issues/2066#issuecomment-1329937208

matthewfeickert commented 1 year ago

Given that

$ python -m pip show Pygments | grep Required-by
Required-by: ipython, jupyter-console, nbconvert, nbdime, qtconsole, readme-renderer, rich, Sphinx

and between the last working build of the docs on 2022-11-17 and now (2022-11-28) the difference in installed dependencies includes

$ diff --color -u /tmp/pass.txt /tmp/fail.txt
...
-ipykernel                     6.17.1
-ipython                       8.6.0
+ipykernel                     6.18.1
+ipython                       8.7.0

I'm going to assume there is something different with ipython and look there.

matthewfeickert commented 1 year ago

This shows up in https://github.com/ipython/ipython/issues/13845 as well, so I think that this is going to exist for a bit and that PR #2066 should get merged in while this all gets figured out.

It does seem that https://github.com/ipython/ipython/issues/13845#issuecomment-1329226997 is correct though about

this is due to the Pygments entry points not being correctly installed with ~8.6.0~ 8.7.0 as

$ python -m pip list | grep 'setuptools\|ipython'                                                
ipython                       8.7.0
ipython-genutils              0.2.0
setuptools                    65.6.3
$ python -c 'from importlib.metadata import entry_points; print(entry_points(group="pygments.lexers"))'
[]
$ python -m pip install --upgrade 'ipython==8.6.0'
$ python -m pip list | grep 'setuptools\|ipython'                                                                                                         
ipython                       8.6.0
ipython-genutils              0.2.0
setuptools                    65.6.3
$ python -c 'from importlib.metadata import entry_points; print(entry_points(group="pygments.lexers"))'                                                   
[EntryPoint(name='ipython', value='IPython.lib.lexers:IPythonLexer', group='pygments.lexers'), EntryPoint(name='ipython3', value='IPython.lib.lexers:IPython3Lexer', group='pygments.lexers'), EntryPoint(name='ipythonconsole', value='IPython.lib.lexers:IPythonConsoleLexer', group='pygments.lexers')]

so to get around this just disallow ipython v8.7.0 for the time being

ipython!=8.7.0