Add configuration for python
This commit is contained in:
parent
226e4cb05a
commit
da1cbfbc0d
11 changed files with 146 additions and 0 deletions
5
.config/bpython/README.md
Normal file
5
.config/bpython/README.md
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
# `bpython`-related Configurations
|
||||
|
||||
This folder contains
|
||||
the [config](./config)
|
||||
for the [`bpython`](https://github.com/bpython/bpython) interpreter.
|
||||
8
.config/bpython/config
Normal file
8
.config/bpython/config
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
[general]
|
||||
|
||||
# Make `bpython` and `python` share their history
|
||||
# (Note: `$XDG_STATE_HOME` is not expanded)
|
||||
hist_file = ~/.local/state/python/history
|
||||
|
||||
# No limit
|
||||
hist_length = 999999
|
||||
|
|
@ -4,3 +4,11 @@
|
|||
*.orig
|
||||
*.temp
|
||||
*.tmp
|
||||
|
||||
# Python
|
||||
__pycache__/
|
||||
*.py[cod]
|
||||
.python-version
|
||||
.venv/
|
||||
venv/
|
||||
.env
|
||||
|
|
|
|||
5
.config/pypoetry/README.md
Normal file
5
.config/pypoetry/README.md
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
# `poetry`-related Configurations
|
||||
|
||||
This folder contains
|
||||
the [config](./config.toml)
|
||||
for [`poetry`](https://python-poetry.org/).
|
||||
9
.config/pypoetry/config.toml
Normal file
9
.config/pypoetry/config.toml
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
[virtualenvs]
|
||||
|
||||
create = true
|
||||
in-project = true # .venv/ inside the project, not a central cache
|
||||
|
||||
|
||||
[installer]
|
||||
|
||||
parallel = true
|
||||
6
.config/python/README.md
Normal file
6
.config/python/README.md
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
# `python`-related Configurations
|
||||
|
||||
This folder contains
|
||||
the [interactive startup file](./startup.py)
|
||||
for [Python](https://python.org/),
|
||||
found via `$PYTHONSTARTUP` set in [`~/.config/shell/env`](../shell/env).
|
||||
54
.config/python/startup.py
Normal file
54
.config/python/startup.py
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
"""Move Python's history file to "$XDG_STATE_HOME/python/history".
|
||||
|
||||
Python 3.13+ honors the `$PYTHON_HISTORY` environment variable,
|
||||
so this file is only needed for older interpreters (e.g., via `pyenv`).
|
||||
|
||||
`$PYTHONSTARTUP` is executed in the REPL's own namespace
|
||||
=> Everything is wrapped in a function that is deleted afterwards
|
||||
to avoid polluting the prompt with temporary names
|
||||
"""
|
||||
|
||||
import sys
|
||||
|
||||
|
||||
def _setup_history():
|
||||
if sys.version_info >= (3, 13):
|
||||
return # `$PYTHON_HISTORY` handles it
|
||||
|
||||
try:
|
||||
import readline # because it is not in every build
|
||||
except ImportError:
|
||||
return
|
||||
|
||||
import atexit
|
||||
import os
|
||||
|
||||
state_home = os.environ.get("XDG_STATE_HOME") or os.path.join(
|
||||
os.path.expanduser("~"), ".local", "state"
|
||||
)
|
||||
history_file = os.path.join(state_home, "python", "history")
|
||||
|
||||
os.makedirs(os.path.dirname(history_file), exist_ok=True)
|
||||
if os.path.isdir(history_file):
|
||||
raise OSError(history_file + " must not be a directory")
|
||||
|
||||
try:
|
||||
readline.read_history_file(history_file)
|
||||
except OSError: # History file does not exist yet or is unreadable
|
||||
pass
|
||||
|
||||
readline.set_auto_history(True)
|
||||
readline.set_history_length(999999)
|
||||
|
||||
def write_history():
|
||||
try:
|
||||
readline.write_history_file(history_file)
|
||||
except OSError:
|
||||
pass
|
||||
|
||||
atexit.register(write_history) # Keep a reference to `write_history`
|
||||
|
||||
|
||||
_setup_history()
|
||||
|
||||
del _setup_history
|
||||
|
|
@ -97,3 +97,29 @@ if _command_exists git; then
|
|||
esac
|
||||
|
||||
fi
|
||||
|
||||
|
||||
|
||||
alias py='python3'
|
||||
|
||||
ipy() {
|
||||
if _command_exists ipython; then
|
||||
ipython "$@"
|
||||
elif _command_exists ipython3; then
|
||||
ipython3 "$@"
|
||||
else
|
||||
echo "ipython is not installed" >&2
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
_command_exists poetry && alias pr='poetry run'
|
||||
|
||||
if _command_exists pyenv; then
|
||||
|
||||
alias pyvenvs='pyenv virtualenvs --bare --skip-aliases'
|
||||
alias pyver='pyenv version'
|
||||
alias pyvers='pyenv versions --skip-aliases'
|
||||
alias pywhich='pyenv which'
|
||||
|
||||
fi
|
||||
|
|
|
|||
|
|
@ -63,3 +63,7 @@ unset _bat
|
|||
export BAT_CONFIG_PATH="$XDG_CONFIG_HOME/bat/config"
|
||||
export LESSHISTFILE="$XDG_STATE_HOME/less/history"
|
||||
export PSQLRC="$XDG_CONFIG_HOME/psql/psqlrc"
|
||||
export PYENV_ROOT="$XDG_DATA_HOME/pyenv"
|
||||
export PYTHONPYCACHEPREFIX="$XDG_CACHE_HOME/python"
|
||||
export PYTHONSTARTUP="$XDG_CONFIG_HOME/python/startup.py"
|
||||
export PYTHON_HISTORY="$XDG_STATE_HOME/python/history"
|
||||
|
|
|
|||
0
.local/state/python/.gitkeep
Normal file
0
.local/state/python/.gitkeep
Normal file
21
.profile
21
.profile
|
|
@ -74,6 +74,12 @@ _prepend_to_path "$HOME/.local/bin"
|
|||
[ -f "$HOME/.config/shell/env" ] && . "$HOME/.config/shell/env"
|
||||
|
||||
|
||||
# Must be between sourcing ~/.config/shell/env and ~/.config/shell/aliases
|
||||
# because the first defines the `pyenv` related environment variables
|
||||
# while the second creates `pyenv` related aliases
|
||||
[ -n "${PYENV_ROOT:-}" ] && _prepend_to_path "$PYENV_ROOT/bin"
|
||||
|
||||
|
||||
[ -f "$HOME/.config/shell/aliases" ] && . "$HOME/.config/shell/aliases"
|
||||
|
||||
|
||||
|
|
@ -91,5 +97,20 @@ fi
|
|||
# which then also ensures that this file is sourced
|
||||
|
||||
|
||||
if [ -z "${PYENV_SHELL:-}" ] && _command_exists pyenv; then
|
||||
|
||||
eval "$(pyenv init -)" || echo "WARN: pyenv init failed" >&2
|
||||
|
||||
case $- in
|
||||
*i*)
|
||||
if [ -d "$PYENV_ROOT/plugins/pyenv-virtualenv" ]; then
|
||||
eval "$(pyenv virtualenv-init -)" || true
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
fi
|
||||
|
||||
|
||||
# When everything is loaded, show a little welcome message
|
||||
case $- in *i*) [ -f "$HOME/.config/shell/welcome" ] && . "$HOME/.config/shell/welcome";; esac
|
||||
|
|
|
|||
Loading…
Reference in a new issue