public async Task Handling_kernel_can_be_specified_using_kernel_alias_as_a_directive() { var cSharpKernel = new CSharpKernel(); var fSharpKernel = new FSharpKernel(); using var kernel = new CompositeKernel(); kernel.Add(cSharpKernel, new[] { "C#" }); kernel.Add(fSharpKernel, new[] { "F#" }); kernel.DefaultKernelName = fSharpKernel.Name; using var events = kernel.KernelEvents.ToSubscribedList(); var csharpCommand = new SubmitCode(@" #!C# new [] {1,2,3}"); await kernel.SendAsync(csharpCommand); var fsharpCommand = new SubmitCode(@" #!F# [1;2;3]"); await kernel.SendAsync(fsharpCommand); events.Should() .ContainSingle <CommandSucceeded>(e => e.Command == csharpCommand); events.Should() .ContainSingle <CommandSucceeded>(e => e.Command == fsharpCommand); }
protected JupyterRequestHandlerTestBase(ITestOutputHelper output) { _frontendEnvironment = new JupyterFrontendEnvironment(); _disposables.Add(output.SubscribeToPocketLogger()); _cSharpKernel = new CSharpKernel() .UseDefaultFormatting() .UseKernelHelpers() .UseJupyterHelpers() .UseMathAndLaTeX(); _fSharpKernel = new FSharpKernel() .UseDefaultFormatting() .UseKernelHelpers() .UseDefaultNamespaces() .UseMathAndLaTeX(); _compositeKernel = new CompositeKernel { _cSharpKernel, _fSharpKernel } .UseDefaultMagicCommands(); _compositeKernel.UseFrontedEnvironment(context => _frontendEnvironment); SetKernelLanguage(Language.CSharp); _compositeKernel.Name = ".NET"; Kernel = _compositeKernel; JupyterMessageSender = new RecordingJupyterMessageSender(); _disposables.Add(_compositeKernel); _disposables.Add(Kernel.LogEventsToPocketLogger()); }
public async Task Handling_kernel_can_be_specified_using_kernel_name_as_a_directive_as_a_proxy_named_pipe() { var fSharpKernel = new FSharpKernel(); using var kernel = new CompositeKernel { fSharpKernel }.UseProxyKernel(); kernel.DefaultKernelName = fSharpKernel.Name; var pipeName = Guid.NewGuid().ToString(); using var cSharpKernel = new CSharpKernel(); Action doWait = () => Task.Run(() => NamedPipeKernelServer.WaitForConnection(cSharpKernel, pipeName)); doWait(); using var events = kernel.KernelEvents.ToSubscribedList(); var proxyCommand = new SubmitCode($"#!connect test {pipeName}"); await kernel.SendAsync(proxyCommand); var proxyCommand2 = new SubmitCode(@" var x = 1 + 1; x", targetKernelName: "test"); await kernel.SendAsync(proxyCommand2); events.Should() .ContainSingle <CommandSucceeded>(e => e.Command == proxyCommand); }
protected JupyterRequestHandlerTestBase(ITestOutputHelper output) { _disposables.Add(output.SubscribeToPocketLogger()); _cSharpKernel = new CSharpKernel() .UseDefaultFormatting() .UseExtendDirective() .UseKernelHelpers(); _fSharpKernel = new FSharpKernel() .UseDefaultFormatting() .UseKernelHelpers() .UseDefaultNamespaces(); _compositeKernel = new CompositeKernel { _cSharpKernel, _fSharpKernel } .UseDefaultMagicCommands() .UseExtendDirective(); SetKernelLanguage(Language.CSharp); _compositeKernel.Name = ".NET"; Kernel = _compositeKernel; JupyterMessageSender = new RecordingJupyterMessageSender(); _disposables.Add(_compositeKernel); _disposables.Add(Kernel.LogEventsToPocketLogger()); }
public async Task Handling_kernel_can_be_specified_using_kernel_name_as_a_directive_as_a_proxy_named_pipe() { var fSharpKernel = new FSharpKernel(); using var kernel = new CompositeKernel { fSharpKernel }.UseConnection(new ConnectNamedPipe()); kernel.DefaultKernelName = fSharpKernel.Name; var pipeName = Guid.NewGuid().ToString(); using var remoteKernel = new CSharpKernel(); StartServer(remoteKernel, pipeName); using var events = kernel.KernelEvents.ToSubscribedList(); var proxyCommand = new SubmitCode($"#!connect named-pipe --kernel-name test --pipe-name {pipeName}"); await kernel.SendAsync(proxyCommand); var proxyCommand2 = new SubmitCode(@" var x = 1 + 1; x", targetKernelName: "test"); await kernel.SendAsync(proxyCommand2); events.Should() .ContainSingle <CommandSucceeded>(e => e.Command == proxyCommand); }
public static FSharpKernel UseKernelHelpers( this FSharpKernel kernel) { Task.Run(() => kernel.SendAsync(new SubmitCode($@" open {typeof(FSharpKernelHelpers).FullName} "))).Wait(); return(kernel); }
public static FSharpKernel UseDefaultRendering( this FSharpKernel kernel) { Task.Run(() => kernel.SendAsync( new SubmitCode($@" {ReferenceFromType(typeof(IHtmlContent))} {ReferenceFromType(typeof(FSharpPocketViewTags))} open {typeof(FSharpPocketViewTags).FullName} "))).Wait(); return(kernel); }
public static FSharpKernel UseDefaultNamespaces( this FSharpKernel kernel) { Task.Run(() => kernel.SendAsync( new SubmitCode($@" open System open System.Text open System.Threading.Tasks open System.Linq "))).Wait(); return(kernel); }
public static FSharpKernel UseVSCodeHelpers(this FSharpKernel kernel) { var command = new SubmitCode($@" #r ""{typeof(VSCodeInteractiveHost).Assembly.Location.Replace("\\", "/")}"" [<AutoOpen>] module VSCodeTopLevelModule = let GetInputAsync ( prompt : string ) ( isPassword : bool) = {typeof(VSCodeInteractiveHost).FullName}.{nameof(VSCodeInteractiveHost.GetInputAsync)}( prompt, isPassword ) |> Async.AwaitTask "); kernel.DeferCommand(command); return(kernel); }
public static FSharpKernel UseMathAndLaTeX(this FSharpKernel kernel) { if (kernel is null) { throw new ArgumentNullException(nameof(kernel)); } kernel.DeferCommand( new SubmitCode($@" #r ""{typeof(LaTeXString).Assembly.Location.Replace("\\", "/")}"" open {typeof(LaTeXString).Namespace} ")); return(kernel); }
public async Task lsmagic_lists_registered_magic_commands_in_subkernels() { var subkernel1 = new CSharpKernel(); subkernel1.AddDirective(new Command("#!from-subkernel-1")); var subkernel2 = new FSharpKernel(); subkernel2.AddDirective(new Command("#!from-subkernel-2")); using var compositeKernel = new CompositeKernel { subkernel1, subkernel2 } .UseDefaultMagicCommands() .LogEventsToPocketLogger(); compositeKernel.DefaultKernelName = "csharp"; compositeKernel.AddDirective(new Command("#!from-compositekernel")); using var events = compositeKernel.KernelEvents.ToSubscribedList(); await compositeKernel.SendAsync(new SubmitCode("#!lsmagic")); var valueProduceds = events.OfType <DisplayedValueProduced>().ToArray(); valueProduceds[0].Value .ToDisplayString("text/html") .Should() .ContainAll("#!lsmagic", "#!csharp", "#!fsharp", "#!from-compositekernel"); valueProduceds[1].Value .ToDisplayString("text/html") .Should() .ContainAll("#!lsmagic", "#!from-subkernel-1"); valueProduceds[2].Value .ToDisplayString("text/html") .Should() .ContainAll("#!lsmagic", "#!from-subkernel-2"); }
private Kernel CreateFSharpKernel(bool openTestingNamespaces) { var kernel = new FSharpKernel() .UseDefaultFormatting() .UseNugetDirective() .UseKernelHelpers() .UseDotNetVariableSharing() .UseWho() .UseDefaultNamespaces(); if (openTestingNamespaces) { return(UseExtraNamespacesForFSharpTesting(kernel)); } else { return(kernel); } }
public async Task cell_with_nuget_and_code_continues_executions_on_right_kernel(Language first, Language second) { var csk = new CSharpKernel() .UseNugetDirective() .UseKernelHelpers() .UseWho() .LogEventsToPocketLogger(); var fsk = new FSharpKernel() .UseDefaultFormatting() .UseKernelHelpers() .UseWho() .UseDefaultNamespaces() .LogEventsToPocketLogger(); using var kernel = new CompositeKernel { first switch { Language.CSharp => csk, Language.FSharp => fsk },
protected JupyterRequestHandlerTestBase(ITestOutputHelper output) { _disposables.Add(output.SubscribeToPocketLogger()); _cSharpKernel = new CSharpKernel() .UseNugetDirective() .UseKernelHelpers() .UseJupyterHelpers() .UseMathAndLaTeX(); _fSharpKernel = new FSharpKernel() .UseNugetDirective() .UseDefaultFormatting() .UseKernelHelpers() .UseDefaultNamespaces() .UseMathAndLaTeX(); _psKernel = new PowerShellKernel() .UseJupyterHelpers(); _compositeKernel = new CompositeKernel { _cSharpKernel, _fSharpKernel, _psKernel, new HtmlKernel(), new JavaScriptKernel() } .UseDefaultMagicCommands(); SetKernelLanguage(Language.CSharp); Kernel = _compositeKernel; JupyterMessageSender = new RecordingJupyterMessageSender(); _disposables.Add(_compositeKernel); _disposables.Add(Kernel.LogEventsToPocketLogger()); }
public void Child_kernels_are_disposed_when_CompositeKernel_is_disposed() { var csharpKernelWasDisposed = false; var fsharpKernelWasDisposed = false; var csharpKernel = new CSharpKernel(); csharpKernel.RegisterForDisposal(() => csharpKernelWasDisposed = true); var fsharpKernel = new FSharpKernel(); fsharpKernel.RegisterForDisposal(() => fsharpKernelWasDisposed = true); var compositeKernel = new CompositeKernel { csharpKernel, fsharpKernel }; compositeKernel.Dispose(); csharpKernelWasDisposed.Should().BeTrue(); fsharpKernelWasDisposed.Should().BeTrue(); }
public static FSharpKernel UseDefaultRendering( this FSharpKernel kernel) { // noop while the F# kernel is just a wrapper around fsi.exe forcing all return values to be strings return(kernel); }