sphinx-autobuild icon indicating copy to clipboard operation
sphinx-autobuild copied to clipboard

2024.09.03 - Autobuild does not hot reload when changes happen

Open skimmedsquare opened this issue 1 year ago • 6 comments

Summary

With the latest 2024.09.03 release, running make livehtml in the project directory starts up the server, however, pages do not successfully reload when changes are saved. Additionally, even force-reloading the page does not appear to get latest changes & the _build files are unmodified.

Using Python 3.9.6

Steps to Reproduce

  1. With the following requirements.txt
sphinx
sphinx-autobuild==2024.9.3
  1. Create a basic sphinx project & add the livehtml target mentioned in README.rst
  2. Run make livehtml
  3. Open default page @ 127.0.0.1:8000
  4. Edit & save project's index.rst

Relevant Output

(.venv) ➜  sphinx-test make livehtml
sphinx-autobuild "." "_build"
Running Sphinx v7.4.7
loading translations [en]... done
/Users/seankim/Projects/sphinx-test/.venv/lib/python3.9/site-packages/urllib3/__init__.py:35: NotOpenSSLWarning: urllib3 v2 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020
  warnings.warn(
loading pickled environment... done
building [mo]: targets for 0 po files that are out of date
writing output...
building [html]: targets for 0 source files that are out of date
updating environment: 0 added, 0 changed, 0 removed
reading sources...
looking for now-outdated files... none found
no targets are out of date.
build succeeded.

The HTML pages are in _build.
ERROR:    Exception in ASGI application
Traceback (most recent call last):
  File "/Users/seankim/Projects/sphinx-test/.venv/lib/python3.9/site-packages/uvicorn/protocols/websockets/websockets_impl.py", line 244, in run_asgi
    result = await self.app(self.scope, self.asgi_receive, self.asgi_send)  # type: ignore[func-returns-value]
  File "/Users/seankim/Projects/sphinx-test/.venv/lib/python3.9/site-packages/uvicorn/middleware/proxy_headers.py", line 70, in __call__
    return await self.app(scope, receive, send)
  File "/Users/seankim/Projects/sphinx-test/.venv/lib/python3.9/site-packages/starlette/applications.py", line 113, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/Users/seankim/Projects/sphinx-test/.venv/lib/python3.9/site-packages/starlette/middleware/errors.py", line 152, in __call__
    await self.app(scope, receive, send)
  File "/Users/seankim/Projects/sphinx-test/.venv/lib/python3.9/site-packages/sphinx_autobuild/middleware.py", line 29, in __call__
    await self.app(scope, receive, send)
  File "/Users/seankim/Projects/sphinx-test/.venv/lib/python3.9/site-packages/starlette/middleware/exceptions.py", line 62, in __call__
    await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
  File "/Users/seankim/Projects/sphinx-test/.venv/lib/python3.9/site-packages/starlette/_exception_handler.py", line 62, in wrapped_app
    raise exc
  File "/Users/seankim/Projects/sphinx-test/.venv/lib/python3.9/site-packages/starlette/_exception_handler.py", line 51, in wrapped_app
    await app(scope, receive, sender)
  File "/Users/seankim/Projects/sphinx-test/.venv/lib/python3.9/site-packages/starlette/routing.py", line 715, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/Users/seankim/Projects/sphinx-test/.venv/lib/python3.9/site-packages/starlette/routing.py", line 735, in app
    await route.handle(scope, receive, send)
  File "/Users/seankim/Projects/sphinx-test/.venv/lib/python3.9/site-packages/starlette/routing.py", line 362, in handle
    await self.app(scope, receive, send)
  File "/Users/seankim/Projects/sphinx-test/.venv/lib/python3.9/site-packages/sphinx_autobuild/server.py", line 72, in __call__
    [task.result() for task in done]
  File "/Users/seankim/Projects/sphinx-test/.venv/lib/python3.9/site-packages/sphinx_autobuild/server.py", line 72, in <listcomp>
    [task.result() for task in done]
  File "/Users/seankim/Projects/sphinx-test/.venv/lib/python3.9/site-packages/sphinx_autobuild/server.py", line 76, in watch_reloads
    await self.flag.wait()
  File "/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.9/lib/python3.9/asyncio/locks.py", line 226, in wait
    await fut
RuntimeError: Task <Task pending name='Task-24' coro=<RebuildServer.watch_reloads() running at /Users/seankim/Projects/sphinx-test/.venv/lib/python3.9/site-packages/sphinx_autobuild/server.py:76> cb=[_wait.<locals>._on_completion() at /Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.9/lib/python3.9/asyncio/tasks.py:513]> got Future <Future pending> attached to a different loop

skimmedsquare avatar Sep 05 '24 23:09 skimmedsquare

Also seeing here, Python 3.9.18.

KyeRussell avatar Sep 09 '24 08:09 KyeRussell

There may be a problem with your installation:

/Users/seankim/Projects/sphinx-test/.venv/lib/python3.9/site-packages/urllib3/__init__.py:35: NotOpenSSLWarning: urllib3 v2 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020

...

RuntimeError: Task <Task pending name='Task-24' coro=<RebuildServer.watch_reloads() running at /Users/seankim/Projects/sphinx-test/.venv/lib/python3.9/site-packages/sphinx_autobuild/server.py:76> cb=[_wait.<locals>._on_completion() at /Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.9/lib/python3.9/asyncio/tasks.py:513]> got Future <Future pending> attached to a different loop

Can you try recreating your virtual environment, perhaps also with Python 3.12?

A

AA-Turner avatar Sep 17 '24 18:09 AA-Turner

Recreated the venv - happened to be using the Mac system python, however, even using 3.9.20 from pyenv still has errors.

(.venv) ➜  sphinx-test make livehtml
sphinx-autobuild "." "_build"
[sphinx-autobuild] Starting initial build
[sphinx-autobuild] > sphinx-build . _build
Running Sphinx v7.4.7
loading translations [en]... done
loading pickled environment... done
building [mo]: targets for 0 po files that are out of date
writing output...
building [html]: targets for 1 source files that are out of date
updating environment: 0 added, 1 changed, 0 removed
reading sources... [100%] index
looking for now-outdated files... none found
pickling environment... done
checking consistency... /Users/seankim/Projects/sphinx-test/.venv/lib/python3.9/site-packages/MarkupSafe-2.1.5.dist-info/LICENSE.rst: WARNING: document isn't included in any toctree
/Users/seankim/Projects/sphinx-test/.venv/lib/python3.9/site-packages/alabaster-0.7.16.dist-info/LICENSE.rst: WARNING: document isn't included in any toctree
/Users/seankim/Projects/sphinx-test/.venv/lib/python3.9/site-packages/click-8.1.7.dist-info/LICENSE.rst: WARNING: document isn't included in any toctree
/Users/seankim/Projects/sphinx-test/.venv/lib/python3.9/site-packages/imagesize-1.4.1.dist-info/LICENSE.rst: WARNING: document isn't included in any toctree
/Users/seankim/Projects/sphinx-test/.venv/lib/python3.9/site-packages/sphinx-7.4.7.dist-info/LICENSE.rst: WARNING: document isn't included in any toctree
/Users/seankim/Projects/sphinx-test/.venv/lib/python3.9/site-packages/sphinx/ext/autosummary/templates/autosummary/base.rst: WARNING: document isn't included in any toctree
/Users/seankim/Projects/sphinx-test/.venv/lib/python3.9/site-packages/sphinx/ext/autosummary/templates/autosummary/class.rst: WARNING: document isn't included in any toctree
/Users/seankim/Projects/sphinx-test/.venv/lib/python3.9/site-packages/sphinx/ext/autosummary/templates/autosummary/module.rst: WARNING: document isn't included in any toctree
/Users/seankim/Projects/sphinx-test/.venv/lib/python3.9/site-packages/sphinx_autobuild-2024.9.3.dist-info/LICENSE.rst: WARNING: document isn't included in any toctree
done
preparing documents... done
copying assets...
copying static files... done
copying extra files... done
copying assets: done
writing output... [100%] index
generating indices... genindex done
writing additional pages... search done
dumping search index in English (code: en)... done
dumping object inventory... done
build succeeded, 9 warnings.

The HTML pages are in _build.
[sphinx-autobuild] Serving on http://127.0.0.1:8000
[sphinx-autobuild] Waiting to detect changes...
ERROR:    Exception in ASGI application
Traceback (most recent call last):
  File "/Users/seankim/Projects/sphinx-test/.venv/lib/python3.9/site-packages/uvicorn/protocols/websockets/websockets_impl.py", line 244, in run_asgi
    result = await self.app(self.scope, self.asgi_receive, self.asgi_send)  # type: ignore[func-returns-value]
  File "/Users/seankim/Projects/sphinx-test/.venv/lib/python3.9/site-packages/uvicorn/middleware/proxy_headers.py", line 70, in __call__
    return await self.app(scope, receive, send)
  File "/Users/seankim/Projects/sphinx-test/.venv/lib/python3.9/site-packages/starlette/applications.py", line 113, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/Users/seankim/Projects/sphinx-test/.venv/lib/python3.9/site-packages/starlette/middleware/errors.py", line 152, in __call__
    await self.app(scope, receive, send)
  File "/Users/seankim/Projects/sphinx-test/.venv/lib/python3.9/site-packages/sphinx_autobuild/middleware.py", line 29, in __call__
    await self.app(scope, receive, send)
  File "/Users/seankim/Projects/sphinx-test/.venv/lib/python3.9/site-packages/starlette/middleware/exceptions.py", line 62, in __call__
    await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
  File "/Users/seankim/Projects/sphinx-test/.venv/lib/python3.9/site-packages/starlette/_exception_handler.py", line 62, in wrapped_app
    raise exc
  File "/Users/seankim/Projects/sphinx-test/.venv/lib/python3.9/site-packages/starlette/_exception_handler.py", line 51, in wrapped_app
    await app(scope, receive, sender)
  File "/Users/seankim/Projects/sphinx-test/.venv/lib/python3.9/site-packages/starlette/routing.py", line 715, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/Users/seankim/Projects/sphinx-test/.venv/lib/python3.9/site-packages/starlette/routing.py", line 735, in app
    await route.handle(scope, receive, send)
  File "/Users/seankim/Projects/sphinx-test/.venv/lib/python3.9/site-packages/starlette/routing.py", line 362, in handle
    await self.app(scope, receive, send)
  File "/Users/seankim/Projects/sphinx-test/.venv/lib/python3.9/site-packages/sphinx_autobuild/server.py", line 72, in __call__
    [task.result() for task in done]
  File "/Users/seankim/Projects/sphinx-test/.venv/lib/python3.9/site-packages/sphinx_autobuild/server.py", line 72, in <listcomp>
    [task.result() for task in done]
  File "/Users/seankim/Projects/sphinx-test/.venv/lib/python3.9/site-packages/sphinx_autobuild/server.py", line 76, in watch_reloads
    await self.flag.wait()
  File "/Users/seankim/.pyenv/versions/3.9.20/lib/python3.9/asyncio/locks.py", line 226, in wait
    await fut
RuntimeError: Task <Task pending name='Task-18' coro=<RebuildServer.watch_reloads() running at /Users/seankim/Projects/sphinx-test/.venv/lib/python3.9/site-packages/sphinx_autobuild/server.py:76> cb=[_wait.<locals>._on_completion() at /Users/seankim/.pyenv/versions/3.9.20/lib/python3.9/asyncio/tasks.py:509]> got Future <Future pending> attached to a different loop

I'll try with 3.12 and see if that works

skimmedsquare avatar Sep 26 '24 00:09 skimmedsquare

I had the same issue on 3.9.19 and then tested on 3.10.13 and it caught changes, so seems to be a 3.9 issue.

jdillard avatar Oct 02 '24 15:10 jdillard

I had the same issue on 3.9.19 and then tested on 3.10.13 and it caught changes, so seems to be a 3.9 issue.

Switching from 3.9 to 3.10 solved my issue as well.

yq-leo avatar Feb 17 '25 07:02 yq-leo

I have submitted a fix for this in #182. The latest Sphinx now requires Python>=3.11, but I believe this would be a considerate change as many projects are still working with Python>=3.9.

Even if not, the rebuild test code I added might still be useful.

MtkN1 avatar Feb 20 '25 05:02 MtkN1

This issue can be closed by #189.

MtkN1 avatar May 28 '25 08:05 MtkN1