Move exceptions to mopidy.exceptions

This commit is contained in:
Stein Magnus Jodal 2012-10-16 16:08:46 +02:00
parent 7c997d9221
commit d9d6a3d5b6
13 changed files with 55 additions and 58 deletions

View File

@ -48,28 +48,6 @@ def get_python():
return u' '.join([implementation, version])
class MopidyException(Exception):
def __init__(self, message, *args, **kwargs):
super(MopidyException, self).__init__(message, *args, **kwargs)
self._message = message
@property
def message(self):
"""Reimplement message field that was deprecated in Python 2.6"""
return self._message
@message.setter # noqa
def message(self, message):
self._message = message
class SettingsError(MopidyException):
pass
class OptionalDependencyError(MopidyException):
pass
from mopidy import settings as default_settings_module
from mopidy.utils.settings import SettingsProxy
settings = SettingsProxy(default_settings_module)

View File

@ -29,7 +29,7 @@ sys.path.insert(
import mopidy
from mopidy import audio, core, settings, utils
from mopidy import audio, core, exceptions, settings, utils
from mopidy.utils import log, path, process
from mopidy.utils.deps import list_deps_optparse_callback
from mopidy.utils.settings import list_settings_optparse_callback
@ -51,7 +51,7 @@ def main():
core_ref = setup_core(audio_ref, backend_ref)
setup_frontends(core_ref)
loop.run()
except mopidy.SettingsError as ex:
except exceptions.SettingsError as ex:
logger.error(ex.message)
except KeyboardInterrupt:
logger.info(u'Interrupted. Exiting...')
@ -117,7 +117,7 @@ def setup_settings(interactive):
path.get_or_create_file(mopidy.SETTINGS_FILE)
try:
settings.validate(interactive)
except mopidy.SettingsError as ex:
except exceptions.SettingsError as ex:
logger.error(ex.message)
sys.exit(1)
@ -150,7 +150,7 @@ def setup_frontends(core):
for frontend_class_name in settings.FRONTENDS:
try:
utils.get_class(frontend_class_name).start(core=core)
except mopidy.OptionalDependencyError as ex:
except exceptions.OptionalDependencyError as ex:
logger.info(u'Disabled: %s (%s)', frontend_class_name, ex)
@ -158,7 +158,7 @@ def stop_frontends():
for frontend_class_name in settings.FRONTENDS:
try:
process.stop_actors_by_class(utils.get_class(frontend_class_name))
except mopidy.OptionalDependencyError:
except exceptions.OptionalDependencyError:
pass

21
mopidy/exceptions.py Normal file
View File

@ -0,0 +1,21 @@
class MopidyException(Exception):
def __init__(self, message, *args, **kwargs):
super(MopidyException, self).__init__(message, *args, **kwargs)
self._message = message
@property
def message(self):
"""Reimplement message field that was deprecated in Python 2.6"""
return self._message
@message.setter # noqa
def message(self, message):
self._message = message
class SettingsError(MopidyException):
pass
class OptionalDependencyError(MopidyException):
pass

View File

@ -1,16 +1,14 @@
import logging
import time
from pykka.actor import ThreadingActor
from mopidy import core, exceptions, settings
try:
import pylast
except ImportError as import_error:
from mopidy import OptionalDependencyError
raise OptionalDependencyError(import_error)
from pykka.actor import ThreadingActor
from mopidy import core, settings, SettingsError
raise exceptions.OptionalDependencyError(import_error)
logger = logging.getLogger('mopidy.frontends.lastfm')
@ -50,7 +48,7 @@ class LastfmFrontend(ThreadingActor, core.CoreListener):
api_key=API_KEY, api_secret=API_SECRET,
username=username, password_hash=password_hash)
logger.info(u'Connected to Last.fm')
except SettingsError as e:
except exceptions.SettingsError as e:
logger.info(u'Last.fm scrobbler not started')
logger.debug(u'Last.fm settings error: %s', e)
self.stop()

View File

@ -1,4 +1,4 @@
from mopidy import MopidyException
from mopidy.exceptions import MopidyException
class MpdAckError(MopidyException):

View File

@ -1,5 +1,10 @@
import logging
from pykka.actor import ThreadingActor
from mopidy import core, settings
from mopidy.frontends.mpris import objects
logger = logging.getLogger('mopidy.frontends.mpris')
try:
@ -8,11 +13,6 @@ except ImportError as import_error:
indicate = None # noqa
logger.debug(u'Startup notification will not be sent (%s)', import_error)
from pykka.actor import ThreadingActor
from mopidy import core, settings
from mopidy.frontends.mpris import objects
class MprisFrontend(ThreadingActor, core.CoreListener):
"""

View File

@ -7,7 +7,7 @@ try:
import dbus.service
import gobject
except ImportError as import_error:
from mopidy import OptionalDependencyError
from mopidy.exceptions import OptionalDependencyError
raise OptionalDependencyError(import_error)
from mopidy import settings

View File

@ -6,7 +6,7 @@ import threading
from pykka import ActorDeadError
from pykka.registry import ActorRegistry
from mopidy import SettingsError
from mopidy import exceptions
logger = logging.getLogger('mopidy.utils.process')
@ -59,7 +59,7 @@ class BaseThread(threading.Thread):
self.run_inside_try()
except KeyboardInterrupt:
logger.info(u'Interrupted by user')
except SettingsError as e:
except exceptions.SettingsError as e:
logger.error(e.message)
except ImportError as e:
logger.error(e)

View File

@ -8,7 +8,7 @@ import os
import pprint
import sys
from mopidy import SettingsError, SETTINGS_PATH, SETTINGS_FILE
from mopidy import exceptions, SETTINGS_PATH, SETTINGS_FILE
from mopidy.utils import log
from mopidy.utils import path
@ -53,11 +53,11 @@ class SettingsProxy(object):
current = self.current # bind locally to avoid copying+updates
if attr not in current:
raise SettingsError(u'Setting "%s" is not set.' % attr)
raise exceptions.SettingsError(u'Setting "%s" is not set.' % attr)
value = current[attr]
if isinstance(value, basestring) and len(value) == 0:
raise SettingsError(u'Setting "%s" is empty.' % attr)
raise exceptions.SettingsError(u'Setting "%s" is empty.' % attr)
if not value:
return value
if attr.endswith('_PATH') or attr.endswith('_FILE'):
@ -77,7 +77,7 @@ class SettingsProxy(object):
logger.error(
u'Settings validation errors: %s',
log.indent(self.get_errors_as_string()))
raise SettingsError(u'Settings validation failed.')
raise exceptions.SettingsError(u'Settings validation failed.')
def _read_missing_settings_from_stdin(self, current, runtime):
for setting, value in sorted(current.iteritems()):

View File

@ -2,7 +2,7 @@ import sys
import mock
from mopidy import OptionalDependencyError
from mopidy.exceptions import OptionalDependencyError
from mopidy.models import Track
try:

View File

@ -4,14 +4,14 @@ import mock
from pykka.registry import ActorRegistry
from mopidy import core, OptionalDependencyError
from mopidy import core, exceptions
from mopidy.backends import dummy
from mopidy.core import PlaybackState
from mopidy.models import Album, Artist, Track
try:
from mopidy.frontends.mpris import objects
except OptionalDependencyError:
except exceptions.OptionalDependencyError:
pass
from tests import unittest

View File

@ -4,12 +4,12 @@ import mock
from pykka.registry import ActorRegistry
from mopidy import core, settings, OptionalDependencyError
from mopidy import core, exceptions, settings
from mopidy.backends import dummy
try:
from mopidy.frontends.mpris import objects
except OptionalDependencyError:
except exceptions.OptionalDependencyError:
pass
from tests import unittest

View File

@ -1,6 +1,6 @@
import os
import mopidy
from mopidy import exceptions, settings
from mopidy.utils import settings as setting_utils
from tests import unittest
@ -79,7 +79,7 @@ class ValidateSettingsTest(unittest.TestCase):
class SettingsProxyTest(unittest.TestCase):
def setUp(self):
self.settings = setting_utils.SettingsProxy(mopidy.settings)
self.settings = setting_utils.SettingsProxy(settings)
self.settings.local.clear()
def test_set_and_get_attr(self):
@ -90,7 +90,7 @@ class SettingsProxyTest(unittest.TestCase):
try:
self.settings.TEST
self.fail(u'Should raise exception')
except mopidy.SettingsError as e:
except exceptions.SettingsError as e:
self.assertEqual(u'Setting "TEST" is not set.', e.message)
def test_getattr_raises_error_on_empty_setting(self):
@ -98,7 +98,7 @@ class SettingsProxyTest(unittest.TestCase):
try:
self.settings.TEST
self.fail(u'Should raise exception')
except mopidy.SettingsError as e:
except exceptions.SettingsError as e:
self.assertEqual(u'Setting "TEST" is empty.', e.message)
def test_getattr_does_not_raise_error_if_setting_is_false(self):
@ -184,7 +184,7 @@ class SettingsProxyTest(unittest.TestCase):
class FormatSettingListTest(unittest.TestCase):
def setUp(self):
self.settings = setting_utils.SettingsProxy(mopidy.settings)
self.settings = setting_utils.SettingsProxy(settings)
def test_contains_the_setting_name(self):
self.settings.TEST = u'test'