diff --git a/res/chat/channel.ui b/res/chat/channel.ui
index 90ff0b5d1..03c27a1ed 100644
--- a/res/chat/channel.ui
+++ b/res/chat/channel.ui
@@ -295,12 +295,12 @@
ChatLineEdit
QLineEdit
-
+
ChatterListView
QListView
-
+
diff --git a/res/coop/coop.ui b/res/coop/coop.ui
index 9476ee23e..a8cd9f48c 100644
--- a/res/coop/coop.ui
+++ b/res/coop/coop.ui
@@ -371,7 +371,7 @@ p, li { white-space: pre-wrap; }
CoopLeaderboardTableView
QTableView
-
+
diff --git a/res/stats/leaderboard.ui b/res/stats/leaderboard.ui
index 10949cc38..0e0046e4c 100644
--- a/res/stats/leaderboard.ui
+++ b/res/stats/leaderboard.ui
@@ -779,12 +779,12 @@
LeaderboardTableView
QTableView
- stats.itemviews.leaderboardtableview
+ src.stats.itemviews.leaderboardtableview
LeaderboardLineEdit
QLineEdit
- stats.leaderboardlineedit
+ src.stats.leaderboardlineedit
diff --git a/setup.py b/setup.py
index 00fec336c..abd4219ce 100644
--- a/setup.py
+++ b/setup.py
@@ -7,13 +7,11 @@
else:
from distutils.core import setup
-sys.path.insert(0, "src")
-
company_name = "FAF Community"
product_name = "Forged Alliance Forever"
if sys.platform == "win32":
- import config.version as version
+ from src.config import version
root_dir = os.path.dirname(os.path.abspath(__file__))
res_dir = os.path.join(root_dir, "res")
diff --git a/src/__main__.py b/src/__main__.py
index aa466060c..5610b1766 100644
--- a/src/__main__.py
+++ b/src/__main__.py
@@ -16,9 +16,9 @@
from PyQt6.QtWidgets import QMessageBox
from PyQt6.QtWidgets import QStyleFactory
-import util
-import util.crash
-from config import Settings
+from src import util
+from src.config import Settings
+from src.util import crash
# Some linux distros (like Gentoo) make package scripts available
# by copying and modifying them. This breaks path to our modules.
@@ -70,7 +70,7 @@ def excepthook(
),
)
logger.error("Runtime Info:\n{}".format(util.crash.runtime_info()))
- dialog = util.crash.CrashDialog((exc_type, exc_value, traceback_object))
+ dialog = crash.CrashDialog((exc_type, exc_value, traceback_object))
answer = dialog.exec()
if answer == QDialog.DialogCode.Rejected:
@@ -100,7 +100,7 @@ def run_faf():
util.THEME.loadTheme()
# Create client singleton and connect
- import client
+ from src import client
faf_client = client.instance
faf_client.setup()
@@ -121,7 +121,7 @@ def set_style(app: QApplication) -> None:
if __name__ == '__main__':
import logging
- import config
+ from src import config
QApplication.setAttribute(Qt.ApplicationAttribute.AA_ShareOpenGLContexts)
app = QApplication(["FAF Python Client"] + trailing_args)
@@ -155,8 +155,6 @@ def set_style(app: QApplication) -> None:
sys.excepthook = excepthook
if len(trailing_args) == 0:
- # Do the magic
- sys.path.extend(['.'])
run_faf()
else:
# Try to interpret the argument as a replay.
@@ -164,7 +162,7 @@ def set_style(app: QApplication) -> None:
trailing_args[0].lower().endswith(".fafreplay")
or trailing_args[0].lower().endswith(".scfareplay")
):
- import fa
+ from src import fa
fa.replay(trailing_args[0], True) # Launch as detached process
# End of show
diff --git a/src/api/ApiAccessors.py b/src/api/ApiAccessors.py
index bc17ed6c5..23b16fef0 100644
--- a/src/api/ApiAccessors.py
+++ b/src/api/ApiAccessors.py
@@ -2,7 +2,7 @@
from PyQt6.QtCore import pyqtSignal
-from api.ApiBase import ApiBase
+from src.api.ApiBase import ApiBase
logger = logging.getLogger(__name__)
diff --git a/src/api/ApiBase.py b/src/api/ApiBase.py
index d856bdf25..c7c167740 100644
--- a/src/api/ApiBase.py
+++ b/src/api/ApiBase.py
@@ -13,9 +13,9 @@
from PyQt6.QtNetwork import QNetworkReply
from PyQt6.QtNetwork import QNetworkRequest
-from config import Settings
-from oauth.oauth_flow import OAuth2Flow
-from oauth.oauth_flow import OAuth2FlowInstance
+from src.config import Settings
+from src.oauth.oauth_flow import OAuth2Flow
+from src.oauth.oauth_flow import OAuth2FlowInstance
logger = logging.getLogger(__name__)
diff --git a/src/api/coop_api.py b/src/api/coop_api.py
index d1e1cf6c6..3f360e121 100644
--- a/src/api/coop_api.py
+++ b/src/api/coop_api.py
@@ -1,8 +1,8 @@
-from api.ApiAccessors import DataApiAccessor
-from api.models.CoopResult import CoopResult
-from api.models.CoopScenario import CoopScenario
-from api.parsers.CoopResultParser import CoopResultParser
-from api.parsers.CoopScenarioParser import CoopScenarioParser
+from src.api.ApiAccessors import DataApiAccessor
+from src.api.models.CoopResult import CoopResult
+from src.api.models.CoopScenario import CoopScenario
+from src.api.parsers.CoopResultParser import CoopResultParser
+from src.api.parsers.CoopScenarioParser import CoopScenarioParser
class CoopApiAccessor(DataApiAccessor):
diff --git a/src/api/featured_mod_api.py b/src/api/featured_mod_api.py
index 9d1f67b7c..6e9820b54 100644
--- a/src/api/featured_mod_api.py
+++ b/src/api/featured_mod_api.py
@@ -1,10 +1,10 @@
import logging
-from api.ApiAccessors import DataApiAccessor
-from api.models.FeaturedMod import FeaturedMod
-from api.models.FeaturedModFile import FeaturedModFile
-from api.parsers.FeaturedModFileParser import FeaturedModFileParser
-from api.parsers.FeaturedModParser import FeaturedModParser
+from src.api.ApiAccessors import DataApiAccessor
+from src.api.models.FeaturedMod import FeaturedMod
+from src.api.models.FeaturedModFile import FeaturedModFile
+from src.api.parsers.FeaturedModFileParser import FeaturedModFileParser
+from src.api.parsers.FeaturedModParser import FeaturedModParser
logger = logging.getLogger(__name__)
diff --git a/src/api/matchmaker_queue_api.py b/src/api/matchmaker_queue_api.py
index 576a85a31..7023a9de3 100644
--- a/src/api/matchmaker_queue_api.py
+++ b/src/api/matchmaker_queue_api.py
@@ -1,6 +1,6 @@
import logging
-from api.ApiAccessors import DataApiAccessor
+from src.api.ApiAccessors import DataApiAccessor
logger = logging.getLogger(__name__)
diff --git a/src/api/models/AbstractEntity.py b/src/api/models/AbstractEntity.py
index c49e15a4b..501f42169 100644
--- a/src/api/models/AbstractEntity.py
+++ b/src/api/models/AbstractEntity.py
@@ -1,6 +1,6 @@
from pydantic import Field
-from api.models.ConfiguredModel import ConfiguredModel
+from src.api.models.ConfiguredModel import ConfiguredModel
class AbstractEntity(ConfiguredModel):
diff --git a/src/api/models/Achievement.py b/src/api/models/Achievement.py
index 0f8f5bba5..7181e8ecd 100644
--- a/src/api/models/Achievement.py
+++ b/src/api/models/Achievement.py
@@ -1,8 +1,9 @@
from __future__ import annotations
-from api.models.AbstractEntity import AbstractEntity
from pydantic import Field
-from util import StringValuedEnum
+
+from src.api.models.AbstractEntity import AbstractEntity
+from src.util import StringValuedEnum
class State(StringValuedEnum):
diff --git a/src/api/models/Avatar.py b/src/api/models/Avatar.py
index 3ecaa711d..c46b1df0d 100644
--- a/src/api/models/Avatar.py
+++ b/src/api/models/Avatar.py
@@ -1,4 +1,4 @@
-from api.models.AbstractEntity import AbstractEntity
+from src.api.models.AbstractEntity import AbstractEntity
class Avatar(AbstractEntity):
diff --git a/src/api/models/AvatarAssignment.py b/src/api/models/AvatarAssignment.py
index 14386606f..fa4b82196 100644
--- a/src/api/models/AvatarAssignment.py
+++ b/src/api/models/AvatarAssignment.py
@@ -1,7 +1,8 @@
-from api.models.AbstractEntity import AbstractEntity
-from api.models.Avatar import Avatar
from pydantic import Field
+from src.api.models.AbstractEntity import AbstractEntity
+from src.api.models.Avatar import Avatar
+
class AvatarAssignment(AbstractEntity):
expires_at: str | None = Field(alias="expiresAt")
diff --git a/src/api/models/CoopMission.py b/src/api/models/CoopMission.py
index 09a64acdc..b04c1f84c 100644
--- a/src/api/models/CoopMission.py
+++ b/src/api/models/CoopMission.py
@@ -1,6 +1,6 @@
from pydantic import Field
-from api.models.ConfiguredModel import ConfiguredModel
+from src.api.models.ConfiguredModel import ConfiguredModel
class CoopMission(ConfiguredModel):
diff --git a/src/api/models/CoopResult.py b/src/api/models/CoopResult.py
index 8e4d34e02..afed1ad8c 100644
--- a/src/api/models/CoopResult.py
+++ b/src/api/models/CoopResult.py
@@ -1,7 +1,7 @@
from pydantic import Field
-from api.models.ConfiguredModel import ConfiguredModel
-from api.models.Game import Game
+from src.api.models.ConfiguredModel import ConfiguredModel
+from src.api.models.Game import Game
class CoopResult(ConfiguredModel):
diff --git a/src/api/models/CoopScenario.py b/src/api/models/CoopScenario.py
index 5d30ca789..964ba8c64 100644
--- a/src/api/models/CoopScenario.py
+++ b/src/api/models/CoopScenario.py
@@ -1,7 +1,7 @@
from pydantic import Field
-from api.models.ConfiguredModel import ConfiguredModel
-from api.models.CoopMission import CoopMission
+from src.api.models.ConfiguredModel import ConfiguredModel
+from src.api.models.CoopMission import CoopMission
class CoopScenario(ConfiguredModel):
diff --git a/src/api/models/Event.py b/src/api/models/Event.py
index c6f3b8958..ab8abe0f6 100644
--- a/src/api/models/Event.py
+++ b/src/api/models/Event.py
@@ -1,6 +1,7 @@
-from api.models.ConfiguredModel import ConfiguredModel
from pydantic import Field
+from src.api.models.ConfiguredModel import ConfiguredModel
+
class Event(ConfiguredModel):
xd: str = Field(alias="id")
diff --git a/src/api/models/FeaturedMod.py b/src/api/models/FeaturedMod.py
index cff4af044..fc99c0209 100644
--- a/src/api/models/FeaturedMod.py
+++ b/src/api/models/FeaturedMod.py
@@ -1,6 +1,6 @@
from pydantic import Field
-from api.models.ConfiguredModel import ConfiguredModel
+from src.api.models.ConfiguredModel import ConfiguredModel
class FeaturedMod(ConfiguredModel):
diff --git a/src/api/models/FeaturedModFile.py b/src/api/models/FeaturedModFile.py
index 154f40b31..c04125bea 100644
--- a/src/api/models/FeaturedModFile.py
+++ b/src/api/models/FeaturedModFile.py
@@ -1,6 +1,6 @@
from pydantic import Field
-from api.models.ConfiguredModel import ConfiguredModel
+from src.api.models.ConfiguredModel import ConfiguredModel
class FeaturedModFile(ConfiguredModel):
diff --git a/src/api/models/Game.py b/src/api/models/Game.py
index 00dde8dd1..95390d6a0 100644
--- a/src/api/models/Game.py
+++ b/src/api/models/Game.py
@@ -1,8 +1,8 @@
from pydantic import Field
-from api.models.ConfiguredModel import ConfiguredModel
-from api.models.Player import Player
-from api.models.PlayerStats import PlayerStats
+from src.api.models.ConfiguredModel import ConfiguredModel
+from src.api.models.Player import Player
+from src.api.models.PlayerStats import PlayerStats
class Game(ConfiguredModel):
diff --git a/src/api/models/GamePlayerStats.py b/src/api/models/GamePlayerStats.py
index 263e0b933..90a496a9e 100644
--- a/src/api/models/GamePlayerStats.py
+++ b/src/api/models/GamePlayerStats.py
@@ -1,6 +1,7 @@
-from api.models.ConfiguredModel import ConfiguredModel
from pydantic import Field
+from src.api.models.ConfiguredModel import ConfiguredModel
+
class GamePlayerStats(ConfiguredModel):
xd: str = Field(alias="id")
diff --git a/src/api/models/GeneratedMapParams.py b/src/api/models/GeneratedMapParams.py
index d77eb15e2..eaecbee03 100644
--- a/src/api/models/GeneratedMapParams.py
+++ b/src/api/models/GeneratedMapParams.py
@@ -2,10 +2,10 @@
from pydantic import Field
-from api.models.ConfiguredModel import ConfiguredModel
-from api.models.Map import Map
-from api.models.MapType import MapType
-from api.models.MapVersion import MapVersion
+from src.api.models.ConfiguredModel import ConfiguredModel
+from src.api.models.Map import Map
+from src.api.models.MapType import MapType
+from src.api.models.MapVersion import MapVersion
class GeneratedMapParams(ConfiguredModel):
diff --git a/src/api/models/Leaderboard.py b/src/api/models/Leaderboard.py
index eed847185..59bd92096 100644
--- a/src/api/models/Leaderboard.py
+++ b/src/api/models/Leaderboard.py
@@ -1,8 +1,9 @@
from __future__ import annotations
-from api.models.AbstractEntity import AbstractEntity
from pydantic import Field
+from src.api.models.AbstractEntity import AbstractEntity
+
class Leaderboard(AbstractEntity):
description: str = Field(alias="descriptionKey")
diff --git a/src/api/models/LeaderboardRating.py b/src/api/models/LeaderboardRating.py
index 2a960b494..6e25fb559 100644
--- a/src/api/models/LeaderboardRating.py
+++ b/src/api/models/LeaderboardRating.py
@@ -1,7 +1,8 @@
-from api.models.AbstractEntity import AbstractEntity
-from api.models.Leaderboard import Leaderboard
from pydantic import Field
+from src.api.models.AbstractEntity import AbstractEntity
+from src.api.models.Leaderboard import Leaderboard
+
class LeaderboardRating(AbstractEntity):
deviation: float
diff --git a/src/api/models/LeaderboardRatingJournal.py b/src/api/models/LeaderboardRatingJournal.py
index 372025785..850cb4324 100644
--- a/src/api/models/LeaderboardRatingJournal.py
+++ b/src/api/models/LeaderboardRatingJournal.py
@@ -1,8 +1,9 @@
-from api.models.ConfiguredModel import ConfiguredModel
-from api.models.GamePlayerStats import GamePlayerStats
-from api.models.Leaderboard import Leaderboard
from pydantic import Field
+from src.api.models.ConfiguredModel import ConfiguredModel
+from src.api.models.GamePlayerStats import GamePlayerStats
+from src.api.models.Leaderboard import Leaderboard
+
class LeaderboardRatingJournal(ConfiguredModel):
create_time: str = Field(alias="createTime")
diff --git a/src/api/models/LeagueDivision.py b/src/api/models/LeagueDivision.py
index aa83d9699..f0e75b676 100644
--- a/src/api/models/LeagueDivision.py
+++ b/src/api/models/LeagueDivision.py
@@ -1,7 +1,8 @@
-from api.models.ConfiguredModel import ConfiguredModel
-from api.models.LeagueSeason import LeagueSeason
from pydantic import Field
+from src.api.models.ConfiguredModel import ConfiguredModel
+from src.api.models.LeagueSeason import LeagueSeason
+
class LeagueDivision(ConfiguredModel):
xd: str = Field(alias="id")
diff --git a/src/api/models/LeagueLeaderboard.py b/src/api/models/LeagueLeaderboard.py
index 57e32812a..6de59ee20 100644
--- a/src/api/models/LeagueLeaderboard.py
+++ b/src/api/models/LeagueLeaderboard.py
@@ -1,6 +1,7 @@
-from api.models.ConfiguredModel import ConfiguredModel
from pydantic import Field
+from src.api.models.ConfiguredModel import ConfiguredModel
+
class LeagueLeaderboard(ConfiguredModel):
technical_name: str = Field(alias="technicalName")
diff --git a/src/api/models/LeagueSeason.py b/src/api/models/LeagueSeason.py
index 02a3ba0de..9dd4b6ecb 100644
--- a/src/api/models/LeagueSeason.py
+++ b/src/api/models/LeagueSeason.py
@@ -1,7 +1,8 @@
-from api.models.ConfiguredModel import ConfiguredModel
-from api.models.LeagueLeaderboard import LeagueLeaderboard
from pydantic import Field
+from src.api.models.ConfiguredModel import ConfiguredModel
+from src.api.models.LeagueLeaderboard import LeagueLeaderboard
+
class LeagueSeason(ConfiguredModel):
end_date: str = Field(alias="endDate")
diff --git a/src/api/models/LeagueSeasonScore.py b/src/api/models/LeagueSeasonScore.py
index 10c61be1e..fbbd1a614 100644
--- a/src/api/models/LeagueSeasonScore.py
+++ b/src/api/models/LeagueSeasonScore.py
@@ -1,8 +1,9 @@
-from api.models.ConfiguredModel import ConfiguredModel
-from api.models.LeagueSeason import LeagueSeason
-from api.models.LeagueSubdivision import LeagueSubdivision
from pydantic import Field
+from src.api.models.ConfiguredModel import ConfiguredModel
+from src.api.models.LeagueSeason import LeagueSeason
+from src.api.models.LeagueSubdivision import LeagueSubdivision
+
class LeagueSeasonScore(ConfiguredModel):
game_count: int = Field(alias="gameCount")
diff --git a/src/api/models/LeagueSubdivision.py b/src/api/models/LeagueSubdivision.py
index c2c7847ce..5c12cf960 100644
--- a/src/api/models/LeagueSubdivision.py
+++ b/src/api/models/LeagueSubdivision.py
@@ -1,7 +1,8 @@
-from api.models.ConfiguredModel import ConfiguredModel
-from api.models.LeagueDivision import LeagueDivision
from pydantic import Field
+from src.api.models.ConfiguredModel import ConfiguredModel
+from src.api.models.LeagueDivision import LeagueDivision
+
class LeagueSubdivision(ConfiguredModel):
index: int = Field(alias="subdivisionIndex")
diff --git a/src/api/models/Map.py b/src/api/models/Map.py
index 6a168acfb..420f31d47 100644
--- a/src/api/models/Map.py
+++ b/src/api/models/Map.py
@@ -1,10 +1,11 @@
-from api.models.AbstractEntity import AbstractEntity
-from api.models.MapType import MapType
-from api.models.MapVersion import MapVersion
-from api.models.Player import Player
-from api.models.ReviewsSummary import ReviewsSummary
from pydantic import Field
+from src.api.models.AbstractEntity import AbstractEntity
+from src.api.models.MapType import MapType
+from src.api.models.MapVersion import MapVersion
+from src.api.models.Player import Player
+from src.api.models.ReviewsSummary import ReviewsSummary
+
class Map(AbstractEntity):
display_name: str = Field(alias="displayName")
diff --git a/src/api/models/MapPoolAssignment.py b/src/api/models/MapPoolAssignment.py
index a110d0b89..986c3bb05 100644
--- a/src/api/models/MapPoolAssignment.py
+++ b/src/api/models/MapPoolAssignment.py
@@ -1,10 +1,11 @@
from __future__ import annotations
-from api.models.AbstractEntity import AbstractEntity
-from api.models.GeneratedMapParams import GeneratedMapParams
-from api.models.MapVersion import MapVersion
from pydantic import Field
+from src.api.models.AbstractEntity import AbstractEntity
+from src.api.models.GeneratedMapParams import GeneratedMapParams
+from src.api.models.MapVersion import MapVersion
+
class MapPoolAssignment(AbstractEntity):
map_params: GeneratedMapParams | None = Field(None, alias="mapParams")
diff --git a/src/api/models/MapVersion.py b/src/api/models/MapVersion.py
index 08521a849..fd3ff1f00 100644
--- a/src/api/models/MapVersion.py
+++ b/src/api/models/MapVersion.py
@@ -4,7 +4,7 @@
from pydantic import Field
-from api.models.AbstractEntity import AbstractEntity
+from src.api.models.AbstractEntity import AbstractEntity
@dataclass
diff --git a/src/api/models/Mod.py b/src/api/models/Mod.py
index 5dd9ed545..2af47a425 100644
--- a/src/api/models/Mod.py
+++ b/src/api/models/Mod.py
@@ -1,9 +1,10 @@
-from api.models.AbstractEntity import AbstractEntity
-from api.models.ModVersion import ModVersion
-from api.models.Player import Player
-from api.models.ReviewsSummary import ReviewsSummary
from pydantic import Field
+from src.api.models.AbstractEntity import AbstractEntity
+from src.api.models.ModVersion import ModVersion
+from src.api.models.Player import Player
+from src.api.models.ReviewsSummary import ReviewsSummary
+
class Mod(AbstractEntity):
display_name: str = Field(alias="displayName")
diff --git a/src/api/models/ModVersion.py b/src/api/models/ModVersion.py
index cbce8d237..0ae562b36 100644
--- a/src/api/models/ModVersion.py
+++ b/src/api/models/ModVersion.py
@@ -1,7 +1,7 @@
from pydantic import Field
-from api.models.AbstractEntity import AbstractEntity
-from api.models.ModType import ModType
+from src.api.models.AbstractEntity import AbstractEntity
+from src.api.models.ModType import ModType
class ModVersion(AbstractEntity):
diff --git a/src/api/models/NameRecord.py b/src/api/models/NameRecord.py
index 970d627cd..61c11732d 100644
--- a/src/api/models/NameRecord.py
+++ b/src/api/models/NameRecord.py
@@ -1,6 +1,7 @@
-from api.models.ConfiguredModel import ConfiguredModel
from pydantic import Field
+from src.api.models.ConfiguredModel import ConfiguredModel
+
class NameRecord(ConfiguredModel):
xd: str = Field(alias="id")
diff --git a/src/api/models/Player.py b/src/api/models/Player.py
index 37b9a8a6c..e78a1623f 100644
--- a/src/api/models/Player.py
+++ b/src/api/models/Player.py
@@ -1,10 +1,11 @@
from __future__ import annotations
-from api.models.AbstractEntity import AbstractEntity
-from api.models.AvatarAssignment import AvatarAssignment
-from api.models.NameRecord import NameRecord
from pydantic import Field
+from src.api.models.AbstractEntity import AbstractEntity
+from src.api.models.AvatarAssignment import AvatarAssignment
+from src.api.models.NameRecord import NameRecord
+
class Player(AbstractEntity):
login: str
diff --git a/src/api/models/PlayerAchievement.py b/src/api/models/PlayerAchievement.py
index 479ea3fe4..578b2fa38 100644
--- a/src/api/models/PlayerAchievement.py
+++ b/src/api/models/PlayerAchievement.py
@@ -1,9 +1,10 @@
-from api.models.AbstractEntity import AbstractEntity
-from api.models.Achievement import Achievement
-from api.models.Achievement import State
-from api.models.Player import Player
from pydantic import Field
+from src.api.models.AbstractEntity import AbstractEntity
+from src.api.models.Achievement import Achievement
+from src.api.models.Achievement import State
+from src.api.models.Player import Player
+
class PlayerAchievement(AbstractEntity):
current_steps: int | None = Field(alias="currentSteps")
diff --git a/src/api/models/PlayerEvent.py b/src/api/models/PlayerEvent.py
index 64ee39f6b..c55f6a914 100644
--- a/src/api/models/PlayerEvent.py
+++ b/src/api/models/PlayerEvent.py
@@ -1,8 +1,9 @@
-from api.models.AbstractEntity import AbstractEntity
-from api.models.Event import Event
-from api.models.Player import Player
from pydantic import Field
+from src.api.models.AbstractEntity import AbstractEntity
+from src.api.models.Event import Event
+from src.api.models.Player import Player
+
class PlayerEvent(AbstractEntity):
current_count: int = Field(alias="currentCount")
diff --git a/src/api/models/PlayerStats.py b/src/api/models/PlayerStats.py
index ea4ec724f..d0255615f 100644
--- a/src/api/models/PlayerStats.py
+++ b/src/api/models/PlayerStats.py
@@ -1,7 +1,7 @@
from pydantic import Field
-from api.models.ConfiguredModel import ConfiguredModel
-from api.models.Player import Player
+from src.api.models.ConfiguredModel import ConfiguredModel
+from src.api.models.Player import Player
class PlayerStats(ConfiguredModel):
diff --git a/src/api/models/ReviewsSummary.py b/src/api/models/ReviewsSummary.py
index dd7268b6b..4c51ab3e8 100644
--- a/src/api/models/ReviewsSummary.py
+++ b/src/api/models/ReviewsSummary.py
@@ -1,7 +1,7 @@
from pydantic import Field
from pydantic import field_validator
-from api.models.ConfiguredModel import ConfiguredModel
+from src.api.models.ConfiguredModel import ConfiguredModel
class ReviewsSummary(ConfiguredModel):
diff --git a/src/api/parsers/CoopResultParser.py b/src/api/parsers/CoopResultParser.py
index c9786db25..ef226c98a 100644
--- a/src/api/parsers/CoopResultParser.py
+++ b/src/api/parsers/CoopResultParser.py
@@ -1,4 +1,4 @@
-from api.models.CoopResult import CoopResult
+from src.api.models.CoopResult import CoopResult
class CoopResultParser:
diff --git a/src/api/parsers/CoopScenarioParser.py b/src/api/parsers/CoopScenarioParser.py
index 8f269ce1f..f72b4d1ab 100644
--- a/src/api/parsers/CoopScenarioParser.py
+++ b/src/api/parsers/CoopScenarioParser.py
@@ -1,4 +1,4 @@
-from api.models.CoopScenario import CoopScenario
+from src.api.models.CoopScenario import CoopScenario
class CoopScenarioParser:
diff --git a/src/api/parsers/FeaturedModFileParser.py b/src/api/parsers/FeaturedModFileParser.py
index ef55a1395..3e27b8f72 100644
--- a/src/api/parsers/FeaturedModFileParser.py
+++ b/src/api/parsers/FeaturedModFileParser.py
@@ -1,4 +1,4 @@
-from api.models.FeaturedModFile import FeaturedModFile
+from src.api.models.FeaturedModFile import FeaturedModFile
class FeaturedModFileParser:
diff --git a/src/api/parsers/FeaturedModParser.py b/src/api/parsers/FeaturedModParser.py
index da95bdac8..96225e1e7 100644
--- a/src/api/parsers/FeaturedModParser.py
+++ b/src/api/parsers/FeaturedModParser.py
@@ -1,4 +1,4 @@
-from api.models.FeaturedMod import FeaturedMod
+from src.api.models.FeaturedMod import FeaturedMod
class FeaturedModParser:
diff --git a/src/api/parsers/GeneratedMapParamsParser.py b/src/api/parsers/GeneratedMapParamsParser.py
index 43b50c2b4..878fd8f8a 100644
--- a/src/api/parsers/GeneratedMapParamsParser.py
+++ b/src/api/parsers/GeneratedMapParamsParser.py
@@ -1,5 +1,5 @@
-from api.models.Map import Map
from src.api.models.GeneratedMapParams import GeneratedMapParams
+from src.api.models.Map import Map
class GeneratedMapParamsParser:
diff --git a/src/api/parsers/LeaderboardParser.py b/src/api/parsers/LeaderboardParser.py
index 9cbb0f6fc..78a68dfbf 100644
--- a/src/api/parsers/LeaderboardParser.py
+++ b/src/api/parsers/LeaderboardParser.py
@@ -1,6 +1,6 @@
from operator import methodcaller
-from api.models.Leaderboard import Leaderboard
+from src.api.models.Leaderboard import Leaderboard
class LeaderboardParser:
diff --git a/src/api/parsers/LeaderboardRatingJournalParser.py b/src/api/parsers/LeaderboardRatingJournalParser.py
index c83037499..9fd7b126c 100644
--- a/src/api/parsers/LeaderboardRatingJournalParser.py
+++ b/src/api/parsers/LeaderboardRatingJournalParser.py
@@ -1,4 +1,4 @@
-from api.models.LeaderboardRatingJournal import LeaderboardRatingJournal
+from src.api.models.LeaderboardRatingJournal import LeaderboardRatingJournal
class LeaderboardRatingJournalParser:
diff --git a/src/api/parsers/LeaderboardRatingParser.py b/src/api/parsers/LeaderboardRatingParser.py
index 2ab1200cb..221c98ea2 100644
--- a/src/api/parsers/LeaderboardRatingParser.py
+++ b/src/api/parsers/LeaderboardRatingParser.py
@@ -1,4 +1,4 @@
-from api.models.LeaderboardRating import LeaderboardRating
+from src.api.models.LeaderboardRating import LeaderboardRating
class LeaderboardRatingParser:
diff --git a/src/api/parsers/MapParser.py b/src/api/parsers/MapParser.py
index f8c063b9c..9cc2e01c2 100644
--- a/src/api/parsers/MapParser.py
+++ b/src/api/parsers/MapParser.py
@@ -1,5 +1,5 @@
-from api.models.Map import Map
-from api.models.MapVersion import MapVersion
+from src.api.models.Map import Map
+from src.api.models.MapVersion import MapVersion
class MapParser:
diff --git a/src/api/parsers/MapPoolAssignmentParser.py b/src/api/parsers/MapPoolAssignmentParser.py
index 8b2448bff..56fca167a 100644
--- a/src/api/parsers/MapPoolAssignmentParser.py
+++ b/src/api/parsers/MapPoolAssignmentParser.py
@@ -1,6 +1,6 @@
-from api.models.Map import Map
-from api.models.MapPoolAssignment import MapPoolAssignment
-from api.parsers.MapParser import MapParser
+from src.api.models.Map import Map
+from src.api.models.MapPoolAssignment import MapPoolAssignment
+from src.api.parsers.MapParser import MapParser
class MapPoolAssignmentParser:
diff --git a/src/api/parsers/MapVersionParser.py b/src/api/parsers/MapVersionParser.py
index f603950d6..64f9c6bf3 100644
--- a/src/api/parsers/MapVersionParser.py
+++ b/src/api/parsers/MapVersionParser.py
@@ -1,4 +1,4 @@
-from api.models.MapVersion import MapVersion
+from src.api.models.MapVersion import MapVersion
class MapVersionParser:
diff --git a/src/api/parsers/ModParser.py b/src/api/parsers/ModParser.py
index b97711728..3d4950f4d 100644
--- a/src/api/parsers/ModParser.py
+++ b/src/api/parsers/ModParser.py
@@ -1,4 +1,4 @@
-from api.models.Mod import Mod
+from src.api.models.Mod import Mod
class ModParser:
diff --git a/src/api/parsers/ModVersionParser.py b/src/api/parsers/ModVersionParser.py
index d572046bd..3399dc656 100644
--- a/src/api/parsers/ModVersionParser.py
+++ b/src/api/parsers/ModVersionParser.py
@@ -1,4 +1,4 @@
-from api.models.ModVersion import ModVersion
+from src.api.models.ModVersion import ModVersion
class ModVersionParser:
diff --git a/src/api/parsers/PlayerParser.py b/src/api/parsers/PlayerParser.py
index cead4158a..15d06495e 100644
--- a/src/api/parsers/PlayerParser.py
+++ b/src/api/parsers/PlayerParser.py
@@ -1,4 +1,4 @@
-from api.models.Player import Player
+from src.api.models.Player import Player
class PlayerParser:
diff --git a/src/api/parsers/ReviewsSummaryParser.py b/src/api/parsers/ReviewsSummaryParser.py
index cabb60c57..17803d4dd 100644
--- a/src/api/parsers/ReviewsSummaryParser.py
+++ b/src/api/parsers/ReviewsSummaryParser.py
@@ -1,4 +1,4 @@
-from api.models.ReviewsSummary import ReviewsSummary
+from src.api.models.ReviewsSummary import ReviewsSummary
class ReviewsSummaryParser:
diff --git a/src/api/player_api.py b/src/api/player_api.py
index 5270ea19d..957152c0f 100644
--- a/src/api/player_api.py
+++ b/src/api/player_api.py
@@ -2,8 +2,8 @@
from PyQt6.QtCore import pyqtSignal
-from api.ApiAccessors import DataApiAccessor
-from api.models.Player import Player
+from src.api.ApiAccessors import DataApiAccessor
+from src.api.models.Player import Player
logger = logging.getLogger(__name__)
diff --git a/src/api/replaysapi.py b/src/api/replaysapi.py
index a9a8e99b7..1ff3cb9d8 100644
--- a/src/api/replaysapi.py
+++ b/src/api/replaysapi.py
@@ -1,6 +1,6 @@
import logging
-from api.ApiAccessors import DataApiAccessor
+from src.api.ApiAccessors import DataApiAccessor
logger = logging.getLogger(__name__)
diff --git a/src/api/sim_mod_updater.py b/src/api/sim_mod_updater.py
index 9b5bacbd2..0f4db40b2 100644
--- a/src/api/sim_mod_updater.py
+++ b/src/api/sim_mod_updater.py
@@ -1,6 +1,6 @@
import logging
-from api.ApiAccessors import DataApiAccessor
+from src.api.ApiAccessors import DataApiAccessor
logger = logging.getLogger(__name__)
diff --git a/src/api/stats_api.py b/src/api/stats_api.py
index d0a2bd6db..3dcd5e952 100644
--- a/src/api/stats_api.py
+++ b/src/api/stats_api.py
@@ -5,15 +5,15 @@
from PyQt6.QtCore import Qt
from PyQt6.QtCore import pyqtSignal
-from api.ApiAccessors import ApiAccessor
-from api.ApiAccessors import DataApiAccessor
-from api.models.Achievement import Achievement
-from api.models.Leaderboard import Leaderboard
-from api.models.LeagueSeasonScore import LeagueSeasonScore
-from api.models.PlayerAchievement import PlayerAchievement
-from api.models.PlayerEvent import PlayerEvent
-from api.parsers.LeaderboardParser import LeaderboardParser
-from api.parsers.LeaderboardRatingParser import LeaderboardRatingParser
+from src.api.ApiAccessors import ApiAccessor
+from src.api.ApiAccessors import DataApiAccessor
+from src.api.models.Achievement import Achievement
+from src.api.models.Leaderboard import Leaderboard
+from src.api.models.LeagueSeasonScore import LeagueSeasonScore
+from src.api.models.PlayerAchievement import PlayerAchievement
+from src.api.models.PlayerEvent import PlayerEvent
+from src.api.parsers.LeaderboardParser import LeaderboardParser
+from src.api.parsers.LeaderboardRatingParser import LeaderboardRatingParser
logger = logging.getLogger(__name__)
diff --git a/src/api/vaults_api.py b/src/api/vaults_api.py
index 271e7871c..6b8fec1c8 100644
--- a/src/api/vaults_api.py
+++ b/src/api/vaults_api.py
@@ -1,10 +1,10 @@
import logging
from collections.abc import Sequence
-from api.ApiAccessors import DataApiAccessor
-from api.parsers.MapParser import MapParser
-from api.parsers.MapPoolAssignmentParser import MapPoolAssignmentParser
-from api.parsers.ModParser import ModParser
+from src.api.ApiAccessors import DataApiAccessor
+from src.api.parsers.MapParser import MapParser
+from src.api.parsers.MapPoolAssignmentParser import MapPoolAssignmentParser
+from src.api.parsers.ModParser import ModParser
logger = logging.getLogger(__name__)
diff --git a/src/chat/__init__.py b/src/chat/__init__.py
index 745895151..4f7c6d3fa 100644
--- a/src/chat/__init__.py
+++ b/src/chat/__init__.py
@@ -1,7 +1,7 @@
# CAVEAT: DO NOT REMOVE! These are promoted widgets and py2exe wouldn't
# include them otherwise
-from chat.chatlineedit import ChatLineEdit
-from chat.chatterlistview import ChatterListView
+from src.chat.chatlineedit import ChatLineEdit
+from src.chat.chatterlistview import ChatterListView
__all__ = (
"ChatLineEdit",
diff --git a/src/chat/_avatarWidget.py b/src/chat/_avatarWidget.py
index 29b711b3d..498006a9b 100644
--- a/src/chat/_avatarWidget.py
+++ b/src/chat/_avatarWidget.py
@@ -4,7 +4,7 @@
from PyQt6.QtWidgets import QListWidgetItem
from PyQt6.QtWidgets import QPushButton
-from downloadManager import DownloadRequest
+from src.downloadManager import DownloadRequest
class AvatarWidget(QObject):
diff --git a/src/chat/channel_autojoiner.py b/src/chat/channel_autojoiner.py
index 307d7dd1b..dcf7a4a11 100644
--- a/src/chat/channel_autojoiner.py
+++ b/src/chat/channel_autojoiner.py
@@ -1,5 +1,5 @@
-from chat.lang import DEFAULT_LANGUAGE_CHANNELS
-from util.lang import COUNTRY_TO_LANGUAGE
+from src.chat.lang import DEFAULT_LANGUAGE_CHANNELS
+from src.util.lang import COUNTRY_TO_LANGUAGE
class ChannelAutojoiner:
diff --git a/src/chat/channel_tab.py b/src/chat/channel_tab.py
index 1208c4cf0..64db4b311 100644
--- a/src/chat/channel_tab.py
+++ b/src/chat/channel_tab.py
@@ -3,7 +3,7 @@
from PyQt6.QtCore import QTimer
from PyQt6.QtMultimedia import QSoundEffect
-from chat.chat_widget import TabIcon
+from src.chat.chat_widget import TabIcon
class TabInfo(IntEnum):
diff --git a/src/chat/channel_view.py b/src/chat/channel_view.py
index 2d420dd50..f8ab29861 100644
--- a/src/chat/channel_view.py
+++ b/src/chat/channel_view.py
@@ -6,21 +6,21 @@
from PyQt6.QtCore import pyqtSignal
from PyQt6.QtGui import QDesktopServices
-from chat.channel_tab import TabInfo
-from chat.channel_widget import ChannelWidget
-from chat.chatter_menu import ChatterMenu
-from chat.chatter_model import ChatterEventFilter
-from chat.chatter_model import ChatterFormat
-from chat.chatter_model import ChatterItemDelegate
-from chat.chatter_model import ChatterLayout
-from chat.chatter_model import ChatterLayoutElements
-from chat.chatter_model import ChatterModel
-from chat.chatter_model import ChatterSortFilterModel
-from downloadManager import DownloadRequest
-from model.chat.channel import ChannelType
-from model.chat.chatline import ChatLineType
-from util import irc_escape
-from util.gameurl import GameUrl
+from src.chat.channel_tab import TabInfo
+from src.chat.channel_widget import ChannelWidget
+from src.chat.chatter_menu import ChatterMenu
+from src.chat.chatter_model import ChatterEventFilter
+from src.chat.chatter_model import ChatterFormat
+from src.chat.chatter_model import ChatterItemDelegate
+from src.chat.chatter_model import ChatterLayout
+from src.chat.chatter_model import ChatterLayoutElements
+from src.chat.chatter_model import ChatterModel
+from src.chat.chatter_model import ChatterSortFilterModel
+from src.downloadManager import DownloadRequest
+from src.model.chat.channel import ChannelType
+from src.model.chat.chatline import ChatLineType
+from src.util import irc_escape
+from src.util.gameurl import GameUrl
class ChannelView:
diff --git a/src/chat/channel_widget.py b/src/chat/channel_widget.py
index b67cea2e7..ecbbc074a 100644
--- a/src/chat/channel_widget.py
+++ b/src/chat/channel_widget.py
@@ -8,7 +8,7 @@
from PyQt6.QtGui import QTextCursor
from PyQt6.QtGui import QTextDocument
-from qt.utils import monkeypatch_method
+from src.qt.utils import monkeypatch_method
logger = logging.getLogger(__name__)
diff --git a/src/chat/chat_announcer.py b/src/chat/chat_announcer.py
index e9ad8e6c0..04645d9b2 100644
--- a/src/chat/chat_announcer.py
+++ b/src/chat/chat_announcer.py
@@ -1,5 +1,7 @@
-from model.chat.channel import ChannelID, ChannelType
-from model.chat.chatline import ChatLine, ChatLineType
+from src.model.chat.channel import ChannelID
+from src.model.chat.channel import ChannelType
+from src.model.chat.chatline import ChatLine
+from src.model.chat.chatline import ChatLineType
class ChatAnnouncer:
diff --git a/src/chat/chat_controller.py b/src/chat/chat_controller.py
index 0b97ec36f..05be4eae7 100644
--- a/src/chat/chat_controller.py
+++ b/src/chat/chat_controller.py
@@ -3,14 +3,14 @@
from PyQt6.QtCore import QObject
from PyQt6.QtCore import pyqtSignal
-from model.chat.channel import Channel
-from model.chat.channel import ChannelID
-from model.chat.channel import ChannelType
-from model.chat.channel import Lines
-from model.chat.channelchatter import ChannelChatter
-from model.chat.chatline import ChatLine
-from model.chat.chatline import ChatLineType
-from model.chat.chatter import Chatter
+from src.model.chat.channel import Channel
+from src.model.chat.channel import ChannelID
+from src.model.chat.channel import ChannelType
+from src.model.chat.channel import Lines
+from src.model.chat.channelchatter import ChannelChatter
+from src.model.chat.chatline import ChatLine
+from src.model.chat.chatline import ChatLineType
+from src.model.chat.chatter import Chatter
class ChatController(QObject):
diff --git a/src/chat/chat_greeter.py b/src/chat/chat_greeter.py
index bcf0b980c..2c21c267c 100644
--- a/src/chat/chat_greeter.py
+++ b/src/chat/chat_greeter.py
@@ -1,6 +1,7 @@
-from model.chat.channel import ChannelType
-from model.chat.chatline import ChatLine, ChatLineType
-from util import irc_escape
+from src.model.chat.channel import ChannelType
+from src.model.chat.chatline import ChatLine
+from src.model.chat.chatline import ChatLineType
+from src.util import irc_escape
class ChatGreeter:
diff --git a/src/chat/chat_view.py b/src/chat/chat_view.py
index 2bed55bd1..fe2bbdf64 100644
--- a/src/chat/chat_view.py
+++ b/src/chat/chat_view.py
@@ -1,7 +1,7 @@
-from chat.channel_tab import ChannelTab
-from chat.channel_view import ChannelView
-from chat.chat_widget import ChatWidget
-from model.chat.channel import ChannelType
+from src.chat.channel_tab import ChannelTab
+from src.chat.channel_view import ChannelView
+from src.chat.chat_widget import ChatWidget
+from src.model.chat.channel import ChannelType
class ChatView:
diff --git a/src/chat/chat_widget.py b/src/chat/chat_widget.py
index 308b08ded..a20a345be 100644
--- a/src/chat/chat_widget.py
+++ b/src/chat/chat_widget.py
@@ -5,8 +5,8 @@
from PyQt6.QtWidgets import QApplication
from PyQt6.QtWidgets import QTabBar
-from model.chat.channel import PARTY_CHANNEL_SUFFIX
-from model.chat.channel import ChannelType
+from src.model.chat.channel import PARTY_CHANNEL_SUFFIX
+from src.model.chat.channel import ChannelType
class TabIcon(Enum):
diff --git a/src/chat/chatter_menu.py b/src/chat/chatter_menu.py
index 5645ea671..0f952bff0 100644
--- a/src/chat/chatter_menu.py
+++ b/src/chat/chatter_menu.py
@@ -6,15 +6,15 @@
from PyQt6.QtWidgets import QWidget
-from chat._avatarWidget import AvatarWidget
-from client.aliasviewer import AliasWindow
-from client.user import User
-from contextmenu.playercontextmenu import PlayerContextMenu
-from fa.game_runner import GameRunner
-from power import PowerTools
+from src.chat._avatarWidget import AvatarWidget
+from src.client.aliasviewer import AliasWindow
+from src.client.user import User
+from src.contextmenu.playercontextmenu import PlayerContextMenu
+from src.fa.game_runner import GameRunner
+from src.power import PowerTools
if TYPE_CHECKING:
- from client._clientwindow import ClientWindow
+ from src.client._clientwindow import ClientWindow
logger = logging.getLogger(__name__)
diff --git a/src/chat/chatter_model.py b/src/chat/chatter_model.py
index 3917bd249..5347a1238 100644
--- a/src/chat/chatter_model.py
+++ b/src/chat/chatter_model.py
@@ -13,15 +13,15 @@
from PyQt6.QtGui import QColor
from PyQt6.QtGui import QIcon
-import util
-from chat.chatter_model_item import ChatterModelItem
-from chat.chatterlistview import ChatterListView
-from chat.gameinfo import SensitiveMapInfoChecker
-from fa import maps
-from model.game import GameState
-from model.rating import RatingType
-from qt.itemviews.styleditemdelegate import StyledItemDelegate
-from qt.models.qtlistmodel import QtListModel
+from src import util
+from src.chat.chatter_model_item import ChatterModelItem
+from src.chat.chatterlistview import ChatterListView
+from src.chat.gameinfo import SensitiveMapInfoChecker
+from src.fa import maps
+from src.model.game import GameState
+from src.model.rating import RatingType
+from src.qt.itemviews.styleditemdelegate import StyledItemDelegate
+from src.qt.models.qtlistmodel import QtListModel
class ChatterModel(QtListModel):
diff --git a/src/chat/chatter_model_item.py b/src/chat/chatter_model_item.py
index 3e980061c..ef3db317c 100644
--- a/src/chat/chatter_model_item.py
+++ b/src/chat/chatter_model_item.py
@@ -3,8 +3,8 @@
from PyQt6.QtCore import QObject
from PyQt6.QtCore import pyqtSignal
-from downloadManager import DownloadRequest
-from fa import maps
+from src.downloadManager import DownloadRequest
+from src.fa import maps
class ChatterModelItem(QObject):
diff --git a/src/chat/gameinfo.py b/src/chat/gameinfo.py
index 857525c64..e807143d3 100644
--- a/src/chat/gameinfo.py
+++ b/src/chat/gameinfo.py
@@ -1,6 +1,6 @@
from PyQt6.QtCore import QObject
-from model.game import GameState
+from src.model.game import GameState
class SensitiveMapInfoChecker(QObject):
diff --git a/src/chat/ircconnection.py b/src/chat/ircconnection.py
index 9ce80644f..35fbf9fcc 100644
--- a/src/chat/ircconnection.py
+++ b/src/chat/ircconnection.py
@@ -12,15 +12,15 @@
from PyQt6.QtCore import QObject
from PyQt6.QtCore import pyqtSignal
-import config
-import util
-from api.ApiAccessors import UserApiAccessor
-from chat.socketadapter import ConnectionFactory
-from chat.socketadapter import ReactorForSocketAdapter
-from model.chat.channel import ChannelID
-from model.chat.channel import ChannelType
-from model.chat.chatline import ChatLine
-from model.chat.chatline import ChatLineType
+from src import config
+from src import util
+from src.api.ApiAccessors import UserApiAccessor
+from src.chat.socketadapter import ConnectionFactory
+from src.chat.socketadapter import ReactorForSocketAdapter
+from src.model.chat.channel import ChannelID
+from src.model.chat.channel import ChannelType
+from src.model.chat.chatline import ChatLine
+from src.model.chat.chatline import ChatLineType
logger = logging.getLogger(__name__)
IRC_ELEVATION = '%@~%+&'
diff --git a/src/chat/language_channel_config.py b/src/chat/language_channel_config.py
index 6f2588152..11ad86973 100644
--- a/src/chat/language_channel_config.py
+++ b/src/chat/language_channel_config.py
@@ -1,7 +1,7 @@
from PyQt6.QtCore import QAbstractListModel
from PyQt6.QtCore import Qt
-from chat.lang import LANGUAGE_CHANNELS
+from src.chat.lang import LANGUAGE_CHANNELS
class ChannelEntry:
diff --git a/src/client/__init__.py b/src/client/__init__.py
index 1cb67b3b6..fa8ccc0c1 100644
--- a/src/client/__init__.py
+++ b/src/client/__init__.py
@@ -1,7 +1,7 @@
import logging
# Do not remove - promoted widget, py2exe does not include it otherwise
-from client.theme_menu import ThemeMenu
+from src.client.theme_menu import ThemeMenu
from ._clientwindow import ClientWindow
diff --git a/src/client/_clientwindow.py b/src/client/_clientwindow.py
index fbb0862e8..d791450ce 100644
--- a/src/client/_clientwindow.py
+++ b/src/client/_clientwindow.py
@@ -7,78 +7,78 @@
from PyQt6 import QtWidgets
from PyQt6.QtNetwork import QNetworkAccessManager
-import config
-import fa
-import notifications as ns
-import util
-import util.crash
-from chat import ChatMVC
-from chat._avatarWidget import AvatarWidget
-from chat.channel_autojoiner import ChannelAutojoiner
-from chat.chat_announcer import ChatAnnouncer
-from chat.chat_controller import ChatController
-from chat.chat_greeter import ChatGreeter
-from chat.chat_view import ChatView
-from chat.chatter_model import ChatterLayoutElements
-from chat.ircconnection import IrcConnection
-from chat.language_channel_config import LanguageChannelConfig
-from chat.line_restorer import ChatLineRestorer
-from client.aliasviewer import AliasSearchWindow
-from client.aliasviewer import AliasWindow
-from client.chat_config import ChatConfig
-from client.clientstate import ClientState
-from client.connection import ConnectionState
-from client.connection import Dispatcher
-from client.connection import LobbyInfo
-from client.connection import ServerConnection
-from client.connection import ServerReconnecter
-from client.gameannouncer import GameAnnouncer
-from client.login import LoginWidget
-from client.playercolors import PlayerColors
-from client.theme_menu import ThemeMenu
-from client.user import User
-from client.user import UserRelationController
-from client.user import UserRelationModel
-from client.user import UserRelations
-from client.user import UserRelationTrackers
-from connectivity.ConnectivityDialog import ConnectivityDialog
-from contextmenu.playercontextmenu import PlayerContextMenu
-from coop import CoopWidget
-from downloadManager import ImageDownloader
-from downloadManager import MapSmallPreviewDownloader
-from fa.factions import Factions
-from fa.game_runner import GameRunner
-from fa.game_session import GameSession
-from fa.maps import getUserMapsFolder
-from games import GamesWidget
-from games.gameitem import GameViewBuilder
-from games.gamemodel import GameModel
-from games.hostgamewidget import build_launcher
-from mapGenerator.mapgenManager import MapGeneratorManager
-from model.chat.channel import ChannelID
-from model.chat.channel import ChannelType
-from model.chat.chat import Chat
-from model.chat.chatline import ChatLineMetadataBuilder
-from model.gameset import Gameset
-from model.gameset import PlayerGameIndex
-from model.player import Player
-from model.playerset import Playerset
-from model.rating import MatchmakerQueueType
-from model.rating import RatingType
-from news import NewsWidget
-from oauth.oauth_flow import OAuth2FlowInstance
-from power import PowerTools
-from replays import ReplaysWidget
-from secondaryServer import SecondaryServer
-from stats import StatsWidget
-from ui.busy_widget import BusyWidget
-from ui.status_logo import StatusLogo
-from unitdb.unitdbtab import UnitDBTab
-from updater import ClientUpdateTools
-from vaults.mapvault.mapvault import MapVault
-from vaults.modvault.modvault import ModVault
-from vaults.modvault.utils import getModFolder
-from vaults.modvault.utils import setModFolder
+import src.notifications as ns
+from src import config
+from src import fa
+from src import util
+from src.chat import ChatMVC
+from src.chat._avatarWidget import AvatarWidget
+from src.chat.channel_autojoiner import ChannelAutojoiner
+from src.chat.chat_announcer import ChatAnnouncer
+from src.chat.chat_controller import ChatController
+from src.chat.chat_greeter import ChatGreeter
+from src.chat.chat_view import ChatView
+from src.chat.chatter_model import ChatterLayoutElements
+from src.chat.ircconnection import IrcConnection
+from src.chat.language_channel_config import LanguageChannelConfig
+from src.chat.line_restorer import ChatLineRestorer
+from src.client.aliasviewer import AliasSearchWindow
+from src.client.aliasviewer import AliasWindow
+from src.client.chat_config import ChatConfig
+from src.client.clientstate import ClientState
+from src.client.connection import ConnectionState
+from src.client.connection import Dispatcher
+from src.client.connection import LobbyInfo
+from src.client.connection import ServerConnection
+from src.client.connection import ServerReconnecter
+from src.client.gameannouncer import GameAnnouncer
+from src.client.login import LoginWidget
+from src.client.playercolors import PlayerColors
+from src.client.theme_menu import ThemeMenu
+from src.client.user import User
+from src.client.user import UserRelationController
+from src.client.user import UserRelationModel
+from src.client.user import UserRelations
+from src.client.user import UserRelationTrackers
+from src.connectivity.ConnectivityDialog import ConnectivityDialog
+from src.contextmenu.playercontextmenu import PlayerContextMenu
+from src.coop import CoopWidget
+from src.downloadManager import ImageDownloader
+from src.downloadManager import MapSmallPreviewDownloader
+from src.fa.factions import Factions
+from src.fa.game_runner import GameRunner
+from src.fa.game_session import GameSession
+from src.fa.maps import getUserMapsFolder
+from src.games import GamesWidget
+from src.games.gameitem import GameViewBuilder
+from src.games.gamemodel import GameModel
+from src.games.hostgamewidget import build_launcher
+from src.mapGenerator.mapgenManager import MapGeneratorManager
+from src.model.chat.channel import ChannelID
+from src.model.chat.channel import ChannelType
+from src.model.chat.chat import Chat
+from src.model.chat.chatline import ChatLineMetadataBuilder
+from src.model.gameset import Gameset
+from src.model.gameset import PlayerGameIndex
+from src.model.player import Player
+from src.model.playerset import Playerset
+from src.model.rating import MatchmakerQueueType
+from src.model.rating import RatingType
+from src.news import NewsWidget
+from src.oauth.oauth_flow import OAuth2FlowInstance
+from src.power import PowerTools
+from src.replays import ReplaysWidget
+from src.secondaryServer import SecondaryServer
+from src.stats import StatsWidget
+from src.ui.busy_widget import BusyWidget
+from src.ui.status_logo import StatusLogo
+from src.unitdb.unitdbtab import UnitDBTab
+from src.updater import ClientUpdateTools
+from src.util import crash
+from src.vaults.mapvault.mapvault import MapVault
+from src.vaults.modvault.modvault import ModVault
+from src.vaults.modvault.utils import getModFolder
+from src.vaults.modvault.utils import setModFolder
from .mouse_position import MousePosition
@@ -1713,7 +1713,7 @@ def handle_welcome(self, message):
self.me.onLogin(self.login, self.id)
logger.info("Login success")
- util.crash.CRASH_REPORT_USER = self.login
+ crash.CRASH_REPORT_USER = self.login
self.update_options()
diff --git a/src/client/aliasviewer.py b/src/client/aliasviewer.py
index bcc541d78..d18954592 100644
--- a/src/client/aliasviewer.py
+++ b/src/client/aliasviewer.py
@@ -5,7 +5,7 @@
from PyQt6.QtCore import Qt
from PyQt6.QtCore import QTimer
-from api.player_api import PlayerApiConnector
+from src.api.player_api import PlayerApiConnector
logger = logging.getLogger(__name__)
diff --git a/src/client/chat_config.py b/src/client/chat_config.py
index ab153652c..34b938ee3 100644
--- a/src/client/chat_config.py
+++ b/src/client/chat_config.py
@@ -1,7 +1,7 @@
from PyQt6 import QtCore
-from chat.chatter_model import ChatterLayoutElements
-from client.user import SignallingSet # TODO - move to util
+from src.chat.chatter_model import ChatterLayoutElements
+from src.client.user import SignallingSet # TODO - move to util
def signal_property(public):
diff --git a/src/client/connection.py b/src/client/connection.py
index 30339ece9..e935d0bba 100644
--- a/src/client/connection.py
+++ b/src/client/connection.py
@@ -11,11 +11,11 @@
from PyQt6.QtCore import QUrl
from PyQt6.QtWebSockets import QWebSocket
-import fa
-from api.ApiAccessors import UserApiAccessor
-from config import Settings
-from model.game import Game
-from model.game import message_to_game_args
+from src import fa
+from src.api.ApiAccessors import UserApiAccessor
+from src.config import Settings
+from src.model.game import Game
+from src.model.game import message_to_game_args
logger = logging.getLogger(__name__)
diff --git a/src/client/gameannouncer.py b/src/client/gameannouncer.py
index 5215183da..848b70d48 100644
--- a/src/client/gameannouncer.py
+++ b/src/client/gameannouncer.py
@@ -2,11 +2,11 @@
from PyQt6.QtCore import QTimer
from PyQt6.QtCore import pyqtSignal
-from client.playercolors import PlayerColors
-from client.user import UserRelations
-from fa import maps
-from model.game import GameState
-from model.gameset import Gameset
+from src.client.playercolors import PlayerColors
+from src.client.user import UserRelations
+from src.fa import maps
+from src.model.game import GameState
+from src.model.gameset import Gameset
class GameAnnouncer(QObject):
diff --git a/src/client/login.py b/src/client/login.py
index f6b50a28c..8a2a30522 100644
--- a/src/client/login.py
+++ b/src/client/login.py
@@ -3,11 +3,11 @@
from PyQt6 import QtCore
from PyQt6 import QtGui
-import config
-import util
-from config import Settings
-from config.production import default_values as main_environment
-from config.testing import default_values as testing_environment
+from src import config
+from src import util
+from src.config import Settings
+from src.config.production import default_values as main_environment
+from src.config.testing import default_values as testing_environment
logger = logging.getLogger(__name__)
diff --git a/src/client/theme_menu.py b/src/client/theme_menu.py
index 065360867..bcf209e79 100644
--- a/src/client/theme_menu.py
+++ b/src/client/theme_menu.py
@@ -3,8 +3,8 @@
from PyQt6.QtWidgets import QPushButton
from PyQt6.QtWidgets import QStyleFactory
-import util
-from config import Settings
+from src import util
+from src.config import Settings
FormClass, BaseClass = util.THEME.loadUiType("client/change_style.ui")
diff --git a/src/config/__init__.py b/src/config/__init__.py
index 258749839..6fd8adca5 100644
--- a/src/config/__init__.py
+++ b/src/config/__init__.py
@@ -9,11 +9,11 @@
from PyQt6 import QtCore
-import fafpath
-from config import version
-from config.develop import default_values as develop_defaults
-from config.production import default_values as production_defaults
-from config.testing import default_values as testing_defaults
+from src import fafpath
+from src.config import version
+from src.config.develop import default_values as develop_defaults
+from src.config.production import default_values as production_defaults
+from src.config.testing import default_values as testing_defaults
if sys.platform == 'win32':
import ctypes
diff --git a/src/connectivity/ConnectivityDialog.py b/src/connectivity/ConnectivityDialog.py
index 2c3aad6fa..74b5a92c3 100644
--- a/src/connectivity/ConnectivityDialog.py
+++ b/src/connectivity/ConnectivityDialog.py
@@ -6,10 +6,10 @@
from PyQt6.QtWidgets import QInputDialog
from PyQt6.QtWidgets import QTableWidgetItem
-import client as clientwindow
-from connectivity.IceAdapterClient import IceAdapterClient
-from decorators import with_logger
-from util import THEME
+from src import client as clientwindow
+from src.connectivity.IceAdapterClient import IceAdapterClient
+from src.decorators import with_logger
+from src.util import THEME
@with_logger
diff --git a/src/connectivity/IceAdapterClient.py b/src/connectivity/IceAdapterClient.py
index b51e6b4e0..e34dc7a08 100644
--- a/src/connectivity/IceAdapterClient.py
+++ b/src/connectivity/IceAdapterClient.py
@@ -2,10 +2,10 @@
from PyQt6.QtCore import pyqtSignal
-import client
-from client.connection import ConnectionState
-from connectivity.JsonRpcTcpClient import JsonRpcTcpClient
-from decorators import with_logger
+from src import client
+from src.client.connection import ConnectionState
+from src.connectivity.JsonRpcTcpClient import JsonRpcTcpClient
+from src.decorators import with_logger
@with_logger
diff --git a/src/connectivity/IceAdapterProcess.py b/src/connectivity/IceAdapterProcess.py
index d513aeefa..c3339dc6c 100644
--- a/src/connectivity/IceAdapterProcess.py
+++ b/src/connectivity/IceAdapterProcess.py
@@ -7,9 +7,9 @@
from PyQt6.QtNetwork import QTcpServer
from PyQt6.QtWidgets import QMessageBox
-import fafpath
-from config import Settings
-from decorators import with_logger
+from src import fafpath
+from src.config import Settings
+from src.decorators import with_logger
@with_logger
diff --git a/src/connectivity/IceServersPoller.py b/src/connectivity/IceServersPoller.py
index 1e10eb96c..9486bb9f0 100644
--- a/src/connectivity/IceServersPoller.py
+++ b/src/connectivity/IceServersPoller.py
@@ -1,9 +1,9 @@
from PyQt6.QtCore import QObject
from PyQt6.QtCore import pyqtSignal
-from api.ApiAccessors import ApiAccessor
-from connectivity.IceAdapterClient import IceAdapterClient
-from decorators import with_logger
+from src.api.ApiAccessors import ApiAccessor
+from src.connectivity.IceAdapterClient import IceAdapterClient
+from src.decorators import with_logger
@with_logger
diff --git a/src/connectivity/JsonRpcTcpClient.py b/src/connectivity/JsonRpcTcpClient.py
index bf4f86858..a27b8f267 100644
--- a/src/connectivity/JsonRpcTcpClient.py
+++ b/src/connectivity/JsonRpcTcpClient.py
@@ -5,7 +5,7 @@
from PyQt6.QtNetwork import QAbstractSocket
from PyQt6.QtNetwork import QTcpSocket
-from decorators import with_logger
+from src.decorators import with_logger
@with_logger
diff --git a/src/contextmenu/playercontextmenu.py b/src/contextmenu/playercontextmenu.py
index df6397593..77824cc61 100644
--- a/src/contextmenu/playercontextmenu.py
+++ b/src/contextmenu/playercontextmenu.py
@@ -11,17 +11,17 @@
from PyQt6.QtWidgets import QMenu
from PyQt6.QtWidgets import QWidget
-from chat._avatarWidget import AvatarWidget
-from client.aliasviewer import AliasWindow
-from client.user import User
-from fa.game_runner import GameRunner
-from model.game import GameState
-from model.player import Player
-from playercard.playerinfodialog import PlayerInfoDialog
-from power import PowerTools
+from src.chat._avatarWidget import AvatarWidget
+from src.client.aliasviewer import AliasWindow
+from src.client.user import User
+from src.fa.game_runner import GameRunner
+from src.model.game import GameState
+from src.model.player import Player
+from src.playercard.playerinfodialog import PlayerInfoDialog
+from src.power import PowerTools
if TYPE_CHECKING:
- from client._clientwindow import ClientWindow
+ from src.client._clientwindow import ClientWindow
logger = logging.getLogger(__name__)
diff --git a/src/coop/__init__.py b/src/coop/__init__.py
index 35041c273..fbd802546 100644
--- a/src/coop/__init__.py
+++ b/src/coop/__init__.py
@@ -1,6 +1,6 @@
import logging
-from coop.cooptableview import CoopLeaderboardTableView
+from src.coop.cooptableview import CoopLeaderboardTableView
# For use by other modules
from ._coopwidget import CoopWidget
diff --git a/src/coop/_coopwidget.py b/src/coop/_coopwidget.py
index fe47bc4bc..92c1cbf91 100644
--- a/src/coop/_coopwidget.py
+++ b/src/coop/_coopwidget.py
@@ -10,27 +10,27 @@
from PyQt6.QtNetwork import QNetworkReply
from PyQt6.QtNetwork import QNetworkRequest
-import fa
-import util
-from api.coop_api import CoopApiAccessor
-from api.coop_api import CoopResultApiAccessor
-from api.models.CoopResult import CoopResult
-from api.models.CoopScenario import CoopScenario
-from coop.coopmapitem import CoopMapItem
-from coop.coopmapitem import CoopMapItemDelegate
-from coop.coopmodel import CoopGameFilterModel
-from coop.cooptableitemdelegate import CoopLeaderboardItemDelegate
-from coop.cooptablemodel import CoopLeaderBoardModel
-from fa.replay import replay
-from games.gameitem import GameViewBuilder
-from games.gamemodel import GameModel
-from games.hostgamewidget import GameLauncher
-from model.game import Game
-from qt.utils import qopen
-from ui.busy_widget import BusyWidget
+from src import fa
+from src import util
+from src.api.coop_api import CoopApiAccessor
+from src.api.coop_api import CoopResultApiAccessor
+from src.api.models.CoopResult import CoopResult
+from src.api.models.CoopScenario import CoopScenario
+from src.coop.coopmapitem import CoopMapItem
+from src.coop.coopmapitem import CoopMapItemDelegate
+from src.coop.coopmodel import CoopGameFilterModel
+from src.coop.cooptableitemdelegate import CoopLeaderboardItemDelegate
+from src.coop.cooptablemodel import CoopLeaderBoardModel
+from src.fa.replay import replay
+from src.games.gameitem import GameViewBuilder
+from src.games.gamemodel import GameModel
+from src.games.hostgamewidget import GameLauncher
+from src.model.game import Game
+from src.qt.utils import qopen
+from src.ui.busy_widget import BusyWidget
if TYPE_CHECKING:
- from client._clientwindow import ClientWindow
+ from src.client._clientwindow import ClientWindow
logger = logging.getLogger(__name__)
diff --git a/src/coop/coopmapitem.py b/src/coop/coopmapitem.py
index 2c8b32836..573514bbf 100644
--- a/src/coop/coopmapitem.py
+++ b/src/coop/coopmapitem.py
@@ -4,8 +4,8 @@
from PyQt6 import QtGui
from PyQt6 import QtWidgets
-import util
-from api.models.CoopMission import CoopMission
+from src import util
+from src.api.models.CoopMission import CoopMission
class CoopMapItemDelegate(QtWidgets.QStyledItemDelegate):
diff --git a/src/coop/coopmodel.py b/src/coop/coopmodel.py
index fca14bb16..c03d8e9b7 100644
--- a/src/coop/coopmodel.py
+++ b/src/coop/coopmodel.py
@@ -1,5 +1,5 @@
-from games.gamemodel import GameSortModel
-from model.game import GameState
+from src.games.gamemodel import GameSortModel
+from src.model.game import GameState
class CoopGameFilterModel(GameSortModel):
diff --git a/src/coop/cooptableitemdelegate.py b/src/coop/cooptableitemdelegate.py
index 04b8c2191..9b1d9db51 100644
--- a/src/coop/cooptableitemdelegate.py
+++ b/src/coop/cooptableitemdelegate.py
@@ -4,8 +4,8 @@
from PyQt6.QtWidgets import QStyle
from PyQt6.QtWidgets import QStyleOptionViewItem
-from qt.itemviews.tableitemdelegte import TableItemDelegate
-from qt.utils import qpainter
+from src.qt.itemviews.tableitemdelegte import TableItemDelegate
+from src.qt.utils import qpainter
class CoopLeaderboardItemDelegate(TableItemDelegate):
diff --git a/src/coop/cooptablemodel.py b/src/coop/cooptablemodel.py
index 7f155144b..49b5fb506 100644
--- a/src/coop/cooptablemodel.py
+++ b/src/coop/cooptablemodel.py
@@ -3,7 +3,7 @@
from PyQt6.QtCore import Qt
from PyQt6.QtCore import QUrl
-from api.models.CoopResult import CoopResult
+from src.api.models.CoopResult import CoopResult
class CoopLeaderBoardModel(QAbstractTableModel):
diff --git a/src/coop/cooptableview.py b/src/coop/cooptableview.py
index d77e7ee5b..8fae92da0 100644
--- a/src/coop/cooptableview.py
+++ b/src/coop/cooptableview.py
@@ -3,7 +3,7 @@
from PyQt6.QtCore import pyqtSignal
from PyQt6.QtGui import QMouseEvent
-from qt.itemviews.tableview import TableView
+from src.qt.itemviews.tableview import TableView
class CoopLeaderboardTableView(TableView):
diff --git a/src/downloadManager/__init__.py b/src/downloadManager/__init__.py
index a9975567f..00335d790 100644
--- a/src/downloadManager/__init__.py
+++ b/src/downloadManager/__init__.py
@@ -19,8 +19,8 @@
from PyQt6.QtNetwork import QNetworkReply
from PyQt6.QtNetwork import QNetworkRequest
-from config import Settings
-from util import AVATARS_CACHE_DIR
+from src.config import Settings
+from src.util import AVATARS_CACHE_DIR
logger = logging.getLogger(__name__)
diff --git a/src/fa/check.py b/src/fa/check.py
index d735ccc2f..9b6ba5481 100644
--- a/src/fa/check.py
+++ b/src/fa/check.py
@@ -5,19 +5,19 @@
from PyQt6 import QtWidgets
-import config
-import fa
-import util
-from fa.game_updater.misc import UpdaterResult
-from fa.game_updater.updater import Updater
-from fa.mods import checkMods
-from fa.path import validatePath
-from fa.path import writeFAPathLua
-from fa.wizards import Wizard
-from mapGenerator.mapgenUtils import isGeneratedMap
+from src import config
+from src import fa
+from src import util
+from src.fa.game_updater.misc import UpdaterResult
+from src.fa.game_updater.updater import Updater
+from src.fa.mods import checkMods
+from src.fa.path import validatePath
+from src.fa.path import writeFAPathLua
+from src.fa.wizards import Wizard
+from src.mapGenerator.mapgenUtils import isGeneratedMap
if TYPE_CHECKING:
- from client._clientwindow import ClientWindow
+ from src.client._clientwindow import ClientWindow
logger = logging.getLogger(__name__)
@@ -33,7 +33,7 @@ def map_(mapname: str, force: bool = False, silent: bool = False) -> bool:
return True
if isGeneratedMap(mapname):
- import client
+ from src import client
# FIXME: generateMap, downloadMap should also return bool
return bool(client.instance.map_generator.generateMap(mapname))
@@ -124,7 +124,7 @@ def check(
logger.info(
"Updating FA for mod: {}, version {}".format(featured_mod, version),
)
- import client # FIXME: forced by circular imports
+ from src import client # FIXME: forced by circular imports
if not path(client.instance):
return False
diff --git a/src/fa/game_connection.py b/src/fa/game_connection.py
index 57a68a294..71087ddec 100644
--- a/src/fa/game_connection.py
+++ b/src/fa/game_connection.py
@@ -5,7 +5,7 @@
from PyQt6.QtCore import QObject
from PyQt6.QtCore import pyqtSignal
-from decorators import with_logger
+from src.decorators import with_logger
@with_logger
diff --git a/src/fa/game_process.py b/src/fa/game_process.py
index db1bb0285..f078063c9 100644
--- a/src/fa/game_process.py
+++ b/src/fa/game_process.py
@@ -6,9 +6,9 @@
from PyQt6 import QtCore
from PyQt6 import QtWidgets
-import config
-import util
-from model.game import GameState
+from src import config
+from src import util
+from src.model.game import GameState
logger = logging.getLogger(__name__)
diff --git a/src/fa/game_runner.py b/src/fa/game_runner.py
index 0ff0f6a60..568508b5e 100644
--- a/src/fa/game_runner.py
+++ b/src/fa/game_runner.py
@@ -1,9 +1,9 @@
import logging
-import fa
-from fa.replay import replay
-from model.game import GameState
-from util.gameurl import GameUrl
+from src import fa
+from src.fa.replay import replay
+from src.model.game import GameState
+from src.util.gameurl import GameUrl
logger = logging.getLogger(__name__)
diff --git a/src/fa/game_session.py b/src/fa/game_session.py
index 39fa1e6d8..88934a6d8 100644
--- a/src/fa/game_session.py
+++ b/src/fa/game_session.py
@@ -5,12 +5,12 @@
from PyQt6.QtCore import QObject
from PyQt6.QtCore import pyqtSignal
-import client
-from config import setup_file_handler
-from connectivity.IceAdapterClient import IceAdapterClient
-from connectivity.IceAdapterProcess import IceAdapterProcess
-from connectivity.IceServersPoller import IceServersPoller
-from fa.game_process import instance as game_process_instance
+from src import client
+from src.config import setup_file_handler
+from src.connectivity.IceAdapterClient import IceAdapterClient
+from src.connectivity.IceAdapterProcess import IceAdapterProcess
+from src.connectivity.IceServersPoller import IceServersPoller
+from src.fa.game_process import instance as game_process_instance
logger = logging.getLogger(__name__)
# Log to a separate file to not pollute normal log with huge json dumps
diff --git a/src/fa/game_updater/patcher.py b/src/fa/game_updater/patcher.py
index 18e7ba221..d960306b7 100644
--- a/src/fa/game_updater/patcher.py
+++ b/src/fa/game_updater/patcher.py
@@ -2,7 +2,7 @@
from PyQt6.QtCore import QFile
-from qt.utils import qopen
+from src.qt.utils import qopen
logger = logging.getLogger(__name__)
diff --git a/src/fa/game_updater/updater.py b/src/fa/game_updater/updater.py
index 09d90f3c8..47bec5e54 100644
--- a/src/fa/game_updater/updater.py
+++ b/src/fa/game_updater/updater.py
@@ -20,15 +20,15 @@
from PyQt6.QtGui import QTextCursor
from PyQt6.QtWidgets import QDialog
-import util
-from downloadManager import FileDownload
-from fa.game_updater.misc import ProgressInfo
-from fa.game_updater.misc import UpdaterResult
-from fa.game_updater.misc import clear_log
-from fa.game_updater.misc import failure_dialog
-from fa.game_updater.misc import log
-from fa.game_updater.misc import timestamp
-from fa.game_updater.worker import UpdaterWorker
+from src import util
+from src.downloadManager import FileDownload
+from src.fa.game_updater.misc import ProgressInfo
+from src.fa.game_updater.misc import UpdaterResult
+from src.fa.game_updater.misc import clear_log
+from src.fa.game_updater.misc import failure_dialog
+from src.fa.game_updater.misc import log
+from src.fa.game_updater.misc import timestamp
+from src.fa.game_updater.worker import UpdaterWorker
logger = logging.getLogger(__name__)
diff --git a/src/fa/game_updater/worker.py b/src/fa/game_updater/worker.py
index 25b93eb7d..776635f3c 100644
--- a/src/fa/game_updater/worker.py
+++ b/src/fa/game_updater/worker.py
@@ -10,20 +10,20 @@
from PyQt6.QtCore import pyqtSignal
from PyQt6.QtNetwork import QNetworkAccessManager
-import util
-from api.featured_mod_api import FeaturedModApiConnector
-from api.featured_mod_api import FeaturedModFilesApiConnector
-from api.models.FeaturedMod import FeaturedMod
-from api.models.FeaturedModFile import FeaturedModFile
-from config import Settings
-from downloadManager import FileDownload
-from fa.game_updater.misc import ProgressInfo
-from fa.game_updater.misc import UpdaterCancellation
-from fa.game_updater.misc import UpdaterFailure
-from fa.game_updater.misc import UpdaterResult
-from fa.game_updater.misc import log
-from fa.game_updater.patcher import FAPatcher
-from fa.utils import unpack_movies_and_sounds
+from src import util
+from src.api.featured_mod_api import FeaturedModApiConnector
+from src.api.featured_mod_api import FeaturedModFilesApiConnector
+from src.api.models.FeaturedMod import FeaturedMod
+from src.api.models.FeaturedModFile import FeaturedModFile
+from src.config import Settings
+from src.downloadManager import FileDownload
+from src.fa.game_updater.misc import ProgressInfo
+from src.fa.game_updater.misc import UpdaterCancellation
+from src.fa.game_updater.misc import UpdaterFailure
+from src.fa.game_updater.misc import UpdaterResult
+from src.fa.game_updater.misc import log
+from src.fa.game_updater.patcher import FAPatcher
+from src.fa.utils import unpack_movies_and_sounds
logger = logging.getLogger(__name__)
diff --git a/src/fa/maps.py b/src/fa/maps.py
index 3ed4b8e38..7c36b108e 100644
--- a/src/fa/maps.py
+++ b/src/fa/maps.py
@@ -13,13 +13,11 @@
from PyQt6 import QtCore
from PyQt6 import QtGui
-# module imports
-import util
-# local imports
-from config import Settings
-from mapGenerator.mapgenUtils import isGeneratedMap
-from model.game import OFFICIAL_MAPS as maps
-from vaults.dialogs import downloadVaultAssetNoMsg
+from src import util
+from src.config import Settings
+from src.mapGenerator.mapgenUtils import isGeneratedMap
+from src.model.game import OFFICIAL_MAPS as maps
+from src.vaults.dialogs import downloadVaultAssetNoMsg
logger = logging.getLogger(__name__)
diff --git a/src/fa/mods.py b/src/fa/mods.py
index 773ba4d1d..e34d52034 100644
--- a/src/fa/mods.py
+++ b/src/fa/mods.py
@@ -2,11 +2,11 @@
from PyQt6 import QtWidgets
-import config
-from api.sim_mod_updater import SimModFiles
-from vaults.modvault.utils import downloadMod
-from vaults.modvault.utils import getInstalledMods
-from vaults.modvault.utils import setActiveMods
+from src import config
+from src.api.sim_mod_updater import SimModFiles
+from src.vaults.modvault.utils import downloadMod
+from src.vaults.modvault.utils import getInstalledMods
+from src.vaults.modvault.utils import setActiveMods
logger = logging.getLogger(__name__)
diff --git a/src/fa/path.py b/src/fa/path.py
index 8c27dcc79..80407f8a0 100644
--- a/src/fa/path.py
+++ b/src/fa/path.py
@@ -2,8 +2,8 @@
import os
import sys
-import config
-import util
+from src import config
+from src import util
logger = logging.getLogger(__name__)
diff --git a/src/fa/play.py b/src/fa/play.py
index 1e72aaa8d..c16b7d871 100644
--- a/src/fa/play.py
+++ b/src/fa/play.py
@@ -1,5 +1,5 @@
-import util
-from config import Settings
+from src import util
+from src.config import Settings
from .game_process import instance
diff --git a/src/fa/replay.py b/src/fa/replay.py
index 9096c9c4d..e84eba6db 100644
--- a/src/fa/replay.py
+++ b/src/fa/replay.py
@@ -6,13 +6,13 @@
from PyQt6 import QtCore
from PyQt6 import QtWidgets
-import fa
-import util
-from fa.check import check
-from fa.replayparser import ReplayParser
-from qt.utils import qopen
-from util.gameurl import GameUrl
-from util.gameurl import GameUrlType
+from src import fa
+from src import util
+from src.fa.check import check
+from src.fa.replayparser import ReplayParser
+from src.qt.utils import qopen
+from src.util.gameurl import GameUrl
+from src.util.gameurl import GameUrlType
logger = logging.getLogger(__name__)
diff --git a/src/fa/replayserver.py b/src/fa/replayserver.py
index 02eceea7c..259b46a6b 100644
--- a/src/fa/replayserver.py
+++ b/src/fa/replayserver.py
@@ -9,9 +9,9 @@
from PyQt6 import QtNetwork
from PyQt6 import QtWidgets
-import fa
-import util
-from config import Settings
+from src import fa
+from src import util
+from src.config import Settings
GPGNET_HOST = "lobby.faforever.com"
GPGNET_PORT = 8000
diff --git a/src/fa/utils.py b/src/fa/utils.py
index f45e1ef52..edcc19725 100644
--- a/src/fa/utils.py
+++ b/src/fa/utils.py
@@ -3,8 +3,8 @@
import os
import zipfile
-from api.models.FeaturedModFile import FeaturedModFile
-from util import APPDATA_DIR
+from src.api.models.FeaturedModFile import FeaturedModFile
+from src.util import APPDATA_DIR
logger = logging.getLogger(__name__)
diff --git a/src/fa/wizards.py b/src/fa/wizards.py
index 2a68b328a..4c5d7924a 100644
--- a/src/fa/wizards.py
+++ b/src/fa/wizards.py
@@ -6,12 +6,12 @@
from PyQt6 import QtCore
from PyQt6 import QtWidgets
-import util
-from fa.path import typicalForgedAlliancePaths
-from fa.path import validatePath
+from src import util
+from src.fa.path import typicalForgedAlliancePaths
+from src.fa.path import validatePath
if TYPE_CHECKING:
- from client._clientwindow import ClientWindow
+ from src.client._clientwindow import ClientWindow
__author__ = 'Thygrrr'
diff --git a/src/games/_gameswidget.py b/src/games/_gameswidget.py
index 1e85e724c..f7678a9e7 100644
--- a/src/games/_gameswidget.py
+++ b/src/games/_gameswidget.py
@@ -10,22 +10,22 @@
from PyQt6.QtGui import QColor
from PyQt6.QtGui import QCursor
-import fa
-import util
-from api.featured_mod_api import FeaturedModApiConnector
-from client.user import User
-from config import Settings
-from games.automatchframe import MatchmakerQueue
-from games.gameitem import GameViewBuilder
-from games.gamemodel import CustomGameFilterModel
-from games.gamemodel import GameModel
-from games.hostgamewidget import GameLauncher
-from games.moditem import ModItem
-from games.moditem import mod_invisible
-from model.chat.channel import PARTY_CHANNEL_SUFFIX
+from src import fa
+from src import util
+from src.api.featured_mod_api import FeaturedModApiConnector
+from src.client.user import User
+from src.config import Settings
+from src.games.automatchframe import MatchmakerQueue
+from src.games.gameitem import GameViewBuilder
+from src.games.gamemodel import CustomGameFilterModel
+from src.games.gamemodel import GameModel
+from src.games.hostgamewidget import GameLauncher
+from src.games.moditem import ModItem
+from src.games.moditem import mod_invisible
+from src.model.chat.channel import PARTY_CHANNEL_SUFFIX
if TYPE_CHECKING:
- from client._clientwindow import ClientWindow
+ from src.client._clientwindow import ClientWindow
logger = logging.getLogger(__name__)
diff --git a/src/games/automatchframe.py b/src/games/automatchframe.py
index 2a2aa75ea..7fe1a56c8 100644
--- a/src/games/automatchframe.py
+++ b/src/games/automatchframe.py
@@ -8,19 +8,19 @@
from PyQt6 import QtGui
from PyQt6 import QtWidgets
-import fa
-import util
-from api.matchmaker_queue_api import MatchmakerQueueApiConnector
-from config import Settings
-from fa.factions import Factions
+from src import fa
+from src import util
+from src.api.matchmaker_queue_api import MatchmakerQueueApiConnector
+from src.config import Settings
+from src.fa.factions import Factions
FormClass, BaseClass = util.THEME.loadUiType("games/automatchframe.ui")
logger = logging.getLogger(__name__)
if TYPE_CHECKING:
- from client._clientwindow import ClientWindow
- from games._gameswidget import GamesWidget
+ from src.client._clientwindow import ClientWindow
+ from src.games._gameswidget import GamesWidget
class MatchmakerQueue(FormClass, BaseClass):
diff --git a/src/games/gameitem.py b/src/games/gameitem.py
index d32527bf1..2d4b6e836 100644
--- a/src/games/gameitem.py
+++ b/src/games/gameitem.py
@@ -6,9 +6,9 @@
from PyQt6 import QtGui
from PyQt6 import QtWidgets
-import util
-from fa import maps
-from qt.itemviews.styleditemdelegate import StyledItemDelegate
+from src import util
+from src.fa import maps
+from src.qt.itemviews.styleditemdelegate import StyledItemDelegate
class GameView(QtCore.QObject):
diff --git a/src/games/gamemodel.py b/src/games/gamemodel.py
index 1c6d74dfa..4e92a12a4 100644
--- a/src/games/gamemodel.py
+++ b/src/games/gamemodel.py
@@ -3,14 +3,14 @@
from PyQt6.QtCore import QSortFilterProxyModel
from PyQt6.QtCore import Qt
-from client.user import User
-from client.user import UserRelations
-from downloadManager import MapPreviewDownloader
-from games.moditem import mod_invisible
-from model.game import Game
-from model.game import GameState
-from model.gameset import Gameset
-from qt.models.qtlistmodel import QtListModel
+from src.client.user import User
+from src.client.user import UserRelations
+from src.downloadManager import MapPreviewDownloader
+from src.games.moditem import mod_invisible
+from src.model.game import Game
+from src.model.game import GameState
+from src.model.gameset import Gameset
+from src.qt.models.qtlistmodel import QtListModel
from .gamemodelitem import GameModelItem
diff --git a/src/games/gamemodelitem.py b/src/games/gamemodelitem.py
index 1975d8c49..c93b393f1 100644
--- a/src/games/gamemodelitem.py
+++ b/src/games/gamemodelitem.py
@@ -5,12 +5,12 @@
from PyQt6.QtCore import QObject
from PyQt6.QtCore import pyqtSignal
-from client.user import User
-from client.user import UserRelations
-from downloadManager import DownloadRequest
-from downloadManager import MapPreviewDownloader
-from fa import maps
-from model.game import Game
+from src.client.user import User
+from src.client.user import UserRelations
+from src.downloadManager import DownloadRequest
+from src.downloadManager import MapPreviewDownloader
+from src.fa import maps
+from src.model.game import Game
class GameModelItem(QObject):
diff --git a/src/games/hostgamewidget.py b/src/games/hostgamewidget.py
index 107eefc72..c79711209 100644
--- a/src/games/hostgamewidget.py
+++ b/src/games/hostgamewidget.py
@@ -5,22 +5,24 @@
from PyQt6 import QtCore
-import fa.check
-import util
-import vaults.modvault.utils
-from client.user import User
-from downloadManager import MapPreviewDownloader
-from fa import maps
-from games.gameitem import GameViewBuilder
-from games.gamemodel import GameModel
-from games.mapgenoptionsdialog import MapGenDialog
-from model.game import Game
-from model.game import GameState
-from model.game import GameVisibility
-from model.playerset import Playerset
+from src import fa
+from src import util
+from src.client.user import User
+from src.downloadManager import MapPreviewDownloader
+from src.fa import maps
+from src.games.gameitem import GameViewBuilder
+from src.games.gamemodel import GameModel
+from src.games.mapgenoptionsdialog import MapGenDialog
+from src.model.game import Game
+from src.model.game import GameState
+from src.model.game import GameVisibility
+from src.model.playerset import Playerset
+from src.vaults.modvault.utils import getActiveMods
+from src.vaults.modvault.utils import getInstalledMods
+from src.vaults.modvault.utils import setActiveMods
if TYPE_CHECKING:
- from client._clientwindow import ClientWindow
+ from src.client._clientwindow import ClientWindow
logger = logging.getLogger(__name__)
@@ -96,7 +98,7 @@ def _launch_game(self, game, password, mods):
):
return
- vaults.modvault.utils.setActiveMods(mods, True, False)
+ setActiveMods(mods, True, False)
self._client.host_game(
title=game.title,
@@ -153,7 +155,7 @@ def setup(self, title, game):
self.setupMapList()
# this makes it so you can select every non-ui_only mod
- for mod in vaults.modvault.utils.getInstalledMods():
+ for mod in getInstalledMods():
if mod.ui_only:
continue
self.mods[mod.totalname] = mod
@@ -161,10 +163,7 @@ def setup(self, title, game):
names = [
mod.totalname
- for mod in vaults.modvault.utils.getActiveMods(
- uimods=False,
- temporary=False,
- )
+ for mod in getActiveMods(uimods=False, temporary=False)
]
logger.debug("Active Mods detected: {}".format(str(names)))
for name in names:
@@ -245,7 +244,7 @@ def hosting(self):
for moditem in self.modList.selectedItems()
]
mods = [self.mods[modstr] for modstr in modnames]
- vaults.modvault.utils.setActiveMods(mods, True, False)
+ setActiveMods(mods, True, False)
self.launch.emit(self.game, password, mods)
self.done(1)
diff --git a/src/games/mapgenoptions.py b/src/games/mapgenoptions.py
index d80873fbd..c021d6196 100644
--- a/src/games/mapgenoptions.py
+++ b/src/games/mapgenoptions.py
@@ -6,7 +6,7 @@
from PyQt6.QtWidgets import QComboBox
from PyQt6.QtWidgets import QSpinBox
-import config
+from src import config
class OptionMixin:
diff --git a/src/games/mapgenoptionsdialog.py b/src/games/mapgenoptionsdialog.py
index e6ac5cedf..be7d27dcf 100644
--- a/src/games/mapgenoptionsdialog.py
+++ b/src/games/mapgenoptionsdialog.py
@@ -3,20 +3,20 @@
from PyQt6 import QtCore
from PyQt6 import QtWidgets
-import config
-import util
-from games.mapgenoptions import ComboBoxOption
-from games.mapgenoptions import RangeOption
-from games.mapgenoptions import SpinBoxOption
-from games.mapgenoptionsvalues import GenerationType
-from games.mapgenoptionsvalues import MapStyle
-from games.mapgenoptionsvalues import PropStyle
-from games.mapgenoptionsvalues import ResourceStyle
-from games.mapgenoptionsvalues import Sentinel
-from games.mapgenoptionsvalues import TerrainStyle
-from games.mapgenoptionsvalues import TerrainSymmetry
-from games.mapgenoptionsvalues import TextureStyle
-from mapGenerator.mapgenManager import MapGeneratorManager
+from src import config
+from src import util
+from src.games.mapgenoptions import ComboBoxOption
+from src.games.mapgenoptions import RangeOption
+from src.games.mapgenoptions import SpinBoxOption
+from src.games.mapgenoptionsvalues import GenerationType
+from src.games.mapgenoptionsvalues import MapStyle
+from src.games.mapgenoptionsvalues import PropStyle
+from src.games.mapgenoptionsvalues import ResourceStyle
+from src.games.mapgenoptionsvalues import Sentinel
+from src.games.mapgenoptionsvalues import TerrainStyle
+from src.games.mapgenoptionsvalues import TerrainSymmetry
+from src.games.mapgenoptionsvalues import TextureStyle
+from src.mapGenerator.mapgenManager import MapGeneratorManager
FormClass, BaseClass = util.THEME.loadUiType("games/mapgen.ui")
diff --git a/src/games/moditem.py b/src/games/moditem.py
index 7142083f1..2f9dc4863 100644
--- a/src/games/moditem.py
+++ b/src/games/moditem.py
@@ -3,9 +3,9 @@
from PyQt6 import QtGui
from PyQt6 import QtWidgets
-import client
-import util
-from api.models.FeaturedMod import FeaturedMod
+from src import client
+from src import util
+from src.api.models.FeaturedMod import FeaturedMod
# Maps names of featured mods to ModItem objects.
mods = {}
diff --git a/src/mapGenerator/mapgenManager.py b/src/mapGenerator/mapgenManager.py
index baef51ea8..82981cc2c 100644
--- a/src/mapGenerator/mapgenManager.py
+++ b/src/mapGenerator/mapgenManager.py
@@ -12,12 +12,12 @@
from PyQt6.QtNetwork import QNetworkReply
from PyQt6.QtNetwork import QNetworkRequest
-import util
-from config import Settings
-from fa.maps import getUserMapsFolder
-from mapGenerator.mapgenProcess import MapGeneratorProcess
-from mapGenerator.mapgenUtils import generatedMapPattern
-from vaults.dialogs import download_file
+from src import util
+from src.config import Settings
+from src.fa.maps import getUserMapsFolder
+from src.mapGenerator.mapgenProcess import MapGeneratorProcess
+from src.mapGenerator.mapgenUtils import generatedMapPattern
+from src.vaults.dialogs import download_file
logger = logging.getLogger(__name__)
diff --git a/src/mapGenerator/mapgenProcess.py b/src/mapGenerator/mapgenProcess.py
index 116167c86..3643f6d40 100644
--- a/src/mapGenerator/mapgenProcess.py
+++ b/src/mapGenerator/mapgenProcess.py
@@ -9,8 +9,8 @@
from PyQt6.QtWidgets import QProgressBar
from PyQt6.QtWidgets import QProgressDialog
-import fafpath
-from config import setup_file_handler
+from src import fafpath
+from src.config import setup_file_handler
from . import mapgenUtils
diff --git a/src/model/chat/channel.py b/src/model/chat/channel.py
index 25c4d0942..7d98ff73d 100644
--- a/src/model/chat/channel.py
+++ b/src/model/chat/channel.py
@@ -3,8 +3,8 @@
from PyQt6.QtCore import QObject
from PyQt6.QtCore import pyqtSignal
-from model.modelitem import ModelItem
-from model.transaction import transactional
+from src.model.modelitem import ModelItem
+from src.model.transaction import transactional
PARTY_CHANNEL_SUFFIX = "'sParty"
diff --git a/src/model/chat/channelchatter.py b/src/model/chat/channelchatter.py
index 73cc89175..f23fd3496 100644
--- a/src/model/chat/channelchatter.py
+++ b/src/model/chat/channelchatter.py
@@ -1,5 +1,5 @@
-from model.modelitem import ModelItem
-from model.transaction import transactional
+from src.model.modelitem import ModelItem
+from src.model.transaction import transactional
class ChannelChatter(ModelItem):
diff --git a/src/model/chat/channelchatterset.py b/src/model/chat/channelchatterset.py
index d1c76e62f..500bfe6b2 100644
--- a/src/model/chat/channelchatterset.py
+++ b/src/model/chat/channelchatterset.py
@@ -1,5 +1,5 @@
-from model.modelitemset import ModelItemSet
-from model.transaction import transactional
+from src.model.modelitemset import ModelItemSet
+from src.model.transaction import transactional
class ChannelChatterset(ModelItemSet):
diff --git a/src/model/chat/channelset.py b/src/model/chat/channelset.py
index 1fc62394e..9c3ffd32f 100644
--- a/src/model/chat/channelset.py
+++ b/src/model/chat/channelset.py
@@ -1,6 +1,6 @@
-from model.chat.channel import ChannelType
-from model.modelitemset import ModelItemSet
-from model.transaction import transactional
+from src.model.chat.channel import ChannelType
+from src.model.modelitemset import ModelItemSet
+from src.model.transaction import transactional
class Channelset(ModelItemSet):
diff --git a/src/model/chat/chat.py b/src/model/chat/chat.py
index 7af356e8a..559b67a96 100644
--- a/src/model/chat/chat.py
+++ b/src/model/chat/chat.py
@@ -1,10 +1,10 @@
from PyQt6.QtCore import QObject
from PyQt6.QtCore import pyqtSignal
-from model.chat.channelchatterset import ChannelChatterRelation
-from model.chat.channelchatterset import ChannelChatterset
-from model.chat.channelset import Channelset
-from model.chat.chatterset import Chatterset
+from src.model.chat.channelchatterset import ChannelChatterRelation
+from src.model.chat.channelchatterset import ChannelChatterset
+from src.model.chat.channelset import Channelset
+from src.model.chat.chatterset import Chatterset
class Chat(QObject):
diff --git a/src/model/chat/chatline.py b/src/model/chat/chatline.py
index 6116a951c..da0a18f47 100644
--- a/src/model/chat/chatline.py
+++ b/src/model/chat/chatline.py
@@ -1,7 +1,7 @@
import time
from enum import Enum
-from util.magic_dict import MagicDict
+from src.util.magic_dict import MagicDict
# Notices differ from messages in that notices in public channels are visible
diff --git a/src/model/chat/chatter.py b/src/model/chat/chatter.py
index 7c191108c..25d3ed5e4 100644
--- a/src/model/chat/chatter.py
+++ b/src/model/chat/chatter.py
@@ -1,7 +1,7 @@
from PyQt6.QtCore import pyqtSignal
-from model.modelitem import ModelItem
-from model.transaction import transactional
+from src.model.modelitem import ModelItem
+from src.model.transaction import transactional
class Chatter(ModelItem):
diff --git a/src/model/chat/chatterset.py b/src/model/chat/chatterset.py
index 0686803df..97d2d26f4 100644
--- a/src/model/chat/chatterset.py
+++ b/src/model/chat/chatterset.py
@@ -1,6 +1,6 @@
-from model.chat.chatter import Chatter
-from model.modelitemset import ModelItemSet
-from model.transaction import transactional
+from src.model.chat.chatter import Chatter
+from src.model.modelitemset import ModelItemSet
+from src.model.transaction import transactional
class Chatterset(ModelItemSet):
diff --git a/src/model/game.py b/src/model/game.py
index 0a575b869..be0eae2a8 100644
--- a/src/model/game.py
+++ b/src/model/game.py
@@ -6,11 +6,11 @@
from PyQt6.QtCore import QTimer
from PyQt6.QtCore import pyqtSignal
-from decorators import with_logger
-from model.modelitem import ModelItem
-from model.transaction import transactional
-from util.gameurl import GameUrl
-from util.gameurl import GameUrlType
+from src.decorators import with_logger
+from src.model.modelitem import ModelItem
+from src.model.transaction import transactional
+from src.util.gameurl import GameUrl
+from src.util.gameurl import GameUrlType
class GameState(Enum):
diff --git a/src/model/gameset.py b/src/model/gameset.py
index acdfc85ff..b91cb3410 100644
--- a/src/model/gameset.py
+++ b/src/model/gameset.py
@@ -1,9 +1,9 @@
from PyQt6.QtCore import pyqtSignal
-from decorators import with_logger
-from model import game
-from model.modelitemset import ModelItemSet
-from model.transaction import transactional
+from src.decorators import with_logger
+from src.model import game
+from src.model.modelitemset import ModelItemSet
+from src.model.transaction import transactional
@with_logger
diff --git a/src/model/ircuser.py b/src/model/ircuser.py
index e18ef4289..26b4ecb0c 100644
--- a/src/model/ircuser.py
+++ b/src/model/ircuser.py
@@ -1,7 +1,7 @@
from PyQt6.QtCore import pyqtSignal
-from model.modelitem import ModelItem
-from model.transaction import transactional
+from src.model.modelitem import ModelItem
+from src.model.transaction import transactional
class IrcUser(ModelItem):
diff --git a/src/model/ircuserset.py b/src/model/ircuserset.py
index c39417539..dd49d2c9c 100644
--- a/src/model/ircuserset.py
+++ b/src/model/ircuserset.py
@@ -1,6 +1,6 @@
-from model.ircuser import IrcUser
-from model.modelitemset import ModelItemSet
-from model.transaction import transactional
+from src.model.ircuser import IrcUser
+from src.model.modelitemset import ModelItemSet
+from src.model.transaction import transactional
class IrcUserset(ModelItemSet):
diff --git a/src/model/modelitem.py b/src/model/modelitem.py
index d15eec6bd..3d57dcb99 100644
--- a/src/model/modelitem.py
+++ b/src/model/modelitem.py
@@ -1,7 +1,7 @@
from PyQt6.QtCore import pyqtSignal
-from model.qobjectmapping import QObject
-from model.transaction import transactional
+from src.model.qobjectmapping import QObject
+from src.model.transaction import transactional
class ModelItem(QObject):
diff --git a/src/model/modelitemset.py b/src/model/modelitemset.py
index 3aa6fef21..8bf31f97d 100644
--- a/src/model/modelitemset.py
+++ b/src/model/modelitemset.py
@@ -1,7 +1,7 @@
from PyQt6.QtCore import pyqtSignal
-from model.qobjectmapping import QObjectMapping
-from model.transaction import transactional
+from src.model.qobjectmapping import QObjectMapping
+from src.model.transaction import transactional
class ModelItemSet(QObjectMapping):
diff --git a/src/model/player.py b/src/model/player.py
index db76163f8..b367668c3 100644
--- a/src/model/player.py
+++ b/src/model/player.py
@@ -1,9 +1,9 @@
from PyQt6.QtCore import pyqtSignal
-from model.modelitem import ModelItem
-from model.rating import Rating
-from model.rating import RatingType
-from model.transaction import transactional
+from src.model.modelitem import ModelItem
+from src.model.rating import Rating
+from src.model.rating import RatingType
+from src.model.transaction import transactional
class Player(ModelItem):
diff --git a/src/model/playerset.py b/src/model/playerset.py
index 96663aadf..cfd00e07e 100644
--- a/src/model/playerset.py
+++ b/src/model/playerset.py
@@ -1,6 +1,6 @@
-from model.modelitemset import ModelItemSet
-from model.player import Player
-from model.transaction import transactional
+from src.model.modelitemset import ModelItemSet
+from src.model.player import Player
+from src.model.transaction import transactional
class Playerset(ModelItemSet):
diff --git a/src/news/_newswidget.py b/src/news/_newswidget.py
index d873952bf..80e88f71c 100644
--- a/src/news/_newswidget.py
+++ b/src/news/_newswidget.py
@@ -9,10 +9,10 @@
from PyQt6.QtGui import QTextDocument
from PyQt6.QtNetwork import QNetworkAccessManager
-import util
-from config import Settings
-from downloadManager import Downloader
-from downloadManager import DownloadRequest
+from src import util
+from src.config import Settings
+from src.downloadManager import Downloader
+from src.downloadManager import DownloadRequest
from .newsitem import NewsItem
from .newsitem import NewsItemDelegate
diff --git a/src/news/newsitem.py b/src/news/newsitem.py
index b3c27e240..6ed0fd629 100644
--- a/src/news/newsitem.py
+++ b/src/news/newsitem.py
@@ -4,7 +4,7 @@
from PyQt6 import QtGui
from PyQt6 import QtWidgets
-import util
+from src import util
logger = logging.getLogger(__name__)
diff --git a/src/news/newsmanager.py b/src/news/newsmanager.py
index b2707933d..3d2c0c17e 100644
--- a/src/news/newsmanager.py
+++ b/src/news/newsmanager.py
@@ -4,7 +4,7 @@
from PyQt6.QtCore import QObject
from PyQt6.QtCore import Qt
-import client
+from src import client
from .wpapi import WPAPI
diff --git a/src/news/wpapi.py b/src/news/wpapi.py
index 15a6ad780..cb504acda 100644
--- a/src/news/wpapi.py
+++ b/src/news/wpapi.py
@@ -6,7 +6,7 @@
from PyQt6.QtNetwork import QNetworkReply
from PyQt6.QtNetwork import QNetworkRequest
-from config import Settings
+from src.config import Settings
logger = logging.getLogger(__name__)
diff --git a/src/notifications/__init__.py b/src/notifications/__init__.py
index 4a03a93e2..24b4602da 100644
--- a/src/notifications/__init__.py
+++ b/src/notifications/__init__.py
@@ -4,14 +4,14 @@
"""
from PyQt6 import QtCore
-import util
-from config import Settings
-from fa import maps
-from model.game import Game
-from model.player import Player
-from notifications.ns_dialog import NotificationDialog
-from notifications.ns_settings import IngameNotification
-from notifications.ns_settings import NsSettingsDialog
+from src import util
+from src.config import Settings
+from src.fa import maps
+from src.model.game import Game
+from src.model.player import Player
+from src.notifications.ns_dialog import NotificationDialog
+from src.notifications.ns_settings import IngameNotification
+from src.notifications.ns_settings import NsSettingsDialog
class Notifications:
diff --git a/src/notifications/hook_gamefull.py b/src/notifications/hook_gamefull.py
index 845f7a194..295be41d5 100644
--- a/src/notifications/hook_gamefull.py
+++ b/src/notifications/hook_gamefull.py
@@ -1,8 +1,8 @@
"""
Settings for notifications: If a game is full
"""
-import notifications as ns
-from notifications.ns_hook import NsHook
+import src.notifications as ns
+from src.notifications.ns_hook import NsHook
class NsHookGameFull(NsHook):
diff --git a/src/notifications/hook_newgame.py b/src/notifications/hook_newgame.py
index 2abbba7b9..20f80efc4 100644
--- a/src/notifications/hook_newgame.py
+++ b/src/notifications/hook_newgame.py
@@ -3,11 +3,11 @@
"""
from PyQt6 import QtCore
-import config
-import notifications as ns
-import util
-from config import Settings
-from notifications.ns_hook import NsHook
+import src.notifications as ns
+from src import config
+from src import util
+from src.config import Settings
+from src.notifications.ns_hook import NsHook
class NsHookNewGame(NsHook):
diff --git a/src/notifications/hook_partyinvite.py b/src/notifications/hook_partyinvite.py
index a2c0c5fb8..5dc6ae88a 100644
--- a/src/notifications/hook_partyinvite.py
+++ b/src/notifications/hook_partyinvite.py
@@ -3,10 +3,10 @@
"""
from PyQt6 import QtCore
-import notifications as ns
-import util
-from config import Settings
-from notifications.ns_hook import NsHook
+import src.notifications as ns
+from src import util
+from src.config import Settings
+from src.notifications.ns_hook import NsHook
class NsHookPartyInvite(NsHook):
diff --git a/src/notifications/hook_useronline.py b/src/notifications/hook_useronline.py
index d949bb4c2..c076c05b3 100644
--- a/src/notifications/hook_useronline.py
+++ b/src/notifications/hook_useronline.py
@@ -3,10 +3,10 @@
"""
from PyQt6 import QtCore
-import notifications as ns
-import util
-from config import Settings
-from notifications.ns_hook import NsHook
+import src.notifications as ns
+from src import util
+from src.config import Settings
+from src.notifications.ns_hook import NsHook
class NsHookUserOnline(NsHook):
diff --git a/src/notifications/ns_dialog.py b/src/notifications/ns_dialog.py
index 2426b2e14..5ff518ec1 100644
--- a/src/notifications/ns_dialog.py
+++ b/src/notifications/ns_dialog.py
@@ -6,7 +6,7 @@
from PyQt6 import QtCore
from PyQt6.QtMultimedia import QSoundEffect
-import util
+from src import util
from .ns_settings import NotificationPosition
diff --git a/src/notifications/ns_hook.py b/src/notifications/ns_hook.py
index e0da941c5..27bf1a956 100644
--- a/src/notifications/ns_hook.py
+++ b/src/notifications/ns_hook.py
@@ -9,7 +9,7 @@
"""
from PyQt6 import QtWidgets
-from config import Settings
+from src.config import Settings
class NsHook():
diff --git a/src/notifications/ns_settings.py b/src/notifications/ns_settings.py
index e4bd94ea2..6400eeef1 100644
--- a/src/notifications/ns_settings.py
+++ b/src/notifications/ns_settings.py
@@ -8,13 +8,13 @@
from PyQt6 import QtCore
from PyQt6 import QtWidgets
-import notifications as ns
-import util
-from config import Settings
-from notifications.hook_gamefull import NsHookGameFull
-from notifications.hook_newgame import NsHookNewGame
-from notifications.hook_partyinvite import NsHookPartyInvite
-from notifications.hook_useronline import NsHookUserOnline
+import src.notifications as ns
+from src import util
+from src.config import Settings
+from src.notifications.hook_gamefull import NsHookGameFull
+from src.notifications.hook_newgame import NsHookNewGame
+from src.notifications.hook_partyinvite import NsHookPartyInvite
+from src.notifications.hook_useronline import NsHookUserOnline
class IngameNotification(Enum):
diff --git a/src/oauth/oauth_flow.py b/src/oauth/oauth_flow.py
index 4507ef847..ca5244b6c 100644
--- a/src/oauth/oauth_flow.py
+++ b/src/oauth/oauth_flow.py
@@ -7,8 +7,8 @@
from PyQt6.QtNetworkAuth import QOAuth2AuthorizationCodeFlow
from PyQt6.QtNetworkAuth import QOAuthHttpServerReplyHandler
-from config import Settings
-from decorators import with_logger
+from src.config import Settings
+from src.decorators import with_logger
class OAuthReplyHandler(QOAuthHttpServerReplyHandler):
diff --git a/src/playercard/achievements.py b/src/playercard/achievements.py
index e1b36a174..dfcab1740 100644
--- a/src/playercard/achievements.py
+++ b/src/playercard/achievements.py
@@ -15,16 +15,16 @@
from PyQt6.QtWidgets import QSizePolicy
from PyQt6.QtWidgets import QWidget
-from api.models.Achievement import Achievement
-from api.models.Achievement import ProgressType
-from api.models.Achievement import State
-from api.models.PlayerAchievement import PlayerAchievement
-from api.stats_api import AchievementsApiAccessor
-from api.stats_api import PlayerAchievementApiAccessor
-from downloadManager import DownloadRequest
-from downloadManager import ImageDownloader
-from util import ACHIEVEMENTS_CACHE_DIR
-from util import THEME
+from src.api.models.Achievement import Achievement
+from src.api.models.Achievement import ProgressType
+from src.api.models.Achievement import State
+from src.api.models.PlayerAchievement import PlayerAchievement
+from src.api.stats_api import AchievementsApiAccessor
+from src.api.stats_api import PlayerAchievementApiAccessor
+from src.downloadManager import DownloadRequest
+from src.downloadManager import ImageDownloader
+from src.util import ACHIEVEMENTS_CACHE_DIR
+from src.util import THEME
FormClass, BaseClass = THEME.loadUiType("player_card/achievement.ui")
diff --git a/src/playercard/avatarhandler.py b/src/playercard/avatarhandler.py
index 133dbfe4b..829cbe85e 100644
--- a/src/playercard/avatarhandler.py
+++ b/src/playercard/avatarhandler.py
@@ -5,11 +5,11 @@
from PyQt6.QtWidgets import QListWidget
from PyQt6.QtWidgets import QListWidgetItem
-import util
-from api.models.Avatar import Avatar
-from api.models.AvatarAssignment import AvatarAssignment
-from downloadManager import DownloadRequest
-from downloadManager import ImageDownloader
+from src import util
+from src.api.models.Avatar import Avatar
+from src.api.models.AvatarAssignment import AvatarAssignment
+from src.downloadManager import DownloadRequest
+from src.downloadManager import ImageDownloader
class AvatarHandler:
diff --git a/src/playercard/events.py b/src/playercard/events.py
index a74c29972..f75f233fa 100644
--- a/src/playercard/events.py
+++ b/src/playercard/events.py
@@ -1,8 +1,8 @@
from enum import Enum
from typing import NamedTuple
-from api.models.PlayerEvent import PlayerEvent
-from fa.factions import Factions
+from src.api.models.PlayerEvent import PlayerEvent
+from src.fa.factions import Factions
class PlayerEvents(Enum):
diff --git a/src/playercard/leagueformatter.py b/src/playercard/leagueformatter.py
index ed12937d5..69eb06885 100644
--- a/src/playercard/leagueformatter.py
+++ b/src/playercard/leagueformatter.py
@@ -3,12 +3,12 @@
from PyQt6.QtCore import QSize
from PyQt6.QtGui import QPixmap
-import util
-from api.models.LeaderboardRating import LeaderboardRating
-from api.models.LeagueSeasonScore import LeagueSeasonScore
-from api.stats_api import LeagueSeasonScoreApiConnector
-from downloadManager import DownloadRequest
-from downloadManager import ImageDownloader
+from src import util
+from src.api.models.LeaderboardRating import LeaderboardRating
+from src.api.models.LeagueSeasonScore import LeagueSeasonScore
+from src.api.stats_api import LeagueSeasonScoreApiConnector
+from src.downloadManager import DownloadRequest
+from src.downloadManager import ImageDownloader
FormClass, BaseClass = util.THEME.loadUiType("player_card/playerleague.ui")
diff --git a/src/playercard/playerinfodialog.py b/src/playercard/playerinfodialog.py
index cd2f056d1..9386964b8 100644
--- a/src/playercard/playerinfodialog.py
+++ b/src/playercard/playerinfodialog.py
@@ -2,22 +2,22 @@
from PyQt6.QtWidgets import QTableWidgetItem
-import util
-from api.models.AvatarAssignment import AvatarAssignment
-from api.models.LeaderboardRating import LeaderboardRating
-from api.models.NameRecord import NameRecord
-from api.models.Player import Player
-from api.models.PlayerEvent import PlayerEvent
-from api.player_api import PlayerApiConnector
-from api.stats_api import LeaderboardRatingApiConnector
-from api.stats_api import LeagueSeasonScoreApiConnector
-from api.stats_api import PlayerEventApiAccessor
-from downloadManager import ImageDownloader
-from playercard.achievements import AchievementsHandler
-from playercard.avatarhandler import AvatarHandler
-from playercard.leagueformatter import league_formatter_factory
-from playercard.ratingtabwidget import RatingTabWidgetController
-from playercard.statistics import StatsCharts
+from src import util
+from src.api.models.AvatarAssignment import AvatarAssignment
+from src.api.models.LeaderboardRating import LeaderboardRating
+from src.api.models.NameRecord import NameRecord
+from src.api.models.Player import Player
+from src.api.models.PlayerEvent import PlayerEvent
+from src.api.player_api import PlayerApiConnector
+from src.api.stats_api import LeaderboardRatingApiConnector
+from src.api.stats_api import LeagueSeasonScoreApiConnector
+from src.api.stats_api import PlayerEventApiAccessor
+from src.downloadManager import ImageDownloader
+from src.playercard.achievements import AchievementsHandler
+from src.playercard.avatarhandler import AvatarHandler
+from src.playercard.leagueformatter import league_formatter_factory
+from src.playercard.ratingtabwidget import RatingTabWidgetController
+from src.playercard.statistics import StatsCharts
FormClass, BaseClass = util.THEME.loadUiType("player_card/playercard.ui")
diff --git a/src/playercard/ratingtabwidget.py b/src/playercard/ratingtabwidget.py
index 070a23dd0..795b6411e 100644
--- a/src/playercard/ratingtabwidget.py
+++ b/src/playercard/ratingtabwidget.py
@@ -9,12 +9,12 @@
from PyQt6.QtCore import pyqtSignal
from PyQt6.QtWidgets import QTabWidget
-from api.models.Leaderboard import Leaderboard
-from api.stats_api import LeaderboardApiConnector
-from api.stats_api import LeaderboardRatingJournalApiConnector
-from model.rating import Rating
-from playercard.plot import LineSeries
-from playercard.plot import PlotController
+from src.api.models.Leaderboard import Leaderboard
+from src.api.stats_api import LeaderboardApiConnector
+from src.api.stats_api import LeaderboardRatingJournalApiConnector
+from src.model.rating import Rating
+from src.playercard.plot import LineSeries
+from src.playercard.plot import PlotController
class LineSeriesParser(QThread):
diff --git a/src/playercard/statistics.py b/src/playercard/statistics.py
index 7e35ae926..847cd1d52 100644
--- a/src/playercard/statistics.py
+++ b/src/playercard/statistics.py
@@ -15,12 +15,12 @@
from PyQt6.QtGui import QFont
from PyQt6.QtGui import QPainter
-from api.models.LeaderboardRating import LeaderboardRating
-from api.models.PlayerEvent import PlayerEvent
-from playercard.events import BUILT_LOST_METRICS
-from playercard.events import EXPERIMENTALS_BUILT_LOST_METRICS
-from playercard.events import FACTION_PLAYS_METRICS
-from playercard.events import PlayerEventMetric
+from src.api.models.LeaderboardRating import LeaderboardRating
+from src.api.models.PlayerEvent import PlayerEvent
+from src.playercard.events import BUILT_LOST_METRICS
+from src.playercard.events import EXPERIMENTALS_BUILT_LOST_METRICS
+from src.playercard.events import FACTION_PLAYS_METRICS
+from src.playercard.events import PlayerEventMetric
class ChartsBuilder:
diff --git a/src/power/__init__.py b/src/power/__init__.py
index 58ad93557..12638bfa2 100644
--- a/src/power/__init__.py
+++ b/src/power/__init__.py
@@ -1,5 +1,5 @@
-from power.actions import PowerActions
-from power.view import PowerView
+from src.power.actions import PowerActions
+from src.power.view import PowerView
class PowerTools:
diff --git a/src/power/view.py b/src/power/view.py
index 442e7f895..e4645001d 100644
--- a/src/power/view.py
+++ b/src/power/view.py
@@ -1,9 +1,9 @@
from PyQt6.QtCore import QObject
from PyQt6.QtWidgets import QMessageBox
-from power.actions import BanPeriod
-from util.select_player_dialog import PlayerCompleter
-from util.select_player_dialog import SelectPlayerDialog
+from src.power.actions import BanPeriod
+from src.util.select_player_dialog import PlayerCompleter
+from src.util.select_player_dialog import SelectPlayerDialog
class CloseGameDialog(SelectPlayerDialog):
diff --git a/src/qt/itemviews/tableitemdelegte.py b/src/qt/itemviews/tableitemdelegte.py
index 7ca184bcb..e85ac0996 100644
--- a/src/qt/itemviews/tableitemdelegte.py
+++ b/src/qt/itemviews/tableitemdelegte.py
@@ -5,8 +5,8 @@
from PyQt6.QtWidgets import QStyleOptionViewItem
from PyQt6.QtWidgets import QTableView
-from qt.itemviews.styleditemdelegate import StyledItemDelegate
-from qt.utils import qpainter
+from src.qt.itemviews.styleditemdelegate import StyledItemDelegate
+from src.qt.utils import qpainter
class TableItemDelegate(StyledItemDelegate):
diff --git a/src/qt/itemviews/tableview.py b/src/qt/itemviews/tableview.py
index 0816e1a24..90ff0e706 100644
--- a/src/qt/itemviews/tableview.py
+++ b/src/qt/itemviews/tableview.py
@@ -4,7 +4,7 @@
from PyQt6.QtGui import QWheelEvent
from PyQt6.QtWidgets import QTableView
-from qt.itemviews.tableheaderview import VerticalHeaderView
+from src.qt.itemviews.tableheaderview import VerticalHeaderView
class TableView(QTableView):
diff --git a/src/replays/_replayswidget.py b/src/replays/_replayswidget.py
index 1871abc72..c5fdcc014 100644
--- a/src/replays/_replayswidget.py
+++ b/src/replays/_replayswidget.py
@@ -3,6 +3,7 @@
import os
import time
+from pydantic import ValidationError
from PyQt6 import QtCore
from PyQt6 import QtGui
from PyQt6 import QtWidgets
@@ -11,23 +12,22 @@
from PyQt6.QtNetwork import QNetworkRequest
from PyQt6.QtWidgets import QTreeWidgetItem
-import client
-import fa
-import util
-from api.models.Leaderboard import Leaderboard
-from api.replaysapi import ReplaysApiConnector
-from api.stats_api import LeaderboardApiConnector
-from config import Settings
-from downloadManager import DownloadRequest
-from fa.replay import replay
-from model.game import GameState
-from pydantic import ValidationError
-from replays.models import MetadataModel
-from replays.replayitem import ReplayItem
-from replays.replayitem import ReplayItemDelegate
-from replays.replayToolbox import ReplayToolboxHandler
-from util.gameurl import GameUrl
-from util.gameurl import GameUrlType
+from src import client
+from src import fa
+from src import util
+from src.api.models.Leaderboard import Leaderboard
+from src.api.replaysapi import ReplaysApiConnector
+from src.api.stats_api import LeaderboardApiConnector
+from src.config import Settings
+from src.downloadManager import DownloadRequest
+from src.fa.replay import replay
+from src.model.game import GameState
+from src.replays.models import MetadataModel
+from src.replays.replayitem import ReplayItem
+from src.replays.replayitem import ReplayItemDelegate
+from src.replays.replayToolbox import ReplayToolboxHandler
+from src.util.gameurl import GameUrl
+from src.util.gameurl import GameUrlType
logger = logging.getLogger(__name__)
diff --git a/src/replays/models.py b/src/replays/models.py
index 0ccb3fc07..7422e315d 100644
--- a/src/replays/models.py
+++ b/src/replays/models.py
@@ -3,17 +3,17 @@
from typing import Any
from typing import Callable
+from pydantic import BaseModel
+from pydantic import Field
from PyQt6.QtCore import QObject
from PyQt6.QtCore import Qt
from PyQt6.QtCore import pyqtSignal
from PyQt6.QtGui import QIcon
-import util
-from api.models.Player import Player
-from model.rating import Rating
-from pydantic import BaseModel
-from pydantic import Field
-from qt.models.qtlistmodel import QtListModel
+from src import util
+from src.api.models.Player import Player
+from src.model.rating import Rating
+from src.qt.models.qtlistmodel import QtListModel
# FIXME - this is what the widget uses so far, we should define this
diff --git a/src/replays/replayToolbox.py b/src/replays/replayToolbox.py
index 97d0a7b67..0cbe063a2 100644
--- a/src/replays/replayToolbox.py
+++ b/src/replays/replayToolbox.py
@@ -5,10 +5,10 @@
from PyQt6 import QtGui
from PyQt6 import QtWidgets
-from config import Settings
-from downloadManager import DownloadRequest
-from downloadManager import MapLargePreviewDownloader
-from util import MAP_PREVIEW_LARGE_DIR
+from src.config import Settings
+from src.downloadManager import DownloadRequest
+from src.downloadManager import MapLargePreviewDownloader
+from src.util import MAP_PREVIEW_LARGE_DIR
logger = logging.getLogger(__name__)
diff --git a/src/replays/replayitem.py b/src/replays/replayitem.py
index 4e6966b9d..af8921267 100644
--- a/src/replays/replayitem.py
+++ b/src/replays/replayitem.py
@@ -9,12 +9,12 @@
from PyQt6 import QtWidgets
from PyQt6.QtGui import QAction
-import util
-from config import Settings
-from downloadManager import DownloadRequest
-from fa import maps
-from games.moditem import mods
-from replays.scoreboard import Scoreboard
+from src import util
+from src.config import Settings
+from src.downloadManager import DownloadRequest
+from src.fa import maps
+from src.games.moditem import mods
+from src.replays.scoreboard import Scoreboard
class ReplayItemDelegate(QtWidgets.QStyledItemDelegate):
diff --git a/src/replays/scoreboard.py b/src/replays/scoreboard.py
index 8a24019dc..51dc515ab 100644
--- a/src/replays/scoreboard.py
+++ b/src/replays/scoreboard.py
@@ -12,11 +12,11 @@
from PyQt6.QtWidgets import QVBoxLayout
from PyQt6.QtWidgets import QWidget
-from contextmenu.playercontextmenu import PlayerContextMenu
-from replays.models import ScoreboardModel
-from replays.models import ScoreboardModelItem
-from replays.scoreboarditemdelegate import ScoreboardItemDelegate
-from replays.scoreboardlistview import ScoreboardListView
+from src.contextmenu.playercontextmenu import PlayerContextMenu
+from src.replays.models import ScoreboardModel
+from src.replays.models import ScoreboardModelItem
+from src.replays.scoreboarditemdelegate import ScoreboardItemDelegate
+from src.replays.scoreboardlistview import ScoreboardListView
class GameResult(Enum):
diff --git a/src/replays/scoreboarditemdelegate.py b/src/replays/scoreboarditemdelegate.py
index 8b7633542..ed17afc59 100644
--- a/src/replays/scoreboarditemdelegate.py
+++ b/src/replays/scoreboarditemdelegate.py
@@ -9,10 +9,10 @@
from PyQt6.QtWidgets import QStyledItemDelegate
from PyQt6.QtWidgets import QStyleOptionViewItem
-from qt.itemviews.styleditemdelegate import StyledItemDelegate
-from qt.utils import qpainter
-from replays.models import ScoreboardModel
-from replays.models import ScoreboardModelItem
+from src.qt.itemviews.styleditemdelegate import StyledItemDelegate
+from src.qt.utils import qpainter
+from src.replays.models import ScoreboardModel
+from src.replays.models import ScoreboardModelItem
class ScoreboardItemDelegate(StyledItemDelegate):
diff --git a/src/replays/scoreboardlistview.py b/src/replays/scoreboardlistview.py
index ac10cff99..d7b42ea1d 100644
--- a/src/replays/scoreboardlistview.py
+++ b/src/replays/scoreboardlistview.py
@@ -3,8 +3,8 @@
from PyQt6.QtGui import QMouseEvent
from PyQt6.QtWidgets import QListView
-from contextmenu.playercontextmenu import PlayerContextMenu
-from replays.scoreboarditemdelegate import ScoreboardModelItem
+from src.contextmenu.playercontextmenu import PlayerContextMenu
+from src.replays.scoreboarditemdelegate import ScoreboardModelItem
class ScoreboardListView(QListView):
diff --git a/src/secondaryServer/secondaryserver.py b/src/secondaryServer/secondaryserver.py
index 49da8bd26..c5bbf656a 100644
--- a/src/secondaryServer/secondaryserver.py
+++ b/src/secondaryServer/secondaryserver.py
@@ -4,7 +4,7 @@
from PyQt6 import QtCore
from PyQt6 import QtNetwork
-from config import Settings
+from src.config import Settings
logger = logging.getLogger(__name__)
diff --git a/src/stats/__init__.py b/src/stats/__init__.py
index d20f230c7..cc0a9774e 100644
--- a/src/stats/__init__.py
+++ b/src/stats/__init__.py
@@ -1,8 +1,8 @@
import logging
-from stats.itemviews.leaderboardtableview import LeaderboardTableView
-from stats.leaderboardlineedit import LeaderboardLineEdit
+from src.stats.itemviews.leaderboardtableview import LeaderboardTableView
+from src.stats.leaderboardlineedit import LeaderboardLineEdit
from ._statswidget import StatsWidget
diff --git a/src/stats/_statswidget.py b/src/stats/_statswidget.py
index 39f69d8f4..c86ac7a35 100644
--- a/src/stats/_statswidget.py
+++ b/src/stats/_statswidget.py
@@ -4,10 +4,10 @@
from PyQt6 import QtCore
from PyQt6 import QtWidgets
-import util
-from api.models.Leaderboard import Leaderboard
-from api.stats_api import LeaderboardApiConnector
-from ui.busy_widget import BusyWidget
+from src import util
+from src.api.models.Leaderboard import Leaderboard
+from src.api.stats_api import LeaderboardApiConnector
+from src.ui.busy_widget import BusyWidget
from .leaderboard_widget import LeaderboardWidget
diff --git a/src/stats/itemviews/leaderboarditemdelegate.py b/src/stats/itemviews/leaderboarditemdelegate.py
index 244476558..2100b2e29 100644
--- a/src/stats/itemviews/leaderboarditemdelegate.py
+++ b/src/stats/itemviews/leaderboarditemdelegate.py
@@ -4,8 +4,8 @@
from PyQt6.QtGui import QPainter
from PyQt6.QtWidgets import QStyleOptionViewItem
-from qt.itemviews.tableitemdelegte import TableItemDelegate
-from qt.utils import qpainter
+from src.qt.itemviews.tableitemdelegte import TableItemDelegate
+from src.qt.utils import qpainter
class LeaderboardItemDelegate(TableItemDelegate):
diff --git a/src/stats/itemviews/leaderboardtableview.py b/src/stats/itemviews/leaderboardtableview.py
index 61782c8f8..1671000aa 100644
--- a/src/stats/itemviews/leaderboardtableview.py
+++ b/src/stats/itemviews/leaderboardtableview.py
@@ -2,7 +2,7 @@
from PyQt6.QtGui import QCursor
from PyQt6.QtGui import QMouseEvent
-from qt.itemviews.tableview import TableView
+from src.qt.itemviews.tableview import TableView
class LeaderboardTableView(TableView):
diff --git a/src/stats/leaderboard_widget.py b/src/stats/leaderboard_widget.py
index f5c58ffe0..840e815e8 100644
--- a/src/stats/leaderboard_widget.py
+++ b/src/stats/leaderboard_widget.py
@@ -5,17 +5,17 @@
from PyQt6 import QtCore
from PyQt6 import QtWidgets
-import util
-from api.player_api import PlayerApiConnector
-from api.stats_api import LeaderboardRatingApiConnector
-from config import Settings
+from src import util
+from src.api.player_api import PlayerApiConnector
+from src.api.stats_api import LeaderboardRatingApiConnector
+from src.config import Settings
from .itemviews.leaderboarditemdelegate import LeaderboardItemDelegate
from .models.leaderboardfiltermodel import LeaderboardFilterModel
from .models.leaderboardtablemodel import LeaderboardTableModel
if TYPE_CHECKING:
- from client._clientwindow import ClientWindow
+ from src.client._clientwindow import ClientWindow
FormClass, BaseClass = util.THEME.loadUiType("stats/leaderboard.ui")
diff --git a/src/stats/models/leaderboardtablemodel.py b/src/stats/models/leaderboardtablemodel.py
index 968eeb563..5b4e3bb37 100644
--- a/src/stats/models/leaderboardtablemodel.py
+++ b/src/stats/models/leaderboardtablemodel.py
@@ -2,7 +2,7 @@
from PyQt6.QtCore import QModelIndex
from PyQt6.QtCore import Qt
-from util import utctolocal
+from src.util import utctolocal
class LeaderboardTableModel(QAbstractTableModel):
diff --git a/src/tourneys/_tournamentswidget.py b/src/tourneys/_tournamentswidget.py
index 96718dcca..ff524b544 100644
--- a/src/tourneys/_tournamentswidget.py
+++ b/src/tourneys/_tournamentswidget.py
@@ -2,10 +2,10 @@
from PyQt6 import QtCore
from PyQt6 import QtWidgets
-import secondaryServer
-import util
-from tourneys.tourneyitem import TourneyItem
-from tourneys.tourneyitem import TourneyItemDelegate
+from src import secondaryServer
+from src import util
+from src.tourneys.tourneyitem import TourneyItem
+from src.tourneys.tourneyitem import TourneyItemDelegate
FormClass, BaseClass = util.THEME.loadUiType("tournaments/tournaments.ui")
diff --git a/src/tourneys/tourneyitem.py b/src/tourneys/tourneyitem.py
index abeb4b552..6e1b55b67 100644
--- a/src/tourneys/tourneyitem.py
+++ b/src/tourneys/tourneyitem.py
@@ -2,7 +2,7 @@
from PyQt6 import QtGui
from PyQt6 import QtWidgets
-import util
+from src import util
class TourneyItemDelegate(QtWidgets.QStyledItemDelegate):
diff --git a/src/tutorials/_tutorialswidget.py b/src/tutorials/_tutorialswidget.py
index f32f94b99..f432e93ac 100644
--- a/src/tutorials/_tutorialswidget.py
+++ b/src/tutorials/_tutorialswidget.py
@@ -7,10 +7,10 @@
from PyQt6.QtNetwork import QNetworkReply
from PyQt6.QtNetwork import QNetworkRequest
-import fa
-import util
-from tutorials.tutorialitem import TutorialItem
-from tutorials.tutorialitem import TutorialItemDelegate
+from src import fa
+from src import util
+from src.tutorials.tutorialitem import TutorialItem
+from src.tutorials.tutorialitem import TutorialItemDelegate
logger = logging.getLogger(__name__)
diff --git a/src/tutorials/tutorialitem.py b/src/tutorials/tutorialitem.py
index 9e6063275..89bed4604 100644
--- a/src/tutorials/tutorialitem.py
+++ b/src/tutorials/tutorialitem.py
@@ -3,10 +3,10 @@
from PyQt6 import QtGui
from PyQt6 import QtWidgets
-import util
-from config import Settings
-from downloadManager import DownloadRequest
-from fa import maps
+from src import util
+from src.config import Settings
+from src.downloadManager import DownloadRequest
+from src.fa import maps
class TutorialItemDelegate(QtWidgets.QStyledItemDelegate):
diff --git a/src/ui/status_logo.py b/src/ui/status_logo.py
index 79ad0075d..46c1eb352 100644
--- a/src/ui/status_logo.py
+++ b/src/ui/status_logo.py
@@ -3,8 +3,8 @@
from PyQt6.QtWidgets import QLabel
from PyQt6.QtWidgets import QMenu
-import util
-from client.clientstate import ClientState
+from src import util
+from src.client.clientstate import ClientState
class StatusLogo(QLabel):
diff --git a/src/unitdb/unitdbtab.py b/src/unitdb/unitdbtab.py
index 580c86580..88d5f79f8 100644
--- a/src/unitdb/unitdbtab.py
+++ b/src/unitdb/unitdbtab.py
@@ -1,8 +1,8 @@
from PyQt6.QtCore import QUrl
from PyQt6.QtGui import QDesktopServices
-import util
-from config import Settings
+from src import util
+from src.config import Settings
FormClass, BaseClass = util.THEME.loadUiType("unitdb/unitdb.ui")
diff --git a/src/updater/__init__.py b/src/updater/__init__.py
index 29714d5d3..c48c886e2 100644
--- a/src/updater/__init__.py
+++ b/src/updater/__init__.py
@@ -4,12 +4,12 @@
from PyQt6.QtWidgets import QMessageBox
from semantic_version import Version
-from updater.base import Releases
-from updater.base import UpdateChecker
-from updater.base import UpdateNotifier
-from updater.base import UpdateSettings
-from updater.widgets import UpdateDialog
-from updater.widgets import UpdateSettingsDialog
+from src.updater.base import Releases
+from src.updater.base import UpdateChecker
+from src.updater.base import UpdateNotifier
+from src.updater.base import UpdateSettings
+from src.updater.widgets import UpdateDialog
+from src.updater.widgets import UpdateSettingsDialog
class ClientUpdateTools(QObject):
diff --git a/src/updater/base.py b/src/updater/base.py
index 51752a33f..715955cac 100644
--- a/src/updater/base.py
+++ b/src/updater/base.py
@@ -8,8 +8,8 @@
from PyQt6.QtNetwork import QNetworkRequest
from semantic_version import Version
-from config import Settings
-from decorators import with_logger
+from src.config import Settings
+from src.decorators import with_logger
class UpdateChannel(Enum):
diff --git a/src/updater/process.py b/src/updater/process.py
index a5f4d01f8..03df9919c 100644
--- a/src/updater/process.py
+++ b/src/updater/process.py
@@ -8,8 +8,8 @@
from PyQt6.QtNetwork import QNetworkReply
from PyQt6.QtNetwork import QNetworkRequest
-import client
-from decorators import with_logger
+from src import client
+from src.decorators import with_logger
@with_logger
diff --git a/src/updater/widgets.py b/src/updater/widgets.py
index f4a1961fd..9bc0ff68f 100644
--- a/src/updater/widgets.py
+++ b/src/updater/widgets.py
@@ -1,10 +1,10 @@
from PyQt6.QtWidgets import QLayout
-import util
-from decorators import with_logger
-from updater.base import ReleaseType
-from updater.base import UpdateChannel
-from updater.process import ClientUpdater
+from src import util
+from src.decorators import with_logger
+from src.updater.base import ReleaseType
+from src.updater.base import UpdateChannel
+from src.updater.process import ClientUpdater
FormClass, BaseClass = util.THEME.loadUiType("client/update.ui")
diff --git a/src/util/__init__.py b/src/util/__init__.py
index 2265a398c..1275b703b 100644
--- a/src/util/__init__.py
+++ b/src/util/__init__.py
@@ -18,13 +18,13 @@
from PyQt6.QtGui import QDesktopServices
from PyQt6.QtWidgets import QMessageBox
-import fafpath
-from config import VERSION as VERSION_STRING
-from config import Settings
-from config import _settings # Stolen from Config because reasons
-from mapGenerator import mapgenUtils
-from util.theme import Theme
-from util.theme import ThemeSet
+from src import fafpath
+from src.config import VERSION as VERSION_STRING
+from src.config import Settings
+from src.config import _settings # Stolen from Config because reasons
+from src.mapGenerator import mapgenUtils
+from src.util.theme import Theme
+from src.util.theme import ThemeSet
if sys.platform == 'win32':
import win32service
diff --git a/src/util/crash.py b/src/util/crash.py
index ac8c73d76..8b1e37691 100644
--- a/src/util/crash.py
+++ b/src/util/crash.py
@@ -5,12 +5,12 @@
from PyQt6.QtCore import QUrl
from PyQt6.QtGui import QDesktopServices
-import config
-import util
-from config import Settings
-from util import APPDATA_DIR
-from util import PERSONAL_DIR
-from util import VERSION_STRING
+from src import config
+from src import util
+from src.config import Settings
+from src.util import APPDATA_DIR
+from src.util import PERSONAL_DIR
+from src.util import VERSION_STRING
CRASH_REPORT_USER = "pre-login"
diff --git a/src/vaults/dialogs.py b/src/vaults/dialogs.py
index b892759d6..0bddd41bb 100644
--- a/src/vaults/dialogs.py
+++ b/src/vaults/dialogs.py
@@ -8,9 +8,9 @@
from PyQt6 import QtNetwork
from PyQt6 import QtWidgets
-from downloadManager import FileDownload
-from downloadManager import ZipDownloadExtract
-from util import capitalize
+from src.downloadManager import FileDownload
+from src.downloadManager import ZipDownloadExtract
+from src.util import capitalize
logger = logging.getLogger(__name__)
diff --git a/src/vaults/mapvault/mapitem.py b/src/vaults/mapvault/mapitem.py
index ed4481d2e..b244c6aa0 100644
--- a/src/vaults/mapvault/mapitem.py
+++ b/src/vaults/mapvault/mapitem.py
@@ -2,14 +2,14 @@
from typing import TYPE_CHECKING
-import util
-from api.models.Map import Map
-from fa import maps
-from mapGenerator import mapgenUtils
-from vaults.vaultitem import VaultListItem
+from src import util
+from src.api.models.Map import Map
+from src.fa import maps
+from src.mapGenerator import mapgenUtils
+from src.vaults.vaultitem import VaultListItem
if TYPE_CHECKING:
- from vaults.mapvault.mapvault import MapVault
+ from src.vaults.mapvault.mapvault import MapVault
class MapListItem(VaultListItem):
diff --git a/src/vaults/mapvault/mapvault.py b/src/vaults/mapvault/mapvault.py
index 1cdc7450e..f8c49f3f5 100644
--- a/src/vaults/mapvault/mapvault.py
+++ b/src/vaults/mapvault/mapvault.py
@@ -12,17 +12,17 @@
from PyQt6 import QtCore
from PyQt6 import QtWidgets
-import util
-from api.models.Map import Map
-from api.vaults_api import MapApiConnector
-from api.vaults_api import MapPoolApiConnector
-from fa import maps
-from vaults import luaparser
-from vaults.mapvault.mapitem import MapListItem
-from vaults.vault import Vault
+from src import util
+from src.api.models.Map import Map
+from src.api.vaults_api import MapApiConnector
+from src.api.vaults_api import MapPoolApiConnector
+from src.fa import maps
+from src.vaults import luaparser
+from src.vaults.mapvault.mapitem import MapListItem
+from src.vaults.vault import Vault
if TYPE_CHECKING:
- from client._clientwindow import ClientWindow
+ from src.client._clientwindow import ClientWindow
from .mapwidget import MapWidget
diff --git a/src/vaults/mapvault/mapwidget.py b/src/vaults/mapvault/mapwidget.py
index a9178b2f5..36c0a9cf6 100644
--- a/src/vaults/mapvault/mapwidget.py
+++ b/src/vaults/mapvault/mapwidget.py
@@ -7,15 +7,15 @@
from PyQt6 import QtGui
from PyQt6 import QtWidgets
-import util
-from downloadManager import DownloadRequest
-from downloadManager import MapLargePreviewDownloader
-from fa import maps
-from mapGenerator import mapgenUtils
-from vaults.mapvault.mapitem import MapListItem
+from src import util
+from src.downloadManager import DownloadRequest
+from src.downloadManager import MapLargePreviewDownloader
+from src.fa import maps
+from src.mapGenerator import mapgenUtils
+from src.vaults.mapvault.mapitem import MapListItem
if TYPE_CHECKING:
- from vaults.mapvault.mapvault import MapVault
+ from src.vaults.mapvault.mapvault import MapVault
FormClass, BaseClass = util.THEME.loadUiType("vaults/mapvault/map.ui")
diff --git a/src/vaults/modvault/moditem.py b/src/vaults/modvault/moditem.py
index b510b63a9..805982b9a 100644
--- a/src/vaults/modvault/moditem.py
+++ b/src/vaults/modvault/moditem.py
@@ -4,14 +4,14 @@
import urllib
from typing import TYPE_CHECKING
-import util
-from api.models.Mod import Mod
-from api.models.ModVersion import ModType
-from vaults.modvault import utils
-from vaults.vaultitem import VaultListItem
+from src import util
+from src.api.models.Mod import Mod
+from src.api.models.ModVersion import ModType
+from src.vaults.modvault import utils
+from src.vaults.vaultitem import VaultListItem
if TYPE_CHECKING:
- from vaults.modvault.modvault import ModVault
+ from src.vaults.modvault.modvault import ModVault
class ModListItem(VaultListItem):
diff --git a/src/vaults/modvault/modvault.py b/src/vaults/modvault/modvault.py
index 5b0683add..bbcc045fa 100644
--- a/src/vaults/modvault/modvault.py
+++ b/src/vaults/modvault/modvault.py
@@ -44,11 +44,11 @@
from PyQt6 import QtCore
from PyQt6 import QtWidgets
-from api.vaults_api import ModApiConnector
-from vaults.modvault import utils
-from vaults.modvault.moditem import ModListItem
-from vaults.modvault.utils import ModInfo
-from vaults.vault import Vault
+from src.api.vaults_api import ModApiConnector
+from src.vaults.modvault import utils
+from src.vaults.modvault.moditem import ModListItem
+from src.vaults.modvault.utils import ModInfo
+from src.vaults.vault import Vault
from .modwidget import ModWidget
from .uimodwidget import UIModWidget
diff --git a/src/vaults/modvault/modwidget.py b/src/vaults/modvault/modwidget.py
index c7dcc8b1b..f7fac2c7d 100644
--- a/src/vaults/modvault/modwidget.py
+++ b/src/vaults/modvault/modwidget.py
@@ -6,10 +6,10 @@
from PyQt6 import QtGui
from PyQt6 import QtWidgets
-import util
-from api.models.ModType import ModType
-from util import strtodate
-from vaults.modvault.moditem import ModListItem
+from src import util
+from src.api.models.ModType import ModType
+from src.util import strtodate
+from src.vaults.modvault.moditem import ModListItem
from .modvault import utils
diff --git a/src/vaults/modvault/uimodwidget.py b/src/vaults/modvault/uimodwidget.py
index ad3da49b6..553b539a6 100644
--- a/src/vaults/modvault/uimodwidget.py
+++ b/src/vaults/modvault/uimodwidget.py
@@ -2,8 +2,8 @@
from PyQt6 import QtCore
from PyQt6 import QtWidgets
-import util
-from vaults.modvault import utils
+from src import util
+from src.vaults.modvault import utils
FormClass, BaseClass = util.THEME.loadUiType("vaults/modvault/uimod.ui")
diff --git a/src/vaults/modvault/uploadwidget.py b/src/vaults/modvault/uploadwidget.py
index e35757d83..65c1376ec 100644
--- a/src/vaults/modvault/uploadwidget.py
+++ b/src/vaults/modvault/uploadwidget.py
@@ -5,8 +5,8 @@
from PyQt6 import QtCore
from PyQt6 import QtWidgets
-import util
-from vaults.modvault import utils
+from src import util
+from src.vaults.modvault import utils
FormClass, BaseClass = util.THEME.loadUiType("vaults/modvault/upload.ui")
diff --git a/src/vaults/modvault/utils.py b/src/vaults/modvault/utils.py
index 294741c91..0b458506d 100644
--- a/src/vaults/modvault/utils.py
+++ b/src/vaults/modvault/utils.py
@@ -8,11 +8,11 @@
from PyQt6 import QtGui
from PyQt6 import QtWidgets
-import util
-from config import Settings
-from util import PREFSFILENAME
-from vaults import luaparser
-from vaults.dialogs import downloadVaultAsset
+from src import util
+from src.config import Settings
+from src.util import PREFSFILENAME
+from src.vaults import luaparser
+from src.vaults.dialogs import downloadVaultAsset
logger = logging.getLogger(__name__)
diff --git a/src/vaults/vault.py b/src/vaults/vault.py
index 87d69fb28..3ff8422a9 100644
--- a/src/vaults/vault.py
+++ b/src/vaults/vault.py
@@ -5,13 +5,13 @@
from PyQt6 import QtCore
-import util
-from ui.busy_widget import BusyWidget
-from vaults.vaultitem import VaultItemDelegate
-from vaults.vaultitem import VaultListItem
+from src import util
+from src.ui.busy_widget import BusyWidget
+from src.vaults.vaultitem import VaultItemDelegate
+from src.vaults.vaultitem import VaultListItem
if TYPE_CHECKING:
- from client._clientwindow import ClientWindow
+ from src.client._clientwindow import ClientWindow
logger = logging.getLogger(__name__)
diff --git a/src/vaults/vaultitem.py b/src/vaults/vaultitem.py
index 4e5cbcf00..254824985 100644
--- a/src/vaults/vaultitem.py
+++ b/src/vaults/vaultitem.py
@@ -8,14 +8,14 @@
from PyQt6.QtWidgets import QStyle
from PyQt6.QtWidgets import QStyledItemDelegate
-import util
-from api.models.Map import Map
-from api.models.Mod import Mod
-from downloadManager import Downloader
-from downloadManager import DownloadRequest
+from src import util
+from src.api.models.Map import Map
+from src.api.models.Mod import Mod
+from src.downloadManager import Downloader
+from src.downloadManager import DownloadRequest
if TYPE_CHECKING:
- from vaults.vault import Vault
+ from src.vaults.vault import Vault
class VaultListItem(QListWidgetItem):
diff --git a/tests/conftest.py b/tests/conftest.py
index 335177a67..aa09a43f6 100644
--- a/tests/conftest.py
+++ b/tests/conftest.py
@@ -1,14 +1,14 @@
import pytest
-from model.game import Game
-from model.gameset import Gameset
-from model.player import Player
-from model.playerset import Playerset
+from src.model.game import Game
+from src.model.gameset import Gameset
+from src.model.player import Player
+from src.model.playerset import Playerset
@pytest.fixture
def client_instance():
- from client import instance
+ from src.client import instance
return instance
@@ -34,5 +34,5 @@ def gameset(mocker):
@pytest.fixture
def mouse_position(client_instance):
- from client.mouse_position import MousePosition
+ from src.client.mouse_position import MousePosition
return MousePosition(client_instance)
diff --git a/tests/fa/test_updater.py b/tests/fa/test_updater.py
index 0e9b0757e..406c81033 100644
--- a/tests/fa/test_updater.py
+++ b/tests/fa/test_updater.py
@@ -6,7 +6,7 @@
from PyQt6 import QtCore
from PyQt6 import QtWidgets
-from fa.game_updater.updater import UpdaterProgressDialog
+from src.fa.game_updater.updater import UpdaterProgressDialog
class NoIsFinished(QtCore.QObject):
diff --git a/tests/integration_tests/model/test_player_game.py b/tests/integration_tests/model/test_player_game.py
index 2f1206ac8..3d3ed9b7e 100644
--- a/tests/integration_tests/model/test_player_game.py
+++ b/tests/integration_tests/model/test_player_game.py
@@ -1,9 +1,12 @@
import copy
-from model.game import Game, GameState, GameVisibility
-from model.gameset import Gameset, PlayerGameIndex
-from model.player import Player
-from model.playerset import Playerset
+from src.model.game import Game
+from src.model.game import GameState
+from src.model.game import GameVisibility
+from src.model.gameset import Gameset
+from src.model.gameset import PlayerGameIndex
+from src.model.player import Player
+from src.model.playerset import Playerset
GAME_DICT = {
"uid": 1,
diff --git a/tests/integration_tests/model/test_player_ircuser.py b/tests/integration_tests/model/test_player_ircuser.py
index 222495747..6a9f821e1 100644
--- a/tests/integration_tests/model/test_player_ircuser.py
+++ b/tests/integration_tests/model/test_player_ircuser.py
@@ -1,9 +1,9 @@
import pytest
-from model.ircuser import IrcUser
-from model.ircuserset import IrcUserset
-from model.player import Player
-from model.playerset import Playerset
+from src.model.ircuser import IrcUser
+from src.model.ircuserset import IrcUserset
+from src.model.player import Player
+from src.model.playerset import Playerset
def test_player_change(mocker):
diff --git a/tests/unit_tests/client/test_gameurl.py b/tests/unit_tests/client/test_gameurl.py
index 5df77e797..b5598a743 100644
--- a/tests/unit_tests/client/test_gameurl.py
+++ b/tests/unit_tests/client/test_gameurl.py
@@ -1,6 +1,7 @@
import pytest
-from util.gameurl import GameUrl, GameUrlType
+from src.util.gameurl import GameUrl
+from src.util.gameurl import GameUrlType
# NOTE - any time url format gets updated, fix below URLs to be correct
# in everything except what we test for!
diff --git a/tests/unit_tests/client/test_updating.py b/tests/unit_tests/client/test_updating.py
index a0c97e64c..276253422 100644
--- a/tests/unit_tests/client/test_updating.py
+++ b/tests/unit_tests/client/test_updating.py
@@ -1,10 +1,10 @@
import pytest
-import config
+from src import config
def test_client_sends_current_version(qtbot, mocker):
- import client
+ from src import client
c = client.instance
mocker.patch.object(c.lobby_connection, 'send')
mocker.patch.object(c.lobby_connection, 'connected')
@@ -22,7 +22,7 @@ def test_client_sends_current_version(qtbot, mocker):
reason="Run this manually to test client update downloading",
)
def test_client_updater(qtbot):
- from client.updater import ClientUpdater
+ from src.client.updater import ClientUpdater
updater = ClientUpdater(
"http://content.faforever.com/FAForever-0.10.125.msi",
diff --git a/tests/unit_tests/model/chat/test_channel.py b/tests/unit_tests/model/chat/test_channel.py
index 150c6cf20..b27e67881 100644
--- a/tests/unit_tests/model/chat/test_channel.py
+++ b/tests/unit_tests/model/chat/test_channel.py
@@ -1,6 +1,8 @@
import pytest
-from model.chat.channel import Channel, ChannelID, ChannelType
+from src.model.chat.channel import Channel
+from src.model.chat.channel import ChannelID
+from src.model.chat.channel import ChannelType
@pytest.fixture
diff --git a/tests/unit_tests/model/chat/test_channelchatter.py b/tests/unit_tests/model/chat/test_channelchatter.py
index 2223b2002..ca60c9140 100644
--- a/tests/unit_tests/model/chat/test_channelchatter.py
+++ b/tests/unit_tests/model/chat/test_channelchatter.py
@@ -1,6 +1,6 @@
import pytest
-from model.chat.channelchatter import ChannelChatter
+from src.model.chat.channelchatter import ChannelChatter
@pytest.fixture
diff --git a/tests/unit_tests/model/chat/test_channelset.py b/tests/unit_tests/model/chat/test_channelset.py
index 56122c8be..61a759a41 100644
--- a/tests/unit_tests/model/chat/test_channelset.py
+++ b/tests/unit_tests/model/chat/test_channelset.py
@@ -1,7 +1,8 @@
import pytest
-from model.chat.channel import ChannelID, ChannelType
-from model.chat.channelset import Channelset
+from src.model.chat.channel import ChannelID
+from src.model.chat.channel import ChannelType
+from src.model.chat.channelset import Channelset
class MockChannels():
diff --git a/tests/unit_tests/model/chat/test_lines.py b/tests/unit_tests/model/chat/test_lines.py
index 78a6e70f5..ddbf19548 100644
--- a/tests/unit_tests/model/chat/test_lines.py
+++ b/tests/unit_tests/model/chat/test_lines.py
@@ -1,6 +1,6 @@
import pytest
-from model.chat.channel import Lines
+from src.model.chat.channel import Lines
def test_lines_dont_care_about_line_internals():
diff --git a/tests/unit_tests/model/test_game.py b/tests/unit_tests/model/test_game.py
index e13d23742..db1d3f804 100644
--- a/tests/unit_tests/model/test_game.py
+++ b/tests/unit_tests/model/test_game.py
@@ -2,7 +2,7 @@
import pytest
-from model import game
+from src.model import game
DEFAULT_DICT = {
"uid": 1,
diff --git a/tests/unit_tests/model/test_gameset.py b/tests/unit_tests/model/test_gameset.py
index 19f18be43..74100885f 100644
--- a/tests/unit_tests/model/test_gameset.py
+++ b/tests/unit_tests/model/test_gameset.py
@@ -2,7 +2,8 @@
import pytest
-from model import game, gameset
+from src.model import game
+from src.model import gameset
DEFAULT_DICT = {
"uid": 1,
diff --git a/tests/unit_tests/model/test_ircuser.py b/tests/unit_tests/model/test_ircuser.py
index de00cda2b..ac69cb4a0 100644
--- a/tests/unit_tests/model/test_ircuser.py
+++ b/tests/unit_tests/model/test_ircuser.py
@@ -1,4 +1,4 @@
-from model.ircuser import IrcUser
+from src.model.ircuser import IrcUser
def test_simple_init():
diff --git a/tests/unit_tests/model/test_ircuserset.py b/tests/unit_tests/model/test_ircuserset.py
index e0953bd9d..c0d56fad4 100644
--- a/tests/unit_tests/model/test_ircuserset.py
+++ b/tests/unit_tests/model/test_ircuserset.py
@@ -1,7 +1,7 @@
import pytest
-from model.ircuser import IrcUser
-from model.ircuserset import IrcUserset
+from src.model.ircuser import IrcUser
+from src.model.ircuserset import IrcUserset
@pytest.fixture
diff --git a/tests/unit_tests/model/test_player.py b/tests/unit_tests/model/test_player.py
index 8480dd4ab..2138c9385 100644
--- a/tests/unit_tests/model/test_player.py
+++ b/tests/unit_tests/model/test_player.py
@@ -1,5 +1,5 @@
-from model.player import Player
-from model.rating import RatingType
+from src.model.player import Player
+from src.model.rating import RatingType
DEFAULT_DICT = {
"id_": 17,
diff --git a/tests/unit_tests/model/test_playerset.py b/tests/unit_tests/model/test_playerset.py
index 000c19840..db90f3078 100644
--- a/tests/unit_tests/model/test_playerset.py
+++ b/tests/unit_tests/model/test_playerset.py
@@ -1,7 +1,7 @@
import pytest
-from model.player import Player
-from model.playerset import Playerset
+from src.model.player import Player
+from src.model.playerset import Playerset
DEFAULT_DICT = {
"id_": 17,
diff --git a/tests/unit_tests/themes/test_theme.py b/tests/unit_tests/themes/test_theme.py
index 0988cdb06..bc28b8476 100644
--- a/tests/unit_tests/themes/test_theme.py
+++ b/tests/unit_tests/themes/test_theme.py
@@ -1,6 +1,6 @@
from semantic_version import Version
-from util import Theme
+from src.util import Theme
THEME_FILE_FUNS = [
"pixmap",
diff --git a/tests/unit_tests/themes/test_themeset.py b/tests/unit_tests/themes/test_themeset.py
index c761dcc03..acaa76701 100644
--- a/tests/unit_tests/themes/test_themeset.py
+++ b/tests/unit_tests/themes/test_themeset.py
@@ -1,6 +1,6 @@
from semantic_version import Version
-from util import ThemeSet
+from src.util import ThemeSet
THEME_FILE_FUNS = [
"pixmap",