diff --git a/weboob/capabilities/bank.py b/weboob/capabilities/bank.py index e25c6014..ecae03a8 100644 --- a/weboob/capabilities/bank.py +++ b/weboob/capabilities/bank.py @@ -21,7 +21,7 @@ if sys.version_info[:2] <= (2, 5): from weboob.tools.property import property -from .cap import ICap +from .base import IBaseCap __all__ = ['Account', 'AccountNotFound', 'ICapBank', 'Operation'] @@ -85,7 +85,7 @@ class Operation(object): self._amount = float(value) -class ICapBank(ICap): +class ICapBank(IBaseCap): def iter_accounts(self): raise NotImplementedError() diff --git a/weboob/capabilities/cap.py b/weboob/capabilities/base.py similarity index 62% rename from weboob/capabilities/cap.py rename to weboob/capabilities/base.py index b0ab8a9a..4caebf52 100644 --- a/weboob/capabilities/cap.py +++ b/weboob/capabilities/base.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -# Copyright(C) 2010 Romain Bignon +# Copyright(C) 2010 Christophe Benz # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -16,5 +16,26 @@ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -class ICap(object): +__all__ = ['IBaseCap', 'NotLoaded', 'LoadingError'] + + +class NotLoadedMeta(type): + def __unicode__(self): + return u'Not loaded' + + +class NotLoaded(object): + __metaclass__ = NotLoadedMeta + + +class LoadingErrorMeta(type): + def __unicode__(self): + return u'Loading error' + + +class LoadingError(object): + __metaclass__ = LoadingErrorMeta + + +class IBaseCap(object): pass diff --git a/weboob/capabilities/chat.py b/weboob/capabilities/chat.py index 75e0cad8..b40e9de9 100644 --- a/weboob/capabilities/chat.py +++ b/weboob/capabilities/chat.py @@ -18,7 +18,7 @@ import datetime -from .cap import ICap +from .base import IBaseCap __all__ = ['ChatException', 'ICapChat'] @@ -36,7 +36,7 @@ class ChatMessage(object): self.date = datetime.datetime.utcnow() if date is None else date -class ICapChat(ICap): +class ICapChat(IBaseCap): def iter_chat_messages(self, _id=None): raise NotImplementedError() diff --git a/weboob/capabilities/contact.py b/weboob/capabilities/contact.py index 656f4053..8afd8a6d 100644 --- a/weboob/capabilities/contact.py +++ b/weboob/capabilities/contact.py @@ -16,7 +16,7 @@ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -from .cap import ICap +from .base import IBaseCap from weboob.tools.ordereddict import OrderedDict @@ -85,7 +85,7 @@ class Contact(object): 'profile': self.profile, }.iteritems() -class ICapContact(ICap): +class ICapContact(IBaseCap): def iter_contacts(self, status=Contact.STATUS_ALL, ids=None): """ Iter contacts diff --git a/weboob/capabilities/dating.py b/weboob/capabilities/dating.py index 52cbbc1e..cc9d24d5 100644 --- a/weboob/capabilities/dating.py +++ b/weboob/capabilities/dating.py @@ -16,7 +16,7 @@ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -from .cap import ICap +from .base import IBaseCap __all__ = ['ICapDating'] @@ -45,7 +45,7 @@ class StatusField(object): self.flags = flags -class ICapDating(ICap): +class ICapDating(IBaseCap): def get_status(self): """ Get a list of fields diff --git a/weboob/capabilities/messages.py b/weboob/capabilities/messages.py index ff48da20..d77c22c0 100644 --- a/weboob/capabilities/messages.py +++ b/weboob/capabilities/messages.py @@ -19,7 +19,7 @@ import datetime import time -from .cap import ICap +from .base import IBaseCap __all__ = ['ICapMessages', 'ICapMessagesReply', 'Message'] @@ -83,7 +83,7 @@ class Message(object): self.thread_id, self.id, self.title, self.date, self.sender) return result.encode('utf-8') -class ICapMessages(ICap): +class ICapMessages(IBaseCap): def iter_new_messages(self, thread=None): """ Iterates on new messages from last time this function has been called. @@ -102,7 +102,7 @@ class ICapMessages(ICap): """ raise NotImplementedError() -class ICapMessagesReply(ICap): +class ICapMessagesReply(IBaseCap): def post_reply(self, thread_id, reply_id, title, message): """ Post a reply. diff --git a/weboob/capabilities/torrent.py b/weboob/capabilities/torrent.py index 705ca12c..3b87a408 100644 --- a/weboob/capabilities/torrent.py +++ b/weboob/capabilities/torrent.py @@ -16,7 +16,7 @@ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -from .cap import ICap +from .base import IBaseCap __all__ = ['ICapTorrent', 'Torrent'] @@ -35,7 +35,7 @@ class Torrent(object): self.description = description -class ICapTorrent(ICap): +class ICapTorrent(IBaseCap): def iter_torrents(self, pattern): raise NotImplementedError() diff --git a/weboob/capabilities/travel.py b/weboob/capabilities/travel.py index e5797636..0222ee93 100644 --- a/weboob/capabilities/travel.py +++ b/weboob/capabilities/travel.py @@ -18,13 +18,13 @@ from datetime import time -from .cap import ICap +from .base import IBaseCap __all__ = ['Departure', 'ICapTravel', 'Station'] -class ICapTravel(ICap): +class ICapTravel(IBaseCap): def iter_station_search(self, pattern): """ Iterates on search results of stations. diff --git a/weboob/capabilities/video.py b/weboob/capabilities/video.py index 3f09be7c..552a6c33 100644 --- a/weboob/capabilities/video.py +++ b/weboob/capabilities/video.py @@ -16,7 +16,7 @@ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -from .cap import ICap +from .base import IBaseCap, LoadingError, NotLoaded __all__ = ['BaseVideo', 'ICapVideo'] @@ -36,17 +36,18 @@ class VideoThumbnail(object): def __iscomplete__(self): return self.data + class BaseVideo(object): - def __init__(self, _id, title=None, url=None, author=None, duration=None, date=None, - rating=0.0, rating_max=0.0, thumbnail=None, thumbnail_url=None, nsfw=False): + def __init__(self, _id, title=NotLoaded, url=NotLoaded, author=NotLoaded, duration=NotLoaded, date=NotLoaded, + rating=NotLoaded, rating_max=NotLoaded, thumbnail=NotLoaded, thumbnail_url=NotLoaded, nsfw=False): self.id = unicode(_id) self.title = title self.url = url self.author = author self.duration = duration self.date = date - self.rating = float(rating) - self.rating_max = float(rating_max) + self.rating = rating + self.rating_max = rating_max self.thumbnail = thumbnail if thumbnail_url and not self.thumbnail: self.thumbnail = VideoThumbnail(thumbnail_url) @@ -62,7 +63,7 @@ class BaseVideo(object): return self.id2url(self.id) -class ICapVideo(ICap): +class ICapVideo(IBaseCap): def iter_page_urls(self, mozaic_url): raise NotImplementedError() diff --git a/weboob/capabilities/weather.py b/weboob/capabilities/weather.py index 068d7adf..01c7e28d 100644 --- a/weboob/capabilities/weather.py +++ b/weboob/capabilities/weather.py @@ -16,7 +16,7 @@ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -from .cap import ICap +from .base import IBaseCap __all__ = ['City', 'CityNotFound', 'Current', 'Forecast', 'ICapWeather'] @@ -49,7 +49,7 @@ class CityNotFound(Exception): pass -class ICapWeather(ICap): +class ICapWeather(IBaseCap): def iter_city_search(self, pattern): raise NotImplementedError() diff --git a/weboob/core/backends.py b/weboob/core/backends.py index 64dccc0d..f9cd5db3 100644 --- a/weboob/core/backends.py +++ b/weboob/core/backends.py @@ -25,7 +25,7 @@ import os import re import stat -from weboob.capabilities.cap import ICap +from weboob.capabilities.base import IBaseCap from weboob.tools.backend import BaseBackend @@ -80,7 +80,7 @@ class Backend(object): def iter_caps(self): for cap in self.klass.__bases__: - if issubclass(cap, ICap) and cap != ICap: + if issubclass(cap, IBaseCap) and cap != IBaseCap: yield cap def has_caps(self, *caps):