Skip to content

Commit 19d515f

Browse files
authored
Refactor (#113)
* refactor text.py * black & isort * no_implicit_optional fix * mypy fixes * fix logging mess * fix tests * update tests workflow * fix workflow
1 parent 2262741 commit 19d515f

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

49 files changed

+368
-420
lines changed

.github/workflows/ci.yml

+18-12
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@ name: CI
22

33
on:
44
push:
5-
branches: [master, main]
5+
branches: [master, main, v2]
66
pull_request:
7-
branches: [master, main]
7+
branches: [master, main, v2]
88
schedule:
99
- cron: '0 0 * * 1'
1010

@@ -13,11 +13,17 @@ jobs:
1313
name: Pytest
1414
runs-on: ubuntu-latest
1515

16+
strategy:
17+
matrix:
18+
include:
19+
- os: windows-latest
20+
- os: ubuntu-latest
21+
1622
steps:
17-
- uses: actions/checkout@v2
23+
- uses: actions/checkout@v4
1824

1925
- name: Set up Python
20-
uses: actions/setup-python@v2
26+
uses: actions/setup-python@v5
2127
with:
2228
python-version: '3.10'
2329

@@ -37,10 +43,10 @@ jobs:
3743
runs-on: ubuntu-latest
3844

3945
steps:
40-
- uses: actions/checkout@v2
46+
- uses: actions/checkout@v4
4147

4248
- name: Set up Python
43-
uses: actions/setup-python@v2
49+
uses: actions/setup-python@v5
4450
with:
4551
python-version: '3.10'
4652

@@ -50,20 +56,20 @@ jobs:
5056
pip install -r requirements.txt
5157
5258
- name: Run isort check
53-
run: isort .
59+
run: python -m isort --check-only .
5460

5561
- name: Run black check
56-
run: black .
62+
run: python -m black --check .
5763

5864
mypy:
5965
name: mypy
6066
runs-on: ubuntu-latest
6167

6268
steps:
63-
- uses: actions/checkout@v2
69+
- uses: actions/checkout@v4
6470

6571
- name: Set up Python
66-
uses: actions/setup-python@v2
72+
uses: actions/setup-python@v5
6773
with:
6874
python-version: '3.10'
6975

@@ -72,5 +78,5 @@ jobs:
7278
python -m pip install --upgrade pip
7379
pip install -r requirements.txt
7480
75-
- name: Run mypy
76-
run: mypy .
81+
- name: Run mypy check
82+
run: python -m isort --check-only .

main.py

+2-4
Original file line numberDiff line numberDiff line change
@@ -9,19 +9,17 @@
99

1010
from config import config
1111
from modules.bot_state import state_manager
12-
from modules.setup import parse_console_logs_and_build_conversation_history
1312
from modules.commands.gui.openai import gpt3_cmd_handler
1413
from modules.gui.log_window import (
1514
CopyStdoutToSocket,
1615
LogWindow,
1716
RedirectStdoutToLogWindow,
1817
)
1918
from modules.lobby_manager import lobby_manager
20-
from modules.logs import get_logger, setup_loggers
19+
from modules.logs import gui_logger, setup_loggers
2120
from modules.message_queueing import message_queue_handler
2221
from modules.server import app
23-
24-
gui_logger = get_logger("gui")
22+
from modules.setup import parse_console_logs_and_build_conversation_history
2523

2624

2725
def keyboard_on_press(key):

modules/api/github.py

+1-4
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,10 @@
33
import requests
44

55
from config import config
6-
from modules.logs import get_logger
6+
from modules.logs import gui_logger, main_logger
77

88
GITHUB_API_REPO_LINK = "https://api.github.com/repos/dborodin836/TF2-GPTChatBot/releases/latest"
99

10-
main_logger = get_logger("main")
11-
gui_logger = get_logger("gui")
12-
1310

1411
def check_for_updates() -> None:
1512
"""

modules/api/llm/openai.py

+2-5
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,7 @@
55

66
from config import config
77
from modules.api.llm.base import LLMProvider
8-
from modules.logs import get_logger
9-
10-
main_logger = get_logger("main")
11-
gui_logger = get_logger("gui")
8+
from modules.logs import gui_logger, main_logger
129

1310

1411
class OpenAILLMProvider(LLMProvider):
@@ -62,7 +59,7 @@ def get_tts(message: str, settings: dict):
6259
model=settings.get("model", "tts-1"),
6360
voice=settings.get("voice", "alloy"),
6461
input=message,
65-
speed=settings.get("speed", NotGiven())
62+
speed=settings.get("speed", NotGiven()),
6663
)
6764

6865
return response

modules/api/llm/textgen_webui.py

+1-4
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,7 @@
22

33
from config import config
44
from modules.api.llm.base import LLMProvider
5-
from modules.logs import get_logger
6-
7-
main_logger = get_logger("main")
8-
combo_logger = get_logger("combo")
5+
from modules.logs import combo_logger, main_logger
96

107

118
class TextGenerationWebUILLMProvider(LLMProvider):

modules/bans.py

+1-5
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,9 @@
33
from json import JSONDecodeError
44
from typing import Optional, Set
55

6-
from modules.logs import get_logger, log_gui_general_message
6+
from modules.logs import combo_logger, log_gui_general_message, main_logger
77
from modules.typing import Player
88

9-
main_logger = get_logger("main")
10-
gui_logger = get_logger("gui")
11-
combo_logger = get_logger("combo")
12-
139

1410
class BansManager:
1511
def __init__(self, bans_file: Optional[str] = None):

modules/bot_state.py

+1-4
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,4 @@
1-
from modules.logs import get_logger, log_gui_general_message
2-
3-
main_logger = get_logger("main")
4-
gui_logger = get_logger("gui")
1+
from modules.logs import log_gui_general_message, main_logger
52

63

74
class StateManager:

modules/builder/loaders.py

+20-23
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,29 @@
11
from abc import ABC
2-
from typing import Dict
2+
from typing import Callable, Dict
33

44
from modules.api.llm.groq import GroqCloudLLMProvider
55
from modules.api.llm.openai import OpenAILLMProvider
66
from modules.api.llm.textgen_webui import TextGenerationWebUILLMProvider
7-
from modules.commands.tts import TTSCommand
8-
from modules.commands.rcon import RconCommand
9-
from modules.commands.llm import CommandGlobalChatLLMChatCommand, CommandPrivateChatLLMChatCommand, \
10-
ConfirmableQuickQueryLLMCommand, QuickQueryLLMCommand
117
from modules.commands.decorators import (
128
admin_only,
9+
blacklist_factory,
1310
deny_empty_prompt,
1411
disabled,
1512
empty_prompt_message_response,
1613
openai_moderated,
1714
whitelist_factory,
18-
blacklist_factory
1915
)
20-
from modules.logs import get_logger
16+
from modules.commands.llm import (
17+
CommandGlobalChatLLMChatCommand,
18+
CommandPrivateChatLLMChatCommand,
19+
ConfirmableQuickQueryLLMCommand,
20+
QuickQueryLLMCommand,
21+
)
22+
from modules.commands.rcon import RconCommand
23+
from modules.commands.tts import TTSCommand
24+
from modules.logs import gui_logger
2125
from modules.typing import CommandSchemaDefinition
2226

23-
main_logger = get_logger("main")
24-
gui_logger = get_logger("gui")
25-
2627
LLM_COMMAND_SETTINGS = {
2728
"prompt-file",
2829
"enable-soft-limit",
@@ -39,14 +40,14 @@
3940
}
4041

4142
# Traits
42-
WRAPPERS = {
43+
WRAPPERS: Dict[str, Callable] = {
4344
"openai-moderated": openai_moderated,
4445
"admin-only": admin_only,
4546
"empty-prompt-message-response": empty_prompt_message_response,
4647
"disabled": disabled,
4748
"deny-empty-prompt": deny_empty_prompt,
4849
"whitelist": whitelist_factory,
49-
"blacklist": blacklist_factory
50+
"blacklist": blacklist_factory,
5051
}
5152

5253
LLM_PROVIDERS = {
@@ -62,7 +63,7 @@ class InvalidCommandException(Exception): ...
6263
class Loader(ABC):
6364
def __init__(self, raw_data: dict) -> None:
6465
self.raw_command_data = raw_data
65-
self.command_data = {}
66+
self.command_data: Dict = {}
6667

6768
def get_data(self) -> dict:
6869
self.__load_settings()
@@ -145,17 +146,13 @@ def __load_rcon_command(self):
145146
klass=RconCommand, loader=RCONCommandLoader, settings={"wait-ms"}
146147
),
147148
"openai-tts": CommandSchemaDefinition(
148-
klass=TTSCommand, loader=Loader, settings={
149-
"model",
150-
"voice",
151-
"speed",
152-
"volume",
153-
"output_device"
154-
}
149+
klass=TTSCommand,
150+
loader=Loader,
151+
settings={"model", "voice", "speed", "volume", "output_device"},
155152
),
156-
'confirmable-quick-query': CommandSchemaDefinition(
153+
"confirmable-quick-query": CommandSchemaDefinition(
157154
klass=ConfirmableQuickQueryLLMCommand,
158155
loader=LLMCommandLoader,
159-
settings=LLM_COMMAND_SETTINGS
160-
)
156+
settings=LLM_COMMAND_SETTINGS,
157+
),
161158
}

modules/builder/utils.py

+7-8
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,7 @@
77
from modules.builder.loaders import COMMAND_TYPES, WRAPPERS, InvalidCommandException
88
from modules.command_controllers import CommandController
99
from modules.commands.base import BaseCommand
10-
from modules.logs import get_logger
11-
12-
main_logger = get_logger("main")
13-
gui_logger = get_logger("gui")
10+
from modules.logs import gui_logger, main_logger
1411

1512

1613
def get_commands_from_yaml() -> List[dict]:
@@ -21,7 +18,10 @@ def get_commands_from_yaml() -> List[dict]:
2118

2219

2320
def load_command_specific_attrs(type_: str, raw_data: dict) -> Dict:
24-
loader = COMMAND_TYPES.get(type_).loader
21+
command_def = COMMAND_TYPES.get(type_)
22+
if command_def is None:
23+
raise InvalidCommandException(f"Command type {type_} not supported")
24+
loader = command_def.loader
2525
loader_instance = loader(raw_data)
2626
return loader_instance.get_data()
2727

@@ -45,20 +45,19 @@ def create_command_from_dict(cmd: dict) -> BaseCommand:
4545
if traits := cmd.get("traits"):
4646
wrappers = []
4747
for wrapper in traits:
48-
wrapper: dict
4948
try:
5049
wrapper_id = wrapper["__id"]
5150
wrapper.pop("__id")
5251
if len(list(wrapper.keys())) > 0:
5352
factory = WRAPPERS[wrapper_id]
54-
wrappers.append(factory(**wrapper))
53+
wrappers.append(factory(**wrapper)) # type: ignore
5554
else:
5655
wrappers.append(WRAPPERS[wrapper_id])
5756
except Exception as e:
5857
gui_logger.warning(f"{e} is not a valid trait.")
5958
command_dict.update(wrappers=wrappers)
6059

61-
return type(class_name, (type_,), command_dict)
60+
return type(class_name, (type_,), command_dict) # type: ignore
6261

6362

6463
def load_commands(controller: CommandController) -> None:

0 commit comments

Comments
 (0)