Skip to content

Commit

Permalink
update packages including fix for #90
Browse files Browse the repository at this point in the history
  • Loading branch information
jonsequitur committed Nov 8, 2023
1 parent 6d91680 commit 6bcc71a
Show file tree
Hide file tree
Showing 6 changed files with 132 additions and 24 deletions.
8 changes: 0 additions & 8 deletions src/dotnet-repl/(Pocket)/Logger/Format.CustomizeLogString.cs
Original file line number Diff line number Diff line change
Expand Up @@ -52,10 +52,6 @@ private static void AppendLogString(this TextWriter writer, KernelCommand comman

switch (command)
{
case ChangeWorkingDirectory changeWorkingDirectory:
writer.Write(changeWorkingDirectory.WorkingDirectory.TruncateIfNeeded());
break;

case DisplayError displayError:
writer.Write(displayError.Message.TruncateIfNeeded());
break;
Expand Down Expand Up @@ -246,10 +242,6 @@ private static void AppendLogString(this TextWriter writer, KernelEvent @event)
writer.Write(')');
break;

case WorkingDirectoryChanged workingDirectoryChanged:
writer.Write(workingDirectoryChanged.WorkingDirectory.TruncateIfNeeded());
break;

// Base event types.
case DisplayEvent displayEvent:
writer.Write('\'');
Expand Down
35 changes: 35 additions & 0 deletions src/dotnet-repl/(Recipes)/DictionaryExtensions.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
using System;
using System.Collections.Generic;

namespace dotnet_repl;

internal static class DictionaryExtensions
{
public static TValue GetOrAdd<TValue>(
this IDictionary<string, object> dictionary,
string key,
Func<string, TValue> getValue)
{
if (!dictionary.TryGetValue(key, out var value))
{
value = getValue(key);
dictionary.Add(key, value!);
}

return (TValue)value!;
}

public static void MergeWith<TKey, TValue>(
this IDictionary<TKey, TValue> target,
IDictionary<TKey, TValue> source,
bool replace = false)
{
foreach (var pair in source)
{
if (replace || !target.ContainsKey(pair.Key))
{
target[pair.Key] = pair.Value;
}
}
}
}
52 changes: 52 additions & 0 deletions src/dotnet-repl/InteractiveDocumentExtensions.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
// Copyright (c) .NET Foundation and contributors. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.

using System;
using System.Collections.Generic;
using Microsoft.DotNet.Interactive.Documents;

namespace dotnet_repl;

internal static class InteractiveDocumentExtensions
{
public static InteractiveDocument WithJupyterMetadata(
this InteractiveDocument document,
string language = "C#")
{
var (kernelName, canonicalLanguageName, langVersion, fileExtension) =
language.ToLowerInvariant() switch
{
"c#" or "csharp" => ("csharp", "C#", "10.0", ".cs"),
"f#" or "fsharp" => ("fsharp", "F#", "6.0", ".fs"),
"powershell" or "pwsh" => ("powershell", "PowerShell", "7.0", ".ps1"),
_ => throw new ArgumentException($"Unrecognized language: {language}")
};

document.Metadata.GetOrAdd("kernelspec", _ => new Dictionary<string, object>())
.MergeWith(new Dictionary<string, object>
{
["display_name"] = $".NET ({canonicalLanguageName})",
["language"] = canonicalLanguageName,
["name"] = $".net-{kernelName}"
});

document.Metadata.GetOrAdd("language_info", _ => new Dictionary<string, object>())
.MergeWith(new Dictionary<string, object>
{
["file_extension"] = fileExtension,
["mimetype"] = $"text/x-{kernelName}",
["name"] = canonicalLanguageName,
["pygments_lexer"] = kernelName,
["version"] = langVersion
});

// `polyglot_notebook` is the canonical metadata key name, but we're still writing `dotnet_interactive` for backwards compatibility
var kernelInfos = document.Metadata.GetOrAdd("polyglot_notebook", _ => new KernelInfoCollection());
document.Metadata["dotnet_interactive"] = kernelInfos;

kernelInfos.DefaultKernelName = kernelName;
kernelInfos.Add(new(kernelName));

return document;
}
}
4 changes: 2 additions & 2 deletions src/dotnet-repl/KernelBuilder.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
using Microsoft.DotNet.Interactive.Commands;
using Microsoft.DotNet.Interactive.CSharp;
using Microsoft.DotNet.Interactive.FSharp;
using Microsoft.DotNet.Interactive.HttpRequest;
using Microsoft.DotNet.Interactive.Http;
using Microsoft.DotNet.Interactive.PowerShell;
using Pocket;

Expand Down Expand Up @@ -100,7 +100,7 @@ public static CompositeKernel CreateKernel(StartupOptions? options = null)
typeof(RequestInput),
inputKernel.Name);

HttpRequestKernelExtension.Load(compositeKernel);
HttpKernelExtension.Load(compositeKernel);

compositeKernel.DefaultKernelName = options.DefaultKernelName;
if (compositeKernel.DefaultKernelName == "fsharp")
Expand Down
37 changes: 35 additions & 2 deletions src/dotnet-repl/KernelExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,10 @@
using System.Threading;
using System.Threading.Tasks;
using Microsoft.DotNet.Interactive;
using Microsoft.DotNet.Interactive.CSharp;
using Microsoft.DotNet.Interactive.Formatting;
using Microsoft.DotNet.Interactive.FSharp;
using Microsoft.DotNet.Interactive.PackageManagement;
using Recipes;
using Spectre.Console;

Expand Down Expand Up @@ -100,7 +103,37 @@ public static T UseHelpMagicCommand<T>(this T kernel)

return kernel;
}


public static CSharpKernel UseNugetDirective(this CSharpKernel kernel, bool forceRestore = false)
{
kernel.UseNugetDirective((k, resolvedPackageReference) =>
{
k.AddAssemblyReferences(resolvedPackageReference
.SelectMany(r => r.AssemblyPaths));
return Task.CompletedTask;
}, forceRestore);

return kernel;
}

public static FSharpKernel UseNugetDirective(this FSharpKernel kernel, bool forceRestore = false)
{
kernel.UseNugetDirective((k, resolvedPackageReference) =>
{
var resolvedAssemblies = resolvedPackageReference
.SelectMany(r => r.AssemblyPaths);

var packageRoots = resolvedPackageReference
.Select(r => r.PackageRoot);

k.AddAssemblyReferencesAndPackageRoots(resolvedAssemblies, packageRoots);

return Task.CompletedTask;
}, forceRestore);

return kernel;
}

public static T UseTableFormattingForEnumerables<T>(this T kernel)
where T : Kernel
{
Expand Down Expand Up @@ -145,7 +178,7 @@ public static T UseTableFormattingForEnumerables<T>(this T kernel)
table.AddRow(values.Select(v => v is null ? "" : Markup.Escape(v.ToDisplayString())).ToArray());
}

table.FormatTo(context);
table.FormatTo(context, PlainTextFormatter.MimeType);

return true;
});
Expand Down
20 changes: 8 additions & 12 deletions src/dotnet-repl/dotnet-repl.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -25,16 +25,16 @@
</ItemGroup>

<ItemGroup>
<PackageReference Include="microsoft.dotnet.interactive" Version="1.0.0-beta.23306.2" />
<PackageReference Include="microsoft.dotnet.interactive.csharp" Version="1.0.0-beta.23306.2" />
<PackageReference Include="Microsoft.DotNet.Interactive.Documents" Version="1.0.0-beta.23306.2" />
<PackageReference Include="microsoft.dotnet.interactive.fsharp" Version="1.0.0-beta.23306.2" />
<PackageReference Include="Microsoft.Dotnet.Interactive.Browser" Version="1.0.0-beta.23306.2" />
<PackageReference Include="Microsoft.DotNet.Interactive.HttpRequest" Version="1.0.0-beta.23306.2" />
<PackageReference Include="microsoft.dotnet.interactive.powershell" Version="1.0.0-beta.23306.2" />
<PackageReference Include="microsoft.dotnet.interactive" Version="1.0.0-beta.23558.1" />
<PackageReference Include="microsoft.dotnet.interactive.csharp" Version="1.0.0-beta.23558.1" />
<PackageReference Include="Microsoft.DotNet.Interactive.Documents" Version="1.0.0-beta.23558.1" />
<PackageReference Include="microsoft.dotnet.interactive.fsharp" Version="1.0.0-beta.23558.1" />
<PackageReference Include="Microsoft.Dotnet.Interactive.Browser" Version="1.0.0-beta.23558.1" />
<PackageReference Include="Microsoft.DotNet.Interactive.Http" Version="1.0.0-beta.23558.1" />
<PackageReference Include="microsoft.dotnet.interactive.packagemanagement" Version="1.0.0-beta.23558.1" />
<PackageReference Include="microsoft.dotnet.interactive.powershell" Version="1.0.0-beta.23558.1" />
<PackageReference Include="radline" Version="0.6.0" />
<PackageReference Include="Serilog.Sinks.RollingFileAlternate" Version="2.0.9" />
<PackageReference Include="system.reactive" Version="5.0.0" />
<PackageReference Include="Spectre.Console" Version="0.47.1-preview.0.4" />
<PackageReference Include="trexlib" Version="1.0.188" />
<PackageReference Include="pocket.disposable" Version="1.1.0">
Expand All @@ -51,8 +51,4 @@
</PackageReference>
</ItemGroup>

<ItemGroup>
<Folder Include="%28Recipes%29\" />
</ItemGroup>

</Project>

0 comments on commit 6bcc71a

Please sign in to comment.