aboutsummaryrefslogtreecommitdiffstats
path: root/library/cpp/pybind/module.cpp
diff options
context:
space:
mode:
authorsay <say@yandex-team.com>2023-03-31 10:07:15 +0300
committersay <say@yandex-team.com>2023-03-31 10:07:15 +0300
commite163b69a87c70baac07bd99142916735e0c283fa (patch)
tree73e22c0f9e975ff6dc70f38534ec84588587d25c /library/cpp/pybind/module.cpp
parent6be8bf780352147bcac5afec43505883b69229a0 (diff)
downloadydb-e163b69a87c70baac07bd99142916735e0c283fa.tar.gz
Swith flake8 to custom lint schema
Diffstat (limited to 'library/cpp/pybind/module.cpp')
-rw-r--r--library/cpp/pybind/module.cpp72
1 files changed, 0 insertions, 72 deletions
diff --git a/library/cpp/pybind/module.cpp b/library/cpp/pybind/module.cpp
deleted file mode 100644
index b7b003d3b08..00000000000
--- a/library/cpp/pybind/module.cpp
+++ /dev/null
@@ -1,72 +0,0 @@
-#include "module.h"
-#include "ptr.h"
-
-#include <util/generic/adaptor.h>
-
-namespace NPyBind {
-
-#if PY_MAJOR_VERSION >= 3
- namespace NPrivate {
- struct TFinCallBacksHolder {
- static TVector<TFinalizationCallBack>& GetCallBacks() {
- static TVector<TFinalizationCallBack> res;
- return res;
- }
- };
-
- TAtExitRegistrar::TAtExitRegistrar(TPyObjectPtr module) {
- TPyObjectPtr atExitModuleName(Py_BuildValue("s", "atexit"), true);
- TPyObjectPtr atExitModule(PyImport_Import(atExitModuleName.Get()));
- Y_VERIFY(atExitModule);
- TPyObjectPtr finalizerFunc(PyObject_GetAttrString(module.Get(), "finalizer"), true);
- Y_VERIFY(finalizerFunc);
- TPyObjectPtr registerName(Py_BuildValue("s", "register"), true);
- PyObject_CallMethodObjArgs(atExitModule.Get(), registerName.Get(), finalizerFunc.Get(), nullptr);
- }
-
- TPyBindModuleRegistrar::TPyBindModuleRegistrar() {
- TPyObjectPtr modules(PySys_GetObject("modules"));
- Y_ENSURE(modules.Get());
- if (Module = NPrivate::CreatePyBindModule()) {
- Y_VERIFY(0 == PyDict_SetItemString(modules.Get(), "pybind", Module.RefGet()));
- }
- AddFinalizationCallBack([this]() {
- auto ptr = Module;
- Y_UNUSED(ptr);
- TPyObjectPtr modules(PySys_GetObject("modules"));
- Y_ENSURE(modules.Get());
- TPyObjectPtr pyBindName(Py_BuildValue("s", "pybind"));
- if (PyDict_Contains(modules.Get(), pyBindName.Get()) == 1) {
- Y_VERIFY(0==PyDict_DelItemString(modules.Get(), "pybind"));
- }
- if (Module) {
- //We have to untrack the module because some refs from him refers to gc-leaked errors
- //see exceptions.cpp fore more info
- PyObject_GC_UnTrack(Module.Get());
- Module.Drop();
- }
- });
- }
-
- void AddFinalizationCallBack(TFinalizationCallBack callback) {
- TFinCallBacksHolder::GetCallBacks().push_back(callback);
- }
-
- int FinalizeAll() {
- for (auto callback: Reversed(NPrivate::TFinCallBacksHolder::GetCallBacks())) {
- callback();
- }
- return 0;
- }
- }
-#endif
-
-
- TModuleHolder::TModuleHolder()
- : Methods(1, new TVector<TMethodDef>)
- {
-#if PY_MAJOR_VERSION >= 3
- AddModuleMethod<TModuleMethodCaller<decltype(&NPrivate::FinalizeAll), &NPrivate::FinalizeAll>::Call>("finalizer");
-#endif
- }
-}//NPyBind