| # -*- coding: utf-8 -*- | |
| """Sphinx extension for llvm-project MLIR syntax highlighting.""" | |
| import importlib.util | |
| from pathlib import Path | |
| import sys | |
| from typing import Dict | |
| from llvm_sphinx.help import venv_help | |
| try: | |
| from sphinx.application import Sphinx | |
| except ImportError as err: | |
| print(venv_help(err), file=sys.stderr) | |
| raise | |
| __version__ = "1.0" | |
| def _load_mlir_lexer(): | |
| lexer_path = ( | |
| Path(__file__).resolve().parents[4] | |
| / "mlir" | |
| / "utils" | |
| / "pygments" | |
| / "mlir_lexer.py" | |
| ) | |
| spec = importlib.util.spec_from_file_location("llvm_sphinx_mlir_lexer", lexer_path) | |
| module = importlib.util.module_from_spec(spec) | |
| spec.loader.exec_module(module) | |
| return module.MlirLexer | |
| def setup(app: Sphinx) -> Dict[str, object]: | |
| app.add_lexer("mlir", _load_mlir_lexer()) | |
| return { | |
| "version": __version__, | |
| "parallel_read_safe": True, | |
| "parallel_write_safe": True, | |
| } |