You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
65 lines
2.3 KiB
65 lines
2.3 KiB
1 year ago
|
namespace StabilityMatrix.Core.Python;
|
||
2 years ago
|
|
||
|
public interface IPyRunner
|
||
|
{
|
||
|
/// <summary>
|
||
|
/// Initializes the Python runtime using the embedded dll.
|
||
|
/// Can be called with no effect after initialization.
|
||
|
/// </summary>
|
||
|
/// <exception cref="FileNotFoundException">Thrown if Python DLL not found.</exception>
|
||
|
Task Initialize();
|
||
|
|
||
|
/// <summary>
|
||
|
/// One-time setup for get-pip
|
||
|
/// </summary>
|
||
|
Task SetupPip();
|
||
|
|
||
|
/// <summary>
|
||
|
/// Install a Python package with pip
|
||
|
/// </summary>
|
||
|
Task InstallPackage(string package);
|
||
|
|
||
1 year ago
|
/// <summary>
|
||
|
/// Run a Function with PyRunning lock as a Task with GIL.
|
||
|
/// </summary>
|
||
|
/// <param name="func">Function to run.</param>
|
||
|
/// <param name="waitTimeout">Time limit for waiting on PyRunning lock.</param>
|
||
|
/// <param name="cancelToken">Cancellation token.</param>
|
||
|
/// <exception cref="OperationCanceledException">cancelToken was canceled, or waitTimeout expired.</exception>
|
||
|
Task<T> RunInThreadWithLock<T>(Func<T> func, TimeSpan? waitTimeout = null,
|
||
|
CancellationToken cancelToken = default);
|
||
|
|
||
|
/// <summary>
|
||
|
/// Run an Action with PyRunning lock as a Task with GIL.
|
||
|
/// </summary>
|
||
|
/// <param name="action">Action to run.</param>
|
||
|
/// <param name="waitTimeout">Time limit for waiting on PyRunning lock.</param>
|
||
|
/// <param name="cancelToken">Cancellation token.</param>
|
||
|
/// <exception cref="OperationCanceledException">cancelToken was canceled, or waitTimeout expired.</exception>
|
||
|
Task RunInThreadWithLock(Action action, TimeSpan? waitTimeout = null,
|
||
|
CancellationToken cancelToken = default);
|
||
|
|
||
2 years ago
|
/// <summary>
|
||
|
/// Evaluate Python expression and return its value as a string
|
||
|
/// </summary>
|
||
|
/// <param name="expression"></param>
|
||
|
Task<string> Eval(string expression);
|
||
|
|
||
|
/// <summary>
|
||
|
/// Evaluate Python expression and return its value
|
||
|
/// </summary>
|
||
|
/// <param name="expression"></param>
|
||
|
Task<T> Eval<T>(string expression);
|
||
|
|
||
|
/// <summary>
|
||
|
/// Execute Python code without returning a value
|
||
|
/// </summary>
|
||
|
/// <param name="code"></param>
|
||
|
Task Exec(string code);
|
||
|
|
||
|
/// <summary>
|
||
|
/// Return the Python version as a PyVersionInfo struct
|
||
|
/// </summary>
|
||
|
Task<PyVersionInfo> GetVersionInfo();
|
||
1 year ago
|
}
|