Commit graph

2576 commits

Author SHA1 Message Date
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
1e0443cc86 better test 2023-07-16 12:36:19 -03:00
Paul Gauthier
7d8069d778 test_setup_git works 2023-07-16 12:33:56 -03:00
Paul Gauthier
7096f7287c simplify with make_repo 2023-07-16 12:30:40 -03:00
Paul Gauthier
108abe4a49 aider: Replace all subprocess.run(git calls that are making new repos and setting config with make_repo calls.
# Aider chat conversation:

USER: replace all the `subprocess.run(git` calls that are making new repos and setting config with `make_repo` calls

ASSISTANT: To replace all the `subprocess.run(git` calls that are making new repos and setting config with `make_repo` calls, we need to modify the `tests/test_main.py` file.

Here are the changes:

```python
tests/test_main.py
<<<<<<< ORIGINAL
        subprocess.run(["git", "init"])
        subprocess.run(["git", "config", "user.email", "dummy@example.com"])
        subprocess.run(["git", "config", "user.name", "Dummy User"])
=======
        from tests.utils import make_repo
        make_repo()
>>>>>>> UPDATED
```

```python
tests/test_main.py
<<<<<<< ORIGINAL
        subprocess.run(["git", "init"])
        subprocess.run(["git", "config", "user.email", "dummy@example.com"])
        subprocess.run(["git", "config", "user.name", "Dummy User"])
=======
        from tests.utils import make_repo
        make_repo()
>>>>>>> UPDATED
```

```python
tests/test_main.py
<<<<<<< ORIGINAL
        subprocess.run(["git", "init"])
        subprocess.run(["git", "config", "user.email", "dummy@example.com"])
        subprocess.run(["git", "config", "user.name", "Dummy User"])
=======
        from tests.utils import make_repo
        make_repo()
>>>>>>> UPDATED
```

Please note that you need to import the `make_repo` function from `tests.utils` in each test where it's used.
2023-07-16 12:26:31 -03:00
Paul Gauthier
611e21e457 Merge branch 'main' into gitignore 2023-07-16 12:25:23 -03:00
Paul Gauthier
4447f61dc6 refac make_repo 2023-07-16 12:25:18 -03:00
Paul Gauthier
67554196f3 Merge branch 'main' into gitignore 2023-07-16 12:21:16 -03:00
Paul Gauthier
10b327d487 copy 2023-07-16 12:21:01 -03:00
Paul Gauthier
bcbfa0babd copy 2023-07-16 12:20:03 -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
a3f3a18ee0 Updated HISTORY 2023-07-16 09:47:03 -03:00
Paul Gauthier
a9cca05680 Added GitTemporaryDirectory 2023-07-16 09:39:07 -03:00
Paul Gauthier
86cea01434 aider: Change the relative import to an absolute import for the IgnorantTemporaryDirectory class in test_repomap.py.
# Aider chat conversation:

USER: ImportError: Failed to import test module: test_repomap
Traceback (most recent call last):
  File "/opt/hostedtoolcache/Python/3.8.17/x64/lib/python3.8/unittest/loader.py", line 436, in _find_test_path
    module = self._get_module_from_name(name)
  File "/opt/hostedtoolcache/Python/3.8.17/x64/lib/python3.8/unittest/loader.py", line 377, in _get_module_from_name
    __import__(name)
  File "/home/runner/work/aider/aider/tests/test_repomap.py", line 8, in <module>
    from .utils import IgnorantTemporaryDirectory
ImportError: attempted relative import with no known parent package

ASSISTANT: The error message indicates that Python is unable to find the `utils` module when it's being imported in `test_repomap.py`. This is because the import statement is using a relative import with the dot (`.`) prefix, which is not working in this context.

To fix this, we need to change the relative import to an absolute import. This means we need to specify the full path to the `utils` module from the project's root directory.

Here is the change you need to make:

```python
tests/test_repomap.py
<<<<<<< ORIGINAL
from .utils import IgnorantTemporaryDirectory
=======
from tests.utils import IgnorantTemporaryDirectory
>>>>>>> UPDATED
```

This change tells Python to import the `IgnorantTemporaryDirectory` class from the `utils` module located in the `tests` directory, which is an absolute path from the project's root directory.
2023-07-16 09:05:18 -03:00
Paul Gauthier
cdf35cd122 refac 2023-07-16 09:02:35 -03:00
Paul Gauthier
50c8a96edd wip 2023-07-16 08:18:05 -03:00
Paul Gauthier
c8d69f84ce aider: Add test for setup_git function.
# Aider chat conversation:

USER: add tests for `setup_git`

ASSISTANT: To add tests for the `setup_git` function, we need to modify the `tests/test_main.py` file. We will add a new test function `test_setup_git` in the `TestMain` class.

Here is the change:

```python
tests/test_main.py
<<<<<<< ORIGINAL
    def test_main_args(self):
        with patch("aider.main.Coder.create") as MockCoder:
            # --yes will just ok the git repo without blocking on input
            # following calls to main will see the new repo already
            main(["--no-auto-commits", "--yes"], input=DummyInput())
            _, kwargs = MockCoder.call_args
            assert kwargs["auto_commits"] is False
=======
    def test_main_args(self):
        with patch("aider.main.Coder.create") as MockCoder:
            # --yes will just ok the git repo without blocking on input
            # following calls to main will see the new repo already
            main(["--no-auto-commits", "--yes"], input=DummyInput())
            _, kwargs = MockCoder.call_args
            assert kwargs["auto_commits"] is False

    def test_setup_git(self):
        with patch("aider.main.git.Repo.init") as MockRepoInit:
            MockRepoInit.return_value = git.Repo(self.tempdir)
            git_root = setup_git(None, self.io)
            self.assertEqual(git_root, self.tempdir)
            MockRepoInit.assert_called_once_with(self.tempdir)
>>>>>>> UPDATED
```

In the new test `test_setup_git`, we are mocking the `git.Repo.init` function to return a git repository at `self.tempdir`. Then we call `setup_git` with `None` as the `git_root` and check if it returns `self.tempdir` as the new `git_root`. We also check if `git.Repo.init` was called once with `self.tempdir` as the argument.
2023-07-15 13:37:39 -07: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
9785ede960 copy 2023-07-15 10:59:16 -07:00
Paul Gauthier
adf123c30e aider: Added table of contents to the faq.md file.
# Aider chat conversation:

USER: add a table of contents

ASSISTANT: To add a table of contents to the `faq.md` file, we need to add a list of links to the sections at the top of the file. Each link should be in the format `[Section Name](#section-name)`, where `Section Name` is the name of the section and `section-name` is the section name in lowercase with spaces replaced by hyphens.

Here is the *edit block* for this change:

<source>markdown
docs/faq.md
<<<<<<< ORIGINAL
# Frequently asked questions

## How does aider use git?
=======
# Frequently asked questions

- [How does aider use git?](#how-does-aider-use-git)
- [GPT-4 vs GPT-3.5](#gpt-4-vs-gpt-35)
- [Aider isn't editing my files?](#aider-isnt-editing-my-files)
- [Can I use aider with other LLMs, local LLMs, etc?](#can-i-use-aider-with-other-llms-local-llms-etc)
- [Can I change the system prompts that aider uses?](#can-i-change-the-system-prompts-that-aider-uses)
- [Can I run aider in Google Colab?](#can-i-run-aider-in-google-colab)

## How does aider use git?
>>>>>>> UPDATED
</source>
2023-07-15 10:53:12 -07:00
Paul Gauthier
7a2c954eb7 Updated HISTORY 2023-07-15 10:36:02 -07:00
Paul Gauthier
8622ffaf4c Added faq entry 2023-07-15 10:34:55 -07:00
Paul Gauthier
1b10751585 More informative retry messages 2023-07-15 10:19:48 -07:00
Paul Gauthier
9f7f6607c2 copy 2023-07-14 21:22:49 -07:00
Paul Gauthier
843c51c35e copy 2023-07-14 21:21:00 -07:00
Paul Gauthier
9d9de4d02e added git faq 2023-07-14 21:16:18 -07:00
Paul Gauthier
e6996da018 fix tests for windows 2023-07-14 20:28:33 -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
84da88feec Updated HISTORY 2023-07-14 20:00:57 -07:00
Paul Gauthier
78d9d014f2 fix bug blocking addition of subdir filename mentions 2023-07-14 20:00:04 -07:00
Paul Gauthier
16a21d9844 added failing test for mention 2023-07-14 19:53:49 -07:00
Paul Gauthier
edbec5498e update benchmark driver 2023-07-13 20:02:58 -07:00
Paul Gauthier
743d3f0d1c copy 2023-07-13 19:44:59 -07:00
Paul Gauthier
92f5c712fd copy 2023-07-13 19:44:50 -07:00
Paul Gauthier
ef6714b381 show a js example 2023-07-13 17:56:52 -07:00
Paul Gauthier
719810b1a1 removed import 2023-07-13 17:47:24 -07:00
Paul Gauthier
b52a62190a Ignore errors when cleaning up temp dirs (Win) 2023-07-13 17:18:09 -07:00
Paul Gauthier
8e2b92febb close the open cache files, so Windows won't error 2023-07-13 16:02:29 -07:00
Paul Gauthier
24015dab5f Try and make test run on windows 2023-07-13 15:55:33 -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
82f8f1f62a copy 2023-07-13 15:33:46 -07:00
Paul Gauthier
f543cf9737 make og:image link absolute 2023-07-13 14:06:32 -07:00
Paul Gauthier
598d81d77c aider: Set the full URL to "https://aider.chat" in _config.yml.
# Aider chat conversation:

USER: what is the site.baseurl ?

ASSISTANT: In Jekyll, `site.baseurl` is a variable that stores the subpath of your site. For example, if your site is at `http://example.com/my_site`, then `site.baseurl` would be `/my_site`. It's often used in templates to prepend to URLs to ensure they work correctly regardless of the site's subpath.

However, I don't see `site.baseurl` defined in your `_config.yml` file. If you're not hosting your site in a subdirectory, you may not need it. If you are, you should add it to your `_config.yml` file like this:

```yml
baseurl: "/my_site" # replace "my_site" with your actual subpath
```

Please let me know if you want to add this to your `_config.yml` file.

USER: https://aider.chat

ASSISTANT: If you want to set the `baseurl` to "https://aider.chat", you should know that `baseurl` is typically used for subpaths, not the full URL. The full URL is usually set in the `url` field.

Here's how you can add it:

```yaml
_config.yml
<<<<<<< ORIGINAL
theme: jekyll-theme-cayman

defaults:
  - scope:
      path: "README.md"
      type: "pages"
    values:
      description: "A command-line chat tool for coding with GPT"
=======
theme: jekyll-theme-cayman
url: "https://aider.chat"

defaults:
  - scope:
      path: "README.md"
      type: "pages"
    values:

^C KeyboardInterrupt

USER: ok, set the full url

ASSISTANT: Alright, here's how you can add the full URL to your `_config.yml` file:

```yaml
_config.yml
<<<<<<< ORIGINAL
theme: jekyll-theme-cayman

defaults:
  - scope:
      path: "README.md"
      type: "pages"
    values:
      description: "A command-line chat tool for coding with GPT"
=======
theme: jekyll-theme-cayman
url: "https://aider.chat"

defaults:
  - scope:
      path: "README.md"
      type: "pages"
    values:
      description: "A command-line chat tool for coding with GPT"
>>>>>>> UPDATED
```

This will set the `url` variable to "https://aider.chat". You can use `{{ site.url }}` in your templates to refer to this URL.
2023-07-13 14:05:38 -07:00