private static IKernel CreateKernel( string defaultKernelName, FrontendEnvironment frontendEnvironment, StartupOptions startupOptions, HttpProbingSettings httpProbingSettings) { var compositeKernel = new CompositeKernel(); compositeKernel.FrontendEnvironment = frontendEnvironment; compositeKernel.Add( new CSharpKernel() .UseDefaultFormatting() .UseNugetDirective() .UseKernelHelpers() .UseJupyterHelpers() .UseWho() .UseXplot() .UseMathAndLaTeX()); compositeKernel.Add( new FSharpKernel() .UseDefaultFormatting() .UseNugetDirective() .UseKernelHelpers() .UseWho() .UseDefaultNamespaces() .UseXplot() .UseMathAndLaTeX()); compositeKernel.Add( new PowerShellKernel() .UseJupyterHelpers() .UseXplot(), new[] { "#!pwsh" }); compositeKernel.Add( new JavaScriptKernel(), new[] { "#!js" }); compositeKernel.Add( new HtmlKernel()); var kernel = compositeKernel .UseDefaultMagicCommands() .UseLog() .UseAbout() .UseHttpApi(startupOptions, httpProbingSettings); SetUpFormatters(frontendEnvironment); kernel.DefaultKernelName = defaultKernelName; var enableHttp = new SubmitCode("#!enable-http", compositeKernel.Name); enableHttp.PublishInternalEvents(); compositeKernel.DeferCommand(enableHttp); return(kernel); }
public async Task Deferred_commands_on_composite_kernel_are_execute_on_first_submission() { var deferredCommandExecuted = false; var subKernel = new CSharpKernel(); using var compositeKernel = new CompositeKernel { subKernel }; compositeKernel.DefaultKernelName = subKernel.Name; var deferred = new SubmitCode("placeholder") { Handler = (command, context) => { deferredCommandExecuted = true; return(Task.CompletedTask); } }; compositeKernel.DeferCommand(deferred); var events = compositeKernel.KernelEvents.ToSubscribedList(); await compositeKernel.SendAsync(new SubmitCode("var x = 1;", targetKernelName : subKernel.Name)); deferredCommandExecuted.Should().Be(true); events .Select(e => e.GetType()) .Should() .ContainInOrder( typeof(CodeSubmissionReceived), typeof(CompleteCodeSubmissionReceived), typeof(CommandHandled)); }
public async Task Deferred_commands_on_composite_kernel_can_use_directives() { var deferredCommandExecuted = false; var subKernel = new CSharpKernel(); using var compositeKernel = new CompositeKernel { subKernel }; var customDirective = new Command("#!customDirective") { Handler = CommandHandler.Create(() => { deferredCommandExecuted = true; }) }; compositeKernel.AddDirective(customDirective); compositeKernel.DefaultKernelName = subKernel.Name; var deferred = new SubmitCode("#!customDirective"); compositeKernel.DeferCommand(deferred); var events = compositeKernel.KernelEvents.ToSubscribedList(); await compositeKernel.SendAsync(new SubmitCode("var x = 1;", targetKernelName : subKernel.Name)); deferredCommandExecuted.Should().Be(true); events .Select(e => e.GetType()) .Should() .ContainInOrder( typeof(CodeSubmissionReceived), typeof(CompleteCodeSubmissionReceived), typeof(CommandSucceeded)); }
protected void DeferCommand(IKernelCommand command) { _compositeKernel.DeferCommand(command); }