diff --git a/.github/workflows/linters.yml b/.github/workflows/linters.yml
index 711a3a7..2ecd148 100644
--- a/.github/workflows/linters.yml
+++ b/.github/workflows/linters.yml
@@ -7,18 +7,12 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- with:
- path: "basic_games"
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: 3.12
- uses: abatilo/actions-poetry@v2
- name: Install
- run: |
- cd basic_games
- poetry --no-root install
+ run: poetry --no-root install
- name: Lint
- run: |
- cd basic_games
- poetry run poe lint
+ run: poetry run poe lint
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 9e8070c..a96081e 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,13 +1,10 @@
cmake_minimum_required(VERSION 3.16)
-if(DEFINED DEPENDENCIES_DIR)
- include(${DEPENDENCIES_DIR}/modorganizer_super/cmake_common/mo2.cmake)
-else()
- include(${CMAKE_CURRENT_LIST_DIR}/../cmake_common/mo2.cmake)
-endif()
-
project(basic_games LANGUAGES NONE)
+
+find_package(mo2-cmake CONFIG REQUIRED)
+
+mo2_configure_extension()
+
add_custom_target(basic_games ALL)
-mo2_configure_python(basic_games
- MODULE
- TRANSLATIONS OFF)
+mo2_configure_python(basic_games MODULE TRANSLATIONS ON)
diff --git a/CMakePresets.json b/CMakePresets.json
new file mode 100644
index 0000000..e22d7e9
--- /dev/null
+++ b/CMakePresets.json
@@ -0,0 +1,21 @@
+{
+ "configurePresets": [
+ {
+ "binaryDir": "${sourceDir}/vsbuild",
+ "toolchainFile": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake",
+ "generator": "Visual Studio 17 2022",
+ "name": "vs2022-windows"
+ },
+ {
+ "cacheVariables": {
+ "VCPKG_MANIFEST_FEATURES": {
+ "type": "STRING",
+ "value": "standalone"
+ }
+ },
+ "inherits": "vs2022-windows",
+ "name": "vs2022-windows-standalone"
+ }
+ ],
+ "version": 4
+}
diff --git a/__init__.py b/basic_games/__init__.py
similarity index 94%
rename from __init__.py
rename to basic_games/__init__.py
index 5725b5f..7042f2a 100644
--- a/__init__.py
+++ b/basic_games/__init__.py
@@ -6,11 +6,12 @@
import site
import sys
import typing
+from pathlib import Path
from .basic_game import BasicGame
from .basic_game_ini import BasicIniGame
-site.addsitedir(os.path.join(os.path.dirname(__file__), "lib"))
+site.addsitedir(Path(__file__).parent.parent.joinpath("lib").as_posix())
BasicGame.setup()
diff --git a/basic_features/__init__.py b/basic_games/basic_features/__init__.py
similarity index 100%
rename from basic_features/__init__.py
rename to basic_games/basic_features/__init__.py
diff --git a/basic_features/basic_local_savegames.py b/basic_games/basic_features/basic_local_savegames.py
similarity index 100%
rename from basic_features/basic_local_savegames.py
rename to basic_games/basic_features/basic_local_savegames.py
diff --git a/basic_features/basic_mod_data_checker.py b/basic_games/basic_features/basic_mod_data_checker.py
similarity index 100%
rename from basic_features/basic_mod_data_checker.py
rename to basic_games/basic_features/basic_mod_data_checker.py
diff --git a/basic_features/basic_save_game_info.py b/basic_games/basic_features/basic_save_game_info.py
similarity index 100%
rename from basic_features/basic_save_game_info.py
rename to basic_games/basic_features/basic_save_game_info.py
diff --git a/basic_features/utils.py b/basic_games/basic_features/utils.py
similarity index 100%
rename from basic_features/utils.py
rename to basic_games/basic_features/utils.py
diff --git a/basic_game.py b/basic_games/basic_game.py
similarity index 98%
rename from basic_game.py
rename to basic_games/basic_game.py
index ae2c0c0..74ab84e 100644
--- a/basic_game.py
+++ b/basic_games/basic_game.py
@@ -6,7 +6,7 @@
from typing import Callable, Generic, TypeVar
import mobase
-from PyQt6.QtCore import QDir, QFileInfo, QStandardPaths
+from PyQt6.QtCore import QCoreApplication, QDir, QFileInfo, QStandardPaths
from PyQt6.QtGui import QIcon
from .basic_features.basic_save_game_info import (
@@ -253,7 +253,7 @@ def __init__(self, game: BasicGame):
game,
"Description",
"description",
- lambda g: "Adds basic support for game {}.".format(g.gameName()),
+ lambda g: game.tr("Adds basic support for game {}.").format(g.gameName()),
)
self.gameName = BasicGameMapping(game, "GameName", "gameName")
self.gameShortName = BasicGameMapping(game, "GameShortName", "gameShortName")
@@ -424,6 +424,10 @@ def is_epic(self) -> bool:
def is_eadesktop(self) -> bool:
return self._mappings.eaDesktopContentId.has_value()
+ # Qt translation
+ def tr(self, value: str) -> str:
+ return QCoreApplication.translate("BasicGame", value)
+
# IPlugin interface:
def init(self, organizer: mobase.IOrganizer) -> bool:
@@ -468,7 +472,7 @@ def isActive(self) -> bool:
# Note: self is self._organizer.managedGame() does not work:
return self.name() == self._organizer.managedGame().name()
- def settings(self) -> list[mobase.PluginSetting]:
+ def settings(self) -> list[mobase.Setting]:
return []
# IPluginGame interface:
diff --git a/basic_game_ini.py b/basic_games/basic_game_ini.py
similarity index 100%
rename from basic_game_ini.py
rename to basic_games/basic_game_ini.py
diff --git a/eadesktop_utils.py b/basic_games/eadesktop_utils.py
similarity index 100%
rename from eadesktop_utils.py
rename to basic_games/eadesktop_utils.py
diff --git a/epic_utils.py b/basic_games/epic_utils.py
similarity index 100%
rename from epic_utils.py
rename to basic_games/epic_utils.py
diff --git a/games/__init__.py b/basic_games/games/__init__.py
similarity index 100%
rename from games/__init__.py
rename to basic_games/games/__init__.py
diff --git a/games/game_assettocorsa.py b/basic_games/games/game_assettocorsa.py
similarity index 100%
rename from games/game_assettocorsa.py
rename to basic_games/games/game_assettocorsa.py
diff --git a/games/game_blackandwhite2.py b/basic_games/games/game_blackandwhite2.py
similarity index 100%
rename from games/game_blackandwhite2.py
rename to basic_games/games/game_blackandwhite2.py
diff --git a/games/game_bladeandsorcery.py b/basic_games/games/game_bladeandsorcery.py
similarity index 100%
rename from games/game_bladeandsorcery.py
rename to basic_games/games/game_bladeandsorcery.py
diff --git a/games/game_control.py b/basic_games/games/game_control.py
similarity index 100%
rename from games/game_control.py
rename to basic_games/games/game_control.py
diff --git a/games/game_cyberpunk2077.py b/basic_games/games/game_cyberpunk2077.py
similarity index 95%
rename from games/game_cyberpunk2077.py
rename to basic_games/games/game_cyberpunk2077.py
index 10da96c..e20f05d 100644
--- a/games/game_cyberpunk2077.py
+++ b/basic_games/games/game_cyberpunk2077.py
@@ -393,62 +393,72 @@ def listSaves(self, folder: QDir) -> list[mobase.ISaveGame]:
for path in Path(folder.absolutePath()).glob(f"**/*.{ext}")
]
- def settings(self) -> list[mobase.PluginSetting]:
+ def settings(self) -> list[mobase.Setting]:
return [
- mobase.PluginSetting(
+ mobase.Setting(
"skipStartScreen",
- (
+ self.tr("Skip start screen"),
+ self.tr(
'Skips the "Breaching..." start screen on game launch'
" (can also skip loading of GOG rewards)"
),
False,
),
- mobase.PluginSetting(
+ mobase.Setting(
"enforce_archive_load_order",
- (
+ self.tr("Enforce archive load order"),
+ self.tr(
"Enforce the current load order via"
" archive/pc/mod/modlist.txt
"
),
False,
),
- mobase.PluginSetting(
+ mobase.Setting(
"reverse_archive_load_order",
- (
+ self.tr("Reverse archive load order"),
+ self.tr(
"Reverse MOs load order in"
" archive/pc/mod/modlist.txt
"
" (first loaded mod wins = last one / highest prio in MO)"
),
False,
),
- mobase.PluginSetting(
+ mobase.Setting(
"enforce_redmod_load_order",
- "Enforce the current load order on redmod deployment",
+ self.tr("Enforce RedMod load order"),
+ self.tr("Enforce the current load order on redmod deployment"),
True,
),
- mobase.PluginSetting(
+ mobase.Setting(
"reverse_redmod_load_order",
- (
+ self.tr("Reverse RedMod load order"),
+ self.tr(
"Reverse MOs load order on redmod deployment"
" (first loaded mod wins = last one / highest prio in MO)"
),
False,
),
- mobase.PluginSetting(
+ mobase.Setting(
"auto_deploy_redmod",
- "Deploy redmod before game launch if necessary",
+ self.tr("Auto deploy RedMod"),
+ self.tr("Deploy redmod before game launch if necessary"),
True,
),
- mobase.PluginSetting(
+ mobase.Setting(
"clear_cache_after_game_update",
- (
+ self.tr("Clear cache after game update"),
+ self.tr(
'Clears "overwrite/r6/cache/*" if the original game files changed'
" (after update)"
),
True,
),
- mobase.PluginSetting(
+ mobase.Setting(
"configure_RootBuilder",
- "Configures RootBuilder for Cyberpunk if installed and enabled",
+ self.tr("Configure RootBuilder"),
+ self.tr(
+ "Configures RootBuilder for Cyberpunk if installed and enabled"
+ ),
True,
),
]
diff --git a/games/game_da2.py b/basic_games/games/game_da2.py
similarity index 100%
rename from games/game_da2.py
rename to basic_games/games/game_da2.py
diff --git a/games/game_daggerfallunity.py b/basic_games/games/game_daggerfallunity.py
similarity index 96%
rename from games/game_daggerfallunity.py
rename to basic_games/games/game_daggerfallunity.py
index a51242d..6c170f1 100644
--- a/games/game_daggerfallunity.py
+++ b/basic_games/games/game_daggerfallunity.py
@@ -1,56 +1,56 @@
-import mobase
-
-from ..basic_game import BasicGame
-
-
-class DaggerfallUnityModDataChecker(mobase.ModDataChecker):
- def __init__(self):
- super().__init__()
- self.validDirNames = [
- "biogs",
- "docs",
- "factions",
- "fonts",
- "mods",
- "questpacks",
- "quests",
- "sound",
- "soundfonts",
- "spellicons",
- "tables",
- "text",
- "textures",
- "worlddata",
- "aa",
- ]
-
- def dataLooksValid(
- self, filetree: mobase.IFileTree
- ) -> mobase.ModDataChecker.CheckReturn:
- for entry in filetree:
- if not entry.isDir():
- continue
- if entry.name().casefold() in self.validDirNames:
- return mobase.ModDataChecker.VALID
- return mobase.ModDataChecker.INVALID
-
-
-class DaggerfallUnityGame(BasicGame):
- def init(self, organizer: mobase.IOrganizer) -> bool:
- super().init(organizer)
- self._register_feature(DaggerfallUnityModDataChecker())
- return True
-
- Name = "Daggerfall Unity Support Plugin"
- Author = "HomerSimpleton"
- Version = "1.0.0"
-
- GameName = "Daggerfall Unity"
- GameShortName = "daggerfallunity"
- GameBinary = "DaggerfallUnity.exe"
- GameLauncher = "DaggerfallUnity.exe"
- GameDataPath = "%GAME_PATH%/DaggerfallUnity_Data/StreamingAssets"
- GameSupportURL = (
- r"https://github.com/ModOrganizer2/modorganizer-basic_games/wiki/"
- "Game:-Daggerfall-Unity"
- )
+import mobase
+
+from ..basic_game import BasicGame
+
+
+class DaggerfallUnityModDataChecker(mobase.ModDataChecker):
+ def __init__(self):
+ super().__init__()
+ self.validDirNames = [
+ "biogs",
+ "docs",
+ "factions",
+ "fonts",
+ "mods",
+ "questpacks",
+ "quests",
+ "sound",
+ "soundfonts",
+ "spellicons",
+ "tables",
+ "text",
+ "textures",
+ "worlddata",
+ "aa",
+ ]
+
+ def dataLooksValid(
+ self, filetree: mobase.IFileTree
+ ) -> mobase.ModDataChecker.CheckReturn:
+ for entry in filetree:
+ if not entry.isDir():
+ continue
+ if entry.name().casefold() in self.validDirNames:
+ return mobase.ModDataChecker.VALID
+ return mobase.ModDataChecker.INVALID
+
+
+class DaggerfallUnityGame(BasicGame):
+ def init(self, organizer: mobase.IOrganizer) -> bool:
+ super().init(organizer)
+ self._register_feature(DaggerfallUnityModDataChecker())
+ return True
+
+ Name = "Daggerfall Unity Support Plugin"
+ Author = "HomerSimpleton"
+ Version = "1.0.0"
+
+ GameName = "Daggerfall Unity"
+ GameShortName = "daggerfallunity"
+ GameBinary = "DaggerfallUnity.exe"
+ GameLauncher = "DaggerfallUnity.exe"
+ GameDataPath = "%GAME_PATH%/DaggerfallUnity_Data/StreamingAssets"
+ GameSupportURL = (
+ r"https://github.com/ModOrganizer2/modorganizer-basic_games/wiki/"
+ "Game:-Daggerfall-Unity"
+ )
diff --git a/games/game_dao.py b/basic_games/games/game_dao.py
similarity index 96%
rename from games/game_dao.py
rename to basic_games/games/game_dao.py
index 531b173..bc3f87e 100644
--- a/games/game_dao.py
+++ b/basic_games/games/game_dao.py
@@ -1,31 +1,31 @@
-import mobase
-
-from ..basic_features import BasicGameSaveGameInfo
-from ..basic_game import BasicGame
-
-
-class DAOriginsGame(BasicGame):
- Name = "Dragon Age Origins Support Plugin"
- Author = "Patchier"
- Version = "1.1.1"
-
- GameName = "Dragon Age: Origins"
- GameShortName = "dragonage"
- GameBinary = r"bin_ship\DAOrigins.exe"
- GameDataPath = r"%DOCUMENTS%\BioWare\Dragon Age\packages\core\override"
- GameSavesDirectory = r"%DOCUMENTS%\BioWare\Dragon Age\Characters"
- GameSaveExtension = "das"
- GameSteamId = [17450, 47810]
- GameGogId = 1949616134
- GameEaDesktopId = [70377, 70843]
- GameSupportURL = (
- r"https://github.com/ModOrganizer2/modorganizer-basic_games/wiki/"
- "Game:-Dragon-Age:-Origins"
- )
-
- def init(self, organizer: mobase.IOrganizer):
- super().init(organizer)
- self._register_feature(
- BasicGameSaveGameInfo(lambda s: s.parent.joinpath("screen.dds"))
- )
- return True
+import mobase
+
+from ..basic_features import BasicGameSaveGameInfo
+from ..basic_game import BasicGame
+
+
+class DAOriginsGame(BasicGame):
+ Name = "Dragon Age Origins Support Plugin"
+ Author = "Patchier"
+ Version = "1.1.1"
+
+ GameName = "Dragon Age: Origins"
+ GameShortName = "dragonage"
+ GameBinary = r"bin_ship\DAOrigins.exe"
+ GameDataPath = r"%DOCUMENTS%\BioWare\Dragon Age\packages\core\override"
+ GameSavesDirectory = r"%DOCUMENTS%\BioWare\Dragon Age\Characters"
+ GameSaveExtension = "das"
+ GameSteamId = [17450, 47810]
+ GameGogId = 1949616134
+ GameEaDesktopId = [70377, 70843]
+ GameSupportURL = (
+ r"https://github.com/ModOrganizer2/modorganizer-basic_games/wiki/"
+ "Game:-Dragon-Age:-Origins"
+ )
+
+ def init(self, organizer: mobase.IOrganizer):
+ super().init(organizer)
+ self._register_feature(
+ BasicGameSaveGameInfo(lambda s: s.parent.joinpath("screen.dds"))
+ )
+ return True
diff --git a/games/game_darkestdungeon.py b/basic_games/games/game_darkestdungeon.py
similarity index 100%
rename from games/game_darkestdungeon.py
rename to basic_games/games/game_darkestdungeon.py
diff --git a/games/game_darkmessiahofmightandmagic.py b/basic_games/games/game_darkmessiahofmightandmagic.py
similarity index 100%
rename from games/game_darkmessiahofmightandmagic.py
rename to basic_games/games/game_darkmessiahofmightandmagic.py
diff --git a/games/game_darksouls.py b/basic_games/games/game_darksouls.py
similarity index 100%
rename from games/game_darksouls.py
rename to basic_games/games/game_darksouls.py
diff --git a/games/game_divinityoriginalsin.py b/basic_games/games/game_divinityoriginalsin.py
similarity index 100%
rename from games/game_divinityoriginalsin.py
rename to basic_games/games/game_divinityoriginalsin.py
diff --git a/games/game_divinityoriginalsinee.py b/basic_games/games/game_divinityoriginalsinee.py
similarity index 100%
rename from games/game_divinityoriginalsinee.py
rename to basic_games/games/game_divinityoriginalsinee.py
diff --git a/games/game_dragonsdogmadarkarisen.py b/basic_games/games/game_dragonsdogmadarkarisen.py
similarity index 100%
rename from games/game_dragonsdogmadarkarisen.py
rename to basic_games/games/game_dragonsdogmadarkarisen.py
diff --git a/games/game_dungeonsiege1.py b/basic_games/games/game_dungeonsiege1.py
similarity index 100%
rename from games/game_dungeonsiege1.py
rename to basic_games/games/game_dungeonsiege1.py
diff --git a/games/game_dungeonsiege2.py b/basic_games/games/game_dungeonsiege2.py
similarity index 100%
rename from games/game_dungeonsiege2.py
rename to basic_games/games/game_dungeonsiege2.py
diff --git a/games/game_f123.py b/basic_games/games/game_f123.py
similarity index 95%
rename from games/game_f123.py
rename to basic_games/games/game_f123.py
index 6c80bf6..e740a40 100644
--- a/games/game_f123.py
+++ b/basic_games/games/game_f123.py
@@ -1,13 +1,13 @@
-from ..basic_game import BasicGame
-
-
-class F123Game(BasicGame):
- Name = "F1 23 Support Plugin"
- Author = "ju5tA1ex"
- Version = "1.0.0"
-
- GameName = "F1 23"
- GameShortName = "F1 23"
- GameSteamId = 2108330
- GameBinary = "F1_23.exe"
- GameDataPath = ""
+from ..basic_game import BasicGame
+
+
+class F123Game(BasicGame):
+ Name = "F1 23 Support Plugin"
+ Author = "ju5tA1ex"
+ Version = "1.0.0"
+
+ GameName = "F1 23"
+ GameShortName = "F1 23"
+ GameSteamId = 2108330
+ GameBinary = "F1_23.exe"
+ GameDataPath = ""
diff --git a/games/game_finalfantasy7remake.py b/basic_games/games/game_finalfantasy7remake.py
similarity index 100%
rename from games/game_finalfantasy7remake.py
rename to basic_games/games/game_finalfantasy7remake.py
diff --git a/games/game_gta-3-de.py b/basic_games/games/game_gta-3-de.py
similarity index 100%
rename from games/game_gta-3-de.py
rename to basic_games/games/game_gta-3-de.py
diff --git a/games/game_gta-san-andreas-de.py b/basic_games/games/game_gta-san-andreas-de.py
similarity index 100%
rename from games/game_gta-san-andreas-de.py
rename to basic_games/games/game_gta-san-andreas-de.py
diff --git a/games/game_gta-vice-city-de.py b/basic_games/games/game_gta-vice-city-de.py
similarity index 100%
rename from games/game_gta-vice-city-de.py
rename to basic_games/games/game_gta-vice-city-de.py
diff --git a/games/game_kerbalspaceprogram.py b/basic_games/games/game_kerbalspaceprogram.py
similarity index 100%
rename from games/game_kerbalspaceprogram.py
rename to basic_games/games/game_kerbalspaceprogram.py
diff --git a/games/game_kingdomcomedeliverance.py b/basic_games/games/game_kingdomcomedeliverance.py
similarity index 100%
rename from games/game_kingdomcomedeliverance.py
rename to basic_games/games/game_kingdomcomedeliverance.py
diff --git a/games/game_masterduel.py b/basic_games/games/game_masterduel.py
similarity index 97%
rename from games/game_masterduel.py
rename to basic_games/games/game_masterduel.py
index ff9147b..63a5697 100644
--- a/games/game_masterduel.py
+++ b/basic_games/games/game_masterduel.py
@@ -1,88 +1,88 @@
-from pathlib import Path
-from typing import List, Optional
-
-import mobase
-from PyQt6.QtCore import QDir, QFileInfo
-
-from ..basic_game import BasicGame
-
-
-class MasterDuelGame(BasicGame, mobase.IPluginFileMapper):
- Name = "Yu-Gi-Oh! Master Duel Support Plugin"
- Author = "The Conceptionist & uwx"
- Version = "1.0.2"
- Description = (
- "Adds support for basic Yu-Gi-Oh! Master Duel mods.\n"
- 'Eligible folders for mods are "0000" and "AssetBundle".'
- )
-
- GameName = "Yu-Gi-Oh! Master Duel"
- GameShortName = "masterduel"
- GameNexusName = "yugiohmasterduel"
- GameNexusId = 4272
- GameSteamId = 1449850
- GameBinary = "masterduel.exe"
-
- def __init__(self):
- BasicGame.__init__(self)
- mobase.IPluginFileMapper.__init__(self)
-
- def executables(self):
- return [
- mobase.ExecutableInfo(
- "Yu-Gi-Oh! Master Duel",
- QFileInfo(self.gameDirectory().absoluteFilePath(self.binaryName())),
- ).withArgument("-popupwindow"),
- ]
-
- # dataDirectory returns the specific LocalData folder because
- # this is where most mods will go to
- def dataDirectory(self) -> QDir:
- return QDir(self.userDataDir())
-
- _userDataDirCached: Optional[str] = None
-
- # Gets the LocalData/xxxxxxxxx directory. This directory has a different,
- # unique, 8-character hex name for each user.
- def userDataDir(self) -> str:
- if self._userDataDirCached is not None:
- return self._userDataDirCached
-
- dir = self.gameDirectory()
- dir.cd("LocalData")
-
- subdirs = dir.entryList(filters=QDir.Filter.Dirs | QDir.Filter.NoDotAndDotDot)
- dir.cd(subdirs[0])
-
- self._userDataDirCached = dir.absolutePath()
- return self._userDataDirCached
-
- def mappings(self) -> List[mobase.Mapping]:
- modsPath = Path(self._organizer.modsPath())
- unityMods = self.getUnityDataMods()
-
- mappings: List[mobase.Mapping] = []
-
- for modName in unityMods:
- m = mobase.Mapping()
- m.createTarget = False
- m.isDirectory = True
- m.source = modsPath.joinpath(modName, "AssetBundle").as_posix()
- m.destination = self.gameDirectory().filePath(
- Path("masterduel_Data", "StreamingAssets", "AssetBundle").as_posix()
- )
- mappings.append(m)
-
- return mappings
-
- def getUnityDataMods(self) -> list[str]:
- modsPath = Path(self._organizer.modsPath())
- allMods = self._organizer.modList().allModsByProfilePriority()
-
- unityMods: list[str] = []
- for modName in allMods:
- if self._organizer.modList().state(modName) & mobase.ModState.ACTIVE != 0:
- if modsPath.joinpath(modName, "AssetBundle").exists():
- unityMods.append(modName)
-
- return unityMods
+from pathlib import Path
+from typing import List, Optional
+
+import mobase
+from PyQt6.QtCore import QDir, QFileInfo
+
+from ..basic_game import BasicGame
+
+
+class MasterDuelGame(BasicGame, mobase.IPluginFileMapper):
+ Name = "Yu-Gi-Oh! Master Duel Support Plugin"
+ Author = "The Conceptionist & uwx"
+ Version = "1.0.2"
+ Description = (
+ "Adds support for basic Yu-Gi-Oh! Master Duel mods.\n"
+ 'Eligible folders for mods are "0000" and "AssetBundle".'
+ )
+
+ GameName = "Yu-Gi-Oh! Master Duel"
+ GameShortName = "masterduel"
+ GameNexusName = "yugiohmasterduel"
+ GameNexusId = 4272
+ GameSteamId = 1449850
+ GameBinary = "masterduel.exe"
+
+ def __init__(self):
+ BasicGame.__init__(self)
+ mobase.IPluginFileMapper.__init__(self)
+
+ def executables(self):
+ return [
+ mobase.ExecutableInfo(
+ "Yu-Gi-Oh! Master Duel",
+ QFileInfo(self.gameDirectory().absoluteFilePath(self.binaryName())),
+ ).withArgument("-popupwindow"),
+ ]
+
+ # dataDirectory returns the specific LocalData folder because
+ # this is where most mods will go to
+ def dataDirectory(self) -> QDir:
+ return QDir(self.userDataDir())
+
+ _userDataDirCached: Optional[str] = None
+
+ # Gets the LocalData/xxxxxxxxx directory. This directory has a different,
+ # unique, 8-character hex name for each user.
+ def userDataDir(self) -> str:
+ if self._userDataDirCached is not None:
+ return self._userDataDirCached
+
+ dir = self.gameDirectory()
+ dir.cd("LocalData")
+
+ subdirs = dir.entryList(filters=QDir.Filter.Dirs | QDir.Filter.NoDotAndDotDot)
+ dir.cd(subdirs[0])
+
+ self._userDataDirCached = dir.absolutePath()
+ return self._userDataDirCached
+
+ def mappings(self) -> List[mobase.Mapping]:
+ modsPath = Path(self._organizer.modsPath())
+ unityMods = self.getUnityDataMods()
+
+ mappings: List[mobase.Mapping] = []
+
+ for modName in unityMods:
+ m = mobase.Mapping()
+ m.createTarget = False
+ m.isDirectory = True
+ m.source = modsPath.joinpath(modName, "AssetBundle").as_posix()
+ m.destination = self.gameDirectory().filePath(
+ Path("masterduel_Data", "StreamingAssets", "AssetBundle").as_posix()
+ )
+ mappings.append(m)
+
+ return mappings
+
+ def getUnityDataMods(self) -> list[str]:
+ modsPath = Path(self._organizer.modsPath())
+ allMods = self._organizer.modList().allModsByProfilePriority()
+
+ unityMods: list[str] = []
+ for modName in allMods:
+ if self._organizer.modList().state(modName) & mobase.ModState.ACTIVE != 0:
+ if modsPath.joinpath(modName, "AssetBundle").exists():
+ unityMods.append(modName)
+
+ return unityMods
diff --git a/games/game_metalgearsolid2mc.py b/basic_games/games/game_metalgearsolid2mc.py
similarity index 96%
rename from games/game_metalgearsolid2mc.py
rename to basic_games/games/game_metalgearsolid2mc.py
index 6ea655c..30804b8 100644
--- a/games/game_metalgearsolid2mc.py
+++ b/basic_games/games/game_metalgearsolid2mc.py
@@ -1,17 +1,17 @@
-from ..basic_game import BasicGame
-
-
-class MetalGearSolid2MCGame(BasicGame):
- Name = (
- "METAL GEAR SOLID 2: Sons of Liberty - Master Collection Version Support Plugin"
- )
- Author = "AkiraJkr"
- Version = "1.0.0"
-
- GameName = "METAL GEAR SOLID 2: Sons of Liberty - Master Collection Version"
- GameShortName = "metalgearsolid2mc"
- GameNexusName = "metalgearsolid2mc"
- GameSteamId = 2131640
- GameBinary = "METAL GEAR SOLID2.exe"
- GameDataPath = ""
- GameLauncher = "launcher.exe"
+from ..basic_game import BasicGame
+
+
+class MetalGearSolid2MCGame(BasicGame):
+ Name = (
+ "METAL GEAR SOLID 2: Sons of Liberty - Master Collection Version Support Plugin"
+ )
+ Author = "AkiraJkr"
+ Version = "1.0.0"
+
+ GameName = "METAL GEAR SOLID 2: Sons of Liberty - Master Collection Version"
+ GameShortName = "metalgearsolid2mc"
+ GameNexusName = "metalgearsolid2mc"
+ GameSteamId = 2131640
+ GameBinary = "METAL GEAR SOLID2.exe"
+ GameDataPath = ""
+ GameLauncher = "launcher.exe"
diff --git a/games/game_metalgearsolid3mc.py b/basic_games/games/game_metalgearsolid3mc.py
similarity index 97%
rename from games/game_metalgearsolid3mc.py
rename to basic_games/games/game_metalgearsolid3mc.py
index e9af9ce..10f669c 100644
--- a/games/game_metalgearsolid3mc.py
+++ b/basic_games/games/game_metalgearsolid3mc.py
@@ -1,15 +1,15 @@
-from ..basic_game import BasicGame
-
-
-class MetalGearSolid3MCGame(BasicGame):
- Name = "METAL GEAR SOLID 3: Snake Eater - Master Collection Version Support Plugin"
- Author = "AkiraJkr"
- Version = "1.0.0"
-
- GameName = "METAL GEAR SOLID 3: Snake Eater - Master Collection Version"
- GameShortName = "metalgearsolid3mc"
- GameNexusName = "metalgearsolid3mc"
- GameSteamId = 2131650
- GameBinary = "METAL GEAR SOLID3.exe"
- GameDataPath = ""
- GameLauncher = "launcher.exe"
+from ..basic_game import BasicGame
+
+
+class MetalGearSolid3MCGame(BasicGame):
+ Name = "METAL GEAR SOLID 3: Snake Eater - Master Collection Version Support Plugin"
+ Author = "AkiraJkr"
+ Version = "1.0.0"
+
+ GameName = "METAL GEAR SOLID 3: Snake Eater - Master Collection Version"
+ GameShortName = "metalgearsolid3mc"
+ GameNexusName = "metalgearsolid3mc"
+ GameSteamId = 2131650
+ GameBinary = "METAL GEAR SOLID3.exe"
+ GameDataPath = ""
+ GameLauncher = "launcher.exe"
diff --git a/games/game_mirrorsedge.py b/basic_games/games/game_mirrorsedge.py
similarity index 100%
rename from games/game_mirrorsedge.py
rename to basic_games/games/game_mirrorsedge.py
diff --git a/games/game_monsterhunterrise.py b/basic_games/games/game_monsterhunterrise.py
similarity index 100%
rename from games/game_monsterhunterrise.py
rename to basic_games/games/game_monsterhunterrise.py
diff --git a/games/game_monsterhunterworld.py b/basic_games/games/game_monsterhunterworld.py
similarity index 100%
rename from games/game_monsterhunterworld.py
rename to basic_games/games/game_monsterhunterworld.py
diff --git a/games/game_mountandblade2.py b/basic_games/games/game_mountandblade2.py
similarity index 100%
rename from games/game_mountandblade2.py
rename to basic_games/games/game_mountandblade2.py
diff --git a/games/game_msfs2020.py b/basic_games/games/game_msfs2020.py
similarity index 100%
rename from games/game_msfs2020.py
rename to basic_games/games/game_msfs2020.py
diff --git a/games/game_nfshs.py b/basic_games/games/game_nfshs.py
similarity index 100%
rename from games/game_nfshs.py
rename to basic_games/games/game_nfshs.py
diff --git a/games/game_nierautomata.py b/basic_games/games/game_nierautomata.py
similarity index 100%
rename from games/game_nierautomata.py
rename to basic_games/games/game_nierautomata.py
diff --git a/games/game_nomanssky.py b/basic_games/games/game_nomanssky.py
similarity index 100%
rename from games/game_nomanssky.py
rename to basic_games/games/game_nomanssky.py
diff --git a/games/game_sekiroshadowsdietwice.py b/basic_games/games/game_sekiroshadowsdietwice.py
similarity index 100%
rename from games/game_sekiroshadowsdietwice.py
rename to basic_games/games/game_sekiroshadowsdietwice.py
diff --git a/games/game_sims4.py b/basic_games/games/game_sims4.py
similarity index 96%
rename from games/game_sims4.py
rename to basic_games/games/game_sims4.py
index a3c905b..90a82c6 100644
--- a/games/game_sims4.py
+++ b/basic_games/games/game_sims4.py
@@ -1,20 +1,20 @@
-import mobase
-
-from ..basic_game import BasicGame
-
-
-class TS4Game(BasicGame):
- Name = "The Sims 4 Support Plugin"
- Author = "R3z Shark"
-
- GameName = "The Sims 4"
- GameShortName = "thesims4"
- GameBinary = "Game/Bin/TS4_x64.exe"
- GameDataPath = "%DOCUMENTS%/Electronic Arts/The Sims 4/Mods"
- GameSteamId = 1222670
- GameOriginManifestIds = ["OFB-EAST:109552677"]
- GameOriginWatcherExecutables = ("TS4_x64.exe",)
-
- def version(self):
- # Don't forget to import mobase!
- return mobase.VersionInfo(1, 0, 0, mobase.ReleaseType.FINAL)
+import mobase
+
+from ..basic_game import BasicGame
+
+
+class TS4Game(BasicGame):
+ Name = "The Sims 4 Support Plugin"
+ Author = "R3z Shark"
+
+ GameName = "The Sims 4"
+ GameShortName = "thesims4"
+ GameBinary = "Game/Bin/TS4_x64.exe"
+ GameDataPath = "%DOCUMENTS%/Electronic Arts/The Sims 4/Mods"
+ GameSteamId = 1222670
+ GameOriginManifestIds = ["OFB-EAST:109552677"]
+ GameOriginWatcherExecutables = ("TS4_x64.exe",)
+
+ def version(self):
+ # Don't forget to import mobase!
+ return mobase.VersionInfo(1, 0, 0, mobase.ReleaseType.FINAL)
diff --git a/games/game_stalkeranomaly.py b/basic_games/games/game_stalkeranomaly.py
similarity index 100%
rename from games/game_stalkeranomaly.py
rename to basic_games/games/game_stalkeranomaly.py
diff --git a/games/game_stardewvalley.py b/basic_games/games/game_stardewvalley.py
similarity index 100%
rename from games/game_stardewvalley.py
rename to basic_games/games/game_stardewvalley.py
diff --git a/games/game_starsector.py b/basic_games/games/game_starsector.py
similarity index 100%
rename from games/game_starsector.py
rename to basic_games/games/game_starsector.py
diff --git a/games/game_starwars-empire-at-war-foc.py b/basic_games/games/game_starwars-empire-at-war-foc.py
similarity index 100%
rename from games/game_starwars-empire-at-war-foc.py
rename to basic_games/games/game_starwars-empire-at-war-foc.py
diff --git a/games/game_starwars-empire-at-war.py b/basic_games/games/game_starwars-empire-at-war.py
similarity index 100%
rename from games/game_starwars-empire-at-war.py
rename to basic_games/games/game_starwars-empire-at-war.py
diff --git a/games/game_subnautica-below-zero.py b/basic_games/games/game_subnautica-below-zero.py
similarity index 100%
rename from games/game_subnautica-below-zero.py
rename to basic_games/games/game_subnautica-below-zero.py
diff --git a/games/game_subnautica.py b/basic_games/games/game_subnautica.py
similarity index 98%
rename from games/game_subnautica.py
rename to basic_games/games/game_subnautica.py
index d9463be..f2581a3 100644
--- a/games/game_subnautica.py
+++ b/basic_games/games/game_subnautica.py
@@ -155,11 +155,12 @@ def _settings_change_callback(
if plugin_name == self.name() and setting == "use_qmods":
self._set_mod_data_checker(use_qmod=bool(new))
- def settings(self) -> list[mobase.PluginSetting]:
+ def settings(self) -> list[mobase.Setting]:
return [
- mobase.PluginSetting(
+ mobase.Setting(
"use_qmods",
- (
+ self.tr("Use QMods"),
+ self.tr(
"Install */.dll mods in legacy QMods folder,"
" instead of BepInEx/plugins (default)."
),
diff --git a/games/game_tdu.py b/basic_games/games/game_tdu.py
similarity index 100%
rename from games/game_tdu.py
rename to basic_games/games/game_tdu.py
diff --git a/games/game_tdu2.py b/basic_games/games/game_tdu2.py
similarity index 100%
rename from games/game_tdu2.py
rename to basic_games/games/game_tdu2.py
diff --git a/games/game_thebindingofisaacrebirth.py b/basic_games/games/game_thebindingofisaacrebirth.py
similarity index 100%
rename from games/game_thebindingofisaacrebirth.py
rename to basic_games/games/game_thebindingofisaacrebirth.py
diff --git a/games/game_thps3.py b/basic_games/games/game_thps3.py
similarity index 100%
rename from games/game_thps3.py
rename to basic_games/games/game_thps3.py
diff --git a/games/game_thps4.py b/basic_games/games/game_thps4.py
similarity index 100%
rename from games/game_thps4.py
rename to basic_games/games/game_thps4.py
diff --git a/games/game_thug.py b/basic_games/games/game_thug.py
similarity index 100%
rename from games/game_thug.py
rename to basic_games/games/game_thug.py
diff --git a/games/game_thug2.py b/basic_games/games/game_thug2.py
similarity index 100%
rename from games/game_thug2.py
rename to basic_games/games/game_thug2.py
diff --git a/games/game_tmuf.py b/basic_games/games/game_tmuf.py
similarity index 100%
rename from games/game_tmuf.py
rename to basic_games/games/game_tmuf.py
diff --git a/games/game_trainsimulator.py b/basic_games/games/game_trainsimulator.py
similarity index 100%
rename from games/game_trainsimulator.py
rename to basic_games/games/game_trainsimulator.py
diff --git a/games/game_valheim.py b/basic_games/games/game_valheim.py
similarity index 97%
rename from games/game_valheim.py
rename to basic_games/games/game_valheim.py
index 9750475..8831079 100644
--- a/games/game_valheim.py
+++ b/basic_games/games/game_valheim.py
@@ -380,16 +380,20 @@ def listSaves(self, folder: QDir) -> list[mobase.ISaveGame]:
save_games.extend(ValheimWorldSaveGame(f) for f in path.glob("worlds/*.fwl"))
return save_games
- def settings(self) -> list[mobase.PluginSetting]:
+ def settings(self) -> list[mobase.Setting]:
settings = super().settings()
settings.extend(
[
- mobase.PluginSetting(
- "sync_overwrite", "Sync overwrite with mods", True
+ mobase.Setting(
+ "sync_overwrite",
+ self.tr("Synchronize overwrite"),
+ self.tr("Synchronize overwrite with mods"),
+ True,
),
- mobase.PluginSetting(
+ mobase.Setting(
"search_overwrite_file_content",
- "Search content of files in overwrite for matching mod",
+ self.tr("Search overwrite file content"),
+ self.tr("Search content of files in overwrite for matching mod"),
True,
),
]
diff --git a/games/game_valkyriachronicles.py b/basic_games/games/game_valkyriachronicles.py
similarity index 100%
rename from games/game_valkyriachronicles.py
rename to basic_games/games/game_valkyriachronicles.py
diff --git a/games/game_vampirebloodlines.py b/basic_games/games/game_vampirebloodlines.py
similarity index 100%
rename from games/game_vampirebloodlines.py
rename to basic_games/games/game_vampirebloodlines.py
diff --git a/games/game_witcher1.py b/basic_games/games/game_witcher1.py
similarity index 100%
rename from games/game_witcher1.py
rename to basic_games/games/game_witcher1.py
diff --git a/games/game_witcher2.py b/basic_games/games/game_witcher2.py
similarity index 100%
rename from games/game_witcher2.py
rename to basic_games/games/game_witcher2.py
diff --git a/games/game_witcher3.py b/basic_games/games/game_witcher3.py
similarity index 100%
rename from games/game_witcher3.py
rename to basic_games/games/game_witcher3.py
diff --git a/games/game_xplane11.py b/basic_games/games/game_xplane11.py
similarity index 100%
rename from games/game_xplane11.py
rename to basic_games/games/game_xplane11.py
diff --git a/games/game_zeusandposeidon.py b/basic_games/games/game_zeusandposeidon.py
similarity index 100%
rename from games/game_zeusandposeidon.py
rename to basic_games/games/game_zeusandposeidon.py
diff --git a/games/quarantine/game_masseffectlegendary.py b/basic_games/games/quarantine/game_masseffectlegendary.py
similarity index 100%
rename from games/quarantine/game_masseffectlegendary.py
rename to basic_games/games/quarantine/game_masseffectlegendary.py
diff --git a/games/quarantine/readme.txt b/basic_games/games/quarantine/readme.txt
similarity index 100%
rename from games/quarantine/readme.txt
rename to basic_games/games/quarantine/readme.txt
diff --git a/games/stalkeranomaly/XRIO.py b/basic_games/games/stalkeranomaly/XRIO.py
similarity index 100%
rename from games/stalkeranomaly/XRIO.py
rename to basic_games/games/stalkeranomaly/XRIO.py
diff --git a/games/stalkeranomaly/XRMath.py b/basic_games/games/stalkeranomaly/XRMath.py
similarity index 100%
rename from games/stalkeranomaly/XRMath.py
rename to basic_games/games/stalkeranomaly/XRMath.py
diff --git a/games/stalkeranomaly/XRNET.py b/basic_games/games/stalkeranomaly/XRNET.py
similarity index 100%
rename from games/stalkeranomaly/XRNET.py
rename to basic_games/games/stalkeranomaly/XRNET.py
diff --git a/games/stalkeranomaly/XRObject.py b/basic_games/games/stalkeranomaly/XRObject.py
similarity index 100%
rename from games/stalkeranomaly/XRObject.py
rename to basic_games/games/stalkeranomaly/XRObject.py
diff --git a/games/stalkeranomaly/XRSave.py b/basic_games/games/stalkeranomaly/XRSave.py
similarity index 100%
rename from games/stalkeranomaly/XRSave.py
rename to basic_games/games/stalkeranomaly/XRSave.py
diff --git a/games/stalkeranomaly/__init__.py b/basic_games/games/stalkeranomaly/__init__.py
similarity index 100%
rename from games/stalkeranomaly/__init__.py
rename to basic_games/games/stalkeranomaly/__init__.py
diff --git a/gog_utils.py b/basic_games/gog_utils.py
similarity index 100%
rename from gog_utils.py
rename to basic_games/gog_utils.py
diff --git a/origin_utils.py b/basic_games/origin_utils.py
similarity index 100%
rename from origin_utils.py
rename to basic_games/origin_utils.py
diff --git a/steam_utils.py b/basic_games/steam_utils.py
similarity index 100%
rename from steam_utils.py
rename to basic_games/steam_utils.py
diff --git a/basic_games_en.ts b/basic_games_en.ts
new file mode 100644
index 0000000..60539c8
--- /dev/null
+++ b/basic_games_en.ts
@@ -0,0 +1,131 @@
+
+
+
+
+ BasicGameMappings
+
+
+
+
+
+
+
+ Cyberpunk2077Game
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SubnauticaGame
+
+
+
+
+
+
+
+
+
+
+
+
+ ValheimGame
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/icon.jpg b/icon.jpg
new file mode 100644
index 0000000..9131e93
Binary files /dev/null and b/icon.jpg differ
diff --git a/metadata.json b/metadata.json
new file mode 100644
index 0000000..494c555
--- /dev/null
+++ b/metadata.json
@@ -0,0 +1,56 @@
+{
+ "id": "mo2-basic-games",
+ "name": "Basic Games Support",
+ "version": "1.0.0",
+ "description": "Basic ModOrganizer2 support for many games.",
+ "icon": "icon.jpg",
+ "author": {
+ "name": "Mod Organizer 2",
+ "homepage": "https://www.modorganizer.org/"
+ },
+ "contributors": [
+ "AkiraJkr",
+ "Al",
+ "AnyOldName3",
+ "bingmapsts",
+ "ddbb07",
+ "dekart811",
+ "Deorder",
+ "erri120",
+ "EzioTheDeadPoet",
+ "FalseIlyu",
+ "Holt59",
+ "Homer Simpleton",
+ "isanae",
+ "Jeremy Rimpo",
+ "Jeroen Ruigrok van der Werven",
+ "John L C",
+ "kane",
+ "LaughingHyena279",
+ "LostDragonist",
+ "Martin Rudat",
+ "ModZero",
+ "Nigel McKernan",
+ "Patchier",
+ "Qudix",
+ "Rodolfo Figueroa Soriano",
+ "Ryan Young",
+ "Silencer711",
+ "stpauljim",
+ "The Conceptionist",
+ "Thomas Winwood",
+ "tottoko99",
+ "Trevor Paley",
+ "uwx",
+ "Zash"
+ ],
+ "type": "game",
+ "content": {
+ "plugins": {
+ "basic_games": "basic_games/__init__.py"
+ },
+ "translations": {
+ "autodetect": "translations"
+ }
+ }
+}
diff --git a/poetry.lock b/poetry.lock
index f6dd499..aa170db 100644
--- a/poetry.lock
+++ b/poetry.lock
@@ -30,24 +30,24 @@ test = ["pytest"]
[[package]]
name = "mobase-stubs"
-version = "2.5.1a0"
+version = "2.6.0.dev1"
description = "PEP561 stub files for the mobase Python API."
optional = false
python-versions = "<4.0,>=3.12"
files = [
- {file = "mobase_stubs-2.5.1a0-py3-none-any.whl", hash = "sha256:bcaecfae038b890d82280fc518f7e44f38d22d35801a8ba7ffa480f7756d6823"},
- {file = "mobase_stubs-2.5.1a0.tar.gz", hash = "sha256:a8dc5574336ed3b1f673288447781f705a078472cf8808e05a36f129c81c8e20"},
+ {file = "mobase_stubs-2.6.0.dev1-py3-none-any.whl", hash = "sha256:466ea5def13135ce71cef4dbc4f9c3d0ece4e7098dc3fd99d9d3773d1b912360"},
+ {file = "mobase_stubs-2.6.0.dev1.tar.gz", hash = "sha256:21042d1dfca439fbee6cd346b82d98e6d0d322d6970f746e2cf2c1969445988a"},
]
[[package]]
name = "nodeenv"
-version = "1.9.0"
+version = "1.9.1"
description = "Node.js virtual environment builder"
optional = false
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7"
files = [
- {file = "nodeenv-1.9.0-py2.py3-none-any.whl", hash = "sha256:508ecec98f9f3330b636d4448c0f1a56fc68017c68f1e7857ebc52acf0eb879a"},
- {file = "nodeenv-1.9.0.tar.gz", hash = "sha256:07f144e90dae547bf0d4ee8da0ee42664a42a04e02ed68e06324348dafe4bdb1"},
+ {file = "nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9"},
+ {file = "nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f"},
]
[[package]]
@@ -63,13 +63,13 @@ files = [
[[package]]
name = "poethepoet"
-version = "0.23.0"
+version = "0.27.0"
description = "A task runner that works well with poetry."
optional = false
python-versions = ">=3.8"
files = [
- {file = "poethepoet-0.23.0-py3-none-any.whl", hash = "sha256:d573ff31d7678e62b6f9bc9a1291ae2009ac14e0eead0a450598f9f05abb27a3"},
- {file = "poethepoet-0.23.0.tar.gz", hash = "sha256:62a0a6a518df5985c191aee0c1fcd2bb6a0a04eb102997786fcdf118e4147d22"},
+ {file = "poethepoet-0.27.0-py3-none-any.whl", hash = "sha256:0032d980a623b96e26dc7450ae200b0998be523f27d297d799b97510fe252a24"},
+ {file = "poethepoet-0.27.0.tar.gz", hash = "sha256:907ab4dc1bc6326be5a3b10d2aa39d1acc0ca12024317d9506fbe9c0cdc912c9"},
]
[package.dependencies]
@@ -109,73 +109,77 @@ test = ["enum34", "ipaddress", "mock", "pywin32", "wmi"]
[[package]]
name = "pyqt6"
-version = "6.7.0"
+version = "6.7.1"
description = "Python bindings for the Qt cross platform application toolkit"
optional = false
python-versions = ">=3.8"
files = [
- {file = "PyQt6-6.7.0-cp38-abi3-macosx_10_14_universal2.whl", hash = "sha256:919ffb01020ece42209228bf94b4f2c156a6b77cc5a69a90a05e358b0333750b"},
- {file = "PyQt6-6.7.0-cp38-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:e294f025f94493ee12b66efd6893fab309c9063172bb8a5b184f84dfc1ebcc49"},
- {file = "PyQt6-6.7.0-cp38-abi3-win_amd64.whl", hash = "sha256:9d8865fb6357dba032002c4554a9648e88f2b4706c929cc51fba58edafad91fc"},
- {file = "PyQt6-6.7.0.tar.gz", hash = "sha256:3d31b2c59dc378ee26e16586d9469842483588142fc377280aad22aaf2fa6235"},
+ {file = "PyQt6-6.7.1-1-cp38-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:7f397f4b38b23b5588eb2c0933510deb953d96b1f0323a916c4839c2a66ccccc"},
+ {file = "PyQt6-6.7.1-1-cp38-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:c2f202b7941aa74e5c7e1463a6f27d9131dbc1e6cabe85571d7364f5b3de7397"},
+ {file = "PyQt6-6.7.1-cp38-abi3-macosx_11_0_universal2.whl", hash = "sha256:f053378e3aef6248fa612c8afddda17f942fb63f9fe8a9aeb2a6b6b4cbb0eba9"},
+ {file = "PyQt6-6.7.1-cp38-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:0adb7914c732ad1dee46d9cec838a98cb2b11bc38cc3b7b36fbd8701ae64bf47"},
+ {file = "PyQt6-6.7.1-cp38-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:2d771fa0981514cb1ee937633dfa64f14caa902707d9afffab66677f3a73e3da"},
+ {file = "PyQt6-6.7.1-cp38-abi3-win_amd64.whl", hash = "sha256:fa3954698233fe286a8afc477b84d8517f0788eb46b74da69d3ccc0170d3714c"},
+ {file = "PyQt6-6.7.1.tar.gz", hash = "sha256:3672a82ccd3a62e99ab200a13903421e2928e399fda25ced98d140313ad59cb9"},
]
[package.dependencies]
PyQt6-Qt6 = ">=6.7.0,<6.8.0"
-PyQt6-sip = ">=13.6,<14"
+PyQt6-sip = ">=13.8,<14"
[[package]]
name = "pyqt6-qt6"
-version = "6.7.1"
+version = "6.7.2"
description = "The subset of a Qt installation needed by PyQt6."
optional = false
python-versions = "*"
files = [
- {file = "PyQt6_Qt6-6.7.1-py3-none-macosx_10_14_x86_64.whl", hash = "sha256:29622b5dd38740b4b6962e0c88d082d08fa10b64542ef5d911b04214aad70150"},
- {file = "PyQt6_Qt6-6.7.1-py3-none-macosx_11_0_arm64.whl", hash = "sha256:fbcfe66a57199c6a26542b8b9b2f2ee59d974db36293de335a1251f24c4fe917"},
- {file = "PyQt6_Qt6-6.7.1-py3-none-manylinux_2_28_x86_64.whl", hash = "sha256:9fbab2a96d72d77d16021e259ef86a1a3c87adb0e7eebcc92df0d39f3fdf7e27"},
- {file = "PyQt6_Qt6-6.7.1-py3-none-win_amd64.whl", hash = "sha256:590a2f30d15892b5259e6a17ecc0a755675b1b49f553d964e195e90094b44120"},
+ {file = "PyQt6_Qt6-6.7.2-py3-none-macosx_10_14_x86_64.whl", hash = "sha256:065415589219a2f364aba29d6a98920bb32810286301acbfa157e522d30369e3"},
+ {file = "PyQt6_Qt6-6.7.2-py3-none-macosx_11_0_arm64.whl", hash = "sha256:7f817efa86a0e8eda9152c85b73405463fbf3266299090f32bbb2266da540ead"},
+ {file = "PyQt6_Qt6-6.7.2-py3-none-manylinux_2_28_aarch64.whl", hash = "sha256:05f2c7d195d316d9e678a92ecac0252a24ed175bd2444cc6077441807d756580"},
+ {file = "PyQt6_Qt6-6.7.2-py3-none-manylinux_2_28_x86_64.whl", hash = "sha256:fc93945eaef4536d68bd53566535efcbe78a7c05c2a533790a8fd022bac8bfaa"},
+ {file = "PyQt6_Qt6-6.7.2-py3-none-win_amd64.whl", hash = "sha256:b2d7e5ddb1b9764cd60f1d730fa7bf7a1f0f61b2630967c81761d3d0a5a8a2e0"},
]
[[package]]
name = "pyqt6-sip"
-version = "13.6.0"
+version = "13.8.0"
description = "The sip module support for PyQt6"
optional = false
-python-versions = ">=3.7"
+python-versions = ">=3.8"
files = [
- {file = "PyQt6_sip-13.6.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d6b5f699aaed0ac1fcd23e8fbca70d8a77965831b7c1ce474b81b1678817a49d"},
- {file = "PyQt6_sip-13.6.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:8c282062125eea5baf830c6998587d98c50be7c3a817a057fb95fef647184012"},
- {file = "PyQt6_sip-13.6.0-cp310-cp310-win32.whl", hash = "sha256:fa759b6339ff7e25f9afe2a6b651b775f0a36bcb3f5fa85e81a90d3b033c83f4"},
- {file = "PyQt6_sip-13.6.0-cp310-cp310-win_amd64.whl", hash = "sha256:8f9df9f7ccd8a9f0f1d36948c686f03ce1a1281543a3e636b7b7d5e086e1a436"},
- {file = "PyQt6_sip-13.6.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:5b9c6b6f9cfccb48cbb78a59603145a698fb4ffd176764d7083e5bf47631d8df"},
- {file = "PyQt6_sip-13.6.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:86a7b67c64436e32bffa9c28c9f21bf14a9faa54991520b12c3f6f435f24df7f"},
- {file = "PyQt6_sip-13.6.0-cp311-cp311-win32.whl", hash = "sha256:58f68a48400e0b3d1ccb18090090299bad26e3aed7ccb7057c65887b79b8aeea"},
- {file = "PyQt6_sip-13.6.0-cp311-cp311-win_amd64.whl", hash = "sha256:0dfd22cfedd87e96f9d51e0778ca2ba3dc0be83e424e9e0f98f6994d8d9c90f0"},
- {file = "PyQt6_sip-13.6.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:3bf03e130fbfd75c9c06e687b86ba375410c7a9e835e4e03285889e61dd4b0c4"},
- {file = "PyQt6_sip-13.6.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:43fb8551796030aae3d66d6e35e277494071ec6172cd182c9569ab7db268a2f5"},
- {file = "PyQt6_sip-13.6.0-cp312-cp312-win32.whl", hash = "sha256:13885361ca2cb2f5085d50359ba61b3fabd41b139fb58f37332acbe631ef2357"},
- {file = "PyQt6_sip-13.6.0-cp312-cp312-win_amd64.whl", hash = "sha256:24441032a29791e82beb7dfd76878339058def0e97fdb7c1cea517f3a0e6e96b"},
- {file = "PyQt6_sip-13.6.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:3075d8b325382750829e6cde6971c943352309d35768a4d4da0587459606d562"},
- {file = "PyQt6_sip-13.6.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:a6ce80bc24618d8a41be8ca51ad9f10e8bc4296dd90ab2809573df30a23ae0e5"},
- {file = "PyQt6_sip-13.6.0-cp38-cp38-win32.whl", hash = "sha256:fa7b10af7488efc5e53b41dd42c0f421bde6c2865a107af7ae259aff9d841da9"},
- {file = "PyQt6_sip-13.6.0-cp38-cp38-win_amd64.whl", hash = "sha256:9adf672f9114687533a74d5c2d4c03a9a929ad5ad9c3e88098a7da1a440ab916"},
- {file = "PyQt6_sip-13.6.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:98bf954103b087162fa63b3a78f30b0b63da22fd6450b610ec1b851dbb798228"},
- {file = "PyQt6_sip-13.6.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:39854dba35f8e5a4288da26ecb5f40b4c5ec1932efffb3f49d5ea435a7f37fb3"},
- {file = "PyQt6_sip-13.6.0-cp39-cp39-win32.whl", hash = "sha256:747f6ca44af81777a2c696bd501bc4815a53ec6fc94d4e25830e10bc1391f8ab"},
- {file = "PyQt6_sip-13.6.0-cp39-cp39-win_amd64.whl", hash = "sha256:33ea771fe777eb0d1a2c3ef35bcc3f7a286eb3ff09cd5b2fdd3d87d1f392d7e8"},
- {file = "PyQt6_sip-13.6.0.tar.gz", hash = "sha256:2486e1588071943d4f6657ba09096dc9fffd2322ad2c30041e78ea3f037b5778"},
+ {file = "PyQt6_sip-13.8.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:cedd554c643e54c4c2e12b5874781a87441a1b405acf3650a4a2e1df42aae231"},
+ {file = "PyQt6_sip-13.8.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f57275b5af774529f9838adcfb58869ba3ebdaf805daea113bb0697a96a3f3cb"},
+ {file = "PyQt6_sip-13.8.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:835ed22eab977f75fd77e60d4ff308a1fa794b1d0c04849311f36d2a080cdf3b"},
+ {file = "PyQt6_sip-13.8.0-cp310-cp310-win_amd64.whl", hash = "sha256:d8b22a6850917c68ce83fc152a8b606ecb2efaaeed35be53110468885d6cdd9d"},
+ {file = "PyQt6_sip-13.8.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:b203b6fbae4a8f2d27f35b7df46200057033d9ecd9134bcf30e3eab66d43572c"},
+ {file = "PyQt6_sip-13.8.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:beaddc1ec96b342f4e239702f91802706a80cb403166c2da318cec4ad8b790cb"},
+ {file = "PyQt6_sip-13.8.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:a5c086b7c9c7996ea9b7522646cc24eebbf3591ec9dd38f65c0a3fdb0dbeaac7"},
+ {file = "PyQt6_sip-13.8.0-cp311-cp311-win_amd64.whl", hash = "sha256:dd168667addf01f8a4b0fa7755323e43e4cd12ca4bade558c61f713a5d48ba1a"},
+ {file = "PyQt6_sip-13.8.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:33d9b399fc9c9dc99496266842b0fb2735d924604774e97cf9b555667cc0fc59"},
+ {file = "PyQt6_sip-13.8.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:056af69d1d8d28d5968066ec5da908afd82fc0be07b67cf2b84b9f02228416ce"},
+ {file = "PyQt6_sip-13.8.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:08dd81037a2864982ece2bf9891f3bf4558e247034e112993ea1a3fe239458cb"},
+ {file = "PyQt6_sip-13.8.0-cp312-cp312-win_amd64.whl", hash = "sha256:fbb249b82c53180f1420571ece5dc24fea1188ba435923edd055599dffe7abfb"},
+ {file = "PyQt6_sip-13.8.0-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:6bce6bc5870d9e87efe5338b1ee4a7b9d7d26cdd16a79a5757d80b6f25e71edc"},
+ {file = "PyQt6_sip-13.8.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cd81144b0770084e8005d3a121c9382e6f9bc8d0bb320dd618718ffe5090e0e6"},
+ {file = "PyQt6_sip-13.8.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:755beb5d271d081e56618fb30342cdd901464f721450495cb7cb0212764da89e"},
+ {file = "PyQt6_sip-13.8.0-cp38-cp38-win_amd64.whl", hash = "sha256:7a0bbc0918eab5b6351735d40cf22cbfa5aa2476b55e0d5fe881aeed7d871c29"},
+ {file = "PyQt6_sip-13.8.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7f84c472afdc7d316ff683f63129350d645ef82d9b3fd75a609b08472d1f7291"},
+ {file = "PyQt6_sip-13.8.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b1bf29e95f10a8a00819dac804ca7e5eba5fc1769adcd74c837c11477bf81954"},
+ {file = "PyQt6_sip-13.8.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:9ea9223c94906efd68148f12ae45b51a21d67e86704225ddc92bce9c54e4d93c"},
+ {file = "PyQt6_sip-13.8.0-cp39-cp39-win_amd64.whl", hash = "sha256:2559afa68825d08de09d71c42f3b6ad839dcc30f91e7c6d0785e07830d5541a5"},
+ {file = "PyQt6_sip-13.8.0.tar.gz", hash = "sha256:2f74cf3d6d9cab5152bd9f49d570b2dfb87553ebb5c4919abfde27f5b9fd69d4"},
]
[[package]]
name = "pyright"
-version = "1.1.365"
+version = "1.1.375"
description = "Command line wrapper for pyright"
optional = false
python-versions = ">=3.7"
files = [
- {file = "pyright-1.1.365-py3-none-any.whl", hash = "sha256:194d767a039f9034376b7ec8423841880ac6efdd061f3e283b4ad9fcd484a659"},
- {file = "pyright-1.1.365.tar.gz", hash = "sha256:d7e69000939aed4bf823707086c30c84c005bdd39fac2dfb370f0e5be16c2ef2"},
+ {file = "pyright-1.1.375-py3-none-any.whl", hash = "sha256:4c5e27eddeaee8b41cc3120736a1dda6ae120edf8523bb2446b6073a52f286e3"},
+ {file = "pyright-1.1.375.tar.gz", hash = "sha256:7765557b0d6782b2fadabff455da2014476404c9e9214f49977a4e49dec19a0f"},
]
[package.dependencies]
@@ -187,28 +191,29 @@ dev = ["twine (>=3.4.1)"]
[[package]]
name = "ruff"
-version = "0.2.2"
+version = "0.5.7"
description = "An extremely fast Python linter and code formatter, written in Rust."
optional = false
python-versions = ">=3.7"
files = [
- {file = "ruff-0.2.2-py3-none-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:0a9efb032855ffb3c21f6405751d5e147b0c6b631e3ca3f6b20f917572b97eb6"},
- {file = "ruff-0.2.2-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:d450b7fbff85913f866a5384d8912710936e2b96da74541c82c1b458472ddb39"},
- {file = "ruff-0.2.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ecd46e3106850a5c26aee114e562c329f9a1fbe9e4821b008c4404f64ff9ce73"},
- {file = "ruff-0.2.2-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5e22676a5b875bd72acd3d11d5fa9075d3a5f53b877fe7b4793e4673499318ba"},
- {file = "ruff-0.2.2-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1695700d1e25a99d28f7a1636d85bafcc5030bba9d0578c0781ba1790dbcf51c"},
- {file = "ruff-0.2.2-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:b0c232af3d0bd8f521806223723456ffebf8e323bd1e4e82b0befb20ba18388e"},
- {file = "ruff-0.2.2-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f63d96494eeec2fc70d909393bcd76c69f35334cdbd9e20d089fb3f0640216ca"},
- {file = "ruff-0.2.2-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6a61ea0ff048e06de273b2e45bd72629f470f5da8f71daf09fe481278b175001"},
- {file = "ruff-0.2.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5e1439c8f407e4f356470e54cdecdca1bd5439a0673792dbe34a2b0a551a2fe3"},
- {file = "ruff-0.2.2-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:940de32dc8853eba0f67f7198b3e79bc6ba95c2edbfdfac2144c8235114d6726"},
- {file = "ruff-0.2.2-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:0c126da55c38dd917621552ab430213bdb3273bb10ddb67bc4b761989210eb6e"},
- {file = "ruff-0.2.2-py3-none-musllinux_1_2_i686.whl", hash = "sha256:3b65494f7e4bed2e74110dac1f0d17dc8e1f42faaa784e7c58a98e335ec83d7e"},
- {file = "ruff-0.2.2-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:1ec49be4fe6ddac0503833f3ed8930528e26d1e60ad35c2446da372d16651ce9"},
- {file = "ruff-0.2.2-py3-none-win32.whl", hash = "sha256:d920499b576f6c68295bc04e7b17b6544d9d05f196bb3aac4358792ef6f34325"},
- {file = "ruff-0.2.2-py3-none-win_amd64.whl", hash = "sha256:cc9a91ae137d687f43a44c900e5d95e9617cb37d4c989e462980ba27039d239d"},
- {file = "ruff-0.2.2-py3-none-win_arm64.whl", hash = "sha256:c9d15fc41e6054bfc7200478720570078f0b41c9ae4f010bcc16bd6f4d1aacdd"},
- {file = "ruff-0.2.2.tar.gz", hash = "sha256:e62ed7f36b3068a30ba39193a14274cd706bc486fad521276458022f7bccb31d"},
+ {file = "ruff-0.5.7-py3-none-linux_armv6l.whl", hash = "sha256:548992d342fc404ee2e15a242cdbea4f8e39a52f2e7752d0e4cbe88d2d2f416a"},
+ {file = "ruff-0.5.7-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:00cc8872331055ee017c4f1071a8a31ca0809ccc0657da1d154a1d2abac5c0be"},
+ {file = "ruff-0.5.7-py3-none-macosx_11_0_arm64.whl", hash = "sha256:eaf3d86a1fdac1aec8a3417a63587d93f906c678bb9ed0b796da7b59c1114a1e"},
+ {file = "ruff-0.5.7-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a01c34400097b06cf8a6e61b35d6d456d5bd1ae6961542de18ec81eaf33b4cb8"},
+ {file = "ruff-0.5.7-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fcc8054f1a717e2213500edaddcf1dbb0abad40d98e1bd9d0ad364f75c763eea"},
+ {file = "ruff-0.5.7-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7f70284e73f36558ef51602254451e50dd6cc479f8b6f8413a95fcb5db4a55fc"},
+ {file = "ruff-0.5.7-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:a78ad870ae3c460394fc95437d43deb5c04b5c29297815a2a1de028903f19692"},
+ {file = "ruff-0.5.7-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9ccd078c66a8e419475174bfe60a69adb36ce04f8d4e91b006f1329d5cd44bcf"},
+ {file = "ruff-0.5.7-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7e31c9bad4ebf8fdb77b59cae75814440731060a09a0e0077d559a556453acbb"},
+ {file = "ruff-0.5.7-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d796327eed8e168164346b769dd9a27a70e0298d667b4ecee6877ce8095ec8e"},
+ {file = "ruff-0.5.7-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:4a09ea2c3f7778cc635e7f6edf57d566a8ee8f485f3c4454db7771efb692c499"},
+ {file = "ruff-0.5.7-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:a36d8dcf55b3a3bc353270d544fb170d75d2dff41eba5df57b4e0b67a95bb64e"},
+ {file = "ruff-0.5.7-py3-none-musllinux_1_2_i686.whl", hash = "sha256:9369c218f789eefbd1b8d82a8cf25017b523ac47d96b2f531eba73770971c9e5"},
+ {file = "ruff-0.5.7-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:b88ca3db7eb377eb24fb7c82840546fb7acef75af4a74bd36e9ceb37a890257e"},
+ {file = "ruff-0.5.7-py3-none-win32.whl", hash = "sha256:33d61fc0e902198a3e55719f4be6b375b28f860b09c281e4bdbf783c0566576a"},
+ {file = "ruff-0.5.7-py3-none-win_amd64.whl", hash = "sha256:083bbcbe6fadb93cd86709037acc510f86eed5a314203079df174c40bbbca6b3"},
+ {file = "ruff-0.5.7-py3-none-win_arm64.whl", hash = "sha256:2dca26154ff9571995107221d0aeaad0e75a77b5a682d6236cf89a58c70b76f4"},
+ {file = "ruff-0.5.7.tar.gz", hash = "sha256:8dfc0a458797f5d9fb622dd0efc52d796f23f0a1493a9527f4e49a550ae9a7e5"},
]
[[package]]
@@ -224,13 +229,13 @@ files = [
[[package]]
name = "types-psutil"
-version = "5.9.5.20240516"
+version = "6.0.0.20240621"
description = "Typing stubs for psutil"
optional = false
python-versions = ">=3.8"
files = [
- {file = "types-psutil-5.9.5.20240516.tar.gz", hash = "sha256:bb296f59fc56458891d0feb1994717e548a1bcf89936a2877df8792b822b4696"},
- {file = "types_psutil-5.9.5.20240516-py3-none-any.whl", hash = "sha256:83146ded949a10167d9895e567b3b71e53ebc5e23fd8363eab62b3c76cce7b89"},
+ {file = "types-psutil-6.0.0.20240621.tar.gz", hash = "sha256:1be027326c42ff51ebd65255a5146f9dc57e5cf8c4f9519a88b3f3f6a7fcd00e"},
+ {file = "types_psutil-6.0.0.20240621-py3-none-any.whl", hash = "sha256:b02f05d2c4141cd5926d82d8b56e4292a4d8f483d8a3400b73edf153834a3c64"},
]
[[package]]
@@ -247,4 +252,4 @@ files = [
[metadata]
lock-version = "2.0"
python-versions = "^3.12"
-content-hash = "6c2d56d43494ed09c81cc569e453e8a2791a739491d547b458c3f5581d94710c"
+content-hash = "52c74fb9a8276de98403f513ced8f1bcb13ef5acd075bbf827ede19f7ec99113"
diff --git a/pyproject.toml b/pyproject.toml
index 1246321..5c743de 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -13,27 +13,28 @@ python = "^3.12"
psutil = "^5.8.0"
vdf = "3.4"
lzokay = "1.1.5"
-pyqt6 = "6.7.0"
+pyqt6 = "6.7.1"
+mobase-stubs = {version = "^2.6.0.dev1", allow-prereleases = true}
[tool.poetry.group.dev.dependencies]
-mobase-stubs = { version = "^2.5.1a0", allow-prereleases = true }
-pyqt6 = "^6.7.0"
-pyright = "^1.1.365"
-ruff = "^0.2.1"
-types-psutil = "^5.9.5.20240516"
-poethepoet = "^0.23.0"
+mobase-stubs = "^2.5.2"
+pyqt6 = "^6.7.1"
+pyright = "^1.1.375"
+ruff = "^0.5.7"
+types-psutil = "^6.0.0.20240621"
+poethepoet = "^0.27.0"
[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"
[tool.poe.tasks]
-format-imports = "ruff check --select I . --fix"
-format-ruff = "ruff format ."
+format-imports = "ruff check --select I basic_games --fix"
+format-ruff = "ruff format basic_games"
format.sequence = ["format-imports", "format-ruff"]
-lint-ruff = "ruff check ."
-lint-ruff-format = "ruff format --check ."
-lint-pyright = "pyright ."
+lint-ruff = "ruff check basic_games"
+lint-ruff-format = "ruff format --check basic_games"
+lint-pyright = "pyright basic_games"
lint.sequence = ["lint-ruff", "lint-ruff-format", "lint-pyright"]
lint.ignore_fail = "return_non_zero"
diff --git a/vcpkg.json b/vcpkg.json
new file mode 100644
index 0000000..2c96d07
--- /dev/null
+++ b/vcpkg.json
@@ -0,0 +1,15 @@
+{
+ "features": {
+ "standalone": {
+ "description": "Build Standalone.",
+ "dependencies": ["mo2-cmake"]
+ }
+ },
+ "vcpkg-configuration": {
+ "default-registry": {
+ "kind": "git",
+ "repository": "https://github.com/ModOrganizer2/vcpkg-registry",
+ "baseline": "27d8adbfe9e4ce88a875be3a45fadab69869eb60"
+ }
+ }
+}