Anonoei / klipper_auto_speed

Klipper module for automatically calculating your printer's maximum acceleration/velocity
MIT License
198 stars 18 forks source link

Crash with KeyError if klippy does not have a logfile specified on the command line. #21

Open Laikulo opened 4 months ago

Laikulo commented 4 months ago

Synopsis: If the klipper host is not writing to a logfile, and logs are going to stdout/stderr, extra drops a stacktrace and fails to configure

Expected: If results_dir is specified in config, that is used. If log_file and the config dir guess both turn up unusable, default to /tmp (or similar), or print a message and halt.

Actual:

crashes here: https://github.com/Anonoei/klipper_auto_speed/blob/a5ee2fb79fa888b1058422b42ad26aa96489378c/autospeed/main.py#L54

Stacktrace from my setup, which uses a modified klipper, and packages extras as wheels:

Mar 31 16:59:16 voron klipper-klippy[705]: ERROR:root:Unhandled exception during connect
Mar 31 16:59:16 voron klipper-klippy[705]: Traceback (most recent call last):
Mar 31 16:59:16 voron klipper-klippy[705]:   File "/var/lib/klippy/.local/lib/python3.9/site-packages/klippy/klippy.py", line 183, in _connect
Mar 31 16:59:16 voron klipper-klippy[705]:     self._read_config()
Mar 31 16:59:16 voron klipper-klippy[705]:   File "/var/lib/klippy/.local/lib/python3.9/site-packages/klippy/klippy.py", line 149, in _read_config
Mar 31 16:59:16 voron klipper-klippy[705]:     self.load_object(config, section_config.get_name(), None)
Mar 31 16:59:16 voron klipper-klippy[705]:   File "/var/lib/klippy/.local/lib/python3.9/site-packages/klippy/klippy.py", line 138, in load_object
Mar 31 16:59:16 voron klipper-klippy[705]:     self.objects[section] = init_func(config.getsection(section))
Mar 31 16:59:16 voron klipper-klippy[705]:   File "/var/lib/klippy/.local/lib/python3.9/site-packages/autospeed/autospeed.py", line 4, in load_config
Mar 31 16:59:16 voron klipper-klippy[705]:     return AutoSpeed(config)
Mar 31 16:59:16 voron klipper-klippy[705]:   File "/var/lib/klippy/.local/lib/python3.9/site-packages/autospeed/main.py", line 54, in __init__
Mar 31 16:59:16 voron klipper-klippy[705]:     os.path.dirname(self.printer.start_args['log_file']),
Mar 31 16:59:16 voron klipper-klippy[705]: KeyError: 'log_file'

Was also able to reproduce on an installation as per this repo's docs on a more typical klipper setup.