mirror of
https://github.com/loot/libloot-python.git
synced 2026-07-27 14:14:13 -07:00
Update to LOOT API v0.12.0
Significant changes include: - The logging interface has changed, a callback can now be set instead of an output file and verbosity, giving clients more control. - DatabaseInterface::EvalLists() has been removed. - SimpleMessage now has a condition field.
This commit is contained in:
+2
-2
@@ -50,9 +50,9 @@ add_subdirectory(${PYBIND11_EXTRACTED_PATH})
|
||||
#######################################
|
||||
|
||||
if (CMAKE_SYSTEM_NAME MATCHES "Windows")
|
||||
set(LOOT_API_URL "https://github.com/loot/loot-api/releases/download/0.11.1/loot_api-0.11.1-0-g021a253_dev-win32.7z")
|
||||
set(LOOT_API_URL "https://github.com/loot/loot-api/releases/download/0.12.0/loot_api-0.12.0-0-g42cacca_dev-win32.7z")
|
||||
else()
|
||||
set(LOOT_API_URL "https://github.com/loot/loot-api/releases/download/0.11.1/loot-api.tar.xz")
|
||||
set(LOOT_API_URL "https://github.com/loot/loot-api/releases/download/0.12.0/loot-api.tar.xz")
|
||||
endif()
|
||||
|
||||
ExternalProject_Add(loot-api-c++
|
||||
|
||||
+5
-5
@@ -32,10 +32,10 @@ std::shared_ptr<DatabaseInterface> CreateDatabase(const GameType game, const std
|
||||
|
||||
return gameHandle->GetDatabase();
|
||||
}
|
||||
PluginTags GetPluginTags(const std::shared_ptr<DatabaseInterface> db, const std::string& plugin) {
|
||||
PluginTags GetPluginTags(const std::shared_ptr<DatabaseInterface> db, const std::string& plugin, bool evaluateConditions) {
|
||||
PluginTags tags;
|
||||
|
||||
auto metadata = db->GetPluginMetadata(plugin, false, false);
|
||||
auto metadata = db->GetPluginMetadata(plugin, false, evaluateConditions);
|
||||
for (const auto &tag : metadata.GetTags()) {
|
||||
if (tag.IsAddition())
|
||||
tags.added.insert(tag.GetName());
|
||||
@@ -43,7 +43,7 @@ PluginTags GetPluginTags(const std::shared_ptr<DatabaseInterface> db, const std:
|
||||
tags.removed.insert(tag.GetName());
|
||||
}
|
||||
|
||||
metadata = db->GetPluginUserMetadata(plugin, false);
|
||||
metadata = db->GetPluginUserMetadata(plugin, evaluateConditions);
|
||||
tags.userlist_modified = !metadata.GetTags().empty();
|
||||
for (const auto &tag : metadata.GetTags()) {
|
||||
if (tag.IsAddition())
|
||||
@@ -55,8 +55,8 @@ PluginTags GetPluginTags(const std::shared_ptr<DatabaseInterface> db, const std:
|
||||
return tags;
|
||||
}
|
||||
|
||||
PluginCleanliness GetPluginCleanliness(const std::shared_ptr<DatabaseInterface> db, const std::string& plugin) {
|
||||
auto metadata = db->GetPluginMetadata(plugin, true, false);
|
||||
PluginCleanliness GetPluginCleanliness(const std::shared_ptr<DatabaseInterface> db, const std::string& plugin, bool evaluateConditions) {
|
||||
auto metadata = db->GetPluginMetadata(plugin, true, evaluateConditions);
|
||||
|
||||
if (metadata.GetDirtyInfo().empty()) {
|
||||
if (metadata.GetCleanInfo().empty()) {
|
||||
|
||||
+7
-3
@@ -38,9 +38,13 @@ std::shared_ptr<DatabaseInterface> CreateDatabase(const GameType game,
|
||||
const std::string& game_path = "",
|
||||
const std::string& game_local_path = "");
|
||||
|
||||
PluginTags GetPluginTags(const std::shared_ptr<DatabaseInterface> db, const std::string& plugin);
|
||||
PluginTags GetPluginTags(const std::shared_ptr<DatabaseInterface> db,
|
||||
const std::string& plugin,
|
||||
bool evaluateConditions = false);
|
||||
|
||||
PluginCleanliness GetPluginCleanliness(const std::shared_ptr<DatabaseInterface> db, const std::string& plugin);
|
||||
PluginCleanliness GetPluginCleanliness(const std::shared_ptr<DatabaseInterface> db,
|
||||
const std::string& plugin,
|
||||
bool evaluateConditions = false);
|
||||
}
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
+20
-14
@@ -25,6 +25,7 @@
|
||||
#include <loot/api.h>
|
||||
#include <pybind11/pybind11.h>
|
||||
#include <pybind11/stl.h>
|
||||
#include <pybind11/functional.h>
|
||||
|
||||
#include "convenience.h"
|
||||
#include "wrapper_version.h"
|
||||
@@ -44,10 +45,13 @@ void bindEnums(pybind11::module& module) {
|
||||
.value("fonv", GameType::fonv)
|
||||
.value("fo4", GameType::fo4);
|
||||
|
||||
enum_<LogVerbosity>(module, "LogVerbosity")
|
||||
.value("off", LogVerbosity::off)
|
||||
.value("trace", LogVerbosity::trace)
|
||||
.value("warning", LogVerbosity::warning);
|
||||
enum_<LogLevel>(module, "LogLevel")
|
||||
.value("trace", LogLevel::trace)
|
||||
.value("debug", LogLevel::debug)
|
||||
.value("info", LogLevel::info)
|
||||
.value("warning", LogLevel::warning)
|
||||
.value("error", LogLevel::error)
|
||||
.value("fatal", LogLevel::fatal);
|
||||
|
||||
enum_<MessageType>(module, "MessageType")
|
||||
.value("say", MessageType::say)
|
||||
@@ -70,7 +74,8 @@ void bindMetadataClasses(pybind11::module& module) {
|
||||
class_<SimpleMessage>(module, "SimpleMessage")
|
||||
.def_readwrite("type", &SimpleMessage::type)
|
||||
.def_readwrite("language", &SimpleMessage::language)
|
||||
.def_readwrite("text", &SimpleMessage::text);
|
||||
.def_readwrite("text", &SimpleMessage::text)
|
||||
.def_readwrite("condition", &SimpleMessage::condition);
|
||||
|
||||
class_<PluginTags>(module, "PluginTags")
|
||||
.def_readwrite("added", &PluginTags::added)
|
||||
@@ -100,15 +105,18 @@ void bindVersionClasses(pybind11::module& module) {
|
||||
void bindInterfaceClasses(pybind11::module& module) {
|
||||
class_<DatabaseInterface, std::shared_ptr<DatabaseInterface>>(module, "DatabaseInterface")
|
||||
.def("load_lists", &DatabaseInterface::LoadLists, arg("masterlist_path"), arg("userlist_path") = "")
|
||||
.def("eval_lists", &DatabaseInterface::EvalLists)
|
||||
.def("update_masterlist", &DatabaseInterface::UpdateMasterlist)
|
||||
.def("get_masterlist_revision", &DatabaseInterface::GetMasterlistRevision)
|
||||
.def("get_plugin_metadata", &DatabaseInterface::GetPluginMetadata,
|
||||
arg("plugin"),
|
||||
arg("includeUserMetadata") = true,
|
||||
arg("evaluateConditions") = false)
|
||||
.def("get_plugin_tags", &GetPluginTags)
|
||||
.def("get_plugin_cleanliness", &GetPluginCleanliness)
|
||||
arg("plugin"),
|
||||
arg("includeUserMetadata") = true,
|
||||
arg("evaluateConditions") = false)
|
||||
.def("get_plugin_tags", &GetPluginTags,
|
||||
arg("plugin"),
|
||||
arg("evaluateConditions") = false)
|
||||
.def("get_plugin_cleanliness", &GetPluginCleanliness,
|
||||
arg("plugin"),
|
||||
arg("evaluateConditions") = false)
|
||||
.def("write_minimal_list", &DatabaseInterface::WriteMinimalList);
|
||||
}
|
||||
|
||||
@@ -119,9 +127,7 @@ void bindClasses(pybind11::module& module) {
|
||||
}
|
||||
|
||||
void bindFunctions(pybind11::module& module) {
|
||||
module.def("set_logging_verbosity", &SetLoggingVerbosity);
|
||||
|
||||
module.def("set_log_file", &SetLogFile);
|
||||
module.def("set_logging_callback", &SetLoggingCallback);
|
||||
|
||||
module.def("is_compatible", &IsCompatible);
|
||||
|
||||
|
||||
+9
-7
@@ -7,15 +7,17 @@ import unittest
|
||||
from loot_api import Version
|
||||
from loot_api import WrapperVersion
|
||||
from loot_api import GameType
|
||||
from loot_api import LogVerbosity
|
||||
from loot_api import SimpleMessage
|
||||
from loot_api import MessageType
|
||||
from loot_api import create_database
|
||||
from loot_api import is_compatible
|
||||
from loot_api import set_logging_verbosity
|
||||
from loot_api import set_logging_callback
|
||||
from loot_api import initialise_locale
|
||||
|
||||
set_logging_verbosity(LogVerbosity.off)
|
||||
def logging_callback(level, message):
|
||||
pass
|
||||
|
||||
set_logging_callback(logging_callback)
|
||||
initialise_locale("")
|
||||
|
||||
class GameFixture(unittest.TestCase):
|
||||
@@ -38,14 +40,14 @@ class GameFixture(unittest.TestCase):
|
||||
class TestLootApi(GameFixture):
|
||||
def test_is_compatible(self):
|
||||
self.assertFalse(is_compatible(0, 9, 0))
|
||||
self.assertTrue(is_compatible(0, 11, 0))
|
||||
self.assertTrue(is_compatible(0, 12, 0))
|
||||
|
||||
def test_version(self):
|
||||
self.assertEqual(Version.major, 0)
|
||||
self.assertEqual(Version.minor, 11)
|
||||
self.assertEqual(Version.patch, 1)
|
||||
self.assertEqual(Version.minor, 12)
|
||||
self.assertEqual(Version.patch, 0)
|
||||
self.assertNotEqual(Version.revision, u'')
|
||||
self.assertEqual(Version.string(), "0.11.1")
|
||||
self.assertEqual(Version.string(), "0.12.0")
|
||||
|
||||
def test_wrapper_version(self):
|
||||
self.assertEqual(WrapperVersion.major, 2)
|
||||
|
||||
Reference in New Issue
Block a user