MCPcopy Index your code
hub / github.com/python/cpython / logger

Function logger

Tools/peg_generator/pegen/parser.py:17–37  ·  view source on GitHub ↗

For non-memoized functions that we want to be logged. (In practice this is only non-leader left-recursive functions.)

(method: F)

Source from the content-addressed store, hash-verified

15
16
17def logger(method: F) -> F:
18 """For non-memoized functions that we want to be logged.
19
20 (In practice this is only non-leader left-recursive functions.)
21 """
22 method_name = method.__name__
23
24 def logger_wrapper(self: "Parser", *args: object) -> Any:
25 if not self._verbose:
26 return method(self, *args)
27 argsr = ",".join(repr(arg) for arg in args)
28 fill = " " * self._level
29 print(f"{fill}{method_name}({argsr}) .... (looking at {self.showpeek()})")
30 self._level += 1
31 tree = method(self, *args)
32 self._level -= 1
33 print(f"{fill}... {method_name}({argsr}) --> {tree!s:.200}")
34 return tree
35
36 logger_wrapper.__wrapped__ = method # type: ignore[attr-defined]
37 return cast(F, logger_wrapper)
38
39
40def memoize(method: F) -> F:

Callers

nothing calls this directly

Calls 1

castFunction · 0.90

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…