There's no need for extra traceback, use `raise from`.
Before:
```
Traceback (most recent call last):
File "/home/zas/src/picard/./picard/config.py", line 318, in run_upgrade_hooks
hook(self)
File "/home/zas/src/picard/./picard/config_upgrade.py", line 174, in upgrade_to_v1_3_0dev4
raise Exception("test")
Exception: test
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/zas/src/picard/tagger.py", line 17, in <module>
main(os.path.join(basedir, 'locale'), True)
File "/home/zas/src/picard/./picard/tagger.py", line 1567, in main
tagger = Tagger(picard_args, localedir, autoupdate, pipe_handler=pipe_handler)
File "/home/zas/src/picard/./picard/tagger.py", line 337, in __init__
upgrade_config(config)
File "/home/zas/src/picard/./picard/config_upgrade.py", line 574, in upgrade_config
config.run_upgrade_hooks(log.debug)
File "/home/zas/src/picard/./picard/config.py", line 321, in run_upgrade_hooks
raise ConfigUpgradeError(
picard.config.ConfigUpgradeError: Error during config upgrade from version 1.3.0.dev3 to 1.3.0.dev4 using upgrade_to_v1_3_0dev4():
Traceback (most recent call last):
File "/home/zas/src/picard/./picard/config.py", line 318, in run_upgrade_hooks
hook(self)
File "/home/zas/src/picard/./picard/config_upgrade.py", line 174, in upgrade_to_v1_3_0dev4
raise Exception("test")
Exception: test
```
After:
```
Traceback (most recent call last):
File "/home/zas/src/picard/./picard/config.py", line 318, in run_upgrade_hooks
hook(self)
File "/home/zas/src/picard/./picard/config_upgrade.py", line 174, in upgrade_to_v1_3_0dev4
raise Exception("test")
Exception: test
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/home/zas/src/picard/tagger.py", line 17, in <module>
main(os.path.join(basedir, 'locale'), True)
File "/home/zas/src/picard/./picard/tagger.py", line 1567, in main
tagger = Tagger(picard_args, localedir, autoupdate, pipe_handler=pipe_handler)
File "/home/zas/src/picard/./picard/tagger.py", line 337, in __init__
upgrade_config(config)
File "/home/zas/src/picard/./picard/config_upgrade.py", line 574, in upgrade_config
config.run_upgrade_hooks(log.debug)
File "/home/zas/src/picard/./picard/config.py", line 320, in run_upgrade_hooks
raise ConfigUpgradeError(
picard.config.ConfigUpgradeError: Error during config upgrade from version 1.3.0.dev3 to 1.3.0.dev4 using upgrade_to_v1_3_0dev4()
```
MusicBrainz Picard
MusicBrainz Picard is a cross-platform (Linux, macOS, Windows) audio tagging application. It is the official MusicBrainz tagger.
Picard supports the majority of audio file formats, is capable of using audio fingerprints (AcoustIDs), performing CD lookups and disc ID submissions, and it has excellent Unicode support. Additionally, there are several plugins available that extend Picard's features.
When tagging files, Picard uses an album-oriented approach. This approach allows it to utilize the MusicBrainz data as effectively as possible and correctly tag your music. For more information, see the illustrated quick start guide to tagging and the documentation.
Features
- Multiple formats: Picard supports all popular music formats, including MP3, FLAC, OGG, M4A, WMA, WAV, and more.
- AcoustID: Picard uses AcoustID audio fingerprints, allowing files to be identified by the actual music, even if they have no metadata.
- Comprehensive database: Picard uses the open and community-maintained MusicBrainz database to provide accurate information about millions of music releases.
- CD lookups: Picard can lookup entire music CDs with a click.
- Plugin support: If you need a particular feature, you can choose from a selection of available plugins or write your own.
- Scripting: A flexible and powerful, yet easy to learn, scripting language allows you to exactly specify how your music files will be named and how the tags will look like.
- Cover Art: Picard can find and download the correct cover art for your albums.
- Open Source: Picard is licensed under the GNU General Public License 2.0 or later, and is hosted on GitHub where it is actively developed.
Installation
Binary downloads are available on the Picard download page.
INSTALL.md has instructions on building this codebase.
Support and issue reporting
Please report all bugs and feature requests in the MusicBrainz issue tracker. If you need support in using Picard please read the documentation first and have a look at the MusicBrainz community forums.
Trivia
Picard is named after Captain Jean-Luc Picard from the TV series Star Trek: The Next Generation.