mirror of
https://github.com/Aider-AI/aider.git
synced 2025-05-29 00:35:00 +00:00
refactor: improve URL handling and error reporting in base coder
This commit is contained in:
parent
1d3d6a589f
commit
9a37c0491d
1 changed files with 15 additions and 12 deletions
|
@ -790,12 +790,15 @@ class Coder:
|
|||
self.num_reflections += 1
|
||||
message = self.reflected_message
|
||||
|
||||
def check_and_offer_urls(self, text: str) -> List[str]:
|
||||
def check_and_open_urls(self, text: str) -> List[str]:
|
||||
"""Check text for URLs and offer to open them in a browser."""
|
||||
url_pattern = re.compile(r"(https?://[^\s/$.?#].[^\s]*[^\s,.])")
|
||||
|
||||
url_pattern = re.compile(r"(https?://[^\s/$.?#].[^\s]*)")
|
||||
#ai strip trailing . or ' from the url!
|
||||
|
||||
urls = list(set(url_pattern.findall(text))) # Use set to remove duplicates
|
||||
for url in urls:
|
||||
if self.io.confirm_ask("View this URL?", subject=url):
|
||||
if self.io.confirm_ask("Open URL for more info about this error?", subject=url):
|
||||
webbrowser.open(url)
|
||||
return urls
|
||||
|
||||
|
@ -1149,15 +1152,15 @@ class Coder:
|
|||
except retry_exceptions() as err:
|
||||
# Print the error and its base classes
|
||||
err_msg = str(err)
|
||||
base_classes = []
|
||||
for cls in err.__class__.__mro__[1:]: # Skip the class itself
|
||||
base_classes.append(cls.__name__)
|
||||
if base_classes:
|
||||
err_msg += f"\nBase classes: {' -> '.join(base_classes)}"
|
||||
self.io.tool_warning(err_msg)
|
||||
#base_classes = []
|
||||
#for cls in err.__class__.__mro__: # Skip the class itself
|
||||
# base_classes.append(cls.__name__)
|
||||
#if base_classes:
|
||||
# err_msg += f"\nBase classes: {' -> '.join(base_classes)}"
|
||||
self.io.tool_error(err_msg)
|
||||
retry_delay *= 2
|
||||
if retry_delay > RETRY_TIMEOUT:
|
||||
self.check_and_offer_urls(str(err))
|
||||
self.check_and_open_urls(err_msg)
|
||||
break
|
||||
self.io.tool_output(f"Retrying in {retry_delay:.1f} seconds...")
|
||||
time.sleep(retry_delay)
|
||||
|
@ -1187,8 +1190,8 @@ class Coder:
|
|||
dict(role="assistant", content=self.multi_response_content, prefix=True)
|
||||
)
|
||||
except Exception as err:
|
||||
self.check_and_offer_urls(str(err))
|
||||
self.io.tool_error(f"Unexpected error: {err}")
|
||||
self.io.tool_error(str(err))
|
||||
self.check_and_open_urls(str(err))
|
||||
lines = traceback.format_exception(type(err), err, err.__traceback__)
|
||||
self.io.tool_error("".join(lines))
|
||||
return
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue