32 Commits

Author SHA1 Message Date
Jhonathan Abreu 962fcd6b58 Add exception interpreters for Python ModuleNotFoundError and multiple inheritance TypeError (#9643)
Research Regression Tests / build (push) Has been cancelled
Syntax Tests / build (push) Has been cancelled
Python Virtual Environments / build (push) Has been cancelled
Benchmarks / build (push) Has been cancelled
API Tests / build (push) Has been cancelled
Build & Test Lean / build (push) Has been cancelled
Regression Tests / build (push) Has been cancelled
Report Generator Tests / build (push) Has been cancelled
* Add interpreters for Python ModuleNotFoundError and multiple inheritance TypeError

* Recommend AlgorithmImports for missing C# namespaces, clr.AddReference only for local custom libraries

* Advise against importing .NET assemblies from Python algorithms, recommending equivalent Python packages

* Add the .NET assembly advice only when the missing module name is camel cased
2026-07-30 18:15:44 -03:00
Jhonathan Abreu cf6ad512cb Keep pythonnet overloads hint in NoMethodMatchPythonExceptionInterpreter message (#9594)
The interpreter replaced the original pythonnet binding-failure message
with a friendly one built from the parsed method name, discarding the
candidate-signatures hint pythonnet 2.0.57+ appends ("The expected
signature is:" / "The following overloads are available:" followed by
the signatures). That hint is what lets users see which parameter
didn't match, so extract it from the original message and append it to
the interpreted one.

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 16:17:02 -04:00
Jhonathan Abreu feec818951 Fix method name parsing in NoMethodMatchPythonExceptionInterpreter (#9573)
The interpreter extracted the method name with LastIndexOf(" "), which
returned the last space-delimited token of the pythonnet message (a
fragment of the argument type list, e.g. "'QuantConnect.Resolution'>)")
instead of the actual method name. Parse the name from between the
"for " keyword and the following ":" instead.
2026-07-01 11:23:05 -04:00
Martin-Molinero 89f3968eef Fix performance degradation on expirying assets (#9065)
API Tests / build (push) Has been cancelled
Benchmarks / build (push) Has been cancelled
Build & Test Lean / build (push) Has been cancelled
Regression Tests / build (push) Has been cancelled
Report Generator Tests / build (push) Has been cancelled
Research Regression Tests / build (push) Has been cancelled
Syntax Tests / build (push) Has been cancelled
Python Virtual Environments / build (push) Has been cancelled
* Fix performance degradation on expirying assets

- Options would expire and get removed, when the universe removed the
  security it would never be reseted on universe selection, causing
  leaks
- Minor improvement for composer assembly loading
- Minor improvement for loading exception interepreters, so it uses
  composer

* Minor regression test fix

* Add new benchmark algorithm
2025-10-27 18:17:53 -03:00
Martin-Molinero f963e43346 Minor improvements for testing and api (#8672)
API Tests / build (push) Has been cancelled
Benchmarks / build (push) Has been cancelled
Build & Test Lean / build (push) Has been cancelled
Regression Tests / build (push) Has been cancelled
Report Generator Tests / build (push) Has been cancelled
Research Regression Tests / build (push) Has been cancelled
Syntax Tests / build (push) Has been cancelled
Python Virtual Environments / build (push) Has been cancelled
* Minor improvements for LLMs

- Minor tweaks in regression tests
- Minor API sugars

* Ignore union-attr error
2025-04-03 17:49:41 -03:00
Jhonathan Abreu 49bf436aa2 Remove Lean path info from runtime exceptions (#8309)
* Strip lean path info from runtime exceptions

* Minor fix
2024-09-09 17:54:29 -04:00
Ricardo Andrés Marino Rojas 554a82527f Fix minor warnings (#8190)
* Fix CA1847 warnings and some CA1307 warnings

* Fix CA1823 and CS0169

* Fix CA1820 warnings

* Address requested changes
2024-07-10 14:17:27 -03:00
Jhonathan Abreu 1df11c0c64 Add Pythonnet's ClrBubbledException interpreter (#7523)
Build & Test Lean / build (push) Has been cancelled
Regression Tests / build (push) Has been cancelled
Research Regression Tests / build (push) Has been cancelled
Python Virtual Environments / build (push) Has been cancelled
Benchmarks / build (push) Has been cancelled
* Add ClrBubbleExceptionInterpreter

* Add ClrBubbledExceptionInterpreter tests

* Bump pythonnet version to 2.0.23

* Minor changes

* Minor change

* Minor fix

* Fix failing unit tests
2023-10-20 11:26:47 -03:00
Martin-Molinero e22565c849 C# stacktrace exception normalization (#7328)
Build & Test Lean / build (push) Has been cancelled
Regression Tests / build (push) Has been cancelled
Benchmarks / build (push) Has been cancelled
Research Regression Tests / build (push) Has been cancelled
Python Virtual Environments / build (push) Has been cancelled
- Following the Py pattern of exception handling we will normalize stack
  traces for C# too, adding unit test
2023-06-21 10:51:17 -03:00
Jhonathan Abreu 25ab8bdacc Move small namespaces' messages to 'Messages' folder (#6930)
* Move Benchmarks, Exceptions and Indicators namespaces' messages to Messages folder

* Move Command namespace's messages to Messages folder
2023-02-09 19:17:40 -03:00
Martin-Molinero 3f42101f6d Update to python38 and libraries (#6558)
* Update to python38

- Update to python38
- Update libraries

* Create latest virtual environment. Add CI unit tests

* Further update python packages

* Virtual env fixes

- Refactor python virtual env setup
- Adding CI unit tests for python packages and virtual envs

* Adding more python packages

- Adding NBeats, Ax-platform, Riskfolio-Lib

* Rename pomegranate venv
2022-08-22 13:54:02 -03:00
Martin-Molinero b9d3d99917 Bump pythonNet version 2.0.12 (#6310)
Regression Tests / build (push) Has been cancelled
Build & Test Lean / build (push) Has been cancelled
Research Regression Tests / build (push) Has been cancelled
* Updates after pythonNet rebase

* Bump pythonNet version 2.0.12

* Fix exception types being thrown
2022-05-02 14:38:50 -03:00
Martin-Molinero b77f0122b2 Improve python exception parsing (#5831)
Regression Tests / build (push) Has been cancelled
Build & Test Lean / build (push) Has been cancelled
* Improve python exception parsing

- Improve python exception parsing adding support for line shift. Adding
  unit tests

* PythonException revert change

* Centralized and normalize algorithm runtime handling

* Adding support for C# line and file exception report
2021-08-06 20:11:54 -03:00
Michael Handschuh d709d1c4e0 Update Common to respect CA1304 and CA1305
Updates all occurrences of parsing/ToString-ing to go through the new
StringExtensions methods that use CultureInfo.InvariantCulture

See #3045
2019-09-12 14:13:24 -04:00
Stefano Raggi 57d50c69c4 Fix XML documentation compiler warnings
- Fixed all warnings except for missing XML comments (CS1591)
2018-11-09 11:44:03 +01:00
Stefano Raggi ae419690a6 Exclude mocks in exception interpreter loader 2018-10-02 20:28:11 +02:00
AlexCatarino 3e37693984 Fixes the exception message handling to return the python dll name 2018-06-27 16:31:41 +01:00
AlexCatarino 30263b2a51 Implements catch-all Python Exception Interpreter
Implements `PythonExceptionInterpreter` that works as a "catch-all" exception intrepreter for `PythonException`. Since it can interpret more specific python exceptions that are already covered by other interpreters, its `Order` is set to `int.MaxValue` to be the last to be tested.
2018-03-12 22:32:26 +00:00
AlexCatarino 980411b918 Adds IExceptionInterpreter.Order property
The Order property can be used to give priority on exception interpreters calls.
2018-03-08 17:25:30 +00:00
AlexCatarino 682b312c0f Moves GetStringBetweenChars to Extensions from PythonUtil
Since this method is not exclusive of python algorithms, it is being moved to Extension methods.
2018-03-07 23:24:35 +00:00
AlexCatarino bd9766d4f4 Implements UnsupportedOperandPythonExceptionInterpreter
Users often try to make operations between decimal (prices from securitties) and float.
2018-03-06 13:04:29 +00:00
AlexCatarino 7fc8886803 Implements NoMethodMatchPythonExceptionInterpreter
Users often use the wrong type of method paramenters, for instance, a float instead of an integer.
2018-03-06 12:10:16 +00:00
AlexCatarino b672580693 Implements KeyErrorPythonExceptionInterpreter 2018-03-06 11:05:39 +00:00
AlexCatarino 27198eda7a Implements InvalidTokenPythonExceptionInterpreter
This exception interpreter interprets a SyntaxError due to invalid token in python scripts
2018-03-05 22:55:11 +00:00
AlexCatarino 718c1d61c8 Implements DllNotFoundPythonExceptionInterpreter
This exception interpreter interprets a DllNotFoundException that is thrown when pythonnet cannot fing the python dynamic-link library in the system.
2018-03-05 22:55:11 +00:00
Michael Handschuh 6c151993ea Format errors w/ header line and detail on following lines
We format the message before being set to the result handler's log message
method so it ends up being outputted as we wish. The desired output is a
header line with the collated message from the exception (including inners)
followed by the full exception detail (inner stack traces and all).
2018-03-02 16:16:46 -05:00
Michael Handschuh d74a80448a Remove duplicat message from sched event interpreter
Also fixes test type name from recent name change projection -> interpreter
2018-03-02 15:26:40 -05:00
Michael Handschuh fa1ea521b1 Catch stragglers from recent rename, projection -> interpreter 2018-03-01 12:36:00 -05:00
Michael Handschuh 5623659098 Add StackExceptionInterpreter.ToString and null interpreter for tests 2018-03-01 12:36:00 -05:00
Michael Handschuh 148ae5986a Rename projections -> interpreters 2018-03-01 12:36:00 -05:00
Michael Handschuh 985d53a662 Implement recursive exception projections
Often times exceptions are wrapped in other exceptions that are potentially
wrapped in other exceptions (ad. infinum) -- this lends itself to a recursive
strategy for projecting exception instances. This change aims to make exception
projections composable for easy consumption by a recursive algorithm by adding
an innerProjection parameter to IExceptionProject.Project. The individual impl
can decide whether or not it wants to project the inner exception. Additionally,
it can project it using custom logic or using the specified innerProjection, or
it could ignore it completely. The implementations have all the decision making
power.
2018-03-01 12:36:00 -05:00
Michael Handschuh c8f20b7756 Add IExceptionProjection infrastructure
Provides a sample implementation of IExceptionProjection that
prepends the scheduld event name to the error message

 #1630
2018-03-01 12:36:00 -05:00