mirror of
https://github.com/Aider-AI/aider.git
synced 2025-05-29 00:35:00 +00:00
aider: Handle IsADirectoryError when trying to create a file where a directory exists.
# Aider chat conversation: USER: https://github.com/paul-gauthier/aider/issues/606 https://github.com/paul-gauthier/aider/issues/606: [Skip to content](#start-of-content) ## Navigation Menu Toggle navigation [](https://github.com/) [Sign in](/login?return_to=https%3A%2F%2Fgithub.com%2Fpaul-gauthier%2Faider%2Fissues%2F606) - Product - [](https://github.com/features/actions) Actions Automate any workflow - [](https://github.com/features/packages) Packages Host and manage packages - [](https://github.com/features/security) Security Find and fix vulnerabilities - [](https://github.com/features/codespaces) Codespaces Instant dev environments - [](https://github.com/features/copilot) Copilot Write better code with AI - [](https://github.com/features/code-review) Code review Manage code changes - [](https://github.com/features/issues) Issues Plan and track work - [](https://github.com/features/discussions) Discussions Collaborate outside of code Explore - [All features](https://github.com/features) - [Documentation](https://docs.github.com) - [GitHub Skills](https://skills.github.com) - [Blog](https://github.blog) - Solutions For - [Enterprise](https://github.com/enterprise) - [Teams](https://github.com/team) - [Startups](https://github.com/enterprise/startups) - [Education](https://education.github.com) By Solution - [CI/CD & Automation](https://github.com/solutions/ci-cd) - [DevOps](https://github.com/solutions/devops) - [DevSecOps](https://resources.github.com/devops/fundamentals/devsecops) Resources - [Learning Pathways](https://resources.github.com/learn/pathways) - [White papers, Ebooks, Webinars](https://resources.github.com) - [Customer Stories](https://github.com/customer-stories) - [Partners](https://partner.github.com) - Open Source - [](https://github.com/sponsors) GitHub Sponsors Fund open source developers - [](https://github.com/readme) The ReadME Project GitHub community articles Repositories - [Topics](https://github.com/topics) - [Trending](https://github.com/trending) - [Collections](https://github.com/collections) - [Pricing](https://github.com/pricing) Search or jump to\... # Search code, repositories, users, issues, pull requests\... Search Clear [Search syntax tips](https://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax) # Provide feedback We read every piece of feedback, and take your input very seriously. Include my email address so I can be contacted Cancel Submit feedback # Saved searches ## Use saved searches to filter your results more quickly Name Query To see all available qualifiers, see our [documentation](https://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax). Cancel Create saved search [Sign in](/login?return_to=https%3A%2F%2Fgithub.com%2Fpaul-gauthier%2Faider%2Fissues%2F606) [Sign up](/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fvoltron%2Fissues_fragments%2Fissue_layout&source=header-repo&source_repo=paul-gauthier%2Faider) You signed in with another tab or window. [Reload]() to refresh your session. You signed out in another tab or window. [Reload]() to refresh your session. You switched accounts on another tab or window. [Reload]() to refresh your session. Dismiss alert {{ message }} ::: {role="main"} [paul-gauthier](/paul-gauthier) / **[aider](/paul-gauthier/aider)** Public - [Notifications](/login?return_to=%2Fpaul-gauthier%2Faider) - [Fork 1k](/login?return_to=%2Fpaul-gauthier%2Faider) - [ Star 10.2k](/login?return_to=%2Fpaul-gauthier%2Faider) - [Code ](/paul-gauthier/aider) - [Issues 55](/paul-gauthier/aider/issues) - [Pull requests 8](/paul-gauthier/aider/pulls) - [Actions ](/paul-gauthier/aider/actions) - [Projects 0](/paul-gauthier/aider/projects) - [Security](/paul-gauthier/aider/security) - [Insights ](/paul-gauthier/aider/pulse) Additional navigation options - [ Code ](/paul-gauthier/aider) - [ Issues ](/paul-gauthier/aider/issues) - [ Pull requests ](/paul-gauthier/aider/pulls) - [ Actions ](/paul-gauthier/aider/actions) - [ Projects ](/paul-gauthier/aider/projects) - [ Security ](/paul-gauthier/aider/security) - [ Insights ](/paul-gauthier/aider/pulse) New issue **Have a question about this project?** Sign up for a free GitHub account to open an issue and contact its maintainers and the community. [Sign up for GitHub](/signup?return_to=%2Fpaul-gauthier%2Faider%2Fissues%2Fnew%2Fchoose) By clicking "Sign up for GitHub", you agree to our [terms of service](https://docs.github.com/terms) and [privacy statement](https://docs.github.com/privacy). We'll occasionally send you account related emails. Already on GitHub? [Sign in](/login?return_to=%2Fpaul-gauthier%2Faider%2Fissues%2Fnew%2Fchoose) to your account [Jump to bottom](#issue-comment-box) # Trying to create a file where a directory exists causes IsADirectoryError and aider to exit #606 Open [harleypig](/harleypig) opened this issue May 18, 2024 · 0 comments Open # [Trying to create a file where a directory exists causes IsADirectoryError and aider to exit](#top) #606 [harleypig](/harleypig) opened this issue May 18, 2024 · 0 comments Labels [bug](/paul-gauthier/aider/labels/bug) Something isn\'t working ## Comments [](/harleypig) Copy link ### **[harleypig](/harleypig)** commented [May 18, 2024](#issue-2304113184) • edited +-----------------------------------------------------------------------+ | ### Issue | | | | I wasn\'t thinking and asked aider to create a file with the same | | name as a directory and got unexpectedly dumped back to the command | | line. | | | | | | | | $ mkdir -p testoops/oops | | $ cd testoops | | $ aider | | Aider v0.35.0 | | | | Models: openai/gpt-4o with diff edit format, weak model gpt- | | 3.5-turbo | | Git repo: .git with 0 files | | | | Repo-map: using 2048 tokens | | | | Use /help to see in-chat commands, run with --help to see cm | | d line args | | ──────────────────────────────────────────────────────────── | | ───────────────────────────────────────────────────────────────────── | | > Create a text file named './oops' that has 'this wont work | | ' | | | | Here is the SEARCH/REPLACE block to create the file ./oops w | | ith the content this wont work: | | | | ./oops | | | | | | | | <<<<<<< SEARCH | | | | ======= | | | | this wont work | | | | >>>>>>> REPLACE | | | | | | | | | | | | Allow edits to ./oops which was not previously added to chat? y | | Committing ./oops before applying edits. | | Cmd('git') failed due to: exit code(1) | | cmdline: git commit -m Add | | ed ./oops file. --no-verify -- /home/harleypig/projects/testoops/oops | | stderr: 'error: pathspec '/home/harl | | eypig/projects/testoops/oops' did not match any file(s) known to git' | | ──────────────────────────────────────────────────────────── | | ───────────────────────────────────────────────────────────────────── | | Traceback (most recent call last): | | File "/usr/local/bin/aider", line 8, in <module> | | sys.exit(main()) | | File "/home/harleypig/.local/share/ | | python/lib/python3.10/site-packages/aider/main.py", line 408, in main | | coder.run() | | File "/home/harleypig/.local/share/python/lib/p | | ython3.10/site-packages/aider/coders/base_coder.py", line 496, in run | | new_user_message = self.run_loop() | | File "/home/harleypig/.local/share/python/lib/python | | 3.10/site-packages/aider/coders/base_coder.py", line 512, in run_loop | | inp = self.io.get_input( | | File "/home/harleypig/.local/share/pyt | | hon/lib/python3.10/site-packages/aider/io.py", line 210, in get_input | | completer_instance = AutoCompleter( | | File "/home/harleypig/.local/share/p | | ython/lib/python3.10/site-packages/aider/io.py", line 47, in __init__ | | with open(fname, "r", encoding=self.encoding) as f: | | IsADirectoryError | | : [Errno 21] Is a directory: '/home/harleypig/projects/testoops/oops' | | | | | | | | | | | | | | | | ### Version and model info | | | | In example above. | +-----------------------------------------------------------------------+ | | | | | The text was updated successfully, but these errors were encountered: | | | | | +-----------------------------------------------------------------------+ All reactions [paul-gauthier](/paul-gauthier) added the [bug](/paul-gauthier/aider/labels/bug) Something isn\'t working label [May 20, 2024](#event-12868798902) [Sign up for free](/join?source=comment-repo) **to join this conversation on GitHub**. Already have an account? [Sign in to comment](/login?return_to=https%3A%2F%2Fgithub.com%2Fpaul-gauthier%2Faider%2Fissues%2F606) Assignees No one assigned Labels [bug](/paul-gauthier/aider/labels/bug) Something isn\'t working Projects None yet Milestone No milestone Development No branches or pull requests 2 participants ::: ## Footer [](https://github.com) © 2024 GitHub, Inc. ### Footer navigation - [Terms](https://docs.github.com/site-policy/github-terms/github-terms-of-service) - [Privacy](https://docs.github.com/site-policy/privacy-policies/github-privacy-statement) - [Security](https://github.com/security) - [Status](https://www.githubstatus.com/) - [Docs](https://docs.github.com/) - [Contact](https://support.github.com?tags=dotcom-footer) - Manage cookies - Do not share my personal information You can't perform that action at this time. ASSISTANT: To address the issue of `IsADirectoryError` when trying to create a file where a directory exists, we need to handle this exception in the relevant part of the code. The most likely file to need changes is `aider/io.py`. Please add `aider/io.py` to the chat so I can propose the necessary changes. USER: I added these files to the chat: aider/io.py. If you need to propose edits to other existing files not already added to the chat, you *MUST* tell the me their full path names and ask me to *add the files to the chat*. End your reply and wait for my approval. You can keep asking if you then decide you need to edit more files. ASSISTANT: To handle the `IsADirectoryError` when trying to create a file where a directory exists, we need to catch this exception and handle it appropriately in the `get_input` method of the `InputOutput` class in `aider/io.py`. Here are the changes: aider/io.py ```python <<<<<<< SEARCH try: with open(fname, "r", encoding=self.encoding) as f: content = f.read() except (FileNotFoundError, UnicodeDecodeError): continue ======= try: with open(fname, "r", encoding=self.encoding) as f: content = f.read() except (FileNotFoundError, UnicodeDecodeError, IsADirectoryError): continue >>>>>>> REPLACE ``` This change will ensure that if the code tries to open a directory as if it were a file, it will catch the `IsADirectoryError` and continue without crashing.
This commit is contained in:
parent
a4a6066858
commit
cda9565cae
1 changed files with 1 additions and 1 deletions
|
@ -46,7 +46,7 @@ class AutoCompleter(Completer):
|
|||
try:
|
||||
with open(fname, "r", encoding=self.encoding) as f:
|
||||
content = f.read()
|
||||
except (FileNotFoundError, UnicodeDecodeError):
|
||||
except (FileNotFoundError, UnicodeDecodeError, IsADirectoryError):
|
||||
continue
|
||||
try:
|
||||
lexer = guess_lexer_for_filename(fname, content)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue