Commit graph

1688 commits

Author SHA1 Message Date
Paul Gauthier
a1f2fc4482 Merge branch 'main' into chat-history 2023-07-20 09:55:26 -03:00
Paul Gauthier
46083802c7 cleanup 2023-07-20 09:49:40 -03:00
Paul Gauthier
2d0f789cb9 aider: Increment the version by 0.0.1 and add "-dev" after the version bump.
# Aider chat conversation:

USER: why is it thinking that 0.9.0 is newer than 0.9.0-dev

ASSISTANT: The version comparison is being done using the `packaging.version.parse` function. This function follows the PEP 440 version identification and comparison rules. According to PEP 440, a version like "0.9.0-dev" is considered a pre-release of "0.9.0", and therefore "0.9.0" is considered newer.

If you want "0.9.0-dev" to be considered newer than "0.9.0", you would need to change the version comparison logic. However, this would be against the standard Python versioning rules and is not recommended.

If you still want to proceed with this, please confirm and I will provide the necessary changes.

USER: I added these *read-write* files: scripts/versionbump.py

ASSISTANT: I understand that you want to modify the version comparison logic in your scripts. However, I would like to clarify where exactly you want this change to be made.

The file `scripts/versionbump.py` does not seem to have any version comparison logic that would consider "0.9.0
^C KeyboardInterrupt

USER: instead of adding -dev into the version after the bump, can you instead increment the version by 0.0.1 and then add dev

ASSISTANT: Sure, we can modify the `scripts/versionbump.py` script to increment the version by 0.0.1 and then add "-dev" to it. Here's how we can do it:

1. After the new version is parsed, we can increment the patch version by 1.
2. Then, we can add "-dev" to this incremented version.

Here's the change:

```python
scripts/versionbump.py
<<<<<<< ORIGINAL
    new_version = version.parse(new_version_str)

    with open("aider/__init__.py", "r") as f:
        content = f.read()
=======
    new_version = version.parse(new_version_str)
    incremented_version = version.Version(f"{new_version.major}.{new_version.minor}.{new_version.micro + 1}")

    with open("aider/__init__.py", "r") as f:
        content = f.read()
>>>>>>> UPDATED
```

```python
scripts/versionbump.py
<<<<<<< ORIGINAL
    updated_dev_content = re.sub(
        r'__version__ = ".+?"', f'__version__ = "{new_version}-dev"', content
    )
=======
    updated_dev_content = re.sub(
        r'__version__ = ".+?"', f'__version__ = "{incremented_version}-dev"', content
    )
>>>>>>> UPDATED
```

This will increment the patch version by 0.0.1 and then add "-dev" to it after the version bump.
2023-07-20 09:48:11 -03:00
Paul Gauthier
6cb8f4e762 stop passing content to update_cur_messages 2023-07-20 09:41:38 -03:00
Paul Gauthier
993bfa6e4c cleanup 2023-07-20 09:39:27 -03:00
Paul Gauthier
ea15aa72fa cleanup 2023-07-20 09:34:09 -03:00
Paul Gauthier
25c03535cc aider: Replace deprecated pkg_resources.parse_version with packaging.version.parse for version comparison in aider/versioncheck.py.
# Aider chat conversation:

USER:     warnings.warn("pkg_resources is deprecated as an API", DeprecationWarning)

ASSISTANT: It seems like you're concerned about the deprecation warning from the `pkg_resources` module. We can replace the usage of `pkg_resources` with `packaging.version` for version comparison.

Here are the changes needed in the `aider/versioncheck.py` file:

```python
aider/versioncheck.py
<<<<<<< ORIGINAL
import pkg_resources

...

if pkg_resources.parse_version(latest_version) <= pkg_resources.parse_version(
    current_version
):
    return
=======
import packaging.version

...

if packaging.version.parse(latest_version) <= packaging.version.parse(
    current_version
):
    return
>>>>>>> UPDATED
```

This change replaces the deprecated `pkg_resources.parse_version` with `packaging.version.parse` for version comparison.

USER: InvalidEditBlock: edit failed!

aider/versioncheck.py does not contain the *exact sequence* of ORIGINAL lines you specified.
Try again.
DO NOT skip blank lines, comments, docstrings, etc!
The ORIGINAL block needs to be EXACTLY the same as the lines in aider/versioncheck.py with nothing missing!

aider/versioncheck.py does not contain these 8 exact lines in a row:
```
import pkg_resources

...

if pkg_resources.parse_version(latest_version) <= pkg_resources.parse_version(
    current_version
):
    return
```

ASSISTANT: I apologize for the confusion. Let's try again with the correct sequence of lines from the `aider/versioncheck.py` file:

```python
aider/versioncheck.py
<<<<<<< ORIGINAL
import pkg_resources

...

        if pkg_resources.parse_version(latest_version) <= pkg_resources.parse_version(
            current_version
        ):
            return
=======
import packaging.version

...

        if packaging.version.parse(latest_version) <= packaging.version.parse(
            current_version
        ):
            return
>>>>>>> UPDATED
```

This change replaces the deprecated `pkg_resources.parse_version` with `packaging.version.parse` for version comparison.
2023-07-20 08:45:58 -03:00
Paul Gauthier
cc59b10a73 wire into main 2023-07-20 08:43:03 -03:00
Paul Gauthier
12cf19010f Refactor check_version function to accept a print_cmd argument and update print statements accordingly.
# Aider chat conversation:
2023-07-20 08:37:44 -03:00
Paul Gauthier
fe9bcef676 Add support for printing the Python executable name in the upgrade message.
# Aider chat conversation:
2023-07-20 08:36:26 -03:00
Paul Gauthier
4b133929c8 aider: Add print statement with upgrade command in check_version function.
# Aider chat conversation:

USER: also print the command the user should use to upgrade

ASSISTANT: To print the command the user should use to upgrade, we can add a print statement in the `check_version` function in the `aider/versioncheck.py` file. This print statement will provide the command to upgrade the `aider-chat` package using pip.

Here is the code:

```python
aider/versioncheck.py
<<<<<<< ORIGINAL
import requests
import pkg_resources
import aider

from aider.dump import dump

def check_version():
    response = requests.get('https://pypi.org/pypi/aider-chat/json')
    data = response.json()
    latest_version = data['info']['version']
    current_version = pkg_resources.get_distribution('aider-chat').version

    if pkg_resources.parse_version(latest_version) <= pkg_resources.parse_version(current_version):
        return

    print(f"Running aider version {current_version}, newer version available: {latest_version}")

if __name__ == "__main__":
    check_version()
=======
import requests
import pkg_resources
import aider

from aider.dump import dump

def check_version():
    response = requests.get('https://pypi.org/pypi/aider-chat/json')
    data = response.json()
    latest_version = data['info']['version']
    current_version = pkg_resources.get_distribution('aider-chat').version

    if pkg_resources.parse_version(latest_version) <= pkg_resources.parse_version(current_version):
        return

    print(f"Running aider version {current_version}, newer version available: {latest_version}")
    print("To upgrade, run: pip install --upgrade aider-chat")

if __name__ == "__main__":
    check_version()
>>>>>>> UPDATED
```

This will print the command `pip install --upgrade aider-chat` when a newer version is available. The user can then copy this command and run it in their terminal to upgrade the `aider-chat` package.
2023-07-20 08:34:54 -03:00
Paul Gauthier
e94f85b61e Refactor version check to include the package name in the URL and print the current version.
# Aider chat conversation:
2023-07-20 08:33:18 -03:00
Paul Gauthier
cf8f76533d aider: Refactored versioncheck.py to use the PyPI JSON API instead of web scraping.
# Aider chat conversation:

USER: can we use a json api not scrape?

ASSISTANT: Yes, we can use the PyPI JSON API to get the information about the latest version of the package.

We will modify the `aider/versioncheck.py` file.

Here are the steps:

1. Send a GET request to the PyPI JSON API for the `aider` package.
2. Parse the JSON response to find the latest version number.
3. Compare this version number with the current version of `aider` installed in the system.
4. Print a message indicating whether a newer version is available.

Here is the code:

```python
aider/versioncheck.py
<<<<<<< ORIGINAL
import requests
from bs4 import BeautifulSoup
import pkg_resources

def check_version():
    response = requests.get('https://pypi.org/project/aider/')
    soup = BeautifulSoup(response.text, 'html.parser')
    latest_version = soup.find('h1', {'class': 'package-header__name'}).text.split()[-1]
    current_version = pkg_resources.get_distribution('aider').version

    if pkg_resources.parse_version(latest_version) > pkg_resources.parse_version(current_version):
        print(f"A newer version of 'aider' is available: {latest_version}")
    else:
        print("You are using the latest version of 'aider'.")

if __name__ == "__main__":
    check_version()
=======
import requests
import pkg_resources

def check_version():
    response = requests.get('https://pypi.org/pypi/aider/json')
    data = response.json()
    latest_version = data['info']['version']
    current_version = pkg_resources.get_distribution('aider').version

    if pkg_resources.parse_version(latest_version) > pkg_resources.parse_version(current_version):
        print(f"A newer version of 'aider' is available: {latest_version}")
    else:
        print("You are using the latest version of 'aider'.")

if __name__ == "__main__":
    check_version()
>>>>>>> UPDATED
```

This version of the script uses the PyPI JSON API, which is more reliable and faster than web scraping.
2023-07-20 08:24:46 -03:00
Paul Gauthier
51943b68e2 aider: Added a script to check the latest version of the 'aider' package on PyPI and compare it with the current installed version.
# Aider chat conversation:

USER: write a script that checks pypi to see if a newer version of aider is available

ASSISTANT: To accomplish this, we will use the `requests` and `bs4` (BeautifulSoup) libraries in Python to scrape the PyPI website for the latest version of the `aider` package.

We will add this script to the `aider/versioncheck.py` file.

Here are the steps:

1. Import the necessary libraries.
2. Define a function that sends a GET request to the PyPI page for the `aider` package.
3. Parse the HTML response to find the latest version number.
4. Compare this version number with the current version of `aider` installed in the system.
5. Print a message indicating whether a newer version is available.

Here is the code:

```python
aider/versioncheck.py
<<<<<<< ORIGINAL

=======
import requests
from bs4 import BeautifulSoup
import pkg_resources

def check_version():
    response = requests.get('https://pypi.org/project/aider/')
    soup = BeautifulSoup(response.text, 'html.parser')
    latest_version = soup.find('h1', {'class': 'package-header__name'}).text.split()[-1]
    current_version = pkg_resources.get_distribution('aider').version

    if pkg_resources.parse_version(latest_version) > pkg_resources.parse_version(current_version):
        print(f"A newer version of 'aider' is available: {latest_version}")
    else:
        print("You are using the latest version of 'aider'.")

if __name__ == "__main__":
    check_version()
>>>>>>> UPDATED
```

Please note that this script assumes that `requests`, `bs4`, and `pkg_resources` are installed in your Python environment. If not, you can install them using pip:

```bash
pip install requests beautifulsoup4 setuptools
```
2023-07-20 08:24:11 -03:00
Paul Gauthier
7d9d163561 Added new files to the git repo: aider/versioncheck.py 2023-07-20 08:22:05 -03:00
Paul Gauthier
4bc35a7376 Ask GPT to retry if original block is not found 2023-07-19 17:24:53 -03:00
Paul Gauthier
81a3a7f7af Disable pretty output and print a message when running in a VSCode terminal.
# Aider chat conversation:
2023-07-19 09:07:27 -03:00
Paul Gauthier
7930cea227 aider: Disable pretty output and inform the user if a VSCode terminal has been detected.
# Aider chat conversation:

USER: if VSCODE_GIT_IPC_HANDLE is set in the environment, turn off pretty and tell the user a VSCode terminal has been detected so pretty output has been disabled

ASSISTANT: To implement this change, we need to modify the `main` function in the `aider/main.py` file. We will check if the `VSCODE_GIT_IPC_HANDLE` environment variable is set and if so, disable pretty output and inform the user.

Here is the proposed change:

```python
aider/main.py
<<<<<<< ORIGINAL
    args = parser.parse_args(args)

    if args.dark_mode:
        args.user_input_color = "#32FF32"
        args.tool_error_color = "#FF3333"
        args.assistant_output_color = "#00FFFF"
        args.code_theme = "monokai"

    if args.light_mode:
        args.user_input_color = "green"
        args.tool_error_color = "red"
        args.assistant_output_color = "blue"
        args.code_theme = "default"
=======
    args = parser.parse_args(args)

    if 'VSCODE_GIT_IPC_HANDLE' in os.environ:
        args.pretty = False
        print("VSCode terminal detected, pretty output has been disabled.")

    if args.dark_mode:
        args.user_input_color = "#32FF32"
        args.tool_error_color = "#FF3333"
        args.assistant_output_color = "#00FFFF"
        args.code_theme = "monokai"

    if args.light_mode:
        args.user_input_color = "green"
        args.tool_error_color = "red"
        args.assistant_output_color = "blue"
        args.code_theme = "default"
>>>>>>> UPDATED
```

This change checks for the `VSCODE_GIT_IPC_HANDLE` environment variable right after parsing the arguments. If it's present, it sets `args.pretty` to `False` and prints a message to the user.
2023-07-19 09:06:49 -03:00
Paul Gauthier
c05efad274 aider: Add a new /git command to run git.
# Aider chat conversation:

USER: Add a new /git command to run git. so you could do `/git commit -a -m "message goes here"` or any other git command. It should work like `cmd_run` but prepends "git" to the `args`. Don't offer to send the output to gpt.

ASSISTANT: To add a new `/git` command, we need to modify the `aider/commands.py` file. We will add a new method `cmd_git` that will prepend "git" to the `args` and run the command. This method will be similar to `cmd_run` but will not offer to send the output to gpt.

Here is the change:

<source>python
aider/commands.py
<<<<<<< ORIGINAL
    def cmd_run(self, args):
        "Run a shell command and optionally add the output to the chat"
        combined_output = None
        try:
            parsed_args = shlex.split(args)
            result = subprocess.run(
                parsed_args, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, text=True
            )
            combined_output = result.stdout
        except Exception as e:
            self.io.tool_error(f"Error running command: {e}")

        if combined_output is None:
            return

        self.io.tool_output(combined_output)

        if self.io.confirm_ask("Add the output to the chat?", default="y"):
            for line in combined_output.splitlines():
                self.io.tool_output(line, log_only=True)

            msg = prompts.run_output.format(
                command=args,
                output=combined_output,
            )
            return msg

    def cmd_exit(self, args):
        "Exit the application"
        sys.exit()
=======
    def cmd_git(self, args):
        "Run a git command"
        combined_output = None
        try:
            parsed_args = shlex.split("git " + args)
            result = subprocess.run(
                parsed_args, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, text=True
            )
            combined_output = result.stdout
        except Exception as e:
            self.io.tool_error(f"Error running git command: {e}")

        if combined_output is None:
            return

        self.io.tool_output(combined_output)

    def cmd_run(self, args):
        "Run a shell command and optionally add the output to the chat"
        combined_output = None
        try:
            parsed_args = shlex.split(args)
            result = subprocess.run(
                parsed_args, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, text=True
            )
            combined_output = result.stdout
        except Exception as e:
            self.io.tool_error(f"Error running command: {e}")

        if combined_output is None:
            return

        self.io.tool_output(combined_output)

        if self.io.confirm_ask("Add the output to the chat?", default="y"):
            for line in combined_output.splitlines():
                self.io.tool_output(line, log_only=True)

            msg = prompts.run_output.format(
                command=args,
                output=combined_output,
            )
            return msg

    def cmd_exit(self, args):
        "Exit the application"
        sys.exit()
>>>>>>> UPDATED
</source>
2023-07-17 15:51:14 -03:00
Paul Gauthier
72646f9733 use io.read/write text 2023-07-17 10:53:49 -03:00
Paul Gauthier
4b01f20b73 print when greating gitignore 2023-07-17 08:32:32 -03:00
Paul Gauthier
402f8f4971 Merge branch 'main' into gitignore 2023-07-17 08:27:09 -03:00
Paul Gauthier
aff5949d87 Merge remote-tracking branch 'origin/main' 2023-07-17 08:19:30 -03:00
Paul Gauthier
1f07de8670 Added hint to Use --encoding to set the unicode encoding. 2023-07-17 08:19:21 -03:00
Amer Amayreh
a2d8bed155
Handled Issue #114
Handled the UnboundLocalError tat occurs when wrong prams are passed to the `/run` command
2023-07-17 06:04:47 +03:00
Paul Gauthier
9c40fc3415 Path.cwd 2023-07-16 18:27:17 -03:00
Paul Gauthier
6f7936e5f8 Merge branch 'main' into gitignore 2023-07-16 18:06:01 -03:00
Paul Gauthier
e7f35e2cf7 Apparently prompt toolkit can not express control-enter? 2023-07-16 14:26:49 -03:00
Paul Gauthier
36af2a51af Change keybinding from ControlJ to ControlM for inserting a new line.
# Aider chat conversation:
2023-07-16 14:15:18 -03:00
Paul Gauthier
6244df8352 aider: get_input now treats control+enter as a newline with prompt toolkit KeyBindings.
# Aider chat conversation:

USER: can we have `get_input` treat control+enter as a newline with prompt toolkit KeyBindings

ASSISTANT: To implement this feature, we need to modify the `get_input` method in the `InputOutput` class in the `aider/io.py` file. We will use the `KeyBindings` class from `prompt_toolkit.keys` to bind the `Control+Enter` key combination to insert a newline.

Here are the changes:

```python
aider/io.py
<<<<<<< ORIGINAL
from prompt_toolkit.shortcuts import CompleteStyle, PromptSession, prompt
=======
from prompt_toolkit.shortcuts import CompleteStyle, PromptSession, prompt
from prompt_toolkit.keys import Keys
from prompt_toolkit.key_binding import KeyBindings
>>>>>>> UPDATED

```python
aider/io.py
<<<<<<< ORIGINAL
            session = PromptSession(**session_kwargs)
=======
            kb = KeyBindings()

            @kb.add(Keys.ControlJ, eager=True)
            def _(event):
                event.current_buffer.insert_text('\n')

            session = PromptSession(key_bindings=kb, **session_kwargs)
>>>>>>> UPDATED
```

This code creates a new `KeyBindings` instance and adds a binding for `Control+Enter` (represented by `Keys.ControlJ`) to insert a newline. Then, it passes this key bindings instance to the `PromptSession` constructor.
2023-07-16 14:12:01 -03:00
Paul Gauthier
5dc7bc055e Whitelist more /cmds for no dirty commit 2023-07-16 13:42:36 -03:00
Paul Gauthier
180ca7c464 test_main_git_ignore 2023-07-16 12:56:55 -03:00
Paul Gauthier
0f14947a4c test_check_gitignore 2023-07-16 12:49:27 -03:00
Paul Gauthier
67554196f3 Merge branch 'main' into gitignore 2023-07-16 12:21:16 -03:00
Paul Gauthier
4b8211554a set version to 0.9.0-dev 2023-07-16 09:47:35 -03:00
Paul Gauthier
a57c651c05 version bump to 0.9.0 2023-07-16 09:47:24 -03:00
Paul Gauthier
b0ec8205f3 Add pattern to .gitignore if user confirms, by appending it to the existing content of the file.
# Aider chat conversation:
2023-07-15 13:36:57 -07:00
Paul Gauthier
c08527dbbc refac; added check_gitignore 2023-07-15 13:34:58 -07:00
Paul Gauthier
e9806bb84f Merge branch 'main' into gitignore 2023-07-15 10:59:33 -07:00
Paul Gauthier
1b10751585 More informative retry messages 2023-07-15 10:19:48 -07:00
Paul Gauthier
6f460bd050 wip 2023-07-14 20:10:10 -07:00
Paul Gauthier
fb444d9954 aider: Refactored open calls in aider/main.py to use Path.read_text() and Path.write_text() with encoding='utf-8'.
# Aider chat conversation:

USER: add encoding=utf-8 to all that

ASSISTANT: To add the encoding declaration to the `aider/main.py` file, we need to add `# -*- coding: utf-8 -*-` at the top of the file.

Here is the proposed change:

^C KeyboardInterrupt

USER: add encoding=utf-8 to those open calls

ASSISTANT: To specify the encoding as utf-8 in the open calls in the `aider/main.py` file, we need to add `encoding='utf-8'` to each open call.

Here are the proposed changes:

```python
aider/main.py
<<<<<<< ORIGINAL
    if git_root:
        gitignore_file = Path(git_root) / ".gitignore"
        if gitignore_file.exists():
            with open(gitignore_file, "r") as file:
                content = file.read()
            if ".aider*" not in content:
                with open(gitignore_file, "a") as file:
                    file.write("\n.aider*")
        else:
            with open(gitignore
^C KeyboardInterrupt

USER: actually use Path.read_text and be sure to encoding=utf-8

ASSISTANT: To use `Path.read_text()` with `encoding='utf-8'` in the `aider/main.py` file, we need to replace the `open()` calls with `Path.read_text()` and `Path.write_text()`.

Here are the proposed changes:

```python
aider/main.py
<<<<<<< ORIGINAL
    if git_root:
        gitignore_file = Path(git_root) / ".gitignore"
        if gitignore_file.exists():
            with open(gitignore_file, "r") as file:
                content = file.read()
            if ".aider*" not in content:
                with open(gitignore_file, "a") as file:
                    file.write("\n.aider*")
        else:
            with open(gitignore_file, "w") as file:
                file.write(".aider*")
=======
    if git_root:
        gitignore_file = Path(git_root) / ".gitignore"
        if gitignore_file.exists():
            content = gitignore_file.read_text(encoding='utf-8')
            if ".aider*" not in content:
                gitignore_file.write_text("\n.aider*", encoding='utf-8', append=True)
        else:
            gitignore_file.write_text(".aider*", encoding='utf-8')
>>>>>>> UPDATED
```

This code will open the `.gitignore` file in the git root directory, check if `.aider*` is present, and if not, append it to the file. If the `.gitignore` file does not exist, it will create one and add `.aider*` to it. The encoding is specified as utf-8.
2023-07-14 20:06:34 -07:00
Paul Gauthier
90df92bffa aider: Add .aider* to .gitignore if it is not already present.
# Aider chat conversation:

USER: do the TODO

ASSISTANT: To complete the TODO task in the `aider/main.py` file, we need to check if `.aider*` is in `.gitignore`, and if not, add it.

Here are the steps to do this:

1. Open the `.gitignore` file in the root directory of the git repository.
2. Read the contents of the file.
3. Check if `.aider*` is present in the file.
4. If not, append `.aider*` to the file and save it.

However, the code in `aider/main.py` does not currently have the ability to modify files. We need to add a function to handle this.

Here is the proposed change:

```python
aider/main.py
<<<<<<< ORIGINAL
    if git_root:
        # TODO: check if .aider* is in .gitignore, add it if not
        pass
=======
    if git_root:
        gitignore_file = Path(git_root) / ".gitignore"
        if gitignore_file.exists():
            with open(gitignore_file, "r") as file:
                content = file.read()
            if ".aider*" not in content:
                with open(gitignore_file, "a") as file:
                    file.write("\n.aider*")
        else:
            with open(gitignore_file, "w") as file:
                file.write(".aider*")
>>>>>>> UPDATED
```

This code will open the `.gitignore` file in the git root directory, check if `.aider*` is present, and if not, append it to the file. If the `.gitignore` file does not exist, it will create one and add `.aider*` to it.
2023-07-14 20:05:11 -07:00
Paul Gauthier
78d9d014f2 fix bug blocking addition of subdir filename mentions 2023-07-14 20:00:04 -07:00
Paul Gauthier
14ce1d43c7 strip the correct fence 2023-07-13 15:54:54 -07:00
Paul Gauthier
12c3c1ed68 updated editblock to use all the fences 2023-07-13 15:48:13 -07:00
Paul Gauthier
b685695fef Anchor the cache to the project root 2023-07-13 14:01:07 -07:00
Paul Gauthier
b05b8e2087 Improved output when no changes made to git tracked files 2023-07-13 13:41:34 -07:00
Paul Gauthier
7c3bbcede6 aider: Scrub sensitive information from verbose logs before saving.
# Aider chat conversation:

USER: open api key saved in log file when run in verbose mode #94
Open
joshuavial opened this issue 8 hours ago · 2 comments
Comments
@joshuavial
joshuavial commented 8 hours ago
Seems like it would be easy for someone (particularly new to coding) to forget to add the log file to a .gitignore and inadvertently publish their key. Maybe the logger should scrub the keys before saving?

ASSISTANT: To address this issue, we need to modify the `aider/main.py` file. We will add a function to scrub sensitive information like the OpenAI API key from the verbose logs before they are saved.

Here are the steps:

1. Define a new function `scrub_sensitive_info` that takes a string as input and replaces sensitive information (like the OpenAI API key) with a placeholder like `***`.
2. Call this function before logging the arguments in verbose mode.

Here is the *edit block* for these changes:

```python
aider/main.py
<<<<<<< ORIGINAL
    if args.verbose:
        show = parser.format_values()
        io.tool_output(show)
        io.tool_output("Option settings:")
        for arg, val in sorted(vars(args).items()):
            io.tool_output(f"  - {arg}: {val}")
=======
    def scrub_sensitive_info(text):
        # Replace sensitive information with placeholder
        return text.replace(args.openai_api_key, '***')

    if args.verbose:
        show = scrub_sensitive_info(parser.format_values())
        io.tool_output(show)
        io.tool_output("Option settings:")
        for arg, val in sorted(vars(args).items()):
            io.tool_output(f"  - {arg}: {scrub_sensitive_info(str(val))}")
>>>>>>> UPDATED
```

This change will ensure that the OpenAI API key is not saved in the log file when the program is run in verbose mode.
2023-07-13 12:28:05 -07:00
Paul Gauthier
6ab4f09a3a cleanup --show-repo-map 2023-07-13 10:06:46 -07:00