aider-ce 0.87.10.dev0__py3-none-any.whl → 0.87.12__py3-none-any.whl

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/__init__.py CHANGED
@@ -1,6 +1,6 @@
1
1
  from packaging import version
2
2
 
3
- __version__ = "0.87.10.dev"
3
+ __version__ = "0.87.12.dev"
4
4
  safe_version = __version__
5
5
 
6
6
  try:
aider/_version.py CHANGED
@@ -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.10.dev0'
32
- __version_tuple__ = version_tuple = (0, 87, 10, 'dev0')
31
+ __version__ = version = '0.87.12'
32
+ __version_tuple__ = version_tuple = (0, 87, 12)
33
33
 
34
34
  __commit_id__ = commit_id = None
aider/args.py CHANGED
@@ -780,13 +780,13 @@ def get_parser(default_config_files, git_root):
780
780
  "--file",
781
781
  action="append",
782
782
  metavar="FILE",
783
- help="specify a file to edit (can be used multiple times)",
783
+ help="specify a file to edit (can be used multiple times, glob patterns supported)",
784
784
  ).complete = shtab.FILE
785
785
  group.add_argument(
786
786
  "--read",
787
787
  action="append",
788
788
  metavar="FILE",
789
- help="specify a read-only file (can be used multiple times)",
789
+ help="specify a read-only file (can be used multiple times, glob patterns supported)",
790
790
  ).complete = shtab.FILE
791
791
  group.add_argument(
792
792
  "--vim",
@@ -15,8 +15,6 @@ If the request is ambiguous, ask questions.
15
15
  Consider potential edge cases.
16
16
  Think about how to verify your changes are correct.
17
17
 
18
- Always reply to the user in {language}.
19
-
20
18
  Once you understand the request and have a plan, you MUST:
21
19
 
22
20
  1. Decide if you need to propose *SEARCH/REPLACE* edits to any files that haven't been added to the chat. You can create new files without asking!
@@ -15,8 +15,6 @@ Respect and use existing conventions, libraries, etc that are already present in
15
15
  Take requests for changes to the supplied code.
16
16
  If the request is ambiguous, ask questions.
17
17
 
18
- Always reply to the user in {language}.
19
-
20
18
  Once you understand the request you MUST:
21
19
 
22
20
  1. Decide if you need to propose edits to any files that haven't been added to the chat. You can create new files without asking!
@@ -15,8 +15,6 @@ Think about how to verify your changes are correct.
15
15
  Take requests for changes to the supplied code.
16
16
  If the request is ambiguous, ask questions.
17
17
 
18
- Always reply to the user in {language}.
19
-
20
18
  Once you have a plan, for each file that needs to be changed, write out the changes similar to a unified diff like `diff -U0` would produce.
21
19
  """
22
20
 
@@ -8,11 +8,6 @@ class WholeFilePrompts(CoderPrompts):
8
8
  Think step-by-step. Plan your changes carefully. Explain your plan first.
9
9
  Take requests for changes to the supplied code.
10
10
  If the request is ambiguous, ask questions.
11
- Consider potential edge cases.
12
- Think about how to verify your changes are correct.
13
-
14
- Always reply to the user in {language}.
15
-
16
11
  {final_reminders}
17
12
  Once you understand the request and have a plan, you MUST:
18
13
  1. Determine if any code changes are needed.
aider/main.py CHANGED
@@ -1,3 +1,4 @@
1
+ import glob
1
2
  import json
2
3
  import os
3
4
  import re
@@ -449,6 +450,25 @@ def sanity_check_repo(repo, io):
449
450
  return False
450
451
 
451
452
 
453
+ def expand_glob_patterns(patterns, root="."):
454
+ """Expand glob patterns in a list of file paths."""
455
+ expanded_files = []
456
+ for pattern in patterns:
457
+ # Check if the pattern contains glob characters
458
+ if any(c in pattern for c in "*?[]"):
459
+ # Use glob to expand the pattern
460
+ matches = glob.glob(pattern, recursive=True)
461
+ if matches:
462
+ expanded_files.extend(matches)
463
+ else:
464
+ # If no matches, keep the original pattern
465
+ expanded_files.append(pattern)
466
+ else:
467
+ # Not a glob pattern, keep as is
468
+ expanded_files.append(pattern)
469
+ return expanded_files
470
+
471
+
452
472
  def main(argv=None, input=None, output=None, force_git_root=None, return_coder=False):
453
473
  report_uncaught_exceptions()
454
474
 
@@ -677,10 +697,16 @@ def main(argv=None, input=None, output=None, force_git_root=None, return_coder=F
677
697
  for fname in loaded_dotenvs:
678
698
  io.tool_output(f"Loaded {fname}")
679
699
 
700
+ # Expand glob patterns in files and file arguments
680
701
  all_files = args.files + (args.file or [])
702
+ all_files = expand_glob_patterns(all_files)
681
703
  fnames = [str(Path(fn).resolve()) for fn in all_files]
704
+
705
+ # Expand glob patterns in read arguments
706
+ read_patterns = args.read or []
707
+ read_expanded = expand_glob_patterns(read_patterns)
682
708
  read_only_fnames = []
683
- for fn in args.read or []:
709
+ for fn in read_expanded:
684
710
  path = Path(fn).expanduser().resolve()
685
711
  if path.is_dir():
686
712
  read_only_fnames.extend(str(f) for f in path.rglob("*") if f.is_file())
aider/models.py CHANGED
@@ -8,7 +8,6 @@ import platform
8
8
  import sys
9
9
  import time
10
10
  from dataclasses import dataclass, fields
11
- from datetime import datetime
12
11
  from pathlib import Path
13
12
  from typing import Optional, Union
14
13
 
@@ -903,57 +902,6 @@ class Model(ModelSettings):
903
902
  def is_ollama(self):
904
903
  return self.name.startswith("ollama/") or self.name.startswith("ollama_chat/")
905
904
 
906
- def github_copilot_token_to_open_ai_key(self, extra_headers):
907
- # check to see if there's an openai api key
908
- # If so, check to see if it's expire
909
- openai_api_key = "OPENAI_API_KEY"
910
-
911
- if openai_api_key not in os.environ or (
912
- int(dict(x.split("=") for x in os.environ[openai_api_key].split(";"))["exp"])
913
- < int(datetime.now().timestamp())
914
- ):
915
- import requests
916
-
917
- class GitHubCopilotTokenError(Exception):
918
- """Custom exception for GitHub Copilot token-related errors."""
919
-
920
- pass
921
-
922
- # Validate GitHub Copilot token exists
923
- if "GITHUB_COPILOT_TOKEN" not in os.environ:
924
- raise KeyError("GITHUB_COPILOT_TOKEN environment variable not found")
925
-
926
- github_token = os.environ["GITHUB_COPILOT_TOKEN"]
927
- if not github_token.strip():
928
- raise KeyError("GITHUB_COPILOT_TOKEN environment variable is empty")
929
-
930
- headers = {
931
- "Authorization": f"Bearer {os.environ['GITHUB_COPILOT_TOKEN']}",
932
- "Editor-Version": extra_headers["Editor-Version"],
933
- "Copilot-Integration-Id": extra_headers["Copilot-Integration-Id"],
934
- "Content-Type": "application/json",
935
- }
936
-
937
- url = "https://api.github.com/copilot_internal/v2/token"
938
- res = requests.get(url, headers=headers)
939
- if res.status_code != 200:
940
- safe_headers = {k: v for k, v in headers.items() if k != "Authorization"}
941
- token_preview = github_token[:5] + "..." if len(github_token) >= 5 else github_token
942
- safe_headers["Authorization"] = f"Bearer {token_preview}"
943
- raise GitHubCopilotTokenError(
944
- f"GitHub Copilot API request failed (Status: {res.status_code})\n"
945
- f"URL: {url}\n"
946
- f"Headers: {json.dumps(safe_headers, indent=2)}\n"
947
- f"JSON: {res.text}"
948
- )
949
-
950
- response_data = res.json()
951
- token = response_data.get("token")
952
- if not token:
953
- raise GitHubCopilotTokenError("Response missing 'token' field")
954
-
955
- os.environ[openai_api_key] = token
956
-
957
905
  def send_completion(
958
906
  self, messages, functions, stream, temperature=None, tools=None, max_tokens=None
959
907
  ):
@@ -1029,8 +977,6 @@ class Model(ModelSettings):
1029
977
  "Copilot-Integration-Id": "vscode-chat",
1030
978
  }
1031
979
 
1032
- self.github_copilot_token_to_open_ai_key(kwargs["extra_headers"])
1033
-
1034
980
  try:
1035
981
  res = litellm.completion(**kwargs)
1036
982
  except Exception as err:
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "deepseek/deepseek-reasoner": {
3
- "max_tokens": 64000,
3
+ "max_tokens": 128000,
4
4
  "max_input_tokens": 128000,
5
5
  "max_output_tokens": 64000,
6
6
  "input_cost_per_token": 0.00000028,
@@ -15,9 +15,9 @@
15
15
  "supports_prompt_caching": true
16
16
  },
17
17
  "deepseek/deepseek-chat": {
18
- "max_tokens": 8192,
18
+ "max_tokens": 128000,
19
19
  "max_input_tokens": 128000,
20
- "max_output_tokens": 8192,
20
+ "max_output_tokens": 8000,
21
21
  "input_cost_per_token": 0.00000028,
22
22
  "input_cost_per_token_cache_hit": 0.000000028,
23
23
  "cache_read_input_token_cost": 0.000000028,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: aider-ce
3
- Version: 0.87.10.dev0
3
+ Version: 0.87.12
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
@@ -78,6 +78,34 @@ Provides-Extra: playwright
78
78
  Requires-Dist: playwright; extra == "playwright"
79
79
  Dynamic: license-file
80
80
 
81
+ ## Project Roadmap/Goals
82
+
83
+ The current priorities are to improve core capabilities and user experience of the Aider project
84
+
85
+ 1. **Base Asynchronicity (aider-ce coroutine-experiment branch)**
86
+ * [x] Refactor codebase to have the main loop run asynchronously
87
+ * [x] Update test harness to work with new asynchronous methods
88
+
89
+ 2. **Repo Map Accuracy**
90
+ * [ ] [Bias page ranking toward active/editable files in repo map parsing](https://github.com/Aider-AI/aider/issues/2405)
91
+ * [ ] [Handle non-unique symbols that break down in large codebases](https://github.com/Aider-AI/aider/issues/2341)
92
+ * [ ] [Include AST information in repo map for richer context](https://github.com/Aider-AI/aider/issues/2688)
93
+
94
+ 3. **Context Discovery**
95
+ * [ ] Develop AST-based search capabilities
96
+ * [ ] Enhance file search with ripgrep integration
97
+ * [ ] Implement RAG (Retrieval-Augmented Generation) for better code retrieval
98
+ * [ ] Build an explicit workflow and local tooling for internal discovery mechanisms
99
+
100
+ 4. **Context Delivery**
101
+ * [ ] Use workflow for internal discovery to better target file snippets needed for specific tasks
102
+ * [ ] Add support for partial files and code snippets in model completion messages
103
+
104
+ 5. **TUI Experience**
105
+ * [ ] Add a full TUI (probably using textual) to have a visual interface competitive with the other coding agent terminal programs
106
+ * [ ] Re-integrate pretty output formatting
107
+ * [ ] Implement a response area, a prompt area with current auto completion capabilities, and a helper area for management utility commands
108
+
81
109
  ## Fork Additions
82
110
 
83
111
  This project aims to be compatible with upstream Aider, but with priority commits merged in and with some opportunistic bug fixes and optimizations
@@ -112,6 +140,7 @@ This project aims to be compatible with upstream Aider, but with priority commit
112
140
  * [Remove Confirm Responses from History](https://github.com/Aider-AI/aider/pull/3958)
113
141
  * [Benchmark Results By Language](https://github.com/dwash96/aider-ce/pull/27)
114
142
  * [Allow Benchmarks to Use Repo Map For Better Accuracy](https://github.com/dwash96/aider-ce/pull/25)
143
+ * [Read File Globbing](https://github.com/Aider-AI/aider/pull/3395)
115
144
 
116
145
  ### Other Notes
117
146
  * [MCP Configuration](https://github.com/dwash96/aider-ce/blob/main/aider/website/docs/config/mcp.md)
@@ -1,8 +1,8 @@
1
- aider/__init__.py,sha256=HENhzg4ENWKaDxDt8vhCPoPwKXvjl_QTOXrIRRg7gNo,497
1
+ aider/__init__.py,sha256=yT7tIXEkOuWUP2iKaY1VRpXMhb1a36eYihVPY0CSNtk,497
2
2
  aider/__main__.py,sha256=Vdhw8YA1K3wPMlbJQYL5WqvRzAKVeZ16mZQFO9VRmCo,62
3
- aider/_version.py,sha256=kPQ1q1vyv8fSMbN8UkWAp2aa8OW3iqXQ3zSAuwvlOqQ,721
3
+ aider/_version.py,sha256=GOlERWKOKTrpGt_7qd_-NI3D-28_9CiTq3Cu7w4rvyk,708
4
4
  aider/analytics.py,sha256=c5ujaCcMc3yG-9rz_0oSsqBwmVQRxJnui6iE_yDyY_M,7507
5
- aider/args.py,sha256=yjfHJm-eKBEXJ7MlqoGQEjkFhBlCvGtwp44AajAtROs,32491
5
+ aider/args.py,sha256=iQQHrpraUzBVDuSTc0SKvBY3tZpRX5LzgsUWQ4eGJMc,32541
6
6
  aider/args_formatter.py,sha256=CBRnzHyZk-fFCK0ekAzb6C4PPJOU-VTpWIIsJe3qUhk,6369
7
7
  aider/change_tracker.py,sha256=djUlUuewhwRAlC0x6jIUZNpn6_PK1YyiNTMYvlvDeTE,4884
8
8
  aider/commands.py,sha256=TfOJyqjNQ78eTghzQFHiIpuJ2fIfNw2vbmF1nkQmZ5k,80010
@@ -20,9 +20,9 @@ aider/history.py,sha256=r3OP3kVxl6-PZmXEI9oK1mVAM-hYCbUqacISz4e_khY,5957
20
20
  aider/io.py,sha256=gecsU8k3TOywKynspE_6GvcHNnopbRvIMa5xWBSTpv4,47538
21
21
  aider/linter.py,sha256=t5jwWZ1dvIzRtig1kTSjzl6u1LRfw0e19qwNIen2jAg,7998
22
22
  aider/llm.py,sha256=fGCemP1X9MBwrDfsTKGJ_1sx-yKz3DyoOvxZYOkvGak,1103
23
- aider/main.py,sha256=LyHwjkxz3_7tH_jerneLpDVzMY7svkkLW2NGXmfEzY8,45034
23
+ aider/main.py,sha256=srOVl0ewp64P3t7FccGEvSzNXz7qA5IhOOIUEKCiT1s,45969
24
24
  aider/mdstream.py,sha256=fS9iQUQmIJPEMo7o1psPGE2yYj31MI3m3msdN-jEzUw,7594
25
- aider/models.py,sha256=kpLabh_qwvbi6uja71qaTJjgU3Sjn-oJotcNS4TSzkM,47189
25
+ aider/models.py,sha256=mZnDnk6HLNyZULd1IZ93uTK_IUyQToYvzj9U8InD7kM,44819
26
26
  aider/onboarding.py,sha256=XdCPsi6idsRvV0TsnaBOk0QoH-g3KgctafSMxoxvx6k,16105
27
27
  aider/openrouter.py,sha256=FAdv7L8xgILXgmC_b1gnuYJStmpaPyiZMp-7nSdInlQ,4642
28
28
  aider/prompts.py,sha256=Qv-JS8BzGjusEPmR3-qmjjvN3S9mb7W4KpWiGui-Jk0,1954
@@ -56,7 +56,7 @@ aider/coders/editblock_fenced_coder.py,sha256=ZaU43k4w4jH1oQAKq-LJ3OpLSyLvT2t9ap
56
56
  aider/coders/editblock_fenced_prompts.py,sha256=2YyHKt9RaN1KpCiW9n8kGBp8oRxP1nU7KLdguM2cCbU,4415
57
57
  aider/coders/editblock_func_coder.py,sha256=hVSjSz6Vz_vqmQqt2eheUAYtYMY7OV1S9BLiPTquUZs,5317
58
58
  aider/coders/editblock_func_prompts.py,sha256=t5NLHkggCxZPLOAwo35fml0hYtIDn-nmIU7nRpBBlnQ,886
59
- aider/coders/editblock_prompts.py,sha256=VAp3QYC4TpPGluOMHSF_2Jwrki6GyO7K3jxJVt-aaOE,5938
59
+ aider/coders/editblock_prompts.py,sha256=9ItTxPlr4QsAMd0JB893x6VE4zR_4XB6fmCyNiPWH7c,5897
60
60
  aider/coders/editor_diff_fenced_coder.py,sha256=xrv0bCCBXwdmy1CpWmqi1frlSYsnpA0TQv29M7hgT94,338
61
61
  aider/coders/editor_diff_fenced_prompts.py,sha256=2ph1ftiriMEOVo1Z63oaIKofzwb0pC48GWKQ3zlzM6k,272
62
62
  aider/coders/editor_editblock_coder.py,sha256=6CDjf4_S6FiGipPNXc9_D6Sz9aIZPlW2w4fgJPq_6Pg,307
@@ -69,19 +69,19 @@ aider/coders/navigator_coder.py,sha256=U7aWgZwzH4O852WSp-stdujvJNjPdEMKMZjEziXRD
69
69
  aider/coders/navigator_legacy_prompts.py,sha256=ZxI-bc_JtnJXiu2JF65PrF60rckzDFntwTrhy8Rm0g8,17861
70
70
  aider/coders/navigator_prompts.py,sha256=dsqW0HWy4LGKpgJdTtLIJz4QaD8XdJOr5R2jpLYC3xo,34863
71
71
  aider/coders/patch_coder.py,sha256=f6-7VilMaMeYcZFQgIVWFycePo6IfZ6r9DQT5DpShBE,30288
72
- aider/coders/patch_prompts.py,sha256=_fG1WlkrCkc3bTu-yEZhwhikjz8xUF52-1nVsjrAs7w,6053
72
+ aider/coders/patch_prompts.py,sha256=dSOs7FPnglFJIKIu7FlMB1gL21N4z-Zwv6sMucQCXUU,6012
73
73
  aider/coders/search_replace.py,sha256=5Qzib7g4bt82sI2yyCf7hpl599wkobxZgVGnrCCgEkc,19813
74
74
  aider/coders/shell.py,sha256=jSKol5ICraol7pAHmZu-58nhJjI13_vHieuxqNspFiY,1801
75
75
  aider/coders/single_wholefile_func_coder.py,sha256=m3ufhuz8843P9HlSm7RoLONQ1AK8pRrv-W4oyG2U45s,2967
76
76
  aider/coders/single_wholefile_func_prompts.py,sha256=ipzROzYhWZolmbHSxw5W-11Q2iNpyWnWAp41OsCdrIo,867
77
77
  aider/coders/udiff_coder.py,sha256=xtOVArLjWNqgnz2nvQ1isk-UNo3icWa8Rjd05quCJZI,11041
78
- aider/coders/udiff_prompts.py,sha256=KCI0OiL28ern2X5yIjQ3MMyl8dvmwrxXfEI8nMzvlrI,3466
78
+ aider/coders/udiff_prompts.py,sha256=2IwzHuLkE0sPEbQub0fnzjgrdJ5hRrH_1qS1RHK8Jgs,3425
79
79
  aider/coders/udiff_simple.py,sha256=UjovEM-j51gLRZOpEL_dFxVTPs0CMwTJJNfUIaMKiE8,452
80
80
  aider/coders/udiff_simple_prompts.py,sha256=t6k8nFDQaKjdxXKwMiSNSe1BL6kAaUrgaTIPPOEr4_M,888
81
81
  aider/coders/wholefile_coder.py,sha256=uPoNNeSia1wrl4oiPjwnYrtVej7hXa2OepGsJC9t1S8,5131
82
82
  aider/coders/wholefile_func_coder.py,sha256=RKHzPNNdSuwogJ5rJEvCzmSoaxKx8zlPbCOtWvXv98I,4249
83
83
  aider/coders/wholefile_func_prompts.py,sha256=M5-d6qRYUeRTelK5w2mQYkVfFV_caPc-qGfNHlmbmJs,868
84
- aider/coders/wholefile_prompts.py,sha256=_311WMDUWMRqQTkrOShB3sau8zyAGW06FL94vl1beYE,2140
84
+ aider/coders/wholefile_prompts.py,sha256=9un0j4lH0mKh39wZaRA1Md9gQBQ_kdAzexbeEmqf8wo,2015
85
85
  aider/mcp/__init__.py,sha256=KCT2FvT5dMVd9UmfA5GPZa8u-s4vCmHLABIskeN8hlQ,3489
86
86
  aider/mcp/server.py,sha256=_y9DgkKqF7SkF0q-m5Rf-yRtUkllWNXMvRbLMm8zDR8,4203
87
87
  aider/queries/tree-sitter-language-pack/README.md,sha256=ivZSEuWqYfUVLZl2AZZGRlm0bQsaG-VTBKBwACyM07k,291
@@ -141,7 +141,7 @@ aider/queries/tree-sitter-languages/rust-tags.scm,sha256=9ljM1nzhfPs_ZTRw7cr2P9T
141
141
  aider/queries/tree-sitter-languages/scala-tags.scm,sha256=UxQjz80JIrrJ7Pm56uUnQyThfmQNvwk7aQzPNypB-Ao,1761
142
142
  aider/queries/tree-sitter-languages/typescript-tags.scm,sha256=OMdCeedPiA24ky82DpgTMKXK_l2ySTuF2zrQ2fJAi9E,1253
143
143
  aider/resources/__init__.py,sha256=09npmZFptj6XR6ZeEuekpcK2stecKEjI59zR0Vz2JU8,142
144
- aider/resources/model-metadata.json,sha256=9166MLdaNLayLdi4r0PRw3v6fEnAbYWRIxfLOUKwo5c,28700
144
+ aider/resources/model-metadata.json,sha256=z4fOl3fiRWQtVIULtjIs9FfhAExN88ybDeJdWb0_4OE,28703
145
145
  aider/resources/model-settings.yml,sha256=bqpgKJRNZUcSlXyuZgTKFybf61kW5NRuoIVyOMZztwc,58325
146
146
  aider/tools/__init__.py,sha256=LVV7Cp4C74O5BCKWzES4L1I2K0RSf25WnKb683mOHi8,1198
147
147
  aider/tools/command.py,sha256=TxUByCebyNVpob3Or9pLmSuR9Q0XLvsE4wb9aH1-sk4,2604
@@ -258,9 +258,9 @@ aider/website/docs/usage/tutorials.md,sha256=ZKBztbUtucHOiv9h8gvWiWTP6MTSsFyz4mA
258
258
  aider/website/docs/usage/voice.md,sha256=BtX7pHRgHRWUmrNbS4JssC-SO8RrJ_OetBCtIYpO0pU,3452
259
259
  aider/website/docs/usage/watch.md,sha256=OVF14lGtv1vhSXRE8PpxQ3YW-uXSifarUbmLBjmLRyA,7940
260
260
  aider/website/share/index.md,sha256=P51aDw9AT8AVbsU7v6g1tWuMjly7y_plM_ZI1ScaT8Y,3172
261
- aider_ce-0.87.10.dev0.dist-info/licenses/LICENSE.txt,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
262
- aider_ce-0.87.10.dev0.dist-info/METADATA,sha256=U6PLP3lxrnZd3ioO0RnjCjw1dCrlG7mD3lG03apbFW4,18429
263
- aider_ce-0.87.10.dev0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
264
- aider_ce-0.87.10.dev0.dist-info/entry_points.txt,sha256=OxI0JxfyJrc24nTmsdvpaWUx8Flz2huOij_-ifp-48w,69
265
- aider_ce-0.87.10.dev0.dist-info/top_level.txt,sha256=uwOA6ycgSiRLrBsaRBcIeN_eBKAX78U01_KDEHR8mBk,6
266
- aider_ce-0.87.10.dev0.dist-info/RECORD,,
261
+ aider_ce-0.87.12.dist-info/licenses/LICENSE.txt,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
262
+ aider_ce-0.87.12.dist-info/METADATA,sha256=mr823aejMfNOm0pa_hqADZeRpyebrAr2U7q6l8NCOTs,20047
263
+ aider_ce-0.87.12.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
264
+ aider_ce-0.87.12.dist-info/entry_points.txt,sha256=OxI0JxfyJrc24nTmsdvpaWUx8Flz2huOij_-ifp-48w,69
265
+ aider_ce-0.87.12.dist-info/top_level.txt,sha256=uwOA6ycgSiRLrBsaRBcIeN_eBKAX78U01_KDEHR8mBk,6
266
+ aider_ce-0.87.12.dist-info/RECORD,,