def run_upgrade_hooks(self, outputfunc=None): """Executes registered functions to upgrade config version to the latest""" if self._version == Version(0, 0, 0, 'dev', 0): # This is a freshly created config self._version = PICARD_VERSION self._write_version() return if not self._upgrade_hooks: return if self._version >= PICARD_VERSION: if self._version > PICARD_VERSION: print("Warning: config file %s was created by a more recent " "version of Picard (current is %s)" % ( self._version.to_string(), PICARD_VERSION.to_string() )) return for version in sorted(self._upgrade_hooks): hook = self._upgrade_hooks[version] if self._version < version: try: if outputfunc and hook['func'].__doc__: outputfunc("Config upgrade %s -> %s: %s" % ( self._version.to_string(), version.to_string(), hook['func'].__doc__.strip())) hook['func'](self, *hook['args']) except BaseException: import traceback raise ConfigUpgradeError( "Error during config upgrade from version %s to %s " "using %s():\n%s" % ( self._version.to_string(), version.to_string(), hook['func'].__name__, traceback.format_exc() )) else: hook['done'] = True self._version = version self._write_version() else: # hook is not applicable, mark as done hook['done'] = True if all(map(itemgetter("done"), self._upgrade_hooks.values())): # all hooks were executed, ensure config is marked with latest version self._version = PICARD_VERSION self._write_version()
ACOUSTID_KEY = 'v8pQ6oyB' ACOUSTID_HOST = 'api.acoustid.org' ACOUSTID_PORT = 80 FPCALC_NAMES = ['fpcalc', 'pyfpcalc'] # MB OAuth client credentials MUSICBRAINZ_OAUTH_CLIENT_ID = 'ACa9wsDX19cLp-AeEP-vVw' MUSICBRAINZ_OAUTH_CLIENT_SECRET = 'xIsvXbIuntaLuRRhzuazOA' # Cover art archive URL and port CAA_HOST = "coverartarchive.org" CAA_PORT = 443 # Prepare documentation URLs if PICARD_VERSION.identifier == 'final': DOCS_VERSION = "v{}/".format(PICARD_VERSION.to_string(short=True)) else: DOCS_VERSION = "" # points to latest version DOCS_LANGUAGE = 'en' DOCS_BASE_URL = "https://picard-docs.musicbrainz.org/" + DOCS_VERSION + DOCS_LANGUAGE # URLs PICARD_URLS = { 'home': "https://picard.musicbrainz.org/", 'documentation': DOCS_BASE_URL + '/', 'troubleshooting': DOCS_BASE_URL + '/troubleshooting/troubleshooting.html', 'doc_options': DOCS_BASE_URL + '/config/configuration.html', 'doc_scripting': DOCS_BASE_URL + '/scripting.html', 'doc_cover_art_types': "https://musicbrainz.org/doc/Cover_Art/Types", 'plugins': "https://picard.musicbrainz.org/plugins/", 'forum': "https://community.metabrainz.org/c/picard",