generated from Yavook.de/vscode-python3
namespace injection experiments
This commit is contained in:
parent
b997ee61ef
commit
5ffd522209
3 changed files with 75 additions and 0 deletions
52
namespace-inject.py
Normal file
52
namespace-inject.py
Normal file
|
@ -0,0 +1,52 @@
|
|||
# import new
|
||||
|
||||
|
||||
from types import FunctionType
|
||||
|
||||
|
||||
def my_func(pstr: str) -> None:
|
||||
|
||||
def foo() -> None:
|
||||
print(f"{pstr = }")
|
||||
|
||||
foo()
|
||||
|
||||
|
||||
def my_func2(pstr: str) -> None:
|
||||
foo()
|
||||
|
||||
|
||||
def func_test(f: FunctionType) -> None:
|
||||
print(f"{f.__name__ } = {f}, {f.__code__.co_name = }")
|
||||
f("narf")
|
||||
f("zort")
|
||||
|
||||
|
||||
def main() -> None:
|
||||
func_test(my_func)
|
||||
|
||||
fcode = my_func.__code__.replace(
|
||||
co_name="foo",
|
||||
co_qualname="foo",
|
||||
co_nlocals=3,
|
||||
co_varnames=("pstr", "foo", "lol")
|
||||
)
|
||||
|
||||
f = FunctionType(
|
||||
name="foo",
|
||||
code=fcode,
|
||||
globals=my_func.__globals__,
|
||||
)
|
||||
|
||||
func_test(f)
|
||||
|
||||
import json
|
||||
|
||||
print(json.dumps({
|
||||
name: repr(getattr(f.__code__, name))
|
||||
for name in dir(f.__code__)
|
||||
}, indent=2))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
7
poetry.lock
generated
Normal file
7
poetry.lock
generated
Normal file
|
@ -0,0 +1,7 @@
|
|||
# This file is automatically @generated by Poetry 1.4.2 and should not be changed by hand.
|
||||
package = []
|
||||
|
||||
[metadata]
|
||||
lock-version = "2.0"
|
||||
python-versions = "^3.10"
|
||||
content-hash = "53f2eabc9c26446fbcc00d348c47878e118afc2054778c3c803a0a8028af27d9"
|
16
pyproject.toml
Normal file
16
pyproject.toml
Normal file
|
@ -0,0 +1,16 @@
|
|||
[tool.poetry]
|
||||
name = "cursed-snakes"
|
||||
version = "0.1.0"
|
||||
description = ""
|
||||
authors = ["Jörn-Michael Miehe <jmm@yavook.de>"]
|
||||
license = "MIT"
|
||||
readme = "README.md"
|
||||
packages = [{include = "cursed_snakes"}]
|
||||
|
||||
[tool.poetry.dependencies]
|
||||
python = "^3.10"
|
||||
|
||||
|
||||
[build-system]
|
||||
requires = ["poetry-core"]
|
||||
build-backend = "poetry.core.masonry.api"
|
Loading…
Reference in a new issue