aboutsummaryrefslogtreecommitdiffstats
path: root/library/cpp/pybind/embedding.cpp
diff options
context:
space:
mode:
authorsay <say@yandex-team.com>2023-02-14 17:24:43 +0300
committersay <say@yandex-team.com>2023-02-14 17:24:43 +0300
commite0094c4ad6964e11564777bc0d859c68d8aa9de2 (patch)
tree5d2ad1a4df88da1f74385888891a2a5f9fbbc3ef /library/cpp/pybind/embedding.cpp
parent65a08c9fdece8dba50da8beb4d7c81447211dd45 (diff)
downloadydb-e0094c4ad6964e11564777bc0d859c68d8aa9de2.tar.gz
Migrate black linter on custom_lint pipeline
Diffstat (limited to 'library/cpp/pybind/embedding.cpp')
-rw-r--r--library/cpp/pybind/embedding.cpp41
1 files changed, 41 insertions, 0 deletions
diff --git a/library/cpp/pybind/embedding.cpp b/library/cpp/pybind/embedding.cpp
new file mode 100644
index 0000000000..78b608715e
--- /dev/null
+++ b/library/cpp/pybind/embedding.cpp
@@ -0,0 +1,41 @@
+#define PY_SSIZE_T_CLEAN
+#include <Python.h>
+
+#include "embedding.h"
+
+#include <util/generic/ptr.h>
+#include <util/generic/yexception.h>
+
+namespace NPyBind {
+ TEmbedding::TEmbedding(char* argv0) {
+#if PY_MAJOR_VERSION < 3
+ Py_SetProgramName(argv0);
+ Py_Initialize();
+#else
+ PyStatus status;
+
+ PyConfig config;
+ PyConfig_InitPythonConfig(&config);
+ // Disable parsing command line arguments
+ config.parse_argv = 0;
+
+ status = PyConfig_SetBytesString(&config, &config.program_name, argv0);
+ if (PyStatus_Exception(status)) {
+ PyConfig_Clear(&config);
+ Py_ExitStatusException(status);
+ }
+
+ status = Py_InitializeFromConfig(&config);
+ if (PyStatus_Exception(status)) {
+ PyConfig_Clear(&config);
+ Py_ExitStatusException(status);
+ }
+
+ PyConfig_Clear(&config);
+#endif
+ }
+
+ TEmbedding::~TEmbedding() {
+ Py_Finalize();
+ }
+}