print a warning when a module adds an attribute to a CapBaseObject not prefixed with a _
This commit is contained in:
parent
cd5f29a0f9
commit
5098b3f458
1 changed files with 13 additions and 1 deletions
|
|
@ -29,7 +29,7 @@ from weboob.tools.ordereddict import OrderedDict
|
||||||
|
|
||||||
__all__ = ['FieldNotFound', 'NotAvailable', 'NotLoaded', 'IBaseCap',
|
__all__ = ['FieldNotFound', 'NotAvailable', 'NotLoaded', 'IBaseCap',
|
||||||
'Field', 'IntField', 'DecimalField', 'FloatField', 'StringField',
|
'Field', 'IntField', 'DecimalField', 'FloatField', 'StringField',
|
||||||
'BytesField', 'DateField', 'DeltaField', 'CapBaseObject', 'empty']
|
'BytesField', 'DateField', 'DeltaField', 'empty', 'CapBaseObject']
|
||||||
|
|
||||||
|
|
||||||
def empty(value):
|
def empty(value):
|
||||||
|
|
@ -64,6 +64,12 @@ class ConversionWarning(UserWarning):
|
||||||
"""
|
"""
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
class AttributeCreationWarning(UserWarning):
|
||||||
|
"""
|
||||||
|
A non-field attribute has been created with a name not
|
||||||
|
prefixed with a _.
|
||||||
|
"""
|
||||||
|
|
||||||
class NotAvailableMeta(type):
|
class NotAvailableMeta(type):
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return unicode(self).decode('utf-8')
|
return unicode(self).decode('utf-8')
|
||||||
|
|
@ -266,6 +272,9 @@ class CapBaseObject(object):
|
||||||
"""
|
"""
|
||||||
|
|
||||||
__metaclass__ = _CapBaseObjectMeta
|
__metaclass__ = _CapBaseObjectMeta
|
||||||
|
|
||||||
|
id = None
|
||||||
|
backend = None
|
||||||
_fields = None
|
_fields = None
|
||||||
|
|
||||||
def __init__(self, id, backend=None):
|
def __init__(self, id, backend=None):
|
||||||
|
|
@ -342,6 +351,9 @@ class CapBaseObject(object):
|
||||||
try:
|
try:
|
||||||
attr = (self._fields or {})[name]
|
attr = (self._fields or {})[name]
|
||||||
except KeyError:
|
except KeyError:
|
||||||
|
if not name in dir(self) and not name.startswith('_'):
|
||||||
|
warnings.warn('Creating a non-field attribute %s. Please prefix it with _' % name,
|
||||||
|
AttributeCreationWarning, stacklevel=2)
|
||||||
object.__setattr__(self, name, value)
|
object.__setattr__(self, name, value)
|
||||||
else:
|
else:
|
||||||
if not empty(value):
|
if not empty(value):
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue