Skip to content

Instantly share code, notes, and snippets.

@OkiStuff
Last active April 2, 2022 15:16
Show Gist options
  • Save OkiStuff/d6e0d60383845e68dde6c52f4704a9df to your computer and use it in GitHub Desktop.
Save OkiStuff/d6e0d60383845e68dde6c52f4704a9df to your computer and use it in GitHub Desktop.
from io import TextIOWrapper
from sys import stdout, stderr
from time import gmtime
import typing as t
class ScrawpDebugger:
def __init__(self, out : t.Optional[TextIOWrapper] = stdout, err : t.Optional[TextIOWrapper] = stderr, log : t.Optional[TextIOWrapper] = None) -> None:
self.io_out : TextIOWrapper = out
self.io_err : TextIOWrapper = err
self.io_logtarget : TextIOWrapper = log
self.io_log : list[str] = list()
self.out_style : str = str("[DEBUGGER : %_unixtime%][%_target%] - ")
pass
def debug_io_err(self, msg : str) -> None:
bu_style : str = self.out_style.replace("%_unixtime%", gmtime(0))
bt_style : str = bu_style.replace("%_target%", "ERROR")
self.io_log.append(str(f"{bt_style}{msg}\n"))
print(self.io_log[len(self.io_log) - 1], file=self.io_err, end=str())
if (self.io_logtarget == None): return
self.io_logtarget.write(self.io_log[len(self.io_log) - 1])
def debug_io_out(self, msg: str) -> None:
bu_style : str = self.out_style.replace("%_unixtime%", gmtime(0))
bt_style : str = bu_style.replace("%_target%", "MESSAGE")
self.io_log.append(str(f"{bt_style}{msg}\n"))
print(self.io_log[len(self.io_log) - 1], file=self.io_out, end=str())
if (self.io_logtarget == None): return
self.io_logtarget.write(self.io_log[len(self.io_log) - 1])
def free_resources(self) -> bool:
self.io_log = None # forces python to free variable
if(self.io_logtarget == None): return True # no more resources need to be closed
self.io_logtarget.close()
if (self.io_logtarget.closed == False): return False # failed to free all resources
self.io_logtarget = None # forces python to free variable
return True # finished closing all resources
@stemount
Copy link

stemount commented Apr 2, 2022

🐍🐍🐍🐍🐍🐍🐍🐍🐍🐍🐍🐍🐍🐍🐍🐍🐍🐍🐍🐍🐍🐍🐍🐍🐍

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment