79 lines
2.6 KiB
Python
79 lines
2.6 KiB
Python
# tractor: structured concurrent "actors".
|
|
# Copyright 2018-eternity Tyler Goodlet.
|
|
|
|
# This program is free software: you can redistribute it and/or modify
|
|
# it under the terms of the GNU Affero General Public License as published by
|
|
# the Free Software Foundation, either version 3 of the License, or
|
|
# (at your option) any later version.
|
|
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU Affero General Public License for more details.
|
|
|
|
# You should have received a copy of the GNU Affero General Public License
|
|
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
|
|
"""
|
|
Runtime "developer experience" utils and addons to aid our
|
|
(advanced) users and core devs in building distributed applications
|
|
and working with/on the actor runtime.
|
|
|
|
"""
|
|
from ._debug import (
|
|
maybe_wait_for_debugger as maybe_wait_for_debugger,
|
|
acquire_debug_lock as acquire_debug_lock,
|
|
breakpoint as breakpoint,
|
|
pause as pause,
|
|
pause_from_sync as pause_from_sync,
|
|
sigint_shield as sigint_shield,
|
|
open_crash_handler as open_crash_handler,
|
|
maybe_open_crash_handler as maybe_open_crash_handler,
|
|
maybe_init_greenback as maybe_init_greenback,
|
|
post_mortem as post_mortem,
|
|
mk_pdb as mk_pdb,
|
|
)
|
|
from ._stackscope import (
|
|
enable_stack_on_sig as enable_stack_on_sig,
|
|
)
|
|
from .pformat import (
|
|
add_div as add_div,
|
|
pformat_caller_frame as pformat_caller_frame,
|
|
pformat_boxed_tb as pformat_boxed_tb,
|
|
)
|
|
|
|
|
|
# TODO, move this to a new `.devx._pdbp` mod?
|
|
def _enable_readline_feats() -> str:
|
|
'''
|
|
Handle `readline` when compiled with `libedit` to avoid breaking
|
|
tab completion in `pdbp` (and its dep `tabcompleter`)
|
|
particularly since `uv` cpython distis are compiled this way..
|
|
|
|
See docs for deats,
|
|
https://docs.python.org/3/library/readline.html#module-readline
|
|
|
|
Originally discovered soln via SO answer,
|
|
https://stackoverflow.com/q/49287102
|
|
|
|
'''
|
|
import readline
|
|
if (
|
|
# 3.13+ attr
|
|
# https://docs.python.org/3/library/readline.html#readline.backend
|
|
(getattr(readline, 'backend', False) == 'libedit')
|
|
or
|
|
'libedit' in readline.__doc__
|
|
):
|
|
readline.parse_and_bind("python:bind -v")
|
|
readline.parse_and_bind("python:bind ^I rl_complete")
|
|
return 'libedit'
|
|
else:
|
|
readline.parse_and_bind("tab: complete")
|
|
readline.parse_and_bind("set editing-mode vi")
|
|
readline.parse_and_bind("set keymap vi")
|
|
return 'readline'
|
|
|
|
|
|
_enable_readline_feats()
|