diff --git a/docs/source/guides/module.rst b/docs/source/guides/module.rst index ae14bd17..58d05c80 100644 --- a/docs/source/guides/module.rst +++ b/docs/source/guides/module.rst @@ -19,7 +19,7 @@ Select capabilities ******************* Each module implements one or many :doc:`capabilities ` to tell what kind of features the -website provides. A capability is a class derived from :class:`weboob.capabilities.base.IBaseCap` and with some abstract +website provides. A capability is a class derived from :class:`weboob.capabilities.base.CapBase` and with some abstract methods (which raise ``NotImplementedError``). A capability needs to be as generic as possible to allow a maximum number of modules to implements it. diff --git a/weboob/capabilities/__init__.py b/weboob/capabilities/__init__.py index 282cae76..85582911 100644 --- a/weboob/capabilities/__init__.py +++ b/weboob/capabilities/__init__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -from .base import UserError, NotLoaded, NotAvailable, BaseObject, IBaseCap +from .base import UserError, NotLoaded, NotAvailable, BaseObject, CapBase -__all__ = ['UserError', 'NotLoaded', 'NotAvailable', 'BaseObject', 'IBaseCap'] +__all__ = ['UserError', 'NotLoaded', 'NotAvailable', 'BaseObject', 'CapBase'] diff --git a/weboob/capabilities/account.py b/weboob/capabilities/account.py index e2762b15..b814222a 100644 --- a/weboob/capabilities/account.py +++ b/weboob/capabilities/account.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from .base import IBaseCap, BaseObject, StringField, Field, UserError +from .base import CapBase, BaseObject, StringField, Field, UserError __all__ = ['AccountRegisterError', 'Account', 'StatusField', 'CapAccount'] @@ -56,7 +56,7 @@ class StatusField(object): self.flags = flags -class CapAccount(IBaseCap): +class CapAccount(CapBase): """ Capability for websites when you can create and manage accounts. diff --git a/weboob/capabilities/base.py b/weboob/capabilities/base.py index 5ffc4b04..ba0dc48b 100644 --- a/weboob/capabilities/base.py +++ b/weboob/capabilities/base.py @@ -29,7 +29,7 @@ from weboob.tools.ordereddict import OrderedDict __all__ = ['UserError', 'FieldNotFound', 'NotAvailable', - 'NotLoaded', 'IBaseCap', 'Field', 'IntField', 'DecimalField', + 'NotLoaded', 'CapBase', 'Field', 'IntField', 'DecimalField', 'FloatField', 'StringField', 'BytesField', 'empty', 'BaseObject'] @@ -146,7 +146,7 @@ class NotLoadedType(object): NotLoaded = NotLoadedType() -class IBaseCap(object): +class CapBase(object): """ This is the base class for all capabilities. diff --git a/weboob/capabilities/bugtracker.py b/weboob/capabilities/bugtracker.py index f668a0aa..424afafa 100644 --- a/weboob/capabilities/bugtracker.py +++ b/weboob/capabilities/bugtracker.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from .base import IBaseCap, BaseObject, Field, StringField,\ +from .base import CapBase, BaseObject, Field, StringField,\ IntField, UserError from .date import DateField, DeltaField @@ -232,7 +232,7 @@ class Query(BaseObject): BaseObject.__init__(self, '') -class CapBugTracker(IBaseCap): +class CapBugTracker(CapBase): """ Bug trackers websites. """ diff --git a/weboob/capabilities/chat.py b/weboob/capabilities/chat.py index affd82ce..3b0216c8 100644 --- a/weboob/capabilities/chat.py +++ b/weboob/capabilities/chat.py @@ -20,7 +20,7 @@ import datetime -from .base import IBaseCap, BaseObject, StringField, UserError +from .base import CapBase, BaseObject, StringField, UserError from .date import DateField @@ -53,7 +53,7 @@ class ChatMessage(BaseObject): self.date = datetime.datetime.utcnow() -class CapChat(IBaseCap): +class CapChat(CapBase): """ Websites with a chat system. """ diff --git a/weboob/capabilities/cinema.py b/weboob/capabilities/cinema.py index 8e166cdf..4b83fe8c 100644 --- a/weboob/capabilities/cinema.py +++ b/weboob/capabilities/cinema.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from .base import IBaseCap, BaseObject, StringField, IntField, Field +from .base import CapBase, BaseObject, StringField, IntField, Field from .date import DateField @@ -69,7 +69,7 @@ class Person(BaseObject): self.name = name -class CapCinema(IBaseCap): +class CapCinema(CapBase): """ Cinema databases. """ diff --git a/weboob/capabilities/collection.py b/weboob/capabilities/collection.py index 0aa98529..c2ec4f53 100644 --- a/weboob/capabilities/collection.py +++ b/weboob/capabilities/collection.py @@ -19,7 +19,7 @@ from weboob.tools.ordereddict import OrderedDict -from .base import IBaseCap, BaseObject, UserError, StringField, Field +from .base import CapBase, BaseObject, UserError, StringField, Field __all__ = ['CapCollection', 'BaseCollection', 'Collection', 'CollectionNotFound'] @@ -95,7 +95,7 @@ class Collection(BaseCollection): return u'Unknown collection' -class CapCollection(IBaseCap): +class CapCollection(CapBase): def iter_resources_flat(self, objs, split_path, clean_only=False): """ Call iter_resources() to fetch all resources in the tree. diff --git a/weboob/capabilities/contact.py b/weboob/capabilities/contact.py index f1f7c8a0..0051b09f 100644 --- a/weboob/capabilities/contact.py +++ b/weboob/capabilities/contact.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from .base import IBaseCap, BaseObject, Field, StringField, BytesField, IntField, \ +from .base import CapBase, BaseObject, Field, StringField, BytesField, IntField, \ UserError from weboob.tools.ordereddict import OrderedDict @@ -165,7 +165,7 @@ class Query(BaseObject): self.message = message -class CapContact(IBaseCap): +class CapContact(CapBase): def iter_contacts(self, status=Contact.STATUS_ALL, ids=None): """ Iter contacts diff --git a/weboob/capabilities/content.py b/weboob/capabilities/content.py index 8eddcbd7..0c3bf8d4 100644 --- a/weboob/capabilities/content.py +++ b/weboob/capabilities/content.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from .base import IBaseCap, BaseObject, StringField, Field +from .base import CapBase, BaseObject, StringField, Field from .date import DateField @@ -45,7 +45,7 @@ class Revision(BaseObject): minor = Field('Is this change minor?', bool) -class CapContent(IBaseCap): +class CapContent(CapBase): def get_content(self, id, revision=None): """ Get a content from an ID. diff --git a/weboob/capabilities/dating.py b/weboob/capabilities/dating.py index 0be1c9dd..7b3e2207 100644 --- a/weboob/capabilities/dating.py +++ b/weboob/capabilities/dating.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from .base import IBaseCap, BaseObject, Field, StringField, UserError +from .base import CapBase, BaseObject, Field, StringField, UserError from .date import DateField from .contact import Contact @@ -90,7 +90,7 @@ class Event(BaseObject): message = StringField('Message of the event') -class CapDating(IBaseCap): +class CapDating(CapBase): """ Capability for dating websites. """ diff --git a/weboob/capabilities/file.py b/weboob/capabilities/file.py index 0e0e7980..bbc9f707 100644 --- a/weboob/capabilities/file.py +++ b/weboob/capabilities/file.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from .base import IBaseCap, BaseObject, NotAvailable, Field, StringField +from .base import CapBase, BaseObject, NotAvailable, Field, StringField from .date import DateField @@ -60,7 +60,7 @@ class BaseFile(BaseObject): return self.id2url(self.id) -class CapFile(IBaseCap): +class CapFile(CapBase): """ Provide file download """ diff --git a/weboob/capabilities/gallery.py b/weboob/capabilities/gallery.py index bab5377f..6098f422 100644 --- a/weboob/capabilities/gallery.py +++ b/weboob/capabilities/gallery.py @@ -19,7 +19,7 @@ from weboob.tools.capabilities.thumbnail import Thumbnail -from .base import IBaseCap, BaseObject, NotLoaded, Field, StringField, \ +from .base import CapBase, BaseObject, NotLoaded, Field, StringField, \ BytesField, IntField, FloatField from .date import DateField @@ -104,7 +104,7 @@ class BaseImage(BaseObject): return self.data is not NotLoaded -class CapGallery(IBaseCap): +class CapGallery(CapBase): """ This capability represents the ability for a website backend to provide videos. """ diff --git a/weboob/capabilities/gauge.py b/weboob/capabilities/gauge.py index f73fb03b..ad7ef0ef 100644 --- a/weboob/capabilities/gauge.py +++ b/weboob/capabilities/gauge.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from .base import IBaseCap, BaseObject, StringField, FloatField, Field, UserError, empty +from .base import CapBase, BaseObject, StringField, FloatField, Field, UserError, empty from .date import DateField __all__ = ['Gauge', 'GaugeSensor', 'GaugeMeasure', 'CapGauge', 'SensorNotFound'] @@ -74,7 +74,7 @@ class GaugeSensor(BaseObject): return "" % (self.id, self.name) -class CapGauge(IBaseCap): +class CapGauge(CapBase): def iter_gauges(self, pattern=None): """ Iter gauges. diff --git a/weboob/capabilities/geolocip.py b/weboob/capabilities/geolocip.py index 2512c7f5..04499c63 100644 --- a/weboob/capabilities/geolocip.py +++ b/weboob/capabilities/geolocip.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from .base import IBaseCap, BaseObject, StringField, FloatField +from .base import CapBase, BaseObject, StringField, FloatField __all__ = ['IpLocation', 'CapGeolocIp'] @@ -42,7 +42,7 @@ class IpLocation(BaseObject): BaseObject.__init__(self, ipaddr) -class CapGeolocIp(IBaseCap): +class CapGeolocIp(CapBase): """ Access information about IP addresses database. """ diff --git a/weboob/capabilities/housing.py b/weboob/capabilities/housing.py index 842b2573..38ec19b7 100644 --- a/weboob/capabilities/housing.py +++ b/weboob/capabilities/housing.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from .base import IBaseCap, BaseObject, Field, IntField, DecimalField, \ +from .base import CapBase, BaseObject, Field, IntField, DecimalField, \ StringField, BytesField from .date import DateField @@ -89,7 +89,7 @@ class City(BaseObject): name = StringField('Name of city') -class CapHousing(IBaseCap): +class CapHousing(CapBase): """ Capability of websites to search housings. """ diff --git a/weboob/capabilities/job.py b/weboob/capabilities/job.py index 8efe085e..d9721ffb 100644 --- a/weboob/capabilities/job.py +++ b/weboob/capabilities/job.py @@ -17,7 +17,7 @@ # You should have received a copy of the GNU Affero General Public License # along with weboob. If not, see . -from .base import BaseObject, IBaseCap, StringField +from .base import BaseObject, CapBase, StringField from .date import DateField __all__ = ['BaseJobAdvert', 'CapJob'] @@ -68,7 +68,7 @@ class BaseJobAdvert(BaseObject): return self.id2url(self.id) -class CapJob(IBaseCap): +class CapJob(CapBase): """ Capability of job annouce websites. """ diff --git a/weboob/capabilities/lyrics.py b/weboob/capabilities/lyrics.py index 98a79090..7951227d 100644 --- a/weboob/capabilities/lyrics.py +++ b/weboob/capabilities/lyrics.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from .base import IBaseCap, BaseObject, StringField +from .base import CapBase, BaseObject, StringField __all__ = ['SongLyrics', 'CapLyrics'] @@ -37,7 +37,7 @@ class SongLyrics(BaseObject): self.title = title -class CapLyrics(IBaseCap): +class CapLyrics(CapBase): """ Lyrics websites. """ diff --git a/weboob/capabilities/messages.py b/weboob/capabilities/messages.py index 0b16fe68..97b1ea70 100644 --- a/weboob/capabilities/messages.py +++ b/weboob/capabilities/messages.py @@ -21,7 +21,7 @@ import datetime import time -from .base import IBaseCap, BaseObject, NotLoaded, Field, StringField, \ +from .base import CapBase, BaseObject, NotLoaded, Field, StringField, \ IntField, UserError from .date import DateField @@ -165,7 +165,7 @@ class Thread(_Thread): yield m -class CapMessages(IBaseCap): +class CapMessages(CapBase): """ Capability to read messages. """ @@ -209,7 +209,7 @@ class CantSendMessage(UserError): """ -class CapMessagesPost(IBaseCap): +class CapMessagesPost(CapBase): """ This capability allow user to send a message. """ diff --git a/weboob/capabilities/parcel.py b/weboob/capabilities/parcel.py index 291be29a..ea483045 100644 --- a/weboob/capabilities/parcel.py +++ b/weboob/capabilities/parcel.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from .base import IBaseCap, BaseObject, Field, StringField +from .base import CapBase, BaseObject, Field, StringField from .date import DateField @@ -42,7 +42,7 @@ class Parcel(BaseObject): history = Field('History', list) -class CapParcel(IBaseCap): +class CapParcel(CapBase): def get_parcel_tracking(self, id): """ Get information abouut a parcel. diff --git a/weboob/capabilities/paste.py b/weboob/capabilities/paste.py index 99567e4c..11dfb114 100644 --- a/weboob/capabilities/paste.py +++ b/weboob/capabilities/paste.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from .base import IBaseCap, BaseObject, NotLoaded, Field, StringField, UserError +from .base import CapBase, BaseObject, NotLoaded, Field, StringField, UserError __all__ = ['PasteNotFound', 'BasePaste', 'CapPaste'] @@ -63,7 +63,7 @@ class BasePaste(BaseObject): return self.id2url(self.id) -class CapPaste(IBaseCap): +class CapPaste(CapBase): """ This capability represents the ability for a website backend to store plain text. """ diff --git a/weboob/capabilities/pricecomparison.py b/weboob/capabilities/pricecomparison.py index 4785f942..e67d79da 100644 --- a/weboob/capabilities/pricecomparison.py +++ b/weboob/capabilities/pricecomparison.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from .base import IBaseCap, BaseObject, Field, DecimalField, \ +from .base import CapBase, BaseObject, Field, DecimalField, \ StringField from .date import DateField @@ -53,7 +53,7 @@ class Price(BaseObject): product = Field('Product', Product) -class CapPriceComparison(IBaseCap): +class CapPriceComparison(CapBase): """ Capability for price comparison websites. """ diff --git a/weboob/capabilities/radio.py b/weboob/capabilities/radio.py index 0a1fbdce..f39ed94f 100644 --- a/weboob/capabilities/radio.py +++ b/weboob/capabilities/radio.py @@ -19,7 +19,7 @@ # along with weboob. If not, see . -from .base import IBaseCap, BaseObject, Field, StringField +from .base import CapBase, BaseObject, Field, StringField from weboob.tools.capabilities.streaminfo import StreamInfo @@ -35,7 +35,7 @@ class Radio(BaseObject): current = Field('Current emission', StreamInfo) streams = Field('List of streams', list) -class CapRadio(IBaseCap): +class CapRadio(CapBase): """ Capability of radio websites. """ diff --git a/weboob/capabilities/recipe.py b/weboob/capabilities/recipe.py index a619b454..2bb1473d 100644 --- a/weboob/capabilities/recipe.py +++ b/weboob/capabilities/recipe.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from .base import IBaseCap, BaseObject, StringField, IntField, Field, empty +from .base import CapBase, BaseObject, StringField, IntField, Field, empty import lxml.etree as ET @@ -161,7 +161,7 @@ class Recipe(BaseObject): return header + ET.tostring(doc, encoding='UTF-8', pretty_print=True).decode('utf-8') -class CapRecipe(IBaseCap): +class CapRecipe(CapBase): """ Recipe providers. """ diff --git a/weboob/capabilities/subtitle.py b/weboob/capabilities/subtitle.py index 56ae1042..1f92b322 100644 --- a/weboob/capabilities/subtitle.py +++ b/weboob/capabilities/subtitle.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from .base import IBaseCap, BaseObject, StringField, IntField, UserError +from .base import CapBase, BaseObject, StringField, IntField, UserError __all__ = ['Subtitle', 'CapSubtitle'] @@ -48,7 +48,7 @@ class Subtitle(BaseObject): BaseObject.__init__(self, id) self.name = name -class CapSubtitle(IBaseCap): +class CapSubtitle(CapBase): """ Subtitle providers. """ diff --git a/weboob/capabilities/torrent.py b/weboob/capabilities/torrent.py index 25b322e2..43d7579f 100644 --- a/weboob/capabilities/torrent.py +++ b/weboob/capabilities/torrent.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from .base import IBaseCap, BaseObject, Field, StringField, FloatField, \ +from .base import CapBase, BaseObject, Field, StringField, FloatField, \ IntField, UserError from .date import DateField @@ -54,7 +54,7 @@ class Torrent(BaseObject): self.name = name -class CapTorrent(IBaseCap): +class CapTorrent(CapBase): """ Torrent trackers. """ diff --git a/weboob/capabilities/translate.py b/weboob/capabilities/translate.py index 30557ff0..1dd27aca 100644 --- a/weboob/capabilities/translate.py +++ b/weboob/capabilities/translate.py @@ -18,7 +18,7 @@ # along with weboob. If not, see . -from .base import IBaseCap, BaseObject, StringField, UserError +from .base import CapBase, BaseObject, StringField, UserError __all__ = ['TranslationFail', 'LanguageNotSupported', 'CapTranslate'] @@ -51,7 +51,7 @@ class Translation(BaseObject): text = StringField('Translation') -class CapTranslate(IBaseCap): +class CapTranslate(CapBase): """ Capability of online translation website to translate word or sentence """ diff --git a/weboob/capabilities/travel.py b/weboob/capabilities/travel.py index 9e756e67..4be332c0 100644 --- a/weboob/capabilities/travel.py +++ b/weboob/capabilities/travel.py @@ -20,7 +20,7 @@ import datetime -from .base import IBaseCap, BaseObject, StringField, DecimalField, UserError +from .base import CapBase, BaseObject, StringField, DecimalField, UserError from .date import TimeField, DeltaField, DateField __all__ = ['Station', 'Departure', 'RoadStep', 'RoadmapError', 'RoadmapFilters', 'CapTravel'] @@ -95,7 +95,7 @@ class RoadmapFilters(BaseObject): BaseObject.__init__(self, '') -class CapTravel(IBaseCap): +class CapTravel(CapBase): """ Travel websites. """ diff --git a/weboob/capabilities/weather.py b/weboob/capabilities/weather.py index 37f0bc8e..ee62a1c5 100644 --- a/weboob/capabilities/weather.py +++ b/weboob/capabilities/weather.py @@ -20,7 +20,7 @@ from datetime import datetime, date -from .base import IBaseCap, BaseObject, Field, FloatField, \ +from .base import CapBase, BaseObject, Field, FloatField, \ StringField, UserError from .date import DateField @@ -109,7 +109,7 @@ class CityNotFound(UserError): """ -class CapWeather(IBaseCap): +class CapWeather(CapBase): """ Capability for weather websites. """ diff --git a/weboob/core/ouiboube.py b/weboob/core/ouiboube.py index 28c3e437..fb4a6f55 100644 --- a/weboob/core/ouiboube.py +++ b/weboob/core/ouiboube.py @@ -191,7 +191,7 @@ class WebNip(object): Note: each backend is locked when it is returned. :param caps: optional list of capabilities to select backends - :type caps: tuple[:class:`weboob.capabilities.base.IBaseCap`] + :type caps: tuple[:class:`weboob.capabilities.base.CapBase`] :rtype: iter[:class:`weboob.tools.backend.BaseBackend`] """ for _, backend in sorted(self.backend_instances.iteritems()): @@ -222,7 +222,7 @@ class WebNip(object): :param backends: list of backends to iterate on :type backends: list[:class:`str`] :param caps: iterate on backends which implement this caps - :type caps: list[:class:`weboob.capabilities.base.IBaseCap`] + :type caps: list[:class:`weboob.capabilities.base.CapBase`] :rtype: A :class:`weboob.core.bcall.BackendsCall` object (iterable) """ backends = self.backend_instances.values() diff --git a/weboob/tools/backend.py b/weboob/tools/backend.py index 4ce15756..942d2735 100644 --- a/weboob/tools/backend.py +++ b/weboob/tools/backend.py @@ -23,7 +23,7 @@ from threading import RLock from copy import copy from weboob.capabilities.base import BaseObject, FieldNotFound, \ - IBaseCap, NotLoaded, NotAvailable + CapBase, NotLoaded, NotAvailable from weboob.tools.misc import iter_fields from weboob.tools.log import getLogger from weboob.tools.value import ValuesDict @@ -350,11 +350,11 @@ class BaseBackend(object): """ Iter capabilities implemented by this backend. - :rtype: iter[:class:`weboob.capabilities.base.IBaseCap`] + :rtype: iter[:class:`weboob.capabilities.base.CapBase`] """ def iter_caps(cls): for base in cls.__bases__: - if issubclass(base, IBaseCap) and base != IBaseCap: + if issubclass(base, CapBase) and base != CapBase: yield base for cap in iter_caps(base): yield cap