From bc53e6d65512ce3098f5fefad82dc6d7ae08fef0 Mon Sep 17 00:00:00 2001 From: pranav-1711 Date: Tue, 15 Feb 2022 09:13:45 +0530 Subject: [PATCH] tools lint fix. --- dist/ba_root/mods/setting.py | 57 +++++++----- dist/ba_root/mods/tools/logger.py | 148 ++++++++++++++++-------------- 2 files changed, 113 insertions(+), 92 deletions(-) diff --git a/dist/ba_root/mods/setting.py b/dist/ba_root/mods/setting.py index 054e82c..5c96a43 100644 --- a/dist/ba_root/mods/setting.py +++ b/dist/ba_root/mods/setting.py @@ -1,34 +1,43 @@ -# Released under the MIT License. See LICENSE for details. -import _ba, json +"""Module to update `setting.json`.""" -settings_path = _ba.env()["python_directory_user"]+"/setting.json" +# ba_meta require api 6 +# (see https://ballistica.net/wiki/meta-tag-system) -settings=None +from __future__ import annotations + +from typing import TYPE_CHECKING +from functools import lru_cache + +import json +import _ba + +if TYPE_CHECKING: + pass - -def get_settings_data(): - global settings - if settings==None: - with open(settings_path, "r") as f: - data = json.load(f) - settings=data - return settings - else: - - return settings +SETTINGS_PATH = _ba.env().get("python_directory_user", "") + "/setting.json" +@lru_cache(maxsize=None) +def get_settings_data() -> dict: + """Returns the dictionary of settings related to the server. -def commit(data): - with open(settings_path, "w") as f: - json.dump(data, f, indent=4) + Returns + ------- + dict + settings related to server + """ + with open(SETTINGS_PATH, mode="r", encoding="utf-8") as data: + return json.load(data) +def commit(data: dict) -> None: + """Commits the data in setting file. -def sendError(msg : str, client_id : int = None): - if client_id == None: - _ba.screenmessage(msg, color=(1,0,0)) - else: - _ba.screenmessage(msg, color=(1,0,0), transient=True, clients=[client_id]) - + Parameters + ---------- + data : dict + data to be commited + """ + with open(SETTINGS_PATH, mode="w", encoding="utf-8") as setting_file: + json.dump(data, setting_file, indent=4) diff --git a/dist/ba_root/mods/tools/logger.py b/dist/ba_root/mods/tools/logger.py index 0acb247..3a3d063 100644 --- a/dist/ba_root/mods/tools/logger.py +++ b/dist/ba_root/mods/tools/logger.py @@ -1,86 +1,98 @@ +"""Module to Keeps the log of multiple things.""" + +# ba_meta require api 6 +# (see https://ballistica.net/wiki/meta-tag-system) + +from __future__ import annotations + +from typing import TYPE_CHECKING +from dataclasses import dataclass -import ba,_ba -import datetime; import os +import datetime import threading -# ct stores current time - import setting -settings = setting.get_settings_data() +import _ba -if settings['discordbot']["enable"]: - from tools import discordbot +if TYPE_CHECKING: + pass -path=_ba.env()['python_directory_user'] -serverdata=os.path.join(path,"serverData" + os.sep) -chats=[] -joinlog=[] -cmndlog=[] -misclogs=[] +SETTINGS = setting.get_settings_data() +SERVER_DATA_PATH = os.path.join( + _ba.env()["python_directory_user"], "serverData" + os.sep +) -def log(msg,mtype='sys'): - global chats,joinlog,cmndlog,misclogs - if settings['discordbot']["enable"]: - m=msg.replace('||','|') - discordbot.push_log("***"+mtype+":***"+m) +if SETTINGS["discordbot"]["enable"]: + from features import discord_bot - ct=datetime.datetime.now() - msg=str(ct)+": "+msg +"\n" - if mtype=='chat': - chats.append(msg) - if len(chats) >10: - dumplogs(chats,"chat").start() - chats=[] - elif mtype=="playerjoin": - joinlog.append(msg) - if len(joinlog)>3: - dumplogs(joinlog,"joinlog").start() - joinlog=[] - elif mtype=='chatcmd': - cmndlog.append(msg) - if len(cmndlog)>3: - dumplogs(cmndlog,"cmndlog").start() - cmndlog=[] - else: - misclogs.append(msg) - if len(misclogs)>5: - dumplogs(misclogs,"sys").start() - misclogs=[] +@dataclass +class RecentLogs: + """Saves the recent logs.""" + + chats: list[str] = [] + joinlog: list[str] = [] + cmndlog: list[str] = [] + misclogs: list[str] = [] + + +def log(msg: str, mtype: str = "sys") -> None: + """Cache and dumps the log.""" + logs = RecentLogs() + + if SETTINGS["discordbot"]["enable"]: + message = msg.replace("||", "|") + discord_bot.push_log("***" + mtype + ":***" + message) + + current_time = datetime.datetime.now() + msg = f"{current_time} + : {msg} \n" + + if mtype == "chat": + logs.chats.append(msg) + if len(logs.chats) > 10: + dumplogs(logs.chats, "chat").start() + logs.chats = [] + + elif mtype == "playerjoin": + logs.joinlog.append(msg) + if len(logs.joinlog) > 3: + dumplogs(logs.joinlog, "joinlog").start() + logs.joinlog = [] + + elif mtype == "chatcmd": + logs.cmndlog.append(msg) + if len(logs.cmndlog) > 3: + dumplogs(logs.cmndlog, "cmndlog").start() + logs.cmndlog = [] + + else: + logs.misclogs.append(msg) + if len(logs.misclogs) > 5: + dumplogs(logs.misclogs, "sys").start() + logs.misclogs = [] class dumplogs(threading.Thread): - def __init__(self,msg,mtype='sys'): - threading.Thread.__init__(self) - self.msg=msg - self.type=mtype - - def run(self): - - - if self.type=='chat': - - f=open(serverdata+"Chat Logs.log","a+") - - - - elif self.type=='joinlog': - f=open(serverdata+"joining.log","a+") - - - elif self.type=='cmndlog': - f=open(serverdata+"cmndusage.log","a+") - - else: - f=open(serverdata+"logs.log","a+") - for m in self.msg: - f.write(m) - f.close() - - + """Dumps the logs in the server data.""" + def __init__(self, msg, mtype="sys"): + super().__init__() + self.msg = msg + self.type = mtype + def run(self): + if self.type == "chat": + log_path = SERVER_DATA_PATH + "Chat Logs.log" + elif self.type == "joinlog": + log_path = SERVER_DATA_PATH + "joining.log" + elif self.type == "cmndlog": + log_path = SERVER_DATA_PATH + "cmndusage.log" + else: + log_path = SERVER_DATA_PATH + "logs.log" + with open(log_path, mode="a+", encoding="utf-8") as file: + for msg in self.msg: + file.write(msg)