Codefriar/jan 22 omnibus js updates

What does this PR do?
What issues does this PR fix or reference?
#
The PR fulfills these requirements:
[ ] Tests for the proposed changes have been added/updated.
[ ] Code linting and formatting was performed.
Functionality Before
<insert gif and/or summary>
Functionality After
<insert gif and/or summary>

Codecov Report

Merging #273 (c791239) into main (63e9ba6) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             main     #273   +/-   ##
=======================================
  Coverage   94.47%   94.47%
=======================================
  Files          58       58
  Lines        1972     1972
=======================================
  Hits         1863     1863
  Misses        109      109

Flag
Coverage Δ

Apex
94.47% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

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 4ff907d...c791239. Read the comment docs.


Design public API for writing native code

With the introduction of Tasks, it is possible to create a publicly available route for writing native code that has effects.
There seem to be three major category of interop:

Graphics bindings (elm-html, elm-webgl, elements, collage, etc.) that tend to do a decent amount of crazy stuff in JS.
Ports where you can talk to whatever crazy stuff is out there as long as a client-server relationship is possible.
Wrapping up an effectful JS API with tasks, where the mapping to Elm may be relatively simple.

This would address the last case, possibly the first one as well.
Let's use this issue to gather examples of existing packages and desired packages that would fit into these cases. This will help us design for the kinds of things people actually need to do.

This has not been effective in tracking progress on this so far. I will be focusing on this a lot after 0.16 and I'd rather not track it here.

Is this tracked anywhere now?

Thanks for the pointer, I like the overall direction of providing a set of Web API "primitives" and writing only Elm code on top of them. (Sorry for seeming impatient, I was just asking for information because I hadn’t seen this write-up.)


Changed some of the client-side types, as part of normalization

Removed nested Skill from the Criteria type, and some redundant english strings from some types containing both localizations..

I waited too long to merge this. Its going to be a pain to reconcile with task/screening-plan-performance, so I'll do that after task/screening-plan-performance is merged in.


The list of IP addresses is inconsistent between the calls

Describe the bug
The list of IP addresses is inconsistent between the calls
We are doing Azure Kubernetes Service deployment, with 5 outbound IP addresses configured. After the deployment is completed, we are trying to obtain a list of outbound IP addresses in subscription and in AKS resource groups. The list of returned IPs sometimes is inconsistent and occasionally does not include all IP addresses.
In the case described below, we deployed two AKS clusters. The first one was in East US, the second one in West US2, each in a different resource group. We waited until cluster were created successfully. After that, we used AZ CLI to get a list of outbound IP addresses in the whole subscription, and the result was proper. Later, we used AZ CLI to get a list of outbound IP addresses in concrete resource groups, and the result was empty (but should return values - multiple IP addresses). The same call, for the list of IP addresses in the resource group, after some time, returned proper values.
Timeline:
2021-04-19T11:46:44+00:00 - Deployment on EastUS finished.
2021-04-19T11:47:03+00:00 - Deployment on WestUS2 finished.
2021-04-19T11:47:03+00:00 - Getting IPs, in the whole subscription, with tag type=aks-slb-managed-outbound-ip returned correct list of IP adresses. 'x-ms-request-id' was 'e18857b4-4eab-49e1-bb89-b8db5fe1e774'. Used command: az network public-ip list --subscription "REDACTED" --query "[?tags.type=='aks-slb-managed-outbound-ip'].ipAddress"  --verbose
2021-04-19T11:48:54+00:00 - Getting IPs, in the whole subscription, with tag type=aks-slb-managed-outbound-ip returned correct list of IP adresses. 'x-ms-request-id' was 'fee85513-d78f-4015-8f42-28fa21422958'. Used command: az network public-ip list --subscription "REDACTED" --query "[?tags.type=='aks-slb-managed-outbound-ip'].ipAddress"  --verbose
2021-04-19T11:50:42+00:00 -  Getting IPs, in the whole subscription, with tag type=aks-slb-managed-outbound-ip returned correct list of IP adresses. 'x-ms-request-id' was '783c31cd-18e3-478d-ba8d-7c479701cd06'. Used command: az network public-ip list --subscription "REDACTED" --query "[?tags.type=='aks-slb-managed-outbound-ip'].ipAddress"  --verbose
2021-04-19T11:50:50+00:00 - Getting IPs, in the resource group "MC_ticket2-dev-eastus_ticket2-dev-eastus_eastus", with tag type=aks-slb-managed-outbound-ip returned empty list of IP adressed. Expected list of 5 IP adresses. Used AZ CLI command: az network public-ip list --resource-group "MC_ticket2-dev-eastus_ticket2-dev-eastus_eastus" --subscription "REDACTED" --query "[?tags.type=='aks-slb-managed-outbound-ip'].ipAddress" --verbose
Verbose info returned by AZ CLI:
INFO: Request URL: 'https://management.azure.com/subscriptions/REDACTED/resourceGroups/MC_ticket2-dev-eastus_ticket2-dev-eastus_eastus/providers/Microsoft.Network/publicIPAddresses?api-version=REDACTED'
INFO: Request method: 'GET'
INFO: Request headers:
INFO:     'Accept': 'application/json'
INFO:     'x-ms-client-request-id': '7d97c777-a105-11eb-8ce0-02ba7c23eb6d'
INFO:     'CommandName': 'REDACTED'
INFO:     'ParameterSetName': 'REDACTED'
INFO:     'User-Agent': 'AZURECLI/2.20.0 (DEB) azsdk-python-azure-mgmt-network/17.1.0 Python/3.6.10 (Linux-5.4.0-1045-aws-x86_64-with-debian-buster-sid)'
INFO:     'Authorization': 'REDACTED'
INFO: No body was attached to the request
INFO: Response status: 200
INFO: Response headers:
INFO:     'Cache-Control': 'no-cache'
INFO:     'Pragma': 'no-cache'
INFO:     'Content-Type': 'application/json; charset=utf-8'
INFO:     'Content-Encoding': 'REDACTED'
INFO:     'Expires': '-1'
INFO:     'Vary': 'REDACTED'
INFO:     'x-ms-ratelimit-remaining-subscription-reads': '11999'
INFO:     'x-ms-request-id': 'b77014cc-949a-4c7d-b0ea-55757ff4e69c'
INFO:     'x-ms-correlation-request-id': 'REDACTED'
INFO:     'x-ms-routing-request-id': 'REDACTED'
INFO:     'Strict-Transport-Security': 'REDACTED'
INFO:     'X-Content-Type-Options': 'REDACTED'
INFO:     'Date': 'Mon, 19 Apr 2021 11:50:52 GMT'
INFO:     'Content-Length': '133'
INFO: Command ran in 0.774 seconds (init: 0.097, invoke: 0.677)
2021-04-19T11:50:52+00:00 - Getting IPs, in the resource group "MC_ticket2-dev-westus2_ticket2-dev-westus2_westus2", with tag type=aks-slb-managed-outbound-ip returned empty list of IP adressed. Expected list of 5 IP adresses. Used az cli command: az network public-ip list --resource-group "MC_ticket2-dev-westus2_ticket2-dev-westus2_westus2" --subscription "REDACTED" --query "[?tags.type=='aks-slb-managed-outbound-ip'].ipAddress" --verbose
Verbose info returned by AZ CLI:
INFO: Request URL: 'https://management.azure.com/subscriptions/REDACTED/resourceGroups/MC_ticket2-dev-westus2_ticket2-dev-westus2_westus2/providers/Microsoft.Network/publicIPAddresses?api-version=REDACTED'
INFO: Request method: 'GET'
INFO: Request headers:
INFO:     'Accept': 'application/json'
INFO:     'x-ms-client-request-id': '7e216b21-a105-11eb-8ce0-02ba7c23eb6d'
INFO:     'CommandName': 'REDACTED'
INFO:     'ParameterSetName': 'REDACTED'
INFO:     'User-Agent': 'AZURECLI/2.20.0 (DEB) azsdk-python-azure-mgmt-network/17.1.0 Python/3.6.10 (Linux-5.4.0-1045-aws-x86_64-with-debian-buster-sid)'
INFO:     'Authorization': 'REDACTED'
INFO: No body was attached to the request
INFO: Response status: 200
INFO: Response headers:
INFO:     'Cache-Control': 'no-cache'
INFO:     'Pragma': 'no-cache'
INFO:     'Content-Type': 'application/json; charset=utf-8'
INFO:     'Content-Encoding': 'REDACTED'
INFO:     'Expires': '-1'
INFO:     'Vary': 'REDACTED'
INFO:     'x-ms-ratelimit-remaining-subscription-reads': '11999'
INFO:     'x-ms-request-id': 'f5bdff22-16bc-4fcd-a680-aa30c9f40983'
INFO:     'x-ms-correlation-request-id': 'REDACTED'
INFO:     'x-ms-routing-request-id': 'REDACTED'
INFO:     'Strict-Transport-Security': 'REDACTED'
INFO:     'X-Content-Type-Options': 'REDACTED'
INFO:     'Date': 'Mon, 19 Apr 2021 11:50:53 GMT'
INFO:     'Content-Length': '133'
INFO: Command ran in 0.813 seconds (init: 0.097, invoke: 0.717)
2021-04-19T13:55:17+02:00 - Getting IPs in resource group "MC_ticket2-dev-eastus_ticket2-dev-eastus_eastus" returned list of 5 IP adressed. Result is as expected. Used az cli command: az network public-ip list --resource-group "MC_ticket2-dev-eastus_ticket2-dev-eastus_eastus" --subscription "REDACTED" --verbose
Verbose info returned by AZ CLI:
Request URL: 'https://management.azure.com/subscriptions/REDACTED/resourceGroups/MC_ticket2-dev-eastus_ticket2-dev-eastus_eastus/providers/Microsoft.Network/publicIPAddresses?api-version=REDACTED'
Request method: 'GET'
Request headers:
'Accept': 'application/json'
'x-ms-client-request-id': '1bc0571b-a106-11eb-b3dd-2f03ad5837dd'
'CommandName': 'REDACTED'
'ParameterSetName': 'REDACTED'
'User-Agent': 'AZURECLI/2.21.0 (DEB) azsdk-python-azure-mgmt-network/18.0.0 Python/3.6.10 (Linux-5.8.0-48-generic-x86_64-with-debian-bullseye-sid)'
'Authorization': 'REDACTED'
No body was attached to the request
Response status: 200
Response headers:
'Cache-Control': 'no-cache'
'Pragma': 'no-cache'
'Transfer-Encoding': 'chunked'
'Content-Type': 'application/json; charset=utf-8'
'Content-Encoding': 'REDACTED'
'Expires': '-1'
'Vary': 'REDACTED'
'x-ms-request-id': '6ae02938-320d-41b1-911e-53a39f009b33'
'x-ms-correlation-request-id': 'REDACTED'
'x-ms-arm-service-request-id': 'REDACTED'
'Strict-Transport-Security': 'REDACTED'
'Server': 'Microsoft-HTTPAPI/2.0, Microsoft-HTTPAPI/2.0'
'x-ms-ratelimit-remaining-subscription-reads': '11962'
'x-ms-routing-request-id': 'REDACTED'
'X-Content-Type-Options': 'REDACTED'
'Date': 'Mon, 19 Apr 2021 11:55:18 GMT'
Expected behavior
The list of IP addresses is available immediately after the deployment is completed and is always consistent between calls.
Environment summary
'AZURECLI/2.20.0 (DEB) azsdk-python-azure-mgmt-network/17.1.0 Python/3.6.10 (Linux-5.4.0-1045-aws-x86_64-with-debian-buster-sid)
Installed from deb package.
Additional context

route to network service team to take a look

A have got a response from Azure Support Engineer.

Azure is a multi-regional product, where relative information of resources and their state needs to be replicated across multiple regions. Our investigation discovered that the issue that you encountered on 20-4-21 was caused by a transient delay in replication flow between Azure’s regions. This issue is restricted to resources which are simultaneously managed by clients spread across multiple geographies. The resources for which writes are restricted to a client from single region shouldn’t face this issue. We recognize that this as a problem, and we are continuously working on improving the platform.

We are currently in process of rolling out a new design to address these type of delays in replication. This functionality has not yet been rolled out to general release, across all subscriptions. If you would like to be included in the upcoming preview, please let us know and we can work on including your subscription when the preview becomes available.

We apologize for any inconvenience that this may have caused.

Workaround that could help until the new version is available. It is changing the ARM endpoint to ask directly where the resource was deployed, in the next example eastus2, please change accordingly and don’t forget to put the management.azure.com after gathering the information.

az cloud update --endpoint-resource-manager https://eastus2.management.azure.com
az network nsg list --resource # ... or the commands you need.
az cloud update --endpoint-resource-manager https://management.azure.com


[REG 2.067.0] Issue 14431 - huge slowdown of compilation speed

https://issues.dlang.org/show_bug.cgi?id=14431
In the pull request #4384, all instance has been changed to invoke
semantic3(). It was for the link-failure issue in specific case, but it
was too excessive.

Semantic analysis strategy for template instances:
We cannot determine which instance does not need to be placed in object
file until semantic analysis completed. Therefore, for all templates
instantiated in root module, compiler should invoke their semantic3 --
regardless of whether those are also instantiated in non-root module. If
a template is only instantiated in non-root module, we can elide its
semantic3 (and for the compilation speed we should do that).

Code generation storategy for template instances:
If a template is instantiated in non-root module, compiler usually does
not have to put it in object file. But if a template is instantiated in
both of root and non-root modules which mutually import each other, it
needs to placed in objfile.

Does this replace https://github.com/D-Programming-Language/dmd/pull/4626 ?

@WalterBright I'm not yet sure it's possible.

OK, auto-tester is now all green.

Does this replace #4626 ?

Now, this actually replaces it.

We cannot determine which instance does not need to be placed in object
file until semantic analysis completed.

Why? If the semantic analysis produces different results, there's a bug somewhere.

Therefore, for all templates instantiated in root module, compiler should invoke their semantic3 --
regardless of whether those are also instantiated in non-root module.

I'm very unhappy with legitimizing the idea that this could produce different instantiations. The whole point is they should be the same.

if a template is instantiated in both of root and non-root modules which mutually import each other, it
needs to placed in objfile.

This will simply kill compilation speed, as nobody seems to be able to resist having every module import every other module (Phobos is a prime example). I don't see how this PR fixes compile speed issues. I prefer the much more straightforward https://github.com/D-Programming-Language/dmd/pull/4780

Why? If the semantic analysis produces different results, there's a bug somewhere.

I'm very unhappy with legitimizing the idea that this could produce different instantiations. The whole point is they should be the same.

In D2, we have attribute inference and it changes instantiated function mangled names. So, to get the exact lined symbol names, we need to run semantic3 on such the instances.

This will simply kill compilation speed, as nobody seems to be able to resist having every module import every other module (Phobos is a prime example).

??? It's not a problem with the normal Phobos usage. For example, when you compile a "hello world" program, your code (root module) actually imports Phobos, but Phobos code (non-root module) does not import your program.

I don't see how this PR fixes compile speed issues.

This PR stops excessive semantic3 for the templates instantiated in non-root module. It will restore the compilation speed up to the equivalent to the 2.065.

In my Windows 7 PC (64bit Core i7):
Compiled program: import std.stdio; void main() { writeln("Hello world"); }
Measurement by: PS C:\d> Measure-Command {dmd.exe test.d}
With 2.065: 800msec
With 2.066: 1.1sec
With 2.067: 1.4sec
With this PR: 800msec

And, the excessive semantic3 had caused:

redundant symbol emission (Issue 14508 - [REG2.067.0] compiling with -unittest instantiates templates in non-root modules)
unnecessary -property check in Phobos code (Issue 14564 - [REG2.067] dmd -property -unittest combination causes compiler error)

This PR will also fix those regression issues.

In D2, we have attribute inference and it changes instantiated function mangled names. So, to get the exact lined symbol names, we need to run semantic3 on such the instances.

There must never be a case where template function mangled names are the same but the instantiated bodies are different. This includes any attribute inference. If this happens, the whole compilation model will fall apart.

For example, when you compile a "hello world" program, your code (root module) actually imports Phobos, but Phobos code (non-root module) does not import your program.

True, but every Phobos module imports every other Phobos module, and a user's project's modules will also typically import every other project module. Using separate compilation and heavy template use (which is becoming the norm) will become impractical.

Measurement by:

Thank you for the good measurements. But I don't feel this is representative for projects outlined in the previous paragraph.

redundant symbol emission (Issue 14508 - [REG2.067.0] compiling with -unittest instantiates templates in non-root modules)

Corrected as well with my simple PR https://github.com/D-Programming-Language/dmd/pull/4780

unnecessary -property check in Phobos code (Issue 14564 - [REG2.067] dmd -property -unittest combination causes compiler error)

Hmm, that might be better addressed with -property fixes.

Hmm, that might be better addressed with -property fixes.

https://github.com/D-Programming-Language/dmd/pull/2305 would benefit from your feedback, and it can be rebased or modified per your input.

There must never be a case where template function mangled names are the same but the instantiated bodies are different. ...

You're misunderstanding my argument. If a template is instantiated in root module, we cannot skip its semantic3 until found the same instance in non-root. And in worst case the determination will be deferred until the global semantic3 stage completed, because a function defined in root module may import other modules from the function body.
(I noticed that, if the non-root instantiation found quickly, that would be able to stop being unneeded semantic3 sometimes. I think it would be a possible future optimization for the compilation speed.)

True, but every Phobos module imports every other Phobos module, and a user's project's modules will also typically import every other project module. Using separate compilation and heavy template use (which is becoming the norm) will become impractical.

I noticed that #4780 would be disaster, Read my comment.

Corrected as well with my simple PR #4780

"simple solution" does not guarantee its correctness, especially for complex problems.

Refactor code: Add TemplateInstance::appendToModuleMember().

Could someone draw a simple overview of all the cases to explain where the code of a template instance ends up.
It seems that we're adding more and more complexity, overfitting the code to every corner case instead of coming up with a general solution.
As the regression was already introduced in 2.066 we might take another release to solve this properly.

OK, I succeeded fixing Win64 failure. All green.

It seems that we're adding more and more complexity, overfitting the code to every corner case instead of coming up with a general solution.  As the regression was already introduced in 2.067.0 we might take another release to solve this properly.

This is why I introduced the alternate fix, https://github.com/D-Programming-Language/dmd/pull/4780
It is most appropriate for 2.068 at least, as it will enable us to get it out the door and has known behavior.

Could someone draw a simple overview of all the cases to explain where the code of a template instance ends up.

I wrote a wiki page for the explanation.
http://wiki.dlang.org/Template_Instantiation_Strategy

@9rnsr thank you for writing up the explanation. (It belongs in the source code, not the wiki.)

I still cannot say I understand this. I am not in favor of pulling this for 2.068 - I believe the potential for further regressions with the complex algorithm is high. Using https://github.com/D-Programming-Language/dmd/pull/4780 will revert to known behavior. I don't agree this is a 'disaster', the worst case is someone will have to throw the -allinst switch, and those cases don't come up all that often.
The big problem I'm having is D's templates are supposed to be simple to understand. These algorithms are very far from simple. I would like more time to try and completely understand what we are doing here - the complexity suggests to me that we have gone off the rails into a ditch somewhere. Things get more and more complex and yet the bug reports and regressions keep coming.
It's like the 'gagging' technique used in the compiler. It's an endless source of bugs and regressions. The whole design of that is a giant, steaming mass of corruption (and entirely my fault). I want to stop trying to fix each of the bugs in it, step back, and figure out a whole new approach to speculative compilation.
I believe that it would be most productive to defer such until after the dmd source is converted to D. I want that to be the first thing after the 2.068 release. The dmd source code in D will be much more tractable.

Please show me any technical objections about this PR.
You are repeatedly talking about the regression risk. But how much the risk there is?
If you don't yet understand about the changes, I'm difficult to accept your risk talk.
I doubt that you are confusing simplicity of the concept and implementation. They're not same. A simple concept sometimes requires complex implementation - it's not rare in production software. (When those have equivalent usefulness, a complex implementation software with less bugs
is always preferred than a simple implementation software with many bugs.)
< rant > If you really want to keep implementation simple, please revert all my contributions around templates.
It will revert dmd code to the known state, and make the code simple by removing many corner case handlings, and finally reintroduce many link-failure issues.
If we follow your words, it would be possible choice for the next release. Let's break everything! < /rant >

I think normally, I should have responsibility for all new bugs those introduced by my contributions.
My old bugfix had introduce regressions, so this PR fixes them.
If this PR introduces some regressions, I will fix them.
On the other hand, your "fix" will re-introduce link-failure bug and it's called a regression.
Honestly, can you really fix that issue with more better way?
I don't want to increase the number of bugs that won't be fixed.

One more: Issue 14508 was a redundant symbol emission issue in object files. #4780 may fix it but also re-introduce link-failure problem. And #4780 has no effect to the compilation speed issue. Why the object file size issue is important than link failure bug? How do you think about issue 14431? Your priority is hard to understand to me.

You are repeatedly talking about the regression risk. But how much the risk there is?

I believe it is substantial because this particular problem, and its various fixes, have repeatedly introduced regressions. It's gone on for years. This suggests to me that we do not completely understand the problem that needs solving. I would like to step back and think about it and come up with a way of fixing it for good.

If this PR introduces some regressions, I will fix them.

I understand and appreciate that, and your history here proves that we can rely on you to do so.

Let's break everything!

We all know you're our most valued contributor to DMD. We disagree on this one issue, not the rest of your contributions.
https://issues.dlang.org/show_bug.cgi?id=14431 should be corrected by https://github.com/D-Programming-Language/dmd/pull/4780, as it was caused by too many templates being compiled and emitted.
https://issues.dlang.org/show_bug.cgi?id=14508 The fixes there are mostly not affected by #4780.

Your priority is hard to understand to me.

My priority is to get 2.068 out as a stable release. It's very late in the release cycle, it needs to go out.
Essentially, I believe we need to rethink when templates are instantiated. The current system is based on the C++ model (which doesn't have modules), with all kinds of patches laid on top of it. We can do better.
For example, you remarked earlier that semantic must be run on a template in order to determine its attributes and return type (for auto return), which is used to generated the mangled name, which is used to determine if a template has already been instantiated. That is correct. However, it is still true that it is a bug if semantic must be run in order to distinguish one template instantiation from another - the template arguments must be enough to uniquely determine the mangled name. Yet the mangled name includes the return type and the attributes. This suggests to me that the solution lies not in running semantic, but changing how the mangling is done.

I believe it is substantial because this particular problem, and its various fixes, have repeatedly introduced regressions. It's gone on for years.

Because we've continuously fixed remained bigger and more difficult issues, than the issues we had already fixed number of years ago, to increase compiler stability.
For example: #3384 was a recent big fix for the remaining forward reference issue around class inheritance. It had introduced some regressions, but finally we've actually fixed one of the remained big issues.

This suggests to me that we do not completely understand the problem that needs solving. I would like to step back and think about it and come up with a way of fixing it for good.

Yes we're not perfect. However our life are finite, so we should also consider the cost-effectiveness of our time.

I understand and appreciate that, and your history here proves that we can rely on you to do so.

Thank you very much.

https://issues.dlang.org/show_bug.cgi?id=14508 The fixes there are mostly not affected by #4780.

I cannot understand this. Are you saying the summary of #4780 is incorrect? It's titled with "Issue 14508"...

My priority is to get 2.068 out as a stable release. It's very late in the release cycle, it needs to go out.

At least this fix is a part of the stabilization. This PR does not suggest any completely new feature. This PR is based on the current template instantiation model (it's introduced by #2550 so since 2.064).

Essentially, I believe we need to rethink when templates are instantiated. ...

Rethinking about the new mangling rule is good. But before than that, we should consider to fix existing bugs coming from the current mangling rule - for example issue 10619 and issue 14739).

I wrote a wiki page for the explanation.
http://wiki.dlang.org/Template_Instantiation_Strategy

Thanks for the nice summary.
It seems that by solving the mutual import issue we'd at least have a stable rule that allows efficient compilation without linker errors.
Granted, it's a complex solution, but it works for the time being. The root vs. non-root distinction introduced by #2550 comes with a lot of intrinsic complexity and has caused much grief, but also came with some good compile time/object size improvements. We shouldn't throw this away, now it's almost finished.
The simple and failsafe solution is to emit code to every object that uses an instance, letting the linker sort out the duplicates. If we can get this fast enough it might be an alternative, particularly for the multiple module to multiple object file compilation mode.

In D2, we have attribute inference and it changes instantiated function mangled names. So, to get the exact lined symbol names, we need to run semantic3 on such the instances.

Since when does inference affect mangling? I thought we'd avoided that b/c of ABI stability and separate compilation concerns.

Since when does inference affect mangling? I thought we'd avoided that b/c of ABI stability and separate compilation concerns.

Since the first (inference modifies FuncDeclaration::type, then it will be a part of function symbol). In my recognition, typesafe linking is priority than the compilation speed currently.

@MartinNowak @WalterBright Do you have any other objections about this PR? Even if you don't want to go this change in 2.068 release, we can fix the issue in master branch...

The algorithm is very difficult to understand. I don't know how to explain it to someone else. I worry that if the only person it is understandable to is Kenji, then nobody else can maintain the compiler. This is not practical for a team organization.

Martin, do you understand the algorithm?
The wiki, which refers to compiler internals, does not belong on the wiki, it belongs in the compiler source code.
The wiki should have an explanation for how it works that is intended for the D user, i.e. not in terms of compiler internals.

@WalterBright I placed the text in wiki because it was convenient. I'll move it in dmd repo if you hope that (e.g. dmd/doc/note.txt?).

I worry that if the only person it is understandable to is Kenji, then nobody else can maintain the compiler.

I recall that David Nadlinger has fixed a regression issue 13478 in 2.066.1 devel, which was the bug in the template instantiation code.
@klickverbot Could you please join the review of this PR?

In D2, we have attribute inference and it changes instantiated function mangled names. So, to get the exact lined symbol names, we need to run semantic3 on such the instances.

I still don't understand how semantic3 for correct mangling is necessary to find existing instances.

I still don't understand how semantic3 for correct mangling is necessary to find existing instances.

Perhaps we can elide semantic3 call from some root instances. But currently semantic3 is always called on all root instances. We cannot improve it yet.

I still don't understand how semantic3 for correct mangling is necessary to find existing instances.

It isn't necessary. A template's arguments completely determine it. If the arguments match the arguments for existing instances, then it MUST MATCH and running semantic3 is not necessary.

I added test case to show that the issue 14901 will be actually fixed.

I know it's a complex change but all of the fixes here make sense and solve a few big regressions.
Let's please go on with this and work on cleaning up the template implementation later.

It isn't necessary. A template's arguments completely determine it. If the arguments match the arguments for existing instances, then it MUST MATCH and running semantic3 is not necessary.

I agree, but changing this isn't actually part of this PR.

Can you please rebase+reopen this against stable. Please do so soon, so that we can rigorously test this before 2.068.1.

Reopened against stable branch. See #4944.


fix: Fixes issue where CI was not executing all tests

Description

Fixes #14333
Type of change

Bug fix (non-breaking change which fixes an issue)

How Has This Been Tested?
Checklist:

[ ] My code follows the style guidelines of this project
[ ] I have performed a self-review of my own code
[ ] I have commented my code, particularly in hard-to-understand areas
[ ] I have made corresponding changes to the documentation
[ ] My changes generate no new warnings
[ ] I have added tests that prove my fix is effective or that my feature works
[ ] New and existing unit tests pass locally with my changes

/ok-to-test sha=4ba1129

/ok-to-test sha=072ecd7

/ok-to-test sha=7acd5f2


feature request: no ids in linkStyle

it would be great not to have to identify links by ID when writing the text description, because inserting links in the middle gets really messy. So I end up having to put them at the end, and then nothing is organized after a while. It's also very annoying to have to count links when I'm writing a graph and if I get it off by one, it can be hard to find the node on the flowchart diagram... it's just needless debugging.
Maybe you could allow something like:
graph TD
A --> B style stroke:#a00,stroke-width:2px;

which would be a huge improvement over what I have to do now - I have to keep counting out the links to remember which number a link style goes on (i'm trying to do a flowchart with red and green links).
even better would be being able to apply classes to links, which seems like it would be theoretically the same as doing so for nodes, but with the new syntax you could do:
A --> B style .red
OR
A --> B class red

And it would automatically apply a group of styles.
I think this is a large usability issue, and if you could fix it that would be awesome.

Yes, what you are prosing is how one would expect it to work.
This should be done!
I am a bit swamped right nopw but will put this as help wanted and hopefully someone will pick it up.

@vshesh I don't quite understand the issue. Could you please create a demo in https://mermaidjs.github.io/mermaid-live-editor?

Here's what I mean:
graph TD
A --> B
B --> C
C --> A

Now say I want one of these to be red links and the other two to be green links
graph TD
A --> B
B --> C
C --> A

linkStyle 1 style .red
linkStyle 2 class green
linkStyle 3 class green

That was easy to do with 3 links, but it's really hard to do with more than, say, 10. I have to manually count out which link i'm looking at for an id.
A much simpler thing would be putting linksyles into the link declarations directly:
graph TD
B --> A
A --> B, linkStyle class red
^ or any other equivalent syntax that works with your parser

now i don't need to know which number link it is, and if, for example I go back and add another link in the middle:
graph TD
B --> A
C --> A
A --> B, linkstyle class red

I don't have to go renumber all my ids!!

Any news here?

There is a walk around, each label has an id #L-A-B, so you can color it with style #L-A-B .path, and for corresponding label, it has id #L-L-A-B

I would appreciate this feature a lot!
@Ariex can you give a working example?

@0dminnimda ,  open the example page, use developer tools to select the arrow from B (Go shopping) to C (Let me think), you can see its code like below:
<g id="L-B-C" style="opacity: 1;" class="edgePath LS-B LE-C"><path style="fill:none" marker-end="url(#arrowhead24)" d="M161.03125,170L161.03125,174.16666666666666C161.03125,178.33333333333334,161.03125,186.66666666666666,161.11458333333334,195.08333358764648C161.19791666666666,203.50000050862627,161.36458333333334,212.00000101725254,161.44791666666666,216.25000127156568L161.53125,220.50000152587882" class="path"></path><defs><marker orient="auto" markerHeight="6" markerWidth="8" markerUnits="strokeWidth" refY="5" refX="9" viewBox="0 0 10 10" id="arrowhead24"><path style="stroke-width: 1; stroke-dasharray: 1, 0;" class="arrowheadPath" d="M 0 0 L 10 5 L 0 10 z"></path></marker></defs></g>

add this to styles:
g#L-B-C path {
    fill: red !important;
    stroke: red !important;
}

you can see the arrow is red now

I see. It is not pretty, but at least it's possible.
Also, should this issue be closed, it doesn't seem to be resolved


Update README.md

Some suggestions for wording.

Looks good to me, I opened this other PR https://github.com/BlueBrain/hippocampus-workshop/pull/2/files before seeing this one.
We could merge the two PRs (or rebase the other after one is merged).


[Test] Python 3.12 Support

Issue #, if available:
Description of changes:
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

/platform_tests ref=py_312

/platform_tests ref=py_312

/platform_tests ref=py_312

/platform_tests ref=py_312


Question - How to get access to Data storage({scopeType: "User"}) with help of REST api in task(nodejs 10)?

Hi,
Guys could you please help me to understand, how I can get value from Data storage in my extension task (Node10).

I set some per user value  in data storage from client(hub) with help of the function from the doc:

 VSS.getService(VSS.ServiceIds.ExtensionData).then(function(dataService) {
        // Set value in user scope
        dataService.setValue("userScopedKey", 12345, {scopeType: "User"}).then(function(value) {
            console.log("User scoped key value is " + value);
        });
    });

Further, I try to access to the data with help api from azure-devops-node-api, as far as I understand it's wrapper for rest. And all works perfectly when I uses PAT which was generated in my devops account.

   let authHandler = azdev.getPersonalAccessTokenHandler(token);
     let option = undefined;
    let vsts: azdev.WebApi = new azdev.WebApi(orgUrl, authHandler, option);
Unfortunately, if I pass:
env:
SYSTEM_ACCESSTOKEN: $(System.AccessToken)
to task input, and try to get pat value in my task:
let token: string = process.env.SYSTEM_ACCESSTOKEN_TEST
I will not have success.
Of course, I have tried for test:
env:
SYSTEM_ACCESSTOKEN: MY_GENERATED_PAT
and it's works.
Also, I tried another ways, but without success:
let sat: string = task.getTaskVariable("SYSTEM_ACCESSTOKEN");
// variables:
//SYSTEM_ACCESSTOKEN: $(System.AccessToken)
let input = task.getInput("SYSTEM_ACCESSTOKEN");
//inputs:
// SYSTEM_ACCESSTOKEN: $(System.AccessToken)
My question:
Could you please provide me code snippet, which will show how I can pass $(System.AccessToken) from yaml pipeline to my task, or another way for getting values from the data storage in my task?

Thanks for your question. It looks like you're working through an issue with your scenario or implementation, rather than an issue with the documentation. Here are a couple of options where you might consider asking your question:

Azure DevOps on Stack Overflow
Azure DevOps Support Bot


updated changelog to refelct changes of 0.57.4

@seut can you take a 👀

Current coverage is 81.18% (diff: 100%)

Merging #4531 into master will decrease coverage by 0.02%

@@             master      #4531   diff @@
==========================================
  Files          1293       1293
  Lines         44149      44149
  Methods           0          0
  Messages          0          0
  Branches       7011       7011
==========================================
- Hits          35854      35841    -13
- Misses         5617       5619     +2
- Partials       2678       2689    +11

Powered by Codecov. Last update 2f1588a...d2c612a


Fix #1451: Avoid printing password values into log files during ingestion

Type of change :

[x] Improvement

Frontend Preview (Screenshots) :
For frontend related change, please link screenshots of your changes preview! Optional for backend related changes.

Checklist:

[x] I have read the CONTRIBUTING document.
[ ] I have performed a self-review of my own.
[ ] I have tagged my reviewers below.
[ ] I have commented on my code, particularly in hard-to-understand areas.
[ ] My changes generate no new warnings.
[ ] I have added tests that prove my fix is effective or that my feature works.
[x] All new and existing tests passed.

Reviewers

Can this be applied to AWS credential keys (glue and s3)?


🛠New pdf download function

Description
Charley can add pdf's in hygraph. Every user can now download the pdf. If there is no pdf, there will be no button.
Before

After

Which issue did i close?
I closed the next issue:

Link issue: https://github.com/fdnd-agency/visual-thinking/issues/147

Type of change

[x] Bug fix (non-breaking change which fixes an issue)

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

[x]  Breaking change (fix or feature that would cause existing functionality to not work as expected)

[x]  This change requires a documentation update

How Has This Been Tested?

[x] User test

[x]  Accessibility test

[x]  Performance test

[x]  Responsive Design test

Checklist:

[x] My code follows the style guidelines of this project

[x]  The code is accessible

[x] The code is performant

[x]  The code is responsive

[x]  I have written meaningful commit messages

[x]  I have performed a self-review of my code

[x]  I have commented my code, particularly in hard-to-understand areas

[x]  I have made corresponding changes to the documentation (README and/or Wiki)

@Daniquedejong please add a link to the live website


Change builders to not require glibc 2.16

When we rolled BoringSSL in https://github.com/dart-lang/sdk/commit/fc42f03c1341ace95408ad107c60d6a2935a7ce9, we ended up requiring glibc 2.16 which for linux users means upgrading to trusty.
Per discussion in https://github.com/flutter/flutter/pull/5295, this does not work for Flutter. For example, this makes it really hard to build flutter apps in Travis.
We should change the builders to compile against an older version.

This blocks 1.19

Fixing this will also (hopefully) fix our use of Travis - another plus.

Looking at the bots, this seems to be working now, closing

I ran a angular2 build on travis w/ this commit – https://travis-ci.org/dart-lang/angular2/jobs/151294698
Also looks good 😄


WIP: Bump Mesos modules package.

High Level Description
This includes a fix for CHECK failing on nested container launch, when:

The parent container is launched
The agent is restarted
A nested container is launched in the same parent

Related Issues

CORE-1279 Internal tracking ticket which basically says the same thing as this description.

Checklist for all PR's

[x] Included a test which will fail if code is reverted but test is not: Test is included as a modules unit test.
[x] Read the DC/OS contributing guidelines
[x] Followed relevant code rules Rules for Packages and Systemd

Checklist for component/package updates:
If you are changing components or packages in DC/OS (e.g. you are bumping the sha or ref of anything underneath packages), then in addition to the above please also include:

[x] Change log from the last version integrated (this should be a link to commits for easy verification and review): https://github.com/dcos/dcos-mesos-modules/compare/d3d7215f4efee2807b68afce030c9c9dab386324...8dbaa0bf87cabbcfc6b7e9ddd4a2d670ca350189
[ ] Test Results: N/A
[ ] Code Coverage (if available): N/A

@mesosphere-mergebot bump-ee

@mesosphere-mergebot bump-ee

Merged the modules bump and updated the ref/SHA here

@mesosphere-mergebot bump-ee


Issue: v5.0.0 - Nuxt config type errors in TS project

When using version 5.0.0 in a TS based project using nuxt.config.ts, and using the 'block' type of configuration entry (i.e a separate storyblok: {...} config entry, instead of inline config under the modules), typescript shows type errors.
If using 'strict' TS checking, this will also throw errors and prevent a dev/build.
Workaround: configure via inline modules config instead.

Expected Behavior
Can configure via the storyblok configuration as normal
Current Behavior
Can not configure via the storyblok configuration as normal, throws TS errors.
Steps to Reproduce

Start a Nuxt 3 TS project
Install Version 5 of storyblok-nuxt
Attempt to add a storyblok: {...} configuration block to nuxt.config.ts, observer type errors on dev/generate/typecheck

I can confirm that the same is happening for me in 5.0.1.

I have a feeling that it is because of the defaults in the module:
https://github.com/storyblok/storyblok-nuxt/blob/main/lib/src/module.js#L15-L17
Might be time to make a "proper" ts conversion of the module.

Thanks for the confirm @SebbeJohansson ,  agree it's probably down to the defaults (and not providing a proper/full definition of the ModuleOptions interface)
Also agree on the 'proper ts conversion' comment. The currently included module.d.ts installed with this module doesn't look correct at all ... ie it doesn't look like a normal d.ts file, it's just the module.mjs file with a different extension, and shows multiple of it's on TS errors when I open it...

Any update/movement on this?

@stevengrimaldo i took another look at this, and it looks like the module would need to be properly switched to ts so that defineNuxtModule<ModuleOptions> works. I tried to do it, but I cant get it to run. Might be above my abilities 😅

Ive only just gone and done it. Only took like 3 hours too!
#296


[Bug]: tcgc, diagnostic, false positive on method with spread

Describe the bug
The diagnostic is error and cannot be ignored.
TCGC appears to be wrong when the method body parameter got spread (or maybe only when there is 2 spread in body?).
error @azure-tools/typespec-client-generator-core/no-corresponding-method-param: Missing "completeRequest" method parameter in method "complete", when "completeRequest" must be sent to the service. Add a parameter named "completeRequest" to the method.
error @azure-tools/typespec-client-generator-core/no-corresponding-method-param: Missing "embedRequest" method parameter in method "embed", when "embedRequest" must be sent to the service. Add a parameter named "embedRequest" to the method.
error @azure-tools/typespec-client-generator-core/no-corresponding-method-param: Missing "embedRequest1" method parameter in method "embed", when "embedRequest1" must be sent to the service. Add a parameter named "embedRequest1" to the method.

log
full run on existing libs
Reproduction
source is
https://github.com/Azure/azure-rest-api-specs/blob/016b80ae90f5fabc1e572efabd3ecb1030d444c0/specification/ai/ModelClient/routes.tsp#L26
(it is not merged to main branch, PR https://github.com/Azure/azure-rest-api-specs/pull/28438)
SDK at https://github.com/Azure/azure-sdk-for-java/tree/5e07b10d9b04fe8c73a4ee6c78f8aeb9786e0543/sdk/ai/azure-ai-inference
Checklist

[x] Follow our Code of Conduct
[x] Check that this issue is about the Azure libraries for typespec. For bug in the typespec language or core libraries file it in the TypeSpec repo
[x] Check that there isn't already an issue that request the same bug to avoid creating a duplicate.
[x] The provided reproduction is a minimal reproducible example of the bug.

The root cause is from: https://github.com/microsoft/typespec/issues/4757. Suggestion: refine the spec definition since spread additional properties model in body is meaningless.

Asking service to update the tsp https://github.com/Azure/azure-rest-api-specs/pull/28438/files#r1802429139


Support peerDependencies and optionalDependencies

Currently we only check dependencies and devDependencies. Under what circumstances would we want to update peer and optional dependencies too?

Perhaps one way to do this is to allow these fields to be configurable, in a way that we could define defaults but allow them to be overridden on a global, per-repo or per-package file basis.


Chore/update database configuration

Description
Add a configuration option for the database scheme which default to SRV
Checklist

[x] My code follows the style guidelines of this project
[x] I have performed a self-review of my own code
[x] I have commented my code, particularly in hard-to-understand areas
[x] I have made corresponding changes to the documentation
[x] My changes generate no new errors
[x] Is my code backwards compatible
[x] Have I written unit tests

:tada: This PR is included in version 1.0.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


Node.js 8 support?

Hi,
Will there be a release for supporting Node.js 8, or should we rewrite everything in N-API?

Node 8 should work out of the box.  Doesn't it for you?

It didn't, but turned out that was my fault, I've accidentally referenced an older version nan. Anyway, keep up the good work, N-API would be the most important thing since io.js in this platform!

Hi fellas. Just want to be explicit here - Is the recommended path still to write addons using NAN, and NAN will also cover compatibility between pre Node 8 versions and moving to N-API?
Cheers!

Yes, you should still use NAN for production use. It covers every relevant version of Node.js. Also note that N-API is not intended for end users. You should eventually use https://github.com/nodejs/node-addon-api.


echarts 桑基图

This issue is not created by echarts-issue-helper and will be soon closed.

桑基图两个节点之间怎么显示双向的关系


working on adding a subpage for OPEN HARDWARE

I am already working on adding sub page to open hardware so that when the link is click it takes you to a sub page.

Thank you @mildrette for your work, there's an open PR #36 - We'll add more tasks today!
Looking forward to your contributions!

I will close this for now but feel free to repent it later!


about dataset

an excellent work!!Could you please provide more details about the training dataset?

In my case, collect it myself, about 3k video, include 46 identities, 23 males, 23 females, impressive result i had

In my case, collect it myself, about 3k video, include 46 identities, 23 males, 23 females, impressive result i had

Isn't there a more expeditious and automated resolution, perchance?

@phonggx In your case,your  dataset about 3k video, include 46 identities, 23 males, 23 females,which is that your 3k video is
croped  from 46  long vedio?


Confirm net means net

Use consistent values for cf_energy_net throughout the code - this should always just be "sum of gen." The previous code used "positive numbers in gen" for about half the time and then switched it after the PPA calculation loop. Fixing this required updating some values of cf_energy_net to cf_energy_sales. This calculation change and the associated labels changes should address Steve's comments in https://github.com/NREL/SAM/pull/927
The goal of this PR is that no numbers with units of $ should change at the end of the calculation. Changes in values with units of kWh for behind the meter systems are expected.
Note that there are some output names that need to be changed that aren't here. That seems out of scope for this PR, so I made a follow up issue: https://github.com/NREL/ssc/issues/755

Test failures are segmentation faults on mac only and should be resolved once https://github.com/NREL/ssc/pull/749 is merged

Here's an LK script I'm using to investigate:
vars = ['cf_energy_curtailed','cf_energy_purchases','cf_energy_without_battery','cf_energy_net','cf_energy_sales','batt_annual_discharge_energy','fuelcell_annual_energy_discharged','annual_energy'];

for ( i=0; i<#vars; i++ )
{
	outln(vars[i] + ' = ' + get(vars[i]) );
	outln( varinfo(vars[i]));
	outln();
}


GEODE-5499: Changing testTxRmtMirror to use awaitility, not 200 ms sleep

Thank you for submitting a contribution to Apache Geode.
In order to streamline the review of the contribution we ask you
to ensure the following steps have been taken:
For all changes:

[ ] Is there a JIRA ticket associated with this PR? Is it referenced in the commit message?

[ ] Has your PR been rebased against the latest commit within the target branch (typically develop)?

[ ] Is your initial contribution a single, squashed commit?

[ ] Does gradlew build run cleanly?

[ ] Have you written or updated unit tests to verify your changes?

[ ] If adding new dependencies to the code, are these dependencies licensed in a way that is compatible for inclusion under ASF 2.0?

Note:
Please ensure that once the PR is submitted, you check travis-ci for build issues and
submit an update to your PR as soon as possible. If you need help, please send an
email to<EMAIL_ADDRESS>

@mhansonp @balesh2

@galen-pivotal - This test is in a base class that is extended by a whole bunch of other tests that configure different region types - so this is run with either ack or no-ack.
The test has seen failures for some time, but it may be worse now with the newer infrastructure.


How can I use a proxy ?

Hello, I need to be able to use a Proxy. How could I do so that the resquests done by your API goes through a proxy ?

Hi, I don't believe proxy were ever considered in this project, I'm afraid you will need:

either to set it globally in your system (at least linux machines can let you do that)
or have a look at the code and try to propose a pull request to add such an option to the Twitter (here: https://github.com/sixohsix/twitter/blob/master/twitter/api.py#L310-L523 ) and TwitterStream classes (there: https://github.com/sixohsix/twitter/blob/master/twitter/stream.py#L205-L289 )

It's ok I modified the code to use a proxy. It was not as hard as I thought it would be.

It could be useful to include it as an option of this library for other users, could you maybe share your modifications so we can see how to include it properly?

I'm not sure if it's working properly. I put :
proxy_support = ProxyHandler({"http":"http://<IP_ADDRESS>:3128"})
opener = build_opener(proxy_support)
install_opener(opener)
in the TwitterCall init
I check the ip just before the resquest was sent and it's the proxy address. So I hope it's working.

Thanks.
PS: you might not want to give out publicly the IP of your proxy ;)

Oh it's from proxy list so it's already a public Proxy.

Oh so apparently it's not working.
I do a request to get my ip just before the request sent to twitter and it displays the proxy address but even if I use a wrong proxy address the request to twitter works.
So I guess the API doesn't use the proxy for its request and I really don't know why...
I put
proxy_support = ProxyHandler({"http":"<IP_ADDRESS>:3128"})
opener = build_opener(proxy_support)
install_opener(opener)

in the init of the TwitterCall class.
# Request
        try:
            # Request to a website that returns your ip
            req = urllib_request.Request('http://ip.42.pl/raw')
            test = urlopen(req)
            print('my ip is : ' + str(test.read()))
        except Exception as e:
            print(e)
        req = urllib_request.Request(url_base, data=body, headers=headers)

The request to get my ip returns the proxy address so I thought it was working.
Although, as I said, I ran the script with a wrong IP address, I got an error for the request that tried to get my ip, which is normal but after that the script still sent tweets.
Any idea why didn't the twitter request go through the proxy ?
I mean the request is sent the same way in both cases so why is it going through the proxy for one request and not for the other ?

@yutsa still some problems or not?

I made a mistake the first time. I used the proxy for http but the twitter requests are in https. So I edited my previous post. It works perfectly fine now.

Nice, thx!


Potential issue with third-body efficiencies

When trying to run irrev_mech (having run it successfully previously), I am getting the following error:
Traceback (most recent call last):
File "irrev_mech.py", line 433, in
convert_mech_irrev(args.mech, args.thermo, args.range)
File "irrev_mech.py", line 310, in convert_mech_irrev
[elems, specs, reacs, units] = mech.read_mech(mech_name)
File ".../reduction/Naik_C12/irrev_mech/mech_interpret.py", line 477, in read_mech
pair = [line_split[i], float(line_split[i + 1])]
IndexError: list index out of range
This section is apparently related to the read-in for three-body reaction efficiencies. Any help would be appreciated.

pretty sure the primary issue is that the mech_interpret.py used in irrev_mech did not support CHEB or PLOG reactions! should be fixed shortly.

Was just about to post on that issue.  When I remove the PLOG lines (didn't realize they were in there, there are only 4 out of the ~700 reactions) the code works fine.
On another note, I have tried running the code for GRI 3.0, and while it runs without shooting an error, it appears to get stuck in a loop and never completes.  When killed, the traceback indicates that it is stuck while reading the thermo file.
Traceback (most recent call last):
File "irrev_mech.py", line 433, in
convert_mech_irrev(args.mech, args.thermo, args.range)
File "irrev_mech.py", line 315, in convert_mech_irrev
mech.read_thermo(file, elems, specs)
File ".../reduction/Naik_C12/irrev_mech/mech_interpret.py", line 507, in read_thermo
"""

OK—mechanisms with PLOG should work now. CHEB is still not supported since I need to figure out how that would even work...


Run from backend

Does anyone have (or can point me to) a workflow to just run the backend of this? I'm having serious issues with installing and running the js/react frontend when I just want to develop in python. I assume it does:
Data pre-process -> finetune acoustic -> generate alignments -> finetune vocoder
but there's no main.py and init.py  is empty so I'm having trouble putting the pieces together

+1


Migrate tests from deno.land to JSR

This PQ

fixes up the old context types tests and aligns them with the composer type tests
migrates the test deps to JSR
stops depending on various deno.land deps to mock types and uses npm: imports instead

I am trying to contribute IsMutuallyAssignable to @std: https://github.com/denoland/std/pull/6154
Let's see what they think of it. If they merge, we can remove our own declaration of the type, and rely on @std instead.


Sqlite: Create temp table query returns before table got created

Bug Description
When I create a temporary table and execute the query, then the method returns before the table got created in the db. This means if I run immediately afterwards any query that assumes the existence of the table this query will fail.
Minimal Reproduction
#[cfg(test)]
mod tests {
    use std::time::Duration;

    use sqlx::{migrate::MigrateDatabase, Sqlite, SqlitePool};
    use tokio::time::sleep;

    #[tokio::test]
    async fn test_create_table() {
        if Sqlite::database_exists("/tmp/test.db").await.unwrap() {
            Sqlite::drop_database("/tmp/test.db").await.unwrap();
        }

        Sqlite::create_database("/tmp/test.db").await.unwrap();
        let db = SqlitePool::connect("/tmp/test.db").await.unwrap();

        sqlx::query("CREATE TEMP TABLE t (id INTEGER);")
            .execute(&db)
            .await
            .unwrap();

        //sleep(Duration::from_millis(100)).await;

        sqlx::query("SELECT * FROM t").fetch_all(&db).await.unwrap();
    }
}

This panics on my side with the following error:
thread 'temporary_tables::tests::test_create_table' panicked at src/temporary_tables.rs:109:61:
called `Result::unwrap()` on an `Err` value: Database(SqliteError { code: 1, message: "no such table: t" })

If I uncomment the sleep line it succeeds.
Info

SQLx version: 0.7.3
SQLx features enabled: ["runtime-tokio-native-tls", "sqlite"]
Database server and version: SQLite 3.44.0 (bundled via libsqlite3-sys 0.27.0)
Operating system: arch-linux
rustc --version: 1.77.0-nightly

That is normal, you need to ethier accurie a single connection from the pool or just run the query and create on a signle transaction.
When you run them on the pool directly each query might be run on a separate connection with means the SELECT can be executed before the CREAT is full commited in the db

Ah thanks for this hint, this was the missing piece in me not understanding all the logical flow. Maybe I missed this but I think it would be good to document this somewhere prominently, since it makes quite a big difference.


StdObjectMapperFactory Bug

In my application I need to register some MixIn modules to deal with 3rd party library POJO's that do not have a no arg constructor.  I created a jackson ObjectMapper and registered my modules.  I then created an instance of StdObjectMapperFactory and used it's setObjectMapper to put my instance of ObjectMapper into the factory.  I then pass the factory to the StdCouchDbConnector constructor.
createObjectMapper works just like you would expect and passes the ObjectMapper I have given the class back out.
public synchronized ObjectMapper createObjectMapper() {
	if (instance == null) {
		instance = new ObjectMapper();
		applyDefaultConfiguration(instance);
	}
	return instance;
}

However, the StdObjectMapperFactory.createObjectMapper(CouchDbConnector) method ignores the existence of the "instance" of ObjectMapper I gave it.
public ObjectMapper createObjectMapper(CouchDbConnector connector) {
	ObjectMapper objectMapper = new ObjectMapper();
	applyDefaultConfiguration(objectMapper);
	objectMapper.registerModule(new EktorpJacksonModule(connector, objectMapper));
	return objectMapper;
}

Looks to me like the to lines
	ObjectMapper objectMapper = new ObjectMapper();
	applyDefaultConfiguration(objectMapper);

should be replaced with something like
		ObjectMapper objectMapper = createObjectMapper();

Thanks in advance!

Yes StdObjectMapperFactory has a broken API, the historic reason is that a singleton instance could not be used together with the @DocumentReferences annotation. I think this might have changed with later versions of Jackson, I'll look in to it.
In the mean time I suggest that you create your own implementation of ObjectMapperFactory that work for you.

Just so you know, I've been bitten by that very issue over the last couple of days. Took me some time to find out what the actual issue was, since StdObjectMapperFactory ended up being the very last class I checked. Hopefully the way Ektorp is architectured providing my own implementation was simple enough.
I'd be curious to know if the reason stated by helun's comment is still an issue or if it could be fixed. Would creating a new ObjectMapper instance from the one provided to StdObjectMapperFactory by using ObjectMapper.copy() would be a good enough fix? It is not clear to me if such a change would have a negative impact of some sort...


Check for data write command before inserting hash sort optimization

This fixes #3730
Signed-off-by: Chong Gao<EMAIL_ADDRESS>

Does not handle AQE scenario, because of not have high confidence.
Logic is:
// find
// GpuDataWritingCommandExec(GpuHashJoin)
// GpuDataWritingCommandExec(GpuHashAggregateExec)
// GpuDataWritingCommandExec(GpuProject(GpuHashJoin))
// GpuDataWritingCommandExec(GpuProject(GpuHashAggregateExec))
// from top to bottom and insert sort to optimize the file size.

build

build

build

build

build

updated all the comments, please review.

build


[r-ver][r2u] add notes about rstudio-server and r-history

Close #23

@grantmcdermott Could you take a look at this?
Given how easy it is to add RStudio Server, I believe it is sufficient to provide examples in the documentation rather than having a standalone Template for RStudio Server.


Cherry picking latest changes from master to release/4.0.0

In this change

Cherry-picking these two changes which are released from master to release/4.0.0
#1662 , (released in 3.6.7)
#1654  [corresponding change in master #1655 released in 3.6.6)
Bumping up version for common and common4j

Do we need a new branch release/4.0.1? As the version number now seems to be 4.0.1

Do we need a new branch release/4.0.1? As the version number now seems to be 4.0.1

I can probably push another branch with that name or use tags, once this release completes.


Automatic activation of path-based environment does not work when Git Bash is the integrated terminal provider on Windows

When you have a conda environment that does not have a name (i.e. it is path-based), having python.terminal.activateEnvironment set to true will attempt to run activate and then conda activate <path_to_env>. The path is unquoted and contains a Windows-style path with back-slashes, which works fine when Command Prompt is your terminal provider. However when Git Bash is your terminal provider, the unquoted path will get obsfucated and the now malformed activation command will fail.
This appears to be the location of the issue: https://github.com/microsoft/vscode-python/blob/main/src/client/common/terminal/environmentActivationProviders/condaActivationProvider.ts#L90
toCommandArgumentForPythonExt checks for spaces and certain punctuation but it does not check for back-slashes.

Duplicate of #15799
@gandhis1 We currently don't support git bash.


Storing Blobs and startup time

Hi, first off, nice job on this project!
I work on a photo editing / graphic design webapp where we auto-save the user's project in IndexedDB. Most of what we're saving is binary image Blobs. I'm trying to get a sense for the trade-offs of using your library for our use case, and have two questions:

Do you have a sense for the performance of storing Blobs in IndexedDB vs using this library? I'm assuming there'd be the cost of converting the Blob to an ArrayBuffer so it can be shared with the worker, and converting the ArrayBuffer back to a Blob when reading it.

Startup time really matters for our app, as we need to read the user's auto-saved Blobs from IndexedDB and render them to canvas as quickly as possible. Am I right in thinking startup would be slower with sql.js b/c of the need to boot up the worker and also do the ArrayBuffer -> Blob conversion?

Really appreciate your feedback on this. Thanks!

Hello!

Do you have a sense for the performance of storing Blobs in IndexedDB vs using this library?

For that use case, using SQLite is probably not appropriate. Storing large files that don't need partial writes (whenever a change needs to be written out, you can just write the whole file) is going to be faster than storing in SQLite that writes it in chunks, because you can do just 1 large write instead of making SQLite write blocks, which probably would be a couple writes.
It would probably break even -- in my experience, a small variance of writes doesn't change performance if it's all in the same transaction. Opening a transaction is the slowest part, and doing 1 v 5 writes within it is the same perf.
SQLite makes more sense if you storing a lot of application data that is made up small pieces that need to be individually queried/filtered/updated.

Am I right in thinking startup would be slower with sql.js b/c of the need to boot up the worker and also do the ArrayBuffer -> Blob conversion?

Yes, it would definitely be slower. SQLite.js needs to be initialized, opening a file would spawn a worker, and then it would be ready. This is more appropriate for apps that can take that cost once on app startup, and then users use it for a long time. (Note that it's still pretty fast, but if startup time is crucial there is overhead here)


SAK-43965 Update easymock 4.2

@axxter99 you can also remove the override of  from the tool poms since it will get it from master.


Element id (e.g. creator_id, mapping_tool_version):
predicate_modifier

Value data type (e.g. URI, URL, text, xsd:boolean):
I'm not sure ...
xsd:string

Description
This is a modifier to predicates to express either negation (NOT) , inverse (INVERSE) or other relations (e.g. INDIRECT). This request is in response to our development in SSSOM-PY.
cc: @matentzn , @cmungall .

See #99

Fixed in #99 thanks both


"content-type" doesn't change to "application/json" in request

I have implemented an android application with graphql. The problem is when I configure ApolloClient, the request's header content-type
remains "application/json; charset=utf-8"  ,     even after I change it in the interceptor. I was wondering why that happens only for content-type  and I am able to change the accept and Accept-Encoding.
Here is how I configure the ApolloClient:
class ApolloApiImpl @Inject constructor(private val interceptor: AuthorizationInterceptor) :
    ApolloApi {
    override fun getApolloClient(): ApolloClient {

        val okHttpClient = OkHttpClient.Builder()
            .addInterceptor(interceptor)
            .build()

        return ApolloClient.builder()
            .serverUrl(BuildConfig.BASE_URL)
            .okHttpClient(okHttpClient)
            .build()
    }
}

and here is the Interceptor implementation:
class AuthorizationInterceptor @Inject constructor() : Interceptor {

    override fun intercept(chain: Interceptor.Chain): Response {
        val original = chain.request()
        val request = original.newBuilder()
            .header("accept", "*/*")
            .header("content-type", "application/json")
            .header("Accept-Encoding", "gzip, deflate, br")
            .method(original.method(), original.body())
            .build()

        return chain.proceed(request)
    }
}

The following is the screenshot of the android studio network inspection:

Finally, I got ApolloException that the response is not successful.

Hi 👋
"Content-Type" is special because it's part of HttpBody. You can override this by writing a new body that delegates to the original one:
    return chain.proceed(
        request.newBuilder().body(
            object : HttpBody {
              override val contentType: String
                get() = "application/json"
              override val contentLength: Long
                get() = request.body?.contentLength ?: 0

              override fun writeTo(bufferedSink: BufferedSink) {
                request.body?.writeTo(bufferedSink)
              }

            }
        ).build()
    )

We could change the precedence of headers and have the request headers overwrite the body headers if set but I'm not 100% the consequences of this so I'll wait a bit for more feedback until we do so.

Thank you very much @martinbonnin. Just wanted to share that I had to change your codes a little bit to be compatible with my app:
class AuthorizationInterceptor @Inject constructor() : Interceptor {

    override fun intercept(chain: Interceptor.Chain): Response {
        val original = chain.request()
        val request = original.newBuilder()
            .post(object: RequestBody() {
                override fun contentType(): MediaType? {
                   return MediaType.parse("application/json")
                }

                override fun writeTo(sink: BufferedSink) {
                    original.body()?.writeTo(sink)
                }

                override fun contentLength(): Long {
                    return original.body()?.contentLength() ?: 0
                }
            })
            .build()

        return chain.proceed(request)
    }
}

Thanks a lot for the update 🙏 .


[BUG] Search requests with size=0 & terminate_after sometimes return incorrectly hit count

Describe the bug
When both size=0 and terminate_after parameters are provided to a search request, the incorrect total hit count is sometimes returned. This was discovered as a part of the investigation for a flakey test, see https://github.com/opensearch-project/OpenSearch/issues/9946#issuecomment-1749266330
To Reproduce
Set size=0 in the search request in the below test.
./gradlew ':server:internalClusterTest' --tests "org.opensearch.search.simple.SimpleSearchIT" -Dtests.method="testSimpleTerminateAfterCount {p0={"search.concurrent_segment_search.enabled":"true"}}" -Dtests.seed=C37FD3C5A66D02BC -Dtests.security.manager=true -Dtests.jvm.argline="-XX:TieredStopAtLevel=1 -XX:ReservedCodeCacheSize=64m" -Dtests.locale=he-IL -Dtests.timezone=Asia/Qostanay -Druntime.java=17

Expected behavior
The above test should always pass

If terminate_after is specified, won't collection terminate after some amount of time? In that case, it won't collect all the hits, so the total hit count may be off?

@msfroh these tests are not flaky whenever size != 0, and specifically the tests assert that hit_count == terminate_after count. size=0 is a special case where the TopDocsCollector is not created since we won't need to return any top docs, however I'm not sure what specifically is causing this flakiness in that code path yet.

I have narrowed down the cause of this "issue" to a change introduced in this PR - #4043.  (cc @reta)
Specifically, this change:
https://github.com/opensearch-project/OpenSearch/blob/9b7a9d0026aa379537804fd24b95619abe88e1c0/server/src/main/java/org/opensearch/search/internal/ContextIndexSearcher.java#L306-L308
That PR brought in a Lucene feature (https://issues.apache.org/jira/browse/LUCENE-10620) that allows you to  take advantage of Weights  that can speed up Collectors' work during search.
Now, what is really interesting about this change is that when combined with these three (I think ALL three) search conditions - 1) size = 0, 2) terminate_after is set and 3) tracK_total_hits set to true, it hits the following code path where weight.count() returns the total count for a Lucene segment (it's an optimization).
https://github.com/apache/lucene/blob/bbf197fdc2822e9f1ba1767f83ae23037336ed27/lucene/core/src/java/org/apache/lucene/search/TotalHitCountCollector.java#L47-L52
public LeafCollector getLeafCollector(LeafReaderContext context) throws IOException {
    int leafCount = weight == null ? -1 : weight.count(context);
    if (leafCount != -1) {
      totalHits += leafCount;
      throw new CollectionTerminatedException();
    }

And, of course, that's exactly the setup for this test.  But it is not a bug.  I would say it's just incompatible with what you might expect when you set terminate_after, but I think it makes use of the intended optimization without actually violating the "contract" of the terminate_after flag (since it does terminate early and terminatedEarly is set to true in the response as well).
As to the non-deterministic manifestation of this issue, there are two things that pertain to this feature that seem to contribute to non-determinism.  One is that the test uses indexRandom to randomly distribute documents and this (by design) leads to a non-deterministic layout of Lucene segments each time.  The other is that the Weight objects are stored in an LRUCache.  Also, the test makes a range query and this also seems to uniquely contribute to how the Weights are used depending on the layout and sequence of documents IDs within a segment.

It has nothing to do with concurrent search and I don't know if concurrent search makes it more likely.  It has more to do with what's in a segment and how Weight#count is being used.

It has nothing to do with concurrent search

Right, corrected myself in https://github.com/opensearch-project/OpenSearch/issues/10435#issuecomment-1775081613, sadly we didn't have the tests for this specific case before so the issue stayed unnoticed

@austintlee Thanks for looking into this!

But it is not a bug. I would say it's just incompatible with what you might expect when you set terminate_after, but I think it makes use of the intended optimization without actually violating the "contract" of the terminate_after flag (since it does terminate early and terminatedEarly is set to true in the response as well).

I think there's some more discussion needed on what the correct "contract" for terminate_after actually looks like. From the docs it's defined as "The maximum number of documents OpenSearch should process before terminating the request" which to me sounds like if I pass a specific  terminate_after value in a search request, I would expect the total hit count have a upper bound of the terminate_after value if the terminated_early is true, which is not necessarily true in the edge case you've identified here.
This is something that we've struggled with for concurrent search as well -- it's not straightforward to have concurrent search early terminate at the exact terminate_after count either. See https://github.com/opensearch-project/OpenSearch/issues/8371
Curious to hear your thoughts on this too @sohami

From the docs it's defined as "The maximum number of documents OpenSearch should process before terminating the request" which to me sounds like if I pass a specific terminate_after value in a search request, I would expect the total hit count have a upper bound of the terminate_after value if the terminated_early is true, which is not necessarily true in the edge case you've identified here.

But it's not processing that many docs -- it's using the count returned from the Weight. If the Weight returned a count, it did so in O(1) time. See https://lucene.apache.org/core/9_0_0/core/org/apache/lucene/search/Weight.html#count(org.apache.lucene.index.LeafReaderContext):

The default implementation returns -1 for every query. This indicates that the count could not be computed in O(1) time.

So, if the Weight returned a value other than -1, it did so in O(1) time, without processing documents. The contract is still upheld.

Sorry for delayed response.
@msfroh Even though the weight.count optimization is O(1) operation but it is counting more hits than what user expected and not really holding the terminate_after contract. I think hit_count should reflect the number of processed documents as well. Is there any other case where hit_count is returned more than processed documents ? This can be even more confusing when aggregators are in picture in the query.
Lets assume there is a single leaf with 21 matches. So the collectors for this test query is of type: EarlyTerminatingCollector(maxHitCount= say 2) ---> TotalHitCountCollector(). If the optimization for weight.count() kicks in, then TotalHitCountCollector will record that value while creating leafCollector itself and will not participate in collection anymore so leaving EarlyTerminatingCollector to process the collection on this leaf docs. EarlyTerminatingCollector will terminate the collection after 3rd match but total hits returned will be 21 in this case.
Now assume there is an Aggregator in the mix like histo aggs what will happen is collector tree will be of form: EarlyTerminatingCollector(maxHitCount= say 2) ---> TotalHitCountCollector() ---> BucketCollector(histo). Again the TotalHitCountCollector will say hit count is 21 and will get removed from leaf collectors chain leaving behind EarlyTerminatingCollector ---> BucketCollector. Then after collecting 2 docs the query will be terminated. To the user, it will see only 2 docs collected in aggs output but hitcount will be 21.
I guess the question is in case of terminate_after + track_total_hits=true scenario what is the point of returning this extra hit count above terminate_after value. To user it can be confusing because somehow OS is able to find total docs matching the query which is greater than terminate_after but aggs or any collector in the chain has only collected at max terminated_after documents. I tried with sample tests and here is the response:
{"took":148625,"timed_out":false,"terminated_early":true,"_shards":{"total":1,"successful":1,"skipped":0,"failed":0},"hits":{"total":{"value":21,"relation":"eq"},"max_score":null,"hits":[]},"aggregations":{"histo":{"buckets":[{"key":15.0,"doc_count":1},{"key":16.0,"doc_count":0},{"key":17.0,"doc_count":0},{"key":18.0,"doc_count":0},{"key":19.0,"doc_count":0},{"key":20.0,"doc_count":0},{"key":21.0,"doc_count":1}]}}}

@sohami Did you run that query with size = 0?  Also, keep in mind that the specific instance of this problem doesn't always occur so I am not sure what conclusion we can draw from the response you posted above...
I think we should document this behavior as best we can.  I don't think anyone is proposing we make further code changes to change this behavior.

IMO, we should just clearly document that the purpose of terminate_after is to avoid iterating through too many documents -- it's essentially a way of saying "I'm willing to accept approximately-correct results in order to limit the cost of my query", not "I would like incorrect results and will be offended if you give me the correct answer efficiently".

@sohami Did you run that query with size = 0? Also, keep in mind that the specific instance of this problem doesn't always occur so I am not sure what conclusion we can draw from the response you posted above...

@austintlee Yes the query was with size=0. I just updated same query in test to include the aggregation. It will not occur if the optimization to fetch the hit count via weight.count doesn't kick in which depends upon the weights created for the query.

I think we should document this behavior as best we can. I don't think anyone is proposing we make further code changes to change this behavior.

Thats what I am discussing here if we need to handle this case separately instead of just keeping the current behavior with proper documentation. Seems like current alignment is to document it properly

IMO, we should just clearly document that the purpose of terminate_after is to avoid iterating through too many documents

I guess then in documentation we should be very clear that hits.count in response is not controlled by terminate_after.  Later controls collecting/processing number of the matched document whereas former is count of matching docs and both the information can be fetched independently for each shard ?

Later controls collecting/processing number of the matched document whereas former is count of matching docs and both the information can be fetched independently for each shard ?

"Independently" would be mischaracterization as they are still correlated.
How about:
The latter (spelling correction) controls collecting/processing number of the matched document whereas former is count of matching docs and the actual values of hits.count and terminate_after can differ when Weight.count, a sub-linear time counting optimization, contributes to a higher count than is needed to satisfy the counting requirement set by terminate_after.  Put another way, OpenSearch can yield higher output (hits.count) while maintaining the same input/cost (terminate_after) thanks to the aforementioned optimization.

Apologies for the super delayed response here. I'm also in agreement that the best path forward is to document this difference. In addition to the reasons previously discussed, this "issue" has been present since OpenSearch 2.2.0 and there doesn't seem to have been any complaints about this so adding an explanation to the docs seems sufficient.
I'm happy to close out this issue with PR https://github.com/opensearch-project/OpenSearch/pull/10836 from @austintlee -- I will create a docs issue to follow up on the documentation updates.

Docs update issue:

https://github.com/opensearch-project/documentation-website/issues/5553


The arrows icon is very difficult to see

FreeCAD 0.20

That has been taken care of...
I will try to find it


The problem with using REM

Set:
body { font-size: 14px; }
Writing:

Text

Meant to be: 28px
really: 20px
In scaffolding.less incorrectly set:
 html { font-size: 10px; }
The root element when using REM should BODY. Must be removed font-size in HTML-tag.

Why says its "incorrect"? Who says its "meant to be"?
First of all BS3 never used/supported rems. Second of all I think this 10px on the html was actually set on purpose so 1rem is 10px because lots of designers actually do think in pixels. So when I would something to 4rems with vanilla BS3 I would know its like 40px and thats totally fine with me?
I have not followed up rems for some time now, not sure whats wrong with this technique but rems are coming in v4 and I trust mdo and the guys to do it in a good way.

REM - is relative units. Relative to the base font size: @font-size-base
4rem != 40px
4rem = @font-size-base * 4 = 56px

Can't you just use @font-size-base: 1.4rem (14px) for now?
Changing the rem base will probably be something in v4 when rem's are officially supported.

rems are based on the root element, and that's the  on your page, not the . There's no rem support in v3 right now, so we can't help you much beyond that.


Hystrix Dashboard Eureka integration improvements

Hello!
Did some improvements on Hystrix Dashboard Eureka Integration, hope it helps!
The following was improved:

Added remove button for added streams
Refactored the javascript code on index
Updating url on changing stream type
Updated the url scheme to consider the port on eureka, instead of using only 8080, useful when using ephemeral ports, for example on local dev deployment.
Update title for application name, after you select the application, the title will be updated with it's name
Updated the list of apps list all the applications instances
Updated the list to group the instances by application name
Added a group called "applications" that will have the first instance of each application, maintaining a similiar behaviour to the the legacy implementation, although the legacy behaviour used the last instance ip and this new one use the first one, i guess this will be more to use applications like turbine, that will have only one instance usually.

I guess these changes improves the overall UX, hope it helps!
New app listing:

Remove stream:

These changes look good to me.  Anybody else that uses hystrix-dashboard willing to try this out and give @kennedyoliveira feedback?
/cc mukteshkrmishra

@mattrjacobs @kennedyoliveira : Changes looks good to me ..just tested it.

I'd like to take a look

Thanks @mukteshkrmishra / @spencergibb for volunteering!

@spencergibb any feedback?

@mattrjacobs can you merge it?

Sure thing.  Missed @spencergibb's thumbs-up - those don't trigger my email alerts :(
Thanks @kennedyoliveira for the contribution, and thanks @spencergibb and @mukteshkrmishra for the review!

@mattrjacobs Your welcome! I missed the thumbs-up too haha.

@kennedyoliveira 👍  Here you go :)


@orta: Updates changelog to yaml syntax

yaml syntax is best syntax.
Fixes #410.

Remember, our CI is busted, so.

Pushed the new fastlane changes, too.

ace


feat: Real-Time RAG with Gemini 2.0 Multimodal Live API

@dmoonat Please resolve spelling issues here: https://github.com/GoogleCloudPlatform/generative-ai/actions/runs/12280528883?pr=1511


[Feature]: Add "recursivePluck" (tuple as index type)

Feature request
Ive recently been looking for ages to find a type-save implementation of recursively plucking an object via a tuple (explaination below). As I was unable to find any solution online, I resorted to posting a stackoverflow question which was answered brilliantly by @maciejsikora very recently.
Would you be open to adopting this type here? Before diving in to the depths of the internet to find a solution for my problem, I was aware of typescript-tuple (searching typescript-tuple was actually the first thing I did when researching). Hence my request to adopt it here. I understand if you consider this off topic here, since it is not purely of tuple domain. If so, Id gald if you could point me in a direction (maybe another library) where this feature would be better suited.
type Test1 = RecursivePluck<{a: {b: {c: {e: string}}, d: string}}, ['a','d']> // typeof string
type Test2 = RecursivePluck<{a: {b: {c: string}, d: string}},['a', 'b']> // typeof {c: string}

Here the implemantation by @maciejsikora.

type Test1 = RecursivePluck<{a: {b: {c: {e: string}}, d: string}}, ['a','d']> // typeof string

I don't understand the logic here. Did you mistype something?

type Test2 = RecursivePluck<{a: {b: {c: string}, d: string}},['a', 'b']> // typeof {c: string}

Why don't you just use index access twice (type Test2 = ObjectType['a']['b'])?

Anyway, this is indeed not of tuple domain. There is another package called ts-toolbelt, I think this utility would be more acceptable there.


Container not centered on outlook.com

I can't find how to center the container on outlook.com.
This is how the email should be:

And this is how it appears on outlook.com:

As you can see, the container is aligned at left instead of centered. I've also tried to add align="center" in the body, but without success.
In the other clients I've tried it works well.
Full code:
<mjml>
  <mj-body>
    <mj-container width="700" background-color="#eceff4" align="center">
      <mj-section padding-top="0" padding-bottom="24">
      </mj-section>
      <mj-section background-color="#d8e2e7" padding="1">
        <mj-column background-color="white" padding="30">
          <mj-image width="200" src="https://placehold.it/400x200" padding="10px 0 20px 0" />
        </mj-column>
      </mj-section>
      <mj-section background-color="#d8e2e7" padding="1">
        <mj-column background-color="white" padding="30">
          <mj-text font-size="15" padding="30px 30px 16px" font-family="Proxima Nova, Arial, Arial, Helvetica, sans-serif">
            Dear {{ username }},
          </mj-text>
          <mj-text font-size="15" padding="0 30px 16px" font-family="Proxima Nova, Arial, Arial, Helvetica, sans-serif">
            Welcome to {{ siteName }}!
          </mj-text>
          <mj-text font-size="15" padding="0 30px 16px" font-family="Proxima Nova, Arial, Arial, Helvetica, sans-serif">
            To complete the registration, please confirm your email address by clicking the link below.
          </mj-text>
          <mj-text font-size="15" padding="0 30px 6px" font-family="Proxima Nova, Arial, Arial, Helvetica, sans-serif">
            We may need to send you critical information about our service and it is important that we have an accurate email address.
          </mj-text>
          <mj-button background-color="#00a8ff" color="white" font-size="15" border="none" border-radius="0" align="left" padding="8px 16px 10px" paddint-top="0" padding-left="30" padding-right="30" padding-bottom="16" font-weight="400" font-family="Proxima Nova, Arial, Arial, Helvetica, sans-serif"
            href="#">
            Confirm E-Mail Adress
          </mj-button>
          <mj-text font-size="15" padding="0 30px 30px 30px" font-family="Proxima Nova, Arial, Arial, Helvetica, sans-serif">
            — {{ siteName }} Team
          </mj-text>
        </mj-column>
      </mj-section>
      <mj-section padding="20px 0 0">
        <mj-column>
          <mj-text padding="0" font-size="15" color="#6b7a85" align="center" font-family="Proxima Nova, Arial, Arial, Helvetica, sans-serif">

              Dashboard
             |

              Email settings

          </mj-text>
        </mj-column>
      </mj-section>
      <mj-section padding-top="0" padding-bottom="24">
      </mj-section>
    </mj-container>
  </mj-body>
</mjml>

Hi,
For align text, you need to use align="center" to <mj-text>.
Example:
<mj-text font-size="15" padding="30px 30px 16px" font-family="Proxima Nova, Arial, Arial, Helvetica, sans-serif" align="center">Dear {{ username }},</mj-text>

hey @fmonts, as @Zul3s said, you need to use align="center" on the mj-textand mj-button tags to center the content. I also suggest using mj-head and mj-attribute to specify it only once instead of repeating it on each tag:
  <mj-head>
    <mj-attributes>
      <mj-text align="center" />
    </mj-attributes>
  </mj-head>

I'll close the issue as it seems to solve your problem, feel free to reopen if it's not the case.

I don't want to align the content but the whole container. I hope you will understand with this image:

@ngarnier I don't know how/I can't reopen it

Is this version of outlook still available ? I think OWA has now replaced it for everyone ?

Any news on that ?

I tried 3 ms mail accounts, 2 of them still have that version (one @outlook.com and one @live.it).
I use my outlook.com account as my primary personal email, with many emails received everyday, and I log in to the webmail almost everyday, so it's not an abandoned one...

Well I have no access to this version of outlook.com, and only new outlook.com is available on Litmus so if anyone have any knowledge to fix this let me know

Some examples of emails correctely centered:

PayPal receipt: fixed-width table with align="center"

Linkedin notifications: they use a table with fixed width child of a td with align="center"

        ...

mjml mails, instead, have a DIV with fixed with and not center-aligned. it works if I replace (in dev tools):

with

Found out Outlook.com doesn't support margin, so that's why it is not centered...

Well http://www.winbeta.org/news/users-new-outlook-com-end-summer ... this outlook.com version look like to completely disappear soon

Ok, good new then, I close the issue.

Outlook does support margins. For the ones that use word as the rendering engine, it should work with Margin. Don't ask me why someone decided to create their own standard but they did.
More info: https://www.emailonacid.com/blog/article/email-development/outlook.com-does-support-margins


Correcting solution to the 'round away from 0' exercise

Exercise: How to round away from zero a float array?
Problem:
Z = np.array([1.4])
np.trunc(Z + np.copysign(0.5, Z)) # prints 1. instead of 2.
Z = np.array([1.0])
np.round(Z + np.copysign(0.5, Z)) # prints 2. instead of 1.
Solution:
Z = np.array([1.0, 1.4])
np.copysign(np.ceil(np.abs(Z)), Z) # prints correct [1., 2.]

Thanks

I've cancelled the PR (see issue #19)


[BUG]: 50 mb exe in repo?

No response
Code of conduct

[X] I agree to follow this project's code of conduct

Issue policy

[X] I agree to follow this project's issue policy

This is .EXE file for Kubernetes inherited from project-template: Patternugit and IS NOT included in any form of code or work of the plugin.
More about it for information at Kubernetes page (since project major maintenance is provided on/for Windows 10/11):
https://kubernetes.io/docs/tasks/tools/install-kubectl-windows/


rRNA.counts file is incorrect

Instead of rRNA counts, it looks like the GATK CountReads log is being written to the rRNA.counts file...
mdeboth@baldur: head /final/sample/qualimap/rRNA.counts
INFO  20:34:02,911 HelpFormatter - ---------------------------------------------------------------------------------
INFO  20:34:02,913 HelpFormatter - The Genome Analysis Toolkit (GATK) v3.2-18-g478145d, Compiled 2014/09/19 01:24:53
INFO  20:34:02,913 HelpFormatter - Copyright (c) 2010 The Broad Institute
INFO  20:34:02,914 HelpFormatter - For support and documentation go to http://www.broadinstitute.org/gatk
INFO  20:34:02,917 HelpFormatter - Program Args: -U LENIENT_VCF_PROCESSING --read_filter BadCigar --read_filter NotPrimaryAlignment -T CountReads -R /packages/bcbio/v0.8.8/bcbio/genomes/Hsapiens/GRCh37/seq/GRCh37.fa -I /scratch/mdeboth/RNA_CSF/CSF_RNA/work/align/CSF-RNA/1_2015-07-31_CSF_RNA_star/CSF-RNA.bam -log /scratch/mdeboth/RNA_CSF/CSF_RNA/work/qc/CSF-RNA/qualimap/tx/tmpI6yAYS/rRNA.counts -L /scratch/mdeboth/RNA_CSF/CSF_RNA/work/qc/CSF-RNA/qualimap/rRNA.list --filter_reads_with_N_cigar -allowPotentiallyMisencodedQuals
INFO  20:34:02,921 HelpFormatter - Executing as mdeboth@pnap-pe6-s23 on Linux 2.6.32-220.el6.x86_64 amd64; Java HotSpot(TM) 64-Bit Server VM 1.7.0_03-b04.
INFO  20:34:02,922 HelpFormatter - Date/Time: 2015/07/31 20:34:02
INFO  20:34:02,922 HelpFormatter - ---------------------------------------------------------------------------------
INFO  20:34:02,923 HelpFormatter - ---------------------------------------------------------------------------------
INFO  20:34:03,883 GenomeAnalysisEngine - Strictness is SILENT

Hi @mdeboth,
thanks for the issues. Is giving you some error?
We use GATK to count the total counts, and in this file should be a line giving the total counts in rRNA genes that we parse and put in the summary file.
Please, let me know if you are geting some error or the value in the summary file is wrong.
thanks!

Thanks @lpantano! Looks like I do have the rRNA metrics in the summary file... my confusion.


Mobile Version

what about mobile version ? it's can be good idea :)

I don't believe this issue belongs here. This is an electron based application which can not run on mobile.

For a mobile version, the best way is building an streaming website, I guess.

@zunjae The architecture of this application is not very tied to electron so this might be possible, the only work needed here is just how to package it and try the responsiveness of the website

@JuanjoSalvador not really an anime website is just another solution to watch animes, both have they associated pros and cons

I don't believe this issue belongs here. This is an electron based application which can not run on mobile.

I would have preferred the question to be on Discord but it's fine here since not everyone is on Discord and people keep asking me 😄 . Still, as @DeltaEvo mentionned, electron, here in KawAnime is only a wrapper so it is definitely possible to port the actual app on mobile.

For a mobile version, the best way is building an streaming website, I guess.

There are other ways to make KawAnime on mobile, there are electron-like frameworks that aims towards this purpose (native-script, vuex, ...).
As for the mobile version, I talked a lot about it in the Discord server so here's a sum up. There are important features I want to develop before working on a mobile version (streaming, in-app nyaa browser, kitsu implementation etc...).
It is planned and I'm already keeping an eye on the frameworks / librairies that would allow me to build a mobile app. Most likely, when you'll see KawAnime being at v1.0.0, this will mean that I'll then be working a lot on a mobile app.
I too, would really love to have KawAnime on my phone 😢

I'm closing this for now as it's not really an issue, please do no hesitate to redirect people to this issue if needed. Also, feel free to comment here if you want to.


Raspberry pi

How do I install this on Raspberry PI OS / Debian.

Currently there isn't a .deb package for csvlens yet, but you can download the prebuilt binary for linux here and use it directly (see README for more info).


[GitHub] Repository name not updated after being renamed on GitHub.com

Extension
https://www.raycast.com/raycast/github
Description
When a repository is renamed on GitHub, the updated name is not reflected in Raycast.
Steps To Reproduce

Browse a repository via RayCast -> Search Repositories
Rename repository on GitHub
Name is not updated in Visited Repositories in Search Repositories

Current Behaviour
No response
Expected Behaviour
No response

@nesl247, the extension uses the API provided by GitHub. No information is persisted locally and it is requested from GitHub servers, possibly GitHub is not updating it so quick as you would like to have, perhaps you should wait some time to have it reflected.
Sorry for the inconvenience.

It's been over a day now. I can't imagine it's an issue with GitHub.

I always reinstall it to get the latest repo list. All extension settings including aliases are preserved, you only need to re-enter your token.

Thanks for flagging this issue. Would you like to work on it? I can provide some guidance on how to contribute to this extension so that you can open a pull request. You can contact me here or in the Slack community if you need further help.
Note that opening up a PR and having it merged will earn you some credits as we want to reward contributions. You’ll then be able to exchange them in a swag store that we’ll launch soon!

I’ll try to work on it a bit during my Christmas break. I’ll reach out if I need any assistance. Thanks!

It's still a bug. I just have not had time to work on it.