-
Notifications
You must be signed in to change notification settings - Fork 6
Open
Labels
bugSomething isn't workingSomething isn't working
Description
For example, when a placeholder key contains too many parent references, this is the current error message:
─────────────────────────────── Traceback (most recent call last) ────────────────────────────────╮
│ E:\Projects\Complex-Hex\.venv\Lib\site-packages\hexdoc\cli\app.py:186 in build │
│ │
│ 183 │ For developers: returns the site path (eg. `/v/latest/main`). │
│ 184 │ """ │
│ 185 │ │
│ ❱ 186 │ props, pm, book_plugin, plugin = load_common_data(props_file, branch) │
│ 187 │ │
│ 188 │ if props.env.hexdoc_subdirectory: │
│ 189 │ │ output_dir /= props.env.hexdoc_subdirectory │
│ │
│ E:\Projects\Complex-Hex\.venv\Lib\site-packages\hexdoc\cli\utils\load.py:55 in load_common_data │
│ │
│ 52 │ *, │
│ 53 │ book: bool = False, │
│ 54 ) -> tuple[Properties, PluginManager, BookPlugin[Any], ModPlugin]: │
│ ❱ 55 │ props = Properties.load(props_file) │
│ 56 │ pm = PluginManager(branch, props) │
│ 57 │ │
│ 58 │ book_plugin = pm.book_plugin(props.book_type) │
│ │
│ E:\Projects\Complex-Hex\.venv\Lib\site-packages\hexdoc\core\properties.py:175 in load │
│ │
│ 172 │ def load(cls, path: Path) -> Self: │
│ 173 │ │ return cls.load_data( │
│ 174 │ │ │ props_dir=path.parent, │
│ ❱ 175 │ │ │ data=load_toml_with_placeholders(path), │
│ 176 │ │ ) │
│ 177 │ │
│ 178 │ @classmethod │
│ │
│ E:\Projects\Complex-Hex\.venv\Lib\site-packages\hexdoc\utils\deserialize\toml.py:135 in │
│ load_toml_with_placeholders │
│ │
│ 132 │
│ 133 def load_toml_with_placeholders(path: Path) -> TOMLDict: │
│ 134 │ data = tomllib.loads(path.read_text("utf-8")) │
│ ❱ 135 │ fill_placeholders(data) │
│ 136 │ return data │
│ 137 │
│ 138 │
│ │
│ E:\Projects\Complex-Hex\.venv\Lib\site-packages\hexdoc\utils\deserialize\toml.py:34 in │
│ fill_placeholders │
│ │
│ 31 │
│ 32 │
│ 33 def fill_placeholders(data: TOMLDict): │
│ ❱ 34 │ _fill_placeholders(data, [data], set()) │
│ 35 │
│ 36 │
│ 37 def _expand_placeholder( │
│ │
│ E:\Projects\Complex-Hex\.venv\Lib\site-packages\hexdoc\utils\deserialize\toml.py:130 in │
│ _fill_placeholders │
│ │
│ 127 ): │
│ 128 │ table = stack[-1] │
│ 129 │ for key, child in table.items(): │
│ ❱ 130 │ │ _handle_child(data, stack, expanded, key, child, table.__setitem__) │
│ 131 │
│ 132 │
│ 133 def load_toml_with_placeholders(path: Path) -> TOMLDict: │
│ │
│ E:\Projects\Complex-Hex\.venv\Lib\site-packages\hexdoc\utils\deserialize\toml.py:113 in │
│ _handle_child │
│ │
│ 110 │ │ case list(): │
│ 111 │ │ │ # handle each item in the list without adding the list to the stack │
│ 112 │ │ │ for i, item in enumerate(value): │
│ ❱ 113 │ │ │ │ _handle_child(data, stack, expanded, i, item, value.__setitem__) │
│ 114 │ │ │
│ 115 │ │ case dict(): │
│ 116 │ │ │ # recursion! │
│ │
│ E:\Projects\Complex-Hex\.venv\Lib\site-packages\hexdoc\utils\deserialize\toml.py:89 in │
│ _handle_child │
│ │
│ 86 │ │ │ # fill the string's placeholders │
│ 87 │ │ │ for match in reversed(list(_PLACEHOLDER_RE.finditer(value))): │
│ 88 │ │ │ │ try: │
│ ❱ 89 │ │ │ │ │ v = _expand_placeholder( │
│ 90 │ │ │ │ │ │ data, │
╰──────────────────────────────────────────────────────────────────────────────────────────────────╯
IndexError: list index out of range
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working
Type
Projects
Status
📋 Backlog