Compare commits

...

25 Commits

Author SHA1 Message Date
Paul Gauthier
c7530085a6 set version to 0.62.2.dev 2024-11-05 12:41:44 -08:00
Paul Gauthier
bf43c567d8 version bump to 0.62.1 2024-11-05 12:40:17 -08:00
Paul Gauthier
b81f3e4f8d style: reorder chart canvas elements in blame.md 2024-11-05 12:11:14 -08:00
Paul Gauthier
97051b9d40 refactor: Replace GitTemporaryDirectory with ChdirTemporaryDirectory 2024-11-05 11:54:27 -08:00
Paul Gauthier
90730845de style: fix indentation in test_editblock.py 2024-11-05 11:43:04 -08:00
Paul Gauthier (aider)
f7c0c433c3 refactor: add mock for sendchat.simple_send_with_retries in test 2024-11-05 11:42:31 -08:00
Paul Gauthier
538752d0cf test: add mock for sendchat.simple_send_with_retries in editblock test 2024-11-05 11:42:30 -08:00
Paul Gauthier
c71a92ac84 fix: handle empty original content when creating new files 2024-11-05 09:14:01 -08:00
Paul Gauthier
85f23b3408 copy 2024-11-05 09:06:56 -08:00
Paul Gauthier
44cab0a4d7 refactor: update Claude model references to use 3.5-haiku-20241022 2024-11-05 09:01:35 -08:00
Paul Gauthier (aider)
33db8ee0c3 feat: enable repo map for Claude 3.5 Haiku models 2024-11-05 08:49:56 -08:00
Paul Gauthier
da4b3770c0 refactor: set use_repo_map=True for Claude 3.5 Haiku models 2024-11-05 08:49:53 -08:00
Paul Gauthier
12698998b9 feat: add verbose output for file processing in RepoMap 2024-11-05 08:48:06 -08:00
Paul Gauthier
6177856baf refactor: simplify issues script by removing redundant flag 2024-11-05 08:45:48 -08:00
Paul Gauthier (aider)
54b9c46b96 style: Fix whitespace in issues.py script 2024-11-05 07:04:15 -08:00
Paul Gauthier (aider)
2dd83e7dbe feat: exclude pull requests from unlabeled issues search 2024-11-05 07:04:11 -08:00
Paul Gauthier (aider)
17351e8f91 refactor: extract issue handling into dedicated functions 2024-11-05 07:02:24 -08:00
Paul Gauthier
e8c153f72f docs: add refactoring comments for issue handling functions 2024-11-05 07:02:22 -08:00
Paul Gauthier (aider)
ddfd1276c5 style: Format issues.py with black linter 2024-11-05 06:58:44 -08:00
Paul Gauthier (aider)
46251c6a1c feat: add function to find unlabeled issues with paul-gauthier comments 2024-11-05 06:58:40 -08:00
Paul Gauthier
e699968be5 copy 2024-11-05 06:53:13 -08:00
Paul Gauthier
389b58b75b fix: remove premature return after disabling analytics 2024-11-05 06:52:50 -08:00
Paul Gauthier
a7cf34dea4 copy 2024-11-04 15:40:21 -08:00
Paul Gauthier
e601682706 updated blame 2024-11-04 13:00:42 -08:00
Paul Gauthier
55f16dc0b5 copy 2024-11-04 12:53:10 -08:00
15 changed files with 242 additions and 100 deletions

View File

@@ -8,6 +8,8 @@
- Almost as good as Sonnet at much lower cost.
- Launch with `--haiku` to use it.
- Easily apply file edits from ChatGPT, Claude or other web apps
- Chat with ChatGPT or Claude via their web app.
- Give it your source files and ask for the changes you want.
- Use the web app's "copy response" button to copy the entire reply from the LLM.
- Run `aider --apply-clipboard-edits file-to-edit.js`.
- Aider will edit your file with the LLM's changes.

View File

@@ -1,6 +1,6 @@
try:
from aider.__version__ import __version__
except Exception:
__version__ = "0.62.1.dev"
__version__ = "0.62.2.dev"
__all__ = [__version__]

View File

@@ -52,7 +52,10 @@ class EditBlockCoder(Coder):
content = self.io.read_text(full_path)
new_content = do_replace(full_path, content, original, updated, self.fence)
if not new_content:
# If the edit failed, and
# this is not a "create a new file" with an empty original...
# https://github.com/Aider-AI/aider/issues/2258
if not new_content and original.strip():
# try patching any of the other files in the chat
for full_path in self.abs_fnames:
content = self.io.read_text(full_path)

View File

@@ -432,7 +432,6 @@ def main(argv=None, input=None, output=None, force_git_root=None, return_coder=F
if args.analytics_disable:
analytics = Analytics(permanently_disable=True)
print("Analytics have been permanently disabled.")
return
if not args.verify_ssl:
import httpx

View File

@@ -234,24 +234,24 @@ MODEL_SETTINGS = [
ModelSettings(
"claude-3-opus-20240229",
"diff",
weak_model_name="claude-3-haiku-20240307",
weak_model_name="claude-3-5-haiku-20241022",
use_repo_map=True,
),
ModelSettings(
"openrouter/anthropic/claude-3-opus",
"diff",
weak_model_name="openrouter/anthropic/claude-3-haiku",
weak_model_name="openrouter/anthropic/claude-3-5-haiku",
use_repo_map=True,
),
ModelSettings(
"claude-3-sonnet-20240229",
"whole",
weak_model_name="claude-3-haiku-20240307",
weak_model_name="claude-3-5-haiku-20241022",
),
ModelSettings(
"claude-3-5-sonnet-20240620",
"diff",
weak_model_name="claude-3-haiku-20240307",
weak_model_name="claude-3-5-haiku-20241022",
editor_model_name="claude-3-5-sonnet-20240620",
editor_edit_format="editor-diff",
use_repo_map=True,
@@ -268,7 +268,7 @@ MODEL_SETTINGS = [
ModelSettings(
"anthropic/claude-3-5-sonnet-20240620",
"diff",
weak_model_name="anthropic/claude-3-haiku-20240307",
weak_model_name="anthropic/claude-3-5-haiku-20241022",
editor_model_name="anthropic/claude-3-5-sonnet-20240620",
editor_edit_format="editor-diff",
use_repo_map=True,
@@ -285,7 +285,7 @@ MODEL_SETTINGS = [
ModelSettings(
"anthropic/claude-3-5-sonnet-20241022",
"diff",
weak_model_name="anthropic/claude-3-haiku-20240307",
weak_model_name="anthropic/claude-3-5-haiku-20241022",
editor_model_name="anthropic/claude-3-5-sonnet-20241022",
editor_edit_format="editor-diff",
use_repo_map=True,
@@ -302,7 +302,7 @@ MODEL_SETTINGS = [
ModelSettings(
"anthropic/claude-3-5-sonnet-latest",
"diff",
weak_model_name="anthropic/claude-3-haiku-20240307",
weak_model_name="anthropic/claude-3-5-haiku-20241022",
editor_model_name="anthropic/claude-3-5-sonnet-20241022",
editor_edit_format="editor-diff",
use_repo_map=True,
@@ -319,7 +319,7 @@ MODEL_SETTINGS = [
ModelSettings(
"claude-3-5-sonnet-20241022",
"diff",
weak_model_name="claude-3-haiku-20240307",
weak_model_name="claude-3-5-haiku-20241022",
editor_model_name="claude-3-5-sonnet-20241022",
editor_edit_format="editor-diff",
use_repo_map=True,
@@ -349,6 +349,7 @@ MODEL_SETTINGS = [
"anthropic/claude-3-5-haiku-20241022",
"diff",
weak_model_name="anthropic/claude-3-5-haiku-20241022",
use_repo_map=True,
extra_params={
"extra_headers": {
"anthropic-beta": ANTHROPIC_BETA_HEADER,
@@ -360,6 +361,7 @@ MODEL_SETTINGS = [
"claude-3-5-haiku-20241022",
"diff",
weak_model_name="claude-3-5-haiku-20241022",
use_repo_map=True,
examples_as_sys_msg=True,
extra_params={
"extra_headers": {
@@ -372,28 +374,11 @@ MODEL_SETTINGS = [
"vertex_ai/claude-3-5-haiku@20241022",
"diff",
weak_model_name="vertex_ai/claude-3-5-haiku@20241022",
use_repo_map=True,
extra_params={
"max_tokens": 4096,
},
),
ModelSettings(
"openrouter/anthropic/claude-3.5-haiku",
"diff",
weak_model_name="openrouter/anthropic/claude-3.5-haiku",
extra_params={
"max_tokens": 4096,
},
cache_control=True,
),
ModelSettings(
"openrouter/anthropic/claude-3.5-haiku:beta",
"diff",
weak_model_name="openrouter/anthropic/claude-3.5-haiku:beta",
extra_params={
"max_tokens": 4096,
},
cache_control=True,
),
ModelSettings(
"claude-3-haiku-20240307",
"whole",
@@ -409,7 +394,7 @@ MODEL_SETTINGS = [
ModelSettings(
"openrouter/anthropic/claude-3.5-sonnet",
"diff",
weak_model_name="openrouter/anthropic/claude-3-haiku",
weak_model_name="openrouter/anthropic/claude-3-5-haiku",
editor_model_name="openrouter/anthropic/claude-3.5-sonnet",
editor_edit_format="editor-diff",
use_repo_map=True,
@@ -423,7 +408,7 @@ MODEL_SETTINGS = [
ModelSettings(
"openrouter/anthropic/claude-3.5-sonnet:beta",
"diff",
weak_model_name="openrouter/anthropic/claude-3-haiku:beta",
weak_model_name="openrouter/anthropic/claude-3-5-haiku:beta",
editor_model_name="openrouter/anthropic/claude-3.5-sonnet:beta",
editor_edit_format="editor-diff",
use_repo_map=True,
@@ -439,7 +424,7 @@ MODEL_SETTINGS = [
ModelSettings(
"vertex_ai/claude-3-5-sonnet@20240620",
"diff",
weak_model_name="vertex_ai/claude-3-haiku@20240307",
weak_model_name="vertex_ai/claude-3-5-haiku@20241022",
editor_model_name="vertex_ai/claude-3-5-sonnet@20240620",
editor_edit_format="editor-diff",
use_repo_map=True,
@@ -452,7 +437,7 @@ MODEL_SETTINGS = [
ModelSettings(
"vertex_ai/claude-3-5-sonnet-v2@20241022",
"diff",
weak_model_name="vertex_ai/claude-3-haiku@20240307",
weak_model_name="vertex_ai/claude-3-5-haiku@20241022",
editor_model_name="vertex_ai/claude-3-5-sonnet-v2@20241022",
editor_edit_format="editor-diff",
use_repo_map=True,
@@ -465,13 +450,13 @@ MODEL_SETTINGS = [
ModelSettings(
"vertex_ai/claude-3-opus@20240229",
"diff",
weak_model_name="vertex_ai/claude-3-haiku@20240307",
weak_model_name="vertex_ai/claude-3-5-haiku@20241022",
use_repo_map=True,
),
ModelSettings(
"vertex_ai/claude-3-sonnet@20240229",
"whole",
weak_model_name="vertex_ai/claude-3-haiku@20240307",
weak_model_name="vertex_ai/claude-3-5-haiku@20241022",
),
# Cohere
ModelSettings(

View File

@@ -368,6 +368,8 @@ class RepoMap:
showing_bar = False
for fname in fnames:
if self.verbose:
self.io.tool_output(f"Processing {fname}")
if progress and not showing_bar:
progress()

View File

@@ -26,6 +26,8 @@ cog.out(text)
- Almost as good as Sonnet at much lower cost.
- Launch with `--haiku` to use it.
- Easily apply file edits from ChatGPT, Claude or other web apps
- Chat with ChatGPT or Claude via their web app.
- Give it your source files and ask for the changes you want.
- Use the web app's "copy response" button to copy the entire reply from the LLM.
- Run `aider --apply-clipboard-edits file-to-edit.js`.
- Aider will edit your file with the LLM's changes.

View File

@@ -2895,3 +2895,24 @@
kAIto47802: 4
start_tag: v0.60.0
total_lines: 1272
- aider_percentage: 84.0
aider_total: 63
end_date: '2024-11-04'
end_tag: v0.62.0
file_counts:
aider/__init__.py:
Paul Gauthier: 1
aider/args.py:
Paul Gauthier (aider): 14
aider/coders/editblock_coder.py:
Paul Gauthier: 6
aider/main.py:
Paul Gauthier (aider): 4
aider/models.py:
Paul Gauthier: 5
Paul Gauthier (aider): 45
grand_total:
Paul Gauthier: 12
Paul Gauthier (aider): 63
start_tag: v0.61.0
total_lines: 75

View File

@@ -1,5 +1,5 @@
<canvas id="linesChart" width="800" height="360" style="margin-top: 20px"></canvas>
<canvas id="blameChart" width="800" height="360" style="margin-top: 20px"></canvas>
<canvas id="linesChart" width="800" height="360" style="margin-top: 20px"></canvas>
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
<script src="https://cdn.jsdelivr.net/npm/moment"></script>
<script src="https://cdn.jsdelivr.net/npm/chartjs-adapter-moment"></script>

View File

@@ -462,3 +462,70 @@
{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730751479}
{"event": "gui session", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730751480}
{"event": "command_diff", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730751655}
{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730752696}
{"event": "gui session", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730752696}
{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.62.0"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730753391}
{"event": "gui session", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.62.0"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730753391}
{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.62.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730754105}
{"event": "cli session", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.62.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730754107}
{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.62.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730754113}
{"event": "gui session", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.62.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730754114}
{"event": "command_help", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.62.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730754114}
{"event": "interactive help", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.62.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730754114}
{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "help", "prompt_tokens": 4369, "completion_tokens": 162, "total_tokens": 4531, "cost": 0.015537, "total_cost": 0.015537, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.62.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730754131}
{"event": "command_help", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.62.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730754139}
{"event": "interactive help", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.62.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730754139}
{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "help", "prompt_tokens": 7756, "completion_tokens": 141, "total_tokens": 7897, "cost": 0.025383, "total_cost": 0.04092, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.62.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730754149}
{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.62.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730754160}
{"event": "cli session", "properties": {"main_model": "openrouter/anthropic/claude-3.5-sonnet", "weak_model": "openrouter/REDACTED", "editor_model": "openrouter/anthropic/claude-3.5-sonnet", "edit_format": "diff", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.62.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730754162}
{"event": "message_send", "properties": {"main_model": "openrouter/anthropic/claude-3.5-sonnet", "weak_model": "openrouter/REDACTED", "editor_model": "openrouter/anthropic/claude-3.5-sonnet", "edit_format": "diff", "prompt_tokens": 4597, "completion_tokens": 43, "total_tokens": 4640, "cost": 0.014436000000000001, "total_cost": 0.014436000000000001, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.62.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730754166}
{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.62.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730754174}
{"event": "cli session", "properties": {"main_model": "openrouter/REDACTED", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "openrouter/REDACTED", "edit_format": "whole", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.62.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730754176}
{"event": "message_send", "properties": {"main_model": "openrouter/REDACTED", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "openrouter/REDACTED", "edit_format": "whole", "prompt_tokens": 593, "completion_tokens": 53, "total_tokens": 646, "cost": 0.000858, "total_cost": 0.000858, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.62.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730754179}
{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.62.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730818364}
{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.62.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730818452}
{"event": "gui session", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.62.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730818452}
{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.62.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730818654}
{"event": "cli session", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.62.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730818656}
{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 4733, "completion_tokens": 745, "total_tokens": 5478, "cost": 0.025374, "total_cost": 0.025374, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.62.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730818718}
{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730818841}
{"event": "cli session", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730818842}
{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.62.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730818882}
{"event": "cli session", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.62.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730818884}
{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 4657, "completion_tokens": 83, "total_tokens": 4740, "cost": 0.015216, "total_cost": 0.015216, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.62.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730818900}
{"event": "command_add", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.62.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730818904}
{"event": "command_clear", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.62.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730818907}
{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 5113, "completion_tokens": 1484, "total_tokens": 6597, "cost": 0.037599, "total_cost": 0.052815, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.62.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730818940}
{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 6654, "completion_tokens": 435, "total_tokens": 7089, "cost": 0.026487, "total_cost": 0.079302, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.62.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730819050}
{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.62.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730825144}
{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.62.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730825234}
{"event": "cli session", "properties": {"main_model": "gpt-4o-mini", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "gpt-4o-mini", "edit_format": "whole", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.62.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730825235}
{"event": "message_send", "properties": {"main_model": "gpt-4o-mini", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "gpt-4o-mini", "edit_format": "whole", "prompt_tokens": 674, "completion_tokens": 23, "total_tokens": 697, "cost": 0.00011489999999999999, "total_cost": 0.00011489999999999999, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.62.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730825238}
{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.62.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730825250}
{"event": "cli session", "properties": {"main_model": "None", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "None", "edit_format": "diff", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.62.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730825252}
{"event": "message_send", "properties": {"main_model": "None", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "None", "edit_format": "diff", "prompt_tokens": 2185, "completion_tokens": 56, "total_tokens": 2241, "cost": 0.0024649999999999997, "total_cost": 0.0024649999999999997, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.62.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730825255}
{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.62.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730825273}
{"event": "cli session", "properties": {"main_model": "None", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "None", "edit_format": "diff", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.62.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730825275}
{"event": "message_send", "properties": {"main_model": "None", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "None", "edit_format": "diff", "prompt_tokens": 4601, "completion_tokens": 0, "total_tokens": 4601, "cost": 0.004601, "total_cost": 0.004601, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.62.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730825277}
{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.62.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730825280}
{"event": "command_reset", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.62.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730825329}
{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.62.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730825344}
{"event": "gui session", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.62.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730825345}
{"event": "command_add", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.62.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730825356}
{"event": "command_add", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.62.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730825371}
{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 12023, "completion_tokens": 494, "total_tokens": 12517, "cost": 0.043479000000000004, "total_cost": 0.122781, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.62.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730825392}
{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.62.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730825584}
{"event": "model warning", "properties": {"main_model": "openrouter/REDACTED", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "openrouter/REDACTED", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.62.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730825586}
{"event": "cli session", "properties": {"main_model": "openrouter/REDACTED", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "openrouter/REDACTED", "edit_format": "diff", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.62.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730825588}
{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.62.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730825603}
{"event": "message_send", "properties": {"main_model": "openrouter/REDACTED", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "openrouter/REDACTED", "edit_format": "whole", "prompt_tokens": 406, "completion_tokens": 57, "total_tokens": 463, "cost": 0.000691, "total_cost": 0.000691, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.62.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730825607}
{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.62.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730825613}
{"event": "message_send", "properties": {"main_model": "openrouter/anthropic/claude-3.5-sonnet", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "openrouter/anthropic/claude-3.5-sonnet", "edit_format": "diff", "prompt_tokens": 4608, "completion_tokens": 52, "total_tokens": 4660, "cost": 0.014603999999999999, "total_cost": 0.014603999999999999, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.62.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730825618}
{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.62.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730825641}
{"event": "model warning", "properties": {"main_model": "openrouter/REDACTED", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "openrouter/REDACTED", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.62.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730825643}
{"event": "message_send", "properties": {"main_model": "openrouter/REDACTED", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "openrouter/REDACTED", "edit_format": "whole", "prompt_tokens": 406, "completion_tokens": 79, "total_tokens": 485, "cost": 0.0, "total_cost": 0.0, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.62.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730825648}
{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.62.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730825746}
{"event": "model warning", "properties": {"main_model": "openrouter/REDACTED", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "openrouter/REDACTED", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.62.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730825748}
{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.62.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730825774}
{"event": "model warning", "properties": {"main_model": "openrouter/REDACTED", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "openrouter/REDACTED", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.62.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730825775}
{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.62.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730826090}

View File

@@ -400,7 +400,7 @@ cog.out("```\n")
use_repo_map: true
use_system_prompt: true
use_temperature: true
weak_model_name: claude-3-haiku-20240307
weak_model_name: claude-3-5-haiku-20241022
- cache_control: false
caches_by_default: false
edit_format: diff
@@ -416,7 +416,7 @@ cog.out("```\n")
use_repo_map: true
use_system_prompt: true
use_temperature: true
weak_model_name: openrouter/anthropic/claude-3-haiku
weak_model_name: openrouter/anthropic/claude-3-5-haiku
- cache_control: false
caches_by_default: false
edit_format: whole
@@ -432,7 +432,7 @@ cog.out("```\n")
use_repo_map: false
use_system_prompt: true
use_temperature: true
weak_model_name: claude-3-haiku-20240307
weak_model_name: claude-3-5-haiku-20241022
- cache_control: true
caches_by_default: false
edit_format: diff
@@ -451,7 +451,7 @@ cog.out("```\n")
use_repo_map: true
use_system_prompt: true
use_temperature: true
weak_model_name: claude-3-haiku-20240307
weak_model_name: claude-3-5-haiku-20241022
- cache_control: true
caches_by_default: false
edit_format: diff
@@ -470,7 +470,7 @@ cog.out("```\n")
use_repo_map: true
use_system_prompt: true
use_temperature: true
weak_model_name: anthropic/claude-3-haiku-20240307
weak_model_name: anthropic/claude-3-5-haiku-20241022
- cache_control: true
caches_by_default: false
edit_format: diff
@@ -489,7 +489,7 @@ cog.out("```\n")
use_repo_map: true
use_system_prompt: true
use_temperature: true
weak_model_name: anthropic/claude-3-haiku-20240307
weak_model_name: anthropic/claude-3-5-haiku-20241022
- cache_control: true
caches_by_default: false
edit_format: diff
@@ -508,7 +508,7 @@ cog.out("```\n")
use_repo_map: true
use_system_prompt: true
use_temperature: true
weak_model_name: anthropic/claude-3-haiku-20240307
weak_model_name: anthropic/claude-3-5-haiku-20241022
- cache_control: true
caches_by_default: false
edit_format: diff
@@ -527,7 +527,7 @@ cog.out("```\n")
use_repo_map: true
use_system_prompt: true
use_temperature: true
weak_model_name: claude-3-haiku-20240307
weak_model_name: claude-3-5-haiku-20241022
- cache_control: true
caches_by_default: false
edit_format: whole
@@ -560,7 +560,7 @@ cog.out("```\n")
reminder: user
send_undo_reply: false
streaming: true
use_repo_map: false
use_repo_map: true
use_system_prompt: true
use_temperature: true
weak_model_name: anthropic/claude-3-5-haiku-20241022
@@ -578,7 +578,7 @@ cog.out("```\n")
reminder: user
send_undo_reply: false
streaming: true
use_repo_map: false
use_repo_map: true
use_system_prompt: true
use_temperature: true
weak_model_name: claude-3-5-haiku-20241022
@@ -595,44 +595,10 @@ cog.out("```\n")
reminder: user
send_undo_reply: false
streaming: true
use_repo_map: false
use_repo_map: true
use_system_prompt: true
use_temperature: true
weak_model_name: vertex_ai/claude-3-5-haiku@20241022
- cache_control: true
caches_by_default: false
edit_format: diff
editor_edit_format: null
editor_model_name: null
examples_as_sys_msg: false
extra_params:
max_tokens: 4096
lazy: false
name: openrouter/anthropic/claude-3.5-haiku
reminder: user
send_undo_reply: false
streaming: true
use_repo_map: false
use_system_prompt: true
use_temperature: true
weak_model_name: openrouter/anthropic/claude-3.5-haiku
- cache_control: true
caches_by_default: false
edit_format: diff
editor_edit_format: null
editor_model_name: null
examples_as_sys_msg: false
extra_params:
max_tokens: 4096
lazy: false
name: openrouter/anthropic/claude-3.5-haiku:beta
reminder: user
send_undo_reply: false
streaming: true
use_repo_map: false
use_system_prompt: true
use_temperature: true
weak_model_name: openrouter/anthropic/claude-3.5-haiku:beta
- cache_control: true
caches_by_default: false
edit_format: whole
@@ -667,7 +633,7 @@ cog.out("```\n")
use_repo_map: true
use_system_prompt: true
use_temperature: true
weak_model_name: openrouter/anthropic/claude-3-haiku
weak_model_name: openrouter/anthropic/claude-3-5-haiku
- cache_control: true
caches_by_default: false
edit_format: diff
@@ -684,7 +650,7 @@ cog.out("```\n")
use_repo_map: true
use_system_prompt: true
use_temperature: true
weak_model_name: openrouter/anthropic/claude-3-haiku:beta
weak_model_name: openrouter/anthropic/claude-3-5-haiku:beta
- cache_control: false
caches_by_default: false
edit_format: diff
@@ -701,7 +667,7 @@ cog.out("```\n")
use_repo_map: true
use_system_prompt: true
use_temperature: true
weak_model_name: vertex_ai/claude-3-haiku@20240307
weak_model_name: vertex_ai/claude-3-5-haiku@20241022
- cache_control: false
caches_by_default: false
edit_format: diff
@@ -718,7 +684,7 @@ cog.out("```\n")
use_repo_map: true
use_system_prompt: true
use_temperature: true
weak_model_name: vertex_ai/claude-3-haiku@20240307
weak_model_name: vertex_ai/claude-3-5-haiku@20241022
- cache_control: false
caches_by_default: false
edit_format: diff
@@ -734,7 +700,7 @@ cog.out("```\n")
use_repo_map: true
use_system_prompt: true
use_temperature: true
weak_model_name: vertex_ai/claude-3-haiku@20240307
weak_model_name: vertex_ai/claude-3-5-haiku@20241022
- cache_control: false
caches_by_default: false
edit_format: whole
@@ -750,7 +716,7 @@ cog.out("```\n")
use_repo_map: false
use_system_prompt: true
use_temperature: true
weak_model_name: vertex_ai/claude-3-haiku@20240307
weak_model_name: vertex_ai/claude-3-5-haiku@20241022
- cache_control: false
caches_by_default: false
edit_format: whole

View File

@@ -100,7 +100,7 @@ aider --analytics-log filename.jsonl --no-analytics
If you have concerns about any of the analytics that aider is collecting
or our data practices
please contact us by opening a
[GitHub Issue](https://github.com/paul-gauthier/aider/issues).
[GitHub Issue](https://github.com/aider-ai/aider/issues).
## Privacy policy

View File

@@ -57,6 +57,7 @@ cog.out(model_list)
]]]-->
- anthropic.claude-3-5-sonnet-20241022-v2:0
- anthropic/claude-3-5-sonnet-20241022
- claude-3-5-haiku-20241022
- claude-3-5-sonnet-20240620
- claude-3-5-sonnet-20241022
- claude-3-haiku-20240307
@@ -88,6 +89,7 @@ cog.out(model_list)
- mistral/pixtral-12b-2409
- openrouter/anthropic/claude-3.5-sonnet
- us.anthropic.claude-3-5-sonnet-20241022-v2:0
- vertex_ai/claude-3-5-haiku@20241022
- vertex_ai/claude-3-5-sonnet-v2@20241022
- vertex_ai/claude-3-5-sonnet@20240620
- vertex_ai/claude-3-haiku@20240307

View File

@@ -112,18 +112,55 @@ def comment_and_close_duplicate(issue, oldest_issue):
print(f" - Commented and closed issue #{issue['number']}")
def main():
parser = argparse.ArgumentParser(description="Handle duplicate GitHub issues")
parser.add_argument(
"--yes", action="store_true", help="Automatically close duplicates without prompting"
)
args = parser.parse_args()
def find_unlabeled_with_paul_comments(issues):
unlabeled_issues = []
for issue in issues:
# Skip pull requests
if "pull_request" in issue:
continue
if not TOKEN:
print("Error: Missing GITHUB_TOKEN environment variable. Please check your .env file.")
if not issue["labels"] and issue["state"] == "open":
# Get comments for this issue
comments_url = (
f"{GITHUB_API_URL}/repos/{REPO_OWNER}/{REPO_NAME}/issues/{issue['number']}/comments"
)
response = requests.get(comments_url, headers=headers)
response.raise_for_status()
comments = response.json()
# Check if paul-gauthier has commented
if any(comment["user"]["login"] == "paul-gauthier" for comment in comments):
unlabeled_issues.append(issue)
return unlabeled_issues
def handle_unlabeled_issues(all_issues, auto_yes):
print("\nFinding unlabeled issues with paul-gauthier comments...")
unlabeled_issues = find_unlabeled_with_paul_comments(all_issues)
if not unlabeled_issues:
print("No unlabeled issues with paul-gauthier comments found.")
return
all_issues = get_issues("all")
print(f"\nFound {len(unlabeled_issues)} unlabeled issues with paul-gauthier comments:")
for issue in unlabeled_issues:
print(f" - #{issue['number']}: {issue['title']} {issue['html_url']}")
if not auto_yes:
confirm = input("\nDo you want to add the 'question' label to these issues? (y/n): ")
if confirm.lower() != "y":
print("Skipping labeling.")
return
print("\nAdding 'question' label to issues...")
for issue in unlabeled_issues:
url = f"{GITHUB_API_URL}/repos/{REPO_OWNER}/{REPO_NAME}/issues/{issue['number']}"
response = requests.patch(url, headers=headers, json={"labels": ["question"]})
response.raise_for_status()
print(f" - Added 'question' label to #{issue['number']}")
def handle_duplicate_issues(all_issues, auto_yes):
open_issues = [issue for issue in all_issues if issue["state"] == "open"]
grouped_open_issues = group_issues_by_subject(open_issues)
@@ -149,14 +186,12 @@ def main():
f" {oldest_issue['html_url']} ({oldest_issue['state']})"
)
if not args.yes:
# Confirmation prompt
if not auto_yes:
confirm = input("Do you want to comment and close duplicate issues? (y/n): ")
if confirm.lower() != "y":
print("Skipping this group of issues.")
continue
# Comment and close duplicate issues
for issue in issues:
if issue["number"] != oldest_issue["number"]:
comment_and_close_duplicate(issue, oldest_issue)
@@ -165,5 +200,22 @@ def main():
print(f"Oldest issue #{oldest_issue['number']} left open")
def main():
parser = argparse.ArgumentParser(description="Handle duplicate GitHub issues")
parser.add_argument(
"--yes", action="store_true", help="Automatically close duplicates without prompting"
)
args = parser.parse_args()
if not TOKEN:
print("Error: Missing GITHUB_TOKEN environment variable. Please check your .env file.")
return
all_issues = get_issues("all")
handle_unlabeled_issues(all_issues, args.yes)
handle_duplicate_issues(all_issues, args.yes)
if __name__ == "__main__":
main()

View File

@@ -10,6 +10,7 @@ from aider.coders import editblock_coder as eb
from aider.dump import dump # noqa: F401
from aider.io import InputOutput
from aider.models import Model
from aider.utils import ChdirTemporaryDirectory
class TestUtils(unittest.TestCase):
@@ -341,6 +342,46 @@ These changes replace the `subprocess.run` patches with `subprocess.check_output
result = eb.replace_most_similar_chunk(whole, part, replace)
self.assertEqual(result, expected_output)
def test_create_new_file_with_other_file_in_chat(self):
# https://github.com/Aider-AI/aider/issues/2258
with ChdirTemporaryDirectory():
# Create a few temporary files
file1 = "file.txt"
with open(file1, "w", encoding="utf-8") as f:
f.write("one\ntwo\nthree\n")
files = [file1]
# Initialize the Coder object with the mocked IO and mocked repo
coder = Coder.create(
self.GPT35, "diff", use_git=False, io=InputOutput(yes=True), fnames=files
)
def mock_send(*args, **kwargs):
coder.partial_response_content = f"""
Do this:
newfile.txt
<<<<<<< SEARCH
=======
creating a new file
>>>>>>> REPLACE
"""
coder.partial_response_function_call = dict()
return []
coder.send = mock_send
coder.run(with_message="hi")
content = Path(file1).read_text(encoding="utf-8")
self.assertEqual(content, "one\ntwo\nthree\n")
content = Path("newfile.txt").read_text(encoding="utf-8")
self.assertEqual(content, "creating a new file\n")
def test_full_edit(self):
# Create a few temporary files
_, file1 = tempfile.mkstemp()