class BackendStorage(name, storage)[source]

Bases: object

This is an abstract layer to store data in storages (woob.tools.storage) easily.

It is instancied automatically in constructor of Module, in the Module.storage attribute.


Set value in the storage.


>>> from woob.tools.storage import StandardStorage
>>> backend = BackendStorage('blah', StandardStorage('/tmp/cfg'))
>>> backend.storage.set('config', 'nb_of_threads', 10)  

args – the path where to store value


Delete a value from the storage.


args – path to delete.

get(*args, **kwargs)[source]

Get a value or a dict of values in storage.


>>> from woob.tools.storage import StandardStorage
>>> backend = BackendStorage('blah', StandardStorage('/tmp/cfg'))
>>> backend.storage.get('config', 'nb_of_threads')  
>>> backend.storage.get('config', 'unexistant', 'path', default='lol')  
>>> backend.storage.get('config')  
{'nb_of_threads': 10, 'other_things': 'blah'}
  • args – path to get

  • default – if specified, default value when path is not found

Return type:



Load storage.

It is made automatically when your backend is created, and use the STORAGE class attribute as default.


default (dict) – this is the default tree if storage is empty


Save storage.

class BackendConfig(*values)[source]

Bases: ValuesDict

Configuration of a backend.

This class is firstly instanced as a woob.tools.value.ValuesDict, containing some woob.tools.value.Value (and derivated) objects.

Then, using the load() method will load configuration from file and create a copy of the BackendConfig object with the loaded values.

modname: str
instname: str
woob: WoobBase
load(woob, modname, instname, config, nofail=False)[source]

Load configuration from dict to create an instance.

  • woob (woob.core.woob.WoobBase) – woob object

  • modname (str) – name of the module

  • instname (str) – name of this backend

  • params (dict) – parameters to load

  • nofail (bool) – if true, this call can’t fail (default: False)

Return type:



Dump config in a dictionary.

Return type:


save(edit=True, params=None)[source]

Save backend config.

  • edit (bool) – if true, it changes config of an existing backend (default: True)

  • params (dict) – if supplied, params to merge with the ones of the current object (default: None)

class Module(woob, name, config=None, storage=None, logger=None, nofail=False)[source]

Bases: object

Base class for modules.

You may derivate it, and also all capabilities you want to implement.

NAME: ClassVar[str]

Name of the maintainer of this module.

MAINTAINER: ClassVar[str] = '<unspecified>'

Name of the maintainer.

EMAIL: ClassVar[str] = '<unspecified>'

Email address of the maintainer.

DESCRIPTION: ClassVar[str] = '<unspecified>'


LICENSE: ClassVar[str] = '<unspecified>'

License of the module

CONFIG: ClassVar[BackendConfig] = {}

Configuration required for backends.

Values must be woob.tools.value.Value objects.

STORAGE: ClassVar[Dict] = {}


BROWSER: Browser | None = None

Browser class

ICON: ClassVar[str | None] = None

URL to an optional icon.

If you want to create your own icon, create a ‘favicon.png’ icon in the module’s directory, and keep the ICON value to None.

OBJECTS: ClassVar[Dict] = {}

Supported objects to fill

The key is the class and the value the method to call to fill Method prototype: method(object, fields) When the method is called, fields are only the one which are NOT yet filled.

DEPENDENCIES: ClassVar[Tuple[str]] = ()

Tuple of module names on which this module depends.

exception ConfigError(message, bad_fields=None)[source]

Bases: Exception

Raised when the config can’t be loaded.

property VERSION

Dump module state into storage.


This abstract method is called when the backend is unloaded.

property weboob

Deprecated since version 3.4: Don’t use this attribute, but woob instead.

property browser: Browser

Attribute ‘browser’. The browser is created at the first call of this attribute, to avoid useless pages access.

Note that the create_default_browser() method is called to create it.


Method to overload to build the default browser in attribute ‘browser’.

Return type:

Browser | None

create_browser(*args, **kwargs)[source]

Build a browser from the BROWSER class attribute and the given arguments.


klass (woob.browser.browsers.Browser) – optional parameter to give another browser class to instanciate

Return type:

Browser | None


Get proxy to use.

It will read in environment variables, then in backend config.

Proxy keys in backend config are: :rtype: Dict[str, str]

  • _proxy for HTTP requests

  • _proxy_ssl for HTTPS requests

classmethod iter_caps()[source]

Iter capabilities implemented by this backend.

Return type:



Check if this backend implements at least one of these capabilities.

caps should be list of Capability objects (e.g. CapBank) or capability names (e.g. ‘bank’).

Return type:


fillobj(obj, fields=None)[source]

Fill an object with the wanted fields.


fields (list) – what fields to fill; if None, all fields are filled (default: None)