Commit graph

3395 commits

Author SHA1 Message Date
Paul Gauthier
a75e7c8472 copy 2024-01-25 13:17:18 -08:00
Paul Gauthier
cd59f0d63a copy 2024-01-25 13:11:14 -08:00
Paul Gauthier
af9bab9643 copy 2024-01-25 13:05:22 -08:00
Paul Gauthier
9033be74bf Initial benchmark results for 0125 2024-01-25 13:00:16 -08:00
Paul Gauthier
13e9a01f3b copy 2024-01-24 10:19:50 -08:00
Paul Gauthier
448735a604 copy 2024-01-24 10:07:56 -08:00
Paul Gauthier
18c3b67ec2 copy 2024-01-24 09:59:41 -08:00
Paul Gauthier
22a73efec4 copy 2024-01-24 09:56:14 -08:00
Paul Gauthier
f6075605c6 copy 2024-01-24 09:53:04 -08:00
Paul Gauthier
065bc63e33 Merge remote-tracking branch 'origin/main' 2024-01-23 13:07:56 -08:00
Paul Gauthier
0c314144d2 Added /quit #451 2024-01-23 13:07:24 -08:00
paul-gauthier
247cab56f0
Merge pull request #453 from zackees/patch-1
fix https://github.com/paul-gauthier/aider/issues/452
2024-01-23 13:05:15 -08:00
Paul Gauthier
c31f2313ba updated docs 2024-01-23 12:58:29 -08:00
Paul Gauthier
3e96fda71a catch shutdown errors 2024-01-23 10:45:58 -08:00
Paul Gauthier
af4f224c00 cleanup 2024-01-23 10:02:07 -08:00
Paul Gauthier
580c52bd85 set mdargs on init 2024-01-23 09:58:57 -08:00
Paul Gauthier
da131da427 aider: Add __del__ method to MarkdownStream to call self.live.stop().
# Aider chat conversation:

USER: make sire self.live.stop() is called no matter how the object gets destroyed

ASSISTANT: To ensure that `self.live.stop()` is called no matter how the object gets destroyed, we can use Python's built-in `__del__` method. This method is called when an object is about to be destroyed. We can override this method in our `MarkdownStream` class to stop the `Live` instance.

Here are the steps to make this change:

1. Add a `__del__` method to the `MarkdownStream` class that calls `self.live.stop()`.

Here is the *SEARCH/REPLACE* block:

aider/mdstream.py
<source>python
<<<<<<< SEARCH
class MarkdownStream:
    live = None
    when = 0
    min_delay = 0.050
    live_window = 6

    def __init__(self):
        self.printed = []

        self.live = Live(Text(''), refresh_per_second=1./self.min_delay)
        self.live.start()
=======
class MarkdownStream:
    live = None
    when = 0
    min_delay = 0.050
    live_window = 6

    def __init__(self):
        self.printed = []

        self.live = Live(Text(''), refresh_per_second=1./self.min_delay)
        self.live.start()

    def __del__(self):
        self.live.stop()
>>>>>>> REPLACE
</source>
2024-01-23 09:50:27 -08:00
Paul Gauthier
24f1e01177 Refactored MarkdownStream to use rich.live for real-time updates and improved text rendering. 2024-01-23 09:50:23 -08:00
Paul Gauthier
b143bc56ac switch to mdstream 2024-01-23 09:20:31 -08:00
Paul Gauthier
e50a0e8b09 noop 2024-01-23 08:55:28 -08:00
Paul Gauthier
85383079f6 cleanup 2024-01-23 08:55:08 -08:00
Paul Gauthier
e6a4edf2e2 aider: Mark _text as noqa 501.
# Aider chat conversation:

USER: mark _text as noqa 501

ASSISTANT: To mark `_text` as `noqa 501`, we need to modify `aider/mdstream.py`:

1. Add `# noqa: 501` at the end of the `_text` variable declaration.

Here is the *SEARCH/REPLACE* block:

aider/mdstream.py
<source>python
<<<<<<< SEARCH
_text = 5 * _text
=======
_text = 5 * _text  # noqa: 501
>>>>>>> REPLACE
</source>
2024-01-23 08:53:34 -08:00
Paul Gauthier
c051104dc0 Add MarkdownStream class for displaying markdown content in a stream. 2024-01-23 08:53:29 -08:00
Zachary Vorhies
c6ced90e51
fix https://github.com/paul-gauthier/aider/issues/452
Adds option to skip the check for an update, better supports tooling which wants to do it's own update mechanism and not have aider print it out unconditionally.
2024-01-22 18:52:06 -08:00
Paul Gauthier
009c5c3c0d set version to 0.22.1-dev 2024-01-22 17:52:04 -08:00
Paul Gauthier
28b69f381c version bump to 0.22.0 2024-01-22 17:51:33 -08:00
Paul Gauthier
51810aa4d2 Updated HISTORY 2024-01-22 17:50:54 -08:00
Paul Gauthier
b2f36a786d Updated HISTORY 2024-01-22 14:49:15 -08:00
Paul Gauthier
4e3ace6199 Added ! as alias for /run #334 2024-01-22 13:52:59 -08:00
Paul Gauthier
96d60624cb added /test cmd #335 2024-01-22 13:50:21 -08:00
Paul Gauthier
06973d85a3 When autocompleting /add and /drop quote the filename if needed #440 2024-01-22 13:28:56 -08:00
Paul Gauthier
23cc78f36b typo 2024-01-22 13:21:16 -08:00
Paul Gauthier
a8b854fe8d fix f-string 2024-01-22 13:10:15 -08:00
Paul Gauthier
877dda2f3d On /undo, ask GPT to wait before retrying the changes #450 2024-01-22 13:05:38 -08:00
Paul Gauthier
f0531b8b75 speed up animation 2024-01-20 11:54:14 -08:00
Paul Gauthier
05539929ad renamed issue template 2024-01-10 07:58:10 -08:00
Paul Gauthier
ed2829fa03 updated issue template 2024-01-10 07:57:53 -08:00
paul-gauthier
552390f298
Update issue templates 2024-01-10 07:55:33 -08:00
Paul Gauthier
61e68ffe9d set version to 0.21.2-dev 2024-01-10 07:50:45 -08:00
Paul Gauthier
0d11880a4a version bump to 0.21.1 2024-01-10 07:50:15 -08:00
Paul Gauthier
cb6e43f2fd Updated HISTORY 2024-01-10 07:49:27 -08:00
Paul Gauthier
6a77657d95 added --4turbo and --4 aliases 2024-01-10 07:48:17 -08:00
Paul Gauthier
29a578c621 Complete the search for viable hunks all the way down to 0 space context lines #435 2024-01-09 08:34:33 -08:00
Paul Gauthier
e0e454fe82 set version to 0.21.1-dev 2024-01-08 10:44:34 -08:00
Paul Gauthier
942cb2d147 version bump to 0.21.0 2024-01-08 10:44:03 -08:00
Paul Gauthier
27e970eb59 Updated HISTORY 2024-01-08 10:39:24 -08:00
Paul Gauthier
460e12494c added 3.12 to pypi classifiers 2024-01-05 14:50:37 -08:00
Paul Gauthier
fb1e6ad8a0 bump the python version to <3.13 2024-01-05 14:49:09 -08:00
Paul Gauthier
d5f4ba2278 handle multiple udiffs inside a single fenced block 2024-01-04 12:53:01 -08:00
Paul Gauthier
bd1c8b625d aider: Add --check-update to make aider check for update and return status in the exit code.
# Aider chat conversation:

USER: add --check-update to make aider check for update and return status in the exit code.

ASSISTANT: To implement the `--check-update` option, I will make the following changes:

1. Add the `--check-update` argument to the argument parser in `aider/main.py`.
2. Modify the `check_version` function in `aider/versioncheck.py` to return a boolean indicating whether an update is available.
3. Use the returned value from `check_version` in `aider/main.py` to set the exit status code when `--check-update` is used.

Here are the diffs for those changes:

```diff
--- aider/versioncheck.py
+++ aider/versioncheck.py
@@ ... @@
 def check_version(print_cmd):
     try:
         response = requests.get("https://pypi.org/pypi/aider-chat/json")
         data = response.json()
         latest_version = data["info"]["version"]
         current_version = aider.__version__

-        if packaging.version.parse(latest_version) <= packaging.version.parse(current_version):
-            return
+        is_update_available = packaging.version.parse(latest_version) > packaging.version.parse(current_version)

-        print_cmd(f"Newer version v{latest_version} is available. To upgrade, run:")
-        py = sys.executable
-        print_cmd(f"{py} -m pip install --upgrade aider-chat")
+        if is_update_available:
+            print_cmd(f"Newer version v{latest_version} is available. To upgrade, run:")
+            py = sys.executable
+            print_cmd(f"{py} -m pip install --upgrade aider-chat")
+
+        return is_update_available
     except Exception as err:
         print_cmd(f"Error checking pypi for new version: {err}")
+        return False

--- aider/main.py
+++ aider/main.py
@@ ... @@
     other_group.add_argument(
         "--version",
         action="version",
         version=f"%(prog)s {__version__}",
         help="Show the version number and exit",
     )
+    other_group.add_argument(
+        "--check-update",
+        action="store_true",
+        help="Check for updates and return status in the exit code",
+        default=False,
+    )
     other_group.add_argument(
         "--apply",
         metavar="FILE",
@@ ... @@
     check_version(io.tool_error)

+    if args.check_update:
+        update_available = check_version(lambda msg: None)
+        sys.exit(0 if not update_available else 1)
+
     if "VSCODE_GIT_IPC_HANDLE" in os.environ:
         args.pretty = False
         io.tool_output("VSCode terminal detected, pretty output has been disabled.")
```

These changes will add the `--check-update` option to the command-line interface and use the `check_version` function to determine if an update is available, exiting with status code `0` if no update is available and `1` if an update is available.

USER: UnifiedDiffNoMatch: hunk failed to apply!

aider/versioncheck.py does not contain lines that match the diff you provided!
Try again.
DO NOT skip blank lines, comments, docstrings, etc!
The diff needs to apply cleanly to the lines in aider/versioncheck.py!

aider/versioncheck.py does not contain these 17 exact lines in a row:
```
def check_version(print_cmd):
    try:
        response = requests.get("https://pypi.org/pypi/aider-chat/json")
        data = response.json()
        latest_version = data["info"]["version"]
        current_version = aider.__version__

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

        print_cmd(f"Newer version v{latest_version} is available. To upgrade, run:")
        py = sys.executable
        print_cmd(f"{py} -m pip install --upgrade aider-chat")
    except Exception as err:
        print_cmd(f"Error checking pypi for new version: {err}")

-- aider/main.py
```

UnifiedDiffNoMatch: hunk failed to apply!

aider/versioncheck.py does not contain lines that match the diff you provided!
Try again.
DO NOT skip blank lines, comments, docstrings, etc!
The diff needs to apply cleanly to the lines in aider/versioncheck.py!

aider/versioncheck.py does not contain these 9 exact lines in a row:
```
    other_group.add_argument(
        "--version",
        action="version",
        version=f"%(prog)s {__version__}",
        help="Show the version number and exit",
    )
    other_group.add_argument(
        "--apply",
        metavar="FILE",
```

UnifiedDiffNoMatch: hunk failed to apply!

aider/versioncheck.py does not contain lines that match the diff you provided!
Try again.
DO NOT skip blank lines, comments, docstrings, etc!
The diff needs to apply cleanly to the lines in aider/versioncheck.py!

aider/versioncheck.py does not contain these 5 exact lines in a row:
```
    check_version(io.tool_error)

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

ASSISTANT: I apologize for the confusion. Let's try again with the correct diffs.

Here are the diffs for the changes to `aider/versioncheck.py` and `aider/main.py`:

```diff
--- aider/versioncheck.py
+++ aider/versioncheck.py
@@ ... @@
 import sys

 import packaging.version
 import requests

 import aider

 def check_version(print_cmd):
     try:
         response = requests.get("https://pypi.org/pypi/aider-chat/json")
         data = response.json()
         latest_version = data["info"]["version"]
         current_version = aider.__version__

-        if packaging.version.parse(latest_version) <= packaging.version.parse(current_version):
-            return
+        is_update_available = packaging.version.parse(latest_version) > packaging.version.parse(current_version)

-        print_cmd(f"Newer version v{latest_version} is available. To upgrade, run:")
-        py = sys.executable
-        print_cmd(f"{py} -m pip install --upgrade aider-chat")
+        if is_update_available:
+            print_cmd(f"Newer version v{latest_version} is available. To upgrade, run:")
+            py = sys.executable
+            print_cmd(f"{py} -m pip install --upgrade aider-chat")
+
+        return is_update_available
     except Exception as err:
         print_cmd(f"Error checking pypi for new version: {err}")
+        return False
```

```diff
--- aider/main.py
+++ aider/main.py
@@ ... @@
     other_group.add_argument(
         "--version",
         action="version",
         version=f"%(prog)s {__version__}",
         help="Show the version number and exit",
     )
+    other_group.add_argument(
+        "--check-update",
+        action="store_true",
+        help="Check for updates and return status in the exit code",
+        default=False,
+    )
     other_group.add_argument(
         "--apply",
         metavar="FILE",
@@ ... @@
     check_version(io.tool_error)

+    if args.check_update:
+        update_available = check_version(lambda msg: None)
+        sys.exit(0 if not update_available else 1)
+
     if "VSCODE_GIT_IPC_HANDLE" in os.environ:
         args.pretty = False
         io.tool_output("VSCode terminal detected, pretty output has been disabled.")
```

These diffs should apply cleanly to the current contents of the files. The `check_version` function in `aider/versioncheck.py` now returns a boolean indicating whether an update is available, and `aider/main.py` has been updated to include the `--check-update` argument and to use the return value from `check_version` to set the exit status code.
2024-01-04 12:27:31 -08:00