aider-ce 0.88.0__py3-none-any.whl → 0.88.2__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.88.0.dev"
3
+ __version__ = "0.88.2.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.88.0'
32
- __version_tuple__ = version_tuple = (0, 88, 0)
31
+ __version__ = version = '0.88.2'
32
+ __version_tuple__ = version_tuple = (0, 88, 2)
33
33
 
34
34
  __commit_id__ = commit_id = None
@@ -14,7 +14,7 @@ class ArchitectCoder(AskCoder):
14
14
  if not content or not content.strip():
15
15
  return
16
16
 
17
- if not self.auto_accept_architect and not self.io.confirm_ask("Edit the files?"):
17
+ if not self.auto_accept_architect and not await self.io.confirm_ask("Edit the files?"):
18
18
  return
19
19
 
20
20
  kwargs = dict()
@@ -616,9 +616,6 @@ class Coder:
616
616
  except Exception as e:
617
617
  self.io.tool_warning(f"Could not remove todo list file {todo_file_path}: {e}")
618
618
 
619
- # Instantiate MCP tools
620
- if self.mcp_servers:
621
- pass
622
619
  # validate the functions jsonschema
623
620
  if self.functions:
624
621
  from jsonschema import Draft7Validator
@@ -1248,7 +1245,7 @@ class Coder:
1248
1245
  else:
1249
1246
  message = self.reflected_message
1250
1247
 
1251
- def check_and_open_urls(self, exc, friendly_msg=None):
1248
+ async def check_and_open_urls(self, exc, friendly_msg=None):
1252
1249
  """Check exception for URLs, offer to open in a browser, with user-friendly error msgs."""
1253
1250
  text = str(exc)
1254
1251
 
@@ -1264,7 +1261,7 @@ class Coder:
1264
1261
  urls = list(set(url_pattern.findall(text)))
1265
1262
  for url in urls:
1266
1263
  url = url.rstrip(".',\"}") # Added } to the characters to strip
1267
- self.io.offer_url(url)
1264
+ await self.io.offer_url(url)
1268
1265
  return urls
1269
1266
 
1270
1267
  async def check_for_urls(self, inp: str) -> List[str]:
@@ -1755,7 +1752,7 @@ class Coder:
1755
1752
 
1756
1753
  return chunks
1757
1754
 
1758
- def check_tokens(self, messages):
1755
+ async def check_tokens(self, messages):
1759
1756
  """Check if the messages will fit within the model's token limits."""
1760
1757
  input_tokens = self.main_model.token_count(messages)
1761
1758
  max_input_tokens = self.main_model.info.get("max_input_tokens") or 0
@@ -1774,7 +1771,7 @@ class Coder:
1774
1771
  " the context limit is exceeded."
1775
1772
  )
1776
1773
 
1777
- if not self.io.confirm_ask("Try to proceed anyway?"):
1774
+ if not await self.io.confirm_ask("Try to proceed anyway?"):
1778
1775
  return False
1779
1776
  return True
1780
1777
 
@@ -1792,7 +1789,7 @@ class Coder:
1792
1789
  chunks = self.format_messages()
1793
1790
  messages = chunks.all_messages()
1794
1791
 
1795
- if not self.check_tokens(messages):
1792
+ if not await self.check_tokens(messages):
1796
1793
  return
1797
1794
  self.warm_cache(chunks)
1798
1795
 
@@ -1841,7 +1838,7 @@ class Coder:
1841
1838
 
1842
1839
  if not should_retry:
1843
1840
  self.mdstream = None
1844
- self.check_and_open_urls(err, ex_info.description)
1841
+ await self.check_and_open_urls(err, ex_info.description)
1845
1842
  break
1846
1843
 
1847
1844
  err_msg = str(err)
@@ -1906,7 +1903,7 @@ class Coder:
1906
1903
  ),
1907
1904
  ]
1908
1905
 
1909
- self.show_exhausted_error()
1906
+ await self.show_exhausted_error()
1910
1907
  self.num_exhausted_context_windows += 1
1911
1908
  return
1912
1909
 
@@ -2352,7 +2349,8 @@ class Coder:
2352
2349
  )
2353
2350
  return (server.name, server_tools)
2354
2351
  except Exception as e:
2355
- self.io.tool_warning(f"Error initializing MCP server {server.name}:\n{e}")
2352
+ if server.name != "unnamed-server":
2353
+ self.io.tool_warning(f"Error initializing MCP server {server.name}:\n{e}")
2356
2354
  return None
2357
2355
 
2358
2356
  async def get_all_server_tools():
@@ -2402,7 +2400,7 @@ class Coder:
2402
2400
  async def reply_completed(self):
2403
2401
  pass
2404
2402
 
2405
- def show_exhausted_error(self):
2403
+ async def show_exhausted_error(self):
2406
2404
  output_tokens = 0
2407
2405
  if self.partial_response_content:
2408
2406
  output_tokens = self.main_model.token_count(self.partial_response_content)
@@ -2453,7 +2451,7 @@ class Coder:
2453
2451
 
2454
2452
  res = "".join([line + "\n" for line in res])
2455
2453
  self.io.tool_error(res)
2456
- self.io.offer_url(urls.token_limits)
2454
+ await self.io.offer_url(urls.token_limits)
2457
2455
 
2458
2456
  def lint_edited(self, fnames):
2459
2457
  res = ""
@@ -2604,7 +2602,7 @@ class Coder:
2604
2602
  )
2605
2603
  self.chat_completion_call_hashes.append(hash_object.hexdigest())
2606
2604
 
2607
- if self.stream:
2605
+ if not isinstance(completion, ModelResponse):
2608
2606
  async for chunk in self.show_send_output_stream(completion):
2609
2607
  yield chunk
2610
2608
  else:
@@ -2640,6 +2638,10 @@ class Coder:
2640
2638
  if self.verbose:
2641
2639
  print(completion)
2642
2640
 
2641
+ if not isinstance(completion, ModelResponse):
2642
+ self.io.tool_error(str(completion))
2643
+ return
2644
+
2643
2645
  if not completion.choices:
2644
2646
  self.io.tool_error(str(completion))
2645
2647
  return
@@ -3092,7 +3094,7 @@ class Coder:
3092
3094
  return
3093
3095
 
3094
3096
  if not Path(full_path).exists():
3095
- if not self.io.confirm_ask("Create new file?", subject=path):
3097
+ if not await self.io.confirm_ask("Create new file?", subject=path):
3096
3098
  self.io.tool_output(f"Skipping edits to {path}")
3097
3099
  return
3098
3100
 
aider/exceptions.py CHANGED
@@ -28,6 +28,7 @@ EXCEPTIONS = [
28
28
  "The API provider has refused the request due to a safety policy about the content.",
29
29
  ),
30
30
  ExInfo("ContextWindowExceededError", False, None), # special case handled in base_coder
31
+ ExInfo("ErrorEventError", True, None),
31
32
  ExInfo("ImageFetchError", True, "The API cannot fetch an image"),
32
33
  ExInfo("InternalServerError", True, "The API provider's servers are down or overloaded."),
33
34
  ExInfo("InvalidRequestError", True, None),
aider/io.py CHANGED
@@ -1301,7 +1301,7 @@ class InputOutput:
1301
1301
  else:
1302
1302
  show_resp = Text(message or "(empty response)")
1303
1303
 
1304
- self.stream_print(show_resp)
1304
+ self.console.print(show_resp)
1305
1305
 
1306
1306
  def render_markdown(self, text):
1307
1307
  output = StringIO()
aider/main.py CHANGED
@@ -412,7 +412,7 @@ def register_litellm_models(git_root, model_metadata_fname, io, verbose=False):
412
412
  return 1
413
413
 
414
414
 
415
- def sanity_check_repo(repo, io):
415
+ async def sanity_check_repo(repo, io):
416
416
  if not repo:
417
417
  return True
418
418
 
@@ -443,7 +443,7 @@ def sanity_check_repo(repo, io):
443
443
  io.tool_error("Aider only works with git repos with version number 1 or 2.")
444
444
  io.tool_output("You may be able to convert your repo: git update-index --index-version=2")
445
445
  io.tool_output("Or run aider --no-git to proceed without using git.")
446
- io.offer_url(urls.git_index_version, "Open documentation url for more info?")
446
+ await io.offer_url(urls.git_index_version, "Open documentation url for more info?")
447
447
  return False
448
448
 
449
449
  io.tool_error("Unable to read git repository, it may be corrupt?")
@@ -783,7 +783,7 @@ async def main_async(argv=None, input=None, output=None, force_git_root=None, re
783
783
  io.tool_output(cmd_line, log_only=True)
784
784
 
785
785
  is_first_run = is_first_run_of_new_version(io, verbose=args.verbose)
786
- check_and_load_imports(io, is_first_run, verbose=args.verbose)
786
+ await check_and_load_imports(io, is_first_run, verbose=args.verbose)
787
787
 
788
788
  register_models(git_root, args.model_settings_file, io, verbose=args.verbose)
789
789
  register_litellm_models(git_root, args.model_metadata_file, io, verbose=args.verbose)
@@ -844,7 +844,7 @@ async def main_async(argv=None, input=None, output=None, force_git_root=None, re
844
844
  io.tool_error(
845
845
  f"Unable to proceed without an OpenRouter API key for model '{args.model}'."
846
846
  )
847
- io.offer_url(urls.models_and_keys, "Open documentation URL for more info?")
847
+ await io.offer_url(urls.models_and_keys, "Open documentation URL for more info?")
848
848
  analytics.event(
849
849
  "exit",
850
850
  reason="OpenRouter key missing for specified model and OAuth failed/declined",
@@ -926,7 +926,7 @@ async def main_async(argv=None, input=None, output=None, force_git_root=None, re
926
926
  io.tool_output("You can skip this check with --no-show-model-warnings")
927
927
 
928
928
  try:
929
- io.offer_url(urls.model_warnings, "Open documentation url for more info?")
929
+ await io.offer_url(urls.model_warnings, "Open documentation url for more info?")
930
930
  io.tool_output()
931
931
  except KeyboardInterrupt:
932
932
  analytics.event("exit", reason="Keyboard interrupt during model warnings")
@@ -954,7 +954,7 @@ async def main_async(argv=None, input=None, output=None, force_git_root=None, re
954
954
  pass
955
955
 
956
956
  if not args.skip_sanity_check_repo:
957
- if not sanity_check_repo(repo, io):
957
+ if not await sanity_check_repo(repo, io):
958
958
  analytics.event("exit", reason="Repository sanity check failed")
959
959
  return 1
960
960
 
@@ -1059,7 +1059,7 @@ async def main_async(argv=None, input=None, output=None, force_git_root=None, re
1059
1059
  )
1060
1060
  except UnknownEditFormat as err:
1061
1061
  io.tool_error(str(err))
1062
- io.offer_url(urls.edit_formats, "Open documentation about edit formats?")
1062
+ await io.offer_url(urls.edit_formats, "Open documentation about edit formats?")
1063
1063
  analytics.event("exit", reason="Unknown edit format")
1064
1064
  return 1
1065
1065
  except ValueError as err:
@@ -1152,7 +1152,7 @@ async def main_async(argv=None, input=None, output=None, force_git_root=None, re
1152
1152
  webbrowser.open(urls.release_notes)
1153
1153
  elif args.show_release_notes is None and is_first_run:
1154
1154
  io.tool_output()
1155
- io.offer_url(
1155
+ await io.offer_url(
1156
1156
  urls.release_notes,
1157
1157
  "Would you like to see what's new in this version?",
1158
1158
  allow_never=False,
@@ -1276,7 +1276,7 @@ def is_first_run_of_new_version(io, verbose=False):
1276
1276
  return True # Safer to assume it's a first run if we hit an error
1277
1277
 
1278
1278
 
1279
- def check_and_load_imports(io, is_first_run, verbose=False):
1279
+ async def check_and_load_imports(io, is_first_run, verbose=False):
1280
1280
  try:
1281
1281
  if is_first_run:
1282
1282
  if verbose:
@@ -1288,7 +1288,7 @@ def check_and_load_imports(io, is_first_run, verbose=False):
1288
1288
  except Exception as err:
1289
1289
  io.tool_error(str(err))
1290
1290
  io.tool_output("Error loading required imports. Did you install aider properly?")
1291
- io.offer_url(urls.install_properly, "Open documentation url for more info?")
1291
+ await io.offer_url(urls.install_properly, "Open documentation url for more info?")
1292
1292
  sys.exit(1)
1293
1293
 
1294
1294
  if verbose:
aider/mcp/__init__.py CHANGED
@@ -154,4 +154,21 @@ def load_mcp_servers(mcp_servers, mcp_servers_file, io, verbose=False, mcp_trans
154
154
  if mcp_servers_file:
155
155
  servers = _parse_mcp_servers_from_file(mcp_servers_file, io, verbose, mcp_transport)
156
156
 
157
+ if not servers:
158
+ # A default MCP server is actually now necessary for the overall agentic loop
159
+ # and a dummy server does suffice for the job
160
+ # because I am not smart enough to figure out why
161
+ # on coder switch, the agent actually initializes the prompt area twice
162
+ # once immediately after input for the old coder
163
+ # and immediately again for the new target coder
164
+ # which causes a race condition where we are awaiting a coroutine
165
+ # that can no longer yield control (somehow?)
166
+ # but somehow having to run through the MCP server checks
167
+ # allows control to be yielded again somehow
168
+ # and I cannot figure out just how that is happening
169
+ # and maybe it is actually prompt_toolkit's fault
170
+ # but this hack works swimmingly because ???
171
+ # so sure! why not
172
+ servers = [McpServer(json.loads('{"aider_default": {}}'))]
173
+
157
174
  return servers
aider/onboarding.py CHANGED
@@ -146,7 +146,7 @@ async def select_default_model(args, io, analytics):
146
146
  if model:
147
147
  return model
148
148
 
149
- io.offer_url(urls.models_and_keys, "Open documentation URL for more info?")
149
+ await io.offer_url(urls.models_and_keys, "Open documentation URL for more info?")
150
150
 
151
151
 
152
152
  # Helper function to find an available port
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: aider-ce
3
- Version: 0.88.0
3
+ Version: 0.88.2
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
@@ -1,6 +1,6 @@
1
- aider/__init__.py,sha256=NmXewK2gTETvxH0iuvdebVsJvhmghhUsf0r9KMfTOTU,496
1
+ aider/__init__.py,sha256=lR9OBHkDJxBD9W4uVZzRD0QzU75uFDkVWRF4kJyJh4k,496
2
2
  aider/__main__.py,sha256=Vdhw8YA1K3wPMlbJQYL5WqvRzAKVeZ16mZQFO9VRmCo,62
3
- aider/_version.py,sha256=IkSkv_g3X5B_24rJ_LnZDKJLwXs1B65RUO3nU59LY60,706
3
+ aider/_version.py,sha256=2xGyxCb49iWFz4jJKwCSryLonWCKFULLHVc5ZqHj6h8,706
4
4
  aider/analytics.py,sha256=c5ujaCcMc3yG-9rz_0oSsqBwmVQRxJnui6iE_yDyY_M,7507
5
5
  aider/args.py,sha256=lC64t3gp-SJ1Sv51LDHpTAsiU2ZwiFWerYf3iu9mtWY,32742
6
6
  aider/args_formatter.py,sha256=CBRnzHyZk-fFCK0ekAzb6C4PPJOU-VTpWIIsJe3qUhk,6369
@@ -11,19 +11,19 @@ aider/deprecated.py,sha256=SNeAWR7ih87F5AyFpC4pxRoJAaw8measBW583w0EUT8,4277
11
11
  aider/diffs.py,sha256=y6_rxIKe3FPCIsVy_RRkHdofguYOhYBr2Oytr5AqjHI,3028
12
12
  aider/dump.py,sha256=-naWnGTc0-lAe_93WxBTpunPRfzNlUK7Q5zgXOprHfA,653
13
13
  aider/editor.py,sha256=_WAipJYEOx-q69mPp_hHAQ2yfeoZklBYjS0rTLxCHEA,4364
14
- aider/exceptions.py,sha256=W9Qw83348Xl0KwSMc1jYNZ-o8Ok65rBAuB1Mz9P6fUk,3914
14
+ aider/exceptions.py,sha256=RfGohVQ5Z6dw_hxqRukabsEtSaZOd_uFxiFT_arpvKc,3957
15
15
  aider/format_settings.py,sha256=wHW4bLTKwqUKDGX4onxirC4cNgeJ-lHPuS1H04_R444,1041
16
16
  aider/gui.py,sha256=JnHvli1JTCGHAgsOZ8HkAWOKAFxmngbyviZIJeYvjsw,17573
17
17
  aider/help.py,sha256=wExA1E9vuJccKBH1VvKmH-zJqFi-vhNc0n3CD3Y-8fI,4432
18
18
  aider/help_pats.py,sha256=syn7pSVJdcf8uMKTxnZUZBQu-r8JMAi-rrC-k2er1Fk,376
19
19
  aider/history.py,sha256=083Gm7KxNo1PXMFHYiChigxCbRzmLkfNlesODdCC-eY,6067
20
- aider/io.py,sha256=ZvkXA_GKQMK1MeCiduyRCw7OES4lbYrRTAv2ZtshhPM,56858
20
+ aider/io.py,sha256=_CS6DxB-HmpaqVUedyAq-CZzp-KdHHs2zwpF53pcaCY,56859
21
21
  aider/linter.py,sha256=t5jwWZ1dvIzRtig1kTSjzl6u1LRfw0e19qwNIen2jAg,7998
22
22
  aider/llm.py,sha256=dtT0mavXP1SyR0Zu_ysZXKdbs3y53q2PevvDKBUrs6s,1505
23
- aider/main.py,sha256=Kju9MTXQehErlw8X1uk32tJ3xp1tVrv-PjURgxE94Zs,46271
23
+ aider/main.py,sha256=2Pk5nJhUf-aoa2cbs6VPQA0lfneRYgw-dCbkFO8r8WY,46331
24
24
  aider/mdstream.py,sha256=fS9iQUQmIJPEMo7o1psPGE2yYj31MI3m3msdN-jEzUw,7594
25
25
  aider/models.py,sha256=yflYZ64oza4QH04vIPI2n7rcsdSw2Np4BRwRKlb3STQ,45455
26
- aider/onboarding.py,sha256=-Ac-bk2Unqygg1Ze0X-6gZRVS-_v4rPQgzPaHvHboHQ,16129
26
+ aider/onboarding.py,sha256=pMWl--NOH_hb4w1wVxLmv8W0akcrilo1Pxf9XUSqBXs,16135
27
27
  aider/openrouter.py,sha256=FAdv7L8xgILXgmC_b1gnuYJStmpaPyiZMp-7nSdInlQ,4642
28
28
  aider/prompts.py,sha256=Qv-JS8BzGjusEPmR3-qmjjvN3S9mb7W4KpWiGui-Jk0,1954
29
29
  aider/reasoning_tags.py,sha256=VOg5wM7JSrMo47OyS1FFuLrr2cp2KyutEC4_zsUsCbY,2288
@@ -42,11 +42,11 @@ aider/waiting.py,sha256=QbDnh1U6oJPqkUrRM3DC8iA5-djbKRW5iJh6Q3VOnrI,944
42
42
  aider/watch.py,sha256=znCZhHCBlcMm-4SRJP-B0mWfsl5q26DAd-zlk2zykQ8,10641
43
43
  aider/watch_prompts.py,sha256=JHmXPZUKm1b1og22QolboU-Xie6bJWhmlbKBi2StkdI,556
44
44
  aider/coders/__init__.py,sha256=iB0SkjLra5cb5byPx-bzrmlH6Ud7GnpdOG3pWMhysLs,1102
45
- aider/coders/architect_coder.py,sha256=725D5ze2nWCEQeUrYpQjYTwnLPVITpSSvRi-243HYIQ,1640
45
+ aider/coders/architect_coder.py,sha256=O5KIf__Ka0bgtCUhYWUmAb08aCS6Nq-CdVWWa-VNKv0,1646
46
46
  aider/coders/architect_prompts.py,sha256=R0_KxZjo-km_yNaeDAquDP9qfp3IdWgrdMirCWe0RIE,1658
47
47
  aider/coders/ask_coder.py,sha256=Omk4Ih8-prefkMZ_jnRS3faoW5CQUakHOvZ-s7piM3U,210
48
48
  aider/coders/ask_prompts.py,sha256=W6HwDUfzfOLt9q8sl6rw7fN7b5ND90FkxCZrtrWl5vY,1171
49
- aider/coders/base_coder.py,sha256=S8p4V09m4UGlCNxoACnzQ1yWSsAWYFNPXr7rWRmGG4M,128033
49
+ aider/coders/base_coder.py,sha256=I2IwjL2mzcBJhnaMHhAZn0tQZ6DPi8sw-EsjRofJk9c,128223
50
50
  aider/coders/base_prompts.py,sha256=O3bBjhf0hgvtKbQ9QyOMnRy8LrmfLyT9dVAcXxHS_3k,3659
51
51
  aider/coders/chat_chunks.py,sha256=8HPet6cmQdgWvaA_tGpinO4ASMst53uTcSEtNVTYDXE,1981
52
52
  aider/coders/context_coder.py,sha256=_RSzu6ptHo2lkTN7-e9TpcZKzqbQF2eNX5MkyswGm3s,1577
@@ -82,7 +82,7 @@ aider/coders/wholefile_coder.py,sha256=uPoNNeSia1wrl4oiPjwnYrtVej7hXa2OepGsJC9t1
82
82
  aider/coders/wholefile_func_coder.py,sha256=pyQHy-VP1gFb4-4EHmYLxRkCP0Ss4nlA4-aQdBVAPQU,4261
83
83
  aider/coders/wholefile_func_prompts.py,sha256=M5-d6qRYUeRTelK5w2mQYkVfFV_caPc-qGfNHlmbmJs,868
84
84
  aider/coders/wholefile_prompts.py,sha256=9un0j4lH0mKh39wZaRA1Md9gQBQ_kdAzexbeEmqf8wo,2015
85
- aider/mcp/__init__.py,sha256=MXjxSCDxcxOGTpVEi67HgMk_OHH11Ba_FxLJk09JkqQ,5821
85
+ aider/mcp/__init__.py,sha256=vYNfOKLMhDHXQyayTCFkZI1g53pBHDcTNOUziyKc_Jo,6747
86
86
  aider/mcp/server.py,sha256=sGlmgDMZ8LBgUikSq0I1y48OoTIhHMc4_Y1ST-amK1Q,5253
87
87
  aider/queries/tree-sitter-language-pack/README.md,sha256=ivZSEuWqYfUVLZl2AZZGRlm0bQsaG-VTBKBwACyM07k,291
88
88
  aider/queries/tree-sitter-language-pack/arduino-tags.scm,sha256=HbgdothT9Jjk56COXTtUkVAdZ14rZNnqzLbWVLeRs5U,177
@@ -261,9 +261,9 @@ aider/website/docs/usage/tutorials.md,sha256=ZKBztbUtucHOiv9h8gvWiWTP6MTSsFyz4mA
261
261
  aider/website/docs/usage/voice.md,sha256=BtX7pHRgHRWUmrNbS4JssC-SO8RrJ_OetBCtIYpO0pU,3452
262
262
  aider/website/docs/usage/watch.md,sha256=OVF14lGtv1vhSXRE8PpxQ3YW-uXSifarUbmLBjmLRyA,7940
263
263
  aider/website/share/index.md,sha256=P51aDw9AT8AVbsU7v6g1tWuMjly7y_plM_ZI1ScaT8Y,3172
264
- aider_ce-0.88.0.dist-info/licenses/LICENSE.txt,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
265
- aider_ce-0.88.0.dist-info/METADATA,sha256=N0ya4CMSgXwTRr6CfC83eQ_3gGCurnOhgsMdEwI_aKk,20820
266
- aider_ce-0.88.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
267
- aider_ce-0.88.0.dist-info/entry_points.txt,sha256=OxI0JxfyJrc24nTmsdvpaWUx8Flz2huOij_-ifp-48w,69
268
- aider_ce-0.88.0.dist-info/top_level.txt,sha256=uwOA6ycgSiRLrBsaRBcIeN_eBKAX78U01_KDEHR8mBk,6
269
- aider_ce-0.88.0.dist-info/RECORD,,
264
+ aider_ce-0.88.2.dist-info/licenses/LICENSE.txt,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
265
+ aider_ce-0.88.2.dist-info/METADATA,sha256=24StMPdhLaWO45fN1UXg5gC-nJjB7mEuPzaaVlBxULE,20820
266
+ aider_ce-0.88.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
267
+ aider_ce-0.88.2.dist-info/entry_points.txt,sha256=qUBEUd84DYNEHFSgZbgsjgsrAABxqwOj-Dwut9pHZx0,45
268
+ aider_ce-0.88.2.dist-info/top_level.txt,sha256=uwOA6ycgSiRLrBsaRBcIeN_eBKAX78U01_KDEHR8mBk,6
269
+ aider_ce-0.88.2.dist-info/RECORD,,
@@ -1,3 +1,2 @@
1
1
  [console_scripts]
2
- aider = aider.main:main
3
2
  aider-ce = aider.main:main