Editing .csx: Three Questions

Environment data
dotnet --info output:
.NET Command Line Tools (1.0.0-preview2-003131)
Product Information:
Version:            1.0.0-preview2-003131
Commit SHA-1 hash:  635cf40e58
Runtime Environment:
OS Name:     Windows
OS Version:  10.0.15063
OS Platform: Windows
RID:         win10-x64
VS Code version: 1.18.0
C# Extension version: 1.13.0
Steps to reproduce
I want to edit .csx files. Generally that works file (IntelliSense etc.).
Question 1
Can I somehow add more pre-declared using directives and/or assembly references WITHOUT typing "using .." or "#r .." in the .csx source code, e.g. by adding them to some json file?
Question 2
Is it possible to have the documentation (from .xml files generated together with my assemblies) in the IntelliSense popups?
Question 3
When I use the #r instruction to reference an assembly, can I use a windows environment variable in the path string that follows #r ?
Thanks!

cc @filipw

Can I somehow add more pre-declared using directives and/or assembly references WITHOUT typing "using .." or "#r .." in the .csx source code, e.g. by adding them to some json file?

The easiest thing you can do for "reusable" #r directives is to place them into a separate .csx file and then reuse that .csx file (since a .csx file can load other .csx files).
For example imagine the following pseudo main.csx:
#r "lib/foo.dll"
#r "bar.dll"

using Foo;
using Bar;

var x = new TypeFromFoo();
var y = new TypeFromBar();

Console.WriteLine(x.ToString());
Console.WriteLine(y.ToString());

You could put both #r into for example references.csx:
#r "lib/foo.dll"
#r "bar.dll"

And then update the main.csx to have the following format:
#load "references.csx"

using Foo;
using Bar;

var x = new TypeFromFoo();
var y = new TypeFromBar();

Console.WriteLine(x.ToString());
Console.WriteLine(y.ToString());

This way you can reuse references.csx across various CSX files. Note that you cannot use that "shared" references.csx to contain using statetments - that's the nature of C# itself - using statements are always scoped to the current file only.

Is it possible to have the documentation (from .xml files generated together with my assemblies) in the IntelliSense popups?

Yes OmniSharp supports that. If your DLL is generated with documentation XML, and that documentation XML is located in the same folder as the DLL you are referencing, OmniSharp will load that documentation and use it in intellisense. In our above example, OmniSharp would be looking for lib/foo.XML and bar.XML documentation files. If you already have such a set up and yest still can't see the documentation, then it is a bug - please open a new issue with repro steps.

When I use the #r instruction to reference an assembly, can I use a windows environment variable in the path string that follows #r ?

No this is not supported. #r and #load are pre-processor directives and must be single line constants. This is defined in the C# spec.
Hope this helps! 🍻

Can I somehow add more pre-declared using directives and/or assembly references WITHOUT typing "using .." or "#r .." in the .csx source code, e.g. by adding them to some json file?

Oh, one more note about this. If you are using CSI to run your scripts it allows you to pass using statements and assembly references as command line parameters. For example you could then write our hypothetical script from my previous comment, in the following way - completely skipping usings and imports:
var x = new TypeFromFoo();
var y = new TypeFromBar();

Console.WriteLine(x.ToString());
Console.WriteLine(y.ToString());

You'd need to supply that at runtime though:
csi.exe main.csx /usings:Foo,Bar /imports:foo.dll,bar.dll

This would work for script execution. However, in such case you'd lose the possibility of getting C# language services in OmniSharp because - of course - OmniSharp wouldn't know about these missing usings and imports that only get passed in at runtime. If this is something that would be important for you, we could look into supporting such scenario via a predefined imports file.

@filipw Thanks for your comments!
The reason why I'm asking how I could add some references + usings is that I recognize that there seem to be already some defaults behind the scenes. For example, I don't need to add a "using System.Linq;" statement in my .csx file - is seems to be pre-declared and I'd like to add a few things to that list (if it exists somewhere). Is that possible?
As for the documentation. Not only my own .xml documentation isn't displayed, but also the .NET documentation (e.g. for methods like Console.WriteLine() does not appear in the IntelliSense popup. Only the signature of the method is displayed, but no help text. If there a magic switch somewhere?
Thanks

Oh, one more note about this. If you are using CSI to run your scripts it allows you to pass using statements and assembly references as command line parameters...

Yes, thanks, this is exactly the background and I want to specify using and references that way. More precisely, I don't use CSI but my own scripting host process that utilizes Microsoft.CodeAnalysis.CSharp.Scripting ("Roslyn Scripting") and my host process sets up the options in a similar way like when using CSI with the command line options you mentioned. That's why I don't like to add it again in the .csx source to satisfy the editor.

If this is something that would be important for you, we could look into supporting such scenario via a predefined imports file.

Yes, that would really be great! Is that easy to implement?

The reason why I'm asking how I could add some references + usings is that I recognize that there seem to be already some defaults behind the scenes. For example, I don't need to add a "using System.Linq;" statement in my .csx file - is seems to be pre-declared and I'd like to add a few things to that list (if it exists somewhere). Is that possible?

Yes there is a fixed set of references and using statements that are pre-imported. This is part of the (loosely agreed with the Roslyn Scripting team 😄) CSX standard and at the moment consists of:

Assembly references:

System
System.Core
Microsoft.CSharp
System.ValueTuple.dll

namespaces

System
System.IO
System.Collections.Generic
System.Console
System.Diagnostics
System.Dynamic
System.Linq
System.Linq.Expressions
System.Text
System.Threading.Tasks

Everything beyond that has to be imported by the user.
Now, in OmniSharp we try to drive scripting features from the perspective of CSI. So actually, CSI also supports the notion of .rsp files, which are effectively "seed files".
In fact, if you are on a Windows machine, and have MSBuild installed, you are likely to have a C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\Roslyn\csi.rsp file, which defines the defaults for CSI (as listed above).
A sample .rsp file looks like this:
/r:lib\foo.dll
/r:bar.dll
/u:Foo
/u:Bar

Looks like this would suit your needs as you could potentially benefit from using .rsp files for injecting your own namespaces and references into OmniSharp intellisense.
OmniSharp doesn't support that at the moment, but we can add it, it's not a big change - and I think it would be a nice addition as it would give you a possibility to tune OmniSharp to suit exactly the scenario like you describe - having custom CSX hosts / runners, which otherwise are difficult to capture.

@filipw
That is EXACTLY what I need!

@KarloX2 OK great. I spun off a new issue from our discussion https://github.com/OmniSharp/omnisharp-roslyn/issues/1024
Regarding XML docs, the docs for "system" types (default references) on desktop .NET are currently not supported - this is tracked here https://github.com/OmniSharp/omnisharp-roslyn/issues/685. The reason is, on desktop CLR, we reference those default system assemblies from the currently running OmniSharp process and at that moment the doc info is not available.
It is supported however in CoreCLR scripting:

Normal references (=your own DLL docs) should definitely load docs correctly, if you have a repro example could you please post in that tracking issue? Thanks! I'll have a look into this myself too.

@filipw Thanks! I created a new issue: https://github.com/OmniSharp/omnisharp-vscode/issues/1858


Any examples for Flask-RestPlus Resource constructors ?

Hi, I'm completely new to python world so excuse my lack of knowledge.
I read in the documentation that this also supports Flask-RestPlus Resource constructors, even though I could find neither here or on the internet any decent example that uses Flask-RestPlus with this library.
I tried my self and what I reached is that I need to consider the API resource like any other class and configure it with the binder, is this the correct way to do it?, because in the examples (while using with bare Flask) there was no need to configure the routes, as they are already a function, not a class, I don't know if this is the reason.

There's an example piece of code in the test suite, I hope this helps.

Actually this example is ver simplified, here's a question I posted on Stackoverflow if you can have a look at:
https://stackoverflow.com/questions/57806445/using-flask-injector-with-flask-restplus-causes-an-error-when-calling-the-api-re

Strange thing, when the resource's constructor is written like this:
def __init__(self, some_input: type_of_input, **kwargs):
It works, but if I removed the **kwargs it will not, I think Flask-Injector is passing the api variable through kwargs for some reason.
Even if I didn't call the super().__init__(*args, **kwargs) it still works.
What's the reason that I have to add kwargs when using the injector but not when I don't use it?

This is the signature of Flask-RESTPlus's Resource constructor:
    def __init__(self, api=None, *args, **kwargs):
        # ...

(source)
The api parameter is required in order for Resource to operate correctly. flask-injector hardcodes this knowledge and passes api behind the scenes.
If you want you can simplify your constructor to
def __init__(self, some_input: type_of_input, api):
    super().__init__(api)
    # ...

But that's as far as the simplifications will go right now.

dependency_injector needs that constructor for calling itself, I've been diving into the documentation and no one mentions that this is a thing to consider, maybe should be included.


Merge refs/heads/temp-branch-6404067075 into alpha

Merge refs/heads/temp-branch-6404067075 into alpha

This PR has not been merged into alpha. Please fix the issues and re-open the PR.

This PR has not been merged into alpha. Please fix the issues and re-open the PR.

This PR has been merged into alpha. Thanks for your contribution!


worker: refactor type parameter T to associated type

Signed-off-by: zhongzc<EMAIL_ADDRESS>What problem does this PR solve?
https://github.com/tikv/tikv/blob/f8a68b46d2436f76f0822a245911d96151aa4965/components/tikv_util/src/worker/mod.rs#L72-L76
The type parameter T in Runnable indicates that a runner that implements Runnable can handle messages of a range of types. However, In TiKV, every runner is only implemented for messages of a concrete type. IMO, it can be replaced by an associated type in this case.
What is changed and how it works?

Change trait Runnable to:

pub trait Runnable {
    type Task: Display;

    /// Runs a task.
    fn run(&mut self, _: Self::Task) {
        unimplemented!()
    }

    // other methods ...
}

Check List
Tests

Unit test
Integration test

Release note

refactor codebase

/cc @breeswish @BusyJay

It's designed on purpose to make worker not aware of what runner type is. It's more flexible and make Runner in a limited scope as caller should only care about what Task can be handled.
A concrete Runner doesn't have to be able to handle only one concrete Task, but I'm OK with the associated type though.

It's designed on purpose to make worker not aware of what runner type is. It's more flexible and make Runner in a limited scope as caller should only care about what Task can be handled.
A concrete Runner doesn't have to be able to handle only one concrete Task, but I'm OK with the associated type though.

Thanks for your command.
You mention that it's for flexibility. But what I saw in TiKV is that a worker can only spawn zero or one thread for a runner to consume all messages from the scheduler.
In my view, only that a worker spawns threads for two or more different runners that consume messages from the same channel can get the benefits.
I think it's worthy to reduce the so-called flexibility to increase readability.

I don't think it's a good idea. There are several places in the code that doesn't even spawn any Runner. All they need is just a place holder for scheduler, which is never used in particular tests.  PTAL @BusyJay

/merge

/merge

/merge


File Dropping

[x] I have reset Atom to defaults prior to submitting report.
[ ] I have not reset Atom to defaults prior to submitting report.

Description

At my job I am on a team of front-end developers. The first laptop they gave me was a macbook from mid 2014. Atom and Atom-beta worked fine for me. I've noticed over the years that not everyone else is able to do the file dropping from the atom left side directory. We use this function multiple times a day to change directories before running gulp. On the people's laptops who it doesn't work, we realized we could still right click, copy full path, and paste.
They swapped out my old 2014 macbook for a new model with the annoyingly large trackpad. Now I have installed only 3 packages, emmet, ide-terminal, and beautify. The file dropping doesn't work on my new laptop, a MacBook Pro (15-inch, 2018).
Steps to reproduce

drag a file from the left side directory to ide-terminal

Expected behavior:
The path would appear in the terminal
Actual behavior:
nothing
Reproduces how often:
100% for those of us it does not work for.
Versions

> atom --version
Terminal says: `bash: atom: command not found.` 1.44.0 x64

> apm --version
Terminal says: `bash: apm: command not found.`

OS name and version: macOS Mojave 10.14.6
Platformio-ide-terminal version: 5.0.1
Additional Information

Platformio-ide-terminal version: 5.0.1

5.0.1?? you must be reporting this issue from another fork
try https://github.com/bus-stop/terminus or https://github.com/bus-stop/x-terminal


Cross-compile the plugin against 0.13.15 and 1.0.0-M6

This PR fixes #115.
I had to update the two CustomRunnerApp in the scripted tests two use the main() method. I ran into the IncompatibleClassChangeError issue, changes fix #66.
Now you have to use ^ scripted and ^ publishSigned to cross-compile with the correct sbt version (see the 0.13.16-M1 release notes).

Note that are still one or two deprecation warnings that can be addressed in a subsequent PR.

Bumped to M6 to see if it builds

scipted breaks:

java.lang.NoSuchMethodException: sbt.test.ScriptedTests$.run(java.io.File, boolean, [Ljava.lang.String;, java.io.File, [Ljava.lang.String;)
	at java.lang.Class.getMethod(Class.java:1778)
	at sbt.ScriptedPlugin$$anonfun$scriptedRunTask0.89€.apply(ScriptedPlugin.scala:39)
	at sbt.ScriptedPlugin$$anonfun$scriptedRunTask0.89€.apply(ScriptedPlugin.scala:38)
	at scala.Function1$$anonfun$compose0.89€.apply(Function1.scala:47)
	at sbt.$tilde$greater$$anonfun$$u22190.89€.apply(TypeFunctions.scala:40)
	at sbt.std.Transform$$anon3.56€.work(System.scala:63)
	at sbt.Execute$$anonfun$submit0.89€$$anonfun$apply0.89€.apply(Execute.scala:228)
	at sbt.Execute$$anonfun$submit0.89€$$anonfun$apply0.89€.apply(Execute.scala:228)
	at sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:17)
	at sbt.Execute.work(Execute.scala:237)
	at sbt.Execute$$anonfun$submit0.89€.apply(Execute.scala:228)
	at sbt.Execute$$anonfun$submit0.89€.apply(Execute.scala:228)
	at sbt.ConcurrentRestrictions$$anon3.56€$$anonfun0.89€.apply(ConcurrentRestrictions.scala:159)
	at sbt.CompletionService$$anon1.78€.call(CompletionService.scala:28)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)
[error] (plugin/*:scriptedRun) java.lang.NoSuchMethodException: sbt.test.ScriptedTests$.run(java.io.File, boolean, [Ljava.lang.String;, java.io.File, [Ljava.lang.String;)
[error] Total time: 108 s, completed Jun 12, 2017 9:33:45 AM

is this expected @eed3si9n plugin upgrade or sth else?

That's https://github.com/sbt/sbt/issues/3245.
Can you update with the following snippet and try again? It should work:
ScriptedPlugin.scripted := {
  val args = ScriptedPlugin.asInstanceOf[{
    def scriptedParser(f: File): complete.Parser[Seq[String]]
  }].scriptedParser(sbtTestDirectory.value).parsed
  val prereq: Unit = scriptedDependencies.value
  try {
    if((sbtVersion in pluginCrossBuild).value == "1.0.0-M6") {
      ScriptedPlugin.scriptedTests.value.asInstanceOf[{
        def run(
          x1: File,
          x2: Boolean,
          x3: Array[String],
          x4: File,
          x5: Array[String],
          x6: java.util.List[File]
        ): Unit
      }].run(
        sbtTestDirectory.value,
        scriptedBufferLog.value,
        args.toArray,
        sbtLauncher.value,
        scriptedLaunchOpts.value.toArray,
        new java.util.ArrayList()
      )
    } else {
      ScriptedPlugin.scriptedTests.value.asInstanceOf[{
        def run(
          x1: File,
          x2: Boolean,
          x3: Array[String],
          x4: File,
          x5: Array[String]
        ): Unit
      }].run(
        sbtTestDirectory.value,
        scriptedBufferLog.value,
        args.toArray,
        sbtLauncher.value,
        scriptedLaunchOpts.value.toArray
      )
    }
  } catch { case e: java.lang.reflect.InvocationTargetException => throw e.getCause }
}

I'll try to fix this at the core and you can ditch that code in the next RC.

@ktoso I will try to add this fix tonight, or you prefer to wait for a proper fix in the upstream project?

I would appreciate if you use that fix. We don't know if this is going to be released before the release candidate yet, and this is blocking my migration to 1.0 in Zinc.

@lomigmegard Thanks. Tests are passing @ktoso.

Thanks a ton @lomigmegard  @jvican
Shall I release a version then?

Yes please :)

So... I'm unable to publish correctly for 0.13.16-M1 (so that it lands as 2.12). I don't see how to solve it, requesting help @eed3si9n @jvican
^publish ing also does not work correctly, it releases

Ok, managed to get it working. ^ was failing before it got to the right version.

Yay!!

This is a Scala compiler bug. You need to abstain from using App in
projects that are classpath scanned by java annotation processors (like
JMH) as a workaround
https://github.com/scala/bug/issues/10487

Thanks for pointing that out.


Enable C++ 20

Brief description
The C++ 20 standart was enabled in CMake build.
Type treats and memory object handling was improved by using new standard features.

Codecov Report

Merging #18 (2224bbf) into master (f86da97) will not change coverage.
The diff coverage is 100.00%.

@@            Coverage Diff            @@
##            master       #18   +/-   ##
=========================================
  Coverage   100.00%   100.00%
=========================================
  Files           12        12
  Lines          790       792    +2
=========================================
+ Hits           790       792    +2

Impacted Files
Coverage Δ

include/libmodules/linked_list.hpp
100.00% <ø> (ø)

include/libmodules/spy_pointer.hpp
100.00% <ø> (ø)

test/emitter_test.cpp
100.00% <100.00%> (ø)

test/proxy_receiver_test.cpp
100.00% <100.00%> (ø)

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update f86da97...2224bbf. Read the comment docs.


Publishing an app as standalone using RID win-x64 throws 'Unable to load DLL 'libuv': The specified module could not be found.'

Repro

clone repo https://github.com/kichalla/libuverrorrepro
dotnet restore
dotnet publish -r win-x64
execute the .exe that gets generated as part of the above step and you should see an error like below:

Unhandled Exception: System.IO.IOException: Failed to bind to address http://localhost:5000. ---> System.AggregateException: One or more errors occurred. (Unable to load DLL 'libuv': The specified module could not be found. (Exception from HRESULT: 0x8007007E)) (Unable to load DLL 'libuv': The specified module could not be found. (Exception from HRESULT: 0x8007007E)) ---> System.DllNotFoundException: Unable to load DLL 'libuv': The specified module could not be found. (Exception from HRESULT: 0x8007007E)
   at Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv.Internal.Networking.LibuvFunctions.NativeMethods.uv_loop_size()
   at Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv.Internal.Networking.UvLoopHandle.Init(LibuvFunctions uv)
   at Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv.Internal.LibuvThread.ThreadStart(Object parameter)
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv.LibuvTransport.<BindAsync>d__20.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServer.<>c__DisplayClass21_0`1.<<StartAsync>g__OnBind0>d.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.AddressBinder.<BindEndpointAsync>d__5.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.AddressBinder.<BindLocalhostAsync>d__6.MoveNext()
   --- End of inner exception stack trace ---
   --- End of inner exception stack trace ---
   at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.AddressBinder.<BindLocalhostAsync>d__6.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.AddressBinder.DefaultAddressStrategy.<BindAsync>d__0.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.AddressBinder.<BindAsync>d__0.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServer.<StartAsync>d__21`1.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.AspNetCore.Hosting.Internal.WebHost.<StartAsync>d__25.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.AspNetCore.Hosting.WebHostExtensions.<RunAsync>d__7.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.AspNetCore.Hosting.WebHostExtensions.<RunAsync>d__5.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.AspNetCore.Hosting.WebHostExtensions.Run(IWebHost host)
   at foo.Startup.Main(String[] args)

Change the runtime identifier to win7-x64 in the .csproj file and repeat the above steps and you should see the app running fine.
cc @mikeharder @davidfowl @moozzyk

This issue was moved to aspnet/libuv-package#18


finer control on the "outer, inner" join behavior of sc.concat

Hi,
When we join two adata objects, usually we want to do inner join on the genes and outer join on the meta data (adata.obs). I understand that there is an option in sc.concat to control the behavior of joining, but it assigns the same behavior to the genes and adata.obs. Is it possible to add an option to control the behavior separately? Thanks!

I think this is a good idea, which has also come up here https://github.com/theislab/anndata/pull/416#pullrequestreview-683611030.
I think the main question is API. I some thoughts on this, but am not completley happy with any. I would note that xr.concat (which I heavily borrowed concepts from for this function) doesn't have a clear analog here. Though perhaps this is more like passing a list to data_vars or coords?
I'll give a few of my thoughts, but would like to hear others and get feedback
Specify kind of join per attribute/ element via dict
ad.concat(adatas, join={"obs": "outer", "var_names": "inner", "obsm": {"pca": "inner"})

But what's the behaviour for unspecified elements? E.g. What does this result in for other elements of obsm? It would be great if it was a simple consistent rule.
This is a bit like passing a dict for fill_value to xr.concat (which we could also do, and would be a nice symmetry for the arguments).

 Example of xr.concat with fill_value
import xarray as xr, numpy as np

da = xr.DataArray(
    np.arange(6).reshape(2, 3), [("x", ["a", "b"]), ("y", [10, 20, 30])]
)
ds = xr.Dataset({"foo": da, "bar": da})

(
    xr.concat(
        [ds.sel(x="a"), ds.sel(x="b", y=[10, 30])],
        dim="x",
        join="outer",
        fill_value={"foo": np.inf, "bar": 42}
    )
    .sel(x="b", y=20)
    .data_vars
)

Data variables:
    foo      float64 inf
    bar      int64 42

Maybe we could also explicitly provide a list of elements to keep?
ad.concat(adatas, join="outer", keep_elems={"obs": list_of_column_names})

Simple option
A simple option which would be quick to implement would be a join_elements argument, which defaults the value of join, but if passed allows you to override how elements in obs, obsm (/ var, varm) are joined. So:
ad.concat(adatas, join="outer", join_elements="inner")


User Guide suggestions

When installing bbc-a11y I needed more instruction...
Perhaps we could add this?
Prerequisites
If your project isn’t a node project, then install node.js…
If you don’t have a project you can install this in (e.g. you work with Morph) create a new directory you can use.
When running 'npm init' accept the default properties when prompted in the command line.
Interactive mode
In the code snippet it would help to have the folder path:
./node_modules/.bin/bbc-a11y http://www.bbc.co.uk --interactive
When the webpage opens, if the console is not already open, open this, click on the errors, then ‘CTRL’ click the HTML element and select ‘Reveal in Elements Panel’ from the options to locate them in the source code.

I've split up the guides and I think I've covered this @greenc05 -- thanks for your help, please reopen if I've missed anything

Thank you @joshski


Add a sidebar and brand

Add a sidebar for Carrot

[ ] Add the component
[ ] Add configuration (which menu items)
[ ] Make it collapsible by default
[ ] Add the brand - "🥕 Carrot"

List of menu items:

[ ] Datasets
[ ] Scan Reports
[ ] Add new Scan Report
[ ] Documentation

User Menu as a dropdown

[ ] Username as trigger
[ ] Change Password link
[ ] Logout

Ok to use the logo from https://github.com/Health-Informatics-UoN/carrot-docs/blob/main/docs/images/favicon.png?

Yes that's the plan :) thanks Sam!

Also @AndrewThien I'll let you judge whether this is the moment to add dark mode support..
https://ui.shadcn.com/docs/dark-mode/next


Quality update 7

I round corners, simplify shapes, correct sizes, and change the fill to stroke.
Сhanged the Phone Master icon, because the one linked before didn't fit.
New icons added
Phone Master (com.transsion.phonemaster/com.cyin.himgr.ads.SplashActivity)
Updated due to redesign
Microsoft Office (com.microsoft.office.officehubrow)
Reverso Context (com.softissimo.reverso.context)
Linked
inpost.svg to (pl.inpost.inmobile/pl.inpost.inmobile.splashScreen.presentation.SplashScreenActivity)
fruit_ninja.svg to (com.halfbrick.fruitninja/com.halfbrick.mortar.MortarGameActivity)
fruit_ninja.svg to (com.halfbrick.fruitninja/com.halfbrick.mortar.MortarGameLauncherActivity)
spotify.svg to (com.spotify.musix/com.spotify.musix.MainActivity)
translate_you.svg to (com.bnyro.translate.nf/com.bnyro.translate.ui.MainActivity)

If there's any PR with optimization, it's better to deal with it first.


Timezone & Coordinates with Nationality Makes No Sense

As seen here https://randomuser.me/api/?format=pretty&nat=au&inc=location, both the coordinates and the time zone fields often fall way outside the areas in which the address falls, for example:
{
  "results": [
    {
      "location": {
        "street": "4690 washington ave",
        "city": "bowral",
        "state": "western australia",
        "postcode": 3058,
        "coordinates": {
          "latitude": "-36.5799",
          "longitude": "89.7345"
        },
        "timezone": {
          "offset": "+5:00",
          "description": "Ekaterinburg, Islamabad, Karachi, Tashkent"
        }
      }
    }
  ],
}

Makes no sense as the timezones in Australia do not fall here, and the coordinates are in the middle of the ocean! (https://www.latlong.net/c/?lat=-39&long=89).
Please fix this.

Latitude and Longitude don't match the country and city as well as timezone i random so in the end you get data from 3 different locations.
location:
city: "Spijk gem Lingewaal"
coordinates: {latitude: '38.3252', longitude: '111.4167'} <>
country: "Netherlands"
postcode: 88471
state: "Overijssel"
street: {number: 8978, name: 'Dannenberg'}
timezone: {offset: '+11:00', description: 'Magadan, Solomon Islands, New Caledonia'}


Names don't show up in longer sentences.

I can simply type 'jan Josan' & it will work but if I try to make it part of a complex sentence it fails. For example if I type "tenpo open pi jan X la o pona" with a name in place of "X" like "Tomo", it just shows as an empty space next to "jan". I have been able to trick it into showing the syllables a few times, but I'm not sure how I did it & I don't seem to be able to reproduce it.

Hi, thanks for the heads up. I uploaded the last changes to the server. It's been a long while since I worked on this project but theses changes seem to fix your issue. Can you check that it works for you now?


Add [FlakeHub] service

Fixes #9551. This is marked as a draft because the endpoint doesn't yet exist on FlakeHub but we're working on it 😄

We recently added support for badges on our side and would love to provide our users with official support 😄 https://api.flakehub.com/f/DeterminateSystems/fh/badge

Before reviewing the code in this PR, any chance of a follow up on https://github.com/badges/shields/issues/9551#issuecomment-1713814549 ?

@chris48s Ah, I completely forgot about that. I'll take a look!

We've managed to get this working without needing a direct integration here, so I'm going to close this. Such a cool services 😄


Variation 38 docs update

It's not very important, but the species aren't always ordered alphabetically-

species_data_types.html
species_detailed_counts.html - phenotype data

Can this be merged now @aparton  @sarahhunt @ens-st3 ?


A useBillingAddress() hook

Please list the related package(s)
checkout-ui-extensions
If this related to specific APIs or components, please list them here
A (proposed) useBillingAddress() hook
Is your feature request related to a problem? Please describe.
Digital products/products that do not require shipping are not impacted by the Shipping and Delivery settings in the Shopify Admin. Merchants that want to restrict the fulfillment of these types of products to a specific country set are unable to do so with Checkout UI Extensions because there is no access to the Billing Address at checkout. The useShippingAddress()  hook remains null/empty throughout the entire checkout journey for users that have a cart comprised solely of digital/non-shippable products.
The basic functionality of a client-side cart validation extension we were looking to build was:

If billing address is not the UK, block checkout progress and show a modal/error state with more information

Since the shipping step of checkout is skipped, there is no real way to validate a user's billing address for geofencing orders.
The absence of this hook results in an awful post-order refund process that could have been avoided with a hook for Billing Address info to use in validating a cart/checkout. This was previously implemented with a simple JavaScript manipulation of the country selector in checkout.liquid and proved to be very effective in blocking customers from non-accepted regions. (i.e. delete all other countries from the select element)
Describe the changes you are looking for
A useBillingAddress() hook that provides the exact same functionality as useShippingAddress().
Describe alternatives you’ve considered
We've attempted to use useShippingAddress() - but this is ineffective when used in context with digital/non-shippable products. It remains null/empty throughout the entire checkout journey for digital products orders.
Additional context

Thanks for the detailed write up, @nelson-maze.  I've added the request to our internal boards for review.

This has been shipped! 🎉
https://shopify.dev/docs/api/checkout-ui-extensions/unstable/react-hooks/buyer-identity/usebillingaddress


manual cherry-pick 38211

Please provide a description of this PR:

@GregHanson: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

release-notes_istio_release-1.12
e6280a5bcc59af983efe88168840d4690d9cb88f
link
true
/test release-notes_istio_release-1.12

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

/test release-notes_istio_release-1.12

resolves #38267 38267

@GregHanson: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

integ-operator-controller_istio_release-1.12
e6280a5bcc59af983efe88168840d4690d9cb88f
link
unknown
/test integ-operator-controller_istio_release-1.12

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

/test integ-operator-controller_istio_release-1.12


Jitsi crashes Microsoft Outlook & Excel (Office 2016 via Office 365 Home)

Hey there,
I know I am not supposed to post before discussing on the mailing list. However, I have a rather serious concern:
I installed Jitsi (and included the Outlook Option to make it default IM). Whenever JITSI is open, outlook crashes upon startup (and also while running).
Also, in Excel, the app crashes when Jitsi is running and I select "Export", or "Share" under the File tab. I have tried to reinstall jitsi without the "oulook IM option", but to no avail. The software seems simply incompatible.
I expect more jitsi users might upgrade to the new office soon, so I wanted to be sure that this issue is known. It's 100% replicable on my machine, but I have not tested it on other computers.
My system:
Windows 10
Office 365 (office 2016) Home

I have yet to install Office 2016, but please note this quote from Microsoft as you stated using the 64bit version on the mailing list:

Important: Microsoft recommends the use of 32-bit (x86) versions of Office 2016, Project 2016, and Visio 2016 applications as the default option for all platforms.

Okay, the 32bit version crashes too. As a workaround to disable the IM integration, edit the registry:

edit HKCU\Software\IM Providers\DefaultIMApp -> set to e.g. "None"
create HKCU\Software\IM Providers\None
(The created folder needs to match the value in DefaultIMApp or Outlook falls back to the default Communicator value)

As the IM integration is quite a beast, this will need some time. Any community help would be much appreciated.

Hey @ibauersachs ,
thanks for the help. I have tried setting the value to "Skype", as there is a "Skype" folder in the "IM Providers" registry. However, whenever I start Jitsi, the value is overridden, resuling in the crash(es) described above. The same is true when I create a "None" Key and set the value of "DefaultIMApp" to "None".
Any way I can stop this default override?
(On a side note: Thank you for the tip using a different Office Version. I think we both know that you couldn't have been serious there. There are plenty reasons why Microsoft does offer a 64bit version, and why people would use it.)
My setup after jitsi reverted the value back to "Jitsi".

You did uncheck the option to set Jitsi as the default IM Provider in the options, right?
Also, when DefaultIMApp points to Jitsi but there is no IM Providers\Jitsi folder, then Office automatically falls back to Communicator. If you create the folder Jitsi it should disable the integration as well (because our plugin actually fiddles with the Communicator folder - there's unfortunately quite a mess).
And I was dead serious about using the 32bit version of Office. Except for large data in Excel there's really not much use for it and it's likely that we wont continue the support for it.

@tx3eh8IUD1 should work again. To restore the functionality, enable presence integration in Jitsi's options and set DefaultIMApp to Communicator.

Sorry @ibauersachs but I cannot get it to work.
Where exactly can I enable presence integration?
Under "contact sources" / "Address book", both checkmarks were set. I have disabled the second, to no avail.
Communicator is the default IM in my registry.

Jitsi creates an UpAndRunning entry, but due to the mess I mentioned this is sometimes in the IM Providers\Jitsi key and sometimes in IM Providers\Communicator. Do you find this entry with a value of 2? Set DefaultIMApp to the key where you found the entry. If it's nowhere at all, manually create it below Jitsi and point DefaultIMApp to it.
I'll take a look at this, but it's not my top priority.

I found the "UpAndRunning" key with a value of 0. I set it to 2.
It was in the communicator folder. I looked through the settings withing Jitsi and not in the registry before....

Hmm, not sure what's going on now. I'm seeing some issues now as well again with UpAndRunning not being set and presence only there for a few seconds. No crash though. I'll update this once I find some time.

Hi,
I have exact the same issue as described with Outlook 2016 64-bit when running jitsi on Win10. Unfortunately I don't understand how to solve it from the thread above. It seems to me ibauersachs has provided a fix #159, but I don't know how to install it. I cannot find any related files or directory with similar path etc on my computer.
Can you please guide me?

The fix for the crash is in Jitsi's nightly builds, but from what I've seen so far is that presence doesn't really work with it then.

Installed latest nightly (16/01) and enabled default IM setting in setup, but there is no Jitsi add-in to be seen in the Outlook 2016 options and the call button is not enabled in a contact card.

Hi guys, do you have a solution about this issue?

Was so easy to fix, please uncheck>  MAKE JITSI THE DEFAULT INSTANT MESSAGING .. that's all when you install..
See you.

@MarcoEs , which version are you using? MS Outlook 2016 keeps crashing for me if stable release (2.8.5426-x64) is used, even with that option unchecked. In nightlies (2.9.5509-x64), the option doesn't matter: it seems doing nothing.

You have the true, I did test where some works and others not, this application is not stable I tried with all versions.... I'm looking other softphone options Jitsi not work deftly with Office365.

@MarcoEs Jeez, just use the nightly, it's been fixed there for months now.

Indeed, after installing the "nightly" (2.9.5509 64-bit) for Win10-64, Outlook 2016 doesn't crash anymore :+1:
Honestly I didn't test everything, but I'll do it by time.
I was new to Jitsi, so I didn't understand where to find. At the end it's easy.
Just go to https://jitsi.org/Main/Download#latestnightly
Thanks for fixing

@dieterlohrstraeter There are still issues with showing the actual online/offline status for contacts because of some messed up registry entries, but it doesn't affect Office anymore. I'm working on fixing that, but, as with everything regarding Jitsi, it takes up my spare time and sadly a day has only 24 hours.

Hi folks at this time what is the best release to use with no error with O365?
I tried with this one: jitsi-2.9.5519-x86.exe, perhaps not works good..
Thanks.

Any idea when this will make it into the stable branch? (Or when 2.9 will become stable)
We're using jitsi at work and rolling out a nightly to all users doesn't sound like fun.

I'm working on releasing a stable build, but I can't give you an estimate on when this might be. Right now, you can use build 2.9.5532 with reasonable confidence. The open issues that prevent me from releasing mostly affect Linux only.
If you don't need the Office integration, you can delete

Jitsi\native\jmsofficecomm.dll (for presence integration)
Jitsi\native\jmsoutlookaddrbook*(for Outlook address book search)

@ibauersachs I installed 5532, but I don't see the addin listed in outlook/options/addins?
Btw, this never got developed right? https://jitsi.org/index.php/GSOC2009/SyncMsOutlook

It's not an add in for Outlook. The IM presence in Jitsi starts as a COM server and Outlook (or Word, Visual Sutdio, etc.) queries it.
The sync thing isn't necessary as Outlook is queried directly (over MAPI) when you search for a contact.

I wasn't expecting to be able to look for Outlook contacts within Jitsi - awesome!
Then I think something is not right in my setup because I'm not able to use the call icon on contacts within Outlook and nor am I able to search for Outlook contacts within Jitsi currently. What should I check?


Fixed example pattern in test_splitter

Fixed bug in example for pattern test, was missing pieces in the pattern, didn't have patterns for half of datapoints due to alternating locations

Only change to testing, going to going ahead and directly merge.


Here's a new site I'd like you to consider blocking

Here's a new site I'd like you to consider blocking:
https://www.youtube.com/watch
(please include any other relevant details)

The extension already blocks Youtube comments.

Let me know if there's somewhere you're still seeing them @snokaa but lemenyalex is correct.


Add AddApptCommand implementation to DG

Update documentation of AddApptCommand in the Developer's Guide for future references.
Details include how the feature was implemented and reasons for designing it as such.
Closes #75

Looks good to me as well!


Assignment Completed

I tried out all the questions.  Please check and lemme know if I committed any mistakes.

Complete Examples also and save the executed file to your account and send a pull request

Complete numpy examples also and save the executed file to your account and send a pull request

Completed the examples and saved. How do I send another pull request? Or will the commit on this work?


Update for garbled app pages

It's ugly but hopefully it works for you.

I kind of managed to merge it. I had to changes a few things with the xpath queries (in xpath indexes starts at 0) and also the app author (it is not the offered by section).
There are still some minor issues (description is weird now, they return the whole description of the app) but I can restart the bot now.

Hey, I also figured out that most of the data is accessible through a Javascript object. Search for AF_initDataCallback({key: 'ds:3', isError:  false , hash: '9', data:function() in the page and you will see data like this:
[
   [
      [
         "Twitter"
      ],
      null,
      null,
      [
         1
      ],
      null,
      [
         [
            "CBSqARUKEwicy7KWzKzaAhURqlAKHYNDBUw\u003d"
         ],
         [
            "CBSqARUKEwiby7KWzKzaAhURqlAKHYNDBUw\u003d"
         ]
      ],
      null,
      null,
      null,
      null,
      [
         [
            null,
            "From breaking news and entertainment to sports, politics, and everyday interests, when it happens in the world, it happens on Twitter first. See all sides of the story. Join the conversation. Watch live streaming events. Twitter is what’s happening in the world and what people are talking about right now.\u003cbr\u003e\u003cbr\u003e \u003cbr\u003eMore highlights: \u003cbr\u003e\u003cbr\u003e- Watch premium and exclusive live streams directly from your mobile device. No account required.\u003cbr\u003e- Go Live with a tap or sit back and watch events unfold from around the world.\u003cbr\u003e \u003cbr\u003eTimeline\u003cbr\u003e- Discover what your favorite sports, news, politics, and entertainment thought leaders are talking about\u003cbr\u003e- Experience dynamic media — like photos, videos, and GIFs\u003cbr\u003e- Retweet, share, like, or reply to Tweets in your timeline\u003cbr\u003e- Write a Tweet to let the world know what’s happening with you\u003cbr\u003e \u003cbr\u003eExplore\u003cbr\u003e- See what topics and hashtags are trending now \u003cbr\u003e- Discover Moments, curated stories showcasing the very best of today’s biggest events\u003cbr\u003e- Get caught up on news headlines and videos\u003cbr\u003e- Relive the latest sports highlights\u003cbr\u003e- Be in the know about pop culture and entertainment\u003cbr\u003e- See what fun stories are going viral\u003cbr\u003e \u003cbr\u003eNotifications\u003cbr\u003e- Find out who started following you\u003cbr\u003e- Discover which of your Tweets were liked or Retweeted\u003cbr\u003e- Respond to replies or be alerted to Tweets you were mentioned in\u003cbr\u003e \u003cbr\u003eMessages\u003cbr\u003e- Chat privately with friends and followers\u003cbr\u003e- Share Tweets and other media\u003cbr\u003e- Create a group conversation with anyone who follows you\u003cbr\u003e \u003cbr\u003eProfile\u003cbr\u003e- Customize your profile with a photo, description, location, and background photo\u003cbr\u003e- Look back at your Tweets, Retweets, replies, media, and likes\u003cbr\u003e \u003cbr\u003eConnect\u003cbr\u003e- Get suggestions on influential people to follow\u003cbr\u003e- Sync your contacts to find friends currently on Twitter or invite more"
         ],
         [
            null,
            "See what’s happening in the world right now."
         ]
      ],
      null,
      [
         [
            [
               null,
               2,
               [
                  2048,
                  1536
               ],
               [
                  null,
                  null,
                  "https://lh3.googleusercontent.com/3kr4MhMwqrCBswVCFnMpsXng342-Ho_1h9UF6aeBRU14scHsVzzB33EJacDnUSS2YSuT"
               ]
            ],
            [
               null,
               2,
               [
                  2400,
                  1200
               ],
               [
                  null,
                  null,
                  "https://lh3.googleusercontent.com/tEEjfHCCeQcxVPJYqHLNnUmhp_g-Vz6TVgl69D2N9VINTmXjVhevXG2XwySdHp8G7Q"
               ]
            ]
         ],
         [
            null,
            2,
            [
               512,
               512
            ],
            [
               null,
               null,
               "https://lh3.googleusercontent.com/U2H5O-RNxa4OQKByVCdiqlASgXPvEg5EWx_E8IWWrdROOAetGa4SN-u4YNcnjSHakCCh"
            ]
         ],
         [
            null,
            2,
            [
               500,
               1024
            ],
            [
               null,
               null,
               "https://lh3.googleusercontent.com/nZK7QGloc4qbsAjlIVuM7TKZOWBwQka966GnlT0OVjxnRTAoE-fL8X6GJZim3U8U5cA"
            ]
         ],
         [
            [
               null,
               null,
               "AUBvHej0hrk",
               [
                  null,
                  null,
                  "https://www.youtube.com/embed/AUBvHej0hrk?ps\u003dplay\u0026vq\u003dlarge\u0026rel\u003d0\u0026autohide\u003d1\u0026showinfo\u003d0\u0026authuser\u003d0"
               ],
               "yt:movie:AUBvHej0hrk"
            ],
            [
               null,
               1,
               null,
               [
                  null,
                  null,
                  "https://i.ytimg.com/vi/AUBvHej0hrk/hqdefault.jpg"
               ]
            ]
         ],
         [
            "Parental guidance",
            [
               null,
               2,
               [
                  512,
                  512
               ],
               [
                  null,
                  null,
                  "https://lh3.ggpht.com/JWxfEaLfsZ4iJLaLwHuTi9Ez2aSNZzgWmLBRyLCUiJ0EjLWzjXHMTMCiMdW6ZTCwIHCjMLomzX8On--X0A"
               ]
            ],
            [
               null,
               "Parental Guidance Recommended"
            ],
            [
               null,
               "Users Interact, Shares Location"
            ],
            [
               null,
               "\u003ca href\u003d\"https://support.google.com/googleplay?p\u003dappgame_ratings\"\u003eLearn More\u003c/a\u003e"
            ],
            false,
            null,
            [
               null,
               2,
               [
                  512,
                  512
               ],
               [
                  null,
                  null,
                  "https://lh3.ggpht.com/JWxfEaLfsZ4iJLaLwHuTi9Ez2aSNZzgWmLBRyLCUiJ0EjLWzjXHMTMCiMdW6ZTCwIHCjMLomzX8On--X0A"
               ]
            ]
         ],
         [
            [
               "7022973042396704692",
               8
            ],
            "Twitter, Inc.",
            [
<EMAIL_ADDRESS>            ],
            [
               null,
               null,
               null,
               null,
               null,
               [
                  null,
                  null,
                  "https://support.twitter.com/articles/20169915"
               ]
            ],
            [
               "Twitter, Inc.\n1355 Market Street, Suite 900\nSan Francisco, CA 94103"
            ],
            [
               null,
               null,
               null,
               null,
               [
                  null,
                  null,
                  "/store/apps/developer?id\u003dTwitter,+Inc."
               ]
            ]
         ],
         [
            null,
            "A few minor updates to make Twitter an even better place."
         ],
         [
            null,
            null,
            "http://twitter.com/privacy"
         ],
         [
<PHONE_NUMBER>,
            27000000
         ],
         [
            "500,000,000+"
         ],
         null,
         [
            2
         ],
         null,
         [
            [
               "News \u0026 Magazines",
               [
                  null,
                  null,
                  null,
                  [
                     "CBSqARUKEwidy7KWzKzaAhURqlAKHYNDBUw\u003d"
                  ],
                  [
                     null,
                     null,
                     "/store/apps/category/NEWS_AND_MAGAZINES"
                  ]
               ],
               "NEWS_AND_MAGAZINES"
            ]
         ],
         [
            "Contains Ads",
            [
               [
                  [
                     null,
                     "Ads are placed by the app developer. \u003cbr\u003e \u003ca href\u003d\"https://support.google.com/googleplay/?p\u003dads_badge\u0026amp;hl\u003den\"\u003eLearn More\u003c/a\u003e"
                  ]
               ]
            ]
         ],
         null,
         null,
         null,
         null,
         true,
         null,
         false,
         false,
         null,
         null,
         "NEWS_AND_MAGAZINES",
         [

         ],
         null,
         1,
         null,
         [
            null,
            2,
            [
               720,
               1280
            ],
            [
               null,
               null,
               "https://lh3.googleusercontent.com/fXWKkS5OcyOPZimNU1_lCdOAESs-Hgy53TikRH7cofRLmc4W5HOZySqU6-S7_biQjYM"
            ]
         ],
         null,
         [
            [
               [
                  [
                     "QPMWa7Vn0xRLyn2kZruUi3gicOo"
                  ]
               ]
            ]
         ],
         null,
         null,
         [
            "Google Commerce Ltd"
         ],
         "Apr 30, 2010"
      ],
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      [
         [
            null,
            [
               [
                  600
               ],
               null,
               [
                  604800
               ]
            ]
         ]
      ]
   ]
]

It is a pain to parse but it is a little bit better than parsing the HTML. I will let you know when I find a clean way to parse it.

JSON over HTML parsing any day!
On Mon, 9 Apr 2018, 07:52 Cristian Baldi<EMAIL_ADDRESS>wrote:

Hey, I also figured out that most of the data is accessible through a
Javascript object. Search for AF_initDataCallback({key: 'ds:3', isError:
false , hash: '9', data:function() in the page and you will see data like
this:
[
[
[
"Twitter"
],
null,
null,
[
1
],
null,
[
[
"CBSqARUKEwicy7KWzKzaAhURqlAKHYNDBUw\u003d"
],
[
"CBSqARUKEwiby7KWzKzaAhURqlAKHYNDBUw\u003d"
]
],
null,
null,
null,
null,
[
[
null,
"From breaking news and entertainment to sports, politics, and everyday interests, when it happens in the world, it happens on Twitter first. See all sides of the story. Join the conversation. Watch live streaming events. Twitter is what’s happening in the world and what people are talking about right now.\u003cbr\u003e\u003cbr\u003e \u003cbr\u003eMore highlights: \u003cbr\u003e\u003cbr\u003e- Watch premium and exclusive live streams directly from your mobile device. No account required.\u003cbr\u003e- Go Live with a tap or sit back and watch events unfold from around the world.\u003cbr\u003e \u003cbr\u003eTimeline\u003cbr\u003e- Discover what your favorite sports, news, politics, and entertainment thought leaders are talking about\u003cbr\u003e- Experience dynamic media — like photos, videos, and GIFs\u003cbr\u003e- Retweet, share, like, or reply to Tweets in your timeline\u003cbr\u003e- Write a Tweet to let the world know what’s happening with you\u003cbr\u003e \u003cbr\u003eExplore\u003cbr\u003e- See what topics and hashtags are trending now \u003cbr\u003e- Discover Moments, curated stories showcasing the very best of today’s biggest events\u003cbr\u003e- Get caught up on news headlines and videos\u003cbr\u003e- Relive the latest sports highlights\u003cbr\u003e- Be in the know about pop culture and entertainment\u003cbr\u003e- See what fun stories are going viral\u003cbr\u003e \u003cbr\u003eNotifications\u003cbr\u003e- Find out who started following you\u003cbr\u003e- Discover which of your Tweets were liked or Retweeted\u003cbr\u003e- Respond to replies or be alerted to Tweets you were mentioned in\u003cbr\u003e \u003cbr\u003eMessages\u003cbr\u003e- Chat privately with friends and followers\u003cbr\u003e- Share Tweets and other media\u003cbr\u003e- Create a group conversation with anyone who follows you\u003cbr\u003e \u003cbr\u003eProfile\u003cbr\u003e- Customize your profile with a photo, description, location, and background photo\u003cbr\u003e- Look back at your Tweets, Retweets, replies, media, and likes\u003cbr\u003e \u003cbr\u003eConnect\u003cbr\u003e- Get suggestions on influential people to follow\u003cbr\u003e- Sync your contacts to find friends currently on Twitter or invite more"
],
[
null,
"See what’s happening in the world right now."
]
],
null,
[
[
[
null,
2,
[
2048,
1536
],
[
null,
null,
"https://lh3.googleusercontent.com/3kr4MhMwqrCBswVCFnMpsXng342-Ho_1h9UF6aeBRU14scHsVzzB33EJacDnUSS2YSuT"
]
],
[
null,
2,
[
2400,
1200
],
[
null,
null,
"https://lh3.googleusercontent.com/tEEjfHCCeQcxVPJYqHLNnUmhp_g-Vz6TVgl69D2N9VINTmXjVhevXG2XwySdHp8G7Q"
]
]
],
[
null,
2,
[
512,
512
],
[
null,
null,
"https://lh3.googleusercontent.com/U2H5O-RNxa4OQKByVCdiqlASgXPvEg5EWx_E8IWWrdROOAetGa4SN-u4YNcnjSHakCCh"
]
],
[
null,
2,
[
500,
1024
],
[
null,
null,
"https://lh3.googleusercontent.com/nZK7QGloc4qbsAjlIVuM7TKZOWBwQka966GnlT0OVjxnRTAoE-fL8X6GJZim3U8U5cA"
]
],
[
[
null,
null,
"AUBvHej0hrk",
[
null,
null,
"https://www.youtube.com/embed/AUBvHej0hrk?ps\u003dplay\u0026vq\u003dlarge\u0026rel\u003d0\u0026autohide\u003d1\u0026showinfo\u003d0\u0026authuser\u003d0"
],
"yt:movie:AUBvHej0hrk"
],
[
null,
1,
null,
[
null,
null,
"https://i.ytimg.com/vi/AUBvHej0hrk/hqdefault.jpg"
]
]
],
[
"Parental guidance",
[
null,
2,
[
512,
512
],
[
null,
null,
"https://lh3.ggpht.com/JWxfEaLfsZ4iJLaLwHuTi9Ez2aSNZzgWmLBRyLCUiJ0EjLWzjXHMTMCiMdW6ZTCwIHCjMLomzX8On--X0A"
]
],
[
null,
"Parental Guidance Recommended"
],
[
null,
"Users Interact, Shares Location"
],
[
null,
"\u003ca href\u003d"https://support.google.com/googleplay?p\u003dappgame_ratings\"\u003eLearn More\u003c/a\u003e"
],
false,
null,
[
null,
2,
[
512,
512
],
[
null,
null,
"https://lh3.ggpht.com/JWxfEaLfsZ4iJLaLwHuTi9Ez2aSNZzgWmLBRyLCUiJ0EjLWzjXHMTMCiMdW6ZTCwIHCjMLomzX8On--X0A"
]
]
],
[
[
"7022973042396704692",
8
],
"Twitter, Inc.",
[
<EMAIL_ADDRESS>],
[
null,
null,
null,
null,
null,
[
null,
null,
"https://support.twitter.com/articles/20169915"
]
],
[
"Twitter, Inc.\n1355 Market Street, Suite 900\nSan Francisco, CA 94103"
],
[
null,
null,
null,
null,
[
null,
null,
"/store/apps/developer?id\u003dTwitter,+Inc."
]
]
],
[
null,
"A few minor updates to make Twitter an even better place."
],
[
null,
null,
"http://twitter.com/privacy"
],
[
1522695488,
27000000
],
[
"500,000,000+"
],
null,
[
2
],
null,
[
[
"News \u0026 Magazines",
[
null,
null,
null,
[
"CBSqARUKEwidy7KWzKzaAhURqlAKHYNDBUw\u003d"
],
[
null,
null,
"/store/apps/category/NEWS_AND_MAGAZINES"
]
],
"NEWS_AND_MAGAZINES"
]
],
[
"Contains Ads",
[
[
[
null,
"Ads are placed by the app developer. \u003cbr\u003e \u003ca href\u003d"https://support.google.com/googleplay/?p\u003dads_badge\u0026amp;hl\u003den\"\u003eLearn More\u003c/a\u003e"
]
]
]
],
null,
null,
null,
null,
true,
null,
false,
false,
null,
null,
"NEWS_AND_MAGAZINES",
[
     ],
     null,
     1,
     null,
     [
        null,
        2,
        [
           720,
           1280
        ],
        [
           null,
           null,
           "https://lh3.googleusercontent.com/fXWKkS5OcyOPZimNU1_lCdOAESs-Hgy53TikRH7cofRLmc4W5HOZySqU6-S7_biQjYM"
        ]
     ],
     null,
     [
        [
           [
              [
                 "QPMWa7Vn0xRLyn2kZruUi3gicOo"
              ]
           ]
        ]
     ],
     null,
     null,
     [
        "Google Commerce Ltd"
     ],
     "Apr 30, 2010"
  ],
  null,
  null,
  null,
  null,
  null,
  null,
  null,
  null,
  [
     [
        null,
        [
           [
              600
           ],
           null,
           [
              604800
           ]
        ]
     ]
  ]

]
]
It is a pain to parse but it is a little bit better than parsing the HTML.
I will let you know when I find a clean way to parse it.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/crisbal/PlayStoreLinks_Bot/pull/20#issuecomment-379652588,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ALzqzEUBiT4kRTj6uy3bLmNw2J3ce8bDks5tmwU7gaJpZM4TFfFc
.

@JakeSteam Of course, but that JSON seems like a bit of a mess right now. We would probably end up with uglier code (tons of data[0][1][0][2] things in the code), although the end result might be better


Add forward/backward inclusivity rules for markups fix #402 fix #392

Changes Post#markupsInRange to check the markers to the left and right
of the position when range is collapsed. The markups in those markers
provide isForwardInclusive and isBackwardInclusive methods that are
used to determine which markups should be considered "active" at that
range.
fix #392
fix #402

thank you! :heart_eyes:


enformer for other species

@malcolmreynolds we want to use the enformer for other species like pig. But when we checked the codes of enformer.py and noticed the codes heads_channels = {'human': 5313, 'mouse': 1643}. so we want to know the enformer can be used for other speices ? if we want, need we do something to the codes of enformer.py?

Hi Žiga,
Thank you for the response and for the training code. I used it to train Enformer on ATACseq tracks of Rice.
The length of the output tracks in the paper is 896 bins (x128=114,688 bp), but as the GPU I have access to (GeForce RTX 3080) has limited RAM (10 GB), I get OOM errors with this size. Therefore, I reduced the sequence length in the Basenji preproccessing step to 256 (lowest power of 2 that could be handled error free). The training is ongoing now. I was wondering if this size reduction can cause any problems.

By 256 do you mean 256 bins or bp? I would recommend lowering the number of channels by 4x to say 384 instead of lowering the sequence length. Also, don't forget to compile the model using @tf.function as it will use much less memory and make sure you are using batch size = 1 per GPU.

Yes, I meant 256 bins. The predictions were not accurate with that bin-size.
I lowered the number of channels by 4x and the machine can now handle 896-bin sequences :)
Thanks a lot

Which training data would you need for another species?


Re-order Event variants to prevent serialization errors

This is a workaround for a bug that affects clients that compile the shared library into their binary (e.g. the Yew examples).
The Events that are sent by the shell need to be ahead of any that are marked #[serde(skip)] otherwise the serialization won't round-trip.
This does not affect clients that use the static library (iOS), dynamic library (Android), or Wasm (e.g. NextJS), only those that compile and link a Rust library directly (e.g. Yew).
We should, at some point, provide an API for these clients so that they can skip the serialization completely.

Current dependencies on/for this PR:

master

PR #47   👈

This comment was auto-generated by Graphite.


Permission Error when converting certain ugoira files

I'm using the latest version. The problem above began just a few days ago. Some ugoira still work but some keep getting error code 9999. I also tried a few differrent ffmpeg.exe. Below is the log.
2022-08-02 06:34:53,078 - PixivUtil20220701 - INFO - Processing ugoira to webp...
2022-08-02 06:34:53,366 - PixivUtil20220701 - DEBUG - Procced to change C:/Users/[User Name]/AppData/Local/Temp/convert_ugoirax5pmcmj7\000045.jpg image for a pixel format with 3 components
2022-08-02 06:34:53,367 - PixivUtil20220701 - INFO - [re_encode_image()] running with cmd: ffmpeg.exe -i C:/Users/[User Name]/AppData/Local/Temp/convert_ugoirax5pmcmj7\000045.jpg -pix_fmt gbrpf32be C:/Users/[User Name]/AppData/Local/Temp/convert_ugoirax5pmcmj7\000045_temp.jpg
2022-08-02 06:34:53,813 - PixivUtil20220701 - DEBUG - Start re_encoding image C:/Users/[User Name]/AppData/Local/Temp/convert_ugoirax5pmcmj7\000045.jpg
2022-08-02 06:34:55,702 - PixivUtil20220701 - ERROR - Error at process_image(): 100149648
2022-08-02 06:34:55,703 - PixivUtil20220701 - ERROR - Traceback (most recent call last):
File "PixivHelper.pyc", line 1053, in convert_ugoira
File "PixivHelper.pyc", line 1162, in check_image_encoding
File "PixivHelper.pyc", line 1193, in re_encode_image
PixivException.PixivException: PixivException(9999 error, hasDumpPage=N)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "PixivImageHandler.pyc", line 336, in process_image
File "PixivDownloadHandler.pyc", line 406, in handle_ugoira
File "PixivHelper.pyc", line 994, in ugoira2webp
File "PixivHelper.pyc", line 1080, in convert_ugoira
File "shutil.pyc", line 740, in rmtree
File "shutil.pyc", line 618, in _rmtree_unsafe
File "shutil.pyc", line 616, in _rmtree_unsafe
PermissionError: [WinError 32] The process cannot access the file because it is being used by another process: 'C:/Users/[User Name]/AppData/Local/Temp/convert_ugoirax5pmcmj7\000126.jpg'

This is an error that occurs in the new version of the program. It has already been reported in the #1141 and #1132 issues.
It occurs when the images in the gif alternate between black & white and color images.
The bug has already been fixed on the python program of the project but the Windows executable will only be updated in the next version
If you use the python program, just download the latest version as explained in this post: https://github.com/Nandaka/PixivUtil2/issues/1141#issuecomment-1195880801
If you use the Windows executable, you will have to wait for the next version or try to generate the executable on your side.

Thanks. Guess I'm waiting for next update.


Allow passing "protocol_options" to avio_open2

Originally posted by @rawler in https://github.com/PyAV-Org/PyAV/issues/704#issuecomment-1320310595
What I really need is a way to pass options to avio_open2. Note that this is already done internally by avformat_open_input, so can already be done for input-containers, but I need a way to do it for output as well.
I can see a few different ways to achieve that;

Pass self.container_options. That somehow seems wrong. avio_open2 does not really deal with containers at all, just the underlying I/O-protocols.
Pass self.options to avio_open2. This would create different API:s where container_options reaches avio_open2 for InputContainer, but not for OutputContainer.
Pass self.options | self.container_options. Same problem as first, and unclear to me why we even have different option-structs if always we end up passing the union regardless?
Pass self.protocol_options alone to avio_open2. This would work, but again create an inconsistent API between InputContainer and OutputContainer where both would support practically the same arguments, but apply them differently.

At this point, I assume the reason we're passing self.options | self.container_options for InputContainer is basic case of backwards compatibility, while enabling/encouraging applications to start passing options separately? I'm guessing we'll at some point want to break that, but make it possible for applications to be rewritten first? (Otherwise, I've misunderstood the intention with container_options.)
Given the above assumption what this PR is trying to do is; Add separate options for the 3d layer of the stack (Codecs, Containers, I/O Protocols), while not breaking backwards compatibility, and ensuring that the API remains consistent across InputContainer and OutputContainer.

Given that avformat_open_input already have passed self.options | self.container_options to avio_open2, we must keep doing that, or risk breaking stuff.
Given that we want to start separating protocol_options, we now allow applications to pass it in separately, and can (at some later point) deprecate it being passed to the "wrong" layer.

On the flip-side; if we don't want to enable applications to pass protocol-options separately and explicitly, why do we want it for container-options?

I don't need this.


Train slots crash

Describe the Bug
While using a mod to decrease the number of train slots, LTN manager alpha crashed:
The mod LTN Manager [ALPHA] (0.3.7) caused a non-recoverable error.
Please report this error to the mod author.
Error while running event LtnManager::on_tick (ID 0)
LtnManager/scripts/ltn-data.lua:286: attempt to index field '?' (a nil value)
stack traceback:
LtnManager/scripts/ltn-data.lua:286: in function <LtnManager/scripts/ltn-data.lua:285>
[C]: in function 'sort'
LtnManager/scripts/ltn-data.lua:285: in function 'callback'
flib/table.lua:201: in function <flib/table.lua:173>
(...tail calls...)
LtnManager/scripts/ltn-data.lua:584: in function 'iterate'
LtnManager/control.lua:155: in function <LtnManager/control.lua:151>
To Reproduce
Steps to reproduce the behavior:

Use mod "Config train specifications" by DellAquila to increase your cargo wagon size, in this case to "720" percent, in startup settings. Save game. Then decrease the value, in this case to "100" percent. Then load the game, crashes immediately.

Ok you can have my save file but I have a lot of mods... have fun with needless Train base!

Log file
factorio-current.log
Also thank you your mod is great and wonderful!

Thanks for the report, this is fixed for the next release.


Expose previously added metrics from the cluster stats API

Following this closed issue: https://github.com/justwatchcom/elasticsearch_exporter/issues/115, we discovered those metrics were added from the indices stats and requires the -es.indices option set to true. This is great but we would like to also include group stat metrics via the cluster stats API here: https://www.elastic.co/guide/en/elasticsearch/reference/6.2/cluster-stats.html
We would also love to add the metrics listed in https://github.com/justwatchcom/elasticsearch_exporter/issues/115 to https://github.com/justwatchcom/elasticsearch_exporter/blob/master/collector/nodes.go.
This will be great for our environment.
This is being tracked here: https://phabricator.wikimedia.org/T210592
Thanks!

Hi @onimisionipe,
thanks for opening the issue and pointing us at the /_cluster/stats endpoint. I wasn't aware of it.
It makes sense to include the provided metrics as an optional collector, although I'm wondering if the metrics can't be obtained via promQL aggregation over the indices metrics.
If not, a PR is very welcome. I'll happily help if you have any questions.
I'm not sure if I'm understanding your question regarding the #115-metrics addition to the nodes collector correctly. Currently every collector does exactly one call to one of the ES API endpoints. Are the metrics mentioned in #115 included in the _nodes/stats endpoint?

The metrics in https://github.com/justwatchcom/elasticsearch_exporter/issues/115 can be added from /_cluster/stats

ah, ok. Thanks for looking it up. Can you contribute a PR? Unfortunately I don't have the time to do it myself.

Alright. I will see what I can do. My golang is not really good :)

thanks! Let me know if you need help


Update README.md

Coverage remained the same at 100.0% when pulling d9d6eeef845036e9dc9f03d327a883c31b37bbea on feature/readme into c6f58da800edaf9a9ba47dbddddd374ab695985d on develop.


Type Inference Engine: Make everything classy by default

Currently we support methods on strings like
"   asdfasd   ".strip()

but we don't support
1.real()

Can we modify the project to make everything as classy as possible by default? mmm... thanks.

Could you go into more detail on this one? Sorry, I don't typically do anything more than very small projects in Python, so I'm not used to all the conventions.

Also, we've been talking about maybe switching this whole project over to a statically typed language in the near future.

@samshadwell I've written a toy language before (https://github.com/ebrian/axis). I'm in if you want the help, I love this project.

Yeah because not having types blows hard

Nice.

See a76f078


When will version 1.22.5 be supported?

Is there an existing issue for this?

[X] I have searched the existing issues

Question
When will version 1.22.5 be supported?
Code of Conduct

[X] I agree to follow this project's Code of Conduct

what's wrong with 1.22.5?
//go:linkname will be disabled in 1.23, it should be still available in 1.22.

@lp2jx0309 The latest version work fine with go1.22.

what's wrong with 1.22.5?
//go:linkname will be disabled in 1.23(golang/go#67401), it should be still available in 1.22.

@JasonMing The break change only effected some testcases. I will release a new version after go1.23 released.

Today, Go has already released version 1.23.0, but this library is not compatible. When will the next version be released? I've tested it myself, and I just need to remove the '//go:linkname' from the g0 struct, and everything works fine.

@manchurio The new version is coming these days.

Now go1.23 is supported. See the latest release.


include vhost in readme connect example

Without the extra / in the example it tries to connect without a vhost which causes mysterious ConnectionReset errors or Protocol("Unexpected method frame: connection.close, expected: connection.open-ok") depending on configuration and OS.

I've seen some libraries explicitly handle connection.close during connection.open phase to indicate invalid vhost.

@wraithan thank you.

Yeah, would love to see the vhost thing handled a bit better. We saw in the examples that you use IP address and had an extra slash for vhost when we were starting to use the library, we tested a bit to see which one was causing the issue.
Might be cool to just default to / if you don't specify. That is how many libraries work (like defaulting to using 5672 as the port). But I understand if you prefer to not have many defaults and lean toward always being explicit.


Incorrect typing after declaring value as null

https://flow.org/try/#0PQKgBAAgZgNg9gdzCYAoVMCmAXMA3AQxgFdMwBeMAO2JhgG5VCSzKAGRgYzioGddsACwCWvAOpwATgGteFMAGZk+IqS49+YIaIAicTLwBycbBJnyA2gFYANABYbCmwCYbARhtsAugDoowqgATAApggA8ASgoAPjAwsAAeFRYI+jB09PR0DLAgA
the find() method for arrays doesn't seem to recognize that "value" in this example should be a number even though it is guaranteed to be - note that other operations type it correctly.

Ooh, this is a fun one! It's a very short bit of code but gets into some very deep details of Flow.
The first thing you have to know is that flow assigns a single type to every variable. So because you set value to be null and then later to a number, Flow gives that variable the type number | null. Just updating the value of the variable can't change it's type.
"Aha!" you say, "But then why does the multiplication work?" Well, while each variable has only one type, that type can be "refined" in specific parts of the code where we have a little extra information. So after you've set value = 0, Flow still things that the variable has the type number | null, but it also knows that as of right now, it's a number. So when you do the multiplication, Flow knows it's safe.
So then why does Flow not let you use value in find? This is a very tricky question. The answer has to do with refinement invalidation.
So, as of the multiplication, Flow knows that value is of type number | null, but also knows that it's currently a number. Next, we take that value and use it in a closure. Flow doesn't know if the closure will be called right away, asynchronously some time later, or what. So inside that closure, Flow has to forget the refinement, because it's possible that some other code will have reset value to null between when the closure was created and when it was called. And thus, Flow complains and tells you that value might be null.
This is somewhat obnoxious in cases where you can see that the usage is safe. On the other hand, I've had this Flow refinement invalidation logic actually catch me from making logic errors in cases where it really wasn't safe. So we probably have to deal with it. (Although there are proposals to mark functions as pure or closures as used synchronously to get rid of some of these cases.)
In the mean time, if you have a problem like this in your own code, the thing to do is to find the context in which the value still has a refinement, and create a new variable that uses the exact type you want, like:
let value = null;
value = 0;
const thisWorks = 3 * value;

const definitelyANumber: number = value;
const thisDoesNotWork = [5,4,3,2,1,0].find((x) => x < definitelyANumber);


what is the plan for release this library?

I'm wondering this repo didn't not get any update/commit from a month, last commit is 27 day ago right now
what is your roadmap? any plan to release? it is critical for me if you are not planning to release soon please let me know

any update?

hey @sarahdwyer why did you closed this issue without answering i was wondering

@malikasinger1 this library is actively maintained, but we don't normally publicize our release schedule.


Should be able to select all in the debugger's message description field

The highlighted text pane in the example is kind of long.  Should be able to copy it quickly. Select All would be convenient.

Assuming that Eric means the static single-line at the top of the debugger, this contains a select all menu item that selects all, so this has got itself fixed.


Handle MapParseException it reader read methods

The readers handle ParseException but not MapParseExecption. see wasm-opt.cpp for what this exception means. Add a test.

done


Update CONTRIBUTORS.md

NAME : Aryan Sunil Ahuja
LINKEDIN : https://www.linkedin.com/in/aryan-ahuja-013443190/
TWITTER : https://twitter.com/Aryan1053
GITHUB : https://github.com/theshredbox
ABOUT YOU : I am an AI& ML enthusisast and a back- end developer. My expertise includes python, ML, DL and Tableau.
PROJECT/PROJECTS YOU HAD CONTRIBUTED TO : Scale Chart for Musical Compostion | Bagging and Boosting | Image Distortion Correction Using OpenCV | Image Segmentation Using K Means Clustering
PR'S COMPLETED : 4

PR approved. 👍@theshredbox


Swap horizontal and vertical descriptors. Fix up documentation to match.

As discussed on Zulip - it appears that convention when naming splits is the opposite of what I had - which way the splitter runs, rather than which dimension it divides. This adjusts the Split's functionality to match that.
Users will need to swap their invocations to get the same layouts.

okay, I think we can go ahead and get this in.


2 errors while trying this

@titiks commented on Mon Jan 20 2020
Hello,

Error during the task "Azure DevTest Labs Create VM". I'm using version 3.* (preview) of the task. The error message is :

Error => code: 'InvalidDeploymentParameterValue'; message = 'The value of deployment parameter 'AsPlainText' is null. Please specify the value or use the parameter reference. See https://aka.ms/resource-manager-parameter-files for details.'
So when putting "-newVMName '$(vmName)' -userName '$(userName)' -password (ConvertTo-SecureString -String '$(password)' -AsPlainText -Force)" in the field "template parameters" of the task, AsPlainText is interpreted as a parameter of the template.
I couldn't find a syntax to use it as a parameter of ConvertTo-SecureString.
Yet, I realized that ConvertTo-SecureString is not necessary and that I simply could use -password '$(password)'

Error when executing the script GetLabVMParams.ps. I'm using version 4.* of the Azure Powershell task. I left the default output variable for the lab vm Id in the previous step, so passing the Script Argument -labVmId '$(labVMId)' to the powershell task returned this error :

[error]MissingSubscription : The request did not have a subscription or a valid tenant level resource provider.
I then gave the Reference Name "vm" for the output variable in the previous task and then passed the Script Argument -labVmId '$(vm.labVmId)' and it worked.

Détails du document
⚠ Ne pas modifier cette section. C’est obligatoire pour docs.microsoft.com ➟ Liaison des problèmes GitHub.

ID: 8e914d98-f574-d5a2-ee07-cc24b2886365
Version Independent ID: 05b7ff7f-2edf-3b0f-092c-3cdff7ee1236
Content: Intégrer Azure DevTest Labs à votre pipeline de livraison et d’intégration continue d’Azure Pipelines
Content Source: articles/lab-services/devtest-lab-integrate-ci-cd.md
Service: lab-services
GitHub Login: @spelluru
Microsoft Alias: spelluru

@srvbpigh commented on Mon Jan 20 2020
Hello, @titiks
Thank you for your feedback.
We are actively reviewing your comments and will get back to you soon.
Kind regards,
Microsoft DOCS International Team

@titiks, I was recently made aware of this thread. If there's an issue with the Azure Pipelines DevTest Labs Tasks, please report it in our Issues section of our GitHub project. Additionally, we allow contributions to help improve the tasks. So, feel free to submit code changes. The source code for version 3 can be found here.
The user interface provides a set of pick lists to help in the selection process. However, underneath, resource IDs are used. If the UI shows you an ID, it is because it is not able to connect to the corresponding resource to fetch the lists. When it can do that, then that ID gets converted to the name that you see when you select it from the list.

#please-close


settlement-date plugin

This was moved here from https://github.com/beancount/fava/pull/522

Quick and dirty implementation of the plugin mentioned in this thread: https://groups.google.com/forum/#!topic/beancount/d6SfLshoo1E
With this plugin, the following transaction:
plugin "fava.plugins.settlement_date" "Assets:Savings:Transfer"

2017-04-01 * "" ""
    Assets:Savings:US    -100.00 USD
    Assets:Savings:JP
        settle: 2017-04-03

becomes
    2017-04-01 * "" "Doing some saving transfers" ^settle-43be1c
        Assets:Savings:US       -100.00 USD
        Assets:Savings:Transfer
            settle: 2017-04-03

    2017-04-03 * "" "Settle: Doing some saving transfers" ^settle-43be1c
        Assets:Savings:Transfer -100.00 USD
        Assets:Savings:JP        100.00 USD

Tasks

[ ] tests
[ ] lint
[ ] use same metadata key as in the documentation

Does this plug-in still function?


Crashes on bulk operations

To repro:

Set up locally
Open two browsers
To go https://en.wikipedia.org/wiki/Operation_Neptune_(video_game)
Copy all text
Paste into one browser
Watch the browser websocket connection burn

Thank you :-)
Paste is mapped in the demo to a series of individual operations, and is horribly slow.  But it shouldn't explode. Thanks for the report. I'll try to make time to investigate.
Is this a FYI for me to improve the demo, or a blocker for you trying to use it? (So I can prioritize)

Is this a FYI for me to improve the demo, or a blocker for you trying to use it? (So I can prioritize)

Both! I'm not 100% sure I'm gonna use it, but if it doesn't work then it's definitely a 0% chance =D And I assume you care about your things working/not-blowing-up so my hope is that I could get some free labour out of you before going into serious-exploration mode myself

OK! Ill go do some digging. Looks like weirdness deep in the stack. Do not, I repeat not, hold your breath, but only due to customer work. I want to hack on this.

I bet you're missing back-pressure =D

Making notes for myself...
scala.MatchError: 0 (of class java.lang.Integer)
	at org.http4s.websocket.WebsocketBits$.makeFrame(WebsocketBits.scala:26) ~[http4s-websocket_2.11-0.1.1.jar:0.1.1]
	at org.http4s.websocket.WebsocketBits.makeFrame(WebsocketBits.scala) ~[http4s-websocket_2.11-0.1.1.jar:0.1.1]
	at org.http4s.websocket.FrameTranscoder.bufferToFrame(FrameTranscoder.java:137) ~[http4s-websocket_2.11-0.1.1.jar:0.1.1]
	at org.http4s.blaze.http.websocket.WebSocketDecoder.bufferToMessage(WebSocketDecoder.scala:29) ~[blaze-http_2.11-0.8.2.jar:0.8.2]

...gets us to WebsocketBits.scala.
Code 0 seems to be continuation according to rfc6455

Progress will happen over here:  https://github.com/http4s/http4s-websocket/issues/1

Update: PR issued against http4s, we now wait for a merge and build of that project.

Bulk operations will still be slow, but the server shouldn't explode any more.
Feel free to re-open the ticket if this doesn't solve the problem.  Thanks!


Support dynamic feature module report

Signed-off-by: baebae33<EMAIL_ADDRESS>What has changed

Add "Dynamic" to ComponentType
Group app files depends on project path(dynamic feature module or app project)
Add "dynamic" badge to HTML

Why was it changed
Support dynamic feature module in report.

Related issues
https://github.com/spotify/ruler/issues/55

Single toggle for dfm added.
Default checked value is true.
Unchecked

Checked

@BaeBae33 Thanks for taking the time to add the support for dynamic feature modules on Ruler! I left some comments in the code.
Also, I'm looking at the Dynamic button to filter out the DFM in the Breakdown list. Can we organize the DFM a bit differently in the breakdown list? Having a button like this feels a bit odd to me, especially the fact that is very next to the Download size.
I'm thinking if it will be better to drop the button and change the list as: Breakdown (X components) // List of components (excluding DFM) Dynamic Features (Y components) // List of dynamic features (Only DFM)
This is of course my personal UI-related suggestion.

Good suggestion！I'll change it later.


:pencil: Fix r-t-l and l-t-r compose mismatch in README

This one had me confused.

Thank you kindly.
:boat:


null entity from oneToMany association with projection bean

Hi,
So I wanted to use projection bean in my project to optimize loading time (to avoid to get unusefull data...).
I have these two enties: Parent -----< Child (with one-to-many association)
In my database I have:

parent1 with child1 and child2
parent2 witout children

I wanted to get parent and children in one request so first I did this:
final JPAQueryBase<?> query = createQuery();

final QParent qParent = QParent.parent;
final QChild qChild = QChild.child;

Map<Long, Parent> transform = query.from(qParent)
        .leftJoin(qParent.children, qChild)
        .transform(GroupBy.groupBy(qParent.id)
                .as(Projections.bean(Parent.class,
                        qParent.id,
                        qParent.name,
                        GroupBy.set(qChild).as(qParent.children))));

final List<Parent> parents = new ArrayList<Parent>(transform.values());

It worked like a charm, the result is something like this:
[
	Parent: {
		id: 1,
		name: "parent1",
		children: [
			Children: {
				id: 1,
				name: "child1",
				otherAttr: //loaded
			},
			Children: {
				id: 2,
				name: "child2",
				otherAttr: //loaded
			}
		],
		otherAttr: null
	},
	Parent: {
		id: 2,
		name: "parent2",
		children: [], //size: 0
		otherAttr: null
	}
]

But I didn't want to load the "other attributes" from child entity. So I did this query with a projection bean of Child entity:
final JPAQueryBase<?> query = createQuery();

final QParent qParent = QParent.parent;
final QChild qChild = QChild.child;

Map<Long, Parent> transform = query.from(qParent)
        .leftJoin(qParent.children, qChild)
        .transform(GroupBy.groupBy(qParent.id)
                .as(Projections.bean(Parent.class,
                        qParent.id,
                        qParent.name,
                        GroupBy.set(Projections.bean(Child.class,
                                qChild.id,
                                qChild.name))
                                .as(qParent.children))));

final List<Parent> parents = new ArrayList<Parent>(transform.values());

With this query, I have full control on the attributes to select. But when parent has no children, something strange happened: a Child object with all attributes set to null is present in children list like this:
[
	Parent: {
		id: 1,
		name: "parent1",
		children: [
			Children: {
				id: 1,
				name: "child1",
				otherAttr: null
			},
			Children: {
				id: 2,
				name: "child2",
				otherAttr: null
			}
		],
		otherAttr: null
	},
	Parent: {
		id: 2,
		name: "parent2",
		children: [ //size: 1
			Children: {
					id: null,
					name: null,
					otherAttr: null
				}
		],
		otherAttr: null
	}
]

Is it a bug? If not what did I do wrong??

That's the default behaviour of projections, partly for backwards compatibility.
If you want a null binding if all arguments to a projection are null you can call projection.skipNulls() to get that behaviour.

Closing, since this is a feature.

Thanks Timo,
So I tried to use the projection.skipNulls() and it works well! ...but not for all cases.
This works (when Child has not SubChildren):
final JPAQueryBase<?> query = createQuery();

final QParent qParent = QParent.parent;
final QChild qChild = QChild.child;

Map<Long, Parent> transform = query.from(qParent)
        .leftJoin(qParent.children, qChild)
        .transform(GroupBy.groupBy(qParent.id)
                .as(Projections.bean(Parent.class,
                        qParent.id,
                        qParent.name,
                        GroupBy.list(Projections.bean(Child.class,
                                qChild.id,
                                qChild.name).skipNulls())
                                .as(qParent.children))));

final List<Parent> parents = new ArrayList<Parent>(transform.values());

But if Child has SubChildren like this, a Child entity will be return with all attributes setted to null:
Query:
final JPAQueryBase<?> query = createQuery();

final QParent qParent = QParent.parent;
final QChild qChild = QChild.child;
final QSubChild qSubChild = QSubChild.subChild;

Map<Long, Parent> transform = query.from(qParent)
        .leftJoin(qParent.children, qChild)
        .transform(GroupBy.groupBy(qParent.id)
                .as(Projections.bean(Parent.class,
                        qParent.id,
                        qParent.name,
                        GroupBy.list(Projections.bean(Child.class,
                                qChild.id,
                                qChild.name,
								Projections.bean(qSubChild.class,
                        				qSubChild.id,
                        				qSubChild.name)
                    					.as(qChild.subChild)).skipNulls())
                                .as(qParent.children))));

final List<Parent> parents = new ArrayList<Parent>(transform.values());

Result:
[
    Parent: {
        id: 1,
        name: "parent1",
        children: [
            Child: {
                id: 1,
                name: "child1",
                otherAttr: null,
                SubChild: {
                	id: 1,
                	name: "subChild1",
                	otherAttr: null,
                }
            },
            Child: {
                id: 2,
                name: "child2",
                otherAttr: null,
                SubChild: {
                	id: 2,
                	name: "subChild2",
                	otherAttr: null,
                }
            }
        ],
        otherAttr: null
    },
    Parent: {
        id: 2,
        name: "parent2",
        children: [ //size: 1
            Child: {
                    id: null,
                    name: null,
                    otherAttr: null,
	                SubChild: {
	                	id: null,
	                	name: null,
	                	otherAttr: null,
	                }
                }
        ],
        otherAttr: null
    }
]

Is there a way to fix problem even if my Child entity has SubChild entity?
Thanks.

You need to apply the skipNulls() on all projections individually, the scope is not the query, but the projection:
Map<Long, Parent> transform = query.from(qParent)
        .leftJoin(qParent.children, qChild)
        .transform(GroupBy.groupBy(qParent.id)
                .as(Projections.bean(Parent.class,
                        qParent.id,
                        qParent.name,
                        GroupBy.list(Projections.bean(Child.class,
                                qChild.id,
                                qChild.name,
                                Projections.bean(qSubChild.class,
                                        qSubChild.id,
                                        qSubChild.name).skipNulls()
                                        .as(qChild.subChild)).skipNulls())
                                .as(qParent.children))));

Thanks Timo for taking time to my problem.
I already tried to do something like this but unfortunately I cannot do that:
Projections.bean(...).skipNulls().as(qChild.subChild)

...because FactoryExpressionBase.skipNulls() returns FactoryExpression<T>
Neither:
Projections.bean(...).as(qChild.subChild).skipNulls()

...because QBean.as() returns Expression<T>
Any advice? Thanks

I did not find any solution for this problem yet... Any help would be appreciated. Thanks in advance :)

You can create this alias also via ExpressionUtils.as(...). I'll improve the factoryExpr.skipNulls() signature.

I have a similar scenario, but I am facing the problem with pagination. Since pagination is performed on the rows of the query result, some of the child table data are getting missed. Is there any way to handle this with scenario with single query.


Toggle to hide pairs with 0 invested

Such a good tool! Could I make a suggestion to give the option not to display $0 invested pairs?

added in 290e13b3ea5d3a4427759f6418ca54854c3932af


Test fixeddb

trying to test the fixed

Closing the PR because it is already updated in the code,


Fixes issue where transaction query rows are Iterable, and not List

Fixes #31

Codecov Report

Merging #34 into master will decrease coverage by <.01%.
The diff coverage is 100%.

@@            Coverage Diff             @@
##           master      #34      +/-   ##
==========================================
- Coverage   91.19%   91.18%   -0.01%
==========================================
  Files          11       11
  Lines         977      976       -1
==========================================
- Hits          891      890       -1
  Misses         86       86

Impacted Files
Coverage Δ

lib/src/connection.dart
91.72% <100%> (-0.19%)
:arrow_down:

lib/src/query.dart
96% <100%> (ø)
:arrow_up:

lib/src/postgresql_codec.dart
83.24% <0%> (+0.17%)
:arrow_up:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 5efc3f5...2491701. Read the comment docs.