[FEAT] Improve error report when config file failed to be parsed
Closed this issue · 2 comments
fdev31 commented
Check #83.
Could be improved and show the following:
/full/path/to/config.toml failed to load: tomllib.TOMLDecodeError: Invalid value (at line 2, column 11)
dantefromhell commented
Just upgraded to 2.2.15
and found a tomllib.TOMLDecodeError
error + stacktrace (see below) in my log when using the following config snippet that includes a typo
[system_notifier]
default_color = "#bbccba
Stack trace
2024-05-03 20:24:38,139 [DEBUG] pyprland :: run_reload() :: command.py:180
2024-05-03 20:24:38,139 [INFO] pypr :: Loading /home/dante/.config/hypr/pyprland.toml :: command.py:94
2024-05-03 20:24:38,139 [INFO] pypr :: Loading /home/dante/.config/overrides/pyprland/99__testing.toml :: command.py:94
2024-05-03 20:24:38,139 [CRITICAL] pypr :: Problem reading /home/dante/.config/overrides/pyprland/99__testing.toml: Illegal character '\n' (at line 2, column 25) :: command.py:76
2024-05-03 20:24:38,139 [DEBUG] ipc :: notify 0 5000 rgb(ff1010) Pyprland failed to read config: Illegal character '\n' (at line 2, column 25) :: ipc.py:126
2024-05-03 20:24:38,140 [WARNING] pypr :: pyprland::run_reload(()) failed: :: command.py:201
2024-05-03 20:24:38,140 [ERROR] pypr :: :: command.py:202
Traceback (most recent call last):
File "/nix/store/ny2vkb435dswji452bndpwdhwysqxq85-python3.11-pyprland-2.2.15/lib/python3.11/site-packages/pyprland/command.py", line 74, in __open_config
config = self.__load_config_file(fname)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/nix/store/ny2vkb435dswji452bndpwdhwysqxq85-python3.11-pyprland-2.2.15/lib/python3.11/site-packages/pyprland/command.py", line 96, in __load_config_file
config = tomllib.load(f)
^^^^^^^^^^^^^^^
File "/nix/store/glfr70gi7hfaj50mwj2431p8bg60fhqw-python3-3.11.9/lib/python3.11/tomllib/_parser.py", line66, in load
return loads(s, parse_float=parse_float)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/nix/store/glfr70gi7hfaj50mwj2431p8bg60fhqw-python3-3.11.9/lib/python3.11/tomllib/_parser.py", line102, in loads
pos = key_value_rule(src, pos, out, header, parse_float)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/nix/store/glfr70gi7hfaj50mwj2431p8bg60fhqw-python3-3.11.9/lib/python3.11/tomllib/_parser.py", line326, in key_value_rule
pos, key, value = parse_key_value_pair(src, pos, parse_float)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/nix/store/glfr70gi7hfaj50mwj2431p8bg60fhqw-python3-3.11.9/lib/python3.11/tomllib/_parser.py", line369, in parse_key_value_pair
pos, value = parse_value(src, pos, parse_float)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/nix/store/glfr70gi7hfaj50mwj2431p8bg60fhqw-python3-3.11.9/lib/python3.11/tomllib/_parser.py", line598, in parse_value
return parse_one_line_basic_str(src, pos)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/nix/store/glfr70gi7hfaj50mwj2431p8bg60fhqw-python3-3.11.9/lib/python3.11/tomllib/_parser.py", line409, in parse_one_line_basic_str
return parse_basic_str(src, pos, multiline=False)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/nix/store/glfr70gi7hfaj50mwj2431p8bg60fhqw-python3-3.11.9/lib/python3.11/tomllib/_parser.py", line580, in parse_basic_str
raise suffixed_err(src, pos, f"Illegal character {char!r}")
tomllib.TOMLDecodeError: Illegal character '\n' (at line 2, column 25)
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/nix/store/ny2vkb435dswji452bndpwdhwysqxq85-python3.11-pyprland-2.2.15/lib/python3.11/site-packages/pyprland/command.py", line 191, in _run_plugin_handler
await getattr(plugin, full_name)(*params)
File "/nix/store/ny2vkb435dswji452bndpwdhwysqxq85-python3.11-pyprland-2.2.15/lib/python3.11/site-packages/pyprland/command.py", line 170, in load_config
await self.__open_config()
File "/nix/store/ny2vkb435dswji452bndpwdhwysqxq85-python3.11-pyprland-2.2.15/lib/python3.11/site-packages/pyprland/command.py", line 86, in __open_config
merge(config, await self.__open_config(extra_config))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/nix/store/ny2vkb435dswji452bndpwdhwysqxq85-python3.11-pyprland-2.2.15/lib/python3.11/site-packages/pyprland/command.py", line 78, in __open_config
raise PyprError() from e
pyprland.types.PyprError
2024-05-03 20:24:38,142 [DEBUG] ipc :: notify 0 5000 rgb(ff1010) Pypr error pyprland::run_reload: :: ipc.py:126
Not sure if it makes more sense to re-open this issue or file a new one. Please advise.
fdev31 commented
Sorry I didn't see this, is it really the output you get?
With such I get this message:
Problem reading /home/fab/.config/hypr/pyprland.toml: Illegal character '\n' (at line 30, column 20)
Command failed.