From 72310edd11445178df33406dedabed97a398d8a6 Mon Sep 17 00:00:00 2001 From: Elijah Date: Wed, 21 May 2025 13:22:48 -0600 Subject: [PATCH 1/2] added compressable middle part of the error message so that we can have a short description for discord --- PyBugReporter/src/BugReporter.py | 26 +++++++++++++++++++----- test.py | 35 +++++++++++++++++++++++++++++++- 2 files changed, 55 insertions(+), 6 deletions(-) diff --git a/PyBugReporter/src/BugReporter.py b/PyBugReporter/src/BugReporter.py index abf3ffc..e1ac717 100644 --- a/PyBugReporter/src/BugReporter.py +++ b/PyBugReporter/src/BugReporter.py @@ -130,24 +130,40 @@ def _handleError(self, e: Exception, repoName: str, *args, **kwargs) -> None: if self.extraInfo: description += f"\nExtra Info: {self.kwargs}" + # shortened description for discord if too long (shortens the error text) + start = f"# {title}\n\nType: {excType}\nError text: " + compress = f"{e}\nTraceback: {traceback.format_exc()}" + end = f"\n\nFunction Name: {functionName}\nArguments: {args}\nKeyword Arguments: {kwargs}" + if self.extraInfo: + end += f"\nExtra Info: {self.kwargs}" + + staticLength = len(start) + len(end) + if staticLength > 2000: + shortDescription = f"# {title}\n\n" + description[:2000 - len(f"# {title}\n\n") - 3] + "..." + else: + shortDescription = f"{start}{compress[:2000 - staticLength]}{end}" + + print(f"SHORT DESCRIPTION with length {len(shortDescription)}:\n{shortDescription}") + + # Check if we need to send a bug report if not self.handlers[repoName].test: - self._sendBugReport(repoName, title, description) + self._sendBugReport(repoName, title, description, shortDescription) print(title) print(description) raise e - def _sendBugReport(self, repoName: str, errorTitle: str, errorMessage: str) -> None: + def _sendBugReport(self, repoName: str, errorTitle: str, errorMessage: str, shortErrorMessage: str) -> None: """Sends a bug report to the Github repository. Args: errorTitle (str): the title of the error errorMessage (str): the error message """ - asyncio.run(self._sendBugReport_async(repoName, errorTitle, errorMessage)) + asyncio.run(self._sendBugReport_async(repoName, errorTitle, errorMessage, shortErrorMessage)) - async def _sendBugReport_async(self, repoName: str, errorTitle: str, errorMessage: str) -> None: + async def _sendBugReport_async(self, repoName: str, errorTitle: str, errorMessage: str, shortErrorMessage: str) -> None: """Sends a bug report to the Github repository asynchronously. Args: @@ -197,7 +213,7 @@ async def _sendBugReport_async(self, repoName: str, errorTitle: str, errorMessag # Send to Discord if applicable if self.handlers[repoName].useDiscord: discordBot = DiscordBot(self.handlers[repoName].botToken, self.handlers[repoName].channelId) - await discordBot.send_message(f"## {repoName}: {errorTitle}\n{errorMessage}", issueExists) + await discordBot.send_message(shortErrorMessage, issueExists) if (not issueExists): result = await client.execute_async(query=createIssue, variables=variables, headers=headers) diff --git a/test.py b/test.py index 14e4148..52932a9 100644 --- a/test.py +++ b/test.py @@ -18,6 +18,39 @@ @BugReporter('PyBugReporter', extraInfo=True, env='test') def test(item, item2=None): - raise Exception("This is a test exception") + raise Exception(""" + This is a really really really really really really really really + really really really really really really really really + really really really really really really really really + really really really really really really really really + really really really really really really really really + really really really really really really really really + really really really really really really really really + really really really really really really really really + really really really really really really really really + really really really really really really really really + really really really really really really really really + really really really really really really really really + really really really really really really really really + really really really really really really really really + really really really really really really really really + really really really really really really really really + really really really really really really really really + really really really really really really really really + really really really really really really really really + really really really really really really really really + really really really really really really really really + really really really really really really really really + really really really really really really really really + really really really really really really really really + really really really really really really really really + really really really really really really really really + really really really really really really really really + really really really really really really really really + really really really really really really really really + really really really really really really really really + really really really really really really really really + really really really really really really really really long test exception + """) test(None, item2='item2') \ No newline at end of file From 4c171102031380c85a4fbbc84e1042cd7ed66035 Mon Sep 17 00:00:00 2001 From: Elijah Date: Wed, 21 May 2025 13:36:06 -0600 Subject: [PATCH 2/2] traceback test --- test.py | 107 ++++++++++++++++++++++++++++++++++++++------------------ 1 file changed, 73 insertions(+), 34 deletions(-) diff --git a/test.py b/test.py index 52932a9..009d8a2 100644 --- a/test.py +++ b/test.py @@ -18,39 +18,78 @@ @BugReporter('PyBugReporter', extraInfo=True, env='test') def test(item, item2=None): - raise Exception(""" - This is a really really really really really really really really - really really really really really really really really - really really really really really really really really - really really really really really really really really - really really really really really really really really - really really really really really really really really - really really really really really really really really - really really really really really really really really - really really really really really really really really - really really really really really really really really - really really really really really really really really - really really really really really really really really - really really really really really really really really - really really really really really really really really - really really really really really really really really - really really really really really really really really - really really really really really really really really - really really really really really really really really - really really really really really really really really - really really really really really really really really - really really really really really really really really - really really really really really really really really - really really really really really really really really - really really really really really really really really - really really really really really really really really - really really really really really really really really - really really really really really really really really - really really really really really really really really - really really really really really really really really - really really really really really really really really - really really really really really really really really - really really really really really really really really long test exception - """) + # raise Exception(""" + # This is a really really really really really really really really + # really really really really really really really really + # really really really really really really really really + # really really really really really really really really + # really really really really really really really really + # really really really really really really really really + # really really really really really really really really + # really really really really really really really really + # really really really really really really really really + # really really really really really really really really + # really really really really really really really really + # really really really really really really really really + # really really really really really really really really + # really really really really really really really really + # really really really really really really really really + # really really really really really really really really + # really really really really really really really really + # really really really really really really really really + # really really really really really really really really + # really really really really really really really really + # really really really really really really really really + # really really really really really really really really + # really really really really really really really really + # really really really really really really really really + # really really really really really really really really + # really really really really really really really really + # really really really really really really really really + # really really really really really really really really + # really really really really really really really really + # really really really really really really really really + # really really really really really really really really + # really really really really really really really really long test exception + # """) + + def this(): + def exception(): + def has(): + def an(): + def insane(): + def traceback(): + def length(): + def that(): + def just(): + def keeps(): + def going(): + def on(): + def yep(): + def still(): + def more(): + def never(): + def do(): + def this(): + raise Exception("This is a test exception") + this() + do() + never() + more() + still() + yep() + on() + going() + keeps() + just() + that() + length() + traceback() + insane() + an() + has() + exception() + this() + test(None, item2='item2') \ No newline at end of file