Specify branch / commit instead of using HEAD for diff

I'm busy thinking about doing a pull request for this, but just need some general advice.
Is this a desirable feature? I may have missed something that already allows for this. It's very useful for me to be able to run pronto without checking out a branch first.
I'm thinking this would be the parameter:
    method_option :source_commit,
                  type: :string,
                  default: 'HEAD',
                  aliases: '-s',
                  desc: 'Source commit for the diff'

Then I could pass something like "origin/my_new_feature".

It's very useful for me to be able to run pronto without checking out a branch first.

@orangethunder we don't want to bloat Pronto too much. So before considering adding this feature, could you tell more about the use case? 🙂


[2d] Ditch bazel in dotmesh builds

Reasons to keep bazel

it's quick

Reasons to get rid of bazel

error messages are opaque so debugging it can be a pain
it's different to the tooling elsewhere wherein you can mostly just run docker build -t componentname . to get a build
we never managed to get rid of docker completely so it's not as quick as we'd like
builds don't work on the prod server (probably a good thing since it forces us to use a tagged build...)

Would like to talk about this in an engineering meeting maybe. Since we already have a build_in_container_without_bazel which is quicker than the old docker script, it shouldn't be too much work stripping it out where it's used.

TODO: look into whether there's a way to statically link golang images using a minimal golang build image. Previously we did this using ubuntu, if we don't do this now we probably need to switch from scratch to alpine for our running images.


#2141 Latest version of Chrome debugger causing redux to run slowly i…

…n test harness
Fixes: #2141
Developer's Certificate of Origin 1.1
   By making a contribution to this project, I certify that:

   (a) The contribution was created in whole or in part by me and I
       have the right to submit it under the Apache License 2.0; or

   (b) The contribution is based upon previous work that, to the best
       of my knowledge, is covered under an appropriate open source
       license and I have the right under that license to submit that
       work with modifications, whether created in whole or in part
       by me, under the same open source license (unless I am
       permitted to submit under a different license), as indicated
       in the file; or

   (c) The contribution was provided directly to me by some other
       person who certified (a), (b) or (c) and I have not modified
       it.

   (d) I understand and agree that this project and the contribution
       are public and that a record of the contribution (including all
       personal information I submit with it, including my sign-off) is
       maintained indefinitely and may be redistributed consistent with
       this project or the open source license(s) involved.

@matthoward366
I don't know if is affects common-properties or not. It just started happening for me when I updated to the latest Chrome and ran Common Canvas with the debugger open. I get the message below in the console (which I think were were getting before) and thereafter all interactions run slowly.  The peculiar thing is it happens when I open the test harness right-flyout for the first time. So that is before I have done anything substantial in Common Canvas such as open a sample app or select a test flow or palette to display, etc. So at that point there shouldn't be any objects that are very big in Redux.

I was hoping it would go away with a future update of Chrome which is why I left the code there but commented out. To be honest though, even before the problem, I rarely used the Redux debug tools so it's no great loss.

ok, we can leave it for now unless we see issues.


【3.0】dubbo3.0 workflows cannot execute successfully

[x] I have searched the issues of this repository and believe that this is not a duplicate.

The workflow of dubbo3.0 cannot be executed successfully. I have tried many times, and each time it is stuck in the same test case. The test case ZookeeperRegistryTest cannot pass the test under jdk17. I guess there is a compatibility problem with this test case in the jdk17 version.

Error:    CuratorFrameworkUtilsTest.testBuildServiceDiscovery:69 » IllegalState failed t...

I checked other people's pr recently and found that other people also have this problem. This test case cannot pass under jdk17.

I also found this problem, can you fix it?

Who can help deal with this problem, otherwise everyone's PR can't be submitted
@AlbumenJ @chickenlj @pinxiong

I also found this problem, can you fix it?

not yet，I found that jdk17 test has been added recently. It may be a compatibility problem

not yet，I found that jdk17 test has been added recently. It may be a compatibility problem

This seems to have no relationship with jdk version, I use jdk8 unit test is also failed, you use jdk8 can pass the unit test?

not yet，I found that jdk17 test has been added recently. It may be a compatibility problem

This seems to have no relationship with jdk version, I use jdk8 unit test is also failed, you use jdk8 can pass the unit test?

work good use jdk8 local

Who can help deal with this problem, otherwise everyone's PR can't be submitted @AlbumenJ @chickenlj @pinxiong

@codeimport @juzi214032 I'll fix this issue.
It can be sure that the cause of this problem is that zookeeper instances didn't work. There are several steps to check when the failed testcases you have mentioned are running:

Check if there are two zookeeper processes first
Check if the zookeeper archive binary file is downloaded successfully

All of download info will be in the given path, if you set -DembeddedZookeeperPath
and then to check the .tmp/zookeeper directory in user.home
finally you can check the .tmp/zookeeper directory in java.io.tmpdir

In most cases, this problem is caused by zooKeeper not being downloaded.
If there is no internet in the running environment, you also can copy the downloaded zookeeper archive binary (it's version should be equal or greater than 3.6.0) in  the .tmp/zookeeper directory in user.home. Here is an example below:
Suppose you didn't set -DembeddedZookeeperPath and

user.home is /Users/myhostname
The copied zookeeper archive binary file is named apache-zookeeper-3.6.3-bin.tar.gz

What you need to do as below:

Create a directory named .tmp/zookeeper in /Users/myhostname
Copy the file apache-zookeeper-3.6.3-bin.tar.gz in /Users/myhostname/.tmp/zookeeper
Rename the file apache-zookeeper-3.6.3-bin.tar.gz to apache-zookeeper-bin.tar.gz

And then you can have a try.

I have reproduce this problem in my local machine.
The exception occurred as below:
Connected to the target VM, address: '<IP_ADDRESS>:56915', transport: 'socket'
log4j:WARN No appenders could be found for logger (org.apache.dubbo.test.check.registrycenter.ZookeeperRegistryCenter).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
Jan 11, 2022 9:10:25 PM org.junit.platform.launcher.core.TestExecutionListenerRegistry lambda$notifyEach$1
WARNING: TestExecutionListener [org.apache.dubbo.test.check.RegistryCenterStarted] threw exception for method: testPlanExecutionStarted(org.junit.platform.launcher.core.InternalTestPlan@553f1d75)
java.lang.IllegalStateException: Failed to start zookeeper instance in unit test
	at org.apache.dubbo.test.check.RegistryCenterStarted.testPlanExecutionStarted(RegistryCenterStarted.java:37)
	at org.junit.platform.launcher.core.TestExecutionListenerRegistry$CompositeTestExecutionListener.lambda$testPlanExecutionStarted$12(TestExecutionListenerRegistry.java:115)
	at org.junit.platform.launcher.core.TestExecutionListenerRegistry.lambda$notifyEach$1(TestExecutionListenerRegistry.java:67)
	at java.util.ArrayList.forEach(ArrayList.java:1259)
	at org.junit.platform.launcher.core.TestExecutionListenerRegistry.notifyEach(TestExecutionListenerRegistry.java:65)
	at org.junit.platform.launcher.core.TestExecutionListenerRegistry.access$200(TestExecutionListenerRegistry.java:32)
	at org.junit.platform.launcher.core.TestExecutionListenerRegistry$CompositeTestExecutionListener.testPlanExecutionStarted(TestExecutionListenerRegistry.java:115)
	at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$5(DefaultLauncher.java:200)
	at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:226)
	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:199)
	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:132)
	at com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs(JUnit5IdeaTestRunner.java:71)
	at com.intellij.rt.junit.IdeaTestRunner$Repeater$1.execute(IdeaTestRunner.java:38)
	at com.intellij.rt.execution.junit.TestsRepeater.repeat(TestsRepeater.java:11)
	at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:35)
	at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:235)
	at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:54)
Caused by: java.lang.RuntimeException: Download zookeeper binary archive failed, download url:https://archive.apache.org/dist/zookeeper/zookeeper-3.6.0/apache-zookeeper-3.6.0-bin.tar.gz, file path:/var/folders/qb/c5lkt6s932s1v2gvx702sqx40000gp/T/zookeeper/apache-zookeeper-3.6.0-bin.tar.gz.
Or you can do something to avoid this problem as below:
1. Download zookeeper binary archive manually regardless of the version
2. Rename the downloaded file named 'apache-zookeeper-{version}-bin.tar.gz' to 'apache-zookeeper-bin.tar.gz'
3. Put the renamed file in /Users/xxxx/.tmp/zookeeper/apache-zookeeper-bin.tar.gz, you maybe need to create the directory if necessary.

	at org.apache.dubbo.test.check.registrycenter.initializer.DownloadZookeeperInitializer.doInitialize(DownloadZookeeperInitializer.java:113)
	at org.apache.dubbo.test.check.registrycenter.initializer.ZookeeperInitializer.initialize(ZookeeperInitializer.java:41)
	at org.apache.dubbo.test.check.registrycenter.ZookeeperRegistryCenter.startup(ZookeeperRegistryCenter.java:220)
	at org.apache.dubbo.test.check.registrycenter.GlobalRegistryCenter.startup(GlobalRegistryCenter.java:35)
	at org.apache.dubbo.test.check.RegistryCenterStarted.testPlanExecutionStarted(RegistryCenterStarted.java:34)
	... 16 more
Caused by: java.util.concurrent.ExecutionException: java.util.concurrent.TimeoutException: Request timeout to archive.apache.org/<IP_ADDRESS>:443 after 30000 ms
	at java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:357)
	at java.util.concurrent.CompletableFuture.get(CompletableFuture.java:1928)
	at org.asynchttpclient.netty.NettyResponseFuture.get(NettyResponseFuture.java:206)
	at org.apache.dubbo.test.check.registrycenter.initializer.DownloadZookeeperInitializer.download(DownloadZookeeperInitializer.java:175)
	at org.apache.dubbo.test.check.registrycenter.initializer.DownloadZookeeperInitializer.doInitialize(DownloadZookeeperInitializer.java:111)
	... 20 more
Caused by: java.util.concurrent.TimeoutException: Request timeout to archive.apache.org/<IP_ADDRESS>:443 after 30000 ms
	at org.asynchttpclient.netty.timeout.TimeoutTimerTask.expire(TimeoutTimerTask.java:43)
	at org.asynchttpclient.netty.timeout.RequestTimeoutTimerTask.run(RequestTimeoutTimerTask.java:50)
	at io.netty.util.HashedWheelTimer$HashedWheelTimeout.expire(HashedWheelTimer.java:672)
	at io.netty.util.HashedWheelTimer$HashedWheelBucket.expireTimeouts(HashedWheelTimer.java:747)
	at io.netty.util.HashedWheelTimer$Worker.run(HashedWheelTimer.java:472)
	at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
	at java.lang.Thread.run(Thread.java:748)

[DubboTestChecker] Project dir: /Users/xxxx/Documents/workspace/java/dubbo/dubbo-registry/dubbo-registry-zookeeper

I think you can copy the downloaded zookeeper archive binary file to the specified path where you can find in error info.
For example: /Users/xxxx/.tmp/zookeeper/apache-zookeeper-bin.tar.gz
Caused by: java.lang.RuntimeException: Download zookeeper binary archive failed, download url:https://archive.apache.org/dist/zookeeper/zookeeper-3.6.0/apache-zookeeper-3.6.0-bin.tar.gz, file path:/var/folders/qb/c5lkt6s932s1v2gvx702sqx40000gp/T/zookeeper/apache-zookeeper-3.6.0-bin.tar.gz.
Or you can do something to avoid this problem as below:
1. Download zookeeper binary archive manually regardless of the version
2. Rename the downloaded file named 'apache-zookeeper-{version}-bin.tar.gz' to 'apache-zookeeper-bin.tar.gz'
3. Put the renamed file in /Users/xxxx/.tmp/zookeeper/apache-zookeeper-bin.tar.gz, you maybe need to create the directory if necessary.

I have reproduce this problem in my local machine.
The exception occurred as below:
Connected to the target VM, address: '<IP_ADDRESS>:56915', transport: 'socket'
log4j:WARN No appenders could be found for logger (org.apache.dubbo.test.check.registrycenter.ZookeeperRegistryCenter).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
Jan 11, 2022 9:10:25 PM org.junit.platform.launcher.core.TestExecutionListenerRegistry lambda$notifyEach$1
WARNING: TestExecutionListener [org.apache.dubbo.test.check.RegistryCenterStarted] threw exception for method: testPlanExecutionStarted(org.junit.platform.launcher.core.InternalTestPlan@553f1d75)
java.lang.IllegalStateException: Failed to start zookeeper instance in unit test
	at org.apache.dubbo.test.check.RegistryCenterStarted.testPlanExecutionStarted(RegistryCenterStarted.java:37)
	at org.junit.platform.launcher.core.TestExecutionListenerRegistry$CompositeTestExecutionListener.lambda$testPlanExecutionStarted$12(TestExecutionListenerRegistry.java:115)
	at org.junit.platform.launcher.core.TestExecutionListenerRegistry.lambda$notifyEach$1(TestExecutionListenerRegistry.java:67)
	at java.util.ArrayList.forEach(ArrayList.java:1259)
	at org.junit.platform.launcher.core.TestExecutionListenerRegistry.notifyEach(TestExecutionListenerRegistry.java:65)
	at org.junit.platform.launcher.core.TestExecutionListenerRegistry.access$200(TestExecutionListenerRegistry.java:32)
	at org.junit.platform.launcher.core.TestExecutionListenerRegistry$CompositeTestExecutionListener.testPlanExecutionStarted(TestExecutionListenerRegistry.java:115)
	at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$5(DefaultLauncher.java:200)
	at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:226)
	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:199)
	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:132)
	at com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs(JUnit5IdeaTestRunner.java:71)
	at com.intellij.rt.junit.IdeaTestRunner$Repeater$1.execute(IdeaTestRunner.java:38)
	at com.intellij.rt.execution.junit.TestsRepeater.repeat(TestsRepeater.java:11)
	at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:35)
	at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:235)
	at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:54)
Caused by: java.lang.RuntimeException: Download zookeeper binary archive failed, download url:https://archive.apache.org/dist/zookeeper/zookeeper-3.6.0/apache-zookeeper-3.6.0-bin.tar.gz, file path:/var/folders/qb/c5lkt6s932s1v2gvx702sqx40000gp/T/zookeeper/apache-zookeeper-3.6.0-bin.tar.gz.
Or you can do something to avoid this problem as below:
1. Download zookeeper binary archive manually regardless of the version
2. Rename the downloaded file named 'apache-zookeeper-{version}-bin.tar.gz' to 'apache-zookeeper-bin.tar.gz'
3. Put the renamed file in /Users/xxxx/.tmp/zookeeper/apache-zookeeper-bin.tar.gz, you maybe need to create the directory if necessary.

	at org.apache.dubbo.test.check.registrycenter.initializer.DownloadZookeeperInitializer.doInitialize(DownloadZookeeperInitializer.java:113)
	at org.apache.dubbo.test.check.registrycenter.initializer.ZookeeperInitializer.initialize(ZookeeperInitializer.java:41)
	at org.apache.dubbo.test.check.registrycenter.ZookeeperRegistryCenter.startup(ZookeeperRegistryCenter.java:220)
	at org.apache.dubbo.test.check.registrycenter.GlobalRegistryCenter.startup(GlobalRegistryCenter.java:35)
	at org.apache.dubbo.test.check.RegistryCenterStarted.testPlanExecutionStarted(RegistryCenterStarted.java:34)
	... 16 more
Caused by: java.util.concurrent.ExecutionException: java.util.concurrent.TimeoutException: Request timeout to archive.apache.org/<IP_ADDRESS>:443 after 30000 ms
	at java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:357)
	at java.util.concurrent.CompletableFuture.get(CompletableFuture.java:1928)
	at org.asynchttpclient.netty.NettyResponseFuture.get(NettyResponseFuture.java:206)
	at org.apache.dubbo.test.check.registrycenter.initializer.DownloadZookeeperInitializer.download(DownloadZookeeperInitializer.java:175)
	at org.apache.dubbo.test.check.registrycenter.initializer.DownloadZookeeperInitializer.doInitialize(DownloadZookeeperInitializer.java:111)
	... 20 more
Caused by: java.util.concurrent.TimeoutException: Request timeout to archive.apache.org/<IP_ADDRESS>:443 after 30000 ms
	at org.asynchttpclient.netty.timeout.TimeoutTimerTask.expire(TimeoutTimerTask.java:43)
	at org.asynchttpclient.netty.timeout.RequestTimeoutTimerTask.run(RequestTimeoutTimerTask.java:50)
	at io.netty.util.HashedWheelTimer$HashedWheelTimeout.expire(HashedWheelTimer.java:672)
	at io.netty.util.HashedWheelTimer$HashedWheelBucket.expireTimeouts(HashedWheelTimer.java:747)
	at io.netty.util.HashedWheelTimer$Worker.run(HashedWheelTimer.java:472)
	at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
	at java.lang.Thread.run(Thread.java:748)

[DubboTestChecker] Project dir: /Users/xxxx/Documents/workspace/java/dubbo/dubbo-registry/dubbo-registry-zookeeper

I think you can copy the downloaded zookeeper archive binary file to the specified path where you can find in error info.
For example: /Users/xxxx/.tmp/zookeeper/apache-zookeeper-bin.tar.gz
Caused by: java.lang.RuntimeException: Download zookeeper binary archive failed, download url:https://archive.apache.org/dist/zookeeper/zookeeper-3.6.0/apache-zookeeper-3.6.0-bin.tar.gz, file path:/var/folders/qb/c5lkt6s932s1v2gvx702sqx40000gp/T/zookeeper/apache-zookeeper-3.6.0-bin.tar.gz.
Or you can do something to avoid this problem as below:
1. Download zookeeper binary archive manually regardless of the version
2. Rename the downloaded file named 'apache-zookeeper-{version}-bin.tar.gz' to 'apache-zookeeper-bin.tar.gz'
3. Put the renamed file in /Users/xxxx/.tmp/zookeeper/apache-zookeeper-bin.tar.gz, you maybe need to create the directory if necessary.

not yet，I found that jdk17 test has been added recently. It may be a compatibility problem

This seems to have no relationship with jdk version, I use jdk8 unit test is also failed, you use jdk8 can pass the unit test?

work good use jdk8 local

@codeimport @juzi214032 you can get more error info.

Thank you for your suggestion. I can solve this problem locally, but this problem also exists when submitting PR for workflow. This problem makes my PR unable to pass the workflow. How to solve this problem?
@pinxiong

@codeimport  Can you provide your PR's workflow?

i found it have fix by chickenlj


Gracefully handle empty snippets

If snippet in Terraform code is optional, for example when ternary
operator is used, then provider is not able to handle at the moment and
crashes, trying to cast 'nil' interface into string.
This commit changes the logic to prevent that and makes that only non
'nil' snippets will be used.
Signed-off-by: Mateusz Gozdek<EMAIL_ADDRESS>

Thanks!


Can't define and use static properties with derived classes

TypeScript Version:  master

Search Terms:
Code
class A {
  static readonly p1 = Symbol();
  static readonly p2 = Symbol();
  [A.p1]() {}
  [A.p2] = 0
}
class B extends Object {
  static readonly p1 = Symbol();
  static readonly p2 = Symbol();
  [B.p1]() {}
  [B.p2] = 0
}

Expected behavior:
pass
Actual behavior:
$ node built/local/tsc.js index.ts -t es6
index.ts:7:7 - error TS2506: 'B' is referenced directly or indirectly in its own base expression.

7 class B extends Object {
        ~

Playground Link:
Related Issues: #23736

I'd argue this works as intended.
class A {
    static method() {return 'myMehthod'}
    [A.method()]() { return '13'}
}

gives me ReferenceError in Chrome.
Transpiling in Babel
class A {
  static  p1 = Symbol();
  [A.p1]() {}
}

gives me Class "A" cannot be referenced in computed property keys.

If you are right, TypeScript's type checking is originally wrong. According to the Chrome behavior, you seem correct. But is static class member already standardized? I feel it is not sure that we should respect that behavior. At least that behavior is not ideal as the polyfill of static properties using static methods. And probably it is avoidable undesired behavior.

And probably we should discuss it in #23736.


Error with /NToastNotify/js/dist/toastr.js?v=201803200122

Hey there, I don't know if I made a mistake configuring the new version (downloaded v5.0) but it seems like the view component tries to load the toastr.js file from NToastNotify folder but it does not exist within wwwroot so it errors out...
Would you have an idea of what could cause that issue?
Thanks in advance.

It looks like the tilde (~) is evaluated at runtime and corresponds to wwwroot in my case, don't know how to solve this issue externally to NToastNotify

Or if you could share the whole startup class code it would be better. Possible issue could be with the StaticFiles middle ware.

You need to add NToastNotify as middleware in the configure method so add the app.UseNToastNotify();  line before .UseMvc()
 // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
      app.UseNToastNotify();
      app.UseMvc();
}

Yup I added NToastNotify as you mentioned and also just before useMvc() but it still gives the same error.
As you also said I effectively use the static files middleware,  what could be the root cause ?

Could you share your startup code please?

I do t have access to it right  now but I will post it tomorrow morning :)

Ok so here is the Configure method of the startup code:
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)         {
            app.UseAuthentication();

            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
                app.UseDatabaseErrorPage();
                app.UseBrowserLink();
                app.UseMiddleware<StackifyMiddleware.RequestTracerMiddleware>();
            else
            {
                //app.UseStatusCodePagesWithReExecute("/Home/CustomErrorPages/{0}");
                app.UseExceptionHandler("/Home/Error"); // Handles runtime errors (caused by our code)
            }
            // Localization:
            var locOptions = app.ApplicationServices.GetService<IOptions<RequestLocalizationOptions>>();
            app.UseRequestLocalization(locOptions.Value);

            app.UseStaticFiles();

            app.UseNToastNotify();

            // Main MVC with default route template
            app.UseMvc(routes =>
            {
                routes.MapRoute(
                    name: "default",
                    template: "{controller=Home}/{action=Index}/{id?}");
            });
}

Well everything looks normal here.  Cannot see anything that may cause this issue. What about your csproj file? Can you share that as well? It could be a SDK/framework version issue but I am not sure. So just to reconfirm the only error you are getting is a 404 not found error while getting /NToastNotify/js/dist/toastr.js?v=201803200122 from the server. Right?

Hmmm... I will have to double check. But if I'm not wrong, yes the 404 was the only error I had (client side), I will take a look at the server side logs.

Just checked, I only have a 404, both on client and server side.
Here is my csproj file:
<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>netcoreapp2.0</TargetFramework>
    <UserSecretsId>HiVoLab-D34D16E6-9BAB-48F5-8745-1C6FD18973D1</UserSecretsId>
    <TypeScriptToolsVersion>2.6</TypeScriptToolsVersion>
    <!--<PreserveCompilationContext>true</PreserveCompilationContext>-->
  </PropertyGroup>

  <PropertyGroup>
    <MvcRazorCompileOnPublish Condition="'$(Configuration)' == 'Release'">true</MvcRazorCompileOnPublish>
    <!-- If set to false, this will keep the refs directory in the publish output (required to compile the views, useful in case we need to debug in Dev. environment on Production server) See: https://github.com/aspnet/Mvc/issues/6021-->
    <MvcRazorExcludeRefAssembliesFromPublish>false</MvcRazorExcludeRefAssembliesFromPublish>
    <AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;</AssetTargetFallback>
    </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Localization.AspNetCore.TagHelpers" Version="0.3.0" />
    <PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.6" />
    <PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.0.3" PrivateAssets="All" />
  </ItemGroup>

  <ItemGroup>
    <!-- EF Core .NET CLI tools, includes dotnet-ef -->
    <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" />
    <!-- Command line tool to manage user secrets for Microsoft.Extensions.Configuration. -->
    <DotNetCliToolReference Include="Microsoft.Extensions.SecretManager.Tools" Version="2.0.0" />
    <!-- Build-time references required to enable Razor view compilation as part of building the application. -->
    <PackageReference Include="Microsoft.AspNetCore.Mvc.Razor.ViewCompilation" Version="2.0.3" PrivateAssets="All" />
    <!-- Code Generation tool for ASP.NET Core. Contains the dotnet-aspnet-codegenerator command used for generating controllers and views. -->
    <DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.0" />
  </ItemGroup>

  <!--Custom added packages-->
  <ItemGroup>
    <PackageReference Include="GenFu" Version="1.4.22" />
    <PackageReference Include="Humanizer" Version="2.2.0" />
    <PackageReference Include="NodaTime" Version="2.2.4" />
    <PackageReference Include="Sendgrid" Version="9.9.0" />
    <PackageReference Include="NToastNotify" Version="5.0.0" />
    <PackageReference Include="StackifyMiddleware" Version="2.1.1" />
    <PackageReference Include="WkWrap.Core" Version="1.0.7" />
    <PackageReference Include="AutoMapper" Version="6.2.2" />
    <PackageReference Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="3.2.0" />
    <PackageReference Include="Newtonsoft.Json" Version="11.0.1" />
    <PackageReference Include="ZXing.Net" Version="0.16.2" />
  </ItemGroup>

  <ItemGroup>
    <None Include="wwwroot\css\*" />
    <None Include="wwwroot\documents\*" />
    <None Include="wwwroot\fonts\*" />
    <None Include="wwwroot\images\*" />
    <None Include="wwwroot\js\*" />
    <None Include="wwwroot\WkHtmlToPdfRoot\*" />
    <Compile Remove="Shame\**" />
    <Content Remove="Shame\**" />
    <Content Remove="Views\DeprecatedViews\*" />
    <EmbeddedResource Remove="Shame\**" />
    <None Remove="Shame\**" />
  </ItemGroup>

  <ItemGroup>
    <Content Remove="wwwroot\images\DieleXLab-light-horizontal.svg" />
  </ItemGroup>

  <ItemGroup>
    <None Remove="wwwroot\WkHtmlToPdfRoot\footer-fr.html" />
  </ItemGroup>

  <ItemGroup>
    <Content Include="src\Libs\Candlestick\candlestick.min.css">
      <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
    </Content>
    <Content Include="src\Libs\Candlestick\candlestick.min.js">
      <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
    </Content>
  </ItemGroup>

  <ItemGroup>
    <Folder Include="src\Libs\Datatables\Dist\" />
  </ItemGroup>

  <ItemGroup>
    <EmbeddedResource Update="Resources\SharedResources.fr.resx">
      <Generator>ResXFileCodeGenerator</Generator>
    </EmbeddedResource>
    <EmbeddedResource Update="Resources\Views\Account\Login.en.resx">
      <Generator>ResXFileCodeGenerator</Generator>
    </EmbeddedResource>
    <EmbeddedResource Update="Resources\Views\Account\Login.fr.resx">
      <Generator>ResXFileCodeGenerator</Generator>
    </EmbeddedResource>
    <EmbeddedResource Update="Resources\Views\Home\Index.fr.resx">
      <Generator>ResXFileCodeGenerator</Generator>
    </EmbeddedResource>
    <EmbeddedResource Update="Resources\Views\SampleReports\SingleResultReport.fr.resx">
      <Generator>ResXFileCodeGenerator</Generator>
    </EmbeddedResource>
    <EmbeddedResource Update="Resources\Views\SampleReports\_SampleGenericInformationPartial.fr.resx">
      <Generator>ResXFileCodeGenerator</Generator>
    </EmbeddedResource>
  </ItemGroup>
</Project>

Ok I found the problem (not caused by NToastNotify), it is caused by my web.config file which redirects requests for static files to be served directly by IIS, which seem to be unable to handle the embedded views correctly, I will have to dig a little deeper to find a solution, but it does not rely/depend on NToastNotify so I will close this issue.
Thanks for your time and ideas :)

@os1r1s110 Have you found a solution for this?
The project works fine on my development machine, but when I publish to production, I started to see those errors.

I found the problem.
I was using WebOptimizer (LigerShark.WebOptimizer.Core) but only in production.
This was causing the error.


Histogram sliders not working

This works on my Mac. Unsure as to why it wouldn't work on the beamline PC. Have to investigate on beamline.


[homescreen] Make all Home Page tabs "sticky"

Is your feature request related to a problem? Please describe.
When using the home page, users navigate away, and when they come back, the tabs they clicked on (e.g. recent, favorite) are not saved. This makes users have to re-navigate to their facorite areas all the time.
Describe the solution you'd like
Use the localstorage helper utility to store these tab selections whenever they're changed. When you visit the home page, go to the last state.
Describe alternatives you've considered
Consult with @nytai about alternate plans involving database storage rather than localstorage, but localstorage sounds like a relatively easy task.
Additional context

yup, localstorage seems like a good enough solution here. I would only add that we should create a module or class called SettingStorage with get/set methods so there's a nice interface wrapper. That would allow us to switch out the underlying storage type from localstorage to the db

For now, we can use
import {
  getFromLocalStorage,
  setInLocalStorage,
} from 'src/utils/localStorageHelpers';


CFFL

CFFL

Linter check found the following problems:
The following problems have been found:
ERROR: /tmp/abs_274leu8ils/clone/recipe/meta.yaml:23: missing_wheel: For pypi packages, wheel should be present in the host section
ERROR: /tmp/abs_274leu8ils/clone/recipe/meta.yaml:48: missing_license_family: The recipe is missing the about/license_family key.
ERROR: /tmp/abs_274leu8ils/clone/recipe/meta.yaml:48: missing_dev_url: The recipe is missing a dev_url
ERROR: /tmp/abs_274leu8ils/clone/recipe/meta.yaml:48: missing_documentation: The recipe is missing a doc_url or doc_source_url
WARNING: /tmp/abs_274leu8ils/clone/recipe/meta.yaml:48: missing_description: The recipe is missing a description
Errors were found


RSDK-2566 - refactor from_robot

Major changes

Move typed_resource_from_robot into RobotClient as overload of resource_by_name
Stop requiring explicit template language in class headers

Minor changes

move data members of wrappers to private, make constructors protected

@stuqdog - Thanks for making those small changes, still LGTM.


Should regression targets be log scaled?

I've found for a number of the ADME regression targets (volume of distribution, half life, etc.) that there is much clearer signal when I regress against the log of the target. The target distributions are fairly heavy-tailed in these cases, so without this transform, a handful of points can drive the loss.
Does it make sense to check whether regression targets should be transformed, and if so, to update the dataset generation accordingly?

Hey Cyrus, that's a good point! That is also why we provided a log transformation function. You can try:
from tdc.single_pred import ADME
data = ADME(name = 'VDss_Lombardo')
data.convert_to_log()
data.label_distribution()

We want to keep the raw data as well, but we will add a note on the website about this important information.
I think in our current ADMET benchmark, we are not using that. So, it may be a good idea to use a log-scale for VDss and Half life. I will try that out to see if the performance makes sense. What other datasets have you identified this issue? Thanks!

Hi Kexin, that's for your quick reply! I went ahead and ran this for all the TDC endpoints that I'm working with. I only see benefits for VD, clearance, and half life. Note for the log transform, I use a robust version so it works for zero and negative numbers...
def robust_log(x):
    return np.sign(x) * np.log((abs(x)) + 1)

Thanks so much for making this table! It looks like you are using the old version of TDC. We have found that eDrug3D is very noisy, so we replaced them with higher quality ones. You can check them out in our website.
Would it be fast to generate these numbers for these new datasets? If not, let me know, i can also run some codes to test the difference.
Also, regarding the log transformation, i made a PR to incorporate your point: https://github.com/mims-harvard/TDC/pull/56 one difference is instead of using +1 for numeric stability, i use 1e-10. Since it looks like some raw values are pretty small and +1 would make a difference.

Hi Kexin, good catch adding a smaller number! I got called off to do covid variant work, but I should be able to get back to this  next week. Once it's ready, I'll add the updated table here.

Sounds good, thanks a lot!!!

Here you go! I updated the robust log computation and added the latest datasets:

Thanks so much! This looks good, it seems the currently supported dataset does not require log transformation. Closing for now! Feel free to reopen if you have any question!


Support for VSCodium via Open VSX Registry.

I love pustota theme, and I'm kind of used to it, thanks a lot @sobolevn for making it . I recently switched to VSCodium and it's marketplace is powered by Open VSX Registry, So pustota need to be publish to this registry in order to be published.

Yes, sure!


Added virtual_columns option and note for changefeed filtering virtual computed columns

Fixes DOC-2345
Added the virtual_columns option to the CREATE CHANGEFEED  + EXPERIMENTAL CHANGEFEED FOR pages. Plus additional notes.

This change is

Hey @HonoreDB, I hope you don't mind — I added you for review, since you reviewed Sherman's PR for this work.


Up version and update podspec

Recent changes are not marked tag. It is not possible to get them through the installation cocoapods.

v1.2.0 has been pushed to CocoaPods, thanks!


[stf-collect-logs] Add a role for log collection

Jenkins says this doesn't break anything, but it needs some additional testing, I'm sure.

"that should actually have broken something." Is this an open concern that jenkins failed to report a failure where you thought it should? Or did you figure out what happened?

I'm only getting around to looking at it today. It'll be easier to test now that we have one of the Zuul jobs also running.

recheck
The Zuul errors was related to CRC not starting. I'm assuming that was an intermittent failure for now.


Request to add  methodologies

Describe the feature
First of all many thanks to the contributors to this project, I checked from the documentation that I could set <meta name="Description" content=" and it worked fine. I was recently pushing my blog to Google search. I need to make specific SEO optimizations. So I would like to ask if it is possible to add ,if any. Can you send me the link to the document. Thank you very much and salute!
Additional information
"dependencies": {
    "@unhead/vue": "^1.8.9",
    "@vitejs/plugin-vue": "^4.3.4",
    "axios": "^1.5.0",
    "core-js": "^3.8.3",
    "element-plus": "^2.3.14",
    "fingerprintjs2": "^2.1.4",
    "grecaptcha": "^1.0.3",
    "jsonwebtoken": "^9.0.2",
    "markdown-it": "^13.0.1",
    "os": "^0.1.2",
    "typeit": "^8.7.1",
    "undraw-ui": "^1.0.2",
    "unplugin-auto-import": "^0.16.6",
    "unplugin-vue-components": "^0.25.2",
    "vite": "^4.4.9",
    "vue": "^3.2.25",
    "vue-jwt-decode": "^0.1.0",
    "vue-meta": "^3.0.0-alpha.8",
    "vue-recaptcha": "^3.0.0-alpha.2",
    "vue-router": "^4.0.13",
    "vue3-recaptcha2": "^1.8.0",
    "vuex": "^4.0.0",
    "vuex-persistedstate": "^4.1.0"
  },
  "devDependencies": {
    "@typescript-eslint/eslint-plugin": "^5.4.0",
    "@typescript-eslint/parser": "^5.4.0",
    "@vue/cli-plugin-babel": "~5.0.0",
    "@vue/cli-plugin-eslint": "~5.0.0",
    "@vue/cli-plugin-router": "~5.0.0",
    "@vue/cli-plugin-typescript": "~5.0.0",
    "@vue/cli-plugin-vuex": "~5.0.0",
    "@vue/cli-service": "~5.0.0",
    "@vue/eslint-config-typescript": "^9.1.0",
    "eslint": "^7.32.0",
    "eslint-plugin-vue": "^8.0.3",
    "typescript": "~4.5.5"
  }
}

<script setup>
import { ref } from 'vue';
import { useHead } from '@unhead/vue';

const myPage = ref({ description: 'Exploit的博客。分享Linux服务器搭建运维,学习Python技术,vue3,利用Fastapi,Django,mysql的技术搭建个人网站。记录一下自己的学习成果'})
const title = ref('title')
const metakeywords = ref( {keywords: 'Linux,Python,Vue,运维,云服务,Seo,计算机教学,计算机基础'})

useHead({
  meta: [{ name: 'description', content: () => myPage.value.description },
           { name: 'keywords',content: () => metakeywords.value.keywords}],
})
</script>

<template>
  <div id="app">
    <router-view/>
  </div>
</template>

<style>
html, body {
  height: 100%;
  width: 100%;
  margin: 0;
  padding: 0;
  background: rgb(233, 233, 235);
  font-family: 'Helvetica Neue', Helvetica, 'PingFang SC', 'Hiragino Sans GB',
  'Microsoft YaHei', '微软雅黑', Arial, sans-serif;
}

#app {
  font-family: 'Helvetica Neue', Helvetica, 'PingFang SC', 'Hiragino Sans GB',
  'Microsoft YaHei', '微软雅黑', Arial, sans-serif;
  height: 100%; /* 使#app占满全屏高度 */
}
</style>

Here's my vue code. It's keywords don't quite work. Is there a problem with my code?

[ ] Would you be willing to help implement this feature?

Are you able to provide a reproduction? You can use this as a starter https://stackblitz.com/edit/vitejs-vite-uijgqa?file=package.json
Also FWIW the keywords meta isn't useful for SEO, no search engines are known to use it.

Thank you so much for your help. I understand. Have a nice day.


Fix foreignObject namespace setting

The fix for #200 incorrectly changed the foreignObject namespace to XML's one instead of XHTML. This results in an invalid image.
This change addresses the issue. Namespace variable is also renamed to donate the actual value it is storing.

Thanks. I've pushed this in version 1.4.13.

Thanks @exupero! Do you mind checking #218 as well?


Add dependencies to the contractSet

This PR adds a deps field to the contractSet.

in modules/dependencies.go, we can create a variable
var (
    ProdDeps = new(ProductionDependencies)
)

Then we can use modules.ProdDeps as input instead of &modules.ProductionDependencies{} as input. I'm not 100% sure I got the syntax right in the declaration above, but I think it'll be something close to that.


CodableRouter: unprocessableEntity should return the error to client

Context and Description
CodableRouter decodes JSON into a Codable object. If a client posts/gets/whatever a JSON object missing a required parameter, the CodableRouter correctly returns a 422 unprocessable entity and the current unreleased version even logs that to the server.
The person coding the client may not have access to the server logs however, and so it would be great if kitura would actually output the decoding error to the client as this allows debugging any malformed/incorrect json without the aid of the server developer.
This is especially important if you are developing a public api and want to help 3rd party developers with why their requests aren't working - these will never have access to the server logs.
Environment Details
Swift 4.0.3, Kitura 2.2.x
Steps to Reproduce

Create a simple kitura server app that accepts a codable via post route, such as:

public struct SuggestAction: Codable {
    public let title: String
    public let value: String
}

Submit a post to the server that isn't correct, for example its missing the "title":

{
  value: "woof"
}

Expected vs. Actual Behaviour

Expected to happen...
I should get a 422 http status, and an error message sent back to the client with the decoding error, such as:
keyNotFound(CodingKeys(stringValue: "title", intValue: nil), Swift.DecodingError.Context(codingPath: [], debugDescription: "No value associated with key CodingKeys(stringValue: \"title\", intValue: nil) (\"title\").", underlyingError: nil))
Actually happened...
I only get a 422 http status back, and if I have no access to the server logs, I can only guess as to why the server did not accept my post.

Additional

I do not have a proposal of how to actually format the returned error. Should kitura just return the raw error string from the decode catch? should it return it in some JSON format? Personally I wouldn't care, as long as the error is returned in some form.
Maybe make this toggable incase someone prefers the "quiet" option that kitura currently has.

How to fix
Once the Kitura Team agrees upon a format of returning the error, all it needs is a response.send here:
https://github.com/IBM-Swift/Kitura/blob/661fc8a169b1718f4649aa990d9e745a01663c93/Sources/Kitura/CodableRouter.swift#L730
and maybe here:
https://github.com/IBM-Swift/Kitura/blob/661fc8a169b1718f4649aa990d9e745a01663c93/Sources/Kitura/CodableRouter.swift#L754
I added a response.send("Decode Error: \(error)") to my version. I'm sure this could be done prettier, but this at least gives client devs an idea of what went wrong.

What do you think @seabaylea?

Yes - we should be providing better error messages for .unprocessableEntity. We also need to make sure that we don't leak internal information (i.e. expose information on internals that could potentially enable a security attack).
This means we should probably process the DecodingError (documented here):
https://developer.apple.com/documentation/swift/decodingerror
rather than just dumping it.

Sounds good.  @hactar would you be interested in opening a PR to improve this?

I can take a stab at it - I'd write some code to produce a human readable error string based on the DecodingError.  Typical produced error messages would be:

JSON did not contain the required key "title".
JSON did not contain a value for the key "title".
The key "title" was not of the expected type "String".
The data you sent could not be decoded as JSON.

I'd then return it like so: request.send("DecodingError: \(humanReadableErrorMessage)")

Sounds perfect - thanks!

PR is in, passes (updated) tests.

FYI, #1256 has been merged and will be tagged in the next minor of Kitura.


Tiny alteration to accommodate installation on debian jessie

Can we just add this to the normal README instead of adding a new file?

Yup sure, just wanted to keep my oddness out the way seeing that it might only ever be relevant to me.... will re-spin later.

:+1:

I can't merge this as I'm not a member of the organization yet.

(tadaa)


Not Vue 3 compatible

Can't seem to get it to work with Vue 3.

Hi, I haven't tested it on Vue 3 yet. I'll try later

Hi. I need to use this plugin in vue 3. When will it be updated?

How do I install the new version of npm?

Sorry, very little time, Vue 3 is not supported yet.

Present at least as an alpha version. This way I can not use npm to get dependencies either!

How do I build a library (project | plugin)? When I build, it gives the error that raw-loader and sass-loader are needed. I have installed these two. But it still gives an error. What should I do?

While we wait for the community to port to Vue 3, would you be open to a PR that allows the option of installing under Vue 3? Since the options API isn't deprecated (and you can mix and match both APIs), Vue 3 projects should be able to use this, and using Vue Demi should allow a seamless installation for an alpha build that still uses the Options API while everything is ported over?


Linux Support

Currently, this package doesn't build on Linux. For example, the current stable branch won't even start compiling when downladed through the SPM, since the source location apparently changed from Sources to Framework/Sources.
When using the 1.9.0 tag instead, the code won't compile:
/home/vagrant/.build/checkouts/-7124877466912694924/Sources/Code/FileSource.swift:37:39: error: cannot convert value of type 'Data' to type 'NSData' in coercion
            if let data = (fileHandle.readData(ofLength: chunkSize) as NSData).mutableCopy() as? NSMutableData {
                           ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/vagrant/.build/checkouts/-7124877466912694924/Sources/Code/CSVImporter.swift:235:13: error: use of unresolved identifier 'autoreleasepool'
            autoreleasepool {
            ^~~~~~~~~~~~~~~
/home/vagrant/.build/checkouts/-7124877466912694924/Sources/Code/CSVImporter.swift:235:29: error: closure use of non-escaping parameter 'closure' may allow it to escape
            autoreleasepool {
                            ^

If fixing this for Linux would be too hard (which would be understandable), I would recommend adding an explicit note to the README that Linux is unsupported and maybe even removing the Package.swift for the time being (it's currently broken anyway).

Hi @Fryie, thank you for reporting this problem. I'm currently switching over to SPM in all my projects, too, and I also plan to restructure and refactor the project a bit and solve this issue on the way. If you need a quick fix earlier, feel free to post a PR and I'll merge it.

Hi @Dschee, your library also depends on HandySwift which also does not currently compiles on linux:
/Framework/Sources/Extensions/IntExtension.swift:16:23: error: static member 'random' cannot be used on instance of type 'Int'
               self.init(random() % upperLimit)
                         ^~~~~~
                         Self.

Ok, so it does work on Linux if the synchronous version is used, however if the asynchronous is used the onFinish method seems not to be called (Or I don't quite understand the concept). The following code does not generate any output, will let it in here in case a Linux user have the time to test it.
import CSVImporter // marathon: /home/luis/Dropbox/Documentos/Coding/Swift/Libraries/CSVImporter

class Student {
  let firstName: String, lastName: String
  init(firstName: String, lastName: String) {
    self.firstName = firstName
    self.lastName = lastName
  }
}

let path = "/home/luis/Dropbox/Documentos/Coding/Swift/Programs/CSVImporter-example/students.csv"

let importer = CSVImporter<Student>(path: path)
importer.startImportingRecords { recordValues -> Student in
    return Student(firstName: recordValues[0], lastName: recordValues[1])
}.onFinish { importedRecords in
        print("Does it even?")
}

I just added Linux support to CSVImporter and will be releasing a new version soon. The Linux CI passed already when building it, so should work now. I havent integrated into a project and tested it though, so it might still not work properly.


Multi-process Benchmarking ZMQ - Process produced undefined error.

Hey all.
I'm trying to Benchmark my server's ZMQ by mocking clients, and have reached a limit of number of processes I suppose?
The test logic is simple :
Create a task :: to create 1022 Sockets (Can't create more on windows, no matter what I do), and with each send all requests (REQ) and wait for all results.
Create X Processes, have each to do the task above. Main process waits until all processes are finished.
So when I reach the 7 process limit, three of them send this to my stderr on Pycharm:
Assertion failed: error not defined [0] (bundled\zeromq\src\err.cpp:383)
Currently my "Client mock" was able to create 8k Sockets atleast, but would not succeed with 10k.
Is this the limitations of ZMQ, or is there a way to increase the number of sockets I can create?
Thanks <3

Migrating question to libzmq, since this shouldn't be specific to the Python binding.


allow multiple test files as arguments to concept run / run-workers

What are you trying to achieve?
Would like to run multiple test files at one time as arguments to codeceptjs run / run-workers
What do you get instead?
codecept run myTest1.js myTest2.js - as of today codecept will only run myTest1.js and will not run multiple files.

Provide test source code if related
https://github.com/codeceptjs/CodeceptJS/blob/3.x/bin/codecept.js#L85 would be nice if it took more than one test as an argument.

Details
CircleCI allows you split tests between build executors however codecept does not have an easy to to pass a list of files to codecept to run / run-workers. Related circle CI docs: https://circleci.com/docs/2.0/parallelism-faster-jobs/#using-the-circleci-cli-to-split-tests . It would be nice if one could specify a group of files to run tests on via the command line without needing a custom runner.

my current workaround: in my circleCI YAML
    # Split tests across circleCI execurtors
    # https://circleci.com/docs/2.0/parallelism-faster-jobs/#using-the-circleci-cli-to-split-tests
    export TESTS_TO_RUN=$(circleci tests glob 'tests/**/*/test_smoke.js' | circleci tests split)
    # add suffix to test files that we can match with our codecept.js config ie: tests: './tests/**/*/*RUNME.js'
    for file in $TESTS_TO_RUN;
      do cp $file `echo $file | sed 's/\(.*\.\)js/\1_RUNME.js/'`; done

User --grep for that and Feature titles to grep by.


ocamlPackages.curses: 1.0.4 -> 1.0.8

Motivation for this change
https://github.com/mbacarella/curses/raw/1.0.8/CHANGES
Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[x] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[x] Tested execution of all binary files (usually in ./result/bin/)
21.11 Release Notes (or backporting 21.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[x] Fits CONTRIBUTING.md.

@GrahamcOfBorg build orpie virt-top


[new chord progression]

** Which Chord progression would you like to add to the pack? **
I-V-iv-VI

Hi! At first it looked like a duplicate 😁 ...but do you really mean iv VI instead of IV vi?

will be added as  I V ivm bVIM


Chat color changes.

I was thinking it might be useful to be able to change the color of different chat types, (public, private, clan) since personally for me it is pretty difficult to see chat over top of different colors while i have transparent mode set.

Duplicate of #2224

oh, alright, sorry, should i remove this or something?


Error running java code: Undefined variable "net" or class "net.apjanke.matlab_bench.bench_nops.DummyJavaClass".

Trying to run the code (sha: 6059d52), but I get the following error:
Undefined variable "net" or class "net.apjanke.matlab_bench.bench_nops.DummyJavaClass".

Error in bench_matlab_nops>bench_nops_pass (line 195)
jObj = net.apjanke.matlab_bench.bench_nops.DummyJavaClass;

Error in bench_matlab_nops (line 33)
    bench_nops_pass(10000, 1);

Will try and dig a bit and see what issue it is.
System:
Matlab R2013a on GLNXA64
Matlab <IP_ADDRESS>4 (R2013a) / Java 1.6.0_17 on GLNXA64 Linux *****
Machine: Core i7-3740QM CPU @ 2.70GHz, 7803 GB RAM (#35~precise1-Ubuntu SMP Fri May 2 21:32:55 UTC 2014)

Closing as fixed.


Concatenate across multiple dimensions with open_mfdataset

Code Sample
# Create 4 datasets containing sections of contiguous (x,y) data
for i, x in enumerate([1, 3]):
    for j, y in enumerate([10, 40]):
        ds = xr.Dataset({'foo': (('x', 'y'), np.ones((2, 3)))},
                         coords={'x': [x, x+1],
                                 'y': [y, y+10, y+20]})

        ds.to_netcdf('ds.' + str(i) + str(j) + '.nc')

# Try to open them all in one go
ds_read = xr.open_mfdataset('ds.*.nc')
print(ds_read)

Problem description
Currently xr.open_mfdataset will detect a single common dimension and concatenate DataSets along that dimension. However a common use case is a set of NetCDF files which have two or more common dimensions that need to be concatenated along simultaneously (for example collecting the output of any large-scale simulation which parallelizes in more than one dimension simultaneously). For the behaviour of xr.open_mfdataset to be n-dimensional it should automatically recognise and concatenate along all common dimensions.
Expected Output
<xarray.Dataset>
Dimensions:  (x: 4, y: 6)
Coordinates:
  * x        (x) int64 1 2 3 4
  * y        (y) int64 10 20 30 40 50 60
Data variables:
    foo      (x, y) float64 dask.array<shape=(4, 6), chunksize=(2, 3)>

Current output of xr.open_mfdataset()
<xarray.Dataset>
Dimensions:  (x: 4, y: 12)
Coordinates:
  * x        (x) int64 1 2 3 4
  * y        (y) int64 10 20 30 40 50 60 10 20 30 40 50 60
Data variables:
    foo      (x, y) float64 dask.array<shape=(4, 12), chunksize=(4, 3)>

Thanks for opening up this issue. This would be very helpful for the forecasting community as well, where we usually concatenate along Start time and Lead time dimensions.
Here, however, was mentioned that it is quite difficult to generalize it, and he suggested a workaround.
I know that some people did it for specific datasets, so maybe it would be helpful to add an example to the documentation that shows how this can be implemented on a case by case basis?

Since you linked to my SO answer, I will add that I think it is quite possible for us to develop this functionality in xarray. My view is that it will take a concerted effort by an interested developer to come up with an approach to do this but it is possible.
Also, I seem to remember seeing this topic before in our issue tracker but I'm not finding it now.

I agree with @jhamman that it would take effort from an interested developer to do this but in principle it's quite doable.
I think our logic in auto_combine (which powers open_mfdataset) could probably be extended to handle concatenation across multiple dimensions. The main implementation would need to look at coordinates along concatenated dimensions to break the operation into multiple calls xarray.concat()

@TomNicholas I think you could use the existing preprocess argument to open_mfdataset() for that.

@shoyer At the risk of going off on a tangent - I think that only works if the number of guard cells you want to remove can be determined from the data in the dataset you're loading, because preprocess doesn't accept any further arguments.
For example, say you want to remove all ghost cells except the ones at the edge of your simulation domain. If there's no information in each dataset which marks it as a dataset containing a simulation boundary region, then the preprocess function can't know to treat it differently without further arguments. I might be wrong though?

Just wanted to add the same request;)

But, I want to add that current behavior, where combined y = 10 20 30 40 50 60 10 20 30 40 50 60 is incorrect in the context of CF, which states that coordinates must be monotonic, and I cannot see many other use cases where such a result would work.
Also, currently the documentation is not clear about what will happen if you have multiple dimensions with different ranges.

I also do not understand what is the real complexity of implementing it.
As I understand the problem, the initial full dataset is some sort of N-d hypercube and then it is being split into parts along any nr of dimensions. When reading multiple files, which are just parts of this hypercube, it should be enough to just find the possible dimension values, form a hypercube and place each files content into the correct slot? What am I missing here?

@aluhamaa I don't think you're missing anything here. I agree that it would be pretty straightforward, it just would take a bit of work.

👍 for this feature

I just had the exact same problem, and while I didn't yet have time to dig into the source code of xarray.open_mfdataset, I wrote my own function to achieve this:
https://gist.github.com/jnhansen/fa474a536201561653f60ea33045f4e2
Maybe it's helpful to some of you.

Thanks @jnhansen ! I actually ended up writing my own, much lower level, version of this using the netcdf library. The reason I did that was because I was finding it hard to work out how to merge multiple datasets, then write the data out to a new netcdf file in chunks - I kept accidentally loading the entire merged dataset into memory at once. This might just be because I wasn't using the dask integration properly though.
Have you tried using your function to merge netcdf files, then write out a single file which is larger than RAM? Is that even possible in xarray?

Yes, xarray should support that very easily -- assuming you have dask installed:
ds = auto_merge('*.nc')
ds.to_netcdf('larger_than_memory.nc')

auto_merge conserves the chunk sizes resulting from the individual files. If the single files are still too large to fit into memory individually you can rechunk to smaller chunk sizes. The same goes of course for the original xarray.open_mfdataset.
I tested it on a ~25 GB dataset (on a machine with less memory than that).

I've been looking through the functions open_mfdataset, auto_combine, _auto_concat and concat to see how one might go about achieving this in general.
The current behaviour isn't completely explicit, and I would like to check my understanding with a few questions:

If you concat two datasets along a dimension which doesn't have a coordinate, then concat will not be able to know what order to concatenate them in, so it just does it in the order they were provided?

Consequently, although auto_combine can determine the common dimension to concatenate datasets over, it doesn't know anything about insertion order! unless the datasets have dimension coordinates, in which case the line

grouped = itertoolz.groupby(lambda ds: tuple(sorted(ds.data_vars)), datasets).values()

will only organise the datasets into groups according to the set of dimensions they have, but doesn't order the datasets within each group according to the values in the dimension coordinates?
We can show this because this (new) testcase fails:
@requires_dask
def test_auto_combine_along_coords(self):
    # drop the third dimension to keep things relatively understandable
    data = create_test_data()
    for k in list(data.variables):
        if 'dim3' in data[k].dims:
            del data[k]

    data_split1 = data.isel(dim2=slice(4))
    data_split2 = data.isel(dim2=slice(4, None))
    split_data = [data_split2, data_split1]  # Deliberately arrange datasets in wrong order
    assert_identical(data, auto_combine(split_data, 'dim2'))

with output
E       AssertionError: <xarray.Dataset>
E       Dimensions:  (dim1: 8, dim2: 9, dim3: 10, time: 20)
E       Coordinates:
E         * time     (time) datetime64[ns] 2000-01-01 2000-01-02 ... 2000-01-20
E         * dim2     (dim2) float64 0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0
E       Dimensions without coordinates: dim1, dim3
E       Data variables:
E           var1     (dim1, dim2) float64 1.473 1.363 -1.192 ... 0.2341 -0.3403 0.405
E           var2     (dim1, dim2) float64 -0.7952 0.7566 0.2468 ... -0.6822 1.455 0.7314
E       <xarray.Dataset>
E       Dimensions:  (dim1: 8, dim2: 9, time: 20)
E       Coordinates:
E         * time     (time) datetime64[ns] 2000-01-01 2000-01-02 ... 2000-01-20
E         * dim2     (dim2) float64 2.0 2.5 3.0 3.5 4.0 0.0 0.5 1.0 1.5
E       Dimensions without coordinates: dim1
E       Data variables:
E           var1     (dim1, dim2) float64 1.496 -1.834 -0.6588 ... 1.326 0.6805 -0.2999
E           var2     (dim1, dim2) float64 0.7926 -1.063 0.1062 ... -0.447 -0.8955

So the call to _auto_concat just assumes that the datasets are provided in the correct order:

concatenated = [_auto_concat(ds, dim=dim, data_vars=data_vars, coords=coords) for ds in grouped]

Therefore what needs to be done here is the groupby call needs to be replaced with something that actually orders the datasets according to the value in the dimension coordinates, works in N dimensions, and outputs a structure of datasets upon which _auto_concat can be called repeatedly, along every concatenation dimension?

Also, concat has a positions argument, which allows you to manually specify the concatenation order, but it's not used at all by auto_combine. In the main use case imagined here (concatenating the domains of multi-parallel simulation output) then the user will know the desired positions of each dataset, because it will correspond to how they divided up their domain in the first place. Perhaps an easier approach to providing for that use case would be to propagate the positions argument upwards so that the user can do something like
# User specifies how they split up their domain
domain_decomposition_structure = how_was_this_parallelized('output.*.nc')

# Feeds this info into open_mfdataset
full_domain = xr.open_mfdataset('output.*.nc', positions=domain_decomposition_structure)

This approach would be much less general but would dodge the issue of writing generalized N-D auto-concatenation logic.
Final point - this common use case also has the added complexity of having ghost or guard cells around every dataset, which should be thrown away. Clearly some user input is required here (ghost_cells_x=2, ghost_cells_y=2, ghost_cells_z=0, ...), but I'm really not sure what the best way to fit that kind of logic in is. Yet more arguments to open_mfdataset?

@TomNicholas I think your analysis is correct here.
I suspect that in most cases we could figure out how to tile datasets by looking at 1D coordinates along each dimension (e.g., indexes for each dataset), e.g., to find a "chunk id" along each concatenated dimension.
These could be used to build something like a NumPy object array of xarray.Dataset/DataArray objects, which could split up into a bunch of 1D calls to xarray.concat().
I would rather avoid using the positions argument of concat. It doesn't really add any flexibility compared to reordering the inputs with xarray.core.nputils.inverse_permutation.

Final point - this common use case also has the added complexity of having ghost or guard cells around every dataset, which should be thrown away. Clearly some user input is required here (ghost_cells_x=2, ghost_cells_y=2, ghost_cells_z=0, ...), but I'm really not sure what the best way to fit that kind of logic in is. Yet more arguments to open_mfdataset?

We could potentially just encourage using the existing preprocess argument.

I started having a go at writing the second half of this - the "n-dimensional-concatenation" function which would accept a grid of xarray.DataSet/DataArray objects (assumed to be in the correct order along all dimensions), and return a single merged dataset.
However, I think there's an issue with using

something like a NumPy object array of xarray.Dataset/DataArray objects.

My plan was to call np.apply_along_axis to apply the 1D xr.concat() function along each axis in turn, something like
from numpy import apply_along_axis
from xarray import concat

def concat_nd(obj_grid, concat_dims=None):
    """
    Concatenates a structured ndarray of xarray Datasets along multiple dimensions.

    Parameters
    ----------
    obj_grid : numpy array of Dataset and DataArray objects
        N-dimensional numpy object array containing xarray objects in the shape they
        are to be concatenated. Each object is expected to
        consist of variables and coordinates with matching shapes except for
        along the concatenated dimension.
    concat_dims : list of str or DataArray or pandas.Index
        Names of the dimensions to concatenate along. Each dimension in this argument
        is passed on to :py:func:`xarray.concat` along with the dataset objects.
        Should therefore be a list of valid dimension arguments to xarray.concat().

    Returns
    -------
    combined : xarray.Dataset
    """

    # Combine datasets along one dimension at a time
    # Start with last axis and finish with axis=0
    for axis in reversed(range(obj_grid.ndim)):
        obj_grid = apply_along_axis(concat, axis, arr=obj_grid, dim=concat_dims[axis])

    # Grid should now only contain one xarray object
    return obj_grid.item

However, testing this code with
def test_concat_1d(self):
    data = create_test_data()

    split_data = [data.isel(dim1=slice(3)), data.isel(dim1=slice(3, None))]

    # Will explain why I'm forced to create ndarray like this shortly
    split_data_grid = np.empty(shape=(2), dtype=np.object)
    split_data_grid[0] = split_data[0]
    split_data_grid[1] = split_data[1]

    reconstructed = concat_nd(split_data_grid, ['dim1'])

    xrt.assert_identical(data, reconstructed)

throws an error from within np.apply_along_axis
TypeError: cannot directly convert an xarray.Dataset into a numpy array. Instead, create an xarray.DataArray first, either with indexing on the Dataset or by invoking the `to_array()` method.

I think this is because even just the idea of having a ndarray containing xarray datasets seems to cause problems - if I do it with a single item then xarray thinks I'm trying to convert the Dataset into a numpy array and throws the same error:
data = create_test_data()
data_grid = np.array(data, dtype='object')

and if I do it with multiple items then numpy will dive down and extract the variables in the dataset instead of just storing a reference to the dataset:
data = create_test_data()
split_data = [data.isel(dim1=slice(3)), data.isel(dim1=slice(3, None))]
split_data_grid = np.array(split_data, dtype='object')
print(split_data_grid)

returns
[['time' 'dim2' 'dim3' 'var1' 'var2' 'var3' 'numbers']
 ['time' 'dim2' 'dim3' 'var1' 'var2' 'var3' 'numbers']]

when I expected something more like
numpy.array([<xarray.Dataset object at 0x7f94efa62278>, <xarray.Dataset object at 0x9f23phj10582>])

Is this the intended behaviour of xarray? Does this mean I can't use numpy arrays of xarray objects at all for this problem? If so then what structure do you think I should use instead (list of lists etc.)?

NumPy's handling of object arrays if unfortunately inconsistent. So maybe it isn't the best idea to use NumPy arrays for this.
Python's built-in list/dict might be better choices here. Something like:
def concat_nd(datasets):
    # find the set of dimensions across which to possibly merge
    # could possibly use OrderedSet here:
    # https://github.com/pydata/xarray/blob/v0.10.8/xarray/core/utils.py#L401
    all_dims = set(ds.dims for ds in datasets)
    # Create a map from each dimension to a tuple giving the size of each
    # dimension on an input dataset. Not all collections of datasets have consistent
    # sizes along each dimension, but the ones we can automatically concatenate do.
    # I recommend researching how "chunks" work in dask.array:
    # http://dask.pydata.org/en/latest/array-design.html
    # http://dask.pydata.org/en/latest/array-chunks.html
    chunks = {dim: ... for dim in all_dims}
    # find the sorted, de-duplicated union of all indexes along those dimensions
    # np.unique followed by wrapping with pd.Index()
    # might work OK for the "union" function here
    combined_indexes = {dim: union([ds.indexes[dim] for ds in datasets]) for dim in all_dims}
    # create a map mapping from "tile id" to dataset
    # get_indexes() should use pandas.Index.get_indexer to lookup ds.indexes[dim]
    # in the combined index, e.g., of type Dict[Tuple[int, ...], xarray.Dataset]
    indexes_to_dataset = {get_indexes(ds, chunks, combined_coords): ds for ds in datasets}
    # call concat() in a loop to construct the combined dataset

Thanks @shoyer for the description of how this should be done properly.
In the meantime however, I thought I would describe how I solved the problem in my last comment. My method works but you probably wouldn't want to use it in xarray itself because it's pretty "hacky".
To avoid the issue of numpy reading the __array__ methods of xarray objects and doing weird things, I simply contained each dataset within a single-element dictionary in order to hide the offending methods, i.e.
data = create_test_data()
data_grid = np.array([{'key': data}], dtype='object')

With this then creating something which will concatenate the numpy grid-like array of (dicts holding) datasets is quick:
from xarray import concat
import numpy as np

def _concat_nd(obj_grid, concat_dims=None, data_vars=None, **kwargs):
    # Combine datasets along one dimension at a time,
    # Have to start with last axis and finish with axis=0 otherwise axes will disappear before the loop reaches them
    for axis in reversed(range(obj_grid.ndim)):
        obj_grid = np.apply_along_axis(_concat_dicts, axis, arr=obj_grid,
                                       dim=concat_dims[axis], data_vars=data_vars[axis], **kwargs)

    # Grid should now only contain one dict which contains the concatenated xarray object
    return obj_grid.item()['key']

def _concat_dicts(dict_objs, dim, data_vars, **kwargs):
    objs = [dict_obj['key'] for dict_obj in dict_objs]
    return {'key': concat(objs, dim, data_vars, **kwargs)}

In case anyone is interested then this is how I've (hopefully temporarily) solved the N-D concatenation problem in the case of my data.

I was thinking about the general solution to this problem again and wanted to clarify some things.
Currently concat() will concatenate datasets in the order they are supplied, and will not check that the resulting dimensions indexes are monotonic. This behvaiour violates CF conventions (as mentioned by @aluhamaa) but currently passes silently.
I think that any general multi-dimensional version of the auto_combine() function (and therefore open_mfdataset()) should:

If possible use the values in the dimension indexes to arrange the datasets so that the indexes are monotonic,

Else issue a warning that some of the indexes supplied are not monotonic,

Then instead concatenate the supplied datasets in the order supplied (for some N-dimensional definition of "order"). The warning should tell the user that's what it's doing.

This approach would then be backwards-compatible, accommodate users whose data does not have monotonic indexes (they would just have to arrange their datasets into the correct order themselves first), while still doing the obviously correct thing in unambiguous cases.
However this would mean that users wanting to do a multi-dimensional auto_combine on data without monotonic indexes would have to supply their datasets in some way that specifies their desired N-dimensional ordering. This could be done as list-of-lists, combining the inner-most dimensions first, e.g. [[x1y1, x2y1], [x1y2, x2y2]], concat_dims=['y', 'x']. But auto_combine would then have to be able to handle this type of input, and quickly distinguish between the two cases of monotonic & non-monotonic indices. Is this the behaviour which we want?
Also I'm assuming we are not going to provide functionality to handle uneven sub-lists, e.g. [[t1x1, t1x2], [t2x1, t2x2, t2x3]]?

we probably want to support all permutations of 1/2.

This is fine though right? We can do all of this, because it should compartmentalise fairly easily shouldn't it? You end up with logic like:
def auto_combine(ds_sequence, infer_order_from_coords=True, check_alignment=True):
    if check_alignment:
        # Check alignment along non-concatenated dimensions (your (2))

    if infer_order_from_coords:
        # Use coordinates to determine tile_ID for each dataset in N-D (your (1))
    else:
        # Determine tile_IDs by structure of input in N-D (i.e. ordering in list-of-lists)

    # Join everything together
    return _concat_nd(tile_IDs, ds_sequence)

I'm not sure we need to support this yet

We don't need to, but I don't think it would be that hard (if the structure above is feasible), and I think it's a common use case. Also there's an argument for putting in special effort to generalize this function as much as possible because it lowers the barrier to entry for xarray for new users. Though perhaps I'm just biased because it happens to be my use case...
Also if we know what form the tile_IDs should take then I can write the _concat_nd function regardless of what happens with the alignment logic.

This is fine though right? We can do all of this, because it should compartmentalise fairly easily shouldn't it? You end up with logic like:

Yes, this seems totally fine to me.

We don't need to, but I don't think it would be that hard (if the structure above is feasible), and I think it's a common use case. Also there's an argument for putting in special effort to generalize this function as much as possible, because it lowers the barrier to entry for xarray for new users. Though perhaps I'm just biased because it happens to be my use case...

Sure, no opposition from me if you want to do it! 👍

@shoyer see my PR trying to implement this (#2553).
Inputting a list of lists into auto_combine() is working, but it wasn't obvious to me how to handle this within open_mfdataset(). A few approaches:

I could try to somehow generalise all of the list comprehensions in open_mfdataset(), which would be messy but general

Write some kind of recursive iterator function which would allow me to apply the preproccess and dask.compute functions to all the objects in the nested list

Separate the logic so that the input is assumed to be a flat list unless infer_order_from_coords=True

Always recursively flatten the input before opening the files, but store the structure somehow

Closed by #2616

I'm running xarray v0.12.1, released in June 5 of this year, which should include @TomNicholas's fix merged back in Dec of last year. However, the original MWE still gives the unwanted result with the repeated coordinates.

I can confirm that this issue persists in v0.12.3 as well.

Hi @ewquon I think you need to specify combine="by_coords" or combine="nested" to get the new behaviour.

Thanks @dcherian. As you suggested, I ended up using v0.12.3 and xr.combine_by_coords() to get the expected behavior.


[storage-blob]Add implement for Filter blobs by tags on container.

Add implement for Filter blobs by tags on container.

API changes have been detected in @azure/storage-blob. You can review API changes here

/check-enforcer reset

/check-enforcer reset

/check-enforcer reset

/check-enforcer evaluate


chore(trading): add close position button back to console

Related issues 🔗
Closes #5351
Description ℹ
Re-enable close position button.

this looks good to me


Days Left Not Calculated Correct for Out-Of-Season Trees

-> Must be 9 days of fall + 28 days of winter

-> must be 10 days of fall + 28 days of winter + 28 days of spring

Must be 9 days of fall + 28 days of winter

28 - 17 = 11, plus winter is 39.

Must be 10 days of fall + 28 days of winter + 28 days of spring

Apricots are spring fruit, too. So it's also 39.
But now the summer fruits are not correct:

Should be 39 + 28 = 67
And we aren't counting the fact that fruit trees do not grow in winter (or do they?)


Feature/spo listitem add

This PR adds a command to add list items as per #270

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.:x: mpowney sign nowYou have signed the CLA already but the status is still pending? Let us recheck it.

Coverage remained the same at 100.0% when pulling 3a90737c329cfac81dd9ec100236a11ffbc00dfb on mpowney:feature/spo-listitem-add into ec3bf82d92176710ec8d534a8d9fc9d181274161 on SharePoint:dev.

Awesome! I’ll have a look at it shortly. Meanwhile, could you sign the CLA so that we can merge your PR?

Very nicely done, especially given the complexity and the number of moving parts.
Merged manually, with a couple of fixes:

updated option signatures to indicate required and optional arguments
added tracking usage of optional properties to the telemetry
added the missing .md docs file

Thank you for the contribution! 👍


Accidental transfer of BTC from Electrum Wallet to Electron Cash wallet - solution?

Hi, I mistakenly transferred some BTC from my electrum wallet to my electron cash wallet. Can any one on the team advice on how to transfer it back?
Much appreciated,
M.

You mean you spent your BTC to an address given to you by Electron Cash?  If that is the case, create a BTC Electrum wallet with the same seed as your Electron Cash wallet and you should have access to the funds.

If you remember which address, you can also go to the addresses section of EC and copy the private key for that particular address IIRC

Hello there and many thanks for the prompt reply.
Yes, I sent the BTC from my electrum wallet to my electron cash wallet.
If I understand correctly, I simply need to download a new Electrum Wallet and the same seed as the one for the Electron Cash Wallet.
Is that correct?
You also wrote, "If you remember which address, you can also go to the addresses section of EC and copy the private key for that particular address IIRC”
Both wallets are on my computer, so I have the EC address. However, I am not sure what you mean here by copying the private key for that address - what would I do next?
Once again, thank-you - much appreciated.
M

On 18 Jul 2018, at 14:29, fyookball<EMAIL_ADDRESS><EMAIL_ADDRESS>wrote:
You mean you spent your BTC to an address given to you by Electron Cash? If that is the case, create a BTC Electrum wallet with the same seed as your Electron Cash wallet and you should have access to the funds.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub https://github.com/fyookball/electrum/issues/802#issuecomment-405931091, or mute the thread https://github.com/notifications/unsubscribe-auth/AndbBTaPWzfoGDkUjJtv_vE_mIzvb0UHks5uHzhTgaJpZM4VUkdf.

PRIVATE & CONFIDENTIAL.  NOTHING IN THESE COMMUNICATIONS IS TO BE CONSTRUED AS LEGAL ADVICE.

Installing the electrum wallet is probably the easiest - try that first

Many thanks for that: it worked a treat.
Much obliged!

On 18 Jul 2018, at 16:32, marceloneil<EMAIL_ADDRESS><EMAIL_ADDRESS>wrote:
Installing the electrum wallet is probably the easiest - try that first
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub https://github.com/fyookball/electrum/issues/802#issuecomment-405973628, or mute the thread https://github.com/notifications/unsubscribe-auth/AndbBTc89vru4yJaVpLGVTL0pp8UN48Pks5uH1TxgaJpZM4VUkdf.

PRIVATE & CONFIDENTIAL.  NOTHING IN THESE COMMUNICATIONS IS TO BE CONSTRUED AS LEGAL ADVICE.

So where's our 10% finder's fee!  🥇
(just kidding)


Make Processed Images Uniform

Seeks to make rasters uniform.  Should get rid of any and all whack-a-mole style errors here. Should simplify the understanding. Conceptually this takes alpha into account and uses it to generate a greyscale L image. This should be the result of any actualize operation. The core idea behind this technology is displaying the black and white as black and transparent. This is done by using the black and white image as the alpha-mask of a pure black image and displaying that. Then under the hood, all images that with any processing are greyscale. If the image is not L to start, we peel off the alpha and combine that with the image to make alpha values entirely white.

All the raster stuff is transitioned to using dewhite to make the preview images. This includes images that are full color and are not changed. They are merely displayed in black and transparent.
All images are actualized and (should-be) Raster Wizard'ed to black/transparent images. The viewed bitmap is automatically converted regardless of the original mode of the image.
Black/Transparent images are stored in mode L image, which is properly black and white but viewed as black/transparent.
Actualize makes the images actually black and transparent, and crops the size correctly.

However:

Has not been extensively checked with RasterWizard.
May avoid applying to an image from Execute-Job if it matches the old criteria but should actually trim and modify the image.
Has not been tested for inverted images and inverted images might prefer being white/transparent images.

I'm biased but I think we should consider [this one over #600].

I am not biased and I have no issues considering #601 vs #600.
I will need to try this code against my test cases, but I wonder whether:
a. We should reduce coloured images to greyscale every time - I have no idea either way but I shied away from going this far with my code but if you think it is OK, then it is fine with me;
b. If we are converting to "L", whether the code should mimic the greyscale code in RasterScripts;
c. Whether we should aim for an LA mode which preserves alpha rather than convert transparent to white (which I would personally like to see because you don't end up with white background overlaying other elements);
d. Whether the mask code is correct 255 - e rather than 255 if e == 0 else 0
e. Whether #601 addresses some of the stuff that I think still needs fixing as described above.
Perhaps we should combine the best of both.

Discussion on #599

Responded in the issue #599 (trying to keep things organized)

Looking good except some minor stuff:

After right-click actualise, scene is not updated with cropped image size.
In raster wizard Gravy, with grayscale disabled and tone enabled there are some light gray artifacts showing in the Heather Stone image.

Otherwise looking very good!!!!
Once again you have proven your coding awesomeness!!


chore(Internal): :bookmark: new release candidate

This PR was generated via github actions workflow
Don't squash merge this PR

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you all sign our Contributor License Agreement before we can accept your contribution.1 out of 2 committers have signed the CLA.:white_check_mark: WasiqB:x: github-actions[bot]You have signed the CLA already but the status is still pending? Let us recheck it.


Support typing.TypedDict on Python>=3.9.2

Initial Checks

[X] I have searched Google & GitHub for similar requests and couldn't find anything
[X] I have read and followed the docs and still think this feature is missing

Description
See #5142 for background
Affected Components

[ ] Compatibility between releases
[ ] Data validation/parsing
[ ] Data serialization - .model_dump() and .model_dump_json()
[ ] JSON Schema
[ ] Dataclasses
[ ] Model Config
[X] Field Types - adding or changing a particular data type
[ ] Function validation decorator
[ ] Generic Models
[ ] Other Model behaviour - model_construct(), pickling, private attributes, ORM mode
[ ] Plugins and integration with other tools - mypy, FastAPI, python-devtools, Hypothesis, VS Code, PyCharm, etc.

We went with only supporting it on >3.11


document API

Clear and concise description of the problem
it is currently hard to find how to use the REST API in the documentation
Suggested solution
add documentation with a brief example of how to use the api
Alternative
reopen #293
Additional context
No response
Validations

[X] Read the Contributing Guidelines.
[X] Read the docs.
[X] Check that there isn't already an issue that request the same feature to avoid creating a duplicate.

duplicate of  #292


Jax eigsh_lanczos silently gives NaN when num_krylov_vecs > n

This in particular happens when num_krylov_vecs is not supplied and the function is applied to too small an operator

I'll have a look

Indexing outside of the shape of the array will throw NaNs silently in JAX, that's likely the issue.

I'd recommend we put something like num_krylov_vecs = min(num_krylov_vecs, n-1) somewhere far enough down the execution path that n-1 is available.

Sounds good, though I‘d like to investigate why the function doesnt stop
once it hits an invariant subspace
On Thu, Aug 6, 2020 at 4:06 PM Adam Lewis<EMAIL_ADDRESS>wrote:

I'd recommend we put something like num_krylov_vecs = min(num_krylov_vecs,
n-1) somewhere far enough down the execution path that n-1 is available.
—
You are receiving this because you were assigned.
Reply to this email directly, view it on GitHub
https://github.com/google/TensorNetwork/issues/771#issuecomment-670165804,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AE7RWE4M463VR7BHBAYJY7DR7MEK5ANCNFSM4PW44UMA
.

@alewis, can you provide me with a minimal example?

The following example works fine for me:
import tensornetwork as tn
import numpy as np
import jax
from jax import config
config.update('jax_enable_x64', True)
be = tn.backends.backend_factory.get_backend('jax')
def matvec(x, mat):
    return mat @ x
D=10
H = np.random.rand(D,D)
H += H.T
init = np.random.rand(D)
be.eigsh_lanczos(A=matvec, args=[H], initial_state=jax.numpy.array(init),numeig=3, reorthogonalize=True, num_krylov_vecs=100,tol=1E-10)

Let me try and solve this one. I haven't had to do a bug fix in a while (Because everything we write is so great!).

@alewis I tried the code you wrote but the test is passing. Did I miss anything?
def test_eigsh_lacnan():
  backend = jax_backend.JaxBackend()
  def matvec(x, mat):
      return mat @ x
  D=10
  np.random.seed(1)
  H = np.random.rand(D,D).astype(np.float64)
  H += H.T
  init = np.random.rand(D).astype(np.float64)
  eigs, results = backend.eigsh_lanczos(
      A=matvec,
      args=[H],
      initial_state=jax.numpy.array(init),
      numeig=3,
      reorthogonalize=True,
      num_krylov_vecs=100,
      tol=1E-10)
  assert not np.isnan(eigs).any()
  assert not np.isnan(results).any()

It's possible I misdiagnosed this - I'll try and see what's up tomorrow
On Fri, Aug 7, 2020, 01:25 Chase Roberts<EMAIL_ADDRESS>wrote:

@alewis https://github.com/alewis I tried the code you wrote but the
test is passing. Did I miss anything?
def test_eigsh_lacnan():
backend = jax_backend.JaxBackend()
def matvec(x, mat):
return mat @ x
D=10
np.random.seed(1)
H = np.random.rand(D,D).astype(np.float64)
H += H.T
init = np.random.rand(D).astype(np.float64)
eigs, results = backend.eigsh_lanczos(
A=matvec,
args=[H],
initial_state=jax.numpy.array(init),
numeig=3,
reorthogonalize=True,
num_krylov_vecs=100,
tol=1E-10)
assert not np.isnan(eigs).any()
assert not np.isnan(results).any()
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/google/TensorNetwork/issues/771#issuecomment-670328985,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAINHBUAXYQLEDKWUCWNBKDR7OF25ANCNFSM4PW44UMA
.

Actually, it turns out that eigs (or more accurately _implicitly_restarted_arnoldi) has a bug that causes it to return NaN in certain cases.

I'm still getting it from eigsh_lanczos though - I'm trying to pinpoint exactly when

can you send me the code?

or post it here

def test_eigsh_lanczos():
  """
  Compares linalg.krylov.eigsh_lanczos with backend.eigsh_lanczos.
  """
  n = 2
  n_kry = 4
  shape = (n, n)
  dtype = np.float32
  A = jax.numpy.ones(shape, dtype=dtype)
  A = 0.5 * (A + A.T)
  x0 = jax.numpy.ones((n, 1), dtype=dtype)

  def array_matvec(B):
    return A @ B
  be = tensornetwork.backends.backend_factory.get_backend('jax')
  test_result = be.eigsh_lanczos(array_matvec, initial_state=x0,
                                 num_krylov_vecs=n_kry)
  tev, teV = test_result
  assert np.all(np.isfinite(np.ravel(np.array(tev))))

  for t in teV:
    assert np.all(np.isfinite(np.ravel(t)))

Ignore the docstring. Does that code pass for you?

It doesn't, and I think the reason is that the matrix you are passing is singular

It's actually new information to me that this algorithm is expected to fail for singular matrices. Why does it only fail in Jax?

I just checked and when n = 8, n_kry = n - 1 still gives NaN. So indeed it is probably to do with the matrix and not with the number of Krylov vectors.

What a weird coincidence that implicit Arnoldi had some apparently unrelated bug

lol, I guess  we're lucky

It's actually new information to me that this algorithm is expected to fail for singular matrices. Why does it only fail in Jax?

I'm not sure actually. Lanczos usually works only well for extremal eigenvalues. If the lowest state is degenerate you get a random vector in the subspace. This needs still to be investigated, I'm just saying that the reason is related to your choice of matrix. Note that as you increase n, that matrix becomes crazy singular, so it's probably not the best choice for testing.


XIVY-11279 Adapt UI Mock styles

Accordions (List) instead of Tabs for different secion data
Create more own components (like Button, Textarea, Input)
Replace LabelInput component with Fieldset
Improve ErrorFallback style

:clap: weekend granted :smile:


Only test revdeps on 4.11 to save the cluster

Merging this for now to help until we have better job priorities.


Support adding non-Properties to TableView

Rename properties: to columns: and support adding suitable non-Property objects. Anything that's toE()-able and optionally has a columnLabel, should work.  Main motivation is to support adding Actions to TableViews. Another possible use would be to add multiple row-selection support.

Done.


Add schedule's name to OnCallForScheduleCard

It would be great to add a schedule's name next to the team owner on the OnCallForScheduleCard as one team could own multiple schedules and there are cards with the same name in this case which could be misleading.
It could be as simple as:
{schedule.ownerTeam.name} | {schedule.name}

here
Or you could add the "Team:" and "Schedule:" labels so it's more explicit.

Also noticed that the search is done by schedule's name, not the Team(as the placeholder says)

@K-Phoen Could you please take a look? :)

Hey!
You might be interested in https://github.com/K-Phoen/backstage-plugin-opsgenie/pull/98 :)

Also noticed that the search is done by schedule's name, not the Team(as the placeholder says)

@K-Phoen Doesn't seem that this one was fixed as a part of #98 🤔


[WIP] Add heartbeat patch to sentinel branch

Work in progress. I've resolved the basic merge conflicts but need to still test this and resolve a couple of comments I left while merging conflicts

Apparently our version is missing some of andyqzb's updates to this branch, too.


Build from source

How to build from source?  I want to debug

Done.  Here's a direct link to the new docs:  https://edgedb.com/docs/internals/dev