https://github.com/wyfo/meta-example
Example of meta programmation with AST transformation
https://github.com/wyfo/meta-example
Last synced: 7 months ago
JSON representation
Example of meta programmation with AST transformation
- Host: GitHub
- URL: https://github.com/wyfo/meta-example
- Owner: wyfo
- Created: 2019-12-06T13:59:34.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2019-12-06T14:00:16.000Z (almost 6 years ago)
- Last Synced: 2025-01-11T16:13:33.306Z (9 months ago)
- Language: Python
- Size: 2.93 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
Small project to give an overview of Python metaprogramming capacity, focusing on AST transformation.
It contains a decorator `trace` which allows to print all the execution path descending from the decorated function. The execution path consists of function call with serialized arguments and assignments; for the moment (and maybe for ever as it was only a quick demonstration project), local functions are not handled by the trace.
An example will be more explicit than the previous explaination:
```python
from trace import trace
def incr(i: int) -> int:
return i + 1@trace
def func(i: int):
if i < 10:
new_i = incr(i)
func(new_i)func(5) # will print
# func(5)
# incr(5)
# new_i = 6
# func(6)
# incr(6)
# new_i = 7
# func(7)
# incr(7)
# new_i = 8
# func(8)
# incr(8)
# new_i = 9
# func(9)
# incr(9)
# new_i = 10
# func(10)
```