From 0a538d2dc17427ec2b3f2b03516709b66b1ccfc2 Mon Sep 17 00:00:00 2001 From: Vincent Ardisson Date: Thu, 27 Aug 2020 16:34:14 +0200 Subject: [PATCH] weboob.browser.elements: explicit params for ItemElementFromAbstractPage When switching to regular imports, ItemElementFromAbstractPage will become obsolete. However, they will not be removed immediately, but they will be reimplemented to be compatible with the new system. But the reimplementation works at import-time, not at exec-time, and it's not possible to access params defined in outer scopes at import-time. So, we make sure the attributes are explicitly defined, not implicitly. --- weboob/browser/elements.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/weboob/browser/elements.py b/weboob/browser/elements.py index d2ffa8a012..e95167900e 100644 --- a/weboob/browser/elements.py +++ b/weboob/browser/elements.py @@ -424,16 +424,16 @@ class ItemElementFromAbstractPage(ItemElement): ... ... obj_label = "XXX" """ + + PARENT = None + PARENT_URL = None ITER_ELEMENT = None @classmethod def _resolve_abstract(cls, page, iter_element, *args, **kwargs): - if not all(hasattr(page.__class__, attr) for attr in ('PARENT', 'PARENT_URL')): + if not (cls.PARENT and cls.PARENT_URL and cls.ITER_ELEMENT): raise ItemElementFromAbstractPageError('page %s is not an AbstractPage' % page) - if getattr(cls, 'ITER_ELEMENT') is None: - cls.ITER_ELEMENT = iter_element.__class__.__name__ - abstract_page = page.__class__.__bases__[0] parent_iter_element = getattr(abstract_page, cls.ITER_ELEMENT, None) if not parent_iter_element: -- GitLab