Unhandled exception: System.ArgumentException: An item with the same key has already been added.

Is there an existing issue for this?

[X] I have searched the existing issues

Package ecosystem
NuGet
Package manager version
No response
Language version
No response
Manifest location and content before the Dependabot update
https://github.com/martincostello/alexa-london-travel/commit/1b47c2e5b810a23206718c3904c5c257974ee4c8
dependabot.yml content
dependabot.yml
Updated dependency
None
What you expected to see, versus what you actually saw
Dependencies should have been updated, but instead nothing is updated an an error is logged:
updater | 2024/04/13 09:39:39 ERROR <job_814225123> Block argument of NuGetConfigCredentialHelpers::patch_nuget_config_for_action causes an exception Discovering build files in workspace [/home/dependabot/dependabot-updater/repo].
updater |   No dotnet-tools.json file found.
updater |   Discovered [global.json] file.
updater |   Discovering projects beneath [.].
updater |   No packages.config file found.
updater | Unhandled exception: System.ArgumentException: An item with the same key has already been added. Key: coverlet.msbuild
updater |    at System.Collections.Generic.Dictionary`2.TryInsert(TKey key, TValue value, InsertionBehavior behavior)
updater |    at System.Collections.Generic.Dictionary`2.Add(TKey key, TValue value)
updater |    at System.Linq.Enumerable.ToDictionary[TSource,TKey](IEnumerable`1 source, Func`2 keySelector, IEqualityComparer`1 comparer)
updater |    at NuGetUpdater.Core.Discover.SdkProjectDiscovery.DiscoverAsync(String repoRootPath, String workspacePath, String projectPath, Logger logger) in /opt/nuget/lib/NuGetUpdater/NuGetUpdater.Core/Discover/SdkProjectDiscovery.cs:line 32
updater |    at NuGetUpdater.Core.Discover.DiscoveryWorker.RunForProjectPathsAsync(String repoRootPath, String workspacePath, IEnumerable`1 projectPaths) in /opt/nuget/lib/NuGetUpdater/NuGetUpdater.Core/Discover/DiscoveryWorker.cs:line 160
updater |    at NuGetUpdater.Core.Discover.DiscoveryWorker.RunForDirectoryAsnyc(String repoRootPath, String workspacePath) in /opt/nuget/lib/NuGetUpdater/NuGetUpdater.Core/Discover/DiscoveryWorker.cs:line 125
updater |    at NuGetUpdater.Core.Discover.DiscoveryWorker.RunAsync(String repoRootPath, String workspacePath, String outputPath) in /opt/nuget/lib/NuGetUpdater/NuGetUpdater.Core/Discover/DiscoveryWorker.cs:line 59
updater |    at NuGetUpdater.Cli.Commands.DiscoverCommand.<>c.<<GetCommand>b__4_0>d.MoveNext() in /opt/nuget/lib/NuGetUpdater/NuGetUpdater.Cli/Commands/DiscoverCommand.cs:line 30
updater | --- End of stack trace from previous location ---
updater |    at System.CommandLine.Invocation.AnonymousCommandHandler.InvokeAsync(InvocationContext context)
updater |    at System.CommandLine.Invocation.InvocationPipeline.<>c__DisplayClass4_0.<<BuildInvocationChain>b__0>d.MoveNext()
updater | --- End of stack trace from previous location ---
updater |    at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass17_0.<<UseParseErrorReporting>b__0>d.MoveNext()
updater | --- End of stack trace from previous location ---
updater |    at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass12_0.<<UseHelp>b__0>d.MoveNext()
updater | --- End of stack trace from previous location ---
updater |    at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass22_0.<<UseVersionOption>b__0>d.MoveNext()
updater | --- End of stack trace from previous location ---
updater |    at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass19_0.<<UseTypoCorrections>b__0>d.MoveNext()
updater | --- End of stack trace from previous location ---
updater |    at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c.<<UseSuggestDirective>b__18_0>d.MoveNext()
updater | --- End of stack trace from previous location ---
updater |    at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass16_0.<<UseParseDirective>b__0>d.MoveNext()
updater | --- End of stack trace from previous location ---
updater |    at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c.<<RegisterWithDotnetSuggest>b__5_0>d.MoveNext()
updater | --- End of stack trace from previous location ---
updater |    at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass8_0.<<UseExceptionHandler>b__0>d.MoveNext():
updater | Discovering build files in workspace [/home/dependabot/dependabot-updater/repo].
updater |   No dotnet-tools.json file found.
updater |   Discovered [global.json] file.
updater |   Discovering projects beneath [.].
updater |   No packages.config file found.
updater | Unhandled exception: System.ArgumentException: An item with the same key has already been added. Key: coverlet.msbuild
updater |    at System.Collections.Generic.Dictionary`2.TryInsert(TKey key, TValue value, InsertionBehavior behavior)
updater |    at System.Collections.Generic.Dictionary`2.Add(TKey key, TValue value)
updater |    at System.Linq.Enumerable.ToDictionary[TSource,TKey](IEnumerable`1 source, Func`2 keySelector, IEqualityComparer`1 comparer)
updater |    at NuGetUpdater.Core.Discover.SdkProjectDiscovery.DiscoverAsync(String repoRootPath, String workspacePath, String projectPath, Logger logger) in /opt/nuget/lib/NuGetUpdater/NuGetUpdater.Core/Discover/SdkProjectDiscovery.cs:line 32
updater |    at NuGetUpdater.Core.Discover.DiscoveryWorker.RunForProjectPathsAsync(String repoRootPath, String workspacePath, IEnumerable`1 projectPaths) in /opt/nuget/lib/NuGetUpdater/NuGetUpdater.Core/Discover/DiscoveryWorker.cs:line 160
updater |    at NuGetUpdater.Core.Discover.DiscoveryWorker.RunForDirectoryAsnyc(String repoRootPath, String workspacePath) in /opt/nuget/lib/NuGetUpdater/NuGetUpdater.Core/Discover/DiscoveryWorker.cs:line 125
updater |    at NuGetUpdater.Core.Discover.DiscoveryWorker.RunAsync(String repoRootPath, String workspacePath, String outputPath) in /opt/nuget/lib/NuGetUpdater/NuGetUpdater.Core/Discover/DiscoveryWorker.cs:line 59
updater |    at NuGetUpdater.Cli.Commands.DiscoverCommand.<>c.<<GetCommand>b__4_0>d.MoveNext() in /opt/nuget/lib/NuGetUpdater/NuGetUpdater.Cli/Commands/DiscoverCommand.cs:line 30
updater | --- End of stack trace from previous location ---
updater |    at System.CommandLine.Invocation.AnonymousCommandHandler.InvokeAsync(InvocationContext context)
updater |    at System.CommandLine.Invocation.InvocationPipeline.<>c__DisplayClass4_0.<<BuildInvocationChain>b__0>d.MoveNext()
updater | --- End of stack trace from previous location ---
updater |    at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass17_0.<<UseParseErrorReporting>b__0>d.MoveNext()
updater | --- End of stack trace from previous location ---
updater |    at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass12_0.<<UseHelp>b__0>d.MoveNext()
updater | --- End of stack trace from previous location ---
updater |    at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass22_0.<<UseVersionOption>b__0>d.MoveNext()
updater | --- End of stack trace from previous location ---
updater |    at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass19_0.<<UseTypoCorrections>b__0>d.MoveNext()
updater | --- End of stack trace from previous location ---
updater |    at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c.<<UseSuggestDirective>b__18_0>d.MoveNext()
updater | --- End of stack trace from previous location ---
updater |    at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass16_0.<<UseParseDirective>b__0>d.MoveNext()
updater | --- End of stack trace from previous location ---
updater |    at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c.<<RegisterWithDotnetSuggest>b__5_0>d.MoveNext()
updater | --- End of stack trace from previous location ---
updater |    at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass8_0.<<UseExceptionHandler>b__0>d.MoveNext()
updater |
updater | 2024/04/13 09:39:39 WARN <job_814225123> Please check your configuration as there are groups where no dependencies match:
updater | - awssdk
updater | - opentelemetry
updater | - polly
updater | - xunit
updater |
updater | This can happen if:
updater | - the group's 'pattern' rules are misspelled
updater | - your configuration's 'allow' rules do not permit any of the dependencies that match the group
updater | - the dependencies that match the group rules have been removed from your project

Native package manager behavior
No response
Images of the diff or a link to the PR, issue, or logs
No response
Smallest manifest that reproduces the issue
No response

I am experiencing the same error:

Unhandled exception: System.ArgumentException: An item with the same key has already been added. Key: System.ValueTuple

Full log

proxy | 2024/04/14 19:25:29 proxy starting, commit: cf8623577dad71c128f219df2b27df6de35b909d
proxy | 2024/04/14 19:25:29 Listening (:1080)
updater | 2024-04-14T19:25:29.841515450 [814287777:main:WARN:src/devices/src/legacy/serial.rs:222] Detached the serial input due to peer close/error.
updater | time="2024-04-14T19:25:33Z" level=info msg="guest starting" commit=23d5de4e561c0902c1073f9798c09b5fb9912de9
updater | time="2024-04-14T19:25:33Z" level=info msg="starting job..." fetcher_timeout=10m0s job_id=814287777 updater_timeout=45m0s updater_version=b76786b8dbe56b9b9f20c9c0c623440927bcdf2b-nuget
updater | 2024/04/14 19:25:40 INFO <job_814287777> Starting job processing
updater | 2024/04/14 19:25:40 INFO <job_814287777> Job definition: {"job":{"allowed-updates":[{"dependency-type":"direct","update-type":"all"}],"commit-message-options":{"include-scope":null,"prefix":null,"prefix-development":null},"credentials-metadata":[{"host":"github.com","type":"git_source"}],"debug":null,"dependencies":null,"dependency-group-to-refresh":null,"dependency-groups":[{"name":"xunit","rules":{"patterns":["xunit*"]}}],"existing-group-pull-requests":[],"existing-pull-requests":[[{"dependency-name":"Microsoft.SourceLink.GitHub","dependency-version":"1.1.0"}],[{"dependency-name":"xunit.runner.visualstudio","dependency-version":"2.4.4"}],[{"dependency-name":"AWSSDK.CognitoIdentityProvider","dependency-version":"<IP_ADDRESS>"}],[{"dependency-name":"moq","dependency-version":"4.20.1"}],[{"dependency-name":"moq","dependency-version":"4.20.2"}],[{"dependency-name":"xunit.runner.visualstudio","dependency-version":"2.5.1"}],[{"dependency-name":"xunit","dependency-version":"2.5.1"}],[{"dependency-name":"xunit.runner.console","dependency-version":"2.5.1"}]],"experiments":{"proxy-cached":true,"record-ecosystem-versions":true,"record-update-job-unknown-error":true},"ignore-conditions":[{"dependency-name":"AWSSDK.CognitoIdentityProvider","source":"@dependabot ignore command","update-types":null,"updated-at":"2022-09-15T14:33:19.000Z","version-requirement":"\u003c 3.8, \u003e <IP_ADDRESS>"},{"dependency-name":"moq","source":"@dependabot ignore command","update-types":null,"updated-at":"2023-08-10T14:20:47.000Z","version-requirement":"\u003e 4.20.0"}],"lockfile-only":false,"max-updater-run-time":2700,"package-manager":"nuget","proxy-log-response-body-on-auth-failure":true,"reject-external-code":false,"repo-private":false,"requirements-update-strategy":null,"security-advisories":[],"security-updates-only":false,"source":{"api-endpoint":"https://api.github.com/","branch":null,"directory":"/.","hostname":"github.com","provider":"github","repo":"fuzzzerd/fmdata"},"update-subdependencies":false,"updating-a-pull-request":false,"vendor-dependencies":false}}
updater |
proxy | 2024/04/14 19:25:41 [002] GET https://github.com:443/fuzzzerd/fmdata/info/refs?service=git-upload-pack
proxy | 2024/04/14 19:25:41 [002] * authenticating git server request (host: github.com)
proxy | 2024/04/14 19:25:41 [002] 200 https://github.com:443/fuzzzerd/fmdata/info/refs?service=git-upload-pack
proxy | 2024/04/14 19:25:41 [004] POST https://github.com:443/fuzzzerd/fmdata/git-upload-pack
proxy | 2024/04/14 19:25:41 [004] * authenticating git server request (host: github.com)
proxy | 2024/04/14 19:25:41 [004] 200 https://github.com:443/fuzzzerd/fmdata/git-upload-pack
proxy | 2024/04/14 19:25:41 [006] POST https://github.com:443/fuzzzerd/fmdata/git-upload-pack
proxy | 2024/04/14 19:25:41 [006] * authenticating git server request (host: github.com)
proxy | 2024/04/14 19:25:41 [006] 200 https://github.com:443/fuzzzerd/fmdata/git-upload-pack
updater | 2024/04/14 19:25:41 INFO <job_814287777> Finished job processing
updater | time="2024-04-14T19:25:41Z" level=info msg="task complete" container_id=job-814287777-file-fetcher exit_code=0 job_id=814287777 step=fetcher
updater | 2024/04/14 19:25:48 INFO <job_814287777> Starting job processing
updater | running NuGet discovery:
updater | /opt/nuget/NuGetUpdater/NuGetUpdater.Cli discover --repo-root /home/dependabot/dependabot-updater/repo --workspace / --output /tmp/.dependabot/discovery.json --verbose
updater | 2024/04/14 19:25:49 ERROR <job_814287777> Block argument of NuGetConfigCredentialHelpers::patch_nuget_config_for_action causes an exception Discovering build files in workspace [/home/dependabot/dependabot-updater/repo].
updater |   No dotnet-tools.json file found.
updater |   Discovered [global.json] file.
updater |   Discovering projects beneath [.].
updater |   No packages.config file found.
updater | Unhandled exception: System.ArgumentException: An item with the same key has already been added. Key: System.ValueTuple
updater |    at System.Collections.Generic.Dictionary2.TryInsert(TKey key, TValue value, InsertionBehavior behavior) updater |    at System.Collections.Generic.Dictionary2.Add(TKey key, TValue value)
updater |    at System.Linq.Enumerable.ToDictionary[TSource,TKey](IEnumerable1 source, Func2 keySelector, IEqualityComparer1 comparer) updater |    at NuGetUpdater.Core.Discover.SdkProjectDiscovery.DiscoverAsync(String repoRootPath, String workspacePath, String projectPath, Logger logger) in /opt/nuget/lib/NuGetUpdater/NuGetUpdater.Core/Discover/SdkProjectDiscovery.cs:line 32 updater |    at NuGetUpdater.Core.Discover.DiscoveryWorker.RunForProjectPathsAsync(String repoRootPath, String workspacePath, IEnumerable1 projectPaths) in /opt/nuget/lib/NuGetUpdater/NuGetUpdater.Core/Discover/DiscoveryWorker.cs:line 160
updater |    at NuGetUpdater.Core.Discover.DiscoveryWorker.RunForDirectoryAsnyc(String repoRootPath, String workspacePath) in /opt/nuget/lib/NuGetUpdater/NuGetUpdater.Core/Discover/DiscoveryWorker.cs:line 125
updater |    at NuGetUpdater.Core.Discover.DiscoveryWorker.RunAsync(String repoRootPath, String workspacePath, String outputPath) in /opt/nuget/lib/NuGetUpdater/NuGetUpdater.Core/Discover/DiscoveryWorker.cs:line 59
updater |    at NuGetUpdater.Cli.Commands.DiscoverCommand.<>c.<b__4_0>d.MoveNext() in /opt/nuget/lib/NuGetUpdater/NuGetUpdater.Cli/Commands/DiscoverCommand.cs:line 30
updater | --- End of stack trace from previous location ---
updater |    at System.CommandLine.Invocation.AnonymousCommandHandler.InvokeAsync(InvocationContext context)
updater |    at System.CommandLine.Invocation.InvocationPipeline.<>c__DisplayClass4_0.<b__0>d.MoveNext()
updater | --- End of stack trace from previous location ---
updater |    at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass17_0.<b__0>d.MoveNext()
updater | --- End of stack trace from previous location ---
updater |    at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass12_0.<b__0>d.MoveNext()
updater | --- End of stack trace from previous location ---
updater |    at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass22_0.<b__0>d.MoveNext()
updater | --- End of stack trace from previous location ---
updater |    at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass19_0.<b__0>d.MoveNext()
updater | --- End of stack trace from previous location ---
updater |    at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c.<b__18_0>d.MoveNext()
updater | --- End of stack trace from previous location ---
updater |    at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass16_0.<b__0>d.MoveNext()
updater | --- End of stack trace from previous location ---
updater |    at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c.<b__5_0>d.MoveNext()
updater | --- End of stack trace from previous location ---
updater |    at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass8_0.<b__0>d.MoveNext():
updater | Discovering build files in workspace [/home/dependabot/dependabot-updater/repo].
updater |   No dotnet-tools.json file found.
updater |   Discovered [global.json] file.
updater |   Discovering projects beneath [.].
updater |   No packages.config file found.
updater | Unhandled exception: System.ArgumentException: An item with the same key has already been added. Key: System.ValueTuple
updater |    at System.Collections.Generic.Dictionary2.TryInsert(TKey key, TValue value, InsertionBehavior behavior) updater |    at System.Collections.Generic.Dictionary2.Add(TKey key, TValue value)
updater |    at System.Linq.Enumerable.ToDictionary[TSource,TKey](IEnumerable1 source, Func2 keySelector, IEqualityComparer1 comparer) updater |    at NuGetUpdater.Core.Discover.SdkProjectDiscovery.DiscoverAsync(String repoRootPath, String workspacePath, String projectPath, Logger logger) in /opt/nuget/lib/NuGetUpdater/NuGetUpdater.Core/Discover/SdkProjectDiscovery.cs:line 32 updater |    at NuGetUpdater.Core.Discover.DiscoveryWorker.RunForProjectPathsAsync(String repoRootPath, String workspacePath, IEnumerable1 projectPaths) in /opt/nuget/lib/NuGetUpdater/NuGetUpdater.Core/Discover/DiscoveryWorker.cs:line 160
updater |    at NuGetUpdater.Core.Discover.DiscoveryWorker.RunForDirectoryAsnyc(String repoRootPath, String workspacePath) in /opt/nuget/lib/NuGetUpdater/NuGetUpdater.Core/Discover/DiscoveryWorker.cs:line 125
updater |    at NuGetUpdater.Core.Discover.DiscoveryWorker.RunAsync(String repoRootPath, String workspacePath, String outputPath) in /opt/nuget/lib/NuGetUpdater/NuGetUpdater.Core/Discover/DiscoveryWorker.cs:line 59
updater |    at NuGetUpdater.Cli.Commands.DiscoverCommand.<>c.<b__4_0>d.MoveNext() in /opt/nuget/lib/NuGetUpdater/NuGetUpdater.Cli/Commands/DiscoverCommand.cs:line 30
updater | --- End of stack trace from previous location ---
updater |    at System.CommandLine.Invocation.AnonymousCommandHandler.InvokeAsync(InvocationContext context)
updater |    at System.CommandLine.Invocation.InvocationPipeline.<>c__DisplayClass4_0.<b__0>d.MoveNext()
updater | --- End of stack trace from previous location ---
updater |    at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass17_0.<b__0>d.MoveNext()
updater | --- End of stack trace from previous location ---
updater |    at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass12_0.<b__0>d.MoveNext()
updater | --- End of stack trace from previous location ---
updater |    at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass22_0.<b__0>d.MoveNext()
updater | --- End of stack trace from previous location ---
updater |    at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass19_0.<b__0>d.MoveNext()
updater | --- End of stack trace from previous location ---
updater |    at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c.<b__18_0>d.MoveNext()
updater | --- End of stack trace from previous location ---
updater |    at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass16_0.<b__0>d.MoveNext()
updater | --- End of stack trace from previous location ---
updater |    at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c.<b__5_0>d.MoveNext()
updater | --- End of stack trace from previous location ---
updater |    at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass8_0.<b__0>d.MoveNext()
updater |
updater | 2024/04/14 19:25:49 WARN <job_814287777> Please check your configuration as there are groups where no dependencies match:
updater | - xunit
updater |
updater | This can happen if:
updater | - the group's 'pattern' rules are misspelled
updater | - your configuration's 'allow' rules do not permit any of the dependencies that match the group
updater | - the dependencies that match the group rules have been removed from your project
updater |
updater | 2024/04/14 19:25:50 INFO <job_814287777> Starting grouped update job for fuzzzerd/fmdata
updater | 2024/04/14 19:25:50 INFO <job_814287777> Found 1 group(s).
updater | 2024/04/14 19:25:50 WARN <job_814287777> Skipping update group for 'xunit' as it does not match any allowed dependencies.
updater | 2024/04/14 19:25:50 INFO <job_814287777> Finished job processing
updater | time="2024-04-14T19:25:50Z" level=info msg="task complete" container_id=job-814287777-updater exit_code=0 job_id=814287777 step=updater

The related dependabot.yml: https://github.com/fuzzzerd/fmdata/blob/master/.github/dependabot.yml

I started getting this exception as well:
updater | Restoring `global.json` to `/home/dependabot/dependabot-updater/repo` after MSBuild discovery.
updater | Discovering build files in workspace [/home/dependabot/dependabot-updater/repo].
updater |   No dotnet-tools.json file found.
updater |   Discovered [global.json] file.
updater |   Discovering projects beneath [.].
updater |   No packages.config file found.
updater | Unhandled exception: System.ArgumentException: An item with the same key has already been added. Key: Microsoft.AspNetCore.Mvc.Testing
updater |    at System.Collections.Generic.Dictionary`2.TryInsert(TKey key, TValue value, InsertionBehavior behavior)
updater |    at System.Collections.Generic.Dictionary`2.Add(TKey key, TValue value)
updater |    at System.Linq.Enumerable.ToDictionary[TSource,TKey](IEnumerable`1 source, Func`2 keySelector, IEqualityComparer`1 comparer)
updater |    at NuGetUpdater.Core.Discover.SdkProjectDiscovery.DiscoverAsync(String repoRootPath, String workspacePath, String projectPath, Logger logger) in /opt/nuget/lib/NuGetUpdater/NuGetUpdater.Core/Discover/SdkProjectDiscovery.cs:line 32

And the worst part is that Dependabot still shows the execution as successful/green with the end of the log saying:
updater | 2024/04/20 13:19:44 WARN <job_817375711> Please check your configuration as there are groups where no dependencies match:
updater | - nuget
updater |
updater | This can happen if:
updater | - the group's 'pattern' rules are misspelled
updater | - your configuration's 'allow' rules do not permit any of the dependencies that match the group
updater | - the dependencies that match the group rules have been removed from your project
updater |
updater | 2024/04/20 13:19:45 INFO <job_817375711> Starting grouped update job for edumserrano/dotnet-sdk-extensions
updater | 2024/04/20 13:19:45 INFO <job_817375711> Found 1 group(s).
updater | 2024/04/20 13:19:45 WARN <job_817375711> Skipping update group for 'nuget' as it does not match any allowed dependencies.
updater | 2024/04/20 13:19:45 INFO <job_817375711> Finished job processing
updater | time="2024-04-20T13:19:45Z" level=info msg="task complete" container_id=job-817375711-updater exit_code=0 job_id=817375711 step=updater

I think this is happening for me because I have a Microsoft.NET.Sdk project with the following:
  <ItemGroup Condition=" '$(TargetFramework)' == 'net6.0' ">
    <PackageReference Include="Microsoft.AspNetCore.Mvc.Testing" Version="6.0.26" />
  </ItemGroup>
  <ItemGroup Condition=" '$(TargetFramework)' == 'net7.0' ">
    <PackageReference Include="Microsoft.AspNetCore.Mvc.Testing" Version="7.0.15" />
  </ItemGroup>
  <ItemGroup Condition=" '$(TargetFramework)' == 'net8.0' ">
    <PackageReference Include="Microsoft.AspNetCore.Mvc.Testing" Version="8.0.1" />
  </ItemGroup>

Here's the dependabot file and csproj files in question: DotNet.Sdk.Extensions.Testing.csproj and DotNet.Sdk.Extensions.Testing.Tests.csproj.

Easier to consume log using the new actions support: logs

Here is a more recent dependabot log showing the same error but using the new actions runners for my repo above: https://github.com/fuzzzerd/fmdata/actions/runs/8848899385/job/24299632274

I opened https://github.com/dependabot/dependabot-core/pull/9642 as an attempt to fix https://github.com/dependabot/dependabot-core/issues/9612 but that issue was closed as a dupe of this one, so if that PR could get a review, that would be great.

Fixed in #9642.


ensure the label value is quoted in case the user wants to set this as a boolean

fixes: https://github.com/kiali/kiali/issues/4157

This fix protects against the use-case where the user wants to set the label_selector whose value is a boolean. The label_selector (when used with non-** accessible namespaces) will also be used to label the namespaces. The value must not be a boolean because k8s will not allow you to create labels whose values are boolean (they must be strings). So kiali operator will always quote the value to ensure true or false is wrapped in quotes so they become strings.

To test this PR... build and push the operator image to your cluster. Then run:
helm install \
  --create-namespace \
  --namespace kiali-operator \
  --repo https://kiali.org/helm-charts \
  --set cr.create=true \
  --set allowAdHocKialiImage=true \
  --set image.tag=dev \
  --set image.repo=localhost:5000/kiali/kiali-operator \
  --set cr.spec.deployment.accessible_namespaces[0]=default \
  --set cr.spec.api.namespaces.label_selector=kiali-enabled=true \
  kiali-operator \
  kiali-operator

You can confirm this is fixed if the "default" namespace has a label "kiali-enabled" whose value is "true" (specifically, it will be a string that is quoted ):
$ kubectl get ns default -o yaml
apiVersion: v1
kind: Namespace
metadata:
  labels:
    kiali-enabled: "true"
  name: default
...

accessible-namespace-test molecule test passes. we can merge.


PYIC-3531: Use CRI api key for connection

Proposed changes
What changed
Use CRI api key for connection
Why did it change
The API key used to authenticate with the CRIs is stored in secrets
manager. This adds the ability to have an API key per CRI connection.
The new path mirrors how we structure the SSM config, but the value is
store in secrets manager.
The current API keys have been copied to the new paths in staging,
integration and prod. Effectively connections/main/ has been added to
each API key, ready for when this code is used.
Issue tracking

PYIC-3531

@Wynndow looks like this is slowly slipping out of date - do you think it's worth bringing up to date and merging, or shall we close this for now (can always keep the branch if it might be useful)?
As I understand it, this might have been needed for the passport CRI update, but actually wasn't necessary in the end?

@Joe-Edwards-GDS I think it's probably worth getting it merged. It would mean we're consistent in our approach to CRIs. The API keys are also already in the correct position in secrets manager, so it should just be a case of rebasing this and getting it in (with some double checking on those API keys).
I'll get back up to speed with core.


Issue with encode_clonotypes

Hi, I found that if I just choose one patient, for example, 'AP1', adata = sc.read(path_gex) selected_patients = ['AP1'] adata = adata[adata.obs['patient_id'].isin(selected_patients)].copy(), then I will get the error at the step Preprocessing.preprocessing_pipeline(adata,                                       clonotype_key_added='clonotype',                                       airr_name='junction_aa',                                      cond_vars=['patient_id'])
The detail is as follows:

TypeError                                 Traceback (most recent call last)
Cell In[7], line 7
5 print(len(adata))
6 from mvtcr.utils_preprocessing import Preprocessing
----> 7 Preprocessing.preprocessing_pipeline(adata,
8                                      clonotype_key_added='clonotype',
9                                      airr_name='junction_aa',
10                                      cond_vars=['patient_id'])
File ~/anaconda3/envs/mvTCR/lib/python3.10/site-packages/mvtcr/utils_preprocessing.py:372, in Preprocessing.preprocessing_pipeline(adata, clonotype_key_added, airr_name, cond_vars)
368 	@staticmethod
369 	def preprocessing_pipeline(adata, clonotype_key_added, airr_name, cond_vars):
371 		if Preprocessing.check_if_valid_adata(adata):
--> 372 			Preprocessing.encode_clonotypes(adata, key_added=clonotype_key_added)
373 			Preprocessing.encode_tcr(adata,
374 							 	  	 airr_name=airr_name,
375 									 alpha_label_key='alpha_seq',
376                          			 alpha_length_key='alpha_len',
377                          		     beta_label_key='beta_seq',
378                          			 beta_length_key='beta_len')
380 			for var in cond_vars:
File ~/anaconda3/envs/mvTCR/lib/python3.10/site-packages/mvtcr/utils_preprocessing.py:115, in check_if_input_is_mudata..wrapper(mudata_gex_key, mudata_airr_key, *args, **kwargs)
113 	train, test = func(*args, **kwargs)
114 else:
--> 115 	func(*args, **kwargs)
116 #====================
117 #updating mudata
118 if input_is_mu and func_name in ("encode_clonotypes", "encode_tcr", "encode_conditional_var"):
File ~/anaconda3/envs/mvTCR/lib/python3.10/site-packages/mvtcr/utils_preprocessing.py:186, in Preprocessing.encode_clonotypes(adata, key_added)
184 ir.tl.chain_qc(adata)
185 ir.pp.ir_dist(adata)
--> 186 ir.tl.define_clonotypes(adata, key_added=key_added, receptor_arms='all', dual_ir='primary_only')
File ~/anaconda3/envs/mvTCR/lib/python3.10/site-packages/scirpy/tl/_clonotypes.py:396, in define_clonotypes(adata, key_added, distance_key, airr_mod, airr_key, chain_idx_key, **kwargs)
391 logging.info(
392         "ir_dist for sequence='nt' and metric='identity' not found. " "Computing with default parameters."
393     )  # type: ignore
394     ir_dist(params, metric="identity", sequence="nt", key_added=distance_key)
--> 396 return define_clonotype_clusters(
397     params,
398     key_added=key_added,
399     sequence="nt",
400     metric="identity",
401     partitions="connected",
402     **kwargs,
403 )
File ~/anaconda3/envs/mvTCR/lib/python3.10/site-packages/scirpy/tl/_clonotypes.py:296, in define_clonotype_clusters(adata, sequence, metric, receptor_arms, dual_ir, same_v_gene, within_group, key_added, partitions, resolution, n_iterations, distance_key, inplace, n_jobs, chunksize, airr_mod, airr_key, chain_idx_key)
273 within_group, distance_key, key_added = _validate_parameters(
274     params.adata,
275     None,
(...)
282     key_added,
283 )
285 ctn = ClonotypeNeighbors(
286     params,
287     receptor_arms=receptor_arms,  # type: ignore
(...)
294     chunksize=chunksize,
295 )
--> 296 clonotype_dist = ctn.compute_distances()
297 g = igraph_from_sparse_matrix(clonotype_dist, matrix_type="distance")
299 if partitions == "leiden":
File ~/anaconda3/envs/mvTCR/lib/python3.10/site-packages/scirpy/ir_dist/_clonotype_neighbors.py:231, in ClonotypeNeighbors.compute_distances(self)
219 logging.info(
220         "NB: Computation happens in chunks. The progressbar only advances " "when a chunk has finished. "
221     )  # type: ignore
223     dist_rows = process_map(
224         self._dist_for_clonotype,
225         range(n_clonotypes),
(...)
228         tqdm_class=tqdm,
229     )
--> 231 dist = sp.vstack(dist_rows)
232 dist.eliminate_zeros()
233 logging.hint("Done computing clonotype x clonotype distances. ", time=start)
File ~/anaconda3/envs/mvTCR/lib/python3.10/site-packages/scipy/sparse/_construct.py:781, in vstack(blocks, format, dtype)
779     return _block([[b] for b in blocks], format, dtype)
780 else:
--> 781     return _block([[b] for b in blocks], format, dtype, return_spmatrix=True)

The tutorial ran successfully when I specified the selected_patients as `['AP1', 'CV0062']'. Therefore, I am wondering if I must run mvTCR on the adata containing multiple patient labels?

Hi,
thanks for pointing that out! It seems like this issue is within scirpy. The error occurs when the dataset for computing clonotypes is too small. Specifically, under this condition:
if self.n_jobs == 1 or n_clonotypes <= 2 * self.chunksize
If this condition is true, scirpy calculates distances for clonotypes in a single process and returns them as a generator object, which cannot be stacked by scipy.sparse.vstack. This results in the error: TypeError: iteration over a 0-d array.
However, when the dataset (n_clonotypes) is large enough and the condition is false, distances are computed using multi-processing and returned as a list, which can be properly stacked by scipy.sparse.vstack.
If your research depends on it you can replace line 214-217 with
dist_rows = list(ctn._dist_for_clonotype(i) for i in range(n_clonotypes)).
This resolved the error for me.
If it's okay with you, I'd like to post this on scirpy's github, so they can fix it.
Cheers,
Jan

Hi, the newest version mvtcr <IP_ADDRESS> should have fixed this issue. Let us know if there are any other problems!
Cheers

It works! Thanks for the speedy fix @leuschjanphilipp !


[3860] Handle undergrad routes not having degrees

Context
https://trello.com/c/rR3r5N1Z/3860-s-handle-undergrad-routes-not-having-degrees
Changes proposed in this pull request

Change Dqt::Params::TrnRequest to not include qualification params if there's no degree

Important business
~* Does this PR introduce any PII fields that need to be overwritten or deleted in db/scripts/sanitise.sql?~
~* Does this PR change the database schema? If so, have you updated the config/analytics.yml file and considered whether you need to send 'import_entity' events?~

 [S] Handle undergrad routes not having degrees


refactor: Reduce dependencies in LocalRunnerTestBase.h

Differential Revision: D66667591

This seems to contain the changes from #11715 and #11713, should those be closed?

This seems to contain the changes from #11715 and #11713, should those be closed?

This is expected as this is a stacked diff.

I see, that's not really visible on the OSS side, just looks like 3 similar PRs ^^

I see, that's not really visible on the OSS side, just looks like 3 similar PRs ^^

True. You can see the individual PRs in the "commits" tab, but it is not super clear.


Add pry as a dependancy of this gem

Upgrading to the latest version (1.1.7), I was getting the following error after running letsencrypt_webfaction
[prlloyd@web520 ~]$ letsencrypt_webfaction --help
/usr/local/lib/ruby22/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require': cannot load such file -- pry (LoadError)
	from /usr/local/lib/ruby22/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'
	from /home/prlloyd/.letsencrypt/gems/gems/letsencrypt_webfaction-1.1.7/lib/letsencrypt_webfaction/domain_validator.rb:2:in `<top (required)>'
	from /usr/local/lib/ruby22/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'
	from /usr/local/lib/ruby22/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'
	from /home/prlloyd/.letsencrypt/gems/gems/letsencrypt_webfaction-1.1.7/lib/letsencrypt_webfaction/application.rb:5:in `<top (required)>'
	from /usr/local/lib/ruby22/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'
	from /usr/local/lib/ruby22/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'
	from /home/prlloyd/.letsencrypt/gems/gems/letsencrypt_webfaction-1.1.7/exe/letsencrypt_webfaction:3:in `<top (required)>'
	from /home/prlloyd/.letsencrypt/gems/bin/letsencrypt_webfaction:23:in `load'
	from /home/prlloyd/.letsencrypt/gems/bin/letsencrypt_webfaction:23:in `<main>'

I was able to fix this by manually installing pry (gem2.2 install pry). Shouldn’t pry be added as a dependancy of the letsencrypt-webfaction gem?

Pry is a debugging tool which I accidentally left in… I've removed it and pushed a hotfix release 1.1.8 without the dependency.
Please let me know if 1.1.8 is still an issue.
Thanks!

Ah, that was quick! Yup, all works as planned, thanks. And thanks for putting this tool together—saves me so much hassle… well, at least once every three months :-)

My pleasure! Glad it is useful for you.


Project example not working on Android emulator. Blank page and message: updateAcquireFence: Did not find frame

When running the project example I got and blank page and this message many times:
D/EGL_emulation( 8873): app_time_stats: avg=18.91ms min=5.21ms max=37.62ms count=53
E/FrameEvents( 8873): updateAcquireFence: Did not find frame.
D/EGL_emulation( 8873): app_time_stats: avg=29.84ms min=14.96ms max=52.92ms count=34
E/FrameEvents( 8873): updateAcquireFence: Did not find frame.
D/EGL_emulation( 8873): app_time_stats: avg=10.52ms min=4.34ms max=28.60ms count=58
E/FrameEvents( 8873): updateAcquireFence: Did not find frame.
D/EGL_emulation( 8873): app_time_stats: avg=17.24ms min=8.81ms max=34.38ms count=58
E/FrameEvents( 8873): updateAcquireFence: Did not find frame.
D/EGL_emulation( 8873): app_time_stats: avg=32.82ms min=16.50ms max=59.61ms count=31
E/FrameEvents( 8873): updateAcquireFence: Did not find frame.
Expected behavior
See the example model running on Android.
Screenshots

Android version: 13

After some tests, I realized project example only works on real device, but not on emulator. Why? Well, this means I need to use a real device from now on whenever I wanna test a 3D model.


PostgreSQL: access module assignes -1 to a foreign key

On database create with PostgreSQL I have a problem to resolve:
INFO in dbquery_postgresql [/home/vagrant/.virtualenvs/invenio2/src/invenio/invenio/legacy/dbquery_postgresql.py:114]:
INSERT INTO "accROLE_accACTION_accARGUMENT" ("id_accROLE",
                "id_accACTION" , "id_accARGUMENT", argumentlistid)
                VALUES (%s, %s, -1, -1)
--------------------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/vagrant/.virtualenvs/invenio2/bin/webaccessadmin", line 9, in <module>
    load_entry_point('invenio==2.1.0.dev20150305', 'console_scripts', 'webaccessadmin')()
  File "/home/vagrant/.virtualenvs/invenio2/src/invenio/invenio/base/helpers.py", line 50, in decorated_func
    result = f(*args, **kwargs)
  File "/home/vagrant/.virtualenvs/invenio2/src/invenio/invenio/modules/access/scripts/webaccessadmin.py", line 111, in main
    DEF_DEMO_ROLES, DEF_DEMO_AUTHS)
  File "/home/vagrant/.virtualenvs/invenio2/src/invenio/invenio/modules/access/control.py", line 1913, in acc_add_default_settings
    **args)
  File "/home/vagrant/.virtualenvs/invenio2/src/invenio/invenio/modules/access/control.py", line 541, in acc_add_authorization
    VALUES (%s, %s, -1, -1) """, (id_role, id_action))
  File "/home/vagrant/.virtualenvs/invenio2/src/invenio/invenio/legacy/dbquery_postgresql.py", line 118, in run_sql
    cur = engine.execute(sql, (param, ))
  File "/home/vagrant/.virtualenvs/invenio2/local/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 1986, in execute
    return connection.execute(statement, *multiparams, **params)
  File "/home/vagrant/.virtualenvs/invenio2/local/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 906, in execute
    return self._execute_text(object, multiparams, params)
  File "/home/vagrant/.virtualenvs/invenio2/local/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 1054, in _execute_text
    statement, parameters
  File "/home/vagrant/.virtualenvs/invenio2/local/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 1146, in _execute_context
    context)
  File "/home/vagrant/.virtualenvs/invenio2/local/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 1339, in _handle_dbapi_exception
    exc_info
  File "/home/vagrant/.virtualenvs/invenio2/local/lib/python2.7/site-packages/sqlalchemy/util/compat.py", line 199, in raise_from_cause
    reraise(type(exception), exception, tb=exc_tb)
  File "/home/vagrant/.virtualenvs/invenio2/local/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 1139, in _execute_context
    context)
  File "/home/vagrant/.virtualenvs/invenio2/local/lib/python2.7/site-packages/sqlalchemy/engine/default.py", line 442, in do_execute
    cursor.execute(statement, parameters)
sqlalchemy.exc.IntegrityError: (psycopg2.IntegrityError) insert or update on table "accROLE_accACTION_accARGUMENT" violates foreign key constraint "accROLE_accACTION_accARGUMENT_id_accARGUMENT_fkey"
DETAIL:  Key (id_accARGUMENT)=(-1) is not present in table "accARGUMENT".
 [SQL: 'INSERT INTO "accROLE_accACTION_accARGUMENT" ("id_accROLE",\n                "id_accACTION" , "id_accARGUMENT", argumentlistid)\n                VALUES (%s, %s, -1, -1) '] [parameters: (6, 51)]
ERROR: failed execution of /home/vagrant/.virtualenvs/invenio2/bin/webaccessadmin -u admin -c -a -D

Access module try to put -1 on column id_accARGUMENT of the table accROLE_accACTION_accARGUMENT.
But it's a column that contains a Foreign Key!
So, PostgreSQL refuses to execute the query... T_T
I have 2 possibility to fix the problem:

Remove the Foreign Key from column id_accARGUMENT (easy way)
Find and substitute -1 with None in invenio/modules/access/control.py (it's full of run_sql)

Which it's the best way?
p.s. considering that I think access module requires a heavy refactoring.
cc @jirikuncar

Considering there is no immediate plans to refactor access, @hachreak please look at fixing SQL queries (even at the price of removing foreign key!) so that the work on PostgreSQL can move forward.

I am not sure if accROLE_accACTION_accARGUMENT.id_accARGUMENT should a foreign key at all. id_accARGUMENT identifies a possible group or rows within accARGUMENT having the same id (hence the id is not even a primary key). Additionally it has the special value -1 to mean no argument.
So we could simply drop the foreign key property, or transform the code so that whenever -1 is used it is substitute with NULL.


Realtime stats db tablet view

This change is

I'm just reviewing the non-Go parts since those should go away when you rebase after merging the other pull request.
Some similar organizational comments as on David's pull request. I guess you followed the conventions he started?

Reviewed 20 of 27 files at r1.
Review status: 20 of 27 files reviewed at latest revision, 10 unresolved discussions, some commit checks failed.

web/vtctld2/src/app/app.routes.ts, line 6 [r1] (raw file):

import { SchemaComponent } from './schema/schema.component';
import { TopoBrowserComponent } from './topo/topo-browser.component';
import { TabletViewComponent } from './status/tabletView/tabletView.component';

Let's keep components only one level nested. Also the View is already implied by the fact that it's a component. To distinguish from the dashboard tablet page, we can call this TabletStatusComponent. So this would become:
import { TabletStatusComponent } from './status/tablet.component';

web/vtctld2/src/app/app.routes.ts, line 15 [r1] (raw file):

  { path: 'topo', component: TopoBrowserComponent },

  { path: 'tablet', component: TabletViewComponent },

To distinguish from the dashboard tablet page, we should call this path: 'tabletStatus',.
On the other hand, once you finish your design doc, it may be that everything lives under path: 'status' since they all share the same basic component structure, centered around the heatmap.

web/vtctld2/src/app/shared/breadcrumbs.component.html, line 10 [r1] (raw file):

        <button md-button [routerLink]="route" [queryParams]="crumb.queryParams">

We should keep these as  rather than <button> since they result in changes to the URL in the address bar.
Instead of duplicating the button for the highlighted case, you can go back to the original single  tag, but just add a conditional class binding.
The last piece is that since all you need is to know which crumb is last, you can have ngFor tell you that by changing the loop to:

Then the link would look like this:
 {{crumb.name | uppercase}}

Now you don't need isSelected() anymore.

web/vtctld2/src/app/shared/breadcrumbs.component.ts, line 31 [r1] (raw file):

  @Input() separator = '|';

  isSelected( name: string ) {

Not needed if my suggestion in breadcrumbs.component.html works.

web/vtctld2/src/app/shared/tabletObject/realtimeStats.ts, line 1 [r1] (raw file):

export class RealtimeStats {

I think this and the service should go in the /api/ folder. They don't need to be in their own subfolders within /api/.

web/vtctld2/src/app/shared/tabletObject/realtimeStats.ts, line 7 [r1] (raw file):

  HealthError: string; /*"" if no error */

  constructor(cpy: any) {

I don't think you need this constructor. If you need a clone, you can use Object.assign({}, obj) right?

web/vtctld2/src/app/shared/tabletObject/tablet.ts, line 11 [r1] (raw file):

  stats: RealtimeStats;

  constructor(cell:string, id:string, keyspaceName:string, shardName:string, type:string, stats:RealtimeStats) {

You shouldn't need this constructor.

web/vtctld2/src/app/shared/tabletService/target.service.ts, line 1 [r1] (raw file):

import { Injectable } from '@angular/core';

All the services that access the server-side API should go in /api/ (no need for each to have its own subfolder), along with the data structures they return.

web/vtctld2/src/app/status/tabletView/tabletView.component.ts, line 27 [r1] (raw file):

})

export class TabletViewComponent implements OnInit{

TabletComponent already implies it's a View.

web/vtctld2/src/app/status/tabletView/tabletView.component.ts, line 132 [r1] (raw file):

  getLink (tab: Tablet) {
    return "https://viceroy.corp.google.com/youtube_vitess/vttablet?dbtype=" +

Let's leave out these links for now. We'll need to make them pluggable later since they're specific to the environment.

Comments from Reviewable

Review status: 20 of 27 files reviewed at latest revision, 10 unresolved discussions, some commit checks failed.

web/vtctld2/src/app/app.routes.ts, line 6 [r1] (raw file):
Previously, enisoc (Anthony Yeh) wrote…
> Let's keep components only one level nested. Also the `View` is already implied by the fact that it's a component. To distinguish from the dashboard tablet page, we can call this `TabletStatusComponent`. So this would become:
>
> ```js
> import { TabletStatusComponent } from './status/tablet.component';
> ```

Done.

web/vtctld2/src/app/app.routes.ts, line 15 [r1] (raw file):
Previously, enisoc (Anthony Yeh) wrote…
> To distinguish from the dashboard tablet page, we should call this `path: 'tabletStatus',`.
>
> On the other hand, once you finish your design doc, it may be that everything lives under `path: 'status'` since they all share the same basic component structure, centered around the heatmap.

Done.

web/vtctld2/src/app/shared/breadcrumbs.component.html, line 10 [r1] (raw file):
Previously, enisoc (Anthony Yeh) wrote…
> We should keep these as `` rather than `` since they result in changes to the URL in the address bar.
>
> Instead of duplicating the button for the highlighted case, you can go back to the original single `` tag, but just add a conditional [class binding](https://angular.io/docs/ts/latest/guide/template-syntax.html#!#ngClass).
>
> The last piece is that since all you need is to know which crumb is last, you can have `ngFor` tell you that by changing the loop to:
>
> ```html
>
> ```
>
> Then the link would look like this:
>
> ```html
>  {{crumb.name | uppercase}}
> ```
>
> Now you don't need `isSelected()` anymore.

The above worked!

web/vtctld2/src/app/shared/breadcrumbs.component.ts, line 31 [r1] (raw file):
Previously, enisoc (Anthony Yeh) wrote…
> Not needed if my suggestion in breadcrumbs.component.html works.

Done.

web/vtctld2/src/app/shared/tabletObject/realtimeStats.ts, line 1 [r1] (raw file):
Previously, enisoc (Anthony Yeh) wrote…
> I think this and the service should go in the `/api/` folder. They don't need to be in their own subfolders within `/api/`.

Done.

web/vtctld2/src/app/shared/tabletObject/realtimeStats.ts, line 7 [r1] (raw file):
Previously, enisoc (Anthony Yeh) wrote…
> I don't think you need this constructor. If you need a clone, you can use `Object.assign({}, obj)` right?

Done.

web/vtctld2/src/app/shared/tabletObject/tablet.ts, line 11 [r1] (raw file):
Previously, enisoc (Anthony Yeh) wrote…
> You shouldn't need this constructor.

Done.

web/vtctld2/src/app/shared/tabletService/target.service.ts, line 1 [r1] (raw file):
Previously, enisoc (Anthony Yeh) wrote…
> All the services that access the server-side API should go in `/api/` (no need for each to have its own subfolder), along with the data structures they return.

Done.

web/vtctld2/src/app/status/tabletView/tabletView.component.ts, line 27 [r1] (raw file):
Previously, enisoc (Anthony Yeh) wrote…
> `TabletComponent` already implies it's a View.

Done.

web/vtctld2/src/app/status/tabletView/tabletView.component.ts, line 132 [r1] (raw file):
Previously, enisoc (Anthony Yeh) wrote…
> Let's leave out these links for now. We'll need to make them pluggable later since they're specific to the environment.

Done.

Comments from Reviewable

We have closed this in favor of this pull request:
https://github.com/youtube/vitess/pull/1894


Added GridEditor to interactively define boundaries and grids

This PR adds the GridEditor class which now incorporates much of the recent feedback:
Core features

Add, move and delete nodes. First node indicated with a special marker (triangle by default)

Toggle node polarity (beta) with the Tap Tool. Generate Mesh button indicates when mesh generation is possible. Hide button to hide current grid/mesh.

Easy insertion of new nodes into edges selected with the Tap Tool (which can then be easily moved):

Pythonic access of boundary as it is drawn and the grid once it is generated:

Easy adjustment of node size and edge width via the GUI. Easy regeneration with different x- and y-resolutions:

Easy selection between a predefined set of tile sources in the background:

Easy use of a custom element (e.g a different tile source) as the background:

Download boundary as GeoJSON:

Capture serializable editor state and restore from it (can also be restored from a geopandas boundary DataFrame):

Set a focus function and update mesh accordingly:

Highly customizable styling of boundary, nodes and start marker:

Can be served as a panel dashboard using the serveable() method.

Note that I removed the closed button as 1) keeping the boundary open is actually a very helpful indicator of what is going on 2) the boundary is always closed implicitly by definition 3) no one seemed to really need this behavior 4) given the previous points it wasn't worth the complexity and potential confusion it added to the code.
TODO

[ ] Clean up and commit notebook demonstrating usage
[X] Wrap grid generation in try/except for the rare instances where the shape returned isn't what is expected. (issue was something else but this might be still needed if grid generation is found to fail)
[ ] Fix issue where initializing background to None causes problems.

Wishlist
These are improvements I would like to make though I may not have time to do them immediately (and some of these are general OSS improvement suggestions)

[ ] Support insertion of nodes into multiple selected edges (should be fairly easy)
[ ] Select both new edges on either side of node edge insertions.
[ ] Maybe we would like some way of defining the neutral boundary edges with bendy splines.
[ ] Group the GUI elements nicely - I will file an issue on panel suggesting accordions based on parameter precedence ranges.

@jlstevens This is shaping up so well. Kudos.

Here is the panel issue https://github.com/holoviz/panel/issues/1632 that describes the mechanism I would like to implement my last wishlist item ('Group the GUI elements nicely')

Now that panel, param and holoviews have new releases on conda-forge, I've now built a conda package for hologrid which I've made available on my personal channel until it becomes a conda-forge feedstock as well:
conda install -c conda-forge -c jlstevens hologrid

I've tested this with Python 3.7 and 3.8 though I note that it takes a lot longer to solve for 3.8 than 3.7.

I have now address to TODO items above and ticked off the wishlist items (only to mark this PR as done...I'll turn those items into issues instead). The documentation notebook has now been added and I've implemented various improvements suggested by Jim.
Note that this PR now removes the notebook with the initial spline prototype: the last commit with that notebook is 57f8302.
@jbednar I think this is ready to merge at which point we could implement a few more minor improvements or cut a new release.


Set up automatic link checking

htmlproofer?

I've been loving https://github.com/lycheeverse/lychee/, which has a convenient and schedulable Github Action. Want me to throw in a PR?

Thanks for mentioning Lychee. I've added to my list to check out when I'm back from vacation.
I should have closed this issue a long time ago, since I've long since been checking links for this and other websites of mine with cron jobs. linkchecker has done the job.


Showing only weekdays

Hi,
Love this control so far, great work.
Can you please tell me if it's possible to configure the calendar to show only the weekdays, and not weekends?
Thanks.
Steve

Hi @dackjaniels2001 ,
It's possible . Try this code; Here you can add special dates if it is SAT or SUN and set your specoal dates are "Un selectable"
for (DateTime i = MinimumDate; i < MinimumDate.AddMonths(2); i = i.AddDays(1))
{
if ((i.DayOfWeek == DayOfWeek.Saturday) || (i.DayOfWeek == DayOfWeek.Sunday))
{
SpecDate.Add(new SpecialDate(i)
{
TextColor = Color.Gray,
Selectable = false,
FontSize = 10,
BackgroundPattern = new BackgroundPattern(1)
{
Pattern = new List
{
new Pattern{ WidthPercent = 1f, HightPercent = 1f, Color = Color.Transparent,Text = "", TextSize =11, TextAlign=TextAlign.CenterBottom}
}
}
});
}
}


experimental raw support tracker

Initial issue: #21. Tracking experimental getItemRaw/setItemRaw support added in https://github.com/unjs/unstorage/pull/141. Please comment any particular issues and ideas with the current implementation.
Experimental limitations:

Default serializer is only supported in environments supporting Buffer. (Node.js and Nitro/Nuxt server in any environment)
Cannot combine string and raw operations on the same key

Default serializer only operates on base64: strings without json support
This makes issues with overlay and http backends when translating string operations

Types are wide to any since we don't enforce any return value from drivers implementation.
We might support stream responses too

@pi0 Does this need some refractor?

Was attempting to store CryptoKey type, but got an error as it didn't satisfy allowed types (believe some of the listed ones were ArrayBuffer, UTF...)

Hello,
Since this topic is also flagged as a discussion, I have a short question. My goal: I would like to cache/store WASM models and binaries in indexedDB. Since these models are intended for client-side use only and my NuxtJS Composable is also only called on the client-side, I have some questions about setItemRaw.
I have compared both setItemRaw() and set() from idb-keyval.
With set(), I can easily store my Uint8Array in indexedDB on the client-side without any issues.
However, I get the error "ReferenceError: Buffer is not defined" due to the serializer in setItemRaw, which is understandable because Buffer is not available on the client-side.
My question is whether we can simply add set and get from indexedDB to our createStorage with the indexedDB-Driver to support these functions on the client-side, or why serialization is necessary at all (shouldn't developers be responsible for serializing data if it can't be stored in indexedDB in the desired format)? The term setItemRaw implies that the data is appended without any additional processing, so perhaps the wording isn't ideal.
I am relatively new to this topic and unfortunately do not have very deep knowledge about it. I just wanted to share my observation and ask how I could store my Uint8Array with unstorage and the indexeddb driver without having to convert it to base64, which can be quite performance-intensive for a model of around > 350MB in size.
Attached is a short NuxtJS composable that I tried:
import { createStorage } from "unstorage";
import indexedDbDriver from "unstorage/drivers/indexedb";
import { get, set , createStore  } from 'idb-keyval';

export const useModelStore = async () => {

  const store = createStorage({
    driver: indexedDbDriver({ base: "app", dbName: 'model-store', storeName: 'model' }),
  })
  const idbKeyvalAdapter = createStore('keyval_model-store', 'keyval_models');

  const setModel = async (key) => {

    store.setItemRaw(key, new Uint8Array([1, 2, 3])); // ReferenceError: Buffer is not defined

    set(key, new Uint8Array([1, 2, 3]), idbKeyvalAdapter); // works
  }

  setModel("Modelname")
  ...
}

<script setup lang="ts">
onMounted(async () => {

  const { setModel  } = await useModelStore ();
  ...

For now, I will use idb-keyval for these models. I would greatly appreciate any tips on how to avoid this redundant dependency and how to solve the entire thing using unstorage. Thank you very much!


No module named BobcatParser

I'm trying to run the following code from your tutorials website, but I am unable to install BobcatParser. I am working in a Colab environment. Is there a dependency that I may be missing?
from lambeq import BobcatParser

parser = BobcatParser(root_cats=('NP', 'N'), verbose='text')

raw_train_diagrams = parser.sentences2diagrams(train_data, suppress_exceptions=True)
raw_val_diagrams = parser.sentences2diagrams(val_data, suppress_exceptions=True)

Hello,
the problem you see refers to the fact that !pip install lambeq on Google Colab installs lambeq 0.1.2, which is an old version.  You can check this by running
!pip list | grep lambeq

To install latest lambeq, update python first
!sudo apt-get update -y
!sudo apt-get install python3.9

Then change alternatives
#change alternatives
!sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.7 1
!sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.9 2

and run
!sudo apt-get install python3.9-distutils && wget https://bootstrap.pypa.io/get-pip.py && python get-pip.py

Eventually, check you python version is 3.9.X
!python --version

If everything went smooth, install lambeq
!pip install lambeq==0.2.6

Hi, as mentioned by @mspronesti, if you can't find Bobcat in lambeq it means you are using a version < 0.2.0. Please upgrade to the latest version.

@mspronesti Thank you for your prompt answer! Really appreciate it
I did update my python version, as per this discussion. I also tried your solution of updating the version of lambeq and I still get the same error:
ModuleNotFoundError: No module named 'lambeq'

Anyway making things work on colab might be quite painful when you need packages requiring python 3.8 or above. If the above steps don't work for you, consider having a look here

Maybe I should switch to using Jupyter notebook instead. The circuit visualisations don't appear in my native terminal or Visual Studio Code. Also, the link you posted here redirects me to my own question. Not sure if that was intentional, but a good example of unintented recursion xD

@alt-shreya My bad, I forgot the URL in the parentheses. Just fixed It, hope It helps!

@mspronesti tried this fix, but I got this error:
ModuleNotFoundError: No module named 'pyngrok'
which other environments can I run this in?

Hi @mspronesti,
There are some problems with google colab due to the preinstalled python version (3.7). It is not very straight forward to update the interpreter version of colab, therefore I suggest that host your own runtime (preferably using jupyter notebook), where you have full control over the python version.

@Thommy257 , I tried running this on Jupyter notebook as well. I get the same error and I am not sure how to proceed.

Can you check the python version?

lambeq>=0.2.0 requires python>=3.8

it's python 3.9 :(

Hi @alt-shreya,
I think you skipped one or two steps, that's why it doesn't work for you. Please follow the steps below and let me know if they works for you:
Step 0
Create a new notebook (on your machine, not on Colab) and edit its metadata with your favorite editor, e.g. vim, as follows:
"kernelspec": {
  "display_name": "Python 3.9",
  "name": "py39",
}

Now save it and upload it to Colab.
Step 1
Copy the following code in the first cell of your notebook and run it
!wget -O mini.sh https://repo.anaconda.com/miniconda/Miniconda3-py39_4.9.2-Linux-x86_64.sh
!chmod +x mini.sh
!bash ./mini.sh -b -f -p /usr/local

!conda install -q -y jupyter
!conda install -q -y google-colab -c conda-forge
!python -m ipykernel install --name "py39" --user

now refresh your browser window (Ctrl + R).
Step 2
Without rewriting the first cell (actually you can even delete it now), run the following one
import sys
sys.version

If the output is
3.9.1 (default, Dec 11 2020, 14:32:07) \n[GCC 7.3.0]

then you successfully updated the kernel on Google Colab.
Step 3
Finally test lambeq works
!pip install lambeq

import lambeq
print(lambeq.__version__)
from lambeq import BobcatParser

parser = BobcatParser()
diagram = parser.sentence2diagram('This is a test sentence')
diagram.draw()

@mspronesti thank you for the clear walkthrough!
This soultion works and I was able to train a classical case using the tutorial!

@alt-shreya Glad it worked!

Thank you very much @mspronesti for the support!


No exported member 'RouteConfig'

Version
4.0.0-alpha.12
Reproduction link
https://codesandbox.io/s/vue-router-v4-reproduction-x9xb4?file=/main.ts
Steps to reproduce
Follow the guidelines for starting a new Vue 3 project, and include vue-router (updating to next)
What is expected?
The standard new project to build
What is actually happening?
typescript compiling fails

If RouteConfig is no longer there, should it be mentioned somewhere? And what would the path be for the vue-cli-plugin-vue-next to be able to scaffold the starter project successfully with typescript?

@josh-hemphill ,
Thanks for support ... Also may I have a hint on how to create a reproduction Link ...
Also wondering ... Many new Vue 3 declaration : RouteRecord, RouteRecordRaw have been populated.
Specs and examples are lacking too much ... Hard to break into Vue 3 now.
Never use Vue 2 and want to break directly in vue 3, but vue 2 examples failed to execute ...


Update documentation for Custom Vision v3.2 Training API

Data Plane API - Pull Request
Update documentation for Custom Vision v3.2 Training API
API Info: The Basics
Most of the information about your service should be captured in the issue that serves as your API Spec engagement record.

Link to API Spec engagement record issue:

Is this review for (select one):

[ ] a private preview
[ ] a public preview
[ ] GA release

Change Scope
This section will help us focus on the specific parts of your API that are new or have been modified. Please share a link to the design document for the new APIs, a link to the previous API Spec document (if applicable), and the root paths that have been updated.

Design Document:
Previous API Spec Doc:
Updated paths:

Viewing API changes
For convenient view of the API changes made by this PR, refer to the URLs provided in the table
in the Generated ApiView comment added to this PR. You can use ApiView to show API versions diff.
Suppressing failures
If one or multiple validation error/warning suppression(s) is detected in your PR, please follow the
Swagger-Suppression-Process
to get approval.
❔Got questions? Need additional info?? We are here to help!

 Contact us!
The Azure API Review Board is dedicated to helping you create amazing APIs. You can read about our mission and learn more about our process on our wiki.

💬 Teams Channel
💌 email

Click here for links to tools, specs, guidelines & other good stuff
Tooling

Open API validation tools were run on this PR. Go here to see how to fix errors
Spectral Linting
Open API Hub

Guidelines & Specifications

Azure REST API Guidelines
OpenAPI Style Guidelines
Azure Breaking Change Policy

Helpful Links

Schedule a data plane REST API spec review

Checks stuck in `queued` state?
If the PR CI checks appear to be stuck in `queued` state, please add a comment with contents `/azp run`.
This should result in a new comment denoting a `PR validation pipeline` has started and the checks should be updated after few minutes.

Hi @mikekistler , could you please approve breaking changes for this PR as well? I just fixed the lint errors.

/pr RequestMerge

The LintDiff warnings look benign to me in this case


fix(deps): update dependency @aws-amplify/ui-react to v5

This PR contains the following updates:

Package
Type
Update
Change
Pending

@aws-amplify/ui-react
dependencies
major
^4.6.4 -> ^5.0.0
5.1.1

Release Notes

aws-amplify/amplify-ui (@aws-amplify/ui-react)
v5.1.0
Compare Source
Minor Changes

#4288 30624bd4f Thanks @dbanksdesign! - New component: Breadcrumbs!
A composable component for displaying breadcrumb navigation
<Breadcrumbs
  items={[
    {
      href: '/',
      label: 'Home',
    },
    {
      href: '/category',
      label: 'Category',
    },
    {
      href: '/category/type',
      label: 'Type',
    },
  ]}
/>

<Breadcrumbs.Container>
  {breadcrumbs.map(({ href, label }, idx) => {
    const isCurrent = breadcrumbs.length - 1 === idx;
    return (
      <Breadcrumbs.Item>
        <Breadcrumbs.Link isCurrent={isCurrent} href={href}>
          {label}
        </Breadcrumbs.Link>
        {isCurrent ? null : <Breadcrumbs.Separator>/</Breadcrumbs.Separator>}
      </Breadcrumbs.Item>
    );
  })}
</Breadcrumbs.Container>

Patch Changes

#4321 d0d9ac2de Thanks @thaddmt! - chore: set amplify dependencies to be ^ instead of >=

Updated dependencies [d0d9ac2de, 30624bd4f]:

<EMAIL_ADDRESS><EMAIL_ADDRESS>

v5.0.7
Compare Source
Patch Changes

#4301 e7e75874d Thanks @hbuchel! - fix(react/ui): update paddingInlineEnd and icon placement on small and large Select primitives with related tokens for theming.

Updated dependencies [e7e75874d, 0417bd41c]:

<EMAIL_ADDRESS><EMAIL_ADDRESS>

v5.0.6
Compare Source
Patch Changes

#4271 6b71ec46c Thanks @dbanksdesign! - fix(primitives): fix border color token for SwitchField thumb

Updated dependencies [6b71ec46c]:

<EMAIL_ADDRESS><EMAIL_ADDRESS>

v5.0.5
Compare Source
Patch Changes

#4227 d3ee05415 Thanks @dbanksdesign! - fix(react-native): border widths, spacing, font sizes, opacities in the theme don't throw runtime errors.
These are all valid in a theme now:
const theme: Theme = {
  tokens: {
    borderWidths: {
      small: '4',
      medium: '1rem',
      large: 6,
    },
    opacities: {
      '10': '0.2',
    },
    space: {
      small: 4,
      medium: '6',
      large: '{space.small.value}',
    },
    fontSizes: {
      small: '1rem',
    },
  },
};

#3646 165a8abbd Thanks @Rogue-striker! - Allow PasswordField visibility toggle icon border color to indicate error

#4216 f0b32d275 Thanks @zchenwei! - chore: mark internal used props as deprecated.

#4235 c3a418d8d Thanks @dbanksdesign! - fix(authenticator-react): force new password header and footer
Adding Header and Footer components to ForceNewPassword screen

#4262 aea82ff1b Thanks @zchenwei! - feat(ui-react-storage): Add a new connected component StorageImage.
Example:
import { StorageImage } from '@aws-amplify/ui-react-storage';

<StorageImage alt="StorageImage" imgKey="image.jpg" accessLevel="public" />;

Updated dependencies [78fdfd6c8, d3ee05415, 165a8abbd, 13098b36a, 37e490d39, 6d14bf3f3, aea82ff1b]:

<EMAIL_ADDRESS><EMAIL_ADDRESS>

v5.0.4
Compare Source
Patch Changes

#4200 572730f7b Thanks @zchenwei! - fix: fix implicit any type inference for event handlers' event parameter.

v5.0.3
Compare Source
Patch Changes

#4161 b0e16e78c Thanks @judygab! - Add borderColor, borderWidth, and borderStyle style props

#4168 d930e2ed1 Thanks @calebpollman! - chore(RWA/RNA): deprecate passwordSettings prop

Updated dependencies [b0e16e78c, d930e2ed1]:

<EMAIL_ADDRESS><EMAIL_ADDRESS>

v5.0.2
Compare Source
Patch Changes

Updated dependencies [23180b470, 3cecd0765]:

<EMAIL_ADDRESS><EMAIL_ADDRESS>

v5.0.1
Compare Source
Patch Changes

#4099 be856b057 Thanks @calebpollman! - fix(react): omit ReactNode from Collection children prop

v5.0.0
Compare Source
Major Changes

#4048 c19278b0b Thanks @calebpollman! - Breaking Changes:

<EMAIL_ADDRESS>removes the to prop on Link component and instead have it extended from the underlying rendered third-party Link if it contains a to prop (PR).

<EMAIL_ADDRESS>strictly types the View component and updates all component types to include the underlying rendered HTML element's attributes (PR).

v4.6.5
Compare Source
Patch Changes

#4325 4da3e2595 Thanks @thaddmt! - fix(react): update 4.x version to use ^ version of aws-amplify

Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.

[ ] If you want to rebase/retry this PR, check this box

This PR has been generated by Renovate Bot.

Thanks for the PR!
Any successful deployments (not always required) will be available below.
Frontend available
Once merged, code will be promoted and handed off to following workflow run.
Main Merge Workflow

Edited/Blocked Notification
Renovate will not automatically rebase this PR, because it does not recognize the last commit author and assumes somebody else may have edited the PR.
You can manually request rebase by checking the rebase/retry box above.
⚠ Warning: custom changes will be lost.


ITE: drivers/serial: add console input expired

If there are no console messages input at an interval of 15
seconds, the system will be able to enter suspend mode.
Signed-off-by: Tim Lin<EMAIL_ADDRESS>

Hi @keith-zephyr @brockus-zephyr ,
Any comments will be much appreciated.


Make RDS interface work with us-east-1 region

At the moment moto does not work with us-east-1 because boto endpoint does not specify that region: https://github.com/boto/boto/blob/e271ff09364ea18d9d8b6f4d63d6b0ac6cbc9b75/boto/endpoints.json#L285
This pull request fixes that issue by changing the RDS regex pattern to have the region as an optional value.

Thanks!


Added prev Next text option to modus pagination

Type of change

[x] New feature (non-breaking change which adds functionality)

How Has This Been Tested?
Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce. Please also list any relevant details for your test configuration
Checklist

[x] My code follows the style guidelines of this project
[x] I have performed a self-review of my own code
[x] I have commented my code, particularly in hard-to-understand areas
[x] My changes generate no new warnings
[x] Any dependent changes have been merged and published in downstream modules
[x] I have checked my code and corrected any misspellings

Please remember to fill out the Description and How Has This Been Tested? sections on future PRs? It'll help reviewers with less context of the issue

@ryan-henness-trimble since all the comments are fixed, am merging the PR now but the changes are not going to main branch so if you have any more comments, we can still work on it.

@ryan-henness-trimble since all the comments are fixed, am merging the PR now but the changes are not going to main branch so if you have any more comments, we can still work on it.

Added some minor comments 👍

@ryan-henness-trimble since all the comments are fixed, am merging the PR now but the changes are not going to main branch so if you have any more comments, we can still work on it.

Added some minor comments 👍

hey @ryan-henness-trimble your comments are fixed in PR


[student page] make it fast again

in some cases, the student page has become slow compared to old times
this is not easily reproducible since the reload of a slow student is usually quite fast

Closing as not done, too difficult to locate the issue.


Key Error

Not sure why I'm getting this. The keys are correct, i even regenerated them and still get this message.

Apologies for the delay.
Thanks, @GrantSheehan. Also see this section in the README: https://github.com/koenrh/delete-tweets#configure-your-environment
@shaneswoll Let me know if this does not solve the issue you are facing.


Harmful site?

I've had fruition going on dudethatserin.com and codinghelp.site for a while.
Right now dudethatserin.com still works but something happened to codinghelp.site Edge is showing it may be a dangerous site but the URL shows it is for Notion.

Link for yourself: https://codinghelp.site/4c97396d18034520bf450b7d7485a4c4

Hey did you found the issue? I got my website also detected as phising.
https://tellstories.id

Duplicate of #177; see my comment there. (You probably need to take this up with Google, not fruitionsite project.)


No assembly and BOM generated

HI, I test on a basic project to generate JLCPCB files. I success to have my folder in the right folder but after chossing all my component, I don't have any files in assembly.

Do you get any output in the message box at the bottom when you click the generate fabrication files button?

Hi,
In get output for gerber only. Non mentionof assembly as in your small video

Can you share your board file so I can test it?

I invite you on a repo on github, so that you can see what I get from your plugin.
I just installed your plugin with the url, open the layout, click on the button of the plugin.
Then I update the library, choose the component I found on JLC's library, some are missing but clicking on Make production files, i get only the gerber.

I've just downloaded your repo, opend the project and started the plugin. then clicked generate fabrication files and it worked 🤔

Oh ...
Is there anything i need to download additionnal to your plugin ? Is this better to download the zip and then  paste it in the plugin folder ?

Ideally you install it via PCM as explained here: https://github.com/Bouni/kicad-jlcpcb-tools#installation-

I tried too.
Nothing more is needed ?
I think I add problem to export a pos file in csv. Can this be related ? A problem on my setup with csv ?
Télécharger Outlook pour Androidhttps://aka.ms/AAb9ysg

From: bouni @.>
Sent: Wednesday, March 9, 2022 1:13:37 PM
To: Bouni/kicad-jlcpcb-tools @.>
Cc: thote1276 @.>; Author @.>
Subject: Re: [Bouni/kicad-jlcpcb-tools] No assembly and BOM generated (Issue #145)
Ideally you install it via PCM as explained here: https://github.com/Bouni/kicad-jlcpcb-tools#installation-
—
Reply to this email directly, view it on GitHubhttps://github.com/Bouni/kicad-jlcpcb-tools/issues/145#issuecomment-1062859264, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AQ7AOEDX4Y4IAO3JGI7GOQTU7CIXDANCNFSM5QHYW62Q.
Triage notifications on the go with GitHub Mobile for iOShttps://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Androidhttps://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.
You are receiving this because you authored the thread.Message ID: @.***>

No, if you click the button everything should be done automatically ....
Can you post a picture of the folder structure you get with the files

Hi,
On my side i tried reinstalling Kicad and your library using PCM.

I'm stuck there

Maybe which Kicad are you using ? 6.0.0 ?

From your screenshot I see that you're not runnig a version installed via PCM, it says [ dev ] in the bar at the top.
I run 6.0.2 and 6.99 and it works in both for me ...
Please open the console

before you start the plugin, then try to generate the files again. Post the output you get in the console output window.
Maybe that helps me figuring out whats going on here.

Hi, it seems to work on one of my computer with the console open.
Today I got the error, database is locked on the first computer.

Hi,
I think the final word was that the antivirus software was blocking one of your script I think !


ModuleNotFoundError: No module named 'pages.'

When trying to run the demo code of Chapter08-MultiPageDashApp I am getting this error.
This error however doesn't generates if I include only histogram.py file in /pages folder.
As I add other files like bar_charts.py this error appears.
Detail print out:
(base) c:\my_drive\python\dashboards\plotlydash\flaskdash1>python app.py
Traceback (most recent call last):
  File "app.py", line 6, in <module>
    app = dash.Dash(
  File "C:\Users\hp\anaconda3\lib\site-packages\dash\dash.py", line 420, in __init__
    plugin.plug(self)
  File "C:\Users\hp\anaconda3\lib\site-packages\dash_labs\plugins\pages.py", line 327, in plug
    _import_layouts_from_pages(pages_folder)
  File "C:\Users\hp\anaconda3\lib\site-packages\dash_labs\plugins\pages.py", line 301, in _import_layouts_from_pages
    page_module = importlib.import_module(f"pages.{page_filename}")
  File "C:\Users\hp\anaconda3\lib\importlib\__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
  File "<frozen importlib._bootstrap>", line 991, in _find_and_load
  File "<frozen importlib._bootstrap>", line 961, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
  File "<frozen importlib._bootstrap>", line 991, in _find_and_load
  File "<frozen importlib._bootstrap>", line 961, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
  File "<frozen importlib._bootstrap>", line 991, in _find_and_load
  File "<frozen importlib._bootstrap>", line 973, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'pages.'

This issue is resolved after upgrading dash to 2.5 and following suggestions in earlier issue#112

However Now I am getting ' Duplicate callback Outputs' for every callback although there is no duplicate Output exits.
Error:
In the callback for output(s):
histograms-graph.figure
Output 0 (histograms-graph.figure) is already in use.
Any given output can only have one callback that sets it.
To resolve this situation, try combining these into
one callback function, distinguishing the trigger
by using dash.callback_context if necessary.

histogram.py file:
from dash import Dash, dcc, html, Input, Output, callback
from dash import register_page
import plotly.express as px
import numpy as np
register_page(name)
np.random.seed(2020)
layout = html.Div(
[
dcc.Graph(id="istograms-graph"),
html.P("Mean:"),
dcc.Slider(
id="histograms-mean", min=-3, max=3, value=0, marks={-3: "-3", 3: "3"}
),
html.P("Standard Deviation:"),
dcc.Slider(id="histograms-std", min=1, max=3, value=1, marks={1: "1", 3: "3"}),
]
)
@callback(
Output("histograms-graph", "figure"),
Input("histograms-mean", "value"),
Input("histograms-std", "value"),
)
def display_color(mean, std):
data = np.random.normal(mean, std, size=500)
fig = px.histogram(data, nbins=30, range_x=[-10, 10])
return fig

import dash
import dash_bootstrap_components as dbc
app = dash.Dash(
name, use_pages=True, external_stylesheets=[dbc.themes.BOOTSTRAP]
)
navbar = dbc.NavbarSimple(
dbc.DropdownMenu(
[
dbc.DropdownMenuItem(page["name"], href=page["path"])
for page in dash.page_registry.values()
if page["module"] != "pages.not_found_404"
],
nav=True,
label="More Pages",
),
brand="Multi Page App Plugin Demo",
color="primary",
dark=True,
className="mb-2",
)
app.layout = dbc.Container(
[navbar, dash.page_container],
fluid=True,
)
if name == "main":
app.run_server(debug=True)

HI @charmeem
Are you on Windows?  If so, this is a bug and will be fixed in 2.5.1.  The new release with the patch is coming soon.

Yes I am using Windows.
Will wait for the new release, thanks.

Hello,
I have just tried after upgrading to 2.5.1 , still seeing the same errors however with one improvement.
I can see the pages in the navigation bar which was not the case before.
Secondly when I add a page 'heatmaps.py' in the /pages folder following error appears:
Exception
Exception: modules ['pages..ipynb_checkpoints.heatmaps-checkpoint', 'pages.heatmaps'] have duplicate paths
Traceback (most recent call last)
File "C:\Users\hp\anaconda3\Lib\site-packages\flask\app.py", line 2464, in call
return self.wsgi_app(environ, start_response)
File "C:\Users\hp\anaconda3\Lib\site-packages\flask\app.py", line 2450, in wsgi_app
response = self.handle_exception(e)
File "C:\Users\hp\anaconda3\Lib\site-packages\flask\app.py", line 1867, in handle_exception
reraise(exc_type, exc_value, tb)
File "C:\Users\hp\anaconda3\Lib\site-packages\flask_compat.py", line 39, in reraise
raise value
File "C:\Users\hp\anaconda3\Lib\site-packages\flask\app.py", line 2447, in wsgi_app
response = self.full_dispatch_request()
File "C:\Users\hp\anaconda3\Lib\site-packages\flask\app.py", line 1945, in full_dispatch_request
self.try_trigger_before_first_request_functions()
File "C:\Users\hp\anaconda3\Lib\site-packages\flask\app.py", line 1993, in try_trigger_before_first_request_functions
func()
File "C:\Users\hp\anaconda3\Lib\site-packages\dash\dash.py", line 2268, in router
_validate.check_for_duplicate_pathnames(_pages.PAGE_REGISTRY)
File "C:\Users\hp\anaconda3\Lib\site-packages\dash_validate.py", line 435, in check_for_duplicate_pathnames
raise Exception(f"modules {modules} have duplicate paths")

:thinking:    So, you see these errors when you run one of the apps from the github repo I shared the link to previously?

can you share the code you are running?  It looks like there might be conflicts between "Histogram" and "Histogram-checkpoint" for example

wait

Yes I am running codes in multi_page_example_1

histogram.py
from dash import Dash, dcc, html, Input, Output, callback
from dash import register_page
import plotly.express as px
import numpy as np
register_page(name)
np.random.seed(2020)
layout = html.Div(
[
html.P("Mean:"),
dcc.Slider(
id="histograms-mean", min=-3, max=3, value=0, marks={-3: "-3", 3: "3"}
),
html.P("Standard Deviation:"),
dcc.Slider(id="histograms-std", min=1, max=3, value=1, marks={1: "1", 3: "3"}),
dcc.Graph(id="histograms-graph"),
]
)
@callback(
Output("histograms-graph", "figure"),
Input("histograms-mean", "value"),
Input("histograms-std", "value")
)
def display_color(mean, std):
data = np.random.normal(mean, std, size=500)
fig = px.histogram(data, nbins=30, range_x=[-10, 10])
return fig

app.py
import dash
import dash_bootstrap_components as dbc

app = dash.Dash(
    __name__, use_pages=True, external_stylesheets=[dbc.themes.BOOTSTRAP]
)

navbar = dbc.NavbarSimple(
    dbc.DropdownMenu(
        [
            dbc.DropdownMenuItem(page["name"], href=page["path"])
            for page in dash.page_registry.values()
            if page["module"] != "pages.not_found_404"
        ],
        nav=True,
        label="More Pages",
    ),
    brand="Multi Page App Plugin Demo",
    color="primary",
    dark=True,
    className="mb-2",
)

app.layout = dbc.Container(
    [navbar, dash.page_container],
    fluid=True,
)

if __name__ == "__main__":
    app.run_server(debug=True)

This looks odd:
Exception: modules ['pages..ipynb_checkpoints.heatmaps-checkpoint', 'pages.heatmaps'] have duplicate paths

histogram.py
from dash import Dash, dcc, html, Input, Output, callback
from dash import register_page
import plotly.express as px
import numpy as np

register_page(__name__)

np.random.seed(2020)

layout = html.Div(
    [
        html.P("Mean:"),
        dcc.Slider(
            id="histograms-mean", min=-3, max=3, value=0, marks={-3: "-3", 3: "3"}
        ),
        html.P("Standard Deviation:"),
        dcc.Slider(id="histograms-std", min=1, max=3, value=1, marks={1: "1", 3: "3"}),
        dcc.Graph(id="histograms-graph"),
    ]
)

@callback(
    Output("histograms-graph", "figure"),
    Input("histograms-mean", "value"),
    Input("histograms-std", "value")
)
def display_color(mean, std):

    data = np.random.normal(mean, std, size=500)
    fig = px.histogram(data, nbins=30, range_x=[-10, 10])
    return fig

It is now working.
ipynb_checkpoints was the directory automaticaly created by Jupyter note book. After removing that the code is wording fine.
Let me test with heatmaps.py page as well.

oh, great - thanks!  Now we'll know what to do for the next person who might have a similar issue :+1:

Can I close the case?

OK, appreciate the work you are doing designing this wonderful product, keep it up !

Hi. Please am trying to deploy my link to render. But am getting errors:  dash.exceptions.NoLayoutException: The layout was None at the time that run_server was called. Make sure to set the layout attribute of your application before running the server


current progress

use os.path.join
use devcontainer
add a better saving method for APs
any other changes are auto format

This generally works but it has the disadvantage that it produces a ragged list of lists (ragged meaning, that the lists have different sizes depending on the number of spikes. The issue with this is that when we convert this to an array the datatype of the array is object rather than a numerical type, which makes it annoying to deal with.
The way I am doing it now is that I have one array that contains the unit that emitted the spike and another array with the spike time.
So I would suggest something along those lines: curr_shelve['populations'] = [[(i, ts) for i, timestamps in enumerate(p.get_timestamps()) for ts in timestamps] for p in self.populations]
But I would have to actually run the code in the lab to know if the details are right.


Bad typespec when list of directories is "bad"

FileSystem.start_link(dirs: nil) #=> :ignore

https://github.com/falood/file_system/blob/d1f3dbbe111f41c50b841fb9ebf206567cfb4bb2/lib/file_system.ex#L36

Thanks @kwando


How to change header view controller 'Height' ?

On viewDidLoad, I set headerViewHeight value, it works.
Issue
I need to change headerViewController height by text length.
@subinspathilettu Can you help me in this ?

Use this Option :
headerViewHeight = 200


[Migration ]Add config, doc and two hello world samples

This PR is adding these things:

.config/sample-config.json: Added configuration for the new Excel and Word Hello World Task Pane Add-ins, including metadata like id, title, shortDescription, and paths to assets.
ADD_SAMPLE_INTO_DEV_KIT.md: Added a new markdown file with detailed instructions on how to add samples to the Office Add-ins Development Kit's sample gallery.
CONTRIBUTING.md: Updated contributing guidelines to include a link to the new documentation for adding samples to the Office Add-ins Development Kit.
Excel hello world js add-in sample
Word hello world js add-in sample

Adding two new hello world samples because the existing one is not based on webpack, so that it can't be launched via the Preview button via launch.json file.

Thanks for splitting up the PR @hermanwenhe. On the previous thread we had raised the discussion of these Hello World samples versus the existing Hello World samples in the repo. Let me summarize the points here (@davidchesnut to add anything I missed):

It's confusing for developers to have multiple Excel or Word "Hello World" samples.
The goal of this type of sample is to show the minimum amount of code needed to achieve an add-in. Here, we have webpack and all the npm build accessories.
What is the difference between these samples and the output from yo office/dev kit templates? It seems like they are the same. If so, what is the purpose of having two paths to create the same starting experience?

Thanks for splitting up the PR @hermanwenhe. On the previous thread we had raised the discussion of these Hello World samples versus the existing Hello World samples in the repo. Let me summarize the points here (@davidchesnut to add anything I missed):

It's confusing for developers to have multiple Excel or Word "Hello World" samples.
The goal of this type of sample is to show the minimum amount of code needed to achieve an add-in. Here, we have webpack and all the npm build accessories.
What is the difference between these samples and the output from yo office/dev kit templates? It seems like they are the same. If so, what is the purpose of having two paths to create the same starting experience?

I agree on the goal of the current "Hello World" samples, as they can work even without a dev environment.
And I think we align on we should have samples for beginners in Dev Kit because exploring samples seems to be a main path for many developers when they learn a new technique. The webpack and npm are included only to make the sample runnable, otherwise developers can not start debugging in the tool, and that's also why it looks the same as templates.
My proposal is to keep the current Hello World ones and change the beginner samples in the Dev Kit to "basic" or something to avoid confusion. Also the sample gallery technically supports launching a sample from a weblink, like a quickstart or tutorial doc. So maybe we can align the sample content with those?

My proposal is to keep the current Hello World ones and change the beginner samples in the Dev Kit to "basic" or something to avoid confusion. Also the sample gallery technically supports launching a sample from a weblink, like a quickstart or tutorial doc. So maybe we can align the sample content with those?

Thanks @MingjiaLiu1995! I think this sounds reasonable.
Let me ask a related question: do we want these versions of the starter dev kit samples because customers feel overwhelmed by the choices in the templates? What if instead of the dev kit exposing all the "JS/TS" and "jQuery/React" questions, what if it just asked "Excel, Word, etc"? The dev kit tool can be more opinionated than yo office. This would help customers who want to use the tool but don't know enough about frameworks (or have an opinion) to make quick progress. It also helps clearly separate samples from templates.
Thoughts on that?

Thanks for splitting up the PR @hermanwenhe. On the previous thread we had raised the discussion of these Hello World samples versus the existing Hello World samples in the repo. Let me summarize the points here (@davidchesnut to add anything I missed):

It's confusing for developers to have multiple Excel or Word "Hello World" samples.
The goal of this type of sample is to show the minimum amount of code needed to achieve an add-in. Here, we have webpack and all the npm build accessories.
What is the difference between these samples and the output from yo office/dev kit templates? It seems like they are the same. If so, what is the purpose of having two paths to create the same starting experience?

I agree on the goal of the current "Hello World" samples, as they can work even without a dev environment.
And I think we align on we should have samples for beginners in Dev Kit because exploring samples seems to be a main path for many developers when they learn a new technique. The webpack and npm are included only to make the sample runnable, otherwise developers can not start debugging in the tool, and that's also why it looks the same as templates.
My proposal is to keep the current Hello World ones and change the beginner samples in the Dev Kit to "basic" or something to avoid confusion. Also the sample gallery technically supports launching a sample from a weblink, like a quickstart or tutorial doc. So maybe we can align the sample content with those?

Dev Kit currently only supports samples with webpack and launch.json in .vscode folder because our "Preview Your Office Add-in(F5)" button depends on these files. I'm OK with adding the jQuery hello world sample into sample gallery, just to clarify that we might need to do some testing and adaption work before merge the sample into main branch.

My proposal is to keep the current Hello World ones and change the beginner samples in the Dev Kit to "basic" or something to avoid confusion. Also the sample gallery techndeically supports launching a sample from a weblink, like a quickstart or tutorial doc. So maybe we can align the sample content with those?

Thanks @MingjiaLiu1995! I think this sounds reasonable.
Let me ask a related question: do we want these versions of the starter dev kit samples because customers feel overwhelmed by the choices in the templates? What if instead of the dev kit exposing all the "JS/TS" and "jQuery/React" questions, what if it just asked "Excel, Word, etc"? The dev kit tool can be more opinionated than yo office. This would help customers who want to use the tool but don't know enough about frameworks (or have an opinion) to make quick progress. It also helps clearly separate samples from templates.
Thoughts on that?

I envision the beginner samples only demonstrate the "default" options, while the templates are the full list of options we provide. According to usage data, W/X/P-js-taskpane templates are the most popular ones in dev kit - either these templates are the most popular ones, or many users just select the first option when they don't know much or have an opinion. (I'll share the data with you offline)

@AlexJerabek Another related question -  could we restart the discussion on updating the quickstart doc, like adding the 1-click-to-launch-sample experience? We are planning to GA the Dev Kit in Nov, so maybe it's right time we start the conversation on document updates for GA.

I envision the beginner samples only demonstrate the "default" options, while the templates are the full list of options we provide. According to usage data, W/X/P-js-taskpane templates have the highest usage - either these templates are the most popular ones, or many users just select the first option when they don't know much or have an opinion. (I'll share the data with you offline)

Okay, let's proceed with either the JS or TS versions of the WXP templates as the "default". I'm neutral about choosing JS over TS; we don't favor either in the other samples. I think TS is what we'd recommend, but JS is the more used option. Your call on how prescriptive we want to be. (If I had to pick, I'd pick TS since it's a superset and anyone's JS code would still work.)
My only other question is whether this default template should be a sample or an option in the template path:

Or maybe marking options as "default" instead:

Just some thoughts. If we think having the starter template as a sample is the right course of action, that's fine.

@AlexJerabek Another related question - could we restart the discussion on updating the quickstart doc, like adding the 1-click-to-launch-sample experience? We are planning to GA the Dev Kit at the end of Nov, so maybe it's right time we start the conversation on document updates for GA.

Absolutely. We separated the VS option from the default quick starts. We can add in a tab for the dev kit option once it GAs.

Okay, let's proceed with either the JS or TS versions of the WXP templates as the "default". I'm neutral about choosing JS over TS; we don't favor either in the other samples. I think TS is what we'd recommend, but JS is the more used option. Your call on how prescriptive we want to be. (If I had to pick, I'd pick TS since it's a superset and anyone's JS code would still work.)

I agree this is difficult, but I'll vote JS for the beginner project if I have to for the following reasons. But I'm happy to discuss if we have other evidence or opinion!

JS still seems to be more well-received among developers at least at this moment, according to the 2024 StackOverflow survey. (but TS is arousing interest in the recent year)
TS should be a little bit more advanced than JS as far as I know?

It would be nice to add the sample.json files to list these samples in the M365 community sample gallery. See https://github.com/OfficeDev/Office-Add-in-samples/blob/main/Samples/blazor-add-in/word-blazor-add-in/assets/sample.json as an example format.

A simple Word task pane Add-in using JavaScript to help you get started with the Office Add-ins Development Kit.

Done. Pls check. Notice that the url in the config is referring the main branch, so the url is not valid until this sample merged from dev to main.


Swift 4.2 and Xcode 10 compatibility

Any plans to update ObjectMapper dependency to 3.3.0 version?
Currently this library doesn't compile on Swift 4.2

Yes, please. Much needed. Just need to bump ObjectMapper version in podspec.

I just released a new version with the updated dependency


[BUG] Compile error: ambiguous reference to overloaded definition

Describe the bug
With commit dedc8d7 getting a compilation error:
[ERROR] [Error] /home/rou/src/spark-rapids-tools/core/src/main/scala/org/apache/spark/sql/rapids/tool/util/SortedJProperties.scala:58: ambiguous reference to overloaded definition,
both method putAll in class Properties of type (x$1: java.util.Map[_, _])Unit
and  method putAll in class Hashtable of type (x$1: java.util.Map[_ <: Object, _ <: Object])Unit
match argument types (org.apache.spark.sql.rapids.tool.util.SortedJProperties)

Steps/Code to reproduce bug
Sync to dedc8d7, in the core directory, do a mvn clean test.
Expected behavior
Should compile.
Environment details (please complete the following information)
Using JDK 11.
Additional context
$ java --version
openjdk 11.0.21 2023-10-17
OpenJDK Runtime Environment (build 11.0.21+9-post-Ubuntu-0ubuntu122.04)
OpenJDK 64-Bit Server VM (build 11.0.21+9-post-Ubuntu-0ubuntu122.04, mixed mode, sharing)

@amahussein

Thanks @rongou !
We should add JDK 11 to .github/workflows/mvn-verify-check.yml to test the commits against different java versions.

This looks to be a bug in Scala 2.12 running with JDK 11 https://github.com/scala/bug/issues/10418

What's the supported jdk version?

What's the supported jdk version?

JDK-8.0