From e0e3e1717e3d33762ce61950504f9637a6e669ed Mon Sep 17 00:00:00 2001
From: nkozlovskiy <nmk@ydb.tech>
Date: Fri, 29 Sep 2023 12:24:06 +0300
Subject: add ydb deps

---
 library/python/runtime_py3/entry_points.py | 59 ++++++++++++++++++++++++++++++
 1 file changed, 59 insertions(+)
 create mode 100644 library/python/runtime_py3/entry_points.py

(limited to 'library/python/runtime_py3/entry_points.py')

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()
-- 
cgit v1.2.3