##// END OF EJS Templates
Use check_same_thread=False by default for history sqlite db (#13886)...
Use check_same_thread=False by default for history sqlite db (#13886) I had run into the following exception while trying to use IPython in a thread: ``` Traceback (most recent call last): File "/usr/local/lib/python3.11/dist-packages/IPython/core/interactiveshell.py", line 3745, in atexit_operations self._atexit_once() File "/usr/local/lib/python3.11/dist-packages/IPython/core/interactiveshell.py", line 3728, in _atexit_once self.history_manager.end_session() File "/usr/local/lib/python3.11/dist-packages/IPython/core/history.py", line 576, in end_session self.writeout_cache() File "/usr/local/lib/python3.11/dist-packages/decorator.py", line 232, in fun return caller(func, *(extras + args), **kw) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/dist-packages/IPython/core/history.py", line 60, in only_when_enabled return f(self, *a, **kw) ^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/dist-packages/IPython/core/history.py", line 831, in writeout_cache self._writeout_input_cache(conn) File "/usr/local/lib/python3.11/dist-packages/IPython/core/history.py", line 812, in _writeout_input_cache with conn: sqlite3.ProgrammingError: SQLite objects created in a thread can only be used in that same thread. The object was created in thread id 139673788811008 and this is thread id 139673823184704. ``` And discovered that an issue (#680) has been open for it since 2011. Back in [2012](https://github.com/ipython/ipython/issues/680#issuecomment-3444922), it seems like the only reason not to fix it was that the parameter `check_same_thread` was not documented, but now [it is](https://docs.python.org/3.11/library/sqlite3.html#sqlite3.connect), and it has been at least since [3.6](https://docs.python.org/3.6/library/sqlite3.html#sqlite3.connect). Note that according to the docs: > check_same_thread ([bool](https://docs.python.org/3/library/functions.html#bool)) – If True (default), only the creating thread may use the connection. If False, the connection may be shared across multiple threads; if so, write operations should be serialized by the user to avoid data corruption. But I don't think this is an issue here. The operations should be synchronized by the user only *on the same connection object*, and if I'm not mistaken, if two instances of IPython were started in separate threads, they'd each have their own history manager with its own connection. The exception above (and the one in the related issue) is raised from `atexit`, when the main thread is running finalizations registered by other threads. At that point, the operations are serial anyway because they are executed in a single thread.

File last commit:

r28242:074040ed
r28320:2da6fb98 merge
Show More
.gitignore
41 lines | 579 B | text/plain | TextLexer
Fernando Perez
Add MANIFEST to ignore list.
r4983 MANIFEST
Fernando Perez
Small fixes to git ignore file
r3200 build
MinRK
update gitignore to exclude dist and zipped man pages...
r4187 dist
_build
docs/man/*.gz
Brian Granger
Adding .gitignore and updating release to remove bzr tag.
r2592 docs/source/api/generated
Thomas Kluyver
Generate docs for config options.
r13459 docs/source/config/options
Thomas Kluyver
Ignore generated shortcut lists
r23845 docs/source/config/shortcuts/*.csv
Philippe Blain
.gitignore: ignore 'docs/source/config/shortcuts/table.tsv'...
r28182 docs/source/config/shortcuts/table.tsv
Coco Mishra
delete savefig files again
r26482 docs/source/savefig
Thomas Kluyver
git ignore generated magics docs
r18300 docs/source/interactive/magics-generated.txt
MinRK
added gh-pages command for GitHub hosted sphinx docs
r3255 docs/gh-pages
Min RK
jupyter_notebook path in setup base, gitignore
r21210 jupyter_notebook/notebook/static/mathjax
jupyter_notebook/static/style/*.map
Fernando Perez
Small fixes to git ignore file
r3200 *.py[co]
Bradley M. Froehle
Tell git to ignore __pycache__ directories.
r8534 __pycache__
Brian Granger
Adding .gitignore and updating release to remove bzr tag.
r2592 *.egg-info
Fernando Perez
Small fixes to git ignore file
r3200 *~
Thomas Kluyver
Ignore .bak files
r3111 *.bak
MinRK
ignore checkpoints
r10514 .ipynb_checkpoints
Marc Abramowitz
Add .tox to .gitignore
r7632 .tox
Jonathan Frederic
Ignore .DS_Store files (OSX)
r16747 .DS_Store
mvr
[issue547] add emacs tmp files and .coverage files to gitignore
r18729 \#*#
.#*
Hugo
Remove redundant Python 2 code
r24010 .cache
mvr
[issue547] add emacs tmp files and .coverage files to gitignore
r18729 .coverage
Yuri Numerov
added .swp files to gitignore
r21623 *.swp
dhirschf
Update .gitignore
r24414 .pytest_cache
Alyssa Whitwell
Add .python-version to gitignore
r24455 .python-version
EtiennePelletier
Display exception notes in tracebacks
r28242 .venv*/
Andreas
Ignored virtualenv folder.
r24994 venv*/
Blazej Michalik
Add .mypy_cache to .gitignore
r26642 .mypy_cache/
telamonian
fix uncaught `BdbQuit` exceptions on ipdb `exit`...
r27658
# jetbrains ide stuff
*.iml
.idea/
# vscode ide stuff
*.code-workspace
.history
.vscode