aider-ce 0.87.7.dev11__tar.gz → 0.87.8.dev9__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of aider-ce might be problematic. Click here for more details.
- {aider_ce-0.87.7.dev11/aider_ce.egg-info → aider_ce-0.87.8.dev9}/PKG-INFO +3 -1
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/README.md +2 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/__init__.py +1 -1
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/_version.py +3 -3
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/coders/base_coder.py +16 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/repomap.py +9 -2
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9/aider_ce.egg-info}/PKG-INFO +3 -1
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/benchmark/README.md +1 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/benchmark/benchmark.py +278 -72
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/.dockerignore +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/.flake8 +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/.github/ISSUE_TEMPLATE/issue.yml +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/.github/workflows/check_pypi_version.yml +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/.github/workflows/docker-build-test.yml +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/.github/workflows/docker-release.yml +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/.github/workflows/issues.yml +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/.github/workflows/pages.yml +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/.github/workflows/pre-commit.yml +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/.github/workflows/release.yml +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/.github/workflows/ubuntu-tests.yml +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/.github/workflows/windows-tests.yml +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/.github/workflows/windows_check_pypi_version.yml +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/.gitignore +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/.pre-commit-config.yaml +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/CNAME +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/CONTRIBUTING.md +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/HISTORY.md +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/LICENSE.txt +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/MANIFEST.in +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/__main__.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/analytics.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/args.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/args_formatter.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/change_tracker.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/coders/__init__.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/coders/architect_coder.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/coders/architect_prompts.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/coders/ask_coder.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/coders/ask_prompts.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/coders/base_prompts.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/coders/chat_chunks.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/coders/context_coder.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/coders/context_prompts.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/coders/editblock_coder.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/coders/editblock_fenced_coder.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/coders/editblock_fenced_prompts.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/coders/editblock_func_coder.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/coders/editblock_func_prompts.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/coders/editblock_prompts.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/coders/editor_diff_fenced_coder.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/coders/editor_diff_fenced_prompts.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/coders/editor_editblock_coder.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/coders/editor_editblock_prompts.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/coders/editor_whole_coder.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/coders/editor_whole_prompts.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/coders/help_coder.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/coders/help_prompts.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/coders/navigator_coder.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/coders/navigator_legacy_prompts.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/coders/navigator_prompts.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/coders/patch_coder.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/coders/patch_prompts.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/coders/search_replace.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/coders/shell.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/coders/single_wholefile_func_coder.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/coders/single_wholefile_func_prompts.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/coders/udiff_coder.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/coders/udiff_prompts.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/coders/udiff_simple.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/coders/udiff_simple_prompts.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/coders/wholefile_coder.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/coders/wholefile_func_coder.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/coders/wholefile_func_prompts.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/coders/wholefile_prompts.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/commands.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/copypaste.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/deprecated.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/diffs.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/dump.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/editor.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/exceptions.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/format_settings.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/gui.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/help.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/help_pats.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/history.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/io.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/linter.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/llm.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/main.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/mcp/__init__.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/mcp/server.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/mdstream.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/models.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/onboarding.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/openrouter.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/prompts.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-language-pack/README.md +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-language-pack/arduino-tags.scm +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-language-pack/c-tags.scm +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-language-pack/chatito-tags.scm +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-language-pack/clojure-tags.scm +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-language-pack/commonlisp-tags.scm +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-language-pack/cpp-tags.scm +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-language-pack/csharp-tags.scm +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-language-pack/d-tags.scm +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-language-pack/dart-tags.scm +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-language-pack/elisp-tags.scm +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-language-pack/elixir-tags.scm +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-language-pack/elm-tags.scm +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-language-pack/gleam-tags.scm +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-language-pack/go-tags.scm +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-language-pack/java-tags.scm +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-language-pack/javascript-tags.scm +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-language-pack/lua-tags.scm +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-language-pack/matlab-tags.scm +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-language-pack/ocaml-tags.scm +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-language-pack/ocaml_interface-tags.scm +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-language-pack/pony-tags.scm +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-language-pack/properties-tags.scm +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-language-pack/python-tags.scm +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-language-pack/r-tags.scm +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-language-pack/racket-tags.scm +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-language-pack/ruby-tags.scm +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-language-pack/rust-tags.scm +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-language-pack/solidity-tags.scm +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-language-pack/swift-tags.scm +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-language-pack/udev-tags.scm +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-languages/README.md +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-languages/c-tags.scm +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-languages/c_sharp-tags.scm +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-languages/cpp-tags.scm +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-languages/dart-tags.scm +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-languages/elisp-tags.scm +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-languages/elixir-tags.scm +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-languages/elm-tags.scm +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-languages/go-tags.scm +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-languages/hcl-tags.scm +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-languages/java-tags.scm +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-languages/javascript-tags.scm +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-languages/julia-tags.scm +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-languages/kotlin-tags.scm +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-languages/matlab-tags.scm +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-languages/ocaml-tags.scm +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-languages/ocaml_interface-tags.scm +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-languages/php-tags.scm +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-languages/python-tags.scm +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-languages/ql-tags.scm +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-languages/ruby-tags.scm +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-languages/rust-tags.scm +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-languages/scala-tags.scm +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-languages/typescript-tags.scm +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/reasoning_tags.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/repo.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/report.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/resources/__init__.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/resources/model-metadata.json +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/resources/model-settings.yml +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/run_cmd.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/scrape.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/sendchat.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/special.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/tools/__init__.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/tools/command.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/tools/command_interactive.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/tools/delete_block.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/tools/delete_line.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/tools/delete_lines.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/tools/extract_lines.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/tools/grep.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/tools/indent_lines.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/tools/insert_block.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/tools/list_changes.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/tools/ls.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/tools/make_editable.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/tools/make_readonly.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/tools/remove.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/tools/replace_all.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/tools/replace_line.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/tools/replace_lines.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/tools/replace_text.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/tools/show_numbered_context.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/tools/tool_utils.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/tools/undo_change.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/tools/view.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/tools/view_files_at_glob.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/tools/view_files_matching.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/tools/view_files_with_symbol.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/urls.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/utils.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/versioncheck.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/voice.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/waiting.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/watch.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/watch_prompts.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/Gemfile +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/_includes/blame.md +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/_includes/get-started.md +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/_includes/help-tip.md +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/_includes/help.md +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/_includes/install.md +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/_includes/keys.md +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/_includes/model-warnings.md +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/_includes/multi-line.md +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/_includes/python-m-aider.md +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/_includes/recording.css +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/_includes/recording.md +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/_includes/replit-pipx.md +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/_includes/works-best.md +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/_sass/custom/custom.scss +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/config/adv-model-settings.md +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/config/aider_conf.md +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/config/api-keys.md +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/config/dotenv.md +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/config/editor.md +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/config/mcp.md +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/config/model-aliases.md +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/config/options.md +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/config/reasoning.md +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/config.md +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/faq.md +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/git.md +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/index.md +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/install/codespaces.md +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/install/docker.md +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/install/optional.md +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/install/replit.md +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/install.md +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/languages.md +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/legal/contributor-agreement.md +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/legal/privacy.md +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/llms/anthropic.md +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/llms/azure.md +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/llms/bedrock.md +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/llms/cohere.md +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/llms/deepseek.md +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/llms/gemini.md +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/llms/github.md +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/llms/groq.md +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/llms/lm-studio.md +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/llms/ollama.md +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/llms/openai-compat.md +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/llms/openai.md +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/llms/openrouter.md +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/llms/other.md +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/llms/vertex.md +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/llms/warnings.md +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/llms/xai.md +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/llms.md +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/more/analytics.md +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/more/edit-formats.md +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/more/infinite-output.md +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/more-info.md +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/recordings/auto-accept-architect.md +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/recordings/dont-drop-original-read-files.md +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/recordings/index.md +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/recordings/model-accepts-settings.md +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/recordings/tree-sitter-language-pack.md +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/repomap.md +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/scripting.md +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/troubleshooting/aider-not-found.md +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/troubleshooting/edit-errors.md +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/troubleshooting/imports.md +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/troubleshooting/models-and-keys.md +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/troubleshooting/support.md +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/troubleshooting/token-limits.md +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/troubleshooting/warnings.md +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/troubleshooting.md +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/usage/browser.md +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/usage/caching.md +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/usage/commands.md +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/usage/conventions.md +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/usage/copypaste.md +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/usage/images-urls.md +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/usage/lint-test.md +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/usage/modes.md +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/usage/not-code.md +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/usage/notifications.md +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/usage/tips.md +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/usage/tutorials.md +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/usage/voice.md +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/usage/watch.md +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/usage.md +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/share/index.md +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider_ce.egg-info/SOURCES.txt +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider_ce.egg-info/dependency_links.txt +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider_ce.egg-info/entry_points.txt +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider_ce.egg-info/requires.txt +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider_ce.egg-info/top_level.txt +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/benchmark/Dockerfile +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/benchmark/__init__.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/benchmark/clone-exercism.sh +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/benchmark/cpp-test.sh +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/benchmark/docker.sh +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/benchmark/docker_build.sh +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/benchmark/install-docker-ubuntu.sh +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/benchmark/npm-test.sh +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/benchmark/over_time.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/benchmark/plot.sh +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/benchmark/plots.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/benchmark/problem_stats.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/benchmark/prompts.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/benchmark/refactor_tools.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/benchmark/rsync.sh +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/benchmark/rungrid.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/benchmark/swe-bench-lite.txt +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/benchmark/swe-bench.txt +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/benchmark/swe_bench.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/benchmark/test_benchmark.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/docker/Dockerfile +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/pyproject.toml +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/pytest.ini +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/requirements/common-constraints.txt +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/requirements/requirements-browser.in +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/requirements/requirements-browser.txt +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/requirements/requirements-dev.in +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/requirements/requirements-dev.txt +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/requirements/requirements-help.in +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/requirements/requirements-help.txt +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/requirements/requirements-playwright.in +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/requirements/requirements-playwright.txt +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/requirements/requirements.in +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/requirements/tree-sitter.in +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/requirements.txt +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/scripts/30k-image.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/scripts/Dockerfile.jekyll +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/scripts/__init__.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/scripts/blame.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/scripts/clean_metadata.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/scripts/dl_icons.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/scripts/history_prompts.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/scripts/homepage.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/scripts/issues.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/scripts/jekyll_build.sh +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/scripts/jekyll_run.sh +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/scripts/logo_svg.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/scripts/my_models.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/scripts/pip-compile.sh +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/scripts/recording_audio.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/scripts/redact-cast.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/scripts/tmux_record.sh +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/scripts/tsl_pack_langs.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/scripts/update-blame.sh +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/scripts/update-docs.sh +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/scripts/update-history.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/scripts/versionbump.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/scripts/yank-old-versions.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/setup.cfg +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/__init__.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/basic/__init__.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/basic/test_analytics.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/basic/test_aws_credentials.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/basic/test_coder.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/basic/test_commands.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/basic/test_deprecated.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/basic/test_editblock.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/basic/test_editor.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/basic/test_exceptions.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/basic/test_find_or_blocks.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/basic/test_history.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/basic/test_io.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/basic/test_linter.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/basic/test_main.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/basic/test_model_info_manager.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/basic/test_models.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/basic/test_onboarding.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/basic/test_openrouter.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/basic/test_reasoning.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/basic/test_repo.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/basic/test_repomap.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/basic/test_run_cmd.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/basic/test_sanity_check_repo.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/basic/test_scripting.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/basic/test_sendchat.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/basic/test_special.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/basic/test_ssl_verification.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/basic/test_udiff.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/basic/test_urls.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/basic/test_voice.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/basic/test_watch.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/basic/test_wholefile.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/browser/test_browser.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/fixtures/chat-history-search-replace-gold.txt +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/fixtures/chat-history.md +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/arduino/test.ino +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/c/test.c +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/chatito/test.chatito +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/clojure/test.clj +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/commonlisp/test.lisp +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/cpp/test.cpp +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/csharp/test.cs +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/d/test.d +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/dart/test.dart +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/elisp/test.el +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/elixir/test.ex +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/elm/test.elm +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/gleam/test.gleam +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/go/test.go +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/hcl/test.tf +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/java/test.java +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/javascript/test.js +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/kotlin/test.kt +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/lua/test.lua +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/matlab/test.m +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/ocaml/test.ml +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/ocaml_interface/test.mli +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/php/test.php +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/pony/test.pony +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/properties/test.properties +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/python/test.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/ql/test.ql +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/r/test.r +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/racket/test.rkt +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/ruby/test.rb +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/rust/test.rs +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/scala/test.scala +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/solidity/test.sol +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/swift/test.swift +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/tsx/test.tsx +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/typescript/test.ts +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/udev/test.rules +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/fixtures/sample-code-base/sample.js +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/fixtures/sample-code-base/sample.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/fixtures/sample-code-base-repo-map.txt +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/fixtures/watch.js +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/fixtures/watch.lisp +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/fixtures/watch.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/fixtures/watch_question.js +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/help/test_help.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/scrape/test_playwright_disable.py +0 -0
- {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/scrape/test_scrape.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: aider-ce
|
|
3
|
-
Version: 0.87.
|
|
3
|
+
Version: 0.87.8.dev9
|
|
4
4
|
Summary: Aider is AI pair programming in your terminal
|
|
5
5
|
Project-URL: Homepage, https://github.com/dwash96/aider-ce
|
|
6
6
|
Classifier: Development Status :: 4 - Beta
|
|
@@ -110,6 +110,8 @@ This project aims to be compatible with upstream Aider, but with priority commit
|
|
|
110
110
|
* [Fix Deepseek model configurations](https://github.com/Aider-AI/aider/commit/c839a6dd8964d702172cae007375e299732d3823)
|
|
111
111
|
* [Relax Version Pinning For Easier Distribution](https://github.com/dwash96/aider-ce/issues/18)
|
|
112
112
|
* [Remove Confirm Responses from History](https://github.com/Aider-AI/aider/pull/3958)
|
|
113
|
+
* [Benchmark Results By Language](https://github.com/dwash96/aider-ce/pull/27)
|
|
114
|
+
* [Allow Benchmarks to Use Repo Map For Better Accuracy](https://github.com/dwash96/aider-ce/pull/25)
|
|
113
115
|
|
|
114
116
|
### Other Notes
|
|
115
117
|
* [MCP Configuration](https://github.com/dwash96/aider-ce/blob/main/aider/website/docs/config/mcp.md)
|
|
@@ -30,6 +30,8 @@ This project aims to be compatible with upstream Aider, but with priority commit
|
|
|
30
30
|
* [Fix Deepseek model configurations](https://github.com/Aider-AI/aider/commit/c839a6dd8964d702172cae007375e299732d3823)
|
|
31
31
|
* [Relax Version Pinning For Easier Distribution](https://github.com/dwash96/aider-ce/issues/18)
|
|
32
32
|
* [Remove Confirm Responses from History](https://github.com/Aider-AI/aider/pull/3958)
|
|
33
|
+
* [Benchmark Results By Language](https://github.com/dwash96/aider-ce/pull/27)
|
|
34
|
+
* [Allow Benchmarks to Use Repo Map For Better Accuracy](https://github.com/dwash96/aider-ce/pull/25)
|
|
33
35
|
|
|
34
36
|
### Other Notes
|
|
35
37
|
* [MCP Configuration](https://github.com/dwash96/aider-ce/blob/main/aider/website/docs/config/mcp.md)
|
|
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
|
|
|
28
28
|
commit_id: COMMIT_ID
|
|
29
29
|
__commit_id__: COMMIT_ID
|
|
30
30
|
|
|
31
|
-
__version__ = version = '0.87.
|
|
32
|
-
__version_tuple__ = version_tuple = (0, 87,
|
|
31
|
+
__version__ = version = '0.87.8.dev9'
|
|
32
|
+
__version_tuple__ = version_tuple = (0, 87, 8, 'dev9')
|
|
33
33
|
|
|
34
|
-
__commit_id__ = commit_id = '
|
|
34
|
+
__commit_id__ = commit_id = 'g7cd8a6bf1'
|
|
@@ -367,6 +367,7 @@ class Coder:
|
|
|
367
367
|
context_compaction_max_tokens=None,
|
|
368
368
|
context_compaction_summary_tokens=8192,
|
|
369
369
|
map_cache_dir=".",
|
|
370
|
+
repomap_in_memory=False,
|
|
370
371
|
):
|
|
371
372
|
# initialize from args.map_cache_dir
|
|
372
373
|
self.map_cache_dir = map_cache_dir
|
|
@@ -555,6 +556,8 @@ class Coder:
|
|
|
555
556
|
map_mul_no_files=map_mul_no_files,
|
|
556
557
|
refresh=map_refresh,
|
|
557
558
|
max_code_line_length=map_max_line_length,
|
|
559
|
+
repo_root=self.root,
|
|
560
|
+
use_memory_cache=repomap_in_memory,
|
|
558
561
|
)
|
|
559
562
|
|
|
560
563
|
self.summarizer = summarizer or ChatSummary(
|
|
@@ -853,6 +856,19 @@ class Coder:
|
|
|
853
856
|
mentioned_fnames.update(self.get_ident_filename_matches(mentioned_idents))
|
|
854
857
|
|
|
855
858
|
all_abs_files = set(self.get_all_abs_files())
|
|
859
|
+
|
|
860
|
+
# Exclude metadata/docs from repo map inputs to reduce parsing overhead
|
|
861
|
+
def _include_in_map(abs_path):
|
|
862
|
+
try:
|
|
863
|
+
rel = self.get_rel_fname(abs_path)
|
|
864
|
+
except Exception:
|
|
865
|
+
rel = str(abs_path)
|
|
866
|
+
parts = Path(rel).parts
|
|
867
|
+
if ".meta" in parts or ".docs" in parts:
|
|
868
|
+
return False
|
|
869
|
+
return True
|
|
870
|
+
|
|
871
|
+
all_abs_files = {p for p in all_abs_files if _include_in_map(p)}
|
|
856
872
|
repo_abs_read_only_fnames = set(self.abs_read_only_fnames) & all_abs_files
|
|
857
873
|
repo_abs_read_only_stubs_fnames = set(self.abs_read_only_stubs_fnames) & all_abs_files
|
|
858
874
|
chat_files = (
|
|
@@ -146,15 +146,22 @@ class RepoMap:
|
|
|
146
146
|
map_mul_no_files=8,
|
|
147
147
|
refresh="auto",
|
|
148
148
|
max_code_line_length=100,
|
|
149
|
+
repo_root=None,
|
|
150
|
+
use_memory_cache=False,
|
|
149
151
|
):
|
|
150
152
|
self.io = io
|
|
151
153
|
self.verbose = verbose
|
|
152
154
|
self.refresh = refresh
|
|
153
155
|
|
|
154
156
|
self.map_cache_dir = map_cache_dir
|
|
155
|
-
|
|
157
|
+
# Prefer an explicit repo root (eg per-test repo), fallback to CWD
|
|
158
|
+
self.root = repo_root or os.getcwd()
|
|
156
159
|
|
|
157
|
-
|
|
160
|
+
# Allow opting into an in-memory tags cache to avoid disk/SQLite locks
|
|
161
|
+
if use_memory_cache:
|
|
162
|
+
self.TAGS_CACHE = dict()
|
|
163
|
+
else:
|
|
164
|
+
self.load_tags_cache()
|
|
158
165
|
self.cache_threshold = 0.95
|
|
159
166
|
|
|
160
167
|
self.max_map_tokens = map_tokens
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: aider-ce
|
|
3
|
-
Version: 0.87.
|
|
3
|
+
Version: 0.87.8.dev9
|
|
4
4
|
Summary: Aider is AI pair programming in your terminal
|
|
5
5
|
Project-URL: Homepage, https://github.com/dwash96/aider-ce
|
|
6
6
|
Classifier: Development Status :: 4 - Beta
|
|
@@ -110,6 +110,8 @@ This project aims to be compatible with upstream Aider, but with priority commit
|
|
|
110
110
|
* [Fix Deepseek model configurations](https://github.com/Aider-AI/aider/commit/c839a6dd8964d702172cae007375e299732d3823)
|
|
111
111
|
* [Relax Version Pinning For Easier Distribution](https://github.com/dwash96/aider-ce/issues/18)
|
|
112
112
|
* [Remove Confirm Responses from History](https://github.com/Aider-AI/aider/pull/3958)
|
|
113
|
+
* [Benchmark Results By Language](https://github.com/dwash96/aider-ce/pull/27)
|
|
114
|
+
* [Allow Benchmarks to Use Repo Map For Better Accuracy](https://github.com/dwash96/aider-ce/pull/25)
|
|
113
115
|
|
|
114
116
|
### Other Notes
|
|
115
117
|
* [MCP Configuration](https://github.com/dwash96/aider-ce/blob/main/aider/website/docs/config/mcp.md)
|
|
@@ -83,6 +83,7 @@ You can run `./benchmark/benchmark.py --help` for a list of all the arguments, b
|
|
|
83
83
|
- `--num-tests` specifies how many of the tests to run before stopping. This is another way to start gently as you debug your benchmarking setup.
|
|
84
84
|
- `--keywords` filters the tests to run to only the ones whose name match the supplied argument (similar to `pytest -k xxxx`).
|
|
85
85
|
- `--read-model-settings=<filename.yml>` specify model settings, see here: https://aider.chat/docs/config/adv-model-settings.html#model-settings
|
|
86
|
+
- `--map-tokens` sets a token budget for the repo map sent with each request. Set `0` to disable the repo map. This lets you enable repo map usage for any model (e.g., `--map-tokens 1024`).
|
|
86
87
|
|
|
87
88
|
### Benchmark report
|
|
88
89
|
|
|
@@ -15,20 +15,24 @@ from pathlib import Path
|
|
|
15
15
|
from types import SimpleNamespace
|
|
16
16
|
from typing import List, Optional
|
|
17
17
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
import
|
|
18
|
+
"""
|
|
19
|
+
Performance-oriented refactors:
|
|
20
|
+
- Avoid heavy imports unless needed for a given code path.
|
|
21
|
+
- Fast path for `--stats` to skip GitPython and benchmarking deps.
|
|
22
|
+
- Build DataFrame / import plotting only when `--graphs` is true.
|
|
23
|
+
- Use json.load for result file parsing to reduce memory churn.
|
|
24
|
+
- Cache git version lookups across a single invocation.
|
|
25
|
+
"""
|
|
26
|
+
|
|
27
|
+
# Heavy modules are lazily imported within the code paths that need them.
|
|
23
28
|
import typer
|
|
24
29
|
from dotenv import load_dotenv
|
|
25
|
-
from plots import plot_refactoring
|
|
26
30
|
from rich.console import Console
|
|
27
31
|
|
|
28
|
-
from aider import models, sendchat
|
|
29
|
-
from aider.coders import Coder, base_coder
|
|
30
32
|
from aider.dump import dump # noqa: F401
|
|
31
|
-
|
|
33
|
+
|
|
34
|
+
# Cache for commit-hash -> version lookup
|
|
35
|
+
_VERSION_CACHE = {}
|
|
32
36
|
|
|
33
37
|
BENCHMARK_DNAME = Path(os.environ.get("AIDER_BENCHMARK_DIR", "tmp.benchmarks"))
|
|
34
38
|
|
|
@@ -88,10 +92,10 @@ def find_latest_benchmark_dir():
|
|
|
88
92
|
return latest_dir
|
|
89
93
|
|
|
90
94
|
|
|
91
|
-
def show_stats(dirnames, graphs, stats_languages=None):
|
|
95
|
+
def show_stats(dirnames, graphs, verbose, stats_languages=None):
|
|
92
96
|
raw_rows = []
|
|
93
97
|
for dirname in dirnames:
|
|
94
|
-
row = summarize_results(dirname, stats_languages)
|
|
98
|
+
row = summarize_results(dirname, verbose, stats_languages)
|
|
95
99
|
raw_rows.append(row)
|
|
96
100
|
|
|
97
101
|
# return
|
|
@@ -122,11 +126,12 @@ def show_stats(dirnames, graphs, stats_languages=None):
|
|
|
122
126
|
|
|
123
127
|
repeat_hi = repeat_lo = repeat_avg = None # noqa: F841
|
|
124
128
|
|
|
125
|
-
|
|
126
|
-
# df.sort_values(by=["model", "edit_format"], inplace=True)
|
|
127
|
-
|
|
128
|
-
# dump(df)
|
|
129
|
+
# Only build a DataFrame and import plotting libs when graphs are requested
|
|
129
130
|
if graphs:
|
|
131
|
+
import pandas as pd # Lazy import
|
|
132
|
+
from plots import plot_refactoring # Lazy import
|
|
133
|
+
|
|
134
|
+
df = pd.DataFrame.from_records(rows)
|
|
130
135
|
# plot_timing(df)
|
|
131
136
|
# plot_outcomes(df, repeats, repeat_hi, repeat_lo, repeat_avg)
|
|
132
137
|
# plot_outcomes_claude(df)
|
|
@@ -212,15 +217,15 @@ def main(
|
|
|
212
217
|
thinking_tokens: Optional[int] = typer.Option(
|
|
213
218
|
None, "--thinking-tokens", help="Set thinking tokens for models that support it"
|
|
214
219
|
),
|
|
220
|
+
map_tokens: Optional[int] = typer.Option(
|
|
221
|
+
None,
|
|
222
|
+
"--map-tokens",
|
|
223
|
+
help="Suggested number of tokens for repo map (0 to disable)",
|
|
224
|
+
),
|
|
215
225
|
exercises_dir: str = typer.Option(
|
|
216
226
|
EXERCISES_DIR_DEFAULT, "--exercises-dir", help="Directory with exercise files"
|
|
217
227
|
),
|
|
218
228
|
):
|
|
219
|
-
repo = git.Repo(search_parent_directories=True)
|
|
220
|
-
commit_hash = repo.head.object.hexsha[:7]
|
|
221
|
-
if repo.is_dirty():
|
|
222
|
-
commit_hash += "-dirty"
|
|
223
|
-
|
|
224
229
|
if stats_only and not dirnames:
|
|
225
230
|
latest_dir = find_latest_benchmark_dir()
|
|
226
231
|
dirnames = [str(latest_dir)]
|
|
@@ -241,7 +246,7 @@ def main(
|
|
|
241
246
|
updated_dirnames.append(dirname)
|
|
242
247
|
|
|
243
248
|
if stats_only:
|
|
244
|
-
return show_stats(updated_dirnames, graphs, stats_languages)
|
|
249
|
+
return show_stats(updated_dirnames, graphs, verbose, stats_languages)
|
|
245
250
|
|
|
246
251
|
if diffs_only:
|
|
247
252
|
return show_diffs(updated_dirnames)
|
|
@@ -249,6 +254,19 @@ def main(
|
|
|
249
254
|
assert len(updated_dirnames) == 1, updated_dirnames
|
|
250
255
|
dirname = updated_dirnames[0]
|
|
251
256
|
|
|
257
|
+
# Lazy imports for the actual benchmark run
|
|
258
|
+
import git # Heavy; avoid for --stats/--diffs
|
|
259
|
+
import importlib_resources # Used for model metadata registration
|
|
260
|
+
import lox # Only needed for threaded runs
|
|
261
|
+
|
|
262
|
+
from aider import models, sendchat
|
|
263
|
+
from aider.coders import base_coder
|
|
264
|
+
|
|
265
|
+
repo = git.Repo(search_parent_directories=True)
|
|
266
|
+
commit_hash = repo.head.object.hexsha[:7]
|
|
267
|
+
if repo.is_dirty():
|
|
268
|
+
commit_hash += "-dirty"
|
|
269
|
+
|
|
252
270
|
if "AIDER_DOCKER" not in os.environ:
|
|
253
271
|
print("Warning: benchmarking runs unvetted code from GPT, run in a docker container")
|
|
254
272
|
return
|
|
@@ -350,6 +368,9 @@ def main(
|
|
|
350
368
|
base_coder.RETRY_TIMEOUT = LONG_TIMEOUT
|
|
351
369
|
models.RETRY_TIMEOUT = LONG_TIMEOUT
|
|
352
370
|
|
|
371
|
+
# Enable in-memory RepoMap cache when running multiple threads to avoid SQLite contention
|
|
372
|
+
repomap_in_memory = threads > 1
|
|
373
|
+
|
|
353
374
|
if threads == 1:
|
|
354
375
|
all_results = []
|
|
355
376
|
for test_path in test_dnames:
|
|
@@ -370,10 +391,12 @@ def main(
|
|
|
370
391
|
sleep,
|
|
371
392
|
reasoning_effort,
|
|
372
393
|
thinking_tokens,
|
|
394
|
+
map_tokens,
|
|
395
|
+
repomap_in_memory,
|
|
373
396
|
)
|
|
374
397
|
|
|
375
398
|
all_results.append(results)
|
|
376
|
-
summarize_results(dirname)
|
|
399
|
+
summarize_results(dirname, verbose)
|
|
377
400
|
if sleep:
|
|
378
401
|
time.sleep(sleep)
|
|
379
402
|
else:
|
|
@@ -396,13 +419,15 @@ def main(
|
|
|
396
419
|
sleep,
|
|
397
420
|
reasoning_effort,
|
|
398
421
|
thinking_tokens,
|
|
422
|
+
map_tokens,
|
|
423
|
+
repomap_in_memory,
|
|
399
424
|
)
|
|
400
425
|
all_results = run_test_threaded.gather(tqdm=True)
|
|
401
426
|
|
|
402
427
|
print()
|
|
403
428
|
print()
|
|
404
429
|
print()
|
|
405
|
-
summarize_results(dirname)
|
|
430
|
+
summarize_results(dirname, verbose)
|
|
406
431
|
|
|
407
432
|
return 0
|
|
408
433
|
|
|
@@ -446,7 +471,7 @@ def show_diffs(dirnames):
|
|
|
446
471
|
|
|
447
472
|
def load_results(dirname, stats_languages=None):
|
|
448
473
|
dirname = Path(dirname)
|
|
449
|
-
|
|
474
|
+
lang_to_results = {}
|
|
450
475
|
|
|
451
476
|
if stats_languages:
|
|
452
477
|
languages = [lang.strip().lower() for lang in stats_languages.split(",")]
|
|
@@ -458,21 +483,28 @@ def load_results(dirname, stats_languages=None):
|
|
|
458
483
|
for fname in dirname.glob(pattern):
|
|
459
484
|
try:
|
|
460
485
|
results = json.loads(fname.read_text())
|
|
461
|
-
|
|
486
|
+
# json / test / prac / exer / lang
|
|
487
|
+
lang = fname.parent.parent.parent.parent.name
|
|
488
|
+
lang_to_results.setdefault(lang, []).append(results)
|
|
462
489
|
except json.JSONDecodeError:
|
|
463
490
|
print("json.JSONDecodeError", fname)
|
|
464
491
|
continue
|
|
465
|
-
return
|
|
492
|
+
return lang_to_results
|
|
466
493
|
|
|
467
494
|
|
|
468
|
-
def summarize_results(dirname, stats_languages=None):
|
|
469
|
-
|
|
495
|
+
def summarize_results(dirname, verbose, stats_languages=None):
|
|
496
|
+
lang_to_results = load_results(dirname, stats_languages)
|
|
470
497
|
|
|
471
498
|
res = SimpleNamespace()
|
|
472
499
|
res.total_tests = len(list(Path(dirname).glob("*/exercises/practice/*")))
|
|
473
500
|
|
|
474
501
|
try:
|
|
475
|
-
tries = max(
|
|
502
|
+
tries = max(
|
|
503
|
+
len(results.get("tests_outcomes", []))
|
|
504
|
+
for results_list in lang_to_results.values()
|
|
505
|
+
for results in results_list
|
|
506
|
+
if results
|
|
507
|
+
)
|
|
476
508
|
except ValueError:
|
|
477
509
|
tries = 0
|
|
478
510
|
|
|
@@ -497,44 +529,90 @@ def summarize_results(dirname, stats_languages=None):
|
|
|
497
529
|
|
|
498
530
|
res.reasoning_effort = None
|
|
499
531
|
res.thinking_tokens = None
|
|
532
|
+
res.map_tokens = None
|
|
500
533
|
variants = defaultdict(set)
|
|
501
534
|
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
535
|
+
def add(attr_name, increment, global_stats, lang_stats):
|
|
536
|
+
global_prev = getattr(global_stats, attr_name)
|
|
537
|
+
setattr(global_stats, attr_name, global_prev + increment)
|
|
538
|
+
|
|
539
|
+
lang_prev = getattr(lang_stats, attr_name)
|
|
540
|
+
setattr(lang_stats, attr_name, lang_prev + increment)
|
|
541
|
+
|
|
542
|
+
lang_to_stats = {}
|
|
543
|
+
lang_to_passed_tests = {}
|
|
544
|
+
for lang, results_list in lang_to_results.items():
|
|
545
|
+
lang_stats = SimpleNamespace()
|
|
546
|
+
lang_stats.completed_tests = 0
|
|
547
|
+
lang_stats.duration = 0
|
|
548
|
+
lang_stats.avg_duration_per_test = 0
|
|
549
|
+
lang_stats.cost = 0
|
|
550
|
+
for i in range(tries):
|
|
551
|
+
setattr(lang_stats, f"pass_rate_{i}", 0)
|
|
552
|
+
for i in range(tries):
|
|
553
|
+
setattr(lang_stats, f"pass_num_{i}", 0)
|
|
554
|
+
lang_stats.error_outputs = 0
|
|
555
|
+
lang_stats.user_asks = 0
|
|
556
|
+
lang_stats.test_timeouts = 0
|
|
557
|
+
lang_stats.exhausted_context_windows = 0
|
|
558
|
+
lang_stats.num_malformed_responses = 0
|
|
559
|
+
lang_stats.num_with_malformed_responses = 0
|
|
560
|
+
lang_stats.syntax_errors = 0
|
|
561
|
+
lang_stats.indentation_errors = 0
|
|
562
|
+
lang_stats.lazy_comments = 0
|
|
563
|
+
lang_stats.prompt_tokens = 0
|
|
564
|
+
lang_stats.completion_tokens = 0
|
|
565
|
+
lang_to_stats[lang] = lang_stats
|
|
566
|
+
lang_to_passed_tests[lang] = [0] * tries
|
|
567
|
+
|
|
568
|
+
for results in results_list:
|
|
569
|
+
if not results:
|
|
570
|
+
continue
|
|
516
571
|
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
572
|
+
add("completed_tests", 1, res, lang_stats)
|
|
573
|
+
tests_outcomes = results.get("tests_outcomes", [])
|
|
574
|
+
passed = tests_outcomes and tests_outcomes[-1]
|
|
575
|
+
if passed:
|
|
576
|
+
for i in range(len(tests_outcomes) - 1, tries):
|
|
577
|
+
passed_tests[i] += 1
|
|
578
|
+
lang_to_passed_tests[lang][i] += 1
|
|
579
|
+
|
|
580
|
+
add("cost", results.get("cost", 0), res, lang_stats)
|
|
581
|
+
add("duration", results.get("duration", 0), res, lang_stats)
|
|
582
|
+
add("test_timeouts", results.get("test_timeouts", 0), res, lang_stats)
|
|
583
|
+
|
|
584
|
+
add("error_outputs", results.get("num_error_outputs", 0), res, lang_stats)
|
|
585
|
+
add("user_asks", results.get("num_user_asks", 0), res, lang_stats)
|
|
586
|
+
add(
|
|
587
|
+
"exhausted_context_windows",
|
|
588
|
+
results.get("num_exhausted_context_windows", 0),
|
|
589
|
+
res,
|
|
590
|
+
lang_stats,
|
|
591
|
+
)
|
|
592
|
+
add(
|
|
593
|
+
"num_malformed_responses",
|
|
594
|
+
results.get("num_malformed_responses", 0),
|
|
595
|
+
res,
|
|
596
|
+
lang_stats,
|
|
597
|
+
)
|
|
598
|
+
if results.get("num_malformed_responses"):
|
|
599
|
+
add("num_with_malformed_responses", 1, res, lang_stats)
|
|
600
|
+
add("lazy_comments", results.get("lazy_comments", 0), res, lang_stats)
|
|
524
601
|
|
|
525
|
-
|
|
526
|
-
|
|
602
|
+
add("syntax_errors", results.get("syntax_errors", 0), res, lang_stats)
|
|
603
|
+
add("indentation_errors", results.get("indentation_errors", 0), res, lang_stats)
|
|
527
604
|
|
|
528
|
-
|
|
529
|
-
|
|
605
|
+
add("prompt_tokens", results.get("prompt_tokens", 0), res, lang_stats)
|
|
606
|
+
add("completion_tokens", results.get("completion_tokens", 0), res, lang_stats)
|
|
530
607
|
|
|
531
|
-
|
|
532
|
-
|
|
608
|
+
res.reasoning_effort = results.get("reasoning_effort")
|
|
609
|
+
res.thinking_tokens = results.get("thinking_tokens")
|
|
610
|
+
res.map_tokens = results.get("map_tokens")
|
|
533
611
|
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
612
|
+
for key in "model edit_format commit_hash editor_model editor_edit_format".split():
|
|
613
|
+
val = results.get(key)
|
|
614
|
+
if val:
|
|
615
|
+
variants[key].add(val)
|
|
538
616
|
|
|
539
617
|
if not res.completed_tests:
|
|
540
618
|
return
|
|
@@ -578,6 +656,8 @@ def summarize_results(dirname, stats_languages=None):
|
|
|
578
656
|
print(f" reasoning_effort: {res.reasoning_effort}")
|
|
579
657
|
if res.thinking_tokens is not None:
|
|
580
658
|
print(f" thinking_tokens: {res.thinking_tokens}")
|
|
659
|
+
if res.map_tokens is not None:
|
|
660
|
+
print(f" map_tokens: {res.map_tokens}")
|
|
581
661
|
|
|
582
662
|
for i in range(tries):
|
|
583
663
|
print(f" pass_rate_{i + 1}: {percents[i]:.1f}")
|
|
@@ -602,7 +682,7 @@ def summarize_results(dirname, stats_languages=None):
|
|
|
602
682
|
|
|
603
683
|
if variants["model"]:
|
|
604
684
|
a_model = set(variants["model"]).pop()
|
|
605
|
-
command = f"aider --model {a_model}"
|
|
685
|
+
command = f"aider-ce --model {a_model}"
|
|
606
686
|
print(f" command: {command}")
|
|
607
687
|
|
|
608
688
|
print(f" date: {date}")
|
|
@@ -623,6 +703,86 @@ def summarize_results(dirname, stats_languages=None):
|
|
|
623
703
|
f" ${projected_cost:.2f} projected"
|
|
624
704
|
)
|
|
625
705
|
|
|
706
|
+
if verbose and len(lang_to_stats) > 0:
|
|
707
|
+
|
|
708
|
+
def format_lang_stats(lang_stats):
|
|
709
|
+
# First, postprocess attributes for easier printing
|
|
710
|
+
if lang_stats.completed_tests > 0:
|
|
711
|
+
lang_stats.avg_duration_per_test = lang_stats.duration / float(
|
|
712
|
+
lang_stats.completed_tests
|
|
713
|
+
)
|
|
714
|
+
for i in range(tries):
|
|
715
|
+
num_passed = lang_to_passed_tests[lang][i]
|
|
716
|
+
setattr(lang_stats, f"pass_num_{i}", num_passed)
|
|
717
|
+
pass_rate = 100 * num_passed / float(lang_stats.completed_tests)
|
|
718
|
+
setattr(lang_stats, f"pass_rate_{i}", pass_rate)
|
|
719
|
+
|
|
720
|
+
# Then format attributes into ready-to-print strings
|
|
721
|
+
for attr in lang_stats.__dict__:
|
|
722
|
+
val = getattr(lang_stats, attr)
|
|
723
|
+
if val == 0:
|
|
724
|
+
val = "-"
|
|
725
|
+
elif isinstance(val, float):
|
|
726
|
+
val = f"{val:,.2f}"
|
|
727
|
+
else:
|
|
728
|
+
val = f"{val:,}"
|
|
729
|
+
|
|
730
|
+
setattr(lang_stats, attr, val)
|
|
731
|
+
|
|
732
|
+
def compute_lang_to_col_widths(lang_to_stats):
|
|
733
|
+
lang_to_col_widths = {}
|
|
734
|
+
for lang, lang_stats in lang_to_stats.items():
|
|
735
|
+
lang_stat_attrs = [getattr(lang_stats, attr) for attr in lang_stats.__dict__]
|
|
736
|
+
lang_col_width = max(len(lang), len(max(lang_stat_attrs, key=len)))
|
|
737
|
+
lang_to_col_widths[lang] = lang_col_width
|
|
738
|
+
|
|
739
|
+
return lang_to_col_widths
|
|
740
|
+
|
|
741
|
+
print()
|
|
742
|
+
print("======== Stats by language ========")
|
|
743
|
+
print()
|
|
744
|
+
|
|
745
|
+
[format_lang_stats(lang_stats) for lang_stats in lang_to_stats.values()]
|
|
746
|
+
lang_to_col_widths = compute_lang_to_col_widths(lang_to_stats)
|
|
747
|
+
|
|
748
|
+
any_stats = list(lang_to_stats.values())[0]
|
|
749
|
+
attrs = list(any_stats.__dict__)
|
|
750
|
+
attr_col_width = len(max(["language"] + attrs, key=len))
|
|
751
|
+
langs = list(lang_to_stats.keys())
|
|
752
|
+
|
|
753
|
+
print("| " + ("-" * attr_col_width), end="")
|
|
754
|
+
for lang in langs:
|
|
755
|
+
col_width = lang_to_col_widths[lang]
|
|
756
|
+
print(" | " + ("-" * col_width), end="")
|
|
757
|
+
print(" |")
|
|
758
|
+
|
|
759
|
+
print(f"| {' '.center(attr_col_width)}", end="")
|
|
760
|
+
for lang in langs:
|
|
761
|
+
col_width = lang_to_col_widths[lang]
|
|
762
|
+
print(f" | {lang.center(col_width)}", end="")
|
|
763
|
+
print(" |")
|
|
764
|
+
|
|
765
|
+
print("| " + ("-" * attr_col_width), end="")
|
|
766
|
+
for lang in langs:
|
|
767
|
+
col_width = lang_to_col_widths[lang]
|
|
768
|
+
print(" | " + ("-" * col_width), end="")
|
|
769
|
+
print(" |")
|
|
770
|
+
|
|
771
|
+
for attr in attrs:
|
|
772
|
+
print(f"| {attr:<{attr_col_width}}", end="")
|
|
773
|
+
for lang in langs:
|
|
774
|
+
lang_stats = lang_to_stats[lang]
|
|
775
|
+
col_width = lang_to_col_widths[lang]
|
|
776
|
+
print(f" | {getattr(lang_stats, attr):>{col_width}}", end="")
|
|
777
|
+
print(" |")
|
|
778
|
+
|
|
779
|
+
print("| " + ("-" * attr_col_width), end="")
|
|
780
|
+
for lang in langs:
|
|
781
|
+
col_width = lang_to_col_widths[lang]
|
|
782
|
+
print(" | " + ("-" * col_width), end="")
|
|
783
|
+
print(" |")
|
|
784
|
+
print()
|
|
785
|
+
|
|
626
786
|
console.rule()
|
|
627
787
|
|
|
628
788
|
# print(json.dumps(vars(res), indent=4, sort_keys=True))
|
|
@@ -634,14 +794,24 @@ def get_versions(commit_hashes):
|
|
|
634
794
|
for hsh in commit_hashes:
|
|
635
795
|
if not hsh:
|
|
636
796
|
continue
|
|
637
|
-
|
|
797
|
+
short = hsh.split("-")[0]
|
|
798
|
+
if short in _VERSION_CACHE:
|
|
799
|
+
ver = _VERSION_CACHE.get(short)
|
|
800
|
+
if ver:
|
|
801
|
+
versions.add(ver)
|
|
802
|
+
continue
|
|
803
|
+
|
|
638
804
|
try:
|
|
639
|
-
|
|
640
|
-
["git", "show", f"{
|
|
805
|
+
version_src = subprocess.check_output(
|
|
806
|
+
["git", "show", f"{short}:aider/__init__.py"], universal_newlines=True
|
|
641
807
|
)
|
|
642
|
-
|
|
643
|
-
|
|
808
|
+
match = re.search(r'__version__ = "(.*)"', version_src)
|
|
809
|
+
ver = match.group(1) if match else None
|
|
810
|
+
_VERSION_CACHE[short] = ver
|
|
811
|
+
if ver:
|
|
812
|
+
versions.add(ver)
|
|
644
813
|
except subprocess.CalledProcessError:
|
|
814
|
+
_VERSION_CACHE[short] = None
|
|
645
815
|
pass
|
|
646
816
|
return versions
|
|
647
817
|
|
|
@@ -693,8 +863,18 @@ def run_test_real(
|
|
|
693
863
|
sleep=0,
|
|
694
864
|
reasoning_effort: Optional[str] = None,
|
|
695
865
|
thinking_tokens: Optional[int] = None,
|
|
866
|
+
map_tokens: Optional[int] = None,
|
|
696
867
|
read_model_settings=None,
|
|
868
|
+
repomap_in_memory: bool = False,
|
|
697
869
|
):
|
|
870
|
+
# Lazy imports: only needed in the actual benchmark execution path
|
|
871
|
+
import git
|
|
872
|
+
import prompts
|
|
873
|
+
|
|
874
|
+
from aider import models
|
|
875
|
+
from aider.coders import Coder
|
|
876
|
+
from aider.io import InputOutput
|
|
877
|
+
|
|
698
878
|
if not os.path.isdir(testdir):
|
|
699
879
|
print("Not a dir:", testdir)
|
|
700
880
|
return
|
|
@@ -818,20 +998,45 @@ def run_test_real(
|
|
|
818
998
|
dump(edit_format)
|
|
819
999
|
show_fnames = ",".join(map(str, fnames))
|
|
820
1000
|
print("fnames:", show_fnames)
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
1001
|
+
# Ensure this test directory is a standalone git repo so RepoMap can be used
|
|
1002
|
+
try:
|
|
1003
|
+
git_dir = testdir / ".git"
|
|
1004
|
+
if not git_dir.exists():
|
|
1005
|
+
r = git.Repo.init(testdir)
|
|
1006
|
+
# Set a local identity to avoid commit failures in clean containers
|
|
1007
|
+
with r.config_writer() as cw:
|
|
1008
|
+
cw.set_value("user", "name", "aider-benchmark")
|
|
1009
|
+
cw.set_value("user", "email", "aider-benchmark@example.com")
|
|
1010
|
+
# Add existing files (solution set and any current files)
|
|
1011
|
+
r.index.add([str(p.relative_to(testdir)) for p in testdir.rglob("*") if p.is_file()])
|
|
1012
|
+
r.index.commit("Initial commit for aider benchmark")
|
|
1013
|
+
except Exception as e:
|
|
1014
|
+
if verbose:
|
|
1015
|
+
print(f"Warning: failed to initialize git repo in {testdir}: {e}")
|
|
1016
|
+
|
|
1017
|
+
coder_kwargs = dict(
|
|
1018
|
+
main_model=main_model,
|
|
1019
|
+
edit_format=edit_format,
|
|
1020
|
+
io=io,
|
|
826
1021
|
fnames=fnames,
|
|
827
|
-
use_git=
|
|
1022
|
+
use_git=True,
|
|
1023
|
+
auto_commits=False,
|
|
1024
|
+
dirty_commits=False,
|
|
828
1025
|
stream=False,
|
|
829
1026
|
verbose=verbose,
|
|
830
1027
|
# auto_lint=False, # disabled for code-in-json experiments
|
|
831
1028
|
cache_prompts=True,
|
|
832
1029
|
suggest_shell_commands=False,
|
|
833
1030
|
ignore_mentions=ignore_files,
|
|
1031
|
+
# Reduce repo map contention and size for benchmarks
|
|
1032
|
+
map_cache_dir=str(testdir),
|
|
1033
|
+
repomap_in_memory=repomap_in_memory,
|
|
1034
|
+
map_mul_no_files=4,
|
|
834
1035
|
)
|
|
1036
|
+
if map_tokens is not None:
|
|
1037
|
+
coder_kwargs["map_tokens"] = map_tokens
|
|
1038
|
+
|
|
1039
|
+
coder = Coder.create(**coder_kwargs)
|
|
835
1040
|
dump(coder.ignore_mentions)
|
|
836
1041
|
|
|
837
1042
|
coder.show_announcements()
|
|
@@ -960,6 +1165,7 @@ def run_test_real(
|
|
|
960
1165
|
prompt_tokens=coder.total_tokens_sent,
|
|
961
1166
|
completion_tokens=coder.total_tokens_received,
|
|
962
1167
|
thinking_tokens=thinking_tokens,
|
|
1168
|
+
map_tokens=map_tokens,
|
|
963
1169
|
chat_hashes=list(
|
|
964
1170
|
zip(
|
|
965
1171
|
coder.chat_completion_call_hashes,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|