ErrorAI 1.9.1__tar.gz → 1.9.3__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.
Files changed (25) hide show
  1. {errorai-1.9.1 → errorai-1.9.3}/ErrorAI.egg-info/PKG-INFO +1 -1
  2. {errorai-1.9.1 → errorai-1.9.3}/PKG-INFO +1 -1
  3. {errorai-1.9.1 → errorai-1.9.3}/errorai/providers.py +7 -1
  4. {errorai-1.9.1 → errorai-1.9.3}/errorai/runtime.py +5 -1
  5. {errorai-1.9.1 → errorai-1.9.3}/pyproject.toml +1 -1
  6. {errorai-1.9.1 → errorai-1.9.3}/ErrorAI.egg-info/SOURCES.txt +0 -0
  7. {errorai-1.9.1 → errorai-1.9.3}/ErrorAI.egg-info/dependency_links.txt +0 -0
  8. {errorai-1.9.1 → errorai-1.9.3}/ErrorAI.egg-info/entry_points.txt +0 -0
  9. {errorai-1.9.1 → errorai-1.9.3}/ErrorAI.egg-info/requires.txt +0 -0
  10. {errorai-1.9.1 → errorai-1.9.3}/ErrorAI.egg-info/top_level.txt +0 -0
  11. {errorai-1.9.1 → errorai-1.9.3}/README.md +0 -0
  12. {errorai-1.9.1 → errorai-1.9.3}/errorai/__init__.py +0 -0
  13. {errorai-1.9.1 → errorai-1.9.3}/errorai/__main__.py +0 -0
  14. {errorai-1.9.1 → errorai-1.9.3}/errorai/bootstrap.py +0 -0
  15. {errorai-1.9.1 → errorai-1.9.3}/errorai/cli.py +0 -0
  16. {errorai-1.9.1 → errorai-1.9.3}/errorai/compat.py +0 -0
  17. {errorai-1.9.1 → errorai-1.9.3}/errorai/config.py +0 -0
  18. {errorai-1.9.1 → errorai-1.9.3}/errorai/environment.py +0 -0
  19. {errorai-1.9.1 → errorai-1.9.3}/errorai/pipeline.py +0 -0
  20. {errorai-1.9.1 → errorai-1.9.3}/errorai/universal.py +0 -0
  21. {errorai-1.9.1 → errorai-1.9.3}/setup.cfg +0 -0
  22. {errorai-1.9.1 → errorai-1.9.3}/tests/test_bootstrap.py +0 -0
  23. {errorai-1.9.1 → errorai-1.9.3}/tests/test_config.py +0 -0
  24. {errorai-1.9.1 → errorai-1.9.3}/tests/test_runtime.py +0 -0
  25. {errorai-1.9.1 → errorai-1.9.3}/tests/test_safety.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ErrorAI
3
- Version: 1.9.1
3
+ Version: 1.9.3
4
4
  Summary: Python-only autonomous runtime that watches/analyzes errors with safe local auto-fix fallbacks.
5
5
  Author: Aswanth R
6
6
  License: MIT
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ErrorAI
3
- Version: 1.9.1
3
+ Version: 1.9.3
4
4
  Summary: Python-only autonomous runtime that watches/analyzes errors with safe local auto-fix fallbacks.
5
5
  Author: Aswanth R
6
6
  License: MIT
@@ -173,6 +173,7 @@ class HttpApiProvider(ModelProvider):
173
173
  """
174
174
 
175
175
  config: ModelConfig
176
+ last_error: str | None = None
176
177
 
177
178
  def suggest_patch(self, snippet: str, error_message: str) -> str | None:
178
179
  prompt = (
@@ -206,7 +207,12 @@ class HttpApiProvider(ModelProvider):
206
207
  with urllib.request.urlopen(request, timeout=self.config.http_api_timeout) as response:
207
208
  body = json.loads(response.read().decode("utf-8"))
208
209
  text = body["choices"][0]["message"]["content"]
209
- except (urllib.error.URLError, TimeoutError, KeyError, IndexError, ValueError, OSError):
210
+ except Exception as exc:
211
+ # Any failure here (network down, SSL/proxy quirks, malformed
212
+ # response, endpoint changed shape, etc.) should degrade to "no
213
+ # fix found", never bubble up and look like a crash. Stash the
214
+ # real reason on the instance so the caller can log it if useful.
215
+ self.last_error = f"{type(exc).__name__}: {exc}"
210
216
  return None
211
217
 
212
218
  return _clean_line_response(text, snippet)
@@ -218,7 +218,11 @@ class RuntimeManager:
218
218
  if not plan or not filename or "<" in filename:
219
219
  self.reporter.log("exception.analyzed", {"analysis": analysis, "fixed": False})
220
220
  print(f"[errorai] Caught {analysis['type']}: {analysis['message']}")
221
- print("[errorai] No automatic fix rule matched this error.")
221
+ provider_reason = getattr(self.provider, "last_error", None)
222
+ if provider_reason:
223
+ print(f"[errorai] No fix: provider request failed ({provider_reason})")
224
+ else:
225
+ print("[errorai] No automatic fix rule matched this error.")
222
226
  return False
223
227
 
224
228
  print(f"[errorai] Caught {analysis['type']}: {analysis['message']}")
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "ErrorAI"
7
- version = "1.9.1"
7
+ version = "1.9.3"
8
8
  description = "Python-only autonomous runtime that watches/analyzes errors with safe local auto-fix fallbacks."
9
9
  readme = "README.md"
10
10
  authors = [
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes