diff options
author | nik-bes <nik-bes@yandex-team.com> | 2025-05-19 07:20:13 +0300 |
---|---|---|
committer | nik-bes <nik-bes@yandex-team.com> | 2025-05-19 07:36:02 +0300 |
commit | 317b7368e24941ff76499f500579fd9b10f6656e (patch) | |
tree | abbcbaea595e7d2e9f23cf59a408b3082fe4340d /yql/essentials/udfs/common/python/main_py3/main.pyx | |
parent | 6b666a52d40308ab9b3532cd8d3008b9f37cfffb (diff) | |
download | ydb-317b7368e24941ff76499f500579fd9b10f6656e.tar.gz |
Update Cython to 3.0.10.
commit_hash:b43c96b868cd36d636192fd2c6024d9f0d2fb6f8
Diffstat (limited to 'yql/essentials/udfs/common/python/main_py3/main.pyx')
-rw-r--r-- | yql/essentials/udfs/common/python/main_py3/main.pyx | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/yql/essentials/udfs/common/python/main_py3/main.pyx b/yql/essentials/udfs/common/python/main_py3/main.pyx new file mode 100644 index 00000000000..6f4ca943584 --- /dev/null +++ b/yql/essentials/udfs/common/python/main_py3/main.pyx @@ -0,0 +1,50 @@ +import os +import runpy +import importlib + +import __res + + +cdef env_entry_point = 'Y_PYTHON_ENTRY_POINT' + + +cdef extern from 'main.h': + pass + + +def find_pymain(): + py_main = __res.find('PY_MAIN') + + if isinstance(py_main, bytes): + py_main = py_main.decode('utf8') + + if isinstance(py_main, unicode): + return py_main + + return None + + +def run_main(): + entry_point = os.environ.pop(env_entry_point, None) + + if entry_point is None: + entry_point = find_pymain() + + if entry_point is None: + raise RuntimeError('No entry point found') + + module_name, colon, func_name = entry_point.partition(':') + + if not colon: + runpy._run_module_as_main(module_name, alter_argv=False) + return + + if not module_name: + module_name = 'library.python.runtime_py3.entry_points' + + module = importlib.import_module(module_name) + func = getattr(module, func_name) + func() + + +run_main() |