aboutsummaryrefslogtreecommitdiffstats
path: root/library/python/runtime_py3/entry_points.py
diff options
context:
space:
mode:
authornkozlovskiy <nmk@ydb.tech>2023-09-29 12:24:06 +0300
committernkozlovskiy <nmk@ydb.tech>2023-09-29 12:41:34 +0300
commite0e3e1717e3d33762ce61950504f9637a6e669ed (patch)
treebca3ff6939b10ed60c3d5c12439963a1146b9711 /library/python/runtime_py3/entry_points.py
parent38f2c5852db84c7b4d83adfcb009eb61541d1ccd (diff)
downloadydb-e0e3e1717e3d33762ce61950504f9637a6e669ed.tar.gz
add ydb deps
Diffstat (limited to 'library/python/runtime_py3/entry_points.py')
-rw-r--r--library/python/runtime_py3/entry_points.py59
1 files changed, 59 insertions, 0 deletions
diff --git a/library/python/runtime_py3/entry_points.py b/library/python/runtime_py3/entry_points.py
new file mode 100644
index 0000000000..37d9af864a
--- /dev/null
+++ b/library/python/runtime_py3/entry_points.py
@@ -0,0 +1,59 @@
+import sys
+
+import __res
+
+
+def repl():
+ user_ns = {}
+ py_main = __res.find("PY_MAIN")
+
+ if py_main:
+ mod_name, func_name = (py_main.split(b":", 1) + [None])[:2]
+ try:
+ import importlib
+
+ mod = importlib.import_module(mod_name.decode("UTF-8"))
+ user_ns = mod.__dict__
+ except ModuleNotFoundError:
+ import traceback
+
+ traceback.print_exc()
+
+ if func_name and "__main__" not in user_ns:
+
+ def run(args):
+ if isinstance(args, str):
+ import shlex
+
+ args = shlex.split(args)
+
+ import sys
+
+ sys.argv = [sys.argv[0]] + args
+ getattr(mod, func_name)()
+
+ user_ns["__main__"] = run
+
+ try:
+ import IPython
+ except ModuleNotFoundError:
+ pass
+ else:
+ return IPython.start_ipython(user_ns=user_ns)
+
+ import code
+
+ code.interact(local=user_ns)
+
+
+def resource_files():
+ sys.stdout.buffer.write(b"\n".join(sorted(__res.resfs_files()) + [b""]))
+
+
+def run_constructors():
+ for key, module_name in __res.iter_keys(b"py/constructors/"):
+ import importlib
+
+ module = importlib.import_module(module_name.decode())
+ init_func = getattr(module, __res.find(key).decode())
+ init_func()