Skip to content

Commit d5cf865

Browse files
committed
add frame_depth_ to debug and debug.format
1 parent fb6d70e commit d5cf865

File tree

4 files changed

+26
-14
lines changed

4 files changed

+26
-14
lines changed

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ update-lockfiles:
2525
.PHONY: format
2626
format:
2727
black $(sources)
28-
ruff $(sources) --fix --exit-zero
28+
ruff $(sources) --fix-only
2929

3030
.PHONY: lint
3131
lint:

devtools/__main__.py

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,7 @@
77
# language=python
88
install_code = """
99
# add devtools `debug` function to builtins
10-
# we don't want to import devtools until it's required
11-
# since it breaks pytest, hence this proxy
10+
# we don't want to import devtools until it's required since it breaks pytest, hence this proxy
1211
class DebugProxy:
1312
def __init__(self):
1413
self._debug = None
@@ -20,8 +19,14 @@ def _import_debug(self):
2019
2120
def __call__(self, *args, **kwargs):
2221
self._import_debug()
22+
kwargs['frame_depth_'] = 3
2323
return self._debug(*args, **kwargs)
2424
25+
def format(self, *args, **kwargs):
26+
self._import_debug()
27+
kwargs['frame_depth_'] = 3
28+
return self._debug.format(*args, **kwargs)
29+
2530
def __getattr__(self, item):
2631
self._import_debug()
2732
return getattr(self._debug, item)
@@ -53,10 +58,10 @@ def install() -> int:
5358
install_path = Path(sitecustomize.__file__)
5459

5560
if hasattr(builtins, 'debug'):
56-
print(f'Looks like devtools is already installed at `{install_path}`.')
61+
print(f'Looks like devtools is already installed, probably in `{install_path}`.')
5762
return 0
5863

59-
print(f'Found path `{install_path}` to install devtools into __builtins__')
64+
print(f'Found path `{install_path}` to install devtools into `builtins`')
6065
print('To install devtools, run the following command:\n')
6166
print(f' python -m devtools print-code >> {install_path}\n')
6267
if not install_path.is_relative_to(Path.home()):
@@ -73,5 +78,5 @@ def install() -> int:
7378
elif 'print-code' in sys.argv:
7479
sys.exit(print_code())
7580
else:
76-
print(f'python-devtools v{VERSION}, CLI usage: python -m devtools [install|print-code]')
81+
print(f'python-devtools v{VERSION}, CLI usage: `python -m devtools install|print-code`')
7782
sys.exit(1)

devtools/debug.py

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -112,8 +112,15 @@ def __init__(self, *, warnings: 'Optional[bool]' = None, highlight: 'Optional[bo
112112
self._show_warnings = env_bool(warnings, 'PY_DEVTOOLS_WARNINGS', True)
113113
self._highlight = highlight
114114

115-
def __call__(self, *args: 'Any', file_: 'Any' = None, flush_: bool = True, **kwargs: 'Any') -> 'Any':
116-
d_out = self._process(args, kwargs)
115+
def __call__(
116+
self,
117+
*args: 'Any',
118+
file_: 'Any' = None,
119+
flush_: bool = True,
120+
frame_depth_: int = 2,
121+
**kwargs: 'Any',
122+
) -> 'Any':
123+
d_out = self._process(args, kwargs, frame_depth_)
117124
s = d_out.str(use_highlight(self._highlight, file_))
118125
print(s, file=file_, flush=flush_)
119126
if kwargs:
@@ -123,8 +130,8 @@ def __call__(self, *args: 'Any', file_: 'Any' = None, flush_: bool = True, **kwa
123130
else:
124131
return args
125132

126-
def format(self, *args: 'Any', **kwargs: 'Any') -> DebugOutput:
127-
return self._process(args, kwargs)
133+
def format(self, *args: 'Any', frame_depth_: int = 2, **kwargs: 'Any') -> DebugOutput:
134+
return self._process(args, kwargs, frame_depth_)
128135

129136
def breakpoint(self) -> None:
130137
import pdb
@@ -134,13 +141,13 @@ def breakpoint(self) -> None:
134141
def timer(self, name: 'Optional[str]' = None, *, verbose: bool = True, file: 'Any' = None, dp: int = 3) -> Timer:
135142
return Timer(name=name, verbose=verbose, file=file, dp=dp)
136143

137-
def _process(self, args: 'Any', kwargs: 'Any') -> DebugOutput:
144+
def _process(self, args: 'Any', kwargs: 'Any', frame_depth: int) -> DebugOutput:
138145
"""
139-
BEWARE: this must be called from a function exactly 2 levels below the top of the stack.
146+
BEWARE: this must be called from a function exactly `frame_depth` levels below the top of the stack.
140147
"""
141148
# HELP: any errors other than ValueError from _getframe? If so please submit an issue
142149
try:
143-
call_frame: 'FrameType' = sys._getframe(2)
150+
call_frame: 'FrameType' = sys._getframe(frame_depth)
144151
except ValueError:
145152
# "If [ValueError] is deeper than the call stack, ValueError is raised"
146153
return self.output_class(

devtools/version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
VERSION = '0.12.1'
1+
VERSION = '0.12.2'

0 commit comments

Comments
 (0)