From 6ddd6389bdb64f1c4b8719a73bcf49729a95b74a Mon Sep 17 00:00:00 2001 From: IRBorisov <8611739+IRBorisov@users.noreply.github.com> Date: Fri, 14 Jun 2024 20:30:09 +0300 Subject: [PATCH] Fix textprocessor testing and bump version --- distr/app/UpdateLog.txt | 4 ++++ include/Exteor.RC | 8 ++++---- include/xtr/core/PyTextProcessor.h | 6 ++++-- src/core/PyCore.cpp | 33 +++++++++++++++++++----------- test/src/testTextProcessor.cpp | 5 +++-- 5 files changed, 36 insertions(+), 20 deletions(-) diff --git a/distr/app/UpdateLog.txt b/distr/app/UpdateLog.txt index 33d83ea..c51f691 100644 --- a/distr/app/UpdateLog.txt +++ b/distr/app/UpdateLog.txt @@ -1,3 +1,7 @@ +14.06.2024 Экстеор 4.9.3 +• Грамматика: разрешено использование одного аргумента для мультифильтра - Fi1,2[X1*X1](S1) +• исправлена ошибка, приводившая к некорректному вычислению типизаций рекурсии с пустым множеством +• использование cctext без встраивания кода (через pip) 13.05.2024 Экстеор 4.9.2 • Грамматика: разрешено использование пустого множества как литерала с типизацией B(R0) • Грамматика: разрешено объявление кортежем в императивных блоках diff --git a/include/Exteor.RC b/include/Exteor.RC index fb37d44..06c27eb 100644 --- a/include/Exteor.RC +++ b/include/Exteor.RC @@ -1182,8 +1182,8 @@ END // VS_VERSION_INFO VERSIONINFO - FILEVERSION 4,9,2,1000 - PRODUCTVERSION 4,9,2,1000 + FILEVERSION 4,9,3,1000 + PRODUCTVERSION 4,9,3,1000 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L @@ -1201,13 +1201,13 @@ BEGIN VALUE "Comments", " " VALUE "CompanyName", " " VALUE "FileDescription", " 4.9" - VALUE "FileVersion", "4.9.2.1000" + VALUE "FileVersion", "4.9.3.1000" VALUE "InternalName", " 4.9" VALUE "LegalCopyright", "Copyright NPMP CIHT CONCEPT 1994-2024" VALUE "LegalTrademarks", "" VALUE "OriginalFilename", "Exteor.exe" VALUE "ProductName", " 4.9" - VALUE "ProductVersion", "4.9.2.1000" + VALUE "ProductVersion", "4.9.3.1000" END END BLOCK "VarFileInfo" diff --git a/include/xtr/core/PyTextProcessor.h b/include/xtr/core/PyTextProcessor.h index adbf2f7..12df0ae 100644 --- a/include/xtr/core/PyTextProcessor.h +++ b/include/xtr/core/PyTextProcessor.h @@ -14,8 +14,10 @@ public: [[nodiscard]] std::string Inflect(const std::string& target, const ccl::lang::Morphology& form) const override; [[nodiscard]] std::string InflectDependant(const std::string& dependant, const std::string& main) const override; - [[nodiscard]] bool IsSubstr(const std::string& needle, - const std::string& haystack) const override; + [[nodiscard]] bool IsSubstr( + const std::string& needle, + const std::string& haystack + ) const override; }; } // namespace xtr::core \ No newline at end of file diff --git a/src/core/PyCore.cpp b/src/core/PyCore.cpp index 06c752c..fa0e328 100644 --- a/src/core/PyCore.cpp +++ b/src/core/PyCore.cpp @@ -151,26 +151,35 @@ void PyCore::Stop() noexcept { } } -bool PyCore::LoadModule(const std::string& moduleName, const std::string& pyFileName) { +bool PyCore::LoadModule(const std::string& moduleName, const std::string& pyImport) { if (!IsRunning()) { return false; } else if (moduleName.empty()) { return false; } else if (modules.contains(moduleName)) { return true; - } else if (auto nameObj = Object::FromNew(PyUnicode_FromString(pyFileName.c_str())); - nameObj == nullptr) { + } + + auto nameObj = Object::FromNew(PyUnicode_FromString(pyImport.c_str())); + if (nameObj == nullptr) { return false; - } else if (auto moduleObj = Object::FromNew(PyImport_Import(nameObj.get())); - moduleObj == nullptr) { - return false; - } else if (auto dictionaryObj = Object::FromBorrowed(PyModule_GetDict(moduleObj.get())); - dictionaryObj == nullptr) { - return false; - } else { - modules.insert(std::pair(moduleName, Module{ .pyModule = moduleObj, .pyDictionary = std::move(dictionaryObj) })); - return true; } + + auto moduleObj = Object::FromNew(PyImport_Import(nameObj.get())); + if (moduleObj == nullptr) { + return false; + } + + auto dictionaryObj = Object::FromBorrowed(PyModule_GetDict(moduleObj.get())); + if (dictionaryObj == nullptr) { + return false; + } + + modules.insert(std::pair( + moduleName, + Module{ .pyModule = moduleObj, .pyDictionary = std::move(dictionaryObj) } + )); + return true; } Callable PyCore::PyFunction(const std::string& moduleName, const std::string& funcName) const { diff --git a/test/src/testTextProcessor.cpp b/test/src/testTextProcessor.cpp index 692f83e..b681aa8 100644 --- a/test/src/testTextProcessor.cpp +++ b/test/src/testTextProcessor.cpp @@ -20,8 +20,9 @@ protected: std::unique_ptr processor{ nullptr }; void SetUp() override { - ASSERT_TRUE(python.Start()); - python.LoadModule("cctext", "cctext"); + static CString path{ "C:\\Program Files\\Python312\\" }; + ASSERT_TRUE(python.Start(path)); + ASSERT_TRUE(python.LoadModule("cctext", "cctext")); processor = std::make_unique(); processor->InitModule("cctext"); }