Insert overloads

Proposed changes
Overloaded insert modifier for fill and ranged based insertion of elements.
Types of changes
What types of changes does your code introduce?
Put an x in the boxes that apply

[ ] Bugfix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)

Checklist
Put an x in the boxes that apply. You can also fill these out after creating the PR. If you're unsure about any of them, don't hesitate to ask. We're here to help! This is simply a reminder of what we are going to look for before merging your code.

[ ] I have read the CONTRIBUTING doc
[ ] Unit tests pass locally with my changes
[ ] I have added tests that prove my fix is effective or that my feature works
[ ] I have added necessary documentation (if appropriate)

Codecov Report

Merging #42 into master will not change coverage.
The diff coverage is 100%.

@@          Coverage Diff          @@
##           master    #42   +/-   ##
=====================================
  Coverage     100%   100%
=====================================
  Files           5      5
  Lines         408    452   +44
=====================================
+ Hits          408    452   +44

Impacted Files
Coverage Δ

src/linkedList.cpp
100% <100%> (ø)
:arrow_up:

tests/linkedListTest.cpp
100% <100%> (ø)
:arrow_up:

Continue to review full report at Codecov.

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


Added VSCodium version 1.51.1.

[x] Have you signed the Contributor License Agreement?
[x] Have you checked that there aren't other open pull requests for the same manifest update/change?

Fails SmartScreen, so it'll have to be whitelisted.
Microsoft Reviewers: Open in CodeFlow

Duplicate of #5024

Given the dup has been accepted, can we close this?

Yes, sorry I had not seen that.


Kernel driver blocked

When I try to use kprocesshacker.sys (compiled from source) with a self-compiled version of PH, I get this:

This is after I removed the signature verification check (which was previously failing with "the cryptographic signature is invalid"). I've tried signing the driver myself with both SHA1 & SHA256 - is there some other special action I need to take to get this to load?

Is know "problem" - just use signed driver in to some source.:)

You have 3 options.

Turn off driver ditigal signature verification. (Dangerous!)
Turn on test signing mode and sign your driver with test signing certificate.
Buy EV code signing certificate and sign your driver. (Very expensive)

See:
https://github.com/processhacker/processhacker/blob/master/KProcessHacker/verify.c#L31
https://github.com/processhacker/processhacker/tree/master/tools/CustomSignTool

Got it. I can't use the premade signed driver anymore as it is immediately removed by hash-based AV
I will look into altering the key verification code to match my custom sig (which looks like what I'd have to do in verify.c to match the new public key? Sorry I'm not too familiar with the inner workings of the driver)
I'll poke around at the CustomSignTool as well

If installed AVAST then delete it and install professional AV like McAfee Antivirus or Comodo - Avast and avast-like "super AV" always deleted KPH driver (try read VERSION_INFO: OriginalFilename : kprocesshacker.sys (?)) ignore any exclude settings - is just they have such a business.
Familiar ran - looked at his laptop. Collected and renamed KprocessHacker.sys to drv.sys, changed part of the value in VERSION_INFO, signed it with a signature, added the catalog PH to Avast exceptions beforehand, but AVAST found and erased driver by displaying a message about "disguising the KProcessHacker.sys malware".:)
P.S.
 A cat in this case licks its virtues, and these “enemies catch”.

Hmm. I suppose I could try something similar (futzing around with the kprocesshacker.sys binary). I believe I am in fact being blocked by the driver enforcement (even if my code signing cert is in the Trusted Root store).
This is where I'm at:
[SC] StartService FAILED

Windows cannot verify the digital signature for this file. A recent hardware or software change might have installed a file that is signed incorrectly or damaged, or that might be malicious software from an unknown source

Comes from here:
https://github.com/processhacker/processhacker/blob/2bb718f36a702fde6cb346e9179696bb8c758d1f/phlib/kph.c#L199
                if (StartService(serviceHandle, 0, NULL)) {
I'll keep working on it - is there really no way around disabling all driver sig enforcement for the whole OS?? Seems like I should be able to selectively allow certain unsigned drivers by installing the right certs

You have 3 options:

Buy code signing certificate
Enable test signing mode
Disable digital signature enforcement

Self signed certificate is not trusted by Windows kernel. Because it is not cross certificated by Microsoft Code Verification Root.

Understood - I suppose that messing with the kprocesshacker.sys file itself is the only possible recourse, or interfering with the kernel signature verification process itself (I suppose I could inject a valid sig and a valid service into SCM and somehow redirect back to kph) - but both of these seem pretty difficult, the latter of which would likely be new art.
I'll work instead on finding an up-&-over solution with the AV we currently have deployed

locked by the driver enforcement (even if my code signing cert is in the Trusted Root store).

@Coruscate5
Installing the certificate into the Trusted Root store makes no difference without first enabling debug and test signing modes.
bcdedit.exe -set DEBUG ON
bcdedit.exe -set TESTSIGNING ON

You have 3 options:
Buy code signing certificate
Enable test signing mode
Disable digital signature enforcement

@mrsshr
This is not quite accurate. The Windows kernel does not check if drivers have been signed with revoked or expired certificates and so anyone can also use leaked/stolen, revoked or expired certificates to sign kernel drivers and they load perfectly fine on every version of Windows including those with HVCI (hypervisor code integrity).

Given that I don't have any revoked Comodo root private keys readily available, I opted for the up-and-over path of working with our AV folks and getting the signed driver to pass inspection
@dmex
Do you know where the kernel is hiding its trusted driver cert store? As an admin I'm a bit surprised that my account wouldn't have access to modify that store somehow. I'm assuming it's some pre-baked list of CAs, but given that the OS is not hard wired into the mobo, I should be able to inject something on that disk location..

Do you know where the kernel is hiding its trusted driver cert store?

It's hard-coded into the kernel and any changes will trigger patch-guard. Even if you disable PG you still can't make changes with HVCI on Win10.

I don't have any revoked Comodo root private keys

There are dozens of signing certificates on the internet and Github (I've found about 200 leaked/revoked signing certificates in the last year). Some are expired or have been revoked but those checks by the Windows kernel can be bypassed by simply changing how you call signtool.exe when signing the driver and nothing else.
For example the Windows-Kernel-Explorer project on Github uses the revoked certificates from the HackingTeam leak which can be downloaded here: https://github.com/hackedteam/GeoTrust
This certificate was revoked but you can still use it for driver signing and drivers will load perfectly fine on every version of Windows (including when secure-boot and HVCI are enabled):

Awesome presumably working certs, many thanks 👍

@dmex Thank you for nice information :D
Tested and working

If installed AVAST then delete it and install professional AV like McAfee Antivirus or Comodo - Avast and avast-like "super AV" always deleted KPH driver (try read VERSION_INFO: OriginalFilename : kprocesshacker.sys (?)) ignore any exclude settings - is just they have such a business.
Familiar ran - looked at his laptop. Collected and renamed KprocessHacker.sys to drv.sys, changed part of the value in VERSION_INFO, signed it with a signature, added the catalog PH to Avast exceptions beforehand, but AVAST found and erased driver by displaying a message about "disguising the KProcessHacker.sys malware".:)
P.S.
 A cat in this case licks its virtues, and these “enemies catch”.

LOL, You're right. That's why I am getting "Blocked by Avast self-defense: kprocesshacker.sys" every time when I give Administrator privilege to Process Hacker. And also I won't uninstall Avast because my laptop need strong protection against powerful malware or virus out there.

@dmex Thank you for nice information :D
Tested and working

Could you describe the steps you took to do this? I would like to test this out on my local machine, after manually compiling the driver.
As in:

What did you use to sign the cert?
What BCD changes were necessary to get loading? (if any)
Other quirky things that were necessary to have operate and load into the kernel?

I am using "HT Srl" certificate. You can get this leaked certificate from here:

For example the Windows-Kernel-Explorer project on Github uses the revoked certificates from the HackingTeam leak which can be downloaded here: https://github.com/hackedteam/GeoTrust

Prepare offline Windows VM
Copy signtool, certificate, cross certificate to VM
Sign driver file with signtool

Ref:
https://docs.microsoft.com/ko-kr/windows-hardware/drivers/install/cross-certificates-for-kernel-mode-code-signing
https://docs.microsoft.com/ko-kr/windows-hardware/drivers/install/release-signing-a-driver-through-an-embedded-signature

#388

locked by the driver enforcement (even if my code signing cert is in the Trusted Root store).

@Coruscate5
Installing the certificate into the Trusted Root store makes no difference without first enabling debug and test signing modes.
bcdedit.exe -set DEBUG ON
bcdedit.exe -set TESTSIGNING ON

You have 3 options:
Buy code signing certificate
Enable test signing mode
Disable digital signature enforcement

@mrsshr
This is not quite accurate. The Windows kernel does not check if drivers have been signed with revoked or expired certificates and so you can also use leaked/stolen, revoked or expired certificates to sign kernel drivers for every version of Windows.

Hey man, do you happen to know any leaked cert that doesnt get flagged by AVs? i want to sign my driver by this HT srl causes many AVs to detect it as malware, any certificate you know that has the lowest detection ? also where can i find this list of leaked certs that you said ? thanks

@LusKrew can you post a guide or a download for this HT Srl cert? can't find a download for it anywhere

@Aholicknight don't bother, with a recent windows 10 update 20h1 or was ist 20h2 this cert is blacklisted in the kernel and hence sueless

@DavidXanatos yeah, I tried to get that SbieDrv signed with HT Srl to make it run on my computer without testmode but that failed horrendously, so I just signed it with a test signature and enabled test mode. Oh well

where is the fix?


brew install deno needs Xcode, that's too big

deno: A full installation of Xcode.app 10.0 is required to compile
this software. Installing just the Command Line Tools is not sufficient.

maybe we can offer a prebuilt version.

The homebrew version of deno is prebuilt and doesn't require xcode. We also publish binaries here.

@ry https://github.com/Homebrew/homebrew-core/blob/master/Formula/deno.rb
It's not. I don't know should I issue here or in homebrew.

@xialvjun Oh then it's an error in the brew formula (which is maintained externally).
Summoning @chrmoritz : have you experienced this situation?

@xialvjun You are using with macOS Sierra (10.12) an too old and unsupported version of macOS, for which homebrew doesn't provide any official bottles anymore. You could either try to use the binary provided by deno for macOS or try to forcefully install the High Sierra bottle in homebrew, which might or might not work for you.
If not, than you have no other option than trying to build it from source, which unfortunately requires full XCode (because of V8).
Note that you will likely have to export FORCE_MAC_SDK_MIN="10.12" too, because V8 doesn't official support Sierra (it's SDK) anymore either).

Got it. I'll upgrade macos version to latest mojave.

@xialvjun Just out of curiosity: are you still running Mojave (and has it been good)? Got the same problem today when trying to isntall deno from Homebrew– call me old-skool but I've been staying with El Capitan ever since I bought my last non-TouchBar MBP in late 2015 😅

@dwiyatci  Now I'm running BigSur.
brew gives me a prebuilt version.


Custom link tool generated code does not work with multiple tags, only single tags

Preflight Checklist

[x] I agree to follow the Code of Conduct that this project adheres to.
[x] I have searched the issue tracker for a feature request that matches the one I want to file, without success.

Describe the bug
Custom Link tool does not work when selecting multiple tags. However, it works correctly if multiple layer ids are used.
To Reproduce
Steps to reproduce the behavior:

Create two layers
GIve them tags L1 and L2
Use "Create Custom Link" tool
Generate "Hide" Action with tags "L1 L2"
Paste generated action in a button --> Edit Link
data:action/json,{"actions":[{"hide":{"tags":["L1","L2"]}}]}
Click the button action
BUG: It does not hide any layers
Replace the action with
data:action/json,{"actions":[{"hide":{"tags":["L1"]}}]}
or
data:action/json,{"actions":[{"hide":{"tags":["L2"]}}]}
and it will hide single layer

Expected behavior
When multiple tags are given in the custom links, all of them should be hidden
draw.io version (In the Help->About menu of the draw.io editor):

draw.io desktop version [e.g. 13.0.1]

Desktop (please complete the following information):

OS: [macOS 10.15.4]
Browser [Chrome]
Version [Version 81.0.4044.122 (Official Build) (64-bit)]

Sorry if this necros.
In-case anyone else comes across this issue - it's By Design - OP's link will only toggle elements with BOTH L1 and L2 tags...
I can't find the official FAQ on-the-spot but here is a word-for-word copy of it:
https://desk.draw.io/support/solutions/articles/16000080137

If multiple tags are used, then the cells that have all tags are selected (AND).
To toggle cells with either tag1 or tag2, use multiple toggle actions instead.

cheers 🍻


[MRG] ENH: alternative layout of extra points in interpolation

Implements the extra points layout for topo interpolation discussed in #5315
It may eliminate the issues raised in #5315 but it might be suboptimal in some standard cases. For example this is a frontal theta topography before this PR:

and this is after:

I must say I prefer the "before" topo in this case (the "after" looks like a laughing cyclops in a party hat). Probably the extra points are too close to channels. I'll check that later. Also - masking using convex hull (but slightly less extended than here) might make it better.
TODO:

[ ] resolve what to do when outlines='skirt'
[ ] add whats new
[x] add tests
[x] special case for colinear points when extrapolate='local'
[x] test extra points on the head circle
[x] use median inter-channel distance
[x] take convex hull from triangulation to use Delaunay only once

Personally I don't mind the second one.
We have already discussed having a new param border=0. (or fill_value=0.) to say what the values should be for these extended edge points. We could add an option (default for backward compat, probably) as border='extrapolate', meaning that these new points get assigend the average value of its neighbors in the Delaunay triangulation of the expanded set of vertices. This would probably make the second one look more like the first.

I like boarder=0. and boarder='extrapolate'. But I am still wondering if the added points are'nt too close to the channels. If they were further away the transition would be smoother. Here you can see the scatter outlining their position (you may also notice that the edges of the hull are not divided into equal parts, I can change that in the implementation):

Also - I am currently calculating the distance as the mean of the 10% lowest distances, which may be too convoluted.

I am still wondering if the added points are'nt too close to the channels.

It makes sense to me to have the edge/"stop interpolating" point be beyond your "average" electrode spacing. It's roughly equivalent to thinking of your data at each electrode representing a value at the center of pixel within grid.
In addition to be a simple way of framing things, it has the advantage of not letting you think that you have data outside that range, which becomes especially important after picking channels. Pick a larger spacing, and your difference between the picked and un-picked representations could very well become worse.
Speaking of which, somewhere we set a mask for the points. Currently it's the head circle. Eventually, we probably want it to be this ConvexHull polygon. This will make the PR much more annoying :) And it will also interact with outlines='skirt' and such... part of the reason it's difficult to make these sorts of changes is we have many of these going on. But I'd first target the standard (non-skirt) full coverage and, say, one-picked-hemisphere data to get them to look reasonable. Then deal with additional cases.

If they were further away the transition would be smoother.

I suspect that this will mostly be alleviated somewhat by the extrapolate option.

I am currently calculating the distance as the mean of the 10% lowest distances, which may be too convoluted.

We'll have to see how it does in testing. I'd use the median neighbor-to-neighbor (from the Delaunay triangulation) distance because it's the simplest reasonably representative thing I can think of.

I agree with all your points.

I'd use the median neighbor-to-neighbor (from the Delaunay triangulation) distance because it's the simplest reasonably representative thing I can think of.

Yes, the 10% is a temporary hack  :) I will change the distance to the median neighbour-to-neighbor.
From what I remember Delaunay allows to add points after initial computation, so I'll compute it at the beginning for pos and later add the additional points to it. If so - would it be better to take the convex hull from Delaunay (although the docs warn that this may be inaccurate) or compute it separately?

Speaking of which, somewhere we set a mask for the points pcolormesh plot.

Oh, yes, I am aware of the mask - I was playing with it recently to generate the masked topos I posted in #5315. I can work on that after this PR.
And while you are mentioning skirt - EEGLAB IIRC has a principled way of setting which electrodes are within the head circle, and which outside - channels below some defined y position (similar to 10-20 skull circumference level) are plotted outside the head.

Regarding the added points, I thought they should be exactly on the head circle. Can you try and see how this looks, including setting the values to zero?

@cbrnr - the added values are zero in the "after" example (that's why the colors go to white around these added points). If they were placed on the head circle as it is drawn:

the interpolation function would need to know where the head circle is
some of the channels would have these additional points closer than currently (that is below the average/median inter-electrode distance)
in the case of plotting only some of the channels and once head circle does not adapt to electrode's range (Eric's PR) these distances might be much higher (for example - plotting occipital channels only would still interpolate to the front of the head)
then, the interpolation function would also need to know whether the skirt mode is used in which case the zero points shouldn't be added at the circle, but somewhere else
but I can try that - so you can see how it looks, in the case above it should be pretty similar.
@all - If you can paste a few snippets with problematic/interesting topo activity (and channel pos) I could generate more plots for better comparisons.

@mmagnuski but to me it looks like this is what the MATLAB toolbox in https://github.com/mne-tools/mne-python/issues/5315#issuecomment-439803612 is doing - the values on the circle are exactly zero, and this looks like it should.

@jsosulski can you share the code snippet you used to produce topoplots with the MATLAB toolbox?

Sure, see this gist.
Additionally another example how bbci plots topomaps:

In my opinion, the first one is the best compromise between correctness and aesthetically pleasing. The second one does not look good but is 'most accurate' while the last one seems to be misleading at best.

(the "after" looks like a laughing cyclops in a party hat).

While true, I must say in the first one the outer values look very close to the strong frontal/central activity which could be misinterpreted as activity in that region. This does not happen in the second case.

I'll check the placement of extra points on the circle later today (the example below show that it may be useful). But using the circle would have to mean that for skirt we still use something like the convex hull. Currently the data provided by @jsosulski give this with this PR (note that the stretched to fill the whole scalp but that is another problem: #5085):

Thanks for the gist @jsosulski - I think MNE also needs an option to not extrapolate at all. As you say, extrapolating is making up information, so we primarily do this for aesthetic purposes. So maybe there could be a parameter extrapolate which can be 'head' (the head circle, default), 'none' (or None), and 'smooth'. If extrapolate == 'head', we'd also need to specify the values on the head circle, which by default should be 0. This probably requires another parameter.
I am also +1 for a Pinocchio parameter 😄.

Currently the data provided by @jsosulski give this with this PR

This looks much better than the current default mne topomap!

for example - plotting occipital channels only would still interpolate to the front of the head

To compromise, I would use the current method to place these support points, but if they extend beyond the outline of the scalp, put them exactly on the scalp border. This would also (i think) improve the bottom right blue blob in your plot @mmagnuski , which currently does not seem to go towards 0 fast enough.

At this point my main questions is: what should be the default for extrapolate ('head' vs let's say 'local' or 'hull')? If 'head' then it probably should switch to convex hull in outlines='skirt'. If 'local'/'hull' should be the default then there could be an error on outlines='skirt' + extrapolate='head'. What do you think?

Honestly, I don't understand how these parameters influence the plot. Can't we come up with less technical ones (i.e. use similar parameters to the MATLAB toolbox)? Basically, I want to be able to specify if we extrapolate or not. And if we extrapolate, I want to be able to say to which locations we extrapolate, and what the value at these locations is (default zero). I have difficulties understanding what you mean by skirt, local, and (convex) hull, and probably this will also be problematic for other users.

Honestly, I don't understand how these parameters influence the plot. Can't we come up with less technical ones (i.e. use similar parameters to the MATLAB toolbox)?

Sure, these were just my propositions. But to clarify what I meant I respond below:

I want to be able to specify if we extrapolate or not.

This would come in the next PR. In this one you could specify how you want to extrapolate (see below).

And if we extrapolate, I want to be able to say to which locations we extrapolate

You could choose whether additional points (the locations to which you want to extrapolate) are placed on the head circle (extrapolate='head') or locally (so it could be extrapolate='local'), based on the convex hull (this is just a shape that encompasses all channel positions - similar to the yellow line that you drew in #5315). We could also consider whether one could specify the max distance from the channels to which interpolation is done (this wouldn't be precisely max distance, but the distance by which the convex hull is extended).

and what the value at these locations is (default zero).

That would be boarder=0 if we want to extrapolate to 0 or boarder='closest' if the values at the "extrapolation boarder" are based on values of closest channels.

I have difficulties understanding what you mean by skirt

Skirt is an option that is currently available in topo plots, it is designed to match what EEGLAB does (channels below the head circumference are moved outside the head circle). See here for an example:

@larsoner What do you think? And I think we should fall back to the old behavior if there is < 3 channels (this is why CI's fail).

And I think we should fall back to the old behavior if there is < 3 channels

If by "old behavior" you mean "interpolate to the edges" I don't think that's right, at least for the ConvexHull-style interp. In Convex-hull mode, if there are only co-linear points (i.e., <= 2 points, or > 2 but all along a single line) then we can deal with it by putting a rectangle around them (1x the median distance between points away; if only a single point, then just use some sane, small value like 1/20th or 1/10th of the head diameter; in fact maybe the convex hull should always be the max(median(dists), 0.05) or something).

Thanks @mmagnuski, this makes sense. We should make/update a topoplot tutorial that shows all options once this and the next PR are done. BTW, the argument should be named border and not boarder.

@larsoner Yes - I didn't mean exactly what was previously done but some box-like approach. I'll check the max(median, 0.05) too (although I am not sure at which point the channels are scaled to the head circle).

We should make/update a topoplot tutorial that shows all options once this and the next PR are done.

Oh, yes, definitelly!

BTW, the argument should be named border and not boarder.

Yes, I must have meant a cross between boar and border ;)

Comparison of extrapolate='local' and extrapolate='head', both with border=0:

in the case of placing points on head, I actually had to place them slightly outside head (at 0.53 instead of 0.5) to avoid the pixelated edges.

What does my example from #5315 look like?

@cbrnr: Both 'local' and 'head' look very similar:

@larsoner
With respect to outlines='skirt' there are (at least) two options:

make extrapolate='local' default and raise error when extrapolate='head' and outlines='skirt'
make extrapolate='head' default and switch to extrapolate='local' when outlines='skirt'
I have a preference for the first option as there is less magic under the hood.

Both variants are much better than the previous default, because the red (positive) patches are much less pronounced. However, the BBCI toolbox topoplot still looks better because it doesn't contain any positive values.

@cbrnr - we can check different interpolation methods later to see if that helps. I could also add more points on the border an we can see if that helps.

@cbrnr Additional points do not help much. Below you can find images of mask highlighting positive values with more (upper plot) and less (lower) extra points. The figures are without origin='lower' so you'd have to flip them upside down in your head. :)

Adding even ludicrous amount of extra points (20 times more than default) doesn't help so much (the plot below is with origin='lower', just to confuse you ;) ):

I'd blame it on different interpolator used and maybe some differences in the 2d layout of channels between mne and the BCI toolbox (it seems that 2d channel positions are different - if one could extract the 2d coordinates of the points we could check that).

I suspect its the different interpolation scheme. @jsosulski can you check if there are any positive values in the BBCI topoplot of my example (e.g. with a mask)?

There actually are, I plotted some random integers between 0 and -100 as I did not have your original data available anymore right now.

If one uses linear interpolation, there are obviously no more positive values, but the topomap looks more like a picasso picture. For the above plots the matlab toolbox uses griddata with 'v4' interpolation, i.e. bi-harmonic spline interpolation.

With respect to interpolation: it doesn't seem that the bi-harmonic spline interpolation / matlab's V4 is available in scipy. Here is an old discussion at scipy mailing list featuring @agramfort and @dengemann:
https://mail.python.org/pipermail/scipy-dev/2014-July/thread.html#19952
(look for: griddata equivalent of matlab "V4" option)
There is a mention of some PR to scipy, maybe @dengemann knows what happend?

@larsoner Circle CI is upset with your latest changes: Invalid requirement: 'dipy --only-binary dipy' :)

If you rebase it should fix it

@larsoner Also: I am using np.unique() with axis argument, which was introduced later on in numpy. Should we add a private version of unique with axis to mne?
BTW - I also decided I'd prefer to add the option of interpolating to avg of closest values (not zero) in the follow-up PR, are you ok with that?

Should we add a private version of unique with axis to mne?

Sure, typically we put such backports into mne/fixes.py with a copy-paste of the upstream function and note about when they can be removed like
# can be removed once we require NumPy 1.YZ

I also decided I'd prefer to add the option of interpolating to avg of closest values (not zero) in the follow-up PR, are you ok with that?

Yes a first PR about boundary choices (this one) and a second one about interpolation value to use at those boundaries sounds cleanest and easiest to review anyway

@larsoner Great, thanks!

@larsoner @agramfort @cbrnr - I think this is ready for review.
The remaining issues are mostly API-wise:

I've written a few time here about the interaction between outlines='skirt' and extrapolate='head'. My preference is to have extrapolate='local' as the default and throw an error when extrapolate='head' and outlines='skirt'.
I should probably add the extrapolate arg to some more functions that use topo plotting, right? I've added it to evoked's plot_topomap but there are surely others like plotting topographies of psd.

I'll add some more topographical plots in the evening but the only things that I've changed since last plots was fixing cases when points are colinear or there is not enough points for triangulation (< 4 points).

My preference is to have extrapolate='local' as the default and throw an error when extrapolate='head' and outlines='skirt'.

The only problem with changing the default is that it's not backward compatible. How about in this PR you don't change the default, and we can have a follow-up PR to deprecate? It will make reviewing and thinking about problems easier.

I should probably add the extrapolate arg to some more functions that use topo plotting, right? I've added it to evoked's plot_topomap but there are surely others like plotting topographies of psd.

Yes there are going to be other places it's needed. It can be part of this PR or a separate one, depending on how much time you want to spend on it. When I looked into this code at some point it seemed like there were a lot of difficult interactions and corner cases, so separate PRs might make your life easier.

+1 to separate PRs, it will make our lifes easier :)
I agree with the backwards compatibility argument - although actually both 'local' and 'head' are not exactly compatible with what was present before (i.e. topographies would be different anyway). So you would prefer to have 'head' as the default - even once your PR that removes scaling channel positions to head circle lands (which should be in 0.18)? It's true that 'head' is more similar to what we had previously but would we want to extrapolate to the whole head circle by default when one uses only a subset of channels?

It's true that 'head' is more similar to what we had previously but would we want to extrapolate to the whole head circle by default when one uses only a subset of channels?

For now/this PR yes; in the follow-up deprecation PR, no.
My idea is to have this PR only be about adding an extrapolate argument whose current default ('head'?) does whatever 0.17 does, but adds another option 'local' that extrapolates to within a small neighborhood of the convex hull of the (flattened) sensor positions.

skirt with extrapolate='local' does look a bit different from what was before:

but the pixelated edges are only temporary - we want to have a convex hull mask anyway, at least for extrapolate='local'.
But I agree it might be better not to raise the error but make extrapolate='head' and outlines='skirt' work peacefully together. Should I set this back to WIP then?

these options should be presented in https://martinos.org/mne/dev/auto_tutorials/plot_visualize_evoked.html

@agramfort Yes, they will be. Actually, @cbrnr suggested to have a separate tutorial on topography plotting. But this PR is just one of multiple steps in that direction, so I think it will be better to add the examples once all the topomap interpolation changes are done.

ok but this should be part of this PR. It's important that we consolidate the doc in every PR. If we say later there is a huge risk that it's never done.

Sure, I understand.

Or so we add it to the list of viz tutos and we link to it also from the topomap section of evoked viz ?

@agramfort I wont have time next week to create a whole new tutorial just for one interpolation option. I can get back to it some time later.

Ok, another idea: I could modify that example:
https://martinos.org/mne/stable/auto_examples/visualization/plot_evoked_topomap.html
It would require substantially less time and the example looks as if it would benefit from some editing (splitting into code sections for example).

Good idea
Don’t forget to link to it from viz tutorial

Looks like an improvement.
Before:
https://martinos.org/mne/stable/auto_examples/visualization/plot_evoked_topomap.html
Now:
Makefile:49: recipe for target 'html_dev-pattern' failed
make: *** [html_dev-pattern] Error 1
Exited with code 2

a more serious version of now (although I don't know why circle failed, does it fail on warnings now?)
https://10536-1301584-gh.circle-artifacts.com/0/html/auto_examples/visualization/plot_evoked_topomap.html
I like it but would change the size of the huge topo near the end, and would increase the size of the two topos showing extrapolation options.

Shouldn't, rather

Ok, that was my fault, but should be fixed now.

can you add sections in your updated example so outline is more visible at
first glance?

@agramfort I'm not sure if I understand - there are plenty of sections. Do you mean to add a section at the beginning with an overview of the steps?

I mean section headers/titles with ---- or ====

Yeah it is hard to see the names. I can't think of a way to fix it for now. It's presumably a problem on master as well, though so you don't have to fix it here for merge.

If it's huge on master you can just keep it huge for now and we can fix the hugeness later

(I don't see a good easy solution so wouldn't want to hold this PR up for it)

@larsoner I'm using a bad label when linking to the example from evoked viz tutorial. I was just guessing there, how should it be done correctly?

git grep is your friend here for finding the pattern, but it should be sphx_glr_auto_examples_visualization_plot_evoked_topomap.py

also don't forget the rebase so that CircleCI can build properly

Thanks! And: oh, no, another conflict...

@larsoner @agramfort @cbrnr Travis and circle are green, so it's ready for final round of reviews. Appveyor will take some time until it marches through the queue to the last commit (I would cancel my previous appveyor builds but I do have these privilages on appveyor) - so if one could terminate builds for my previous commits all would go faster. :)

Done and +1 for merge

+1 for MRG after addressing @cbrnr 's comments
rendered tuto:
https://10563-1301584-gh.circle-artifacts.com/0/html/auto_examples/visualization/plot_evoked_topomap.html#sphx-glr-auto-examples-visualization-plot-evoked-topomap-py

Oh, another conflict, third rebase, hooray. :)

Thanks for the comments @cbrnr, I think I adressed all. Now I am at the mercy of CIs...

There are still some open comments about magic numbers and a missing "the" in two or more places. Since the CIs have already failed you might as well push these changes.

Travis
tutorials/plot_visualize_evoked.py:104:80: E501 line too long (80 > 79 characters)

CircleCI
/home/circleci/project/examples/visualization/plot_evoked_topomap.py failed leaving traceback:
Traceback (most recent call last):
  File "/home/circleci/miniconda/envs/mne/lib/python3.6/site-packages/sphinx_gallery/gen_rst.py", line 402, in _memory_usage
    multiprocess=True)
  File "/home/circleci/miniconda/envs/mne/lib/python3.6/site-packages/memory_profiler.py", line 336, in memory_usage
    returned = f(*args, **kw)
  File "/home/circleci/miniconda/envs/mne/lib/python3.6/site-packages/sphinx_gallery/gen_rst.py", line 393, in __call__
    exec(self.code, self.globals)
  File "/home/circleci/project/examples/visualization/plot_evoked_topomap.py", line 85, in <module>
    show=False)
  File "/home/circleci/project/mne/evoked.py", line 359, in plot_topomap
    axes=axes, extrapolate=extrapolate)
  File "/home/circleci/project/mne/viz/topomap.py", line 1773, in plot_evoked_topomap
    cax = plt.subplot(1, n_fig_axes + 1, n_fig_axes + 1)
  File "/home/circleci/miniconda/envs/mne/lib/python3.6/site-packages/matplotlib/pyplot.py", line 1084, in subplot
    a = fig.add_subplot(*args, **kwargs)
  File "/home/circleci/miniconda/envs/mne/lib/python3.6/site-packages/matplotlib/figure.py", line 1352, in add_subplot
    ax = self._axstack.get(key)
  File "/home/circleci/miniconda/envs/mne/lib/python3.6/site-packages/matplotlib/figure.py", line 98, in get
    "Adding an axes using the same arguments as a previous axes "
  File "/home/circleci/miniconda/envs/mne/lib/python3.6/site-packages/matplotlib/cbook/deprecation.py", line 112, in warn_deprecated
    warnings.warn(message, category, stacklevel=2)
matplotlib.cbook.deprecation.MatplotlibDeprecationWarning:
Adding an axes using the same arguments as a previous axes currently reuses the earlier instance.  In a future version, a new instance will always be created and returned.  Meanwhile, this warning can be suppressed, and the future behavior ensured, by passing a unique label to each axes instance.

@cbrnr, thanks, I'll fix it later today.

thanks @larsoner I'm on it.

https://10598-1301584-gh.circle-artifacts.com/0/dev/auto_examples/visualization/plot_evoked_topomap.html

Thanks @mmagnuski!

Unbelivable - it's finally merged :)
Thanks @cbrnr @larsoner @agramfort!
:rocket:


compose: Refocus compose box if message view link is clicked.

Fixes #4331 and closes #4397
Was unsure whether all links should cause refocusing, or only those that lead to external pages. Willing to implement external link refocusing only if necessary :)

Merged, thanks @synicalsyntax!  A nice follow-up here would be to just call compose.composing() once and maybe extract the compose-specific stuff to its own function.


Error on creating a database with mapping to other spaces

[x] I reviewed open and closed github issues that may be related to my problem.
[x] I tried updating to the latest version of the CF CLI to see if it fixed my problem.
[x] I attempted to run the command with CF_TRACE=1 to help debug the issue.
[x] I am reporting a bug that others will be able to reproduce.

Describe the bug and the command you saw an issue with
I am trying to create a database that includes a mapping to another space by specifying the "databaseMappings" property.
What happened
Creation failed with error  "provision could not be completed: Service broker error: Service broker hana-cloud failed with: invalid Parameter (databaseMappings): array must contain a single entry [ref 2KiptiuNe5Q9tvxYnJkpfHziifb]"
Expected behavior
Expected the database to be created successfully, including an additional mapping to the other space.
Exact Steps To Reproduce
Steps to reproduce the behavior; include the exact CLI commands and verbose output:

create service instance: cf8 create-service hana-cloud hana test_create_mapping -c "<json>"

{
  "data": {
    "systempassword": "<pass>",
    "edition": "cloud",
    "memory": 30,
    "databaseMappings": [{
        "organization_guid": "<organization_guid>",
        "space_guid": "<space_guid>"
      },
      {
        "organization_guid": "<organization_guid>",
        "space_guid": "<space_guid> of the other space"
      }
    ]
  }
}

See error: provision could not be completed: Service broker error: Service broker hana-cloud failed with: invalid Parameter (databaseMappings): array must contain a single entry [ref 2KiptiuNe5Q9tvxYnJkpfHziifb]"
FAILED

Provide more context

platform and shell details: Windows, version 10.0.22621
version of the CLI you are running: 8.5.0+73aa16182.2022-09-12

Notes regarding V6 and V7 CLI support:

V6:

Minimum supported version of CF Deployment: v7.0.0 (CAPI Release: 1.74.0 (APIs 2.128.0 and 3.63.0))
Maximum supported version of CF Deployment: v13.4.0 (CAPI Release: 1.94.0 (APIs 2.149.0 and 3.84.0))

V7:

Minimum supported version of CF Deployment: v13.5.0 (CAPI Release: 1.95.0 (APIs 2.150.0 and 3.85.0))

If you still run into this issue with the latest CLI v8, please open a new ticket with the necessary information mentioned in our issue template.


Infinite loop in from_fsm() on Python 2

Converting the following simple 2-state automaton into a regexp causes an infinite recursion, when run on Python 2.7:
from greenery import fsm
from greenery import lego
f = fsm.fsm(alphabet={'a','b'}, states={0,1}, initial=0, finals={0}, map={0: {'a':0, 'b':1}, 1: {'a':1, 'b':0}})
print(f)
l = lego.from_fsm(f)
print(l)

In particular, I get a maximum recursion depth exceeded error when running from_fsm() in the script above, on Python 2.7:
Traceback (most recent call last):
  File "testlego.py", line 5, in <module>
    l = lego.from_fsm(f)
  File ".local/lib/python2.7/site-packages/greenery/lego.py", line 159, in from_fsm
    return brz[f.initial][outside].reduce()
  File ".local/lib/python2.7/site-packages/greenery/lego.py", line 44, in new_method
    result = method(self, *args, **kwargs)
  File ".local/lib/python2.7/site-packages/greenery/lego.py", line 1441, in reduce
    reduced = [m.reduce() for m in self.mults]
  File ".local/lib/python2.7/site-packages/greenery/lego.py", line 44, in new_method
    result = method(self, *args, **kwargs)
  File ".local/lib/python2.7/site-packages/greenery/lego.py", line 1277, in reduce
    reduced = self.multiplicand.reduce()
  File ".local/lib/python2.7/site-packages/greenery/lego.py", line 47, in new_method
    return result.reduce()
  File ".local/lib/python2.7/site-packages/greenery/lego.py", line 47, in new_method
    return result.reduce()
[repeats many times]
  File ".local/lib/python2.7/site-packages/greenery/lego.py", line 47, in new_method
    return result.reduce()
  File ".local/lib/python2.7/site-packages/greenery/lego.py", line 44, in new_method
    result = method(self, *args, **kwargs)
  File ".local/lib/python2.7/site-packages/greenery/lego.py", line 1719, in reduce
    if reduced != self.concs:
  File ".local/lib/python2.7/site-packages/greenery/lego.py", line 1395, in __eq__
    return self.mults == other.mults
  File ".local/lib/python2.7/site-packages/greenery/lego.py", line 1160, in __eq__
    and self.multiplier == other.multiplier
  File ".local/lib/python2.7/site-packages/greenery/lego.py", line 990, in __eq__
    return self.min == other.min and self.max == other.max
RuntimeError: maximum recursion depth exceeded

I'm using Python 2.7:
$ python
Python 2.7.13 (default, Jan 12 2017, 17:59:37)
[GCC 6.3.1 20161221 (Red Hat 6.3.1-1)] on linux2

When I run the same script with Python 3.5, it works fine.  Python's sys.getrecursionlimit() returns 1000 for both Python 2 and Python 3 on my platform.  I installed greenery via pip --user, and I have version 3.0 of the greenery library (the latest that Pip could find).

I'm so sorry that it took me this long to see your issues, until now my GitHub email account was one I do not frequently check.
I'm also very sorry to say that greenery only supports Python 3.x, not Python 2.x. I apologise for not signalling this at all in the README. I will fix this now.

README updated.


Me

[Enter feedback here]

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 7e8de9b3-9764-f91b-6abc-30f21d6047a8
Version Independent ID: a7fb28d7-bf49-715c-00df-29e6fd6024c9
Content: Understand tables in canvas apps - PowerApps
Content Source: powerapps-docs/maker/canvas-apps/working-with-tables.md
Service: powerapps
GitHub Login: @gregli-msft
Microsoft Alias: gregli

Me too.  :)
If you are asking about a "Me" or "This" identifier like "ThisItem" or "Parent" that is self referential to the current control or record, this is on our development backlog and we hope to add it soon.

Thanks, @brandonnathaniel01. Closing this issue.


How to set Minimum and Maxmimum month of calendar

I want to set maximum and minimum month . How to this solution ?

This is an existing open issue #84. I can't give an update since I have not started it. But since amny people are asking, i will have a think about it.


Refactor/server folder

This is a big refactor so discuss changes here. I especially am wondering about the auth stuff. Should we have two auth directories? and much of the things in src/auth should use things in auth/server/auth. There are probably many parts of server logic that can be made more modular.

I think that the src/auth dir. should be refactored some time next week in a separate PR.

I think this is now ready. I have not done much with Auth. We might want to change the name ActionReturn to something like WrappedSafeReturn at this point

And I have not done anything with /actions/groups

Another thing i though about is that do server functions really need to return an action return?  (I think at least, i see no reason to call them from server side rendered pages as that would mean that they won't be authed.) So we could just throw errors instead. I think this would make the code base a lot cleaner on the server side of things without affecting the frontend part as we won't have to type this
const doSomethingRes = await doSomething()

if (!doSomethingRes.success) {
    return doSomething
}

const data = doSomethingRes.data

and could simply write instead
const data = await doSomething()

since an error could simply be throw deep down somwhere and be catched at the action call.

We could create a custom error class and have the same error information in it as an action return error. Then we could simply have a function to parse this error from an error class to an action return error. Basically mirroring what we do with prisma.
For example inside an action:
try {
 const newThing = await createThing()

 return { success: true, data: newThing }
} catch(e) {
 return createActionError(e)
}

I did think about this initially, but did not do it as I a) would like to have a common way of handling errors and b) I feel we are then sacrificing how clean the actions are going to be. The thing is that I really do not like the way we do it for prisma, ref the error part of #207. An option is obviously to move this try-catch wrapper out to the action leve, that is use the prismaCall function as a generalized "safeTryCatch" that returns a ActionReturn. so we would inside the action say
return await safeTryCatch(() => createThing(data))

But now this trycatch must address all errors both with prisma and other things.

Just wondering: If we are to move part of zod-validation into the server-folder how would you for example then throw a zod-error. I like the return creaeZodActionError(parse) pattern, would you then just throw this object inside the server dir. for it to be caught in the action? - and now how does the try  catch block or safeTryCatch block know that the error it has caught is already of type ActionReturn?

We could create a custom error class and have the same error information in it as an action return error. Then we could simply have a function to parse this error from an error class to an action return error. Basically mirroring what we do with prisma.
For example inside an action:
try {
 const newThing = await createThing()

 return { success: true, data: newThing }
} catch(e) {
 return createActionError(e)
}

Didn't see the custom error part. If you do an Instance of check on custom error then I agree. But I still don't like try catch. And then we also scrap prismaCall and just use safeTryCatch that in the chech block matches Error instances with action returns of success false

Or should call to prisma in /server errors be translated to custom errors so actions will do UNKNOWN ERROR on all errors no of custom type. Or should actions handle Prisma-errors itself?

I don't really like the try catch pattern either. Especially not the way JavaScript does it. But i do like being able to throw errors since that simplifies how the error reaches the top.
When it comes to prisma errors maybe they can be left as is since I don't see what value we get if we simply wrap them.

On the other hand by wrapping the prisma error we can tell what the error is for. For example if you try to call a create action that calls some other create actions and one of them fails you'd only get what type of error it is and not which one of them failed.

My suggestion:

export type ErrorCode =
| 'DUPLICATE'
| 'NOT FOUND'
| 'BAD PARAMETERS'
| 'UNAUTHENTICATED'
| 'UNAUTHORIZED'
| 'UNKNOWN ERROR'

export type ErrorMessage = {
    path?: (number | string)[],
    message: string,
}

export class ServerError extends Error {
    errorCode: ErrorCode;
    errors: ErrorMessage[];

    constructor(errorCode: ErrorCode, errors: string | ErrorMessage[]) {
        const parsed_errors = typeof errors === 'string'
            ? [{ message: errors }]
            : errors

        super(errorCode)

        this.errorCode = errorCode
        this.errors = parsed_errors
        this.name = "ServerError"
    }
}

Then the types for actions errors can be:
import { ErrorCode, ErrorMessage } from "@/server/error"

export type ActionReturnError = {
    success: false,
    errorCode: ErrorCode,
    error?: ErrorMessage[],
}

export type ActionReturn<ReturnType, DataGuarantee extends boolean = true> = (
    ActionReturnError
) | {
    success: true,
} & (
    DataGuarantee extends true ? {
        data: ReturnType
    } : {
        data?: ReturnType
    }
)

You can check this out in the branch refactor/server-folder-and-error


fix: publish package with src

fixes #828

Hi, any chance of this going in release?

For the moment I just removed source maps. I don't like the idea of shipping TS files in the bundle - it can break other builds and causes bloat for everyone else (which is the whole problem minimization + source maps are intended to combat). Other major projects (io-ts) also don't bother with source maps, and I'm starting to think it's more trouble than it's worth.

If removing source maps is the desired solution I can close this PR. As you said, source maps really don't have much benefit in this case.
Source maps may be beneficial for debugging, and if that's something we want then we should ship the source so the source maps actually work. I fail to see how it would break any builds, since the built JS files will still be there, and I wouldn't really say it's bloat since it's just a couple of files, especially if you don't include the test and benchmark folders.


Support BED arrays in VCF queries

Add support for TileDB BED arrays in VCF queries.

This PR is no longer required after a change in the VCF read API allows BED arrays to be passed with the existing bed_file parameter.


Choose where the script ends after completing runs

Preparation

[X] No one has asked for this feature before in other issues (even the closed ones)

Describe the feature
I believe FGA's scripts terminated on the Items Dropped screen before a recent update that makes them stop instead at the repeat quest screen or the quest selection screen. I use FGA for single runs a lot, so I'd appreciate an option to end the script at Items Dropped like before -- I want to know what drops I got after those single runs without having to specify materials in FGA in advance (especially because I use the same config to farm a ton of different things). I can see it also being helpful for people trying to raise bonds if they could set the Servant Bond screen as the script's point of termination. I hope this was clear!

I don't remember FGA ever stopping at the drops screen. Also the bond point suggestions is covered partially by the "Stop on CE GET" feature, which is triggered on Bond 10.
There's also the feature of screenshotting all drops, but it won't summarize what you got.
I'll be honest, I don't think many users care enough about this stop feature that it would be feasible to implement.
But I could imagine that FGA could count all 50 or so possible mats and then only show the ones that dropped. That would lead to FGA stopping at the drop screen for a few seconds, but you never have to set any mats again except when you want to use "Stop after X drops", where I don't even know how it handles multiple selected mats.

I tried implementing what I had in mind, but it takes around 7 seconds to search for all drops on my phone, so I'd rather not make it available to everyone.


create a helper class for setblock flags

Fill and Clone commands should be affected by the fillUpdates rule

Considering that that's a bug with the fillUpdates rule rather than this change, should I fix that in a separate PR?

Considering that that's a bug with the fillUpdates rule rather than this change, should I fix that in a separate PR?

sure

looks good to me


Adding ability to move chess pieces by clicking on board tiles.

Got the chess pieces moving!
I put all the code in one spot so feel free to move it anywhere you like.

Good work, thanks for the contribution!

thanks!! So awesome to contribute especially in Rust
On Mon, May 1, 2023, 1:33 PM Jonathan Sawyer @.***>
wrote:

Merged #3 https://github.com/jonmsawyer/chui/pull/3 into main.
—
Reply to this email directly, view it on GitHub
https://github.com/jonmsawyer/chui/pull/3#event-9139850317, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AD5PMVEFPE3QPVL2LZ7FFVDXEATYZANCNFSM6AAAAAAXQQJCDI
.
You are receiving this because you authored the thread.Message ID:
@.***>


deploy/charts: allow configuring otel-metrics

Allow configuring otel-metrics operator

Do you also have plans regarding the other exporters?

Rebased to solve conflicts.


How can i add text-rekognition.

I want to add text rekognition. In a few steps how can i do it?. just with lambda and steps or i need to change another service?

The Media Analysis solution works with media files (audio, video and image). It can convert audio into text and create caption for a video. See more details here https://aws.amazon.com/solutions/media-analysis-solution/. If you want to extract text and data from scanned documents, I would recommend you to check out Amazon Textract (https://aws.amazon.com/textract/). You can always modify the solution to add new features that you need. Please provide more details of your use case so we can better understand your questions and provide help accordingly if you need further assistance. Thank you!

For your information: This Solutions Implementation has been superseded by AWS Content Analysis.


fix: profile validation to include source_profile and role_arn

Description of changes

fix incorrect validation introduced in https://github.com/aws-amplify/amplify-cli/pull/7017
Issue #, if available

Description of how you validated changes
Ran unit tests and successfully completed amplify init using an IAM role in a profile
Checklist

[x] PR description included
[x] yarn test passes
[x] Tests are changed or added

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

Woah, fast work. Thanks!


feat: add hl7 exports as a sub module

Closes #81 #77

:tada: This PR is included in version 2.1.0 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Path fix in Xamarin.CommunityToolkit.Sample.csproj

Xamarin.CommunityToolkit.Sample project build fix.
Description of Change
Change the path in https://github.com/xamarin/XamarinCommunityToolkit/blob/19616fd3666456458d4eb368b396f163591a0866/src/CommunityToolkit/Xamarin.CommunityToolkit.Sample/Xamarin.CommunityToolkit.Sample.csproj#L107 to <ProjectReference Include="..\Xamarin.CommunityToolkit\Xamarin.CommunityToolkit.csproj" />
Bugs Fixed

Fixes #611

PR Checklist

[ ] Has tests (if omitted, state reason in description)
[ ] Has samples (if omitted, state reason in description)
[x] Rebased on top of main at time of PR
[x] Changes adhere to coding standard
[ ] Updated documentation

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


Points association

@Andrew

Added resize to support scaling.
Fixed value type
Fixed redrawing issue
For now, going to leave the slider for rotation.  Should flow better now

@ Andrew
Need to change any plugins that reference type 'xmpfile' or 'pngfile' to file:xmp and file:png


System Requirements / How do I run this?

I'm currently running Windows 10 with Python3 installed (from here) and I have pygame installed (following this)
The instructions currently say
# prosfair
Next Generation Chess!!

main.py is the main python file.

You need to have python-pygame installed.

Also, you need to compile the minimax_alpha_beta.cpp to minimax in the ai folder

g++ ai/minimax_alpha_beta.cpp -o ai/minimax

Stop by the gitter group : https://gitter.im/OpenC-IIIT

I don't have g++ on my windows machine, so I'm not quite sure how to compile the ai. When I open it in Visual Studio 2017 the IDE claims that there are a bunch of errors and refuses to compile the code. I tried running "main.py" but it just opens up the python window really quick and closes it again.
Perhaps my issue is that I never did compile minimax_alpha_beta.cpp to minimax. There is already a minimax file so I was hoping it would work, but it hasn't.
I appreciate that there are other BBB fans out there!

@Matt The game works great on Ubuntu. Run on that. Meanwhile, let me try
and reproduce your issue that you're facing. Please provide screenshots of
the errors in Visual Studio.
And that file minimax is compiled on Ubuntu. It wouldn't work on Windows.
On Nov 12, 2017 12:14, "Matt"<EMAIL_ADDRESS>wrote:

I'm currently running Windows 10 with Python3 installed (from here
https://www.python.org/downloads/release/python-363/) and I have pygame
installed (following this https://www.pygame.org/wiki/GettingStarted)
The instructions currently say
`# prosfair
Next Generation Chess!!
main.py is the main python file.
You need to have python-pygame installed.
Also, you need to compile the minimax_alpha_beta.cpp to minimax in the ai
folder
g++ ai/minimax_alpha_beta.cpp -o ai/minimax
Stop by the gitter group : https://gitter.im/OpenC-IIIT`
I don't have g++ on my windows machine, so I'm not quite sure how to
compile the ai. When I open it in Visual Studio 2017 the IDE claims that
there are a bunch of errors and refuses to compile the code. I tried
running "main.py" but it just opens up the python window really quick and
closes it again.
Perhaps my issue is that I never did compile minimax_alpha_beta.cpp to
minimax. There is already a minimax file so I was hoping it would work, but
it hasn't.
I appreciate that there are other BBB fans out there!
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/OpenC-IIIT/prosfair/issues/54, or mute the thread
https://github.com/notifications/unsubscribe-auth/AO9X8AbE5ustbqtn0euRBEZd0jNsXGo8ks5s1pPXgaJpZM4Qax0l
.

I'll give it a try on Ubuntu.
I think most of the compile errors are related to the top include file. VS17 doesn't recognize it and so does not understand "map" or "vector" like it should.
Here is the error log (also attached), I don't know if this is as good as a screenshot. It has the line number at the end of each line. I've deleted the ones that mention map and vector being unsupported.


Use another account for calls in a test

Hi,
How can I change a sender of contract call in my tests?
Like from: field in Truffle.
await contract.someMethod(arg1, arg2, {
  from: myAccount,
});

There's a method tronWeb.setAddress(). Looks like it should change the sender, but it doesn't do that in my tests.
Thank you!

Please try the below code.
const TestContract = artifacts.require("./TestContract.sol");
const TronWeb = require('tronweb')

TestContract.deployed().then(t => {
  t.myBalance().then(console.log)

  const _tronWeb = new TronWeb({
    fullHost:  tronWeb.fullNode.host,
    privateKey: '01'
  })

  _tronWeb.setAddress('TXYZopYRdj2D9XRtbG411XZZ3kM5VkAeBf')
  _tronWeb.contract().at(t.address)
  .then(contract => {
    contract.myBalance().call().then(console.log())
  })
});

// SPDX-License-Identifier: MIT
pragma solidity >=0.4.23 <=0.8.0;

contract TestContract {
  function myBalance() public view returns (uint) {
    return address(msg.sender).balance;
  }
}

While the workaround above works, it's a very inconvenient solution. Having {from: account} working for .call() and .send() is much more convenient and is the way it should be. This is a big headache and a major problem that needs to be addressed I believe.


Privacy implications for fetching a JSON

Hello,
https://github.com/KevinPayravi/indie-wiki-buddy/blob/main/background.js#L54
https://github.com/KevinPayravi/indie-wiki-buddy/blob/main/popup.js#L60
https://github.com/KevinPayravi/indie-wiki-buddy/blob/main/popup.js#L384
The add-on will fetch a JSON, there's no way to opt out, and it's not in the privacy policy: https://getindie.wiki/privacy/
This JSON is currently hosted on GitHub.
There is a privacy implication to that, especially since it does it without telling users about it.
Please, add a way to opt out (and mention it in the privacy policy).

Thanks for the report! I've updated https://getindie.wiki/privacy/ with the following text:

If the BreezeWiki redirect functionality has been enabled, the extension will pull a list of working BreezeWiki instances from a file hosted on GitHub, managed by the Indie Wiki Buddy developer. This is done in order to provide the extension with an up-to-date list of working BreezeWiki mirrors.

Does that sound good? Let me know if it needs any more details.
Fetching of the JSON only happens if a user enables BreezeWiki, which is off by default. I don't currently plan to add a more granular opt-out just for the remote fetching. BreezeWiki is included in Indie Wiki Buddy to make it easy to retrieve and switch between a list of working mirrors, as some of them can be rather ephemeral. If a user doesn't want that functionality, I would recommend they use a redirector extension to set up and configure their own redirect to their preferred mirror.
That all being said, I may remove the fetching altogether at some point; extension reviews on the Chrome web store usually only take a day (with exception), so there's limited time savings to managing them via remote JSON.

Good enough. Thanks


Update CSS lib version dep

This is needed internally to get a change to global-context rename which was requested by the CSS team at Google.

Code review in https://dart-review.googlesource.com/c/sdk/+/219121


test: add new test to check for stable version support

Description
Issue : https://github.ibm.com/GoldenEye/issues/issues/6660

Release required?

[x] No release
[ ] Patch release (x.x.X)
[ ] Minor release (x.X.x)
[ ] Major release (X.x.x)

Release notes content

Run the pipeline
If the CI pipeline doesn't run when you create the PR, the PR requires a user with GitHub collaborators access to run the pipeline.
Run the CI pipeline when the PR is ready for review and you expect tests to pass. Add a comment to the PR with the following text:
/run pipeline

Checklist for reviewers

[ ] If relevant, a test for the change is included or updated with this PR.
[ ] If relevant, documentation for the change is included or updated with this PR.

For mergers

Use a conventional commit message to set the release level. Follow the guidelines.
Include information that users need to know about the PR in the commit message. The commit message becomes part of the GitHub release notes.
Use the Squash and merge option.

/run pipeline

/run pipeline

/run pipeline

/run pipeline

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


can we get a docker-compose.yml sample file?

I'd like to run this with docker-compose

I've tried this but it just does exit 0.
docker-compose.yml:
version: '3.8'

services:
  follow-cache:
    image: nixos/nix
    build: .
    volumes:
      - .:/app
    working_dir: /app
    ports:
      - "<IP_ADDRESS>:7702:8801"
    environment:
      - PRIMALSERVER_HOST=<IP_ADDRESS>
    command: >
      nix --extra-experimental-features 'nix-command flakes' develop -c sh -c '$start_primal_caching_service'
    networks:
      - follows_network
networks:
    follows_network:
      name: follows_network

Dockerfile
# Use the specified base image
FROM nixos/nix

# Set an environment variable
ENV PRIMALSERVER_HOST=<IP_ADDRESS>

# Set the working directory in the container
WORKDIR /app

# Copy the current directory contents into the container at /app
COPY . /app

# Run the specified command when the container launches
CMD ["nix", "--extra-experimental-features", "nix-command flakes", "develop", "-c", "sh", "-c", "$start_primal_caching_service"]

# Expose the port the server is running on
EXPOSE 8801

DOes anyone know how to fix?

Bounty here: 10k sats https://resolvr.io/b/naddr1qprkgmmrddjhycm0d4cx7um994skuepdv3hkx6m9wfnxjmr994jhsctdwpkx2ttxdaez6urjd9kkzmpdvdskx6r994ex2ur094nrzdekv3nxverxvgenzqgdwaehxw309ahx7uewd3hkcq3q9p3l898yf76s73m5pr0ru03a0y8ps6c3se6xcekz8d8v2f676kxsxpqqqp6kygkc83r

version: '3.8'

services:
  follow-cache:
    image: nixos/nix
    volumes:
      - .:/app
      - ./var/root:/root
    working_dir: /app
    ports:
      - "<IP_ADDRESS>:7702:8801"
    environment:
      - PRIMALSERVER_HOST=<IP_ADDRESS>
    command: >
      nix --extra-experimental-features 'nix-command flakes' develop -c sh -c '$$start_primal_caching_service'
    stdin_open: true
    tty: true
    networks:
      - follows_network
networks:
    follows_network:
      name: follows_network

then you can do, for interactive use:
docker-compose run follow-cache
or for non-interactive use:
docker-compose up

send me your zap address.

no thanks. you wrote most of docker-compose.yml anyway :)

@ralyodio You forgot to close the bounty https://resolvr.io/b/naddr1qvzqqqr4vgpzq2rr7w2wgna4parhgzx78clr67gwrp43rpn5d3nvyw6wc5n4a4vdqyxhwumn8ghj7mn0wvhxcmmvqy28wumn8ghj7un9d3shjtnyv9kh2uewd9hsq3myda3kketjvdhk6ur0wdjj6ctwvskkgmmrddjhyenfd3jj6etcv9khqmr994nx7u3dwpexjmtpdskkxctrdpjj6un9wphj6e33xumxgenxv3nxyve33440cv ..

closed it. their close broken was broken but its working finally.


Unbreak -DMFX_ENABLE_SW_FALLBACK=OFF

Fixes https://github.com/Intel-Media-SDK/MediaSDK/issues/1845

Per my understanding _studio/mfx_lib/encode contains SW only implementation. I think we need to exclude it entirely from the build with the -DMFX_ENABLE_SW_FALLBACK=OFF. I created #1855 to address that.


Some data sets are missing

Hi!,
Some datasets are not available even though there are MAGS assembled from these data sets. Specifically, I am referring to: HeQ_2017 and WenC_2017. Were these data sets renames?
Thanks!

Hi,
Are you referring to the MAGs present in the Cell paper? "Extensive Unexplored Human Microbiome Diversity Revealed by Over 150,000 Genomes from Metagenomes Spanning Age, Geography, and Lifestyle"
We didn't find the complete metadata information for HeQ_2017 and WenC_2017, so these two datasets are currently not included in curatedMetagenomicData.
But I can tell you that all the samples are from stool, adults, china. This is reported in the Supplementary Table 1, Tab2 of the above mentioned paper.


Get Unread Count via Hook

Feature
It would be great to have the ability to get the unread count via the hook.
const { unreadCount } = useIntercom();

The primary driver behind the request is getting the notification count in a location that is not easy to get from the provider.
I handled this for now using my own context provider but it seems like the library could do this internally pretty easily.

Hi, thanks for the feature request.
We could possibly integrate this, however, this would mean that we deviate from the "1on1" IntercomJS API mapping. (I'm aware that we deviated from this "1on1" mapping in the past)
Anyway, how did you handle this in your own context provider?

I have a global context that I bind events on the IntercomProvider to.
onUnreadCountChange={setNotificationCount}

I have a global context that I bind events on the IntercomProvider to.
onUnreadCountChange={setNotificationCount}

I see, but this will result in being undefined until the event is triggered?

I can appreciate the sentiment of wanting to be 1:1 - This doesn't change the API - it just provides easier access.

Indeed. However, most of the time I can refer to official Intercom docs/fora to resolve an issue, which saves quite some time. Introducing some new functionality/extending the API is a bit more heavy lifting in the sense of answering the issues

@devrnt, first of all, thank you so much for your work on this lib.
As to the topic in discussion, I believe that making this available through the hook wouldn't be directly breaking 1:1 compatibility because window.Intercom('onUnreadCountChange') can be called anywhere from within the app once the Intercom client is defined. The docs say:

This method allows you to register a function that will be called immediately when invoked, and again whenever the current number of unread messages changes.

So it is both an event-driven method as well as a procedural one. I just wish they made it possible to unregister a listener, but that doesn't seem to be the case.


sort out error codes in backend

e.g. thiserror or something?
Seen something that has macros that automatically build the required methods for using from to automatically convert all your internal errors into one that is compatible with rocket responder thingermijiggy


Suddenly Minecraft won't let me launch show durability with my other mods

It was working before, now it just won't budge

Heres my mod folder:

That's strange. Did you change anything compared to before? Add another mod, maybe? Newer Fabric Loader or Fabric API version, or something like that? Not that I would expect a Fabric update to cause an error like this.
Also, could you attach the crash report?

I have same error info as poster, attached with my crash report

crash-2024-12-30_21.04.38-client.txt


Duplicate null in ENUM filters

Reproduction: https://github.com/harshit-test-org/prisma2-client-442
Right now the enum filters are being generated with duplicate null types when they are marked as optional in the schema.

Update: This also applies to other Nullable Scalar filters:
export type NullableStringFilter = {
  equals?: string | null | null
  not?: string | null | NullableStringFilter | null
  in?: Enumerable<string> | null
  notIn?: Enumerable<string> | null
  lt?: string | null
  lte?: string | null
  gt?: string | null
  gte?: string | null
  contains?: string | null
  startsWith?: string | null
  endsWith?: string | null
}

Thanks a lot for reporting 🙏
This issue is fixed in the latest alpha version of prisma2.
You can try it out with npm i -g prisma2@alpha.
In case it’s not fixed for you - please let us know and we’ll reopen this issue!


[DNM 2.5.7] Add charts from rancher/charts

This PR is split into three commits and may be easily "reviewable" by reviewing commit by commit. It follows the rancher/rancher-operator charts pattern.

Copy chart from rancher/charts
Add helm packaging and prepare the chart for packing

Note: we are not merging the old ResourceSet file yet.
Relevant issues:

https://github.com/rancher/tasks/issues/172
https://github.com/rancher/backup-restore-operator/issues/78
https://github.com/rancher/backup-restore-operator/issues/69 (while indirectly related, some resources were added to this repository's CR file, rather than the one in rancher/charts)

Why can't the CRD yaml just bee includes in templates/ with everything else?
@rmweir (https://github.com/rancher/backup-restore-operator/pull/79#pullrequestreview-604374083)

For "CRD yaml"
We split the CRDs into their own charts, like rancher/rancher-operator and rancher/fleet.
This is for customizability.
For the CR files
In case you are referring to the ResourceSet CR file, that does exist in templates/.
There is a second ResourceSet file in crds/, but that is a development artifact that is unrelated to the chart.
We are addressing that in a future PR.

@nickgerace, once we add this to this repository, can we tie this to a PR on<EMAIL_ADDRESS>to treat Rancher Backup as a forked repository from now on? That way we only make updates in this repository and just update the pointer on rancher/charts, similar to what we do for fleet today.

@aiyengar2 already ahead of you ;) https://github.com/rancher/charts/pull/1021


Fix Angular SPA Template compiler bug

@SteveSandersonMS
…
Summary of the changes (Less than 80 chars)

Make StreamReader send last line's contents to listener (otherwise AngularCliBuilder doesn't know when build:ssr is complete)

Addresses #6306

Looks good - thanks @speige!

 Sorry, it took us a while to get to this.


SuperMicro IPMI seems to be incompatible with NixOS installer's UEFI bootloader

Describe the bug
The Minimal ISO i downloaded nixos-minimal-22.05.3147.b47d4447dc2-x86_64-linux.iso uses a very strange looking and unusable UEFI boot menu interface.
Steps To Reproduce
Steps to reproduce the behavior:

... write ISO to usb
... boot USB in UEFI mode
...

Expected behavior
An actual working UEFI boot menu, like Grub2 or Syslinux provide.
I can't get it to boot at all in UEFI mode.

Actually that is Grub2...

Also cannot reproduce, the UEFI menu is not laggy and pressing 'e' does show the screen for editing the menu entry.
Can you describe the environment in more detail?

Supermicro X9DRT-HF and HF+ models.
I'm surprised that you say the white, weirdly graphic with huge font, and not at all like the standard, green, 1024x768 textual UEFI boot after install, is actually grub2.  Maybe theres some weird videomode its doing. But it just hangs on my system.

I'm having the same issue, and I've had the same issue before.
@mystica555  are you using IPMI to install NixOS? ie. Using the remote console part?
I've been sitting with this issue for 1-2 hours now, and remember it's something to do with the resolution set by the NixOS installer on UEFI (I am not 100% sure), which screws with the IPMI video, and it basically crashes the server.
Works 100% fine without UEFI.

Forgot to mention, that if you do NOT use IPMI and boot directly from an USB, it worked just fine for me (using UEFI).
However, I have updated my IPMI version to 3.88, as well as bios version 2.3, and now it works just fine with the virtual media + the video output from IPMI.
Maybe this is worth a try for you as well @mystica555? :)

Still a issue for me, an another ASRock Rack MB w/ IPMI. Making a USB does not work in this case.. :)


chore(mango): replace foldl with a map

The definition of mango_cursor_view:composite_indexes/2 does not exploit the possibilities of fold left, it behaves much like a mapping.  Using lists:map here makes this explicit, which may help with readability and may be implemented in a more specialized manner.

This is not about ordering of elements.  One of the key properties of mappings is that they do not lose elements (assuming that the function used for mapping is total, i.e. it always produces an answer).  The folding-based approach does not exclude this possibility.  For example, it can turn the elements of the list into any other data structure, even some scalar, or exclude elements from the input.  It may take a while for the reader to see that it is just about extending the indexes with their prefixes and prefix differences on the field ranges.

I think we'd need to fix the tests as some assume a particular results order. We could potentially generalize those by sorted the results before comparing?

With a mapping, this is not required, I believe.  It should just maintain the original ordering as it walks the list and applies the function on each element.

This is not about the ordering of elements.

The test is failing because the order of the elements changes. So we should at least fix that part.
[2023-06-30T16:40:36.458Z] module 'mango_cursor_view'
[2023-06-30T16:40:36.458Z]   mango_cursor_view: viewcbargs_test...ok
[2023-06-30T16:40:36.458Z]   mango_cursor_view: maybe_replace_max_json_test...ok
[2023-06-30T16:40:36.458Z]   mango_cursor_view: base_opts_test...ok
[2023-06-30T16:40:36.458Z]   mango_cursor_view: apply_opts_empty_test...ok
[2023-06-30T16:40:36.458Z]   mango_cursor_view: apply_opts_r_test...ok
[2023-06-30T16:40:36.458Z]   mango_cursor_view: apply_opts_conflicts_test...ok
[2023-06-30T16:40:36.458Z]   mango_cursor_view: apply_opts_sort_test...ok
[2023-06-30T16:40:36.458Z]   mango_cursor_view: apply_opts_stale_test...ok
[2023-06-30T16:40:36.458Z]   mango_cursor_view: apply_opts_stable_test...ok
[2023-06-30T16:40:36.458Z]   mango_cursor_view: apply_opts_update_test...ok
[2023-06-30T16:40:36.458Z]   mango_cursor_view: apply_opts_partition_test...[0.006 s] ok
[2023-06-30T16:40:36.458Z]   mango_cursor_view: consider_index_coverage_positive_test...[0.007 s] ok
[2023-06-30T16:40:36.458Z]   mango_cursor_view: consider_index_coverage_negative_test...ok
[2023-06-30T16:40:36.458Z]   mango_cursor_view: derive_doc_from_index_test...ok
[2023-06-30T16:40:36.458Z]   mango_cursor_view: derive_doc_from_index_partitioned_test...ok
[2023-06-30T16:40:36.458Z]   mango_cursor_view: composite_indexes_test...*failed*
[2023-06-30T16:40:36.458Z] in function mango_cursor_view:composite_indexes_test/0 (src/mango_cursor_view.erl, line 903)
[2023-06-30T16:40:36.458Z] in call from eunit_test:'-mf_wrapper/2-fun-0-'/2 (eunit_test.erl, line 273)
[2023-06-30T16:40:36.458Z] in call from eunit_test:run_testfun/1 (eunit_test.erl, line 71)
[2023-06-30T16:40:36.458Z] in call from eunit_proc:run_test/1 (eunit_proc.erl, line 531)
[2023-06-30T16:40:36.458Z] in call from eunit_proc:with_timeout/3 (eunit_proc.erl, line 356)
[2023-06-30T16:40:36.458Z] in call from eunit_proc:handle_test/2 (eunit_proc.erl, line 514)
[2023-06-30T16:40:36.458Z] in call from eunit_proc:tests_inorder/3 (eunit_proc.erl, line 456)
[2023-06-30T16:40:36.458Z] in call from eunit_proc:with_timeout/3 (eunit_proc.erl, line 346)
[2023-06-30T16:40:36.458Z] **error:{assertEqual,[{module,mango_cursor_view},
[2023-06-30T16:40:36.458Z]               {line,903},
[2023-06-30T16:40:36.458Z]               {expression,"composite_indexes ( Indexes , Ranges )"},
[2023-06-30T16:40:36.458Z]               {expected,[{{idx,undefined,undefined,undefined,<<"json">>,
[2023-06-30T16:40:36.458Z]                                {[{<<...>>,...}]},
[2023-06-30T16:40:36.458Z]                                undefined,undefined},
[2023-06-30T16:40:36.458Z]                           [range3,range4],
[2023-06-30T16:40:36.458Z]                           1},
[2023-06-30T16:40:36.458Z]                          {{idx,undefined,undefined,undefined,<<"json">>,
[2023-06-30T16:40:36.458Z]                                {[{...}]},
[2023-06-30T16:40:36.458Z]                                undefined,undefined},
[2023-06-30T16:40:36.458Z]                           [range1,range3,range4],
[2023-06-30T16:40:36.458Z]                           0},
[2023-06-30T16:40:36.458Z]                          {{idx,undefined,undefined,undefined,<<"json">>,
[2023-06-30T16:40:36.458Z]                                {[...]},
[2023-06-30T16:40:36.458Z]                                undefined,...},
[2023-06-30T16:40:36.458Z]                           [range1],
[2023-06-30T16:40:36.458Z]                           2}]},
[2023-06-30T16:40:36.458Z]               {value,[{{idx,undefined,undefined,undefined,<<"json">>,
[2023-06-30T16:40:36.458Z]                             {[{...}]},
[2023-06-30T16:40:36.458Z]                             undefined,undefined},
[2023-06-30T16:40:36.458Z]                        [range1],
[2023-06-30T16:40:36.458Z]                        2},
[2023-06-30T16:40:36.458Z]                       {{idx,undefined,undefined,undefined,<<"json">>,
[2023-06-30T16:40:36.458Z]                             {[...]},
[2023-06-30T16:40:36.458Z]                             undefined,...},
[2023-06-30T16:40:36.458Z]                        [range1,range3,range4],
[2023-06-30T16:40:36.458Z]                        0},
[2023-06-30T16:40:36.458Z]                       {{idx,undefined,undefined,undefined,<<"json">>,{...},...},
[2023-06-30T16:40:36.458Z]                        [range3,range4],
[2023-06-30T16:40:36.458Z]                        1}]}]}
[2023-06-30T16:40:36.458Z]   output:<<"">>

One of the key properties of mappings is that they do not lose elements

We were not losing elements here either, they were pre-pended to the accumulator list. The only visible difference is that we ended up with a different order of elements.

I think we'd need to fix the tests as some assume a particular results order. We could potentially generalize those by sorted the results before comparing?

With a mapping, this is not required, I believe. It should just maintain the original ordering as it walks the list and applies the function on each element.

I was trying to point out that the output order in this particular function doesn't matter as much. We always run a custom sort on the result and pick out the head only. But since that's  more about how the result is used, and not the function itself the best way is to just update all the unit tests to pass.

The test is failing because the order of the elements changes. So we should at least fix that part.

Sorry, I was answering the part about the statement that prepending with fold left reverses the order.  You are right that the ordering does not matter in this case.   But replacing this with a map breaks the unit tests.  I did not notice that one, but I have pushed a fix for that since then.

We were not losing elements here either, they were pre-pended to the accumulator list. The only visible difference is that we ended up with a different order of elements.

Ah, my concern is not the final result but the readability mainly.  It acts like a map, why not to use the map function here?  This is made evident.  I believe such minor details could contribute to the overall understanding of the code.

Thanks @nickva !


Check that the Text Geolocator is finding locations

I added some test data in a separate branch.  The csv files should be useful in unit tests.  Any location marked as 1 should always be in the end result GeoJSON file.

I added tests for each of the uploaded test data files in geolocator/app/tests/test_nlp_validation.py. I tabulated the results and they can be seen in geolocator/sample-data/from-ivan/test_results.ods. We currently have a 90.73% success rate at tagging all of the locations. A few of the ones missed are questionable, so I think that number should be a little higher (like what/where is "Hothot"?). We can go over the results on Monday.


Migrate unit tests from Cloud Build to GitHub Workflows

This way they get run automatically for PRs from external contributors and do not require manual triggering by repository owners.

Note to self: this is likely to require some credential plumbling like that seen at https://github.com/google/clusterfuzz/blob/ca679d958a209598d30ad4bbe565ff7dd320ea29/src/clusterfuzz/_internal/google_cloud_utils/storage.py#L578


Ensure all components are registered

Need to setup component governance to monitor all 3rd party dependencies.

CG runs against all go.mod/go.sum packages.


docs: add augment-command.yazi to the resources page

This plugin was inspired by bypass.yazi and fast-enter.yazi along with the tips page on the documentation site. It combines all of the features of bypass.yazi and fast-enter.yazi and includes enhancements for some default commands.

Done! I have made the changes that you asked for.


Segmentation fault (core dumped)

Click to expand!
Issue Type
Build/Install
Source
binary
Tensorflow Version
tf 2.6
Custom Code
Yes
OS Platform and Distribution
Linux 5.4.0-1089, 18.04.1-Ubuntu SMP
Mobile device
No response
Python version
3.9
Bazel version
No response
GCC/Compiler version
No response
CUDA/cuDNN version
No response
GPU model and memory
v100
Current Behaviour?
The same code works on colab. However, when I run on VM, I get Segmentation fault (core dumped). This error is very cryptic. Please let me know how to get more detailed error for easier debugging.
BTW I have also tried the latest stable tf build 2.9 and tf-nightly build. Both crash with the same error.
Thanks.

Standalone code to reproduce the issue
import tensorflow as tf

class ConvBlock:
    def __init__(
        self,
        c_in,
        c_out,
        kernel_size=3,
        stride=1,
        padding=1,
        bias=False,
        K=1,
        backbone="residual",
    ):
        super(ConvBlock, self).__init__()

        self.f = tf.keras.layers.Conv2D(
            c_out,
            kernel_size=kernel_size,
            strides=stride,
            padding="SAME",
            use_bias=bias,
            activation=None,
        )
        self.g = tf.keras.layers.Conv2D(
            c_out,
            kernel_size=3,
            strides=1,
            padding="SAME",
            use_bias=False,
            activation=None,
        )
        self.K = K
        self.backbone = backbone

        self.bn_out = tf.keras.layers.BatchNormalization()
        self.bn_f1 = tf.keras.layers.BatchNormalization()
        self.c_out = c_out

    def __call__(self, x):
        f = self.f(tf.keras.layers.Activation("relu")(self.bn_f1(x)))
        h = f

        bn_g = tf.keras.layers.BatchNormalization()
        h = self.g(tf.keras.layers.Activation("relu")(bn_g(h)))

        return h

def net(backbone="cnn", K=5):

    inp = tf.keras.Input((28, 28, 1))

    conv = ConvBlock(1, 1, 3, K=K, backbone=backbone)
    x = conv(inp)
    f1 = x
    x = tf.keras.layers.Activation("relu")(x)

    avg_pool = tf.keras.layers.AveragePooling2D(pool_size=(4, 4))
    x = avg_pool(x)
    f2 = x
    flatten = tf.keras.layers.Flatten()
    x = flatten(x)

    fc = tf.keras.layers.Dense(10)
    out = fc(x)

    return tf.keras.Model(inp, [out, f1, f2])

if __name__=="__main__":
    import numpy as np
    model = net(backbone="cnn")
    model.compile()
    x = np.zeros((28, 28, 1))
    print(model(x))

Relevant log output
2022-08-16 14:01:30.779185: I tensorflow/core/platform/cpu_feature_guard.cc:142] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations:  AVX2 FMA
To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.
2022-08-16 14:01:31.772277: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1510] Created device /job:localhost/replica:0/task:0/device:GPU:0 with 14645 MB memory:  -> device: 0, name: Tesla V100-PCIE-16GB, pci bus id: 0001:00:00.0, compute capability: 7.0
Segmentation fault (core dumped)

Hi @sidml, Use below code snippet at the beginning of the your code to Get the detailed error log.
import logging
logger = tf.get_logger()
logger.setLevel(logging.ERROR)

Complete error log of given code snippet.
Traceback (most recent call last):
  File "/home/gadag/57181.py", line 80, in <module>
    print(model(x))
  File "/home/gadag/anaconda3/lib/python3.9/site-packages/keras/utils/traceback_utils.py", line 67, in error_handler
    raise e.with_traceback(filtered_tb) from None
  File "/home/gadag/anaconda3/lib/python3.9/site-packages/keras/engine/input_spec.py", line 248, in assert_input_compatibility
    raise ValueError(
ValueError: Exception encountered when calling layer "model" (type Functional).

Input 0 of layer "dense" is incompatible with the layer: expected axis -1 of input shape to have value 49, but received input with shape (28, 0)

Call arguments received by layer "model" (type Functional):
  • inputs=tf.Tensor(shape=(28, 28, 1), dtype=float64)
  • training=False
  • mask=None

Error message says shape mismatch. Check your input data shape and expected input shape of Model. Thank you!

@gadagashwini
Thanks. Yes, the input shape should have been (1, 28, 28,1). I missed it while writing this toy example.
I added the logger code snippet but I still get  only Segmentation fault (core dumped).
Is there anything else that I can do to get a more detailed error log ?
Thanks.

Hi @sidml, Could you try the workaround mentioned here. Thank you!

@gadagashwini
I tried the above code and i still get get only Segmentation fault (core dumped).
Thanks.

Hi @sidml, Could you try with Tf v2.9. I tried with Tf v2.9.2. Thank you!


Move-CSUser command works in winform application but not window service

I am trying to write a window service where I can pass in the powershell script and it will execute script accordingly. The service works fine with most of of script, but when I try to run the following command, it will always failed with error indicating that it requires MSOIDCLIL.DLL.
Note, the command is used to move a lync user from on-prem to office 365.
Move-CsUser -Identity<EMAIL_ADDRESS>-Target sipfed.online.lync.com -Credential $creds -HostedMigrationOverrideUrl <URL>.
What I have tried:

Same piece of code if I ran it inside an application( instead of service), it works fine.
Powershell runs fine if I ran it inside Powershell ISE

Here is what I know:

MSOIDCLIL.DLL is used to connect office 365
MSOIDCLIL.DLL comes with skype server 2015, which my server already have
When running the powershell script inside the window service, it will look for the dll inside of the service folder
When I run the powershell script locally inside powershell ISE, it will look for the DLL in skype server folder.

C# code I used to execute powers
Runspace runspace = RunspaceFactory.CreateRunspace();
// open it

runspace.Open();

// create a pipeline and feed it the script text

Pipeline pipeline = runspace.CreatePipeline();
pipeline.Commands.AddScript(scriptText);

// add an extra command to transform the script
// output objects into nicely formatted strings

// remove this line to get the actual objects
// that the script returns. For example, the script

// "Get-Process" returns a collection
// of System.Diagnostics.Process instances.

pipeline.Commands.Add("Out-String");

// execute the script

Collection<psobject /> results = pipeline.Invoke();

// close the runspace

runspace.Close();

`
I suspect the difference in execution context for window service and application caused this, but I am not sure how to solve it.
Question: What do I need to do so that my service can ran the Move-CSUser command above?
Anywhere I can find the source code for move-csuser command?

As a workaround, you can probably find the file on the system, i.e. with Get-ChildItem and call [Reflection.Assembly]::LoadFrom($LocalDllPath) directly to pre-load the dll into the process.


[Ready for review] Graph & Key Vault MGMT

Runtime changes detected. pull request created. CI running:

@martinsawicki
This will show a diff without generated files: https://github.com/Azure/azure-sdk-for-java/compare/0484ce6...93be0f4

hmm, that view doesn't let me add comments..

In general, from my quick look, the following 3 key things caught my eye:

What is called "Group" should probably better be called "ActiveDirectoryGroup" (based on the naming of ADGroupInner)
Replace Boolean returning methods with boolean
Javadoc's @return should start with a small letter and no period
After the PR, i'll try to play with in in code to see if I'd have more comments.
I noticed some interesting uses of base interfaces to reuse teh same definition in different contexts - i'll play with that and see if we can reuse taht pattern in other places (does it really avoid raw type refs? It';d be great if it did, without the duplication)

Thanks! Good catches. I'll fix them.
Two things to notice:

The Azure.authenticate() signature is changed
Graph is in fact in progress. E.g.: Group doesn't have an impl yet. I'll add them in a separate PR.


Make tip-probe optional for both labware calibration and run

Tip probe is introducing error into robot positioning. As a work-around (and to improve the UX of runtime calibration in general) we should make tip-probe completely optional in the app.
acceptance criteria

[ ] Labware calibration is enabled even if tip-probe hasn't been completed
[ ] Run nav button is enabled even if tip-probe hasn't been completed

Edit: original API ticket
Robot unable to accurately hit known labware
Expected Behavior

Robot should be able to hit center of A1 well in 96-flat during labware calibration

Observed Behavior

Multiple robots consistently move to the same wrong location relative to the A1 when during labware calibration

Steps to Recreate

Connect to any production robot using 3.0.0 app
Perform deck calibration using CLI tool (tested including and not including mount-offset addition)
Confirm robot has an accurate x-y labware definition for the 96-flat (see below)
Load a protocol in the run app including a 96-flat labware and a P300S pipette
Perform tip probe and tip rack calibration
Attempt to calibrate labware
Note that pipette tip moves about 1.4 mm too far forward in the Y direction
Repeat process on multiple robots with same result

Labware File
Note this is the expected / correct labware definition for a 96-flat (x and y are confirmed; z is likely off)
shared_data > definitions > 96_flat.json
    "A1": {
      "depth": 10.5,
      "diameter": 6.4,
      "height": 10.5,
      "length": 6.4,
      "total-liquid-volume": 400,
      "width": 6.4,
      "x": 11.14, # bottom of
      "y": 71.04, # bottom of plate to bottom of well
      "z": 0
    },```

Note this data was created with a single on the right mount

You included the data from a new labware definition, but I don't see in the directions that the new labware definitions feature flag is set. I'll work today on trying to diagnose

After commenting out tip probe, the robot goes to exactly the same point on repeated runs. My recommendation for the quickest solution is to make tip probe optional.

Shifted this ticket over to the app based on talks with @btmorr and @umbhau


Allow specifying users in groups mutations

Update create and update permission group mutations: add users to input and required validations to mutations.
Remove mutations for assign and unassign users.
Pull Request Checklist

[x] Privileged views and APIs are guarded by proper permission checks.
[x] All visible strings are translated with proper context.
[x] All data-formatting is locale-aware (dates, numbers, and so on).
[x] Database queries are optimized and the number of queries is constant.
[x] Database migration files are up to date.
[x] The changes are tested.
[x] GraphQL schema and type definitions are up to date.
[x] Changes are mentioned in the changelog.

@maarcingebala  @patrys
Should we add test for:

Remove Me from the last group
Remove the last user in the group.

Should we allow to create an empty group?

@fowczarek If we're adding these two validations now then yes, we should add tests for them I think. I think it's fine to create an empty group. You may want to first create some groups and assign users later.


Update openapi-circe-yaml to 0.11.5

About this PR
📦 Updates com.softwaremill.sttp.apispec:openapi-circe-yaml from 0.11.4 to 0.11.5
📜 GitHub Release Notes - Version Diff
Usage
✅ Please merge!
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Configure Scala Steward for your repository with a .scala-steward.conf file.
Have a fantastic day writing Scala!

⚙ Adjust future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "com.softwaremill.sttp.apispec", artifactId = "openapi-circe-yaml" } ]

Or, add this to slow down future updates of this dependency:
dependencyOverrides = [{
  pullRequests = { frequency = "30 days" },
  dependency = { groupId = "com.softwaremill.sttp.apispec", artifactId = "openapi-circe-yaml" }
}]

labels: library-update, early-semver-minor, semver-spec-patch, version-scheme:early-semver, commit-count:1

:warning: Please install the  to ensure uploads and comments are reliably processed by Codecov.
Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 48.19%. Comparing base (5ec82f7) to head (44f697b).

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@           Coverage Diff            @@
##           develop     #621   +/-   ##
========================================
  Coverage    48.19%   48.19%
========================================
  Files            5        5
  Lines           83       83
  Branches         6        6
========================================
  Hits            40       40
  Misses          43       43

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.