diff options
author | imunkin <imunkin@yandex-team.com> | 2024-11-08 10:00:23 +0300 |
---|---|---|
committer | imunkin <imunkin@yandex-team.com> | 2024-11-08 10:12:13 +0300 |
commit | a784a2f943d6e15caa6241e2e96d80aac6dbf375 (patch) | |
tree | 05f1e5366c916b988a8afb75bdab8ddeee0f6e6d /yql/essentials/udfs/common/python/main_py3/__main__.pyx | |
parent | d70137a7b530ccaa52834274913bbb5a3d1ca06e (diff) | |
download | ydb-a784a2f943d6e15caa6241e2e96d80aac6dbf375.tar.gz |
Move yql/udfs/common/ to /yql/essentials YQL-19206
Except the following directories:
* clickhouse/client
* datetime
* knn
* roaring
commit_hash:c7da95636144d28db109d6b17ddc762e9bacb59f
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 0000000000..6f4ca94358 --- /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() |