Nouvel accès Caisse d'Épargne impossible

Bonjour,

À partir d’une installation fraîche de Kresus (0.15.1 + Weboob 1.6) sur un hébergement mutualisé (NodeJS 12.0.0, Python 3.8.0), l’ajout d’une compte bancaire de la Caisse d’Épargne engendre cette erreur :

A request has failed with the following information:
- code: GENERIC_EXCEPTION
- short message: Unknown error: bad escape \X at position 6.
- stack: no stack
- message: Unknown error: bad escape \X at position 6.
Traceback (most recent call last):
  File "/home/nferrari-kresus/www/app/build/server/weboob/main.py", line 667, in fetch
    results['values'] = self.get_accounts()
  File "/home/nferrari-kresus/www/app/build/server/weboob/main.py", line 526, in get_accounts
    for account in list(self.backend.iter_accounts()):
  File "/home/nferrari-kresus/www/data/weboob-data/modules/1.6/caissedepargne/module.py", line 68, in iter_accounts
    for account in self.browser.get_accounts_list():
  File "/home/nferrari-kresus/www/data/weboob-data/modules/1.6/caissedepargne/browser.py", line 485, in get_accounts_list
    for card in self.page.iter_cards():
  File "/home/nferrari-kresus/www/weboob/lib/python3.8/site-packages/weboob/browser/elements.py", line 211, in __iter__
    for obj in item:
  File "/home/nferrari-kresus/www/weboob/lib/python3.8/site-packages/weboob/browser/elements.py", line 354, in __iter__
    self.handle_attr(attr, getattr(self, 'obj_%s' % attr))
  File "/home/nferrari-kresus/www/weboob/lib/python3.8/site-packages/weboob/browser/elements.py", line 371, in handle_attr
    value = self.use_selector(func, key=key)
  File "/home/nferrari-kresus/www/weboob/lib/python3.8/site-packages/weboob/browser/elements.py", line 131, in use_selector
    value = func()
  File "/home/nferrari-kresus/www/data/weboob-data/modules/1.6/caissedepargne/pages.py", line 1024, in obj_id
    Regexp(CleanText(Field('label'), replace=[('*', 'X')]), r'(\d{6}\X{6}\d{4})', default=NotAvailable),
  File "/home/nferrari-kresus/www/weboob/lib/python3.8/site-packages/weboob/browser/filters/standard.py", line 613, in __init__
    self._regex = re.compile(pattern, flags)
  File "/usr/alwaysdata/python/3.8.0/lib/python3.8/re.py", line 250, in compile
    return _compile(pattern, flags)
  File "/usr/alwaysdata/python/3.8.0/lib/python3.8/re.py", line 302, in _compile
    p = sre_compile.compile(pattern, flags)
  File "/usr/alwaysdata/python/3.8.0/lib/python3.8/sre_compile.py", line 764, in compile
    p = sre_parse.parse(p, flags)
  File "/usr/alwaysdata/python/3.8.0/lib/python3.8/sre_parse.py", line 948, in parse
    p = _parse_sub(source, state, flags & SRE_FLAG_VERBOSE, 0)
  File "/usr/alwaysdata/python/3.8.0/lib/python3.8/sre_parse.py", line 443, in _parse_sub
    itemsappend(_parse(source, state, verbose, nested + 1,
  File "/usr/alwaysdata/python/3.8.0/lib/python3.8/sre_parse.py", line 834, in _parse
    p = _parse_sub(source, state, sub_verbose, nested + 1)
  File "/usr/alwaysdata/python/3.8.0/lib/python3.8/sre_parse.py", line 443, in _parse_sub
    itemsappend(_parse(source, state, verbose, nested + 1,
  File "/usr/alwaysdata/python/3.8.0/lib/python3.8/sre_parse.py", line 525, in _parse
    code = _escape(source, this, state)
  File "/usr/alwaysdata/python/3.8.0/lib/python3.8/sre_parse.py", line 426, in _escape
    raise source.error("bad escape %s" % escape, len(escape))
re.error: bad escape \X at position 6

- stringified: {"code":"GENERIC_EXCEPTION","message":"Unknown error: bad escape \\X at position 6.\nTraceback (most recent call last):\n  File \"/home/nferrari-kresus/www/app/build/server/weboob/main.py\", line 667, in fetch\n    results['values'] = self.get_accounts()\n  File \"/home/nferrari-kresus/www/app/build/server/weboob/main.py\", line 526, in get_accounts\n    for account in list(self.backend.iter_accounts()):\n  File \"/home/nferrari-kresus/www/data/weboob-data/modules/1.6/caissedepargne/module.py\", line 68, in iter_accounts\n    for account in self.browser.get_accounts_list():\n  File \"/home/nferrari-kresus/www/data/weboob-data/modules/1.6/caissedepargne/browser.py\", line 485, in get_accounts_list\n    for card in self.page.iter_cards():\n  File \"/home/nferrari-kresus/www/weboob/lib/python3.8/site-packages/weboob/browser/elements.py\", line 211, in __iter__\n    for obj in item:\n  File \"/home/nferrari-kresus/www/weboob/lib/python3.8/site-packages/weboob/browser/elements.py\", line 354, in __iter__\n    self.handle_attr(attr, getattr(self, 'obj_%s' % attr))\n  File \"/home/nferrari-kresus/www/weboob/lib/python3.8/site-packages/weboob/browser/elements.py\", line 371, in handle_attr\n    value = self.use_selector(func, key=key)\n  File \"/home/nferrari-kresus/www/weboob/lib/python3.8/site-packages/weboob/browser/elements.py\", line 131, in use_selector\n    value = func()\n  File \"/home/nferrari-kresus/www/data/weboob-data/modules/1.6/caissedepargne/pages.py\", line 1024, in obj_id\n    Regexp(CleanText(Field('label'), replace=[('*', 'X')]), r'(\\d{6}\\X{6}\\d{4})', default=NotAvailable),\n  File \"/home/nferrari-kresus/www/weboob/lib/python3.8/site-packages/weboob/browser/filters/standard.py\", line 613, in __init__\n    self._regex = re.compile(pattern, flags)\n  File \"/usr/alwaysdata/python/3.8.0/lib/python3.8/re.py\", line 250, in compile\n    return _compile(pattern, flags)\n  File \"/usr/alwaysdata/python/3.8.0/lib/python3.8/re.py\", line 302, in _compile\n    p = sre_compile.compile(pattern, flags)\n  File \"/usr/alwaysdata/python/3.8.0/lib/python3.8/sre_compile.py\", line 764, in compile\n    p = sre_parse.parse(p, flags)\n  File \"/usr/alwaysdata/python/3.8.0/lib/python3.8/sre_parse.py\", line 948, in parse\n    p = _parse_sub(source, state, flags & SRE_FLAG_VERBOSE, 0)\n  File \"/usr/alwaysdata/python/3.8.0/lib/python3.8/sre_parse.py\", line 443, in _parse_sub\n    itemsappend(_parse(source, state, verbose, nested + 1,\n  File \"/usr/alwaysdata/python/3.8.0/lib/python3.8/sre_parse.py\", line 834, in _parse\n    p = _parse_sub(source, state, sub_verbose, nested + 1)\n  File \"/usr/alwaysdata/python/3.8.0/lib/python3.8/sre_parse.py\", line 443, in _parse_sub\n    itemsappend(_parse(source, state, verbose, nested + 1,\n  File \"/usr/alwaysdata/python/3.8.0/lib/python3.8/sre_parse.py\", line 525, in _parse\n    code = _escape(source, this, state)\n  File \"/usr/alwaysdata/python/3.8.0/lib/python3.8/sre_parse.py\", line 426, in _escape\n    raise source.error(\"bad escape %s\" % escape, len(escape))\nre.error: bad escape \\X at position 6\n","shortMessage":"Unknown error: bad escape \\X at position 6."}

Je précise que l’ajout d’un autre compte (Boursorama) a bien fonctionné par ailleurs.

Merci pour vos lanternes :slight_smile:

Bonjour,

Avant tout, merci d’avoir installé Kresus, et de l’essayer.
Il semblerait que le module Weboob (utilisé par Kresus) pour récupérer les opérations depuis le site de la caisse d’épargne ne soit pas complètement compatible avec python3.
Je pense avoir compris où et le problème. Serait-il possible de faire la modification suivante dans le fichier /home/nferrari-kresus/www/data/weboob-data/modules/1.6/caissedepargne/pages.py aux lignes 1024 et 1015 remplacer
\X par X (enlever le \). Et retenter la création de l’accès dans Kresus (pas besoin de redémarrer Kresus).
Merci

Bonjour,

Merci pour la rapidité et précision de la réponse. Après modification, une autre erreur survient :

A request has failed with the following information:
- code: GENERIC_EXCEPTION
- short message: Unknown error: can't compare datetime to date.
- stack: no stack
- message: Unknown error: can't compare datetime to date.
Traceback (most recent call last):
  File "/home/nferrari-kresus/www/app/build/server/weboob/main.py", line 669, in fetch
    results['values'] = self.get_operations(from_date)
  File "/home/nferrari-kresus/www/app/build/server/weboob/main.py", line 570, in get_operations
    if histop.rdate and histop.rdate > op_date:
TypeError: can't compare datetime to date

- stringified: {"code":"GENERIC_EXCEPTION","message":"Unknown error: can't compare datetime to date.\nTraceback (most recent call last):\n  File \"/home/nferrari-kresus/www/app/build/server/weboob/main.py\", line 669, in fetch\n    results['values'] = self.get_operations(from_date)\n  File \"/home/nferrari-kresus/www/app/build/server/weboob/main.py\", line 570, in get_operations\n    if histop.rdate and histop.rdate > op_date:\nTypeError: can't compare datetime to date\n","shortMessage":"Unknown error: can't compare datetime to date."}

J’ai également vu votre issue concernant weboob. Je suppose que la compatibilité du module doit être revue pour Python 3.

Bonjour,

Concernant le problème de compatibilité python3, je vais soumettre la correction à Weboob, comme ça se sera corrigé en amont. En attendant, je recommande de désactiver temporairement la mise à jour automatique des modules weboob dans le menu « Roue crantée » en haut à droite > Weboob (ou administration).

Pour le nouveau problème, cette fois-ci il est côté Kresus, on va rapidement publier une nouvelle version. Le problème est plus compliqué à patcher manuellement, nous allons travailler dessus, et je reviendrait proposer le patch, au cas où. Sinon, il faudra attendre la publication de la mise à jour.

Bonjour,

J’ai produit un patch qui devrait corriger le problème ici : https://framagit.org/kresusapp/kresus/merge_requests/1056/diffs
Il doit encore être validé, puis nous publierons une mise à jour rapidement.

That’s awesome. Thank you!

On publie ça dans la soirée à priori.

Je confirme la résolution suite au patch.

Merci !

1 J'aime