aboutsummaryrefslogtreecommitdiffstats
path: root/library/python/runtime_py3/main/main.c
diff options
context:
space:
mode:
authorkuzmich321 <kuzmich321@yandex-team.com>2025-02-28 10:50:51 +0300
committerkuzmich321 <kuzmich321@yandex-team.com>2025-02-28 11:56:32 +0300
commit6a9a436309f31f967622304be9fb9f793b38e9cf (patch)
tree18eada549679a63e5e89b763be236e1775d446ce /library/python/runtime_py3/main/main.c
parenta4ebae0970f4e2748cb954f4fd56b40b42841809 (diff)
downloadydb-6a9a436309f31f967622304be9fb9f793b38e9cf.tar.gz
fix arcadia py3 runtime for win due to encoding
[Вот так](HIDDEN_URL делает нативный питон [Репродьюсер](HIDDEN_URL Как оно выглядит [ДО](HIDDEN_URL и [ПОСЛЕ](HIDDEN_URL, а вот так [нативный](HIDDEN_URL commit_hash:cdce69c28e699d42f25e43f5d6efb214c8227024
Diffstat (limited to 'library/python/runtime_py3/main/main.c')
-rw-r--r--library/python/runtime_py3/main/main.c31
1 files changed, 30 insertions, 1 deletions
diff --git a/library/python/runtime_py3/main/main.c b/library/python/runtime_py3/main/main.c
index 0c4aa23013..21742d263c 100644
--- a/library/python/runtime_py3/main/main.c
+++ b/library/python/runtime_py3/main/main.c
@@ -74,11 +74,20 @@ static int RunModule(const char* modname)
return 0;
}
-static int pymain(int argc, char** argv) {
+#ifdef MS_WINDOWS
+static int pymain(int argc, wchar_t** argv)
+#else
+static int pymain(int argc, char** argv)
+#endif
+{
PyStatus status;
if (IsYaIdeVenv()) {
+#ifdef MS_WINDOWS
+ return Py_Main(argc, argv);
+#else
return Py_BytesMain(argc, argv);
+#endif
}
status = _PyRuntime_Initialize();
@@ -115,12 +124,20 @@ static int pymain(int argc, char** argv) {
}
if (argc > 0 && argv) {
+#ifdef MS_WINDOWS
+ status = PyConfig_SetString(&config, &config.program_name, argv[0]);
+#else
status = PyConfig_SetBytesString(&config, &config.program_name, argv[0]);
+#endif
if (PyStatus_Exception(status)) {
goto error;
}
+#ifdef MS_WINDOWS
+ status = PyConfig_SetArgv(&config, argc, argv);
+#else
status = PyConfig_SetBytesArgv(&config, argc, argv);
+#endif
if (PyStatus_Exception(status)) {
goto error;
}
@@ -155,7 +172,11 @@ static int pymain(int argc, char** argv) {
}
if (entry_point_copy && !strcmp(entry_point_copy, main_entry_point)) {
+#ifdef MS_WINDOWS
+ sts = Py_Main(argc, argv);
+#else
sts = Py_BytesMain(argc, argv);
+#endif
free(entry_point_copy);
return sts;
}
@@ -217,8 +238,16 @@ error:
return sts;
}
+#ifdef MS_WINDOWS
+int (*mainptr)(int argc, wchar_t** argv) = pymain;
+
+int wmain(int argc, wchar_t** argv) {
+ return mainptr(argc, argv);
+}
+#else
int (*mainptr)(int argc, char** argv) = pymain;
int main(int argc, char** argv) {
return mainptr(argc, argv);
}
+#endif