only use python history hack for <3.14 machines

This commit is contained in:
2026-01-16 09:06:46 -05:00
parent a910f2fc66
commit 41a06e089f
2 changed files with 49 additions and 0 deletions

View File

@@ -12,3 +12,7 @@ README.md
{{ if or (eq .chezmoi.hostname "daybreak") (eq .chezmoi.hostname "epoch") (eq .chezmoi.hostname "UGC13335X84") (eq .chezmoi.hostname "UGCB2YBS33") }} {{ if or (eq .chezmoi.hostname "daybreak") (eq .chezmoi.hostname "epoch") (eq .chezmoi.hostname "UGC13335X84") (eq .chezmoi.hostname "UGCB2YBS33") }}
.local/share/gnupg/sshcontrol .local/share/gnupg/sshcontrol
{{ end }} {{ end }}
{{ if or (eq .chezmoi.hostname "daybreak") (eq .chezmoi.hostname "epoch") (eq .chezmoi.hostname "circadian") (eq .chezmoi.hostname "twilight") (env "ANDROID_ROOT") }}
.config/python
{{ end }}

View File

@@ -0,0 +1,45 @@
#!/usr/bin/env python3
# This entire thing is unnecessary post v3.13.0a3
# https://github.com/python/cpython/issues/73965
def is_vanilla() -> bool:
""":return: whether running "vanilla" Python"""
import sys
return not hasattr(__builtins__, "__IPYTHON__") and "bpython" not in sys.argv[0]
def setup_history():
"""read and write history from state file"""
import os
import atexit
import readline
from pathlib import Path
# https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html#variables
if state_home := os.environ.get("XDG_STATE_HOME"):
state_home = Path(state_home)
else:
state_home = Path.home() / ".local" / "state"
if not state_home.is_dir():
print("Error: XDG_SATE_HOME does not exist at", state_home)
history: Path = state_home / "python_history"
# https://github.com/python/cpython/issues/105694
if not history.is_file():
with open(history, "w") as f:
f.write(
"_HiStOrY_V2_"
+ "\
\
"
) # breaks on macos + python3 without this.
readline.read_history_file(history)
atexit.register(readline.write_history_file, history)
if is_vanilla():
setup_history()