Create a capability¶
A method can raise only its own exceptions¶
When you want to return an error, you must raise only your own exceptions defined in the capability module.
Never let Python raise his exceptions, for example KeyError
if a parameter given to method isn’t found in a local
list.
Prefer returning objects¶
Python is an object-oriented language, so when your capability supports entities (for example
BaseVideo
with the CapVideo
capability),
you have to create a class derived from BaseObject
, and create an unique method
to get it (for example get_video()
), instead of several methods like
get_video_url()
, get_video_preview()
, etc.
An object has an unique ID.
Filled objects¶
When an object is fetched, all of its fields are not necessarily loaded.
For example, on a video search, if the backend gets information from the search page, the direct URL of the video isn’t available yet.
A field which isn’t loaded can be set to woob.capabilities.base.NotLoaded
.
By default, in the object constructor, every fields should be set to
NotLoaded
, and when the backend loads them, it replaces them with
the new values.