TypeError in IFormatter.output when outfile is a TextIOWrapper
Module
Bank/kiwibank
Problem Description
When using the woob bank --auto-update
command, I encountered a TypeError
in the output method of the IFormatter
class. The error message is: TypeError: expected str, bytes or os.PathLike object, not TextIOWrapper.
This error occurs when self.outfile
is a TextIOWrapper
object, which is not a valid argument for the open function.
Stack Trace
(woob-env) danny@envy:~$ woob bank --auto-update
Welcome to bank v3.6
Copyright(C) 2010-2023 Romain Bignon, Christophe Benz
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Type "help" to display available commands.
Loaded backends: kiwibank
bank> list
Account Balance Coming
------------------------------------------+----------+----------
[kiwibank] Password (hidden input):
Bug(kiwibank): 'NoneType' object has no attribute 'login'
0% ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Getting https://updates.woob.tech/3/main/Use "logging debug" option to print backtraces.
Traceback (most recent call last):
File "/home/danny/miniconda3/envs/woob-env/bin/woob", line 8, in <module>
sys.exit(Launcher.run())
^^^^^^^^^^^^^^
File "/home/danny/.local/lib/python3.11/site-packages/woob/launcher.py", line 106, in run
return cls.run_app(sys.argv[1], sys.argv[2:])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/danny/.local/lib/python3.11/site-packages/woob/launcher.py", line 61, in run_app
return app_class.run([app] + args)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/danny/.local/lib/python3.11/site-packages/woob/tools/application/console.py", line 296, in run
super().run(args)
File "/home/danny/.local/lib/python3.11/site-packages/woob/tools/application/base.py", line 544, in run
sys.exit(app.main(args))
^^^^^^^^^^^^^^
File "/home/danny/.local/lib/python3.11/site-packages/woob/applications/bank/bank.py", line 984, in main
return super(Appbank, self).main(argv)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/danny/.local/lib/python3.11/site-packages/woob/tools/application/repl.py", line 358, in main
self.cmdloop()
File "/home/danny/miniconda3/envs/woob-env/lib/python3.11/cmd.py", line 138, in cmdloop
stop = self.onecmd(line)
^^^^^^^^^^^^^^^^^
File "/home/danny/.local/lib/python3.11/site-packages/woob/tools/application/repl.py", line 558, in onecmd
self.flush()
File "/home/danny/.local/lib/python3.11/site-packages/woob/tools/application/repl.py", line 1398, in flush
self.formatter.flush()
File "/home/danny/.local/lib/python3.11/site-packages/woob/applications/bank/bank.py", line 454, in flush
self.output('------------------------------------------%s+----------+----------' % (('-' * 15) if not self.interactive else ''))
File "/home/danny/.local/lib/python3.11/site-packages/woob/tools/application/formatters/iformatter.py", line 139, in output
with open(self.outfile, "a+", encoding=encoding, errors='replace') as outfile:
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Steps to Reproduce problem
- Added the kiwibank backend
- Entered the
list
command - Entered password
- Got an error:
Bug(kiwibank): 'NoneType' object has no attribute 'login'
(If --auto-update is passed on the command-line, new versions of the module will be checked automatically)
Use "logging debug" option to print backtraces.
- Reran
woob bank
with--auto-update
- Entered the
list
command, obtained the traceback.
Woob version?
(woob-env) danny@envy:~/github/woob$ woob config --version
Woob config v3.6 Copyright(C) 2010-2023 Christophe Benz, Romain Bignon
Module Version?
(woob-env) danny@envy:~/github/woob$ woob config info kiwibank
.------------------------------------------------------------------------------.
| Module kiwibank |
+-----------------.------------------------------------------------------------'
| Version | 202305231553
| Maintainer | Cédric Félizard <cedric@felizard.fr>
| License | AGPLv3+
| Description | Kiwibank
| Capabilities | CapBank, CapCollection, CapCredentialsCheck
| Installed | yes
| Location | https://updates.woob.tech/3/main/kiwibank.tar.gz
| |
| Configuration | login: Access number (default: )
| | password: Password (default: )
How did you install woob?
~$ conda create -n woob-env python=3
~$ conda activate woob-env
~$ pip install woob
~$ git clone https://gitlab.com/woob/woob.git
~$ cd woob
~/woob$ pip install -r requirements-dev.txt
~/woob$ ./tools/local_install.sh ~/bin
Additional info
-
#Python version#:
Python 3.11
-
#Operating System#:
~$ uname -a
Linux envy.local 6.2.0-20-generic #20-Ubuntu SMP PREEMPT_DYNAMIC Thu Apr 6 07:48:48 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
- #Conda Env Package Versions#:
(woob-env) danny@envy:~/github/woob$ conda list
# packages in environment at /home/danny/miniconda3/envs/woob-env:
#
# Name Version Build Channel
_libgcc_mutex 0.1 main
_openmp_mutex 5.1 1_gnu
alabaster 0.7.13 pypi_0 pypi
argcomplete 3.0.8 pypi_0 pypi
asttokens 2.2.1 pypi_0 pypi
attrs 23.1.0 pypi_0 pypi
babel 2.12.1 pypi_0 pypi
bzip2 1.0.8 h7b6447c_0
ca-certificates 2023.05.30 h06a4308_0
certifi 2023.5.7 pypi_0 pypi
cfgv 3.3.1 pypi_0 pypi
charset-normalizer 3.1.0 pypi_0 pypi
colorama 0.4.6 pypi_0 pypi
commitizen 3.3.0 pypi_0 pypi
coverage 7.2.7 pypi_0 pypi
decli 0.6.1 pypi_0 pypi
distlib 0.3.6 pypi_0 pypi
docutils 0.20.1 pypi_0 pypi
filelock 3.12.2 pypi_0 pypi
flake8 5.0.4 pypi_0 pypi
flake8-bugbear 23.3.12 pypi_0 pypi
flake8-import-order 0.18.2 pypi_0 pypi
html2text 2020.1.16 pypi_0 pypi
identify 2.5.24 pypi_0 pypi
idna 3.4 pypi_0 pypi
imagesize 1.4.1 pypi_0 pypi
importlib-metadata 6.6.0 pypi_0 pypi
iniconfig 2.0.0 pypi_0 pypi
isort 5.12.0 pypi_0 pypi
jinja2 3.1.2 pypi_0 pypi
ld_impl_linux-64 2.38 h1181459_1
libffi 3.4.4 h6a678d5_0
libgcc-ng 11.2.0 h1234567_1
libgomp 11.2.0 h1234567_1
libstdcxx-ng 11.2.0 h1234567_1
libuuid 1.41.5 h5eee18b_0
lxml 4.9.2 pypi_0 pypi
markdown-it-py 3.0.0 pypi_0 pypi
markupsafe 2.1.3 pypi_0 pypi
mccabe 0.7.0 pypi_0 pypi
mdurl 0.1.2 pypi_0 pypi
mock 4.0.3 pypi_0 pypi
ncurses 6.4 h6a678d5_0
nodeenv 1.8.0 pypi_0 pypi
openssl 3.0.8 h7f8727e_0
packaging 23.1 pypi_0 pypi
pillow 9.5.0 pypi_0 pypi
pip 23.1.2 py311h06a4308_0
platformdirs 3.5.3 pypi_0 pypi
pluggy 1.0.0 pypi_0 pypi
pre-commit 3.3.3 pypi_0 pypi
prettytable 3.6.0 pypi_0 pypi
prompt-toolkit 3.0.38 pypi_0 pypi
pycodestyle 2.9.1 pypi_0 pypi
pycountry 22.3.5 pypi_0 pypi
pyflakes 2.5.0 pypi_0 pypi
pygments 2.15.1 pypi_0 pypi
pytest 7.2.1 pypi_0 pypi
pytest-cov 4.0.0 pypi_0 pypi
python 3.11.3 h955ad1f_1
python-dateutil 2.8.2 pypi_0 pypi
pyyaml 6.0 pypi_0 pypi
questionary 1.10.0 pypi_0 pypi
readline 8.2 h5eee18b_0
requests 2.31.0 pypi_0 pypi
rich 13.4.2 pypi_0 pypi
setuptools 67.8.0 py311h06a4308_0
six 1.16.0 pypi_0 pypi
snowballstemmer 2.2.0 pypi_0 pypi
sphinx 7.0.1 pypi_0 pypi
sphinx-autodoc-typehints 1.23.0 pypi_0 pypi
sphinxcontrib-applehelp 1.0.4 pypi_0 pypi
sphinxcontrib-devhelp 1.0.2 pypi_0 pypi
sphinxcontrib-htmlhelp 2.0.1 pypi_0 pypi
sphinxcontrib-jquery 4.1 pypi_0 pypi
sphinxcontrib-jsmath 1.0.1 pypi_0 pypi
sphinxcontrib-qthelp 1.0.3 pypi_0 pypi
sphinxcontrib-serializinghtml 1.1.5 pypi_0 pypi
sqlite 3.41.2 h5eee18b_0
termcolor 2.3.0 pypi_0 pypi
tk 8.6.12 h1ccaba5_0
tomlkit 0.11.8 pypi_0 pypi
types-pyyaml 6.0.12.10 pypi_0 pypi
types-requests 2.31.0.1 pypi_0 pypi
types-setuptools 67.8.0.0 pypi_0 pypi
types-simplejson 3.19.0.1 pypi_0 pypi
types-termcolor 1.1.6.2 pypi_0 pypi
types-urllib3 1.26.25.13 pypi_0 pypi
tzdata 2023c h04d1e81_0
unidecode 1.3.6 pypi_0 pypi
urllib3 2.0.3 pypi_0 pypi
virtualenv 20.23.0 pypi_0 pypi
wcwidth 0.2.6 pypi_0 pypi
wheel 0.38.4 py311h06a4308_0
woob 3.6 pypi_0 pypi
xunitparser 1.3.4 pypi_0 pypi
xz 5.4.2 h5eee18b_0
zipp 3.15.0 pypi_0 pypi
zlib 1.2.13 h5eee18b_0
Edited by dannyp777