diff --git a/README.md b/README.md index d9be9c5801e..f15840b8162 100644 --- a/README.md +++ b/README.md @@ -42,7 +42,7 @@ pip install aider-ce or ``` -uv install aider-ce +uv pip install aider-ce ``` The package exports an `aider-ce` command that accepts all of Aider's configuration options diff --git a/aider/__init__.py b/aider/__init__.py index 21c650060b5..9eb73a1f92d 100644 --- a/aider/__init__.py +++ b/aider/__init__.py @@ -1,6 +1,6 @@ from packaging import version -__version__ = "0.87.4.dev" +__version__ = "0.87.6.dev" safe_version = __version__ try: diff --git a/aider/exceptions.py b/aider/exceptions.py index a81a058e038..172750c9b30 100644 --- a/aider/exceptions.py +++ b/aider/exceptions.py @@ -28,6 +28,7 @@ class ExInfo: "The API provider has refused the request due to a safety policy about the content.", ), ExInfo("ContextWindowExceededError", False, None), # special case handled in base_coder + ExInfo("ImageFetchError", True, "The API cannot fetch an image"), ExInfo("InternalServerError", True, "The API provider's servers are down or overloaded."), ExInfo("InvalidRequestError", True, None), ExInfo("JSONSchemaValidationError", True, None), @@ -66,8 +67,10 @@ def _load(self, strict=False): raise ValueError(f"{var} is in litellm but not in aider's exceptions list") for var in self.exception_info: - ex = getattr(litellm, var) - self.exceptions[ex] = self.exception_info[var] + ex = getattr(litellm, var, "default") + + if ex != "default": + self.exceptions[ex] = self.exception_info[var] def exceptions_tuple(self): return tuple(self.exceptions) diff --git a/aider/resources/model-settings.yml b/aider/resources/model-settings.yml index 33075ff6fca..57060497d19 100644 --- a/aider/resources/model-settings.yml +++ b/aider/resources/model-settings.yml @@ -1826,6 +1826,7 @@ use_repo_map: true use_temperature: false accepts_settings: ["reasoning_effort"] + overeager: true - name: gpt-5-2025-08-07 edit_format: diff diff --git a/aider/website/_data/polyglot_leaderboard.yml b/aider/website/_data/polyglot_leaderboard.yml index 5faa62dd908..e67dac149ca 100644 --- a/aider/website/_data/polyglot_leaderboard.yml +++ b/aider/website/_data/polyglot_leaderboard.yml @@ -1711,3 +1711,90 @@ versions: 0.85.3.dev seconds_per_case: 35.5 total_cost: 0.7406 + +- dirname: 2025-08-23-15-47-21--gpt-5-high + test_cases: 225 + model: gpt-5 (high) + edit_format: diff + commit_hash: 32faf82 + reasoning_effort: high + pass_rate_1: 52.0 + pass_rate_2: 88.0 + pass_num_1: 117 + pass_num_2: 198 + percent_cases_well_formed: 91.6 + error_outputs: 23 + num_malformed_responses: 22 + num_with_malformed_responses: 19 + user_asks: 96 + lazy_comments: 3 + syntax_errors: 0 + indentation_errors: 0 + exhausted_context_windows: 0 + prompt_tokens: 2675561 + completion_tokens: 2623429 + test_timeouts: 3 + total_tests: 225 + command: aider --model openai/gpt-5 + date: 2025-08-23 + versions: 0.86.2.dev + seconds_per_case: 194.0 + total_cost: 29.0829 + +- dirname: 2025-08-25-13-23-27--gpt-5-medium + test_cases: 225 + model: gpt-5 (medium) + edit_format: diff + commit_hash: 32faf82 + reasoning_effort: medium + pass_rate_1: 49.8 + pass_rate_2: 86.7 + pass_num_1: 112 + pass_num_2: 195 + percent_cases_well_formed: 88.4 + error_outputs: 40 + num_malformed_responses: 40 + num_with_malformed_responses: 26 + user_asks: 102 + lazy_comments: 0 + syntax_errors: 0 + indentation_errors: 0 + exhausted_context_windows: 0 + prompt_tokens: 2827261 + completion_tokens: 1468799 + test_timeouts: 0 + total_tests: 225 + command: aider --model openai/gpt-5 + date: 2025-08-25 + versions: 0.86.2.dev + seconds_per_case: 118.7 + total_cost: 17.6930 + +- dirname: 2025-08-25-14-16-37--gpt-5-low + test_cases: 225 + model: gpt-5 (low) + edit_format: diff + commit_hash: 32faf82 + reasoning_effort: low + pass_rate_1: 43.1 + pass_rate_2: 81.3 + pass_num_1: 97 + pass_num_2: 183 + percent_cases_well_formed: 86.7 + error_outputs: 46 + num_malformed_responses: 46 + num_with_malformed_responses: 30 + user_asks: 113 + lazy_comments: 1 + syntax_errors: 0 + indentation_errors: 0 + exhausted_context_windows: 0 + prompt_tokens: 2534059 + completion_tokens: 779568 + test_timeouts: 1 + total_tests: 225 + command: aider --model openai/gpt-5 + date: 2025-08-25 + versions: 0.86.2.dev + seconds_per_case: 62.4 + total_cost: 10.3713 diff --git a/pyproject.toml b/pyproject.toml index 5daab07f281..0858c9d8331 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -26,7 +26,7 @@ aider = "aider.main:main" aider-ce = "aider.main:main" [tool.setuptools.dynamic] -dependencies = { file = "requirements.in" } +dependencies = { file = "requirements/requirements.in" } [tool.setuptools.dynamic.optional-dependencies] dev = { file = "requirements/requirements-dev.in" } diff --git a/requirements.txt b/requirements.txt index 4c9a7a4a75a..33af0da570a 100644 --- a/requirements.txt +++ b/requirements.txt @@ -55,7 +55,7 @@ cffi==1.17.1 # -c requirements/common-constraints.txt # sounddevice # soundfile -charset-normalizer==3.4.2 +charset-normalizer==3.4.3 # via # -c requirements/common-constraints.txt # requests @@ -81,7 +81,7 @@ distro==1.9.0 # -c requirements/common-constraints.txt # openai # posthog -filelock==3.18.0 +filelock==3.19.1 # via # -c requirements/common-constraints.txt # huggingface-hub @@ -116,7 +116,7 @@ google-api-core[grpc]==2.25.1 # google-ai-generativelanguage # google-api-python-client # google-generativeai -google-api-python-client==2.178.0 +google-api-python-client==2.179.0 # via # -c requirements/common-constraints.txt # google-generativeai @@ -182,7 +182,7 @@ httpx-sse==0.4.0 # via # -c requirements/common-constraints.txt # mcp -huggingface-hub==0.34.3 +huggingface-hub==0.34.4 # via # -c requirements/common-constraints.txt # tokenizers @@ -210,7 +210,7 @@ jiter==0.10.0 # via # -c requirements/common-constraints.txt # openai -json5==0.12.0 +json5==0.12.1 # via # -c requirements/common-constraints.txt # -r requirements/requirements.in @@ -224,11 +224,11 @@ jsonschema-specifications==2025.4.1 # via # -c requirements/common-constraints.txt # jsonschema -litellm==1.75.0 +litellm==1.75.7 # via # -c requirements/common-constraints.txt # -r requirements/requirements.in -markdown-it-py==3.0.0 +markdown-it-py==4.0.0 # via # -c requirements/common-constraints.txt # rich @@ -256,7 +256,7 @@ mslex==1.3.0 # via # -c requirements/common-constraints.txt # oslex -multidict==6.6.3 +multidict==6.6.4 # via # -c requirements/common-constraints.txt # aiohttp @@ -270,7 +270,7 @@ numpy==1.26.4 # -c requirements/common-constraints.txt # scipy # soundfile -openai==1.99.1 +openai==1.99.9 # via # -c requirements/common-constraints.txt # litellm @@ -296,7 +296,7 @@ pillow==11.3.0 # via # -c requirements/common-constraints.txt # -r requirements/requirements.in -posthog==6.4.1 +posthog==6.5.0 # via # -c requirements/common-constraints.txt # -r requirements/requirements.in @@ -484,7 +484,7 @@ starlette==0.46.2 # -c requirements/common-constraints.txt # mcp # sse-starlette -tiktoken==0.10.0 +tiktoken==0.11.0 # via # -c requirements/common-constraints.txt # litellm diff --git a/requirements/common-constraints.txt b/requirements/common-constraints.txt index 7740127b793..8c37f7e1623 100644 --- a/requirements/common-constraints.txt +++ b/requirements/common-constraints.txt @@ -55,7 +55,7 @@ cffi==1.17.1 # soundfile cfgv==3.4.0 # via pre-commit -charset-normalizer==3.4.2 +charset-normalizer==3.4.3 # via requests click==8.2.1 # via @@ -86,10 +86,6 @@ deprecated==1.2.18 # llama-index-instrumentation diff-match-patch==20241021 # via -r requirements/requirements.in -dill==0.4.0 - # via - # multiprocess - # pathos dirtyjson==1.0.8 # via llama-index-core diskcache==5.6.3 @@ -100,7 +96,7 @@ distro==1.9.0 # via # openai # posthog -filelock==3.18.0 +filelock==3.19.1 # via # huggingface-hub # torch @@ -110,7 +106,7 @@ filetype==1.2.0 # via llama-index-core flake8==7.3.0 # via -r requirements/requirements.in -fonttools==4.59.0 +fonttools==4.59.1 # via matplotlib frozenlist==1.7.0 # via @@ -136,7 +132,7 @@ google-api-core[grpc]==2.25.1 # google-cloud-bigquery # google-cloud-core # google-generativeai -google-api-python-client==2.178.0 +google-api-python-client==2.179.0 # via google-generativeai google-auth==2.40.3 # via @@ -163,13 +159,13 @@ googleapis-common-protos==1.70.0 # via # google-api-core # grpcio-status -greenlet==3.2.3 +greenlet==3.2.4 # via # playwright # sqlalchemy grep-ast==0.9.0 # via -r requirements/requirements.in -griffe==1.10.0 +griffe==1.12.1 # via banks grpcio==1.74.0 # via @@ -197,13 +193,13 @@ httpx==0.28.1 # openai httpx-sse==0.4.0 # via mcp -huggingface-hub[inference]==0.34.3 +huggingface-hub[inference]==0.34.4 # via # llama-index-embeddings-huggingface # sentence-transformers # tokenizers # transformers -identify==2.6.12 +identify==2.6.13 # via pre-commit idna==3.10 # via @@ -234,7 +230,7 @@ joblib==1.5.1 # via # nltk # scikit-learn -json5==0.12.0 +json5==0.12.1 # via -r requirements/requirements.in jsonschema==4.25.0 # via @@ -244,11 +240,11 @@ jsonschema==4.25.0 # mcp jsonschema-specifications==2025.4.1 # via jsonschema -kiwisolver==1.4.8 +kiwisolver==1.4.9 # via matplotlib -litellm==1.75.0 +litellm==1.75.7 # via -r requirements/requirements.in -llama-index-core==0.13.0 +llama-index-core==0.13.2 # via llama-index-embeddings-huggingface llama-index-embeddings-huggingface==0.6.0 # via -r requirements/requirements-help.in @@ -256,9 +252,9 @@ llama-index-instrumentation==0.4.0 # via llama-index-workflows llama-index-workflows==1.3.0 # via llama-index-core -lox==0.13.0 +lox==1.0.0 # via -r requirements/requirements-dev.in -markdown-it-py==3.0.0 +markdown-it-py==4.0.0 # via rich markupsafe==3.0.2 # via jinja2 @@ -278,15 +274,13 @@ mpmath==1.3.0 # via sympy mslex==1.3.0 # via oslex -multidict==6.6.3 +multidict==6.6.4 # via # aiohttp # yarl -multiprocess==0.70.18 - # via pathos mypy-extensions==1.1.0 # via typing-inspect -narwhals==2.0.1 +narwhals==2.1.2 # via altair nest-asyncio==1.6.0 # via llama-index-core @@ -349,7 +343,7 @@ nvidia-nvjitlink-cu12==12.8.93 # torch nvidia-nvtx-cu12==12.8.90 # via torch -openai==1.99.1 +openai==1.99.9 # via litellm oslex==0.1.3 # via -r requirements/requirements.in @@ -369,8 +363,6 @@ pandas==2.3.1 # via # -r requirements/requirements-dev.in # streamlit -pathos==0.3.4 - # via lox pathspec==0.12.1 # via # -r requirements/requirements.in @@ -397,13 +389,9 @@ playwright==1.54.0 # via -r requirements/requirements-playwright.in pluggy==1.6.0 # via pytest -posthog==6.4.1 +posthog==6.5.0 # via -r requirements/requirements.in -pox==0.3.6 - # via pathos -ppft==1.7.7 - # via pathos -pre-commit==4.2.0 +pre-commit==4.3.0 # via -r requirements/requirements-dev.in prompt-toolkit==3.0.51 # via -r requirements/requirements.in @@ -536,7 +524,7 @@ rpds-py==0.27.0 # referencing rsa==4.9.1 # via google-auth -safetensors==0.6.1 +safetensors==0.6.2 # via transformers scikit-learn==1.7.1 # via sentence-transformers @@ -578,7 +566,7 @@ soundfile==0.13.1 # via -r requirements/requirements.in soupsieve==2.7 # via beautifulsoup4 -sqlalchemy[asyncio]==2.0.42 +sqlalchemy[asyncio]==2.0.43 # via llama-index-core sse-starlette==2.3.3 # via mcp @@ -586,7 +574,7 @@ starlette==0.46.2 # via # mcp # sse-starlette -streamlit==1.48.0 +streamlit==1.48.1 # via -r requirements/requirements-browser.in sympy==1.14.0 # via torch @@ -596,7 +584,7 @@ tenacity==9.1.2 # streamlit threadpoolctl==3.6.0 # via scikit-learn -tiktoken==0.10.0 +tiktoken==0.11.0 # via # litellm # llama-index-core @@ -608,7 +596,7 @@ toml==0.10.2 # via streamlit torch==2.8.0 # via sentence-transformers -tornado==6.5.1 +tornado==6.5.2 # via streamlit tqdm==4.67.1 # via @@ -619,7 +607,7 @@ tqdm==4.67.1 # openai # sentence-transformers # transformers -transformers==4.55.0 +transformers==4.55.2 # via sentence-transformers tree-sitter==0.25.1 # via @@ -677,11 +665,11 @@ urllib3==2.5.0 # via # mixpanel # requests -uv==0.8.5 +uv==0.8.11 # via -r requirements/requirements-dev.in uvicorn==0.34.2 # via mcp -virtualenv==20.33.1 +virtualenv==20.34.0 # via pre-commit watchdog==6.0.0 # via streamlit @@ -691,7 +679,7 @@ wcwidth==0.2.13 # via prompt-toolkit wheel==0.45.1 # via pip-tools -wrapt==1.17.2 +wrapt==1.17.3 # via # deprecated # llama-index-core diff --git a/requirements/requirements-browser.txt b/requirements/requirements-browser.txt index 88c3f1f5013..d5563a2e25b 100644 --- a/requirements/requirements-browser.txt +++ b/requirements/requirements-browser.txt @@ -21,7 +21,7 @@ certifi==2025.8.3 # via # -c requirements/common-constraints.txt # requests -charset-normalizer==3.4.2 +charset-normalizer==3.4.3 # via # -c requirements/common-constraints.txt # requests @@ -58,7 +58,7 @@ markupsafe==3.0.2 # via # -c requirements/common-constraints.txt # jinja2 -narwhals==2.0.1 +narwhals==2.1.2 # via # -c requirements/common-constraints.txt # altair @@ -123,7 +123,7 @@ smmap==5.0.2 # via # -c requirements/common-constraints.txt # gitdb -streamlit==1.48.0 +streamlit==1.48.1 # via # -c requirements/common-constraints.txt # -r requirements/requirements-browser.in @@ -135,7 +135,7 @@ toml==0.10.2 # via # -c requirements/common-constraints.txt # streamlit -tornado==6.5.1 +tornado==6.5.2 # via # -c requirements/common-constraints.txt # streamlit diff --git a/requirements/requirements-dev.txt b/requirements/requirements-dev.txt index fe48aeeac8f..11eaeef3458 100644 --- a/requirements/requirements-dev.txt +++ b/requirements/requirements-dev.txt @@ -16,7 +16,7 @@ cfgv==3.4.0 # via # -c requirements/common-constraints.txt # pre-commit -charset-normalizer==3.4.2 +charset-normalizer==3.4.3 # via # -c requirements/common-constraints.txt # requests @@ -41,20 +41,15 @@ cycler==0.12.1 # via # -c requirements/common-constraints.txt # matplotlib -dill==0.4.0 - # via - # -c requirements/common-constraints.txt - # multiprocess - # pathos distlib==0.4.0 # via # -c requirements/common-constraints.txt # virtualenv -filelock==3.18.0 +filelock==3.19.1 # via # -c requirements/common-constraints.txt # virtualenv -fonttools==4.59.0 +fonttools==4.59.1 # via # -c requirements/common-constraints.txt # matplotlib @@ -99,7 +94,7 @@ grpcio-status==1.71.2 # via # -c requirements/common-constraints.txt # google-api-core -identify==2.6.12 +identify==2.6.13 # via # -c requirements/common-constraints.txt # pre-commit @@ -115,15 +110,15 @@ iniconfig==2.1.0 # via # -c requirements/common-constraints.txt # pytest -kiwisolver==1.4.8 +kiwisolver==1.4.9 # via # -c requirements/common-constraints.txt # matplotlib -lox==0.13.0 +lox==1.0.0 # via # -c requirements/common-constraints.txt # -r requirements/requirements-dev.in -markdown-it-py==3.0.0 +markdown-it-py==4.0.0 # via # -c requirements/common-constraints.txt # rich @@ -135,10 +130,6 @@ mdurl==0.1.2 # via # -c requirements/common-constraints.txt # markdown-it-py -multiprocess==0.70.18 - # via - # -c requirements/common-constraints.txt - # pathos nodeenv==1.9.1 # via # -c requirements/common-constraints.txt @@ -160,10 +151,6 @@ pandas==2.3.1 # via # -c requirements/common-constraints.txt # -r requirements/requirements-dev.in -pathos==0.3.4 - # via - # -c requirements/common-constraints.txt - # lox pillow==11.3.0 # via # -c requirements/common-constraints.txt @@ -184,15 +171,7 @@ pluggy==1.6.0 # via # -c requirements/common-constraints.txt # pytest -pox==0.3.6 - # via - # -c requirements/common-constraints.txt - # pathos -ppft==1.7.7 - # via - # -c requirements/common-constraints.txt - # pathos -pre-commit==4.2.0 +pre-commit==4.3.0 # via # -c requirements/common-constraints.txt # -r requirements/requirements-dev.in @@ -298,11 +277,11 @@ urllib3==2.5.0 # via # -c requirements/common-constraints.txt # requests -uv==0.8.5 +uv==0.8.11 # via # -c requirements/common-constraints.txt # -r requirements/requirements-dev.in -virtualenv==20.33.1 +virtualenv==20.34.0 # via # -c requirements/common-constraints.txt # pre-commit diff --git a/requirements/requirements-help.txt b/requirements/requirements-help.txt index 3387f9f5508..15ff0850b19 100644 --- a/requirements/requirements-help.txt +++ b/requirements/requirements-help.txt @@ -39,7 +39,7 @@ certifi==2025.8.3 # httpcore # httpx # requests -charset-normalizer==3.4.2 +charset-normalizer==3.4.3 # via # -c requirements/common-constraints.txt # requests @@ -65,7 +65,7 @@ dirtyjson==1.0.8 # via # -c requirements/common-constraints.txt # llama-index-core -filelock==3.18.0 +filelock==3.19.1 # via # -c requirements/common-constraints.txt # huggingface-hub @@ -86,11 +86,11 @@ fsspec==2025.7.0 # huggingface-hub # llama-index-core # torch -greenlet==3.2.3 +greenlet==3.2.4 # via # -c requirements/common-constraints.txt # sqlalchemy -griffe==1.10.0 +griffe==1.12.1 # via # -c requirements/common-constraints.txt # banks @@ -110,7 +110,7 @@ httpx==0.28.1 # via # -c requirements/common-constraints.txt # llama-index-core -huggingface-hub[inference]==0.34.3 +huggingface-hub[inference]==0.34.4 # via # -c requirements/common-constraints.txt # llama-index-embeddings-huggingface @@ -134,7 +134,7 @@ joblib==1.5.1 # -c requirements/common-constraints.txt # nltk # scikit-learn -llama-index-core==0.13.0 +llama-index-core==0.13.2 # via # -c requirements/common-constraints.txt # llama-index-embeddings-huggingface @@ -162,7 +162,7 @@ mpmath==1.3.0 # via # -c requirements/common-constraints.txt # sympy -multidict==6.6.3 +multidict==6.6.4 # via # -c requirements/common-constraints.txt # aiohttp @@ -305,7 +305,7 @@ requests==2.32.4 # llama-index-core # tiktoken # transformers -safetensors==0.6.1 +safetensors==0.6.2 # via # -c requirements/common-constraints.txt # transformers @@ -332,7 +332,7 @@ sniffio==1.3.1 # via # -c requirements/common-constraints.txt # anyio -sqlalchemy[asyncio]==2.0.42 +sqlalchemy[asyncio]==2.0.43 # via # -c requirements/common-constraints.txt # llama-index-core @@ -348,7 +348,7 @@ threadpoolctl==3.6.0 # via # -c requirements/common-constraints.txt # scikit-learn -tiktoken==0.10.0 +tiktoken==0.11.0 # via # -c requirements/common-constraints.txt # llama-index-core @@ -368,7 +368,7 @@ tqdm==4.67.1 # nltk # sentence-transformers # transformers -transformers==4.55.0 +transformers==4.55.2 # via # -c requirements/common-constraints.txt # sentence-transformers @@ -405,7 +405,7 @@ urllib3==2.5.0 # via # -c requirements/common-constraints.txt # requests -wrapt==1.17.2 +wrapt==1.17.3 # via # -c requirements/common-constraints.txt # deprecated diff --git a/requirements/requirements-playwright.txt b/requirements/requirements-playwright.txt index 6133c9fad46..ebaa97be48c 100644 --- a/requirements/requirements-playwright.txt +++ b/requirements/requirements-playwright.txt @@ -1,6 +1,6 @@ # This file was autogenerated by uv via the following command: # uv pip compile --no-strip-extras --constraint=requirements/common-constraints.txt --output-file=requirements/requirements-playwright.txt requirements/requirements-playwright.in -greenlet==3.2.3 +greenlet==3.2.4 # via # -c requirements/common-constraints.txt # playwright