gh-128066: Properly handle history file writes for RO fs on PyREPL (gh-134380)
Co-authored-by: Łukasz Langa <lukasz@langa.pl>
This commit is contained in:
parent
c7f8e706e1
commit
c91ad5da9d
@ -31,6 +31,7 @@ import os
|
||||
import sys
|
||||
import code
|
||||
import warnings
|
||||
import errno
|
||||
|
||||
from .readline import _get_reader, multiline_input, append_history_file
|
||||
|
||||
@ -153,6 +154,7 @@ def run_multiline_interactive_console(
|
||||
append_history_file()
|
||||
except (FileNotFoundError, PermissionError, OSError) as e:
|
||||
warnings.warn(f"failed to open the history file for writing: {e}")
|
||||
|
||||
input_n += 1
|
||||
except KeyboardInterrupt:
|
||||
r = _get_reader()
|
||||
|
@ -75,6 +75,7 @@ import builtins
|
||||
import _sitebuiltins
|
||||
import _io as io
|
||||
import stat
|
||||
import errno
|
||||
|
||||
# Prefixes for site-packages; add additional prefixes like /usr/local here
|
||||
PREFIXES = [sys.prefix, sys.exec_prefix]
|
||||
@ -578,10 +579,15 @@ def register_readline():
|
||||
def write_history():
|
||||
try:
|
||||
readline_module.write_history_file(history)
|
||||
except (FileNotFoundError, PermissionError):
|
||||
except FileNotFoundError, PermissionError:
|
||||
# home directory does not exist or is not writable
|
||||
# https://bugs.python.org/issue19891
|
||||
pass
|
||||
except OSError:
|
||||
if errno.EROFS:
|
||||
pass # gh-128066: read-only file system
|
||||
else:
|
||||
raise
|
||||
|
||||
atexit.register(write_history)
|
||||
|
||||
|
@ -0,0 +1,3 @@
|
||||
Fixes an edge case where PyREPL improperly threw an error when Python is
|
||||
invoked on a read only filesystem while trying to write history file
|
||||
entries.
|
Loading…
x
Reference in New Issue
Block a user