2024-10-02 12:37:28 +00:00
|
|
|
def is_vanilla() -> bool:
|
|
|
|
import sys
|
2023-08-01 23:45:32 +00:00
|
|
|
|
2024-10-02 12:37:28 +00:00
|
|
|
return not hasattr(__builtins__, "__IPYTHON__") and "bpython" not in sys.argv[0]
|
2023-08-01 23:45:32 +00:00
|
|
|
|
|
|
|
|
2024-10-02 12:37:28 +00:00
|
|
|
def setup_history():
|
|
|
|
import os
|
|
|
|
import atexit
|
|
|
|
import readline
|
|
|
|
from pathlib import Path
|
2023-08-01 23:45:32 +00:00
|
|
|
|
2024-10-02 12:37:28 +00:00
|
|
|
if state_home := os.environ.get("XDG_STATE_HOME"):
|
|
|
|
state_home = Path(state_home)
|
|
|
|
else:
|
|
|
|
state_home = Path.home() / ".local" / "state"
|
2023-08-01 23:45:32 +00:00
|
|
|
|
2024-10-02 12:37:28 +00:00
|
|
|
history: Path = state_home / "python_history"
|
2023-08-01 23:45:32 +00:00
|
|
|
|
2024-10-02 12:37:28 +00:00
|
|
|
# https://github.com/python/cpython/issues/105694
|
|
|
|
if not history.is_file():
|
|
|
|
# breaks on macos + python3 without this.
|
|
|
|
readline.write_history_file(str(history))
|
2023-08-01 23:45:32 +00:00
|
|
|
|
2024-10-02 12:37:28 +00:00
|
|
|
readline.read_history_file(str(history))
|
|
|
|
atexit.register(readline.write_history_file, str(history))
|
|
|
|
|
|
|
|
|
|
|
|
if is_vanilla():
|
|
|
|
setup_history()
|