diff options
| author | say <[email protected]> | 2023-12-08 17:40:48 +0300 |
|---|---|---|
| committer | say <[email protected]> | 2023-12-08 19:58:59 +0300 |
| commit | 914f57e3243f53dd89dd3adb4d8b6d35c47f46ce (patch) | |
| tree | 98a1f1f1f5e2c38db3a78da10aeb7eb7d4e952e0 /library/cpp/pybind/module.cpp | |
| parent | e61293d91ee7c923944f627d8e1138bcb17cacad (diff) | |
Make support_retries() and get_type() methods of object instead of class ones. Reduce get_type_name() usage.
Diffstat (limited to 'library/cpp/pybind/module.cpp')
| -rw-r--r-- | library/cpp/pybind/module.cpp | 72 |
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 63b15de45da..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_ABORT_UNLESS(atExitModule); - TPyObjectPtr finalizerFunc(PyObject_GetAttrString(module.Get(), "finalizer"), true); - Y_ABORT_UNLESS(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_ABORT_UNLESS(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_ABORT_UNLESS(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 |
