a TaskException already wraps another exception; raising it gives a
hard-to-read multi-line message instead of showing the clean wrapped
original backtrace; for comparison, an asserton error in image.py line
253:
exception AssertionError at /home/chrysn/git/whipper/morituri/image/image.py:253: stop(): Track length was not found; look for earlier errors in debug log (set RIP_DEBUG=4)
Traceback (most recent call last):
File "/home/chrysn/git/whipper/morituri/extern/task/task.py", line 497, in _startWrap
task.start(self)
File "/home/chrysn/git/whipper/morituri/extern/task/task.py", line 395, in start
BaseMultiTask.start(self, runner)
File "/home/chrysn/git/whipper/morituri/extern/task/task.py", line 330, in start
self.next()
File "/home/chrysn/git/whipper/morituri/extern/task/task.py", line 401, in next
BaseMultiTask.next(self)
File "/home/chrysn/git/whipper/morituri/extern/task/task.py", line 351, in next
self.stop()
File "/home/chrysn/git/whipper/morituri/image/image.py", line 253, in stop
assert taskk.length is not None, "Track length was not found; look for earlier errors in debug log (set RIP_DEBUG=4)"
AssertionError: Track length was not found; look for earlier errors in debug log (set RIP_DEBUG=4)
vs.
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/home/chrysn/git/whipper/morituri/rip/main.py", line 27, in main
ret = c.parse(sys.argv[1:])
File "/home/chrysn/git/whipper/morituri/rip/main.py", line 94, in parse
logcommand.LogCommand.parse(self, argv)
File "/home/chrysn/git/whipper/morituri/common/logcommand.py", line 62, in parse
command.Command.parse(self, argv)
File "/home/chrysn/git/whipper/morituri/extern/command/command.py", line 401, in parse
return self.subCommands[command].parse(args[1:])
File "/home/chrysn/git/whipper/morituri/common/logcommand.py", line 62, in parse
command.Command.parse(self, argv)
File "/home/chrysn/git/whipper/morituri/extern/command/command.py", line 401, in parse
return self.subCommands[command].parse(args[1:])
File "/home/chrysn/git/whipper/morituri/common/logcommand.py", line 62, in parse
command.Command.parse(self, argv)
File "/home/chrysn/git/whipper/morituri/extern/command/command.py", line 363, in parse
ret = self.do(args)
File "/home/chrysn/git/whipper/morituri/rip/image.py", line 184, in do
cueImage.setup(runner)
File "/home/chrysn/git/whipper/morituri/image/image.py", line 75, in setup
runner.run(verify)
File "/home/chrysn/git/whipper/morituri/extern/task/task.py", line 490, in run
raise TaskException(task.exception, message=msg)
morituri.extern.task.task.TaskException: (AssertionError('Track length was not found; look for earlier errors in debug log (set RIP_DEBUG=4)',), 'exception AssertionError at /home/chrysn/git/whipper/morituri/image/image.py:253: stop(): Track length was not found; look for earlier errors in debug log (set RIP_DEBUG=4)\nTraceback (most recent call last):\n File "/home/chrysn/git/whipper/morituri/extern/task/task.py", line 497, in _startWrap\n task.start(self)\n File "/home/chrysn/git/whipper/morituri/extern/task/task.py", line 395, in start\n BaseMultiTask.start(self, runner)\n File "/home/chrysn/git/whipper/morituri/extern/task/task.py", line 330, in start\n self.next()\n File "/home/chrysn/git/whipper/morituri/extern/task/task.py", line 401, in next\n BaseMultiTask.next(self)\n File "/home/chrysn/git/whipper/morituri/extern/task/task.py", line 351, in next\n self.stop()\n File "/home/chrysn/git/whipper/morituri/image/image.py", line 253, in stop\n assert taskk.length is not None, "Track length was not found; look for earlier errors in debug log (set RIP_DEBUG=4)"\nAssertionError: Track length was not found; look for earlier errors in debug log (set RIP_DEBUG=4)\n')
* Address issue #24
* Remove getReadCaches() & replace it with getCache()
Now whipper always follows XDG specifications. All changes were documented into the README file.
The changes introduced here aren't backward compatible so, after updating whipper, you may need to configure it again (old config file are retained, though).
* morituri/result/result.py:
* morituri/rip/cd.py:
* morituri/rip/main.py:
Expose loggers as pluggable.
Add --logger option to rip cd rip to specify logger.
Templates should have same number of slashes.
This avoids #66.
(Possibly, it should also be the same directory, or more code
should be written to handle that case).
* morituri/rip/main.py:
Catch CommandError.
Add an EmptyError.
* morituri/common/checksum.py:
Set it when we don't get any frames.
* morituri/rip/main.py:
Catch it and stop ripping if this happens.
* morituri/rip/Makefile.am:
* morituri/rip/main.py:
* morituri/rip/accurip.py (added):
Add a rip accurip show command to show the accuraterip information
for a given URL. See #5.