デバッグ¶
vscode¶
launch.json¶
https://srbrnote.work/archives/4231
{
"name": "Sphinx",
"type": "python",
"request": "launch",
"module": "sphinx",
"args": [
".",
"build"
],
"justMyCode": false
}
とすることで F5
で sphinx を実行できる。
"justMyCode": false
がみそで、これがあると外部ライブラリの中でもブレイクできる。
problemMatcher¶
venv¶
sphinx のソースをステップ実行したり、ブレイクポイントを置いたりするので、 .venv
があった方がやりやすい。
.venv/Lib/site-packages/sphinx
内に潜ってゆく。
> py -m venv .venv
> .\.venv\Scripts\Activate.ps1
(.venv) > pip install sphinx-autobuild myst-parser
.venv も search 対象に入れる。
.vscode/settings.json
"search.useIgnoreFiles": false
mod¶
phase¶
@property
def phase(self):
return self._phase
@phase.setter
def phase(self, value: BuildPhase):
from .util.console import colorize
color_phase = colorize('yellow', value.name)
logger.info(f'phase: {color_phase}')
self._phase = value
def emit(self, name: str, *args: Any,
allowed_exceptions: Tuple[Type[Exception], ...] = ()) -> List:
"""Emit a Sphinx event."""
try:
from .util.console import colorize
logger.debug(f'[app] emitting event: {colorize("green", name)}{repr(args)[:100]}')
except Exception:
# not every object likes to be repr()'d (think
# random stuff coming via autodoc)
pass