internal async Task <PythonExecutionResult> ExecuteAsync(string methodName, params PythonArgument[] arguments) { var req = new PythonExecutionRequest(_scriptFilePath, methodName, arguments); var res = await _executor.ExecuteAsnc(req); res.ErrorMessage.Evaluate( whenSome: str => { throw new PythonException(str); }); return(res); }
public async Task <PythonExecutionResult> ExecuteAsnc(PythonExecutionRequest request) { var startInfo = _startInfoFactory.CreateForExecution(request); using (var process = Process.Start(startInfo)) { var errorString = await process.StandardError.ReadToEndAsync(); string resultString = null; using (var reader = process.StandardOutput) { resultString = await reader.ReadToEndAsync(); process.WaitForExit(); } var err = string.IsNullOrEmpty(errorString) ? Maybe.CreateNone <string>() : Maybe.CreateSome(errorString); var res = string.IsNullOrEmpty(resultString) ? Maybe.CreateNone <string>() : Maybe.CreateSome(resultString); return(new PythonExecutionResult(res, err)); } }