Commit graph

1279 commits

Author SHA1 Message Date
Paul Gauthier
d785d9a2e2 fix for #139 2023-07-23 08:34:56 -03:00
Paul Gauthier
e5ffb78224 wip 2023-07-22 16:09:57 -03:00
Paul Gauthier
69aea3e745 Add summary prefix 2023-07-22 12:11:01 -03:00
Paul Gauthier
c26917851f Added a ChatSummary object to Coder class and used it to summarize chat history. 2023-07-22 10:34:48 -03:00
Paul Gauthier
0d0ac4f61f works 2023-07-22 10:32:32 -03:00
Paul Gauthier
133c82528e prompt 2023-07-22 10:02:53 -03:00
Paul Gauthier
a2ce9c4403 feed markdown into summarizer 2023-07-22 09:58:57 -03:00
Paul Gauthier
c8e8967d45 wip 2023-07-22 09:50:41 -03:00
Paul Gauthier
6e03d2f214 Merge branch 'refactor-repo' into chat-history 2023-07-22 09:48:05 -03:00
Paul Gauthier
9ab21d36a6 bugfix 2023-07-22 09:47:54 -03:00
Paul Gauthier
c27087bbda Remove the call to the summarize_chat_history function in move_back_cur_messages method. 2023-07-22 09:45:27 -03:00
Paul Gauthier
6c7b6fc9e4 aider: Added a main function to aider/history.py that accepts a filename as a command-line argument, reads the file, and parses the markdown structure.
# Aider chat conversation:

USER: when run as a script, take a filename on the cmd line. read markdown from the file. parse the markdown structure, so we can iterate through # and #### seactions and do things like discard quoted text > sections easily.

ASSISTANT: To achieve this, we need to modify the `aider/history.py` file to include a main function that accepts a filename as a command-line argument, reads the file, and parses the markdown structure. We will use the `argparse` module to handle command-line arguments and the `markdown` module to parse the markdown file.

Here are the changes:

```python
aider/history.py
<<<<<<< ORIGINAL
import json

import tiktoken
from prompt_toolkit.completion import Completion

from aider import prompts

from .dump import dump  # noqa: F401
=======
import argparse
import json
import markdown

import tiktoken
from prompt_toolkit.completion import Completion

from aider import prompts

from .dump import dump  # noqa: F401

def main():
    parser = argparse.ArgumentParser()
    parser.add_argument("filename", help="Markdown file to parse")
    args = parser.parse_args()

    with open(args.filename, 'r') as f:
        text = f.read()

    md = markdown.Markdown()
    tree = md.parse(text)

    for element in tree.getiterator():
        if element.tag in ['h1', 'h4'] and element.text is not None:
            print(element.text)
        elif element.tag == 'blockquote':
            continue
        else:
            print(element.text)

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

This script will print the text of all `#` and `####` sections and ignore quoted text `>` sections. Other text will be printed as is. If you want to handle other markdown elements differently, you can add more conditions in the for loop.
2023-07-22 09:44:58 -03:00
Paul Gauthier
11dd753a8c Merge branch 'main' into chat-history 2023-07-22 09:42:48 -03:00
Paul Gauthier
0e56ac6a70 Merge branch 'main' into refactor-repo 2023-07-22 09:42:39 -03:00
Paul Gauthier
0e9dbddfde set version to 0.10.0-dev 2023-07-22 09:02:19 -03:00
Paul Gauthier
a1ff22dc20 version bump to 0.10.0 2023-07-22 09:02:03 -03:00
Paul Gauthier
3ac98b3261 cleanup 2023-07-22 08:56:40 -03:00
Paul Gauthier
4e40c8ac15 make .gitignore before making repo 2023-07-22 08:51:57 -03:00
Paul Gauthier
78e7b5c3db wip 2023-07-22 08:45:40 -03:00
Paul Gauthier
661a521693 aider.repo.simple_send_with_retries 2023-07-21 16:20:27 -03:00
Paul Gauthier
9f8ea93ce6 AiderRepo -> GitRepo 2023-07-21 16:08:27 -03:00
Paul Gauthier
6d22dd06f8 aider: Refactored test_main_with_empty_dir_new_file to use @patch decorator to mock get_commit_message method.
# Aider chat conversation:

USER: @patch("aider.repo.AiderRepo.get_commit_message") is not patching it

ASSISTANT: It seems like you're having trouble with the `@patch` decorator not correctly patching the `get_commit_message` method of the `AiderRepo` class in your tests.

To help you with this, I need to understand the context better. Could you please provide more details about the issue? Are you getting any error messages? If so, could you share them?

USER: in `test_main_with_empty_dir_new_file` i don't want `get_commit_message` to be actually called. just to return a mock value

ASSISTANT: The `@patch` decorator from the `unittest.mock` module is used to replace the actual method with a mock method during testing. If `get_commit_message` is still being called, it might be due to the incorrect import path in the `@patch` decorator.

In your case, the `@patch` decorator should be used as follows:

```python
@patch("aider.repo.AiderRepo.get_commit_message", return_value="commit message!")
```

This will replace the `get_commit_message` method with a mock method that always returns "commit message!".

Here is the updated `test_main_with_empty_dir_new_file` method:

```python
tests/test_main.py
<<<<<<< ORIGINAL
    @patch("aider.repo.AiderRepo.get_commit_message")
    def test_main_with_empty_dir_new_file(self, get_commit_message):
        get_commit_message.return_value = "commit message!"
        main(["foo.txt", "--yes","--no-git"], input=DummyInput(), output=DummyOutput())
        self.assertTrue(os.path.exists("foo.txt"))
=======
    @patch("aider.repo.AiderRepo.get_commit_message", return_value="commit message!")
    def test_main_with_empty_dir_new_file(self, get_commit_message):
        main(["foo.txt", "--yes","--no-git"], input=DummyInput(), output=DummyOutput())
        self.assertTrue(os.path.exists("foo.txt"))
>>>>>>> UPDATED
```

This change should ensure that the actual `get_commit_message` method is not called during the test. Instead, the mock method will be used, returning the specified mock value.
2023-07-21 15:56:27 -03:00
Paul Gauthier
e74bfc21d0 Merge branch 'main' into refactor-repo 2023-07-21 15:46:31 -03:00
Paul Gauthier
dfd92073f4 Handle files in the git repo which have been deleted but not committed, with test 2023-07-21 15:41:57 -03:00
Paul Gauthier
4a8add1b5d Refactor get_tracked_files method to be called on self.coder.repo instead of self.coder. 2023-07-21 14:28:06 -03:00
Paul Gauthier
28578217da move tests to test_sendchat.py 2023-07-21 14:17:14 -03:00
Paul Gauthier
d0be8d4cbd cleanup 2023-07-21 14:09:38 -03:00
Paul Gauthier
0ac6957d04 noop 2023-07-21 14:07:30 -03:00
Paul Gauthier
4f94f720b5 cleanup 2023-07-21 14:05:30 -03:00
Paul Gauthier
5a163237b4 noop 2023-07-21 13:59:49 -03:00
Paul Gauthier
317412f854 noop 2023-07-21 13:56:48 -03:00
Paul Gauthier
01ea691957 Update commands to use the underlying repo 2023-07-21 13:01:48 -03:00
Paul Gauthier
74875eac6e sssh 2023-07-21 12:58:23 -03:00
Paul Gauthier
14b24dc2fd works 2023-07-21 12:57:01 -03:00
Paul Gauthier
296e7614c4 wip 2023-07-21 12:06:32 -03:00
Paul Gauthier
23beb7cb5d wip 2023-07-21 11:49:19 -03:00
Paul Gauthier
289887d94f refactor send_with_retries 2023-07-21 11:22:59 -03:00
Paul Gauthier
e34e6ff897 wip 2023-07-21 11:14:15 -03:00
Paul Gauthier
6d044485f3 Merge branch 'main' into chat-history 2023-07-21 07:44:09 -03:00
Paul Gauthier
d6a4b24306 Exit with 2 ^C in 2 seconds 2023-07-20 11:14:24 -03:00
Paul Gauthier
842ea95de2 Exit with 2 ^C in 3 seconds 2023-07-20 11:13:39 -03:00
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