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.

Files changed (431) hide show
  1. {aider_ce-0.87.7.dev11/aider_ce.egg-info → aider_ce-0.87.8.dev9}/PKG-INFO +3 -1
  2. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/README.md +2 -0
  3. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/__init__.py +1 -1
  4. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/_version.py +3 -3
  5. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/coders/base_coder.py +16 -0
  6. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/repomap.py +9 -2
  7. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9/aider_ce.egg-info}/PKG-INFO +3 -1
  8. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/benchmark/README.md +1 -0
  9. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/benchmark/benchmark.py +278 -72
  10. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/.dockerignore +0 -0
  11. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/.flake8 +0 -0
  12. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/.github/ISSUE_TEMPLATE/issue.yml +0 -0
  13. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/.github/workflows/check_pypi_version.yml +0 -0
  14. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/.github/workflows/docker-build-test.yml +0 -0
  15. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/.github/workflows/docker-release.yml +0 -0
  16. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/.github/workflows/issues.yml +0 -0
  17. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/.github/workflows/pages.yml +0 -0
  18. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/.github/workflows/pre-commit.yml +0 -0
  19. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/.github/workflows/release.yml +0 -0
  20. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/.github/workflows/ubuntu-tests.yml +0 -0
  21. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/.github/workflows/windows-tests.yml +0 -0
  22. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/.github/workflows/windows_check_pypi_version.yml +0 -0
  23. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/.gitignore +0 -0
  24. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/.pre-commit-config.yaml +0 -0
  25. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/CNAME +0 -0
  26. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/CONTRIBUTING.md +0 -0
  27. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/HISTORY.md +0 -0
  28. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/LICENSE.txt +0 -0
  29. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/MANIFEST.in +0 -0
  30. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/__main__.py +0 -0
  31. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/analytics.py +0 -0
  32. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/args.py +0 -0
  33. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/args_formatter.py +0 -0
  34. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/change_tracker.py +0 -0
  35. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/coders/__init__.py +0 -0
  36. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/coders/architect_coder.py +0 -0
  37. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/coders/architect_prompts.py +0 -0
  38. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/coders/ask_coder.py +0 -0
  39. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/coders/ask_prompts.py +0 -0
  40. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/coders/base_prompts.py +0 -0
  41. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/coders/chat_chunks.py +0 -0
  42. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/coders/context_coder.py +0 -0
  43. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/coders/context_prompts.py +0 -0
  44. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/coders/editblock_coder.py +0 -0
  45. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/coders/editblock_fenced_coder.py +0 -0
  46. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/coders/editblock_fenced_prompts.py +0 -0
  47. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/coders/editblock_func_coder.py +0 -0
  48. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/coders/editblock_func_prompts.py +0 -0
  49. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/coders/editblock_prompts.py +0 -0
  50. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/coders/editor_diff_fenced_coder.py +0 -0
  51. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/coders/editor_diff_fenced_prompts.py +0 -0
  52. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/coders/editor_editblock_coder.py +0 -0
  53. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/coders/editor_editblock_prompts.py +0 -0
  54. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/coders/editor_whole_coder.py +0 -0
  55. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/coders/editor_whole_prompts.py +0 -0
  56. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/coders/help_coder.py +0 -0
  57. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/coders/help_prompts.py +0 -0
  58. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/coders/navigator_coder.py +0 -0
  59. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/coders/navigator_legacy_prompts.py +0 -0
  60. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/coders/navigator_prompts.py +0 -0
  61. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/coders/patch_coder.py +0 -0
  62. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/coders/patch_prompts.py +0 -0
  63. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/coders/search_replace.py +0 -0
  64. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/coders/shell.py +0 -0
  65. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/coders/single_wholefile_func_coder.py +0 -0
  66. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/coders/single_wholefile_func_prompts.py +0 -0
  67. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/coders/udiff_coder.py +0 -0
  68. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/coders/udiff_prompts.py +0 -0
  69. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/coders/udiff_simple.py +0 -0
  70. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/coders/udiff_simple_prompts.py +0 -0
  71. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/coders/wholefile_coder.py +0 -0
  72. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/coders/wholefile_func_coder.py +0 -0
  73. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/coders/wholefile_func_prompts.py +0 -0
  74. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/coders/wholefile_prompts.py +0 -0
  75. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/commands.py +0 -0
  76. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/copypaste.py +0 -0
  77. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/deprecated.py +0 -0
  78. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/diffs.py +0 -0
  79. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/dump.py +0 -0
  80. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/editor.py +0 -0
  81. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/exceptions.py +0 -0
  82. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/format_settings.py +0 -0
  83. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/gui.py +0 -0
  84. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/help.py +0 -0
  85. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/help_pats.py +0 -0
  86. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/history.py +0 -0
  87. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/io.py +0 -0
  88. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/linter.py +0 -0
  89. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/llm.py +0 -0
  90. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/main.py +0 -0
  91. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/mcp/__init__.py +0 -0
  92. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/mcp/server.py +0 -0
  93. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/mdstream.py +0 -0
  94. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/models.py +0 -0
  95. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/onboarding.py +0 -0
  96. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/openrouter.py +0 -0
  97. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/prompts.py +0 -0
  98. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-language-pack/README.md +0 -0
  99. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-language-pack/arduino-tags.scm +0 -0
  100. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-language-pack/c-tags.scm +0 -0
  101. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-language-pack/chatito-tags.scm +0 -0
  102. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-language-pack/clojure-tags.scm +0 -0
  103. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-language-pack/commonlisp-tags.scm +0 -0
  104. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-language-pack/cpp-tags.scm +0 -0
  105. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-language-pack/csharp-tags.scm +0 -0
  106. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-language-pack/d-tags.scm +0 -0
  107. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-language-pack/dart-tags.scm +0 -0
  108. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-language-pack/elisp-tags.scm +0 -0
  109. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-language-pack/elixir-tags.scm +0 -0
  110. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-language-pack/elm-tags.scm +0 -0
  111. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-language-pack/gleam-tags.scm +0 -0
  112. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-language-pack/go-tags.scm +0 -0
  113. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-language-pack/java-tags.scm +0 -0
  114. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-language-pack/javascript-tags.scm +0 -0
  115. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-language-pack/lua-tags.scm +0 -0
  116. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-language-pack/matlab-tags.scm +0 -0
  117. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-language-pack/ocaml-tags.scm +0 -0
  118. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-language-pack/ocaml_interface-tags.scm +0 -0
  119. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-language-pack/pony-tags.scm +0 -0
  120. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-language-pack/properties-tags.scm +0 -0
  121. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-language-pack/python-tags.scm +0 -0
  122. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-language-pack/r-tags.scm +0 -0
  123. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-language-pack/racket-tags.scm +0 -0
  124. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-language-pack/ruby-tags.scm +0 -0
  125. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-language-pack/rust-tags.scm +0 -0
  126. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-language-pack/solidity-tags.scm +0 -0
  127. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-language-pack/swift-tags.scm +0 -0
  128. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-language-pack/udev-tags.scm +0 -0
  129. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-languages/README.md +0 -0
  130. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-languages/c-tags.scm +0 -0
  131. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-languages/c_sharp-tags.scm +0 -0
  132. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-languages/cpp-tags.scm +0 -0
  133. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-languages/dart-tags.scm +0 -0
  134. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-languages/elisp-tags.scm +0 -0
  135. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-languages/elixir-tags.scm +0 -0
  136. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-languages/elm-tags.scm +0 -0
  137. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-languages/go-tags.scm +0 -0
  138. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-languages/hcl-tags.scm +0 -0
  139. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-languages/java-tags.scm +0 -0
  140. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-languages/javascript-tags.scm +0 -0
  141. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-languages/julia-tags.scm +0 -0
  142. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-languages/kotlin-tags.scm +0 -0
  143. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-languages/matlab-tags.scm +0 -0
  144. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-languages/ocaml-tags.scm +0 -0
  145. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-languages/ocaml_interface-tags.scm +0 -0
  146. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-languages/php-tags.scm +0 -0
  147. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-languages/python-tags.scm +0 -0
  148. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-languages/ql-tags.scm +0 -0
  149. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-languages/ruby-tags.scm +0 -0
  150. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-languages/rust-tags.scm +0 -0
  151. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-languages/scala-tags.scm +0 -0
  152. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/queries/tree-sitter-languages/typescript-tags.scm +0 -0
  153. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/reasoning_tags.py +0 -0
  154. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/repo.py +0 -0
  155. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/report.py +0 -0
  156. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/resources/__init__.py +0 -0
  157. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/resources/model-metadata.json +0 -0
  158. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/resources/model-settings.yml +0 -0
  159. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/run_cmd.py +0 -0
  160. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/scrape.py +0 -0
  161. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/sendchat.py +0 -0
  162. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/special.py +0 -0
  163. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/tools/__init__.py +0 -0
  164. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/tools/command.py +0 -0
  165. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/tools/command_interactive.py +0 -0
  166. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/tools/delete_block.py +0 -0
  167. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/tools/delete_line.py +0 -0
  168. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/tools/delete_lines.py +0 -0
  169. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/tools/extract_lines.py +0 -0
  170. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/tools/grep.py +0 -0
  171. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/tools/indent_lines.py +0 -0
  172. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/tools/insert_block.py +0 -0
  173. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/tools/list_changes.py +0 -0
  174. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/tools/ls.py +0 -0
  175. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/tools/make_editable.py +0 -0
  176. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/tools/make_readonly.py +0 -0
  177. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/tools/remove.py +0 -0
  178. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/tools/replace_all.py +0 -0
  179. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/tools/replace_line.py +0 -0
  180. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/tools/replace_lines.py +0 -0
  181. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/tools/replace_text.py +0 -0
  182. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/tools/show_numbered_context.py +0 -0
  183. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/tools/tool_utils.py +0 -0
  184. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/tools/undo_change.py +0 -0
  185. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/tools/view.py +0 -0
  186. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/tools/view_files_at_glob.py +0 -0
  187. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/tools/view_files_matching.py +0 -0
  188. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/tools/view_files_with_symbol.py +0 -0
  189. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/urls.py +0 -0
  190. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/utils.py +0 -0
  191. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/versioncheck.py +0 -0
  192. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/voice.py +0 -0
  193. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/waiting.py +0 -0
  194. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/watch.py +0 -0
  195. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/watch_prompts.py +0 -0
  196. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/Gemfile +0 -0
  197. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/_includes/blame.md +0 -0
  198. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/_includes/get-started.md +0 -0
  199. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/_includes/help-tip.md +0 -0
  200. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/_includes/help.md +0 -0
  201. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/_includes/install.md +0 -0
  202. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/_includes/keys.md +0 -0
  203. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/_includes/model-warnings.md +0 -0
  204. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/_includes/multi-line.md +0 -0
  205. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/_includes/python-m-aider.md +0 -0
  206. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/_includes/recording.css +0 -0
  207. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/_includes/recording.md +0 -0
  208. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/_includes/replit-pipx.md +0 -0
  209. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/_includes/works-best.md +0 -0
  210. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/_sass/custom/custom.scss +0 -0
  211. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/config/adv-model-settings.md +0 -0
  212. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/config/aider_conf.md +0 -0
  213. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/config/api-keys.md +0 -0
  214. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/config/dotenv.md +0 -0
  215. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/config/editor.md +0 -0
  216. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/config/mcp.md +0 -0
  217. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/config/model-aliases.md +0 -0
  218. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/config/options.md +0 -0
  219. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/config/reasoning.md +0 -0
  220. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/config.md +0 -0
  221. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/faq.md +0 -0
  222. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/git.md +0 -0
  223. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/index.md +0 -0
  224. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/install/codespaces.md +0 -0
  225. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/install/docker.md +0 -0
  226. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/install/optional.md +0 -0
  227. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/install/replit.md +0 -0
  228. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/install.md +0 -0
  229. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/languages.md +0 -0
  230. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/legal/contributor-agreement.md +0 -0
  231. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/legal/privacy.md +0 -0
  232. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/llms/anthropic.md +0 -0
  233. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/llms/azure.md +0 -0
  234. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/llms/bedrock.md +0 -0
  235. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/llms/cohere.md +0 -0
  236. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/llms/deepseek.md +0 -0
  237. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/llms/gemini.md +0 -0
  238. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/llms/github.md +0 -0
  239. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/llms/groq.md +0 -0
  240. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/llms/lm-studio.md +0 -0
  241. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/llms/ollama.md +0 -0
  242. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/llms/openai-compat.md +0 -0
  243. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/llms/openai.md +0 -0
  244. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/llms/openrouter.md +0 -0
  245. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/llms/other.md +0 -0
  246. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/llms/vertex.md +0 -0
  247. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/llms/warnings.md +0 -0
  248. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/llms/xai.md +0 -0
  249. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/llms.md +0 -0
  250. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/more/analytics.md +0 -0
  251. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/more/edit-formats.md +0 -0
  252. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/more/infinite-output.md +0 -0
  253. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/more-info.md +0 -0
  254. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/recordings/auto-accept-architect.md +0 -0
  255. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/recordings/dont-drop-original-read-files.md +0 -0
  256. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/recordings/index.md +0 -0
  257. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/recordings/model-accepts-settings.md +0 -0
  258. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/recordings/tree-sitter-language-pack.md +0 -0
  259. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/repomap.md +0 -0
  260. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/scripting.md +0 -0
  261. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/troubleshooting/aider-not-found.md +0 -0
  262. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/troubleshooting/edit-errors.md +0 -0
  263. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/troubleshooting/imports.md +0 -0
  264. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/troubleshooting/models-and-keys.md +0 -0
  265. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/troubleshooting/support.md +0 -0
  266. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/troubleshooting/token-limits.md +0 -0
  267. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/troubleshooting/warnings.md +0 -0
  268. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/troubleshooting.md +0 -0
  269. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/usage/browser.md +0 -0
  270. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/usage/caching.md +0 -0
  271. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/usage/commands.md +0 -0
  272. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/usage/conventions.md +0 -0
  273. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/usage/copypaste.md +0 -0
  274. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/usage/images-urls.md +0 -0
  275. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/usage/lint-test.md +0 -0
  276. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/usage/modes.md +0 -0
  277. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/usage/not-code.md +0 -0
  278. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/usage/notifications.md +0 -0
  279. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/usage/tips.md +0 -0
  280. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/usage/tutorials.md +0 -0
  281. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/usage/voice.md +0 -0
  282. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/usage/watch.md +0 -0
  283. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/docs/usage.md +0 -0
  284. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider/website/share/index.md +0 -0
  285. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider_ce.egg-info/SOURCES.txt +0 -0
  286. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider_ce.egg-info/dependency_links.txt +0 -0
  287. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider_ce.egg-info/entry_points.txt +0 -0
  288. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider_ce.egg-info/requires.txt +0 -0
  289. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/aider_ce.egg-info/top_level.txt +0 -0
  290. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/benchmark/Dockerfile +0 -0
  291. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/benchmark/__init__.py +0 -0
  292. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/benchmark/clone-exercism.sh +0 -0
  293. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/benchmark/cpp-test.sh +0 -0
  294. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/benchmark/docker.sh +0 -0
  295. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/benchmark/docker_build.sh +0 -0
  296. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/benchmark/install-docker-ubuntu.sh +0 -0
  297. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/benchmark/npm-test.sh +0 -0
  298. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/benchmark/over_time.py +0 -0
  299. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/benchmark/plot.sh +0 -0
  300. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/benchmark/plots.py +0 -0
  301. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/benchmark/problem_stats.py +0 -0
  302. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/benchmark/prompts.py +0 -0
  303. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/benchmark/refactor_tools.py +0 -0
  304. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/benchmark/rsync.sh +0 -0
  305. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/benchmark/rungrid.py +0 -0
  306. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/benchmark/swe-bench-lite.txt +0 -0
  307. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/benchmark/swe-bench.txt +0 -0
  308. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/benchmark/swe_bench.py +0 -0
  309. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/benchmark/test_benchmark.py +0 -0
  310. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/docker/Dockerfile +0 -0
  311. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/pyproject.toml +0 -0
  312. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/pytest.ini +0 -0
  313. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/requirements/common-constraints.txt +0 -0
  314. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/requirements/requirements-browser.in +0 -0
  315. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/requirements/requirements-browser.txt +0 -0
  316. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/requirements/requirements-dev.in +0 -0
  317. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/requirements/requirements-dev.txt +0 -0
  318. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/requirements/requirements-help.in +0 -0
  319. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/requirements/requirements-help.txt +0 -0
  320. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/requirements/requirements-playwright.in +0 -0
  321. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/requirements/requirements-playwright.txt +0 -0
  322. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/requirements/requirements.in +0 -0
  323. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/requirements/tree-sitter.in +0 -0
  324. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/requirements.txt +0 -0
  325. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/scripts/30k-image.py +0 -0
  326. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/scripts/Dockerfile.jekyll +0 -0
  327. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/scripts/__init__.py +0 -0
  328. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/scripts/blame.py +0 -0
  329. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/scripts/clean_metadata.py +0 -0
  330. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/scripts/dl_icons.py +0 -0
  331. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/scripts/history_prompts.py +0 -0
  332. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/scripts/homepage.py +0 -0
  333. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/scripts/issues.py +0 -0
  334. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/scripts/jekyll_build.sh +0 -0
  335. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/scripts/jekyll_run.sh +0 -0
  336. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/scripts/logo_svg.py +0 -0
  337. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/scripts/my_models.py +0 -0
  338. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/scripts/pip-compile.sh +0 -0
  339. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/scripts/recording_audio.py +0 -0
  340. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/scripts/redact-cast.py +0 -0
  341. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/scripts/tmux_record.sh +0 -0
  342. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/scripts/tsl_pack_langs.py +0 -0
  343. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/scripts/update-blame.sh +0 -0
  344. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/scripts/update-docs.sh +0 -0
  345. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/scripts/update-history.py +0 -0
  346. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/scripts/versionbump.py +0 -0
  347. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/scripts/yank-old-versions.py +0 -0
  348. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/setup.cfg +0 -0
  349. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/__init__.py +0 -0
  350. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/basic/__init__.py +0 -0
  351. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/basic/test_analytics.py +0 -0
  352. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/basic/test_aws_credentials.py +0 -0
  353. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/basic/test_coder.py +0 -0
  354. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/basic/test_commands.py +0 -0
  355. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/basic/test_deprecated.py +0 -0
  356. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/basic/test_editblock.py +0 -0
  357. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/basic/test_editor.py +0 -0
  358. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/basic/test_exceptions.py +0 -0
  359. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/basic/test_find_or_blocks.py +0 -0
  360. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/basic/test_history.py +0 -0
  361. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/basic/test_io.py +0 -0
  362. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/basic/test_linter.py +0 -0
  363. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/basic/test_main.py +0 -0
  364. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/basic/test_model_info_manager.py +0 -0
  365. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/basic/test_models.py +0 -0
  366. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/basic/test_onboarding.py +0 -0
  367. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/basic/test_openrouter.py +0 -0
  368. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/basic/test_reasoning.py +0 -0
  369. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/basic/test_repo.py +0 -0
  370. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/basic/test_repomap.py +0 -0
  371. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/basic/test_run_cmd.py +0 -0
  372. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/basic/test_sanity_check_repo.py +0 -0
  373. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/basic/test_scripting.py +0 -0
  374. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/basic/test_sendchat.py +0 -0
  375. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/basic/test_special.py +0 -0
  376. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/basic/test_ssl_verification.py +0 -0
  377. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/basic/test_udiff.py +0 -0
  378. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/basic/test_urls.py +0 -0
  379. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/basic/test_voice.py +0 -0
  380. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/basic/test_watch.py +0 -0
  381. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/basic/test_wholefile.py +0 -0
  382. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/browser/test_browser.py +0 -0
  383. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/fixtures/chat-history-search-replace-gold.txt +0 -0
  384. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/fixtures/chat-history.md +0 -0
  385. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/arduino/test.ino +0 -0
  386. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/c/test.c +0 -0
  387. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/chatito/test.chatito +0 -0
  388. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/clojure/test.clj +0 -0
  389. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/commonlisp/test.lisp +0 -0
  390. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/cpp/test.cpp +0 -0
  391. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/csharp/test.cs +0 -0
  392. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/d/test.d +0 -0
  393. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/dart/test.dart +0 -0
  394. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/elisp/test.el +0 -0
  395. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/elixir/test.ex +0 -0
  396. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/elm/test.elm +0 -0
  397. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/gleam/test.gleam +0 -0
  398. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/go/test.go +0 -0
  399. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/hcl/test.tf +0 -0
  400. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/java/test.java +0 -0
  401. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/javascript/test.js +0 -0
  402. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/kotlin/test.kt +0 -0
  403. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/lua/test.lua +0 -0
  404. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/matlab/test.m +0 -0
  405. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/ocaml/test.ml +0 -0
  406. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/ocaml_interface/test.mli +0 -0
  407. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/php/test.php +0 -0
  408. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/pony/test.pony +0 -0
  409. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/properties/test.properties +0 -0
  410. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/python/test.py +0 -0
  411. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/ql/test.ql +0 -0
  412. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/r/test.r +0 -0
  413. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/racket/test.rkt +0 -0
  414. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/ruby/test.rb +0 -0
  415. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/rust/test.rs +0 -0
  416. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/scala/test.scala +0 -0
  417. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/solidity/test.sol +0 -0
  418. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/swift/test.swift +0 -0
  419. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/tsx/test.tsx +0 -0
  420. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/typescript/test.ts +0 -0
  421. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/fixtures/languages/udev/test.rules +0 -0
  422. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/fixtures/sample-code-base/sample.js +0 -0
  423. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/fixtures/sample-code-base/sample.py +0 -0
  424. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/fixtures/sample-code-base-repo-map.txt +0 -0
  425. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/fixtures/watch.js +0 -0
  426. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/fixtures/watch.lisp +0 -0
  427. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/fixtures/watch.py +0 -0
  428. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/fixtures/watch_question.js +0 -0
  429. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/help/test_help.py +0 -0
  430. {aider_ce-0.87.7.dev11 → aider_ce-0.87.8.dev9}/tests/scrape/test_playwright_disable.py +0 -0
  431. {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.7.dev11
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)
@@ -1,6 +1,6 @@
1
1
  from packaging import version
2
2
 
3
- __version__ = "0.87.7.dev"
3
+ __version__ = "0.87.8.dev"
4
4
  safe_version = __version__
5
5
 
6
6
  try:
@@ -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.7.dev11'
32
- __version_tuple__ = version_tuple = (0, 87, 7, 'dev11')
31
+ __version__ = version = '0.87.8.dev9'
32
+ __version_tuple__ = version_tuple = (0, 87, 8, 'dev9')
33
33
 
34
- __commit_id__ = commit_id = 'g8ec5d50ed'
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
- self.root = os.getcwd()
157
+ # Prefer an explicit repo root (eg per-test repo), fallback to CWD
158
+ self.root = repo_root or os.getcwd()
156
159
 
157
- self.load_tags_cache()
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.7.dev11
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
- import git
19
- import importlib_resources
20
- import lox
21
- import pandas as pd
22
- import prompts
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
- from aider.io import InputOutput
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
- df = pd.DataFrame.from_records(rows)
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
- all_results = []
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
- all_results.append(results)
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 all_results
492
+ return lang_to_results
466
493
 
467
494
 
468
- def summarize_results(dirname, stats_languages=None):
469
- all_results = load_results(dirname, stats_languages)
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(len(results.get("tests_outcomes", [])) for results in all_results if results)
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
- for results in all_results:
503
- if not results:
504
- continue
505
-
506
- res.completed_tests += 1
507
- tests_outcomes = results.get("tests_outcomes", [])
508
- passed = tests_outcomes and tests_outcomes[-1]
509
- if passed:
510
- for i in range(len(tests_outcomes) - 1, tries):
511
- passed_tests[i] += 1
512
-
513
- res.cost += results.get("cost", 0)
514
- res.duration += results.get("duration", 0)
515
- res.test_timeouts += results.get("test_timeouts", 0)
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
- res.error_outputs += results.get("num_error_outputs", 0)
518
- res.user_asks += results.get("num_user_asks", 0)
519
- res.exhausted_context_windows += results.get("num_exhausted_context_windows", 0)
520
- res.num_malformed_responses += results.get("num_malformed_responses", 0)
521
- if results.get("num_malformed_responses"):
522
- res.num_with_malformed_responses += 1
523
- res.lazy_comments += results.get("lazy_comments", 0)
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
- res.syntax_errors += results.get("syntax_errors", 0)
526
- res.indentation_errors += results.get("indentation_errors", 0)
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
- res.prompt_tokens += results.get("prompt_tokens", 0)
529
- res.completion_tokens += results.get("completion_tokens", 0)
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
- res.reasoning_effort = results.get("reasoning_effort")
532
- res.thinking_tokens = results.get("thinking_tokens")
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
- for key in "model edit_format commit_hash editor_model editor_edit_format".split():
535
- val = results.get(key)
536
- if val:
537
- variants[key].add(val)
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
- hsh = hsh.split("-")[0]
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
- version = subprocess.check_output(
640
- ["git", "show", f"{hsh}:aider/__init__.py"], universal_newlines=True
805
+ version_src = subprocess.check_output(
806
+ ["git", "show", f"{short}:aider/__init__.py"], universal_newlines=True
641
807
  )
642
- version = re.search(r'__version__ = "(.*)"', version).group(1)
643
- versions.add(version)
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
- coder = Coder.create(
823
- main_model,
824
- edit_format,
825
- io,
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=False,
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